pcre/lib/pcre2_linux_amd64.go

70963 lines
3.2 MiB

// Code generated by 'ccgo -o pcre2.go -pkgname lib -trace-translation-units -export-externs X -export-defines D -export-fields F -export-structs S -export-typedefs T pcre.json .libs/libpcre2-8.a', DO NOT EDIT.
package lib
import (
"math"
"reflect"
"sync/atomic"
"unsafe"
"modernc.org/libc"
"modernc.org/libc/sys/types"
)
var _ = math.Pi
var _ reflect.Kind
var _ atomic.Value
var _ unsafe.Pointer
var _ *libc.TLS
var _ types.Size_t
const (
DAIO_PRIO_DELTA_MAX = 20 // local_lim.h:78:1:
DBC_BASE_MAX = 99 // posix2_lim.h:63:1:
DBC_DIM_MAX = 2048 // posix2_lim.h:66:1:
DBC_SCALE_MAX = 99 // posix2_lim.h:69:1:
DBC_STRING_MAX = 1000 // posix2_lim.h:72:1:
DBIG_ENDIAN = 4321 // endian.h:28:1:
DBOOL_MAX = 1 // limits.h:186:1:
DBOOL_WIDTH = 1 // limits.h:189:1:
DBSR_DEFAULT = 1 // pcre2_internal.h:243:1:
DBUFSIZ = 8192 // stdio.h:99:1:
DBYTE_ORDER = 1234 // endian.h:30:1:
DCHARCLASS_NAME_MAX = 2048 // posix2_lim.h:84:1:
DCHAR_0 = 48 // pcre2_internal.h:999:1:
DCHAR_1 = 49 // pcre2_internal.h:1000:1:
DCHAR_2 = 50 // pcre2_internal.h:1001:1:
DCHAR_3 = 51 // pcre2_internal.h:1002:1:
DCHAR_4 = 52 // pcre2_internal.h:1003:1:
DCHAR_5 = 53 // pcre2_internal.h:1004:1:
DCHAR_6 = 54 // pcre2_internal.h:1005:1:
DCHAR_7 = 55 // pcre2_internal.h:1006:1:
DCHAR_8 = 56 // pcre2_internal.h:1007:1:
DCHAR_9 = 57 // pcre2_internal.h:1008:1:
DCHAR_A = 65 // pcre2_internal.h:1016:1:
DCHAR_AMPERSAND = 38 // pcre2_internal.h:989:1:
DCHAR_APOSTROPHE = 39 // pcre2_internal.h:990:1:
DCHAR_ASTERISK = 42 // pcre2_internal.h:993:1:
DCHAR_B = 66 // pcre2_internal.h:1017:1:
DCHAR_BACKSLASH = 92 // pcre2_internal.h:1043:1:
DCHAR_BEL = 7 // pcre2_internal.h:978:1:
DCHAR_BIT = 8 // limits.h:64:1:
DCHAR_BS = 8 // pcre2_internal.h:977:1:
DCHAR_C = 67 // pcre2_internal.h:1018:1:
DCHAR_CIRCUMFLEX_ACCENT = 94 // pcre2_internal.h:1045:1:
DCHAR_COLON = 58 // pcre2_internal.h:1009:1:
DCHAR_COMMA = 44 // pcre2_internal.h:995:1:
DCHAR_COMMERCIAL_AT = 64 // pcre2_internal.h:1015:1:
DCHAR_CR = 13 // pcre2_internal.h:973:1:
DCHAR_D = 68 // pcre2_internal.h:1019:1:
DCHAR_DEL = 127 // pcre2_internal.h:980:1:
DCHAR_DOLLAR_SIGN = 36 // pcre2_internal.h:987:1:
DCHAR_DOT = 46 // pcre2_internal.h:997:1:
DCHAR_E = 69 // pcre2_internal.h:1020:1:
DCHAR_EQUALS_SIGN = 61 // pcre2_internal.h:1012:1:
DCHAR_ESC = 27 // pcre2_internal.h:979:1:
DCHAR_EXCLAMATION_MARK = 33 // pcre2_internal.h:984:1:
DCHAR_F = 70 // pcre2_internal.h:1021:1:
DCHAR_FF = 12 // pcre2_internal.h:972:1:
DCHAR_G = 71 // pcre2_internal.h:1022:1:
DCHAR_GRAVE_ACCENT = 96 // pcre2_internal.h:1047:1:
DCHAR_GREATER_THAN_SIGN = 62 // pcre2_internal.h:1013:1:
DCHAR_H = 72 // pcre2_internal.h:1023:1:
DCHAR_HT = 9 // pcre2_internal.h:970:1:
DCHAR_I = 73 // pcre2_internal.h:1024:1:
DCHAR_J = 74 // pcre2_internal.h:1025:1:
DCHAR_K = 75 // pcre2_internal.h:1026:1:
DCHAR_L = 76 // pcre2_internal.h:1027:1:
DCHAR_LEFT_CURLY_BRACKET = 123 // pcre2_internal.h:1074:1:
DCHAR_LEFT_PARENTHESIS = 40 // pcre2_internal.h:991:1:
DCHAR_LEFT_SQUARE_BRACKET = 91 // pcre2_internal.h:1042:1:
DCHAR_LESS_THAN_SIGN = 60 // pcre2_internal.h:1011:1:
DCHAR_LF = 10 // pcre2_internal.h:974:1:
DCHAR_M = 77 // pcre2_internal.h:1028:1:
DCHAR_MAX = 127 // limits.h:99:1:
DCHAR_MIN = -128 // limits.h:97:1:
DCHAR_MINUS = 45 // pcre2_internal.h:996:1:
DCHAR_N = 78 // pcre2_internal.h:1029:1:
DCHAR_NL = 10 // pcre2_internal.h:975:1:
DCHAR_NUL = 0 // pcre2_internal.h:982:1:
DCHAR_NUMBER_SIGN = 35 // pcre2_internal.h:986:1:
DCHAR_O = 79 // pcre2_internal.h:1030:1:
DCHAR_P = 80 // pcre2_internal.h:1031:1:
DCHAR_PERCENT_SIGN = 37 // pcre2_internal.h:988:1:
DCHAR_PLUS = 43 // pcre2_internal.h:994:1:
DCHAR_Q = 81 // pcre2_internal.h:1032:1:
DCHAR_QUESTION_MARK = 63 // pcre2_internal.h:1014:1:
DCHAR_QUOTATION_MARK = 34 // pcre2_internal.h:985:1:
DCHAR_R = 82 // pcre2_internal.h:1033:1:
DCHAR_RIGHT_CURLY_BRACKET = 125 // pcre2_internal.h:1076:1:
DCHAR_RIGHT_PARENTHESIS = 41 // pcre2_internal.h:992:1:
DCHAR_RIGHT_SQUARE_BRACKET = 93 // pcre2_internal.h:1044:1:
DCHAR_S = 83 // pcre2_internal.h:1034:1:
DCHAR_SEMICOLON = 59 // pcre2_internal.h:1010:1:
DCHAR_SLASH = 47 // pcre2_internal.h:998:1:
DCHAR_SPACE = 32 // pcre2_internal.h:983:1:
DCHAR_T = 84 // pcre2_internal.h:1035:1:
DCHAR_TILDE = 126 // pcre2_internal.h:1077:1:
DCHAR_U = 85 // pcre2_internal.h:1036:1:
DCHAR_UNDERSCORE = 95 // pcre2_internal.h:1046:1:
DCHAR_V = 86 // pcre2_internal.h:1037:1:
DCHAR_VERTICAL_LINE = 124 // pcre2_internal.h:1075:1:
DCHAR_VT = 11 // pcre2_internal.h:971:1:
DCHAR_W = 87 // pcre2_internal.h:1038:1:
DCHAR_WIDTH = 8 // limits.h:165:1:
DCHAR_X = 88 // pcre2_internal.h:1039:1:
DCHAR_Y = 89 // pcre2_internal.h:1040:1:
DCHAR_Z = 90 // pcre2_internal.h:1041:1:
DCHAR_a = 97 // pcre2_internal.h:1048:1:
DCHAR_b = 98 // pcre2_internal.h:1049:1:
DCHAR_c = 99 // pcre2_internal.h:1050:1:
DCHAR_d = 100 // pcre2_internal.h:1051:1:
DCHAR_e = 101 // pcre2_internal.h:1052:1:
DCHAR_f = 102 // pcre2_internal.h:1053:1:
DCHAR_g = 103 // pcre2_internal.h:1054:1:
DCHAR_h = 104 // pcre2_internal.h:1055:1:
DCHAR_i = 105 // pcre2_internal.h:1056:1:
DCHAR_j = 106 // pcre2_internal.h:1057:1:
DCHAR_k = 107 // pcre2_internal.h:1058:1:
DCHAR_l = 108 // pcre2_internal.h:1059:1:
DCHAR_m = 109 // pcre2_internal.h:1060:1:
DCHAR_n = 110 // pcre2_internal.h:1061:1:
DCHAR_o = 111 // pcre2_internal.h:1062:1:
DCHAR_p = 112 // pcre2_internal.h:1063:1:
DCHAR_q = 113 // pcre2_internal.h:1064:1:
DCHAR_r = 114 // pcre2_internal.h:1065:1:
DCHAR_s = 115 // pcre2_internal.h:1066:1:
DCHAR_t = 116 // pcre2_internal.h:1067:1:
DCHAR_u = 117 // pcre2_internal.h:1068:1:
DCHAR_v = 118 // pcre2_internal.h:1069:1:
DCHAR_w = 119 // pcre2_internal.h:1070:1:
DCHAR_x = 120 // pcre2_internal.h:1071:1:
DCHAR_y = 121 // pcre2_internal.h:1072:1:
DCHAR_z = 122 // pcre2_internal.h:1073:1:
DCOLL_WEIGHTS_MAX = 255 // posix2_lim.h:75:1:
DCOMPILE_ERROR_BASE = 100 // pcre2_internal.h:221:1:
DDELAYTIMER_MAX = 2147483647 // local_lim.h:84:1:
DDFA_START_RWS_SIZE = 30720 // pcre2_internal.h:236:1:
DEOF = -1 // stdio.h:104:1:
DEXIT_FAILURE = 1 // stdlib.h:92:1:
DEXIT_SUCCESS = 0 // stdlib.h:93:1:
DEXPR_NEST_MAX = 32 // posix2_lim.h:78:1:
DFALSE = 0 // pcre2_internal.h:69:1:
DFD_SETSIZE = 1024 // select.h:73:1:
DFILENAME_MAX = 4096 // stdio_lim.h:27:1:
DFOPEN_MAX = 16 // stdio_lim.h:37:1:
DHAVE_BCOPY = 1 // config.h:60:1:
DHAVE_BZLIB_H = 1 // config.h:63:1:
DHAVE_CONFIG_H = 1 // <defines>:1:1:
DHAVE_DIRENT_H = 1 // config.h:66:1:
DHAVE_DLFCN_H = 1 // config.h:69:1:
DHAVE_INTTYPES_H = 1 // config.h:78:1:
DHAVE_LIMITS_H = 1 // config.h:81:1:
DHAVE_MEMFD_CREATE = 1 // config.h:84:1:
DHAVE_MEMMOVE = 1 // config.h:87:1:
DHAVE_MKOSTEMP = 1 // config.h:93:1:
DHAVE_REALPATH = 1 // config.h:111:1:
DHAVE_SECURE_GETENV = 1 // config.h:114:1:
DHAVE_STDINT_H = 1 // config.h:117:1:
DHAVE_STDIO_H = 1 // config.h:120:1:
DHAVE_STDLIB_H = 1 // config.h:123:1:
DHAVE_STRERROR = 1 // config.h:126:1:
DHAVE_STRINGS_H = 1 // config.h:129:1:
DHAVE_STRING_H = 1 // config.h:132:1:
DHAVE_SYS_STAT_H = 1 // config.h:135:1:
DHAVE_SYS_TYPES_H = 1 // config.h:138:1:
DHAVE_SYS_WAIT_H = 1 // config.h:141:1:
DHAVE_UNISTD_H = 1 // config.h:144:1:
DHAVE_VISIBILITY = 1 // config.h:147:1:
DHAVE_WCHAR_H = 1 // config.h:150:1:
DHAVE_ZLIB_H = 1 // config.h:156:1:
DHEAP_LIMIT = 20000000 // config.h:161:1:
DHOST_NAME_MAX = 64 // local_lim.h:93:1:
DIMM2_SIZE = 2 // pcre2_intmodedep.h:193:1:
DINT16_MAX = 32767 // stdint.h:122:1:
DINT16_MIN = -32768 // stdint.h:117:1:
DINT16_WIDTH = 16 // stdint.h:280:1:
DINT32_MAX = 2147483647 // stdint.h:123:1:
DINT32_MIN = -2147483648 // stdint.h:118:1:
DINT32_WIDTH = 32 // stdint.h:282:1:
DINT64_MAX = 9223372036854775807 // stdint.h:124:1:
DINT64_MIN = -9223372036854775808 // stdint.h:119:1:
DINT64_WIDTH = 64 // stdint.h:284:1:
DINT8_MAX = 127 // stdint.h:121:1:
DINT8_MIN = -128 // stdint.h:116:1:
DINT8_WIDTH = 8 // stdint.h:278:1:
DINTMAX_MAX = 9223372036854775807 // stdint.h:199:1:
DINTMAX_MIN = -9223372036854775808 // stdint.h:197:1:
DINTMAX_WIDTH = 64 // stdint.h:308:1:
DINTPTR_MAX = 9223372036854775807 // stdint.h:187:1:
DINTPTR_MIN = -9223372036854775808 // stdint.h:186:1:
DINTPTR_WIDTH = 64 // stdint.h:305:1:
DINT_FAST16_MAX = 9223372036854775807 // stdint.h:164:1:
DINT_FAST16_MIN = -9223372036854775808 // stdint.h:154:1:
DINT_FAST16_WIDTH = 64 // stdint.h:298:1:
DINT_FAST32_MAX = 9223372036854775807 // stdint.h:165:1:
DINT_FAST32_MIN = -9223372036854775808 // stdint.h:155:1:
DINT_FAST32_WIDTH = 64 // stdint.h:300:1:
DINT_FAST64_MAX = 9223372036854775807 // stdint.h:170:1:
DINT_FAST64_MIN = -9223372036854775808 // stdint.h:160:1:
DINT_FAST64_WIDTH = 64 // stdint.h:302:1:
DINT_FAST8_MAX = 127 // stdint.h:162:1:
DINT_FAST8_MIN = -128 // stdint.h:152:1:
DINT_FAST8_WIDTH = 8 // stdint.h:296:1:
DINT_LEAST16_MAX = 32767 // stdint.h:140:1:
DINT_LEAST16_MIN = -32768 // stdint.h:135:1:
DINT_LEAST16_WIDTH = 16 // stdint.h:289:1:
DINT_LEAST32_MAX = 2147483647 // stdint.h:141:1:
DINT_LEAST32_MIN = -2147483648 // stdint.h:136:1:
DINT_LEAST32_WIDTH = 32 // stdint.h:291:1:
DINT_LEAST64_MAX = 9223372036854775807 // stdint.h:142:1:
DINT_LEAST64_MIN = -9223372036854775808 // stdint.h:137:1:
DINT_LEAST64_WIDTH = 64 // stdint.h:293:1:
DINT_LEAST8_MAX = 127 // stdint.h:139:1:
DINT_LEAST8_MIN = -128 // stdint.h:134:1:
DINT_LEAST8_WIDTH = 8 // stdint.h:287:1:
DINT_MAX = 2147483647 // limits.h:120:1:
DINT_MIN = -2147483648 // limits.h:118:1:
DINT_WIDTH = 32 // limits.h:175:1:
DIOV_MAX = 1024 // xopen_lim.h:66:1:
DLINE_MAX = 2048 // posix2_lim.h:81:1:
DLINK_SIZE = 2 // config.h:168:1:
DLITTLE_ENDIAN = 1234 // endian.h:27:1:
DLLONG_MAX = 9223372036854775807 // limits.h:142:1:
DLLONG_MIN = -9223372036854775808 // limits.h:140:1:
DLLONG_WIDTH = 64 // limits.h:183:1:
DLOGIN_NAME_MAX = 256 // local_lim.h:90:1:
DLONG_BIT = 64 // xopen_lim.h:137:1:
DLONG_LONG_MAX = 9223372036854775807 // limits.h:154:1:
DLONG_LONG_MIN = -9223372036854775808 // limits.h:152:1:
DLONG_MAX = 9223372036854775807 // limits.h:131:1:
DLONG_MIN = -9223372036854775808 // limits.h:129:1:
DLONG_WIDTH = 64 // limits.h:179:1:
DLOOKBEHIND_MAX = 65535 // pcre2_intmodedep.h:616:1:
DLT_OBJDIR = ".libs/" // config.h:171:1:
DL_ctermid = 9 // stdio_lim.h:30:1:
DL_cuserid = 9 // stdio_lim.h:32:1:
DL_tmpnam = 20 // stdio_lim.h:25:1:
DMAGIC_NUMBER = 0x50435245 // pcre2_internal.h:547:1:
DMATCH_LIMIT = 10000000 // config.h:180:1:
DMATCH_LIMIT_DEPTH = 10000000 // config.h:192:1:
DMAX_CANON = 255 // limits.h:10:1:
DMAX_INPUT = 255 // limits.h:11:1:
DMAX_MARK = 255 // pcre2_intmodedep.h:213:1:
DMAX_NAME_COUNT = 10000 // config.h:197:1:
DMAX_NAME_SIZE = 32 // config.h:202:1:
DMAX_NON_UTF_CHAR = 255 // pcre2_internal.h:1894:1:
DMAX_PATTERN_SIZE = 65536 // pcre2_intmodedep.h:110:1:
DMAX_UTF_CODE_POINT = 0x10ffff // pcre2_internal.h:209:1:
DMAX_UTF_SINGLE_CU = 127 // pcre2_intmodedep.h:282:1:
DMAYBE_UTF_MULTI = 0 // pcre2_intmodedep.h:278:1:
DMB_LEN_MAX = 16 // limits.h:32:1:
DMQ_PRIO_MAX = 32768 // local_lim.h:96:1:
DNAME_MAX = 255 // limits.h:12:1:
DNEWLINE_DEFAULT = 2 // config.h:211:1:
DNGROUPS_MAX = 65536 // limits.h:7:1:
DNLTYPE_ANY = 1 // pcre2_internal.h:474:1:
DNLTYPE_ANYCRLF = 2 // pcre2_internal.h:475:1:
DNLTYPE_FIXED = 0 // pcre2_internal.h:473:1:
DNL_ARGMAX = 4096 // xopen_lim.h:73:1:
DNL_LANGMAX = 2048 // xopen_lim.h:76:1:
DNL_MSGMAX = 2147483647 // xopen_lim.h:79:1:
DNL_NMAX = 2147483647 // xopen_lim.h:84:1:
DNL_SETMAX = 2147483647 // xopen_lim.h:88:1:
DNL_TEXTMAX = 2147483647 // xopen_lim.h:91:1:
DNOTACHAR = 0xffffffff // pcre2_internal.h:205:1:
DNZERO = 20 // xopen_lim.h:94:1:
DPACKAGE = "pcre2" // config.h:214:1:
DPACKAGE_BUGREPORT = "" // config.h:217:1:
DPACKAGE_NAME = "PCRE2" // config.h:220:1:
DPACKAGE_STRING = "PCRE2 10.40" // config.h:223:1:
DPACKAGE_TARNAME = "pcre2" // config.h:226:1:
DPACKAGE_URL = "" // config.h:229:1:
DPACKAGE_VERSION = "10.40" // config.h:232:1:
DPARENS_NEST_LIMIT = 250 // config.h:237:1:
DPATH_MAX = 4096 // limits.h:13:1:
DPCRE2GREP_BUFSIZE = 20480 // config.h:245:1:
DPCRE2GREP_MAX_BUFSIZE = 1048576 // config.h:251:1:
DPCRE2_ALLOW_EMPTY_CLASS = 0x00000001 // pcre2.h:119:1:
DPCRE2_ALT_BSUX = 0x00000002 // pcre2.h:120:1:
DPCRE2_ALT_CIRCUMFLEX = 0x00200000 // pcre2.h:140:1:
DPCRE2_ALT_VERBNAMES = 0x00400000 // pcre2.h:141:1:
DPCRE2_ANCHORED = 0x80000000 // pcre2.h:105:1:
DPCRE2_AUTO_CALLOUT = 0x00000004 // pcre2.h:121:1:
DPCRE2_BSR_ANYCRLF = 2 // pcre2.h:211:1:
DPCRE2_BSR_SET = 0x00004000 // pcre2_internal.h:522:1:
DPCRE2_BSR_UNICODE = 1 // pcre2.h:210:1:
DPCRE2_CALLOUT_BACKTRACK = 0x00000002 // pcre2.h:513:1:
DPCRE2_CALLOUT_STARTMATCH = 0x00000001 // pcre2.h:512:1:
DPCRE2_CALL_CONVENTION = 0 // pcre2.h:81:1:
DPCRE2_CASELESS = 0x00000008 // pcre2.h:122:1:
DPCRE2_CODE_UNIT_WIDTH = 8 // <defines>:2:1:
DPCRE2_CONFIG_BSR = 0 // pcre2.h:437:1:
DPCRE2_CONFIG_COMPILED_WIDTHS = 14 // pcre2.h:452:1:
DPCRE2_CONFIG_DEPTHLIMIT = 7 // pcre2.h:444:1:
DPCRE2_CONFIG_HEAPLIMIT = 12 // pcre2.h:450:1:
DPCRE2_CONFIG_JIT = 1 // pcre2.h:438:1:
DPCRE2_CONFIG_JITTARGET = 2 // pcre2.h:439:1:
DPCRE2_CONFIG_LINKSIZE = 3 // pcre2.h:440:1:
DPCRE2_CONFIG_MATCHLIMIT = 4 // pcre2.h:441:1:
DPCRE2_CONFIG_NEVER_BACKSLASH_C = 13 // pcre2.h:451:1:
DPCRE2_CONFIG_NEWLINE = 5 // pcre2.h:442:1:
DPCRE2_CONFIG_PARENSLIMIT = 6 // pcre2.h:443:1:
DPCRE2_CONFIG_RECURSIONLIMIT = 7 // pcre2.h:445:1:
DPCRE2_CONFIG_STACKRECURSE = 8 // pcre2.h:446:1:
DPCRE2_CONFIG_TABLES_LENGTH = 15 // pcre2.h:453:1:
DPCRE2_CONFIG_UNICODE = 9 // pcre2.h:447:1:
DPCRE2_CONFIG_UNICODE_VERSION = 10 // pcre2.h:448:1:
DPCRE2_CONFIG_VERSION = 11 // pcre2.h:449:1:
DPCRE2_CONVERT_GLOB = 0x00000010 // pcre2.h:195:1:
DPCRE2_CONVERT_GLOB_NO_STARSTAR = 0x00000050 // pcre2.h:197:1:
DPCRE2_CONVERT_GLOB_NO_WILD_SEPARATOR = 0x00000030 // pcre2.h:196:1:
DPCRE2_CONVERT_NO_UTF_CHECK = 0x00000002 // pcre2.h:192:1:
DPCRE2_CONVERT_POSIX_BASIC = 0x00000004 // pcre2.h:193:1:
DPCRE2_CONVERT_POSIX_EXTENDED = 0x00000008 // pcre2.h:194:1:
DPCRE2_CONVERT_UTF = 0x00000001 // pcre2.h:191:1:
DPCRE2_COPY_MATCHED_SUBJECT = 0x00004000 // pcre2.h:184:1:
DPCRE2_DATE = 2004 // pcre2.h:47:1:
DPCRE2_DEREF_TABLES = 0x00040000 // pcre2_internal.h:526:1:
DPCRE2_DFA_RESTART = 0x00000040 // pcre2.h:176:1:
DPCRE2_DFA_SHORTEST = 0x00000080 // pcre2.h:177:1:
DPCRE2_DOLLAR_ENDONLY = 0x00000010 // pcre2.h:123:1:
DPCRE2_DOTALL = 0x00000020 // pcre2.h:124:1:
DPCRE2_DUPCAPUSED = 0x00200000 // pcre2_internal.h:529:1:
DPCRE2_DUPNAMES = 0x00000040 // pcre2.h:125:1:
DPCRE2_ENDANCHORED = 0x20000000 // pcre2.h:107:1:
DPCRE2_ERROR_ALPHA_ASSERTION_UNKNOWN = 195 // pcre2.h:311:1:
DPCRE2_ERROR_BACKSLASH_C_CALLER_DISABLED = 183 // pcre2.h:299:1:
DPCRE2_ERROR_BACKSLASH_C_LIBRARY_DISABLED = 185 // pcre2.h:301:1:
DPCRE2_ERROR_BACKSLASH_C_SYNTAX = 168 // pcre2.h:284:1:
DPCRE2_ERROR_BACKSLASH_G_SYNTAX = 157 // pcre2.h:272:1:
DPCRE2_ERROR_BACKSLASH_K_IN_LOOKAROUND = 199 // pcre2.h:315:1:
DPCRE2_ERROR_BACKSLASH_K_SYNTAX = 169 // pcre2.h:285:1:
DPCRE2_ERROR_BACKSLASH_N_IN_CLASS = 171 // pcre2.h:287:1:
DPCRE2_ERROR_BACKSLASH_O_MISSING_BRACE = 155 // pcre2.h:270:1:
DPCRE2_ERROR_BACKSLASH_U_CODE_POINT_TOO_BIG = 177 // pcre2.h:293:1:
DPCRE2_ERROR_BADDATA = -29 // pcre2.h:363:1:
DPCRE2_ERROR_BADMAGIC = -31 // pcre2.h:365:1:
DPCRE2_ERROR_BADMODE = -32 // pcre2.h:366:1:
DPCRE2_ERROR_BADOFFSET = -33 // pcre2.h:367:1:
DPCRE2_ERROR_BADOFFSETLIMIT = -56 // pcre2.h:391:1:
DPCRE2_ERROR_BADOPTION = -34 // pcre2.h:368:1:
DPCRE2_ERROR_BADREPESCAPE = -57 // pcre2.h:392:1:
DPCRE2_ERROR_BADREPLACEMENT = -35 // pcre2.h:369:1:
DPCRE2_ERROR_BADSERIALIZEDDATA = -62 // pcre2.h:397:1:
DPCRE2_ERROR_BADSUBSPATTERN = -60 // pcre2.h:395:1:
DPCRE2_ERROR_BADSUBSTITUTION = -59 // pcre2.h:394:1:
DPCRE2_ERROR_BADUTFOFFSET = -36 // pcre2.h:370:1:
DPCRE2_ERROR_BAD_LITERAL_OPTIONS = 192 // pcre2.h:308:1:
DPCRE2_ERROR_BAD_OPTIONS = 117 // pcre2.h:232:1:
DPCRE2_ERROR_BAD_RELATIVE_REFERENCE = 129 // pcre2.h:244:1:
DPCRE2_ERROR_BAD_SUBPATTERN_REFERENCE = 115 // pcre2.h:230:1:
DPCRE2_ERROR_CALLOUT = -37 // pcre2.h:371:1:
DPCRE2_ERROR_CALLOUT_BAD_STRING_DELIMITER = 182 // pcre2.h:298:1:
DPCRE2_ERROR_CALLOUT_NO_STRING_DELIMITER = 181 // pcre2.h:297:1:
DPCRE2_ERROR_CALLOUT_NUMBER_TOO_BIG = 138 // pcre2.h:253:1:
DPCRE2_ERROR_CALLOUT_STRING_TOO_LONG = 172 // pcre2.h:288:1:
DPCRE2_ERROR_CLASS_INVALID_RANGE = 150 // pcre2.h:265:1:
DPCRE2_ERROR_CLASS_RANGE_ORDER = 108 // pcre2.h:223:1:
DPCRE2_ERROR_CODE_POINT_TOO_BIG = 134 // pcre2.h:249:1:
DPCRE2_ERROR_CONDITION_ASSERTION_EXPECTED = 128 // pcre2.h:243:1:
DPCRE2_ERROR_CONDITION_ATOMIC_ASSERTION_EXPECTED = 198 // pcre2.h:314:1:
DPCRE2_ERROR_CONVERT_SYNTAX = -64 // pcre2.h:399:1:
DPCRE2_ERROR_DEFINE_TOO_MANY_BRANCHES = 154 // pcre2.h:269:1:
DPCRE2_ERROR_DEPTHLIMIT = -53 // pcre2.h:387:1:
DPCRE2_ERROR_DFA_BADRESTART = -38 // pcre2.h:372:1:
DPCRE2_ERROR_DFA_RECURSE = -39 // pcre2.h:373:1:
DPCRE2_ERROR_DFA_UCOND = -40 // pcre2.h:374:1:
DPCRE2_ERROR_DFA_UFUNC = -41 // pcre2.h:375:1:
DPCRE2_ERROR_DFA_UINVALID_UTF = -66 // pcre2.h:401:1:
DPCRE2_ERROR_DFA_UITEM = -42 // pcre2.h:376:1:
DPCRE2_ERROR_DFA_WSSIZE = -43 // pcre2.h:377:1:
DPCRE2_ERROR_DUPLICATE_SUBPATTERN_NAME = 143 // pcre2.h:258:1:
DPCRE2_ERROR_END_BACKSLASH = 101 // pcre2.h:216:1:
DPCRE2_ERROR_END_BACKSLASH_C = 102 // pcre2.h:217:1:
DPCRE2_ERROR_ESCAPE_INVALID_IN_CLASS = 107 // pcre2.h:222:1:
DPCRE2_ERROR_ESCAPE_INVALID_IN_VERB = 140 // pcre2.h:255:1:
DPCRE2_ERROR_HEAPLIMIT = -63 // pcre2.h:398:1:
DPCRE2_ERROR_HEAP_FAILED = 121 // pcre2.h:236:1:
DPCRE2_ERROR_INTERNAL = -44 // pcre2.h:378:1:
DPCRE2_ERROR_INTERNAL_BAD_CODE = 189 // pcre2.h:305:1:
DPCRE2_ERROR_INTERNAL_BAD_CODE_AUTO_POSSESS = 180 // pcre2.h:296:1:
DPCRE2_ERROR_INTERNAL_BAD_CODE_IN_SKIP = 190 // pcre2.h:306:1:
DPCRE2_ERROR_INTERNAL_BAD_CODE_LOOKBEHINDS = 170 // pcre2.h:286:1:
DPCRE2_ERROR_INTERNAL_CODE_OVERFLOW = 123 // pcre2.h:238:1:
DPCRE2_ERROR_INTERNAL_DUPMATCH = -65 // pcre2.h:400:1:
DPCRE2_ERROR_INTERNAL_MISSING_SUBPATTERN = 153 // pcre2.h:268:1:
DPCRE2_ERROR_INTERNAL_OVERRAN_WORKSPACE = 152 // pcre2.h:267:1:
DPCRE2_ERROR_INTERNAL_PARSED_OVERFLOW = 163 // pcre2.h:279:1:
DPCRE2_ERROR_INTERNAL_STUDY_ERROR = 131 // pcre2.h:246:1:
DPCRE2_ERROR_INTERNAL_UNEXPECTED_REPEAT = 110 // pcre2.h:225:1:
DPCRE2_ERROR_INTERNAL_UNKNOWN_NEWLINE = 156 // pcre2.h:271:1:
DPCRE2_ERROR_INVALID_AFTER_PARENS_QUERY = 111 // pcre2.h:226:1:
DPCRE2_ERROR_INVALID_HEXADECIMAL = 167 // pcre2.h:283:1:
DPCRE2_ERROR_INVALID_HYPHEN_IN_OPTIONS = 194 // pcre2.h:310:1:
DPCRE2_ERROR_INVALID_OCTAL = 164 // pcre2.h:280:1:
DPCRE2_ERROR_INVALID_SUBPATTERN_NAME = 144 // pcre2.h:259:1:
DPCRE2_ERROR_JIT_BADOPTION = -45 // pcre2.h:379:1:
DPCRE2_ERROR_JIT_STACKLIMIT = -46 // pcre2.h:380:1:
DPCRE2_ERROR_LOOKBEHIND_INVALID_BACKSLASH_C = 136 // pcre2.h:251:1:
DPCRE2_ERROR_LOOKBEHIND_NOT_FIXED_LENGTH = 125 // pcre2.h:240:1:
DPCRE2_ERROR_LOOKBEHIND_TOO_COMPLICATED = 135 // pcre2.h:250:1:
DPCRE2_ERROR_LOOKBEHIND_TOO_LONG = 187 // pcre2.h:303:1:
DPCRE2_ERROR_MALFORMED_UNICODE_PROPERTY = 146 // pcre2.h:261:1:
DPCRE2_ERROR_MARK_MISSING_ARGUMENT = 166 // pcre2.h:282:1:
DPCRE2_ERROR_MATCHLIMIT = -47 // pcre2.h:381:1:
DPCRE2_ERROR_MISSING_CALLOUT_CLOSING = 139 // pcre2.h:254:1:
DPCRE2_ERROR_MISSING_CLOSING_PARENTHESIS = 114 // pcre2.h:229:1:
DPCRE2_ERROR_MISSING_COMMENT_CLOSING = 118 // pcre2.h:233:1:
DPCRE2_ERROR_MISSING_CONDITION_CLOSING = 124 // pcre2.h:239:1:
DPCRE2_ERROR_MISSING_NAME_TERMINATOR = 142 // pcre2.h:257:1:
DPCRE2_ERROR_MISSING_OCTAL_OR_HEX_DIGITS = 178 // pcre2.h:294:1:
DPCRE2_ERROR_MISSING_SQUARE_BRACKET = 106 // pcre2.h:221:1:
DPCRE2_ERROR_MIXEDTABLES = -30 // pcre2.h:364:1:
DPCRE2_ERROR_NOMATCH = -1 // pcre2.h:320:1:
DPCRE2_ERROR_NOMEMORY = -48 // pcre2.h:382:1:
DPCRE2_ERROR_NOSUBSTRING = -49 // pcre2.h:383:1:
DPCRE2_ERROR_NOUNIQUESUBSTRING = -50 // pcre2.h:384:1:
DPCRE2_ERROR_NO_SURROGATES_IN_UTF16 = 191 // pcre2.h:307:1:
DPCRE2_ERROR_NULL = -51 // pcre2.h:385:1:
DPCRE2_ERROR_NULL_PATTERN = 116 // pcre2.h:231:1:
DPCRE2_ERROR_OCTAL_BYTE_TOO_BIG = 151 // pcre2.h:266:1:
DPCRE2_ERROR_PARENS_QUERY_R_MISSING_CLOSING = 158 // pcre2.h:273:1:
DPCRE2_ERROR_PARENTHESES_NEST_TOO_DEEP = 119 // pcre2.h:234:1:
DPCRE2_ERROR_PARENTHESES_STACK_CHECK = 133 // pcre2.h:248:1:
DPCRE2_ERROR_PARTIAL = -2 // pcre2.h:321:1:
DPCRE2_ERROR_PATTERN_STRING_TOO_LONG = 188 // pcre2.h:304:1:
DPCRE2_ERROR_PATTERN_TOO_COMPLICATED = 186 // pcre2.h:302:1:
DPCRE2_ERROR_PATTERN_TOO_LARGE = 120 // pcre2.h:235:1:
DPCRE2_ERROR_POSIX_CLASS_NOT_IN_CLASS = 112 // pcre2.h:227:1:
DPCRE2_ERROR_POSIX_NO_SUPPORT_COLLATING = 113 // pcre2.h:228:1:
DPCRE2_ERROR_QUANTIFIER_INVALID = 109 // pcre2.h:224:1:
DPCRE2_ERROR_QUANTIFIER_OUT_OF_ORDER = 104 // pcre2.h:219:1:
DPCRE2_ERROR_QUANTIFIER_TOO_BIG = 105 // pcre2.h:220:1:
DPCRE2_ERROR_QUERY_BARJX_NEST_TOO_DEEP = 184 // pcre2.h:300:1:
DPCRE2_ERROR_RECURSELOOP = -52 // pcre2.h:386:1:
DPCRE2_ERROR_RECURSIONLIMIT = -53 // pcre2.h:388:1:
DPCRE2_ERROR_REPMISSINGBRACE = -58 // pcre2.h:393:1:
DPCRE2_ERROR_SCRIPT_RUN_NOT_AVAILABLE = 196 // pcre2.h:312:1:
DPCRE2_ERROR_SUBPATTERN_NAMES_MISMATCH = 165 // pcre2.h:281:1:
DPCRE2_ERROR_SUBPATTERN_NAME_EXPECTED = 162 // pcre2.h:278:1:
DPCRE2_ERROR_SUBPATTERN_NAME_TOO_LONG = 148 // pcre2.h:263:1:
DPCRE2_ERROR_SUBPATTERN_NUMBER_TOO_BIG = 161 // pcre2.h:277:1:
DPCRE2_ERROR_SUPPORTED_ONLY_IN_UNICODE = 193 // pcre2.h:309:1:
DPCRE2_ERROR_TOOMANYREPLACE = -61 // pcre2.h:396:1:
DPCRE2_ERROR_TOO_MANY_CAPTURES = 197 // pcre2.h:313:1:
DPCRE2_ERROR_TOO_MANY_CONDITION_BRANCHES = 127 // pcre2.h:242:1:
DPCRE2_ERROR_TOO_MANY_NAMED_SUBPATTERNS = 149 // pcre2.h:264:1:
DPCRE2_ERROR_UCP_IS_DISABLED = 175 // pcre2.h:291:1:
DPCRE2_ERROR_UNAVAILABLE = -54 // pcre2.h:389:1:
DPCRE2_ERROR_UNICODE_DISALLOWED_CODE_POINT = 173 // pcre2.h:289:1:
DPCRE2_ERROR_UNICODE_NOT_SUPPORTED = 132 // pcre2.h:247:1:
DPCRE2_ERROR_UNICODE_PROPERTIES_UNAVAILABLE = 145 // pcre2.h:260:1:
DPCRE2_ERROR_UNKNOWN_ESCAPE = 103 // pcre2.h:218:1:
DPCRE2_ERROR_UNKNOWN_POSIX_CLASS = 130 // pcre2.h:245:1:
DPCRE2_ERROR_UNKNOWN_UNICODE_PROPERTY = 147 // pcre2.h:262:1:
DPCRE2_ERROR_UNMATCHED_CLOSING_PARENTHESIS = 122 // pcre2.h:237:1:
DPCRE2_ERROR_UNRECOGNIZED_AFTER_QUERY_P = 141 // pcre2.h:256:1:
DPCRE2_ERROR_UNSET = -55 // pcre2.h:390:1:
DPCRE2_ERROR_UNSUPPORTED_ESCAPE_SEQUENCE = 137 // pcre2.h:252:1:
DPCRE2_ERROR_UTF16_ERR1 = -24 // pcre2.h:349:1:
DPCRE2_ERROR_UTF16_ERR2 = -25 // pcre2.h:350:1:
DPCRE2_ERROR_UTF16_ERR3 = -26 // pcre2.h:351:1:
DPCRE2_ERROR_UTF32_ERR1 = -27 // pcre2.h:355:1:
DPCRE2_ERROR_UTF32_ERR2 = -28 // pcre2.h:356:1:
DPCRE2_ERROR_UTF8_ERR1 = -3 // pcre2.h:325:1:
DPCRE2_ERROR_UTF8_ERR10 = -12 // pcre2.h:334:1:
DPCRE2_ERROR_UTF8_ERR11 = -13 // pcre2.h:335:1:
DPCRE2_ERROR_UTF8_ERR12 = -14 // pcre2.h:336:1:
DPCRE2_ERROR_UTF8_ERR13 = -15 // pcre2.h:337:1:
DPCRE2_ERROR_UTF8_ERR14 = -16 // pcre2.h:338:1:
DPCRE2_ERROR_UTF8_ERR15 = -17 // pcre2.h:339:1:
DPCRE2_ERROR_UTF8_ERR16 = -18 // pcre2.h:340:1:
DPCRE2_ERROR_UTF8_ERR17 = -19 // pcre2.h:341:1:
DPCRE2_ERROR_UTF8_ERR18 = -20 // pcre2.h:342:1:
DPCRE2_ERROR_UTF8_ERR19 = -21 // pcre2.h:343:1:
DPCRE2_ERROR_UTF8_ERR2 = -4 // pcre2.h:326:1:
DPCRE2_ERROR_UTF8_ERR20 = -22 // pcre2.h:344:1:
DPCRE2_ERROR_UTF8_ERR21 = -23 // pcre2.h:345:1:
DPCRE2_ERROR_UTF8_ERR3 = -5 // pcre2.h:327:1:
DPCRE2_ERROR_UTF8_ERR4 = -6 // pcre2.h:328:1:
DPCRE2_ERROR_UTF8_ERR5 = -7 // pcre2.h:329:1:
DPCRE2_ERROR_UTF8_ERR6 = -8 // pcre2.h:330:1:
DPCRE2_ERROR_UTF8_ERR7 = -9 // pcre2.h:331:1:
DPCRE2_ERROR_UTF8_ERR8 = -10 // pcre2.h:332:1:
DPCRE2_ERROR_UTF8_ERR9 = -11 // pcre2.h:333:1:
DPCRE2_ERROR_UTF_IS_DISABLED = 174 // pcre2.h:290:1:
DPCRE2_ERROR_VERB_ARGUMENT_NOT_ALLOWED = 159 // pcre2.h:275:1:
DPCRE2_ERROR_VERB_NAME_TOO_LONG = 176 // pcre2.h:292:1:
DPCRE2_ERROR_VERB_UNKNOWN = 160 // pcre2.h:276:1:
DPCRE2_ERROR_VERSION_CONDITION_SYNTAX = 179 // pcre2.h:295:1:
DPCRE2_ERROR_ZERO_RELATIVE_REFERENCE = 126 // pcre2.h:241:1:
DPCRE2_EXTENDED = 0x00000080 // pcre2.h:126:1:
DPCRE2_EXTENDED_MORE = 0x01000000 // pcre2.h:143:1:
DPCRE2_EXTRA_ALLOW_LOOKAROUND_BSK = 0x00000040 // pcre2.h:155:1:
DPCRE2_EXTRA_ALLOW_SURROGATE_ESCAPES = 0x00000001 // pcre2.h:149:1:
DPCRE2_EXTRA_ALT_BSUX = 0x00000020 // pcre2.h:154:1:
DPCRE2_EXTRA_BAD_ESCAPE_IS_LITERAL = 0x00000002 // pcre2.h:150:1:
DPCRE2_EXTRA_ESCAPED_CR_IS_LF = 0x00000010 // pcre2.h:153:1:
DPCRE2_EXTRA_MATCH_LINE = 0x00000008 // pcre2.h:152:1:
DPCRE2_EXTRA_MATCH_WORD = 0x00000004 // pcre2.h:151:1:
DPCRE2_FIRSTCASELESS = 0x00000020 // pcre2_internal.h:513:1:
DPCRE2_FIRSTLINE = 0x00000100 // pcre2.h:127:1:
DPCRE2_FIRSTMAPSET = 0x00000040 // pcre2_internal.h:514:1:
DPCRE2_FIRSTSET = 0x00000010 // pcre2_internal.h:512:1:
DPCRE2_HASACCEPT = 0x00800000 // pcre2_internal.h:531:1:
DPCRE2_HASBKC = 0x00400000 // pcre2_internal.h:530:1:
DPCRE2_HASBKPORX = 0x00100000 // pcre2_internal.h:528:1:
DPCRE2_HASCRORLF = 0x00000800 // pcre2_internal.h:519:1:
DPCRE2_HASTHEN = 0x00001000 // pcre2_internal.h:520:1:
DPCRE2_H_IDEMPOTENT_GUARD = 0 // pcre2.h:40:1:
DPCRE2_INFO_ALLOPTIONS = 0 // pcre2.h:406:1:
DPCRE2_INFO_ARGOPTIONS = 1 // pcre2.h:407:1:
DPCRE2_INFO_BACKREFMAX = 2 // pcre2.h:408:1:
DPCRE2_INFO_BSR = 3 // pcre2.h:409:1:
DPCRE2_INFO_CAPTURECOUNT = 4 // pcre2.h:410:1:
DPCRE2_INFO_DEPTHLIMIT = 21 // pcre2.h:427:1:
DPCRE2_INFO_EXTRAOPTIONS = 26 // pcre2.h:433:1:
DPCRE2_INFO_FIRSTBITMAP = 7 // pcre2.h:413:1:
DPCRE2_INFO_FIRSTCODETYPE = 6 // pcre2.h:412:1:
DPCRE2_INFO_FIRSTCODEUNIT = 5 // pcre2.h:411:1:
DPCRE2_INFO_FRAMESIZE = 24 // pcre2.h:431:1:
DPCRE2_INFO_HASBACKSLASHC = 23 // pcre2.h:430:1:
DPCRE2_INFO_HASCRORLF = 8 // pcre2.h:414:1:
DPCRE2_INFO_HEAPLIMIT = 25 // pcre2.h:432:1:
DPCRE2_INFO_JCHANGED = 9 // pcre2.h:415:1:
DPCRE2_INFO_JITSIZE = 10 // pcre2.h:416:1:
DPCRE2_INFO_LASTCODETYPE = 12 // pcre2.h:418:1:
DPCRE2_INFO_LASTCODEUNIT = 11 // pcre2.h:417:1:
DPCRE2_INFO_MATCHEMPTY = 13 // pcre2.h:419:1:
DPCRE2_INFO_MATCHLIMIT = 14 // pcre2.h:420:1:
DPCRE2_INFO_MAXLOOKBEHIND = 15 // pcre2.h:421:1:
DPCRE2_INFO_MINLENGTH = 16 // pcre2.h:422:1:
DPCRE2_INFO_NAMECOUNT = 17 // pcre2.h:423:1:
DPCRE2_INFO_NAMEENTRYSIZE = 18 // pcre2.h:424:1:
DPCRE2_INFO_NAMETABLE = 19 // pcre2.h:425:1:
DPCRE2_INFO_NEWLINE = 20 // pcre2.h:426:1:
DPCRE2_INFO_RECURSIONLIMIT = 21 // pcre2.h:428:1:
DPCRE2_INFO_SIZE = 22 // pcre2.h:429:1:
DPCRE2_INTERNAL_H_IDEMPOTENT_GUARD = 0 // pcre2_internal.h:42:1:
DPCRE2_JCHANGED = 0x00000400 // pcre2_internal.h:518:1:
DPCRE2_JIT_COMPLETE = 0x00000001 // pcre2.h:159:1:
DPCRE2_JIT_INVALID_UTF = 0x00000100 // pcre2.h:162:1:
DPCRE2_JIT_PARTIAL_HARD = 0x00000004 // pcre2.h:161:1:
DPCRE2_JIT_PARTIAL_SOFT = 0x00000002 // pcre2.h:160:1:
DPCRE2_KEEP_UNINITIALIZED = 0 // pcre2_internal.h:87:1:
DPCRE2_LASTCASELESS = 0x00000100 // pcre2_internal.h:516:1:
DPCRE2_LASTSET = 0x00000080 // pcre2_internal.h:515:1:
DPCRE2_LITERAL = 0x02000000 // pcre2.h:144:1:
DPCRE2_MAJOR = 10 // pcre2.h:44:1:
DPCRE2_MATCH_EMPTY = 0x00002000 // pcre2_internal.h:521:1:
DPCRE2_MATCH_INVALID_UTF = 0x04000000 // pcre2.h:145:1:
DPCRE2_MATCH_UNSET_BACKREF = 0x00000200 // pcre2.h:128:1:
DPCRE2_MD_COPIED_SUBJECT = 0x01 // pcre2_internal.h:543:1:
DPCRE2_MINOR = 40 // pcre2.h:45:1:
DPCRE2_MODE16 = 0x00000002 // pcre2_internal.h:510:1:
DPCRE2_MODE32 = 0x00000004 // pcre2_internal.h:511:1:
DPCRE2_MODE8 = 0x00000001 // pcre2_internal.h:509:1:
DPCRE2_MODE_MASK = 7 // pcre2_internal.h:533:1:
DPCRE2_MULTILINE = 0x00000400 // pcre2.h:129:1:
DPCRE2_NEVER_BACKSLASH_C = 0x00100000 // pcre2.h:139:1:
DPCRE2_NEVER_UCP = 0x00000800 // pcre2.h:130:1:
DPCRE2_NEVER_UTF = 0x00001000 // pcre2.h:131:1:
DPCRE2_NEWLINE_ANY = 4 // pcre2.h:206:1:
DPCRE2_NEWLINE_ANYCRLF = 5 // pcre2.h:207:1:
DPCRE2_NEWLINE_CR = 1 // pcre2.h:203:1:
DPCRE2_NEWLINE_CRLF = 3 // pcre2.h:205:1:
DPCRE2_NEWLINE_LF = 2 // pcre2.h:204:1:
DPCRE2_NEWLINE_NUL = 6 // pcre2.h:208:1:
DPCRE2_NE_ATST_SET = 0x00020000 // pcre2_internal.h:525:1:
DPCRE2_NL_SET = 0x00008000 // pcre2_internal.h:523:1:
DPCRE2_NOJIT = 0x00080000 // pcre2_internal.h:527:1:
DPCRE2_NOTBOL = 0x00000001 // pcre2.h:170:1:
DPCRE2_NOTEMPTY = 0x00000004 // pcre2.h:172:1:
DPCRE2_NOTEMPTY_ATSTART = 0x00000008 // pcre2.h:173:1:
DPCRE2_NOTEMPTY_SET = 0x00010000 // pcre2_internal.h:524:1:
DPCRE2_NOTEOL = 0x00000002 // pcre2.h:171:1:
DPCRE2_NO_AUTO_CAPTURE = 0x00002000 // pcre2.h:132:1:
DPCRE2_NO_AUTO_POSSESS = 0x00004000 // pcre2.h:133:1:
DPCRE2_NO_DOTSTAR_ANCHOR = 0x00008000 // pcre2.h:134:1:
DPCRE2_NO_JIT = 0x00002000 // pcre2.h:183:1:
DPCRE2_NO_START_OPTIMIZE = 0x00010000 // pcre2.h:135:1:
DPCRE2_NO_UTF_CHECK = 0x40000000 // pcre2.h:106:1:
DPCRE2_PARTIAL_HARD = 0x00000020 // pcre2.h:175:1:
DPCRE2_PARTIAL_SOFT = 0x00000010 // pcre2.h:174:1:
DPCRE2_PRERELEASE = 0 // pcre2.h:46:1:
DPCRE2_SIZE_MAX = 18446744073709551615 // pcre2.h:472:1:
DPCRE2_STARTLINE = 0x00000200 // pcre2_internal.h:517:1:
DPCRE2_SUBSTITUTE_EXTENDED = 0x00000200 // pcre2.h:179:1:
DPCRE2_SUBSTITUTE_GLOBAL = 0x00000100 // pcre2.h:178:1:
DPCRE2_SUBSTITUTE_LITERAL = 0x00008000 // pcre2.h:185:1:
DPCRE2_SUBSTITUTE_MATCHED = 0x00010000 // pcre2.h:186:1:
DPCRE2_SUBSTITUTE_OVERFLOW_LENGTH = 0x00001000 // pcre2.h:182:1:
DPCRE2_SUBSTITUTE_REPLACEMENT_ONLY = 0x00020000 // pcre2.h:187:1:
DPCRE2_SUBSTITUTE_UNKNOWN_UNSET = 0x00000800 // pcre2.h:181:1:
DPCRE2_SUBSTITUTE_UNSET_EMPTY = 0x00000400 // pcre2.h:180:1:
DPCRE2_UCP = 0x00020000 // pcre2.h:136:1:
DPCRE2_UCP_H_IDEMPOTENT_GUARD = 0 // pcre2_ucp.h:46:1:
DPCRE2_UNGREEDY = 0x00040000 // pcre2.h:137:1:
DPCRE2_USE_OFFSET_LIMIT = 0x00800000 // pcre2.h:142:1:
DPCRE2_UTF = 0x00080000 // pcre2.h:138:1:
DPDP_ENDIAN = 3412 // endian.h:29:1:
DPIPE_BUF = 4096 // limits.h:14:1:
DPRIX16 = "X" // inttypes.h:135:1:
DPRIX32 = "X" // inttypes.h:136:1:
DPRIX8 = "X" // inttypes.h:134:1:
DPRIXFAST8 = "X" // inttypes.h:144:1:
DPRIXLEAST16 = "X" // inttypes.h:140:1:
DPRIXLEAST32 = "X" // inttypes.h:141:1:
DPRIXLEAST8 = "X" // inttypes.h:139:1:
DPRId16 = "d" // inttypes.h:55:1:
DPRId32 = "d" // inttypes.h:56:1:
DPRId8 = "d" // inttypes.h:54:1:
DPRIdFAST8 = "d" // inttypes.h:64:1:
DPRIdLEAST16 = "d" // inttypes.h:60:1:
DPRIdLEAST32 = "d" // inttypes.h:61:1:
DPRIdLEAST8 = "d" // inttypes.h:59:1:
DPRIi16 = "i" // inttypes.h:71:1:
DPRIi32 = "i" // inttypes.h:72:1:
DPRIi8 = "i" // inttypes.h:70:1:
DPRIiFAST8 = "i" // inttypes.h:80:1:
DPRIiLEAST16 = "i" // inttypes.h:76:1:
DPRIiLEAST32 = "i" // inttypes.h:77:1:
DPRIiLEAST8 = "i" // inttypes.h:75:1:
DPRIo16 = "o" // inttypes.h:87:1:
DPRIo32 = "o" // inttypes.h:88:1:
DPRIo8 = "o" // inttypes.h:86:1:
DPRIoFAST8 = "o" // inttypes.h:96:1:
DPRIoLEAST16 = "o" // inttypes.h:92:1:
DPRIoLEAST32 = "o" // inttypes.h:93:1:
DPRIoLEAST8 = "o" // inttypes.h:91:1:
DPRIu16 = "u" // inttypes.h:103:1:
DPRIu32 = "u" // inttypes.h:104:1:
DPRIu8 = "u" // inttypes.h:102:1:
DPRIuFAST8 = "u" // inttypes.h:112:1:
DPRIuLEAST16 = "u" // inttypes.h:108:1:
DPRIuLEAST32 = "u" // inttypes.h:109:1:
DPRIuLEAST8 = "u" // inttypes.h:107:1:
DPRIx16 = "x" // inttypes.h:119:1:
DPRIx32 = "x" // inttypes.h:120:1:
DPRIx8 = "x" // inttypes.h:118:1:
DPRIxFAST8 = "x" // inttypes.h:128:1:
DPRIxLEAST16 = "x" // inttypes.h:124:1:
DPRIxLEAST32 = "x" // inttypes.h:125:1:
DPRIxLEAST8 = "x" // inttypes.h:123:1:
DPTHREAD_DESTRUCTOR_ITERATIONS = 4 // local_lim.h:69:1:
DPTHREAD_KEYS_MAX = 1024 // local_lim.h:64:1:
DPTRDIFF_MAX = 9223372036854775807 // stdint.h:210:1:
DPTRDIFF_MIN = -9223372036854775808 // stdint.h:209:1:
DPTRDIFF_WIDTH = 64 // stdint.h:311:1:
DPT_ALNUM = 6 // pcre2_internal.h:1282:1:
DPT_ANY = 0 // pcre2_internal.h:1276:1:
DPT_BIDICL = 12 // pcre2_internal.h:1288:1:
DPT_BOOL = 13 // pcre2_internal.h:1289:1:
DPT_CLIST = 10 // pcre2_internal.h:1286:1:
DPT_GC = 2 // pcre2_internal.h:1278:1:
DPT_LAMP = 1 // pcre2_internal.h:1277:1:
DPT_NOTSCRIPT = 255 // pcre2_internal.h:1305:1:
DPT_PC = 3 // pcre2_internal.h:1279:1:
DPT_PXGRAPH = 14 // pcre2_internal.h:1298:1:
DPT_PXPRINT = 15 // pcre2_internal.h:1299:1:
DPT_PXPUNCT = 16 // pcre2_internal.h:1300:1:
DPT_PXSPACE = 8 // pcre2_internal.h:1284:1:
DPT_SC = 4 // pcre2_internal.h:1280:1:
DPT_SCX = 5 // pcre2_internal.h:1281:1:
DPT_SPACE = 7 // pcre2_internal.h:1283:1:
DPT_TABSIZE = 14 // pcre2_internal.h:1290:1:
DPT_UCNC = 11 // pcre2_internal.h:1287:1:
DPT_WORD = 9 // pcre2_internal.h:1285:1:
DP_tmpdir = "/tmp" // stdio.h:120:1:
DRAND_MAX = 2147483647 // stdlib.h:87:1:
DRENAME_EXCHANGE = 2 // stdio.h:165:1:
DRENAME_NOREPLACE = 1 // stdio.h:164:1:
DRENAME_WHITEOUT = 4 // stdio.h:166:1:
DREQ_CU_MAX = 5000 // pcre2_internal.h:555:1:
DRE_DUP_MAX = 32767 // posix2_lim.h:88:1:
DRREF_ANY = 0xffff // pcre2_internal.h:1783:1:
DRTSIG_MAX = 32 // limits.h:19:1:
DSCHAR_MAX = 127 // limits.h:75:1:
DSCHAR_MIN = -128 // limits.h:73:1:
DSCHAR_WIDTH = 8 // limits.h:167:1:
DSCNd16 = "hd" // inttypes.h:172:1:
DSCNd32 = "d" // inttypes.h:173:1:
DSCNd8 = "hhd" // inttypes.h:171:1:
DSCNdFAST8 = "hhd" // inttypes.h:181:1:
DSCNdLEAST16 = "hd" // inttypes.h:177:1:
DSCNdLEAST32 = "d" // inttypes.h:178:1:
DSCNdLEAST8 = "hhd" // inttypes.h:176:1:
DSCNi16 = "hi" // inttypes.h:188:1:
DSCNi32 = "i" // inttypes.h:189:1:
DSCNi8 = "hhi" // inttypes.h:187:1:
DSCNiFAST8 = "hhi" // inttypes.h:197:1:
DSCNiLEAST16 = "hi" // inttypes.h:193:1:
DSCNiLEAST32 = "i" // inttypes.h:194:1:
DSCNiLEAST8 = "hhi" // inttypes.h:192:1:
DSCNo16 = "ho" // inttypes.h:220:1:
DSCNo32 = "o" // inttypes.h:221:1:
DSCNo8 = "hho" // inttypes.h:219:1:
DSCNoFAST8 = "hho" // inttypes.h:229:1:
DSCNoLEAST16 = "ho" // inttypes.h:225:1:
DSCNoLEAST32 = "o" // inttypes.h:226:1:
DSCNoLEAST8 = "hho" // inttypes.h:224:1:
DSCNu16 = "hu" // inttypes.h:204:1:
DSCNu32 = "u" // inttypes.h:205:1:
DSCNu8 = "hhu" // inttypes.h:203:1:
DSCNuFAST8 = "hhu" // inttypes.h:213:1:
DSCNuLEAST16 = "hu" // inttypes.h:209:1:
DSCNuLEAST32 = "u" // inttypes.h:210:1:
DSCNuLEAST8 = "hhu" // inttypes.h:208:1:
DSCNx16 = "hx" // inttypes.h:236:1:
DSCNx32 = "x" // inttypes.h:237:1:
DSCNx8 = "hhx" // inttypes.h:235:1:
DSCNxFAST8 = "hhx" // inttypes.h:245:1:
DSCNxLEAST16 = "hx" // inttypes.h:241:1:
DSCNxLEAST32 = "x" // inttypes.h:242:1:
DSCNxLEAST8 = "hhx" // inttypes.h:240:1:
DSEEK_CUR = 1 // stdio.h:110:1:
DSEEK_DATA = 3 // stdio.h:113:1:
DSEEK_END = 2 // stdio.h:111:1:
DSEEK_HOLE = 4 // stdio.h:114:1:
DSEEK_SET = 0 // stdio.h:109:1:
DSEM_VALUE_MAX = 2147483647 // local_lim.h:99:1:
DSHRT_MAX = 32767 // limits.h:106:1:
DSHRT_MIN = -32768 // limits.h:104:1:
DSHRT_WIDTH = 16 // limits.h:171:1:
DSIG_ATOMIC_MAX = 2147483647 // stdint.h:223:1:
DSIG_ATOMIC_MIN = -2147483648 // stdint.h:222:1:
DSIG_ATOMIC_WIDTH = 32 // stdint.h:312:1:
DSIZE_MAX = 18446744073709551615 // stdint.h:227:1:
DSIZE_WIDTH = 64 // stdint.h:313:1:
DSSIZE_MAX = 9223372036854775807 // posix1_lim.h:169:1:
DSTART_FRAMES_SIZE = 20480 // pcre2_internal.h:231:1:
DSTDC_HEADERS = 1 // config.h:292:1:
DSTR_0 = "\060" // pcre2_internal.h:1106:1:
DSTR_1 = "\061" // pcre2_internal.h:1107:1:
DSTR_2 = "\062" // pcre2_internal.h:1108:1:
DSTR_3 = "\063" // pcre2_internal.h:1109:1:
DSTR_4 = "\064" // pcre2_internal.h:1110:1:
DSTR_5 = "\065" // pcre2_internal.h:1111:1:
DSTR_6 = "\066" // pcre2_internal.h:1112:1:
DSTR_7 = "\067" // pcre2_internal.h:1113:1:
DSTR_8 = "\070" // pcre2_internal.h:1114:1:
DSTR_9 = "\071" // pcre2_internal.h:1115:1:
DSTR_A = "\101" // pcre2_internal.h:1123:1:
DSTR_AMPERSAND = "\046" // pcre2_internal.h:1096:1:
DSTR_APOSTROPHE = "\047" // pcre2_internal.h:1097:1:
DSTR_ASTERISK = "\052" // pcre2_internal.h:1100:1:
DSTR_B = "\102" // pcre2_internal.h:1124:1:
DSTR_BACKSLASH = "\134" // pcre2_internal.h:1150:1:
DSTR_BEL = "\007" // pcre2_internal.h:1086:1:
DSTR_BS = "\010" // pcre2_internal.h:1085:1:
DSTR_C = "\103" // pcre2_internal.h:1125:1:
DSTR_CIRCUMFLEX_ACCENT = "\136" // pcre2_internal.h:1152:1:
DSTR_COLON = "\072" // pcre2_internal.h:1116:1:
DSTR_COMMA = "\054" // pcre2_internal.h:1102:1:
DSTR_COMMERCIAL_AT = "\100" // pcre2_internal.h:1122:1:
DSTR_CR = "\015" // pcre2_internal.h:1083:1:
DSTR_D = "\104" // pcre2_internal.h:1126:1:
DSTR_DEL = "\177" // pcre2_internal.h:1088:1:
DSTR_DOLLAR_SIGN = "\044" // pcre2_internal.h:1094:1:
DSTR_DOT = "\056" // pcre2_internal.h:1104:1:
DSTR_E = "\105" // pcre2_internal.h:1127:1:
DSTR_EQUALS_SIGN = "\075" // pcre2_internal.h:1119:1:
DSTR_ESC = "\033" // pcre2_internal.h:1087:1:
DSTR_EXCLAMATION_MARK = "\041" // pcre2_internal.h:1091:1:
DSTR_F = "\106" // pcre2_internal.h:1128:1:
DSTR_FF = "\014" // pcre2_internal.h:1082:1:
DSTR_G = "\107" // pcre2_internal.h:1129:1:
DSTR_GRAVE_ACCENT = "\140" // pcre2_internal.h:1154:1:
DSTR_GREATER_THAN_SIGN = "\076" // pcre2_internal.h:1120:1:
DSTR_H = "\110" // pcre2_internal.h:1130:1:
DSTR_HT = "\011" // pcre2_internal.h:1080:1:
DSTR_I = "\111" // pcre2_internal.h:1131:1:
DSTR_J = "\112" // pcre2_internal.h:1132:1:
DSTR_K = "\113" // pcre2_internal.h:1133:1:
DSTR_L = "\114" // pcre2_internal.h:1134:1:
DSTR_LEFT_CURLY_BRACKET = "\173" // pcre2_internal.h:1181:1:
DSTR_LEFT_PARENTHESIS = "\050" // pcre2_internal.h:1098:1:
DSTR_LEFT_SQUARE_BRACKET = "\133" // pcre2_internal.h:1149:1:
DSTR_LESS_THAN_SIGN = "\074" // pcre2_internal.h:1118:1:
DSTR_M = "\115" // pcre2_internal.h:1135:1:
DSTR_MINUS = "\055" // pcre2_internal.h:1103:1:
DSTR_N = "\116" // pcre2_internal.h:1136:1:
DSTR_NL = "\012" // pcre2_internal.h:1084:1:
DSTR_NUMBER_SIGN = "\043" // pcre2_internal.h:1093:1:
DSTR_O = "\117" // pcre2_internal.h:1137:1:
DSTR_P = "\120" // pcre2_internal.h:1138:1:
DSTR_PERCENT_SIGN = "\045" // pcre2_internal.h:1095:1:
DSTR_PLUS = "\053" // pcre2_internal.h:1101:1:
DSTR_Q = "\121" // pcre2_internal.h:1139:1:
DSTR_QUESTION_MARK = "\077" // pcre2_internal.h:1121:1:
DSTR_QUOTATION_MARK = "\042" // pcre2_internal.h:1092:1:
DSTR_R = "\122" // pcre2_internal.h:1140:1:
DSTR_RIGHT_CURLY_BRACKET = "\175" // pcre2_internal.h:1183:1:
DSTR_RIGHT_PARENTHESIS = "\051" // pcre2_internal.h:1099:1:
DSTR_RIGHT_SQUARE_BRACKET = "\135" // pcre2_internal.h:1151:1:
DSTR_S = "\123" // pcre2_internal.h:1141:1:
DSTR_SEMICOLON = "\073" // pcre2_internal.h:1117:1:
DSTR_SLASH = "\057" // pcre2_internal.h:1105:1:
DSTR_SPACE = "\040" // pcre2_internal.h:1090:1:
DSTR_T = "\124" // pcre2_internal.h:1142:1:
DSTR_TILDE = "\176" // pcre2_internal.h:1184:1:
DSTR_U = "\125" // pcre2_internal.h:1143:1:
DSTR_UNDERSCORE = "\137" // pcre2_internal.h:1153:1:
DSTR_V = "\126" // pcre2_internal.h:1144:1:
DSTR_VERTICAL_LINE = "\174" // pcre2_internal.h:1182:1:
DSTR_VT = "\013" // pcre2_internal.h:1081:1:
DSTR_W = "\127" // pcre2_internal.h:1145:1:
DSTR_X = "\130" // pcre2_internal.h:1146:1:
DSTR_Y = "\131" // pcre2_internal.h:1147:1:
DSTR_Z = "\132" // pcre2_internal.h:1148:1:
DSTR_a = "\141" // pcre2_internal.h:1155:1:
DSTR_b = "\142" // pcre2_internal.h:1156:1:
DSTR_c = "\143" // pcre2_internal.h:1157:1:
DSTR_d = "\144" // pcre2_internal.h:1158:1:
DSTR_e = "\145" // pcre2_internal.h:1159:1:
DSTR_f = "\146" // pcre2_internal.h:1160:1:
DSTR_g = "\147" // pcre2_internal.h:1161:1:
DSTR_h = "\150" // pcre2_internal.h:1162:1:
DSTR_i = "\151" // pcre2_internal.h:1163:1:
DSTR_j = "\152" // pcre2_internal.h:1164:1:
DSTR_k = "\153" // pcre2_internal.h:1165:1:
DSTR_l = "\154" // pcre2_internal.h:1166:1:
DSTR_m = "\155" // pcre2_internal.h:1167:1:
DSTR_n = "\156" // pcre2_internal.h:1168:1:
DSTR_o = "\157" // pcre2_internal.h:1169:1:
DSTR_p = "\160" // pcre2_internal.h:1170:1:
DSTR_q = "\161" // pcre2_internal.h:1171:1:
DSTR_r = "\162" // pcre2_internal.h:1172:1:
DSTR_s = "\163" // pcre2_internal.h:1173:1:
DSTR_t = "\164" // pcre2_internal.h:1174:1:
DSTR_u = "\165" // pcre2_internal.h:1175:1:
DSTR_v = "\166" // pcre2_internal.h:1176:1:
DSTR_w = "\167" // pcre2_internal.h:1177:1:
DSTR_x = "\170" // pcre2_internal.h:1178:1:
DSTR_y = "\171" // pcre2_internal.h:1179:1:
DSTR_z = "\172" // pcre2_internal.h:1180:1:
DSUPPORT_PCRE2GREP_CALLOUT = 0 // config.h:312:1:
DSUPPORT_PCRE2GREP_CALLOUT_FORK = 0 // config.h:317:1:
DSUPPORT_PCRE2_8 = 0 // config.h:330:1:
DSUPPORT_UNICODE = 0 // config.h:336:1:
DSUPPORT_WIDE_CHARS = 0 // pcre2_intmodedep.h:216:1:
DTABLES_LENGTH = 1088 // pcre2_internal.h:593:1:
DTMP_MAX = 238328 // stdio_lim.h:26:1:
DTRUE = 1 // pcre2_internal.h:70:1:
DTTY_NAME_MAX = 32 // local_lim.h:87:1:
DUCD_BIDICLASS_SHIFT = 11 // pcre2_internal.h:1844:1:
DUCD_BLOCK_SIZE = 128 // pcre2_internal.h:1831:1:
DUCD_BPROPS_MASK = 0xfff // pcre2_internal.h:1845:1:
DUCD_SCRIPTX_MASK = 0x3ff // pcre2_internal.h:1843:1:
DUCHAR_MAX = 255 // limits.h:82:1:
DUCHAR_WIDTH = 8 // limits.h:169:1:
DUINT16_MAX = 65535 // stdint.h:128:1:
DUINT16_WIDTH = 16 // stdint.h:281:1:
DUINT32_MAX = 4294967295 // stdint.h:129:1:
DUINT32_WIDTH = 32 // stdint.h:283:1:
DUINT64_MAX = 18446744073709551615 // stdint.h:130:1:
DUINT64_WIDTH = 64 // stdint.h:285:1:
DUINT8_MAX = 255 // stdint.h:127:1:
DUINT8_WIDTH = 8 // stdint.h:279:1:
DUINTMAX_MAX = 18446744073709551615 // stdint.h:202:1:
DUINTMAX_WIDTH = 64 // stdint.h:309:1:
DUINTPTR_MAX = 18446744073709551615 // stdint.h:188:1:
DUINTPTR_WIDTH = 64 // stdint.h:306:1:
DUINT_FAST16_MAX = 18446744073709551615 // stdint.h:175:1:
DUINT_FAST16_WIDTH = 64 // stdint.h:299:1:
DUINT_FAST32_MAX = 18446744073709551615 // stdint.h:176:1:
DUINT_FAST32_WIDTH = 64 // stdint.h:301:1:
DUINT_FAST64_MAX = 18446744073709551615 // stdint.h:181:1:
DUINT_FAST64_WIDTH = 64 // stdint.h:303:1:
DUINT_FAST8_MAX = 255 // stdint.h:173:1:
DUINT_FAST8_WIDTH = 8 // stdint.h:297:1:
DUINT_LEAST16_MAX = 65535 // stdint.h:146:1:
DUINT_LEAST16_WIDTH = 16 // stdint.h:290:1:
DUINT_LEAST32_MAX = 4294967295 // stdint.h:147:1:
DUINT_LEAST32_WIDTH = 32 // stdint.h:292:1:
DUINT_LEAST64_MAX = 18446744073709551615 // stdint.h:148:1:
DUINT_LEAST64_WIDTH = 64 // stdint.h:294:1:
DUINT_LEAST8_MAX = 255 // stdint.h:145:1:
DUINT_LEAST8_WIDTH = 8 // stdint.h:288:1:
DUINT_MAX = 4294967295 // limits.h:124:1:
DUINT_WIDTH = 32 // limits.h:177:1:
DULLONG_MAX = 18446744073709551615 // limits.h:146:1:
DULLONG_WIDTH = 64 // limits.h:185:1:
DULONG_LONG_MAX = 18446744073709551615 // limits.h:158:1:
DULONG_MAX = 18446744073709551615 // limits.h:135:1:
DULONG_WIDTH = 64 // limits.h:181:1:
DUSHRT_MAX = 65535 // limits.h:113:1:
DUSHRT_WIDTH = 16 // limits.h:173:1:
DVERSION = "10.40" // config.h:430:1:
DWCHAR_MAX = 2147483647 // stdint.h:240:1:
DWCHAR_MIN = -2147483648 // stdint.h:239:1:
DWCHAR_WIDTH = 32 // stdint.h:314:1:
DWCONTINUED = 8 // waitflags.h:32:1:
DWEXITED = 4 // waitflags.h:31:1:
DWINT_MAX = 4294967295 // stdint.h:245:1:
DWINT_MIN = 0 // stdint.h:244:1:
DWINT_WIDTH = 32 // stdint.h:315:1:
DWNOHANG = 1 // waitflags.h:25:1:
DWNOWAIT = 0x01000000 // waitflags.h:33:1:
DWORD_BIT = 32 // xopen_lim.h:114:1:
DWSTOPPED = 2 // waitflags.h:30:1:
DWUNTRACED = 2 // waitflags.h:26:1:
DXATTR_LIST_MAX = 65536 // limits.h:17:1:
DXATTR_NAME_MAX = 255 // limits.h:15:1:
DXATTR_SIZE_MAX = 65536 // limits.h:16:1:
DXCL_END = 0 // pcre2_internal.h:1314:1:
DXCL_HASPROP = 0x04 // pcre2_internal.h:1312:1:
DXCL_MAP = 0x02 // pcre2_internal.h:1311:1:
DXCL_NOT = 0x01 // pcre2_internal.h:1310:1:
DXCL_NOTPROP = 4 // pcre2_internal.h:1318:1:
DXCL_PROP = 3 // pcre2_internal.h:1317:1:
DXCL_RANGE = 2 // pcre2_internal.h:1316:1:
DXCL_SINGLE = 1 // pcre2_internal.h:1315:1:
D_ALLOCA_H = 1 // alloca.h:19:1:
D_ALL_SOURCE = 1 // config.h:343:1:
D_ANSI_STDDEF_H = 0 // stddef.h:42:1:
D_ATFILE_SOURCE = 1 // features.h:351:1:
D_BITS_ATOMIC_WIDE_COUNTER_H = 0 // atomic_wide_counter.h:20:1:
D_BITS_BYTESWAP_H = 1 // byteswap.h:24:1:
D_BITS_ENDIANNESS_H = 1 // endianness.h:2:1:
D_BITS_ENDIAN_H = 1 // endian.h:20:1:
D_BITS_FLOATN_COMMON_H = 0 // floatn-common.h:21:1:
D_BITS_FLOATN_H = 0 // floatn.h:20:1:
D_BITS_POSIX1_LIM_H = 1 // posix1_lim.h:25:1:
D_BITS_POSIX2_LIM_H = 1 // posix2_lim.h:23:1:
D_BITS_PTHREADTYPES_ARCH_H = 1 // pthreadtypes-arch.h:19:1:
D_BITS_PTHREADTYPES_COMMON_H = 1 // pthreadtypes.h:20:1:
D_BITS_STDINT_INTN_H = 1 // stdint-intn.h:20:1:
D_BITS_STDINT_UINTN_H = 1 // stdint-uintn.h:20:1:
D_BITS_STDIO_LIM_H = 1 // stdio_lim.h:19:1:
D_BITS_TIME64_H = 1 // time64.h:24:1:
D_BITS_TYPESIZES_H = 1 // typesizes.h:24:1:
D_BITS_TYPES_H = 1 // types.h:24:1:
D_BITS_TYPES_LOCALE_T_H = 1 // locale_t.h:20:1:
D_BITS_TYPES___LOCALE_T_H = 1 // __locale_t.h:20:1:
D_BITS_UINTN_IDENTITY_H = 1 // uintn-identity.h:24:1:
D_BITS_UIO_LIM_H = 1 // uio_lim.h:20:1:
D_BITS_WCHAR_H = 1 // wchar.h:20:1:
D_BSD_PTRDIFF_T_ = 0 // stddef.h:136:1:
D_BSD_SIZE_T_ = 0 // stddef.h:189:1:
D_BSD_SIZE_T_DEFINED_ = 0 // stddef.h:192:1:
D_CTYPE_H = 1 // ctype.h:23:1:
D_DARWIN_C_SOURCE = 1 // config.h:347:1:
D_DEFAULT_SOURCE = 1 // features.h:236:1:
D_DYNAMIC_STACK_SIZE_SOURCE = 1 // features.h:224:1:
D_ENDIAN_H = 1 // endian.h:19:1:
D_FEATURES_H = 1 // features.h:19:1:
D_FILE_OFFSET_BITS = 64 // <builtin>:25:1:
D_GCC_LIMITS_H_ = 0 // limits.h:30:1:
D_GCC_MAX_ALIGN_T = 0 // stddef.h:411:1:
D_GCC_PTRDIFF_T = 0 // stddef.h:138:1:
D_GCC_SIZE_T = 0 // stddef.h:195:1:
D_GCC_WCHAR_T = 0 // stddef.h:273:1:
D_GCC_WRAP_STDINT_H = 0 // stdint.h:13:1:
D_GNU_SOURCE = 1 // config.h:355:1:
D_HPUX_ALT_XOPEN_SOCKET_API = 1 // config.h:360:1:
D_INTTYPES_H = 1 // inttypes.h:23:1:
D_IOFBF = 0 // stdio.h:93:1:
D_IOLBF = 1 // stdio.h:94:1:
D_IONBF = 2 // stdio.h:95:1:
D_IO_EOF_SEEN = 0x0010 // struct_FILE.h:111:1:
D_IO_ERR_SEEN = 0x0020 // struct_FILE.h:114:1:
D_IO_USER_LOCK = 0x8000 // struct_FILE.h:117:1:
D_ISOC11_SOURCE = 1 // features.h:206:1:
D_ISOC2X_SOURCE = 1 // features.h:208:1:
D_ISOC95_SOURCE = 1 // features.h:202:1:
D_ISOC99_SOURCE = 1 // features.h:204:1:
D_LARGEFILE64_SOURCE = 1 // features.h:218:1:
D_LARGEFILE_SOURCE = 1 // features.h:360:1:
D_LIBC_LIMITS_H_ = 1 // limits.h:23:1:
D_LIMITS_H___ = 0 // limits.h:60:1:
D_LINUX_LIMITS_H = 0 // limits.h:3:1:
D_LP64 = 1 // <predefined>:297:1:
D_NETBSD_SOURCE = 1 // config.h:371:1:
D_OPENBSD_SOURCE = 1 // config.h:376:1:
D_POSIX2_BC_BASE_MAX = 99 // posix2_lim.h:27:1:
D_POSIX2_BC_DIM_MAX = 2048 // posix2_lim.h:30:1:
D_POSIX2_BC_SCALE_MAX = 99 // posix2_lim.h:33:1:
D_POSIX2_BC_STRING_MAX = 1000 // posix2_lim.h:36:1:
D_POSIX2_CHARCLASS_NAME_MAX = 14 // posix2_lim.h:55:1:
D_POSIX2_COLL_WEIGHTS_MAX = 2 // posix2_lim.h:40:1:
D_POSIX2_EXPR_NEST_MAX = 32 // posix2_lim.h:44:1:
D_POSIX2_LINE_MAX = 2048 // posix2_lim.h:47:1:
D_POSIX2_RE_DUP_MAX = 255 // posix2_lim.h:51:1:
D_POSIX_AIO_LISTIO_MAX = 2 // posix1_lim.h:32:1:
D_POSIX_AIO_MAX = 1 // posix1_lim.h:35:1:
D_POSIX_ARG_MAX = 4096 // posix1_lim.h:38:1:
D_POSIX_CHILD_MAX = 25 // posix1_lim.h:42:1:
D_POSIX_CLOCKRES_MIN = 20000000 // posix1_lim.h:157:1:
D_POSIX_C_SOURCE = 200809 // features.h:290:1:
D_POSIX_DELAYTIMER_MAX = 32 // posix1_lim.h:48:1:
D_POSIX_FD_SETSIZE = 20 // posix1_lim.h:93:1:
D_POSIX_HIWAT = 512 // posix1_lim.h:150:1:
D_POSIX_HOST_NAME_MAX = 255 // posix1_lim.h:52:1:
D_POSIX_LINK_MAX = 8 // posix1_lim.h:55:1:
D_POSIX_LOGIN_NAME_MAX = 9 // posix1_lim.h:58:1:
D_POSIX_MAX_CANON = 255 // posix1_lim.h:61:1:
D_POSIX_MAX_INPUT = 255 // posix1_lim.h:65:1:
D_POSIX_MQ_OPEN_MAX = 8 // posix1_lim.h:68:1:
D_POSIX_MQ_PRIO_MAX = 32 // posix1_lim.h:71:1:
D_POSIX_NAME_MAX = 14 // posix1_lim.h:74:1:
D_POSIX_NGROUPS_MAX = 8 // posix1_lim.h:78:1:
D_POSIX_OPEN_MAX = 20 // posix1_lim.h:85:1:
D_POSIX_PATH_MAX = 256 // posix1_lim.h:97:1:
D_POSIX_PIPE_BUF = 512 // posix1_lim.h:100:1:
D_POSIX_PTHREAD_SEMANTICS = 1 // config.h:388:1:
D_POSIX_QLIMIT = 1 // posix1_lim.h:146:1:
D_POSIX_RE_DUP_MAX = 255 // posix1_lim.h:104:1:
D_POSIX_RTSIG_MAX = 8 // posix1_lim.h:107:1:
D_POSIX_SEM_NSEMS_MAX = 256 // posix1_lim.h:110:1:
D_POSIX_SEM_VALUE_MAX = 32767 // posix1_lim.h:113:1:
D_POSIX_SIGQUEUE_MAX = 32 // posix1_lim.h:116:1:
D_POSIX_SOURCE = 1 // features.h:288:1:
D_POSIX_SSIZE_MAX = 32767 // posix1_lim.h:119:1:
D_POSIX_STREAM_MAX = 8 // posix1_lim.h:122:1:
D_POSIX_SYMLINK_MAX = 255 // posix1_lim.h:125:1:
D_POSIX_SYMLOOP_MAX = 8 // posix1_lim.h:129:1:
D_POSIX_THREAD_DESTRUCTOR_ITERATIONS = 4 // local_lim.h:67:1:
D_POSIX_THREAD_KEYS_MAX = 128 // local_lim.h:62:1:
D_POSIX_THREAD_THREADS_MAX = 64 // local_lim.h:72:1:
D_POSIX_TIMER_MAX = 32 // posix1_lim.h:132:1:
D_POSIX_TTY_NAME_MAX = 9 // posix1_lim.h:135:1:
D_POSIX_TZNAME_MAX = 6 // posix1_lim.h:139:1:
D_POSIX_UIO_MAXIOV = 16 // posix1_lim.h:153:1:
D_PRINTF_NAN_LEN_MAX = 4 // stdio.h:138:1:
D_PTRDIFF_T = 0 // stddef.h:131:1:
D_PTRDIFF_T_ = 0 // stddef.h:135:1:
D_PTRDIFF_T_DECLARED = 0 // stddef.h:139:1:
D_RWLOCK_INTERNAL_H = 0 // struct_rwlock.h:21:1:
D_SIZET_ = 0 // stddef.h:196:1:
D_SIZE_T = 0 // stddef.h:183:1:
D_SIZE_T_ = 0 // stddef.h:188:1:
D_SIZE_T_DECLARED = 0 // stddef.h:193:1:
D_SIZE_T_DEFINED = 0 // stddef.h:191:1:
D_SIZE_T_DEFINED_ = 0 // stddef.h:190:1:
D_STDC_PREDEF_H = 1 // <predefined>:168:1:
D_STDDEF_H = 0 // stddef.h:39:1:
D_STDDEF_H_ = 0 // stddef.h:40:1:
D_STDINT_H = 1 // stdint.h:23:1:
D_STDIO_H = 1 // stdio.h:24:1:
D_STDLIB_H = 1 // stdlib.h:36:1:
D_STRINGS_H = 1 // strings.h:19:1:
D_STRING_H = 1 // string.h:23:1:
D_STRUCT_TIMESPEC = 1 // struct_timespec.h:3:1:
D_SYS_CDEFS_H = 1 // cdefs.h:20:1:
D_SYS_SELECT_H = 1 // select.h:22:1:
D_SYS_SIZE_T_H = 0 // stddef.h:184:1:
D_SYS_TYPES_H = 1 // types.h:23:1:
D_TANDEM_SOURCE = 1 // config.h:420:1:
D_THREAD_MUTEX_INTERNAL_H = 1 // struct_mutex.h:20:1:
D_THREAD_SHARED_TYPES_H = 1 // thread-shared-types.h:20:1:
D_T_PTRDIFF = 0 // stddef.h:133:1:
D_T_PTRDIFF_ = 0 // stddef.h:132:1:
D_T_SIZE = 0 // stddef.h:186:1:
D_T_SIZE_ = 0 // stddef.h:185:1:
D_T_WCHAR = 0 // stddef.h:264:1:
D_T_WCHAR_ = 0 // stddef.h:263:1:
D_VA_LIST_DEFINED = 0 // stdio.h:53:1:
D_WCHAR_T = 0 // stddef.h:262:1:
D_WCHAR_T_ = 0 // stddef.h:266:1:
D_WCHAR_T_DECLARED = 0 // stddef.h:274:1:
D_WCHAR_T_DEFINED = 0 // stddef.h:269:1:
D_WCHAR_T_DEFINED_ = 0 // stddef.h:268:1:
D_WCHAR_T_H = 0 // stddef.h:270:1:
D_XOPEN_IOV_MAX = 16 // xopen_lim.h:62:1:
D_XOPEN_LIM_H = 1 // xopen_lim.h:30:1:
D_XOPEN_SOURCE = 700 // features.h:214:1:
D_XOPEN_SOURCE_EXTENDED = 1 // features.h:216:1:
Dcbit_cntrl = 288 // pcre2_internal.h:573:1:
Dcbit_digit = 64 // pcre2_internal.h:566:1:
Dcbit_graph = 192 // pcre2_internal.h:570:1:
Dcbit_length = 320 // pcre2_internal.h:574:1:
Dcbit_lower = 128 // pcre2_internal.h:568:1:
Dcbit_print = 224 // pcre2_internal.h:571:1:
Dcbit_punct = 256 // pcre2_internal.h:572:1:
Dcbit_space = 0 // pcre2_internal.h:564:1:
Dcbit_upper = 96 // pcre2_internal.h:567:1:
Dcbit_word = 160 // pcre2_internal.h:569:1:
Dcbit_xdigit = 32 // pcre2_internal.h:565:1:
Dcbits_offset = 512 // pcre2_internal.h:591:1:
Dctype_digit = 0x08 // pcre2_internal.h:583:1:
Dctype_lcletter = 0x04 // pcre2_internal.h:582:1:
Dctype_letter = 0x02 // pcre2_internal.h:581:1:
Dctype_space = 0x01 // pcre2_internal.h:580:1:
Dctype_word = 0x10 // pcre2_internal.h:584:1:
Dctypes_offset = 832 // pcre2_internal.h:592:1:
Dfcc_offset = 256 // pcre2_internal.h:590:1:
Dlcc_offset = 0 // pcre2_internal.h:589:1:
Dlinux = 1 // <predefined>:243:1:
Ducd_boolprop_sets_item_size = 2 // pcre2_ucp.h:164:1:
Ducd_script_sets_item_size = 3 // pcre2_ucp.h:390:1:
Dunix = 1 // <predefined>:184:1:
DCOMPILE_WORK_SIZE = 6000 // pcre2_compile.c:166:1:
DESCAPES_FIRST = 48 // pcre2_compile.c:507:1:
DESCAPES_LAST = 122 // pcre2_compile.c:508:1:
DGI_FIXED_LENGTH_MASK = 0x0000ffff // pcre2_compile.c:402:1:
DGI_NOT_FIXED_LENGTH = 0x40000000 // pcre2_compile.c:401:1:
DGI_SET_FIXED_LENGTH = 0x80000000 // pcre2_compile.c:400:1:
DGROUPINFO_DEFAULT_SIZE = 256 // pcre2_compile.c:175:1:
DMAX_GROUP_NUMBER = 65535 // pcre2_compile.c:147:1:
DMAX_REPEAT_COUNT = 65535 // pcre2_compile.c:148:1:
DMETA_ACCEPT = 0x802a0000 // pcre2_compile.c:266:1:
DMETA_ALT = 0x80010000 // pcre2_compile.c:213:1:
DMETA_ASTERISK = 0x80340000 // pcre2_compile.c:279:1:
DMETA_ASTERISK_PLUS = 0x80350000 // pcre2_compile.c:280:1:
DMETA_ASTERISK_QUERY = 0x80360000 // pcre2_compile.c:281:1:
DMETA_ATOMIC = 0x80020000 // pcre2_compile.c:214:1:
DMETA_ATOMIC_SCRIPT_RUN = 0x8fff0000 // pcre2_compile.c:300:1:
DMETA_BACKREF = 0x80030000 // pcre2_compile.c:215:1:
DMETA_BACKREF_BYNAME = 0x80040000 // pcre2_compile.c:216:1:
DMETA_BIGVALUE = 0x80050000 // pcre2_compile.c:217:1:
DMETA_CALLOUT_NUMBER = 0x80060000 // pcre2_compile.c:218:1:
DMETA_CALLOUT_STRING = 0x80070000 // pcre2_compile.c:219:1:
DMETA_CAPTURE = 0x80080000 // pcre2_compile.c:220:1:
DMETA_CIRCUMFLEX = 0x80090000 // pcre2_compile.c:221:1:
DMETA_CLASS = 0x800a0000 // pcre2_compile.c:222:1:
DMETA_CLASS_EMPTY = 0x800b0000 // pcre2_compile.c:223:1:
DMETA_CLASS_EMPTY_NOT = 0x800c0000 // pcre2_compile.c:224:1:
DMETA_CLASS_END = 0x800d0000 // pcre2_compile.c:225:1:
DMETA_CLASS_NOT = 0x800e0000 // pcre2_compile.c:226:1:
DMETA_COMMIT = 0x802c0000 // pcre2_compile.c:268:1:
DMETA_COMMIT_ARG = 0x802d0000 // pcre2_compile.c:269:1:
DMETA_COND_ASSERT = 0x800f0000 // pcre2_compile.c:227:1:
DMETA_COND_DEFINE = 0x80100000 // pcre2_compile.c:228:1:
DMETA_COND_NAME = 0x80110000 // pcre2_compile.c:229:1:
DMETA_COND_NUMBER = 0x80120000 // pcre2_compile.c:230:1:
DMETA_COND_RNAME = 0x80130000 // pcre2_compile.c:231:1:
DMETA_COND_RNUMBER = 0x80140000 // pcre2_compile.c:232:1:
DMETA_COND_VERSION = 0x80150000 // pcre2_compile.c:233:1:
DMETA_DOLLAR = 0x80160000 // pcre2_compile.c:234:1:
DMETA_DOT = 0x80170000 // pcre2_compile.c:235:1:
DMETA_END = 0x80000000 // pcre2_compile.c:211:1:
DMETA_ESCAPE = 0x80180000 // pcre2_compile.c:236:1:
DMETA_FAIL = 0x802b0000 // pcre2_compile.c:267:1:
DMETA_FIRST_QUANTIFIER = 2150891520 // pcre2_compile.c:292:1:
DMETA_KET = 0x80190000 // pcre2_compile.c:237:1:
DMETA_LAST_QUANTIFIER = 2151612416 // pcre2_compile.c:293:1:
DMETA_LOOKAHEAD = 0x80230000 // pcre2_compile.c:251:1:
DMETA_LOOKAHEADNOT = 0x80240000 // pcre2_compile.c:252:1:
DMETA_LOOKAHEAD_NA = 0x80270000 // pcre2_compile.c:258:1:
DMETA_LOOKBEHIND = 0x80250000 // pcre2_compile.c:253:1:
DMETA_LOOKBEHINDNOT = 0x80260000 // pcre2_compile.c:254:1:
DMETA_LOOKBEHIND_NA = 0x80280000 // pcre2_compile.c:259:1:
DMETA_MARK = 0x80290000 // pcre2_compile.c:265:1:
DMETA_MINMAX = 0x803d0000 // pcre2_compile.c:288:1:
DMETA_MINMAX_PLUS = 0x803e0000 // pcre2_compile.c:289:1:
DMETA_MINMAX_QUERY = 0x803f0000 // pcre2_compile.c:290:1:
DMETA_NOCAPTURE = 0x801a0000 // pcre2_compile.c:238:1:
DMETA_OPTIONS = 0x801b0000 // pcre2_compile.c:239:1:
DMETA_PLUS = 0x80370000 // pcre2_compile.c:282:1:
DMETA_PLUS_PLUS = 0x80380000 // pcre2_compile.c:283:1:
DMETA_PLUS_QUERY = 0x80390000 // pcre2_compile.c:284:1:
DMETA_POSIX = 0x801c0000 // pcre2_compile.c:240:1:
DMETA_POSIX_NEG = 0x801d0000 // pcre2_compile.c:241:1:
DMETA_PRUNE = 0x802e0000 // pcre2_compile.c:270:1:
DMETA_PRUNE_ARG = 0x802f0000 // pcre2_compile.c:271:1:
DMETA_QUERY = 0x803a0000 // pcre2_compile.c:285:1:
DMETA_QUERY_PLUS = 0x803b0000 // pcre2_compile.c:286:1:
DMETA_QUERY_QUERY = 0x803c0000 // pcre2_compile.c:287:1:
DMETA_RANGE_ESCAPED = 0x801e0000 // pcre2_compile.c:242:1:
DMETA_RANGE_LITERAL = 0x801f0000 // pcre2_compile.c:243:1:
DMETA_RECURSE = 0x80200000 // pcre2_compile.c:244:1:
DMETA_RECURSE_BYNAME = 0x80210000 // pcre2_compile.c:245:1:
DMETA_SCRIPT_RUN = 0x80220000 // pcre2_compile.c:246:1:
DMETA_SKIP = 0x80300000 // pcre2_compile.c:272:1:
DMETA_SKIP_ARG = 0x80310000 // pcre2_compile.c:273:1:
DMETA_THEN = 0x80320000 // pcre2_compile.c:274:1:
DMETA_THEN_ARG = 0x80330000 // pcre2_compile.c:275:1:
DNAMED_GROUP_LIST_SIZE = 20 // pcre2_compile.c:187:1:
DNSF_ATOMICSR = 0x0004 // pcre2_compile.c:2565:1:
DNSF_CONDASSERT = 0x0002 // pcre2_compile.c:2564:1:
DNSF_RESET = 0x0001 // pcre2_compile.c:2563:1:
DOFLOW_MAX = 2147483627 // pcre2_compile.c:200:1:
DPARSED_PATTERN_DEFAULT_SIZE = 1024 // pcre2_compile.c:193:1:
DPARSE_TRACKED_OPTIONS = 17048808 // pcre2_compile.c:2572:1:
DPC_GRAPH = 8 // pcre2_compile.c:709:1:
DPC_PRINT = 9 // pcre2_compile.c:710:1:
DPC_PUNCT = 10 // pcre2_compile.c:711:1:
DPUBLIC_COMPILE_EXTRA_OPTIONS = 127 // pcre2_compile.c:784:1:
DPUBLIC_COMPILE_OPTIONS = 3892314111 // pcre2_compile.c:772:1:
DPUBLIC_LITERAL_COMPILE_EXTRA_OPTIONS = 12 // pcre2_compile.c:781:1:
DPUBLIC_LITERAL_COMPILE_OPTIONS = 3867738380 // pcre2_compile.c:767:1:
DREPEAT_UNLIMITED = 65536 // pcre2_compile.c:149:1:
DREQ_CASELESS = 0x00000001 // pcre2_compile.c:395:1:
DREQ_NONE = 0xfffffffe // pcre2_compile.c:394:1:
DREQ_UNSET = 0xffffffff // pcre2_compile.c:393:1:
DREQ_VARY = 0x00000002 // pcre2_compile.c:396:1:
DRSCAN_CACHE_SIZE = 8 // pcre2_compile.c:10359:1:
DSIZEOFFSET = 2 // pcre2_compile.c:108:1:
DWORK_SIZE_SAFETY_MARGIN = 100 // pcre2_compile.c:180:1:
DALL_OPTIONS = 127 // pcre2_convert.c:51:1:
DDUMMY_BUFFER_SIZE = 100 // pcre2_convert.c:56:1:
DTYPE_OPTIONS = 28 // pcre2_convert.c:48:1:
DOP_ANYNL_EXTRA = 340 // pcre2_dfa_match.c:103:1:
DOP_EXTUNI_EXTRA = 320 // pcre2_dfa_match.c:102:1:
DOP_HSPACE_EXTRA = 360 // pcre2_dfa_match.c:104:1:
DOP_PROP_EXTRA = 300 // pcre2_dfa_match.c:101:1:
DOP_VSPACE_EXTRA = 380 // pcre2_dfa_match.c:105:1:
DPUBLIC_DFA_MATCH_OPTIONS = 3758113023 // pcre2_dfa_match.c:85:1:
DRWS_RSIZE = 1000 // pcre2_dfa_match.c:318:1:
DINCLUDED_FROM_PCRE2_JIT_COMPILE = 0 // pcre2_jit_compile.c:14504:1:
DPUBLIC_JIT_COMPILE_OPTIONS = 263 // pcre2_jit_compile.c:14378:1:
DGF_CAPTURE = 0x00010000 // pcre2_match.c:106:1:
DGF_CONDASSERT = 0x00030000 // pcre2_match.c:108:1:
DGF_NOCAPTURE = 0x00020000 // pcre2_match.c:107:1:
DGF_RECURSE = 0x00040000 // pcre2_match.c:109:1:
DMATCH_ACCEPT = -999 // pcre2_match.c:88:1:
DMATCH_BACKTRACK_MAX = -993 // pcre2_match.c:97:1:
DMATCH_BACKTRACK_MIN = -997 // pcre2_match.c:98:1:
DMATCH_COMMIT = -997 // pcre2_match.c:92:1:
DMATCH_KETRPOS = -998 // pcre2_match.c:89:1:
DMATCH_MATCH = 1 // pcre2_match.c:82:1:
DMATCH_NOMATCH = 0 // pcre2_match.c:83:1:
DMATCH_PRUNE = -996 // pcre2_match.c:93:1:
DMATCH_SKIP = -995 // pcre2_match.c:94:1:
DMATCH_SKIP_ARG = -994 // pcre2_match.c:95:1:
DMATCH_THEN = -993 // pcre2_match.c:96:1:
DPUBLIC_JIT_MATCH_OPTIONS = 1073758271 // pcre2_match.c:74:1:
DPUBLIC_MATCH_OPTIONS = 3758121023 // pcre2_match.c:69:1:
DRECURSE_UNSET = 0xffffffff // pcre2_match.c:65:1:
DFOUND_BOPOMOFO = 1 // pcre2_script_run.c:199:1:
DFOUND_HANGUL = 8 // pcre2_script_run.c:202:1:
DFOUND_HIRAGANA = 2 // pcre2_script_run.c:200:1:
DFOUND_KATAKANA = 4 // pcre2_script_run.c:201:1:
DSERIALIZED_DATA_MAGIC = 0x50523253 // pcre2_serialize.c:54:1:
DSERIALIZED_DATA_VERSION = 2621450 // pcre2_serialize.c:59:1:
DMAX_CACHE_BACKREF = 128 // pcre2_study.c:53:1:
DPTR_STACK_SIZE = 20 // pcre2_substitute.c:48:1:
DSUBSTITUTE_OPTIONS = 237312 // pcre2_substitute.c:50:1:
)
// Seconds since the Epoch, visible to user code when time_t is too
// narrow only for consistency with the old way of widening too-narrow
// types. User code should never use __time64_t.
// These are all the characteristics of characters.
// If there get to be more than 16 distinct characteristics,
// many things must be changed that use `unsigned short int's.
//
// The characteristics are stored always in network byte order (big
// endian). We define the bit value interpretations here dependent on the
// machine's byte order.
// Endian macros for string.h functions
// Copyright (C) 1992-2022 Free Software Foundation, Inc.
// This file is part of the GNU C Library.
//
// The GNU C Library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public
// License as published by the Free Software Foundation; either
// version 2.1 of the License, or (at your option) any later version.
//
// The GNU C Library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
// Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public
// License along with the GNU C Library; if not, see
// <http://www.gnu.org/licenses/>.
// Definitions for byte order, according to significance of bytes,
// from low addresses to high addresses. The value is what you get by
// putting '4' in the most significant byte, '3' in the second most
// significant byte, '2' in the second least significant byte, and '1'
// in the least significant byte, and then writing down one digit for
// each byte, starting with the byte at the lowest address at the left,
// and proceeding to the byte with the highest address at the right.
// This file defines `__BYTE_ORDER' for the particular machine.
// i386/x86_64 are little-endian.
// Some machines may need to use a different endianness for floating point
// values.
const ( /* ctype.h:46:1: */
_ISupper = 256 // UPPERCASE.
_ISlower = 512 // lowercase.
_ISalpha = 1024 // Alphabetic.
_ISdigit = 2048 // Numeric.
_ISxdigit = 4096 // Hexadecimal numeric.
_ISspace = 8192 // Whitespace.
_ISprint = 16384 // Printing.
_ISgraph = 32768 // Graphical.
_ISblank = 1 // Blank (usually SPC and TAB).
_IScntrl = 2 // Control character.
_ISpunct = 4 // Punctuation.
_ISalnum = 8
)
// Options that are changeable within the pattern must be tracked during
// parsing. Some (e.g. PCRE2_EXTENDED) are implemented entirely during parsing,
// but all must be tracked so that META_OPTIONS items set the correct values for
// the main compiling phase.
// States used for analyzing ranges in character classes. The two OK values
// must be last.
const ( /* pcre2_compile.c:2579:1: */
RANGE_NO = 0
RANGE_OK_ESCAPED = 2
RANGE_OK_LITERAL = 3
)
// Types for skipping parts of a parsed pattern.
const ( /* pcre2_compile.c:375:1: */
PSKIP_ALT = 0
PSKIP_CLASS = 1
PSKIP_KET = 2
)
// Masks for checking option settings. When PCRE2_LITERAL is set, only a subset
// are allowed.
// Compile time error code numbers. They are given names so that they can more
// easily be tracked. When a new number is added, the tables called eint1 and
// eint2 in pcre2posix.c may need to be updated, and a new error text must be
// added to compile_error_texts in pcre2_error.c. Also, the error codes in
// pcre2.h.in must be updated - their values are exactly 100 greater than these
// values.
const ( /* pcre2_compile.c:797:1: */
ERR0 = 100
ERR1 = 101
ERR2 = 102
ERR3 = 103
ERR4 = 104
ERR5 = 105
ERR6 = 106
ERR7 = 107
ERR8 = 108
ERR9 = 109
ERR10 = 110
ERR11 = 111
ERR12 = 112
ERR13 = 113
ERR14 = 114
ERR15 = 115
ERR16 = 116
ERR17 = 117
ERR18 = 118
ERR19 = 119
ERR20 = 120
ERR21 = 121
ERR22 = 122
ERR23 = 123
ERR24 = 124
ERR25 = 125
ERR26 = 126
ERR27 = 127
ERR28 = 128
ERR29 = 129
ERR30 = 130
ERR31 = 131
ERR32 = 132
ERR33 = 133
ERR34 = 134
ERR35 = 135
ERR36 = 136
ERR37 = 137
ERR38 = 138
ERR39 = 139
ERR40 = 140
ERR41 = 141
ERR42 = 142
ERR43 = 143
ERR44 = 144
ERR45 = 145
ERR46 = 146
ERR47 = 147
ERR48 = 148
ERR49 = 149
ERR50 = 150
ERR51 = 151
ERR52 = 152
ERR53 = 153
ERR54 = 154
ERR55 = 155
ERR56 = 156
ERR57 = 157
ERR58 = 158
ERR59 = 159
ERR60 = 160
ERR61 = 161
ERR62 = 162
ERR63 = 163
ERR64 = 164
ERR65 = 165
ERR66 = 166
ERR67 = 167
ERR68 = 168
ERR69 = 169
ERR70 = 170
ERR71 = 171
ERR72 = 172
ERR73 = 173
ERR74 = 174
ERR75 = 175
ERR76 = 176
ERR77 = 177
ERR78 = 178
ERR79 = 179
ERR80 = 180
ERR81 = 181
ERR82 = 182
ERR83 = 183
ERR84 = 184
ERR85 = 185
ERR86 = 186
ERR87 = 187
ERR88 = 188
ERR89 = 189
ERR90 = 190
ERR91 = 191
ERR92 = 192
ERR93 = 193
ERR94 = 194
ERR95 = 195
ERR96 = 196
ERR97 = 197
ERR98 = 198
ERR99 = 199
)
// This is a table of start-of-pattern options such as (*UTF) and settings such
// as (*LIMIT_MATCH=nnnn) and (*CRLF). For completeness and backward
// compatibility, (*UTFn) is supported in the relevant libraries, but (*UTF) is
// generic and always supported.
const ( /* pcre2_compile.c:814:1: */
PSO_OPT = 0 // Value is an option bit
PSO_FLG = 1 // Value is a flag bit
PSO_NL = 2 // Value is a newline type
PSO_BSR = 3 // Value is a \R type
PSO_LIMH = 4 // Read integer value for heap limit
PSO_LIMM = 5 // Read integer value for match limit
PSO_LIMD = 6
)
// This function is needed only when memmove() is not available.
// End of pcre2_internal.h
// Generated pattern fragments
// States for range and POSIX processing
const ( /* pcre2_convert.c:70:1: */
RANGE_NOT_STARTED = 0
RANGE_STARTING = 1
)
const ( /* pcre2_convert.c:71:1: */
POSIX_START_REGEX = 0
POSIX_ANCHORED = 1
POSIX_NOT_BRACKET = 2
POSIX_CLASS_NOT_STARTED = 3
POSIX_CLASS_STARTING = 4
POSIX_CLASS_STARTED = 5
) // pcre2_jit_match()
// Values for the flags field in a match data block.
// Magic number to provide a small check against being handed junk.
// The maximum remaining length of subject we are prepared to search for a
// req_unit match from an anchored pattern. In 8-bit mode, memchr() is used and is
// much faster than the search loop that has to be used in 16-bit and 32-bit
// modes.
// Offsets for the bitmap tables in the cbits set of tables. Each table
// contains a set of bits for a class map. Some classes are built by combining
// these tables.
// Bit definitions for entries in the ctypes table. Do not change these values
// without checking pcre2_jit_compile.c, which has an assertion to ensure that
// ctype_word has the value 16.
// Offsets of the various tables from the base tables pointer, and
// total length of the tables.
// -------------------- Character and string names ------------------------
// If PCRE2 is to support UTF-8 on EBCDIC platforms, we cannot use normal
// character constants like '*' because the compiler would emit their EBCDIC code,
// which is different from their ASCII/UTF-8 code. Instead we define macros for
// the characters so that they always use the ASCII/UTF-8 code when UTF-8 support
// is enabled. When UTF-8 support is not enabled, the definitions use character
// literals. Both character and string versions of each character are needed, and
// there are some longer strings as well.
//
// This means that, on EBCDIC platforms, the PCRE2 library can handle either
// EBCDIC, or UTF-8, but not both. To support both in the same compiled library
// would need different lookups depending on whether PCRE2_UTF was set or not.
// This would make it impossible to use characters in switch/case statements,
// which would reduce performance. For a theoretical use (which nobody has asked
// for) in a minority area (EBCDIC platforms), this is not sensible. Any
// application that did need both could compile two versions of the library, using
// macros to give the functions distinct names.
// UTF-8 support is enabled; always use UTF-8 (=ASCII) character codes. This
// works in both modes non-EBCDIC platforms, and on EBCDIC platforms in UTF-8 mode
// only.
// -------------------- End of character and string names -------------------
// -------------------- Definitions for compiled patterns -------------------
// Codes for different types of Unicode property. If these definitions are
// changed, the autopossessifying table in pcre2_auto_possess.c must be updated to
// match.
// The following special properties are used only in XCLASS items, when POSIX
// classes are specified and PCRE2_UCP is set - in other words, for Unicode
// handling of these classes. They are not available via the \p or \P escapes like
// those in the above list, and so they do not take part in the autopossessifying
// table.
// This value is used when parsing \p and \P escapes to indicate that neither
// \p{script:...} nor \p{scx:...} has been encountered.
// Flag bits and data types for the extended class (OP_XCLASS) for classes that
// contain characters with values greater than 255.
// These are escaped items that aren't just an encoding of a particular data
// value such as \n. They must have non-zero values, as check_escape() returns 0
// for a data character. In the escapes[] table in pcre2_compile.c their values
// are negated in order to distinguish them from data values.
//
// They must appear here in the same order as in the opcode definitions below, up
// to ESC_z. There's a dummy for OP_ALLANY because it corresponds to "." in DOTALL
// mode rather than an escape sequence. It is also used for [^] in JavaScript
// compatibility mode, and for \C in non-utf mode. In non-DOTALL mode, "." behaves
// like \N.
//
// Negative numbers are used to encode a backreference (\1, \2, \3, etc.) in
// check_escape(). There are tests in the code for an escape greater than ESC_b
// and less than ESC_Z to detect the types that may be repeated. These are the
// types that consume characters. If any new escapes are put in between that don't
// consume a character, that code will have to change.
const ( /* pcre2_internal.h:1337:1: */
ESC_A = 1
ESC_G = 2
ESC_K = 3
ESC_B = 4
ESC_b = 5
ESC_D = 6
ESC_d = 7
ESC_S = 8
ESC_s = 9
ESC_W = 10
ESC_w = 11
ESC_N = 12
ESC_dum = 13
ESC_C = 14
ESC_P = 15
ESC_p = 16
ESC_R = 17
ESC_H = 18
ESC_h = 19
ESC_V = 20
ESC_v = 21
ESC_X = 22
ESC_Z = 23
ESC_z = 24
ESC_E = 25
ESC_Q = 26
ESC_g = 27
ESC_k = 28
)
//********************* Opcode definitions *****************
//***** NOTE NOTE NOTE ******
//
// Starting from 1 (i.e. after OP_END), the values up to OP_EOD must correspond in
// order to the list of escapes immediately above. Furthermore, values up to
// OP_DOLLM must not be changed without adjusting the table called autoposstab in
// pcre2_auto_possess.c.
//
// Whenever this list is updated, the two macro definitions that follow must be
// updated to match. The possessification table called "opcode_possessify" in
// pcre2_compile.c must also be updated, and also the tables called "coptable"
// and "poptable" in pcre2_dfa_match.c.
//
// ****** NOTE NOTE NOTE *****
// The values between FIRST_AUTOTAB_OP and LAST_AUTOTAB_RIGHT_OP, inclusive,
// are used in a table for deciding whether a repeated character type can be
// auto-possessified.
const ( /* pcre2_internal.h:1368:1: */
OP_END = 0 // 0 End of pattern
// Values corresponding to backslashed metacharacters
OP_SOD = 1 // 1 Start of data: \A
OP_SOM = 2 // 2 Start of match (subject + offset): \G
OP_SET_SOM = 3 // 3 Set start of match (\K)
OP_NOT_WORD_BOUNDARY = 4 // 4 \B
OP_WORD_BOUNDARY = 5 // 5 \b
OP_NOT_DIGIT = 6 // 6 \D
OP_DIGIT = 7 // 7 \d
OP_NOT_WHITESPACE = 8 // 8 \S
OP_WHITESPACE = 9 // 9 \s
OP_NOT_WORDCHAR = 10 // 10 \W
OP_WORDCHAR = 11 // 11 \w
OP_ANY = 12 // 12 Match any character except newline (\N)
OP_ALLANY = 13 // 13 Match any character
OP_ANYBYTE = 14 // 14 Match any byte (\C); different to OP_ANY for UTF-8
OP_NOTPROP = 15 // 15 \P (not Unicode property)
OP_PROP = 16 // 16 \p (Unicode property)
OP_ANYNL = 17 // 17 \R (any newline sequence)
OP_NOT_HSPACE = 18 // 18 \H (not horizontal whitespace)
OP_HSPACE = 19 // 19 \h (horizontal whitespace)
OP_NOT_VSPACE = 20 // 20 \V (not vertical whitespace)
OP_VSPACE = 21 // 21 \v (vertical whitespace)
OP_EXTUNI = 22 // 22 \X (extended Unicode sequence
OP_EODN = 23 // 23 End of data or \n at end of data (\Z)
OP_EOD = 24 // 24 End of data (\z)
// Line end assertions
OP_DOLL = 25 // 25 End of line - not multiline
OP_DOLLM = 26 // 26 End of line - multiline
OP_CIRC = 27 // 27 Start of line - not multiline
OP_CIRCM = 28 // 28 Start of line - multiline
// Single characters; caseful must precede the caseless ones, and these
// must remain in this order, and adjacent.
OP_CHAR = 29 // 29 Match one character, casefully
OP_CHARI = 30 // 30 Match one character, caselessly
OP_NOT = 31 // 31 Match one character, not the given one, casefully
OP_NOTI = 32 // 32 Match one character, not the given one, caselessly
// The following sets of 13 opcodes must always be kept in step because
// the offset from the first one is used to generate the others.
// Repeated characters; caseful must precede the caseless ones
OP_STAR = 33 // 33 The maximizing and minimizing versions of
OP_MINSTAR = 34 // 34 these six opcodes must come in pairs, with
OP_PLUS = 35 // 35 the minimizing one second.
OP_MINPLUS = 36 // 36
OP_QUERY = 37 // 37
OP_MINQUERY = 38 // 38
OP_UPTO = 39 // 39 From 0 to n matches of one character, caseful
OP_MINUPTO = 40 // 40
OP_EXACT = 41 // 41 Exactly n matches
OP_POSSTAR = 42 // 42 Possessified star, caseful
OP_POSPLUS = 43 // 43 Possessified plus, caseful
OP_POSQUERY = 44 // 44 Posesssified query, caseful
OP_POSUPTO = 45 // 45 Possessified upto, caseful
// Repeated characters; caseless must follow the caseful ones
OP_STARI = 46 // 46
OP_MINSTARI = 47 // 47
OP_PLUSI = 48 // 48
OP_MINPLUSI = 49 // 49
OP_QUERYI = 50 // 50
OP_MINQUERYI = 51 // 51
OP_UPTOI = 52 // 52 From 0 to n matches of one character, caseless
OP_MINUPTOI = 53 // 53
OP_EXACTI = 54 // 54
OP_POSSTARI = 55 // 55 Possessified star, caseless
OP_POSPLUSI = 56 // 56 Possessified plus, caseless
OP_POSQUERYI = 57 // 57 Posesssified query, caseless
OP_POSUPTOI = 58 // 58 Possessified upto, caseless
// The negated ones must follow the non-negated ones, and match them
// Negated repeated character, caseful; must precede the caseless ones
OP_NOTSTAR = 59 // 59 The maximizing and minimizing versions of
OP_NOTMINSTAR = 60 // 60 these six opcodes must come in pairs, with
OP_NOTPLUS = 61 // 61 the minimizing one second. They must be in
OP_NOTMINPLUS = 62 // 62 exactly the same order as those above.
OP_NOTQUERY = 63 // 63
OP_NOTMINQUERY = 64 // 64
OP_NOTUPTO = 65 // 65 From 0 to n matches, caseful
OP_NOTMINUPTO = 66 // 66
OP_NOTEXACT = 67 // 67 Exactly n matches
OP_NOTPOSSTAR = 68 // 68 Possessified versions, caseful
OP_NOTPOSPLUS = 69 // 69
OP_NOTPOSQUERY = 70 // 70
OP_NOTPOSUPTO = 71 // 71
// Negated repeated character, caseless; must follow the caseful ones
OP_NOTSTARI = 72 // 72
OP_NOTMINSTARI = 73 // 73
OP_NOTPLUSI = 74 // 74
OP_NOTMINPLUSI = 75 // 75
OP_NOTQUERYI = 76 // 76
OP_NOTMINQUERYI = 77 // 77
OP_NOTUPTOI = 78 // 78 From 0 to n matches, caseless
OP_NOTMINUPTOI = 79 // 79
OP_NOTEXACTI = 80 // 80 Exactly n matches
OP_NOTPOSSTARI = 81 // 81 Possessified versions, caseless
OP_NOTPOSPLUSI = 82 // 82
OP_NOTPOSQUERYI = 83 // 83
OP_NOTPOSUPTOI = 84 // 84
// Character types
OP_TYPESTAR = 85 // 85 The maximizing and minimizing versions of
OP_TYPEMINSTAR = 86 // 86 these six opcodes must come in pairs, with
OP_TYPEPLUS = 87 // 87 the minimizing one second. These codes must
OP_TYPEMINPLUS = 88 // 88 be in exactly the same order as those above.
OP_TYPEQUERY = 89 // 89
OP_TYPEMINQUERY = 90 // 90
OP_TYPEUPTO = 91 // 91 From 0 to n matches
OP_TYPEMINUPTO = 92 // 92
OP_TYPEEXACT = 93 // 93 Exactly n matches
OP_TYPEPOSSTAR = 94 // 94 Possessified versions
OP_TYPEPOSPLUS = 95 // 95
OP_TYPEPOSQUERY = 96 // 96
OP_TYPEPOSUPTO = 97 // 97
// These are used for character classes and back references; only the
// first six are the same as the sets above.
OP_CRSTAR = 98 // 98 The maximizing and minimizing versions of
OP_CRMINSTAR = 99 // 99 all these opcodes must come in pairs, with
OP_CRPLUS = 100 // 100 the minimizing one second. These codes must
OP_CRMINPLUS = 101 // 101 be in exactly the same order as those above.
OP_CRQUERY = 102 // 102
OP_CRMINQUERY = 103 // 103
OP_CRRANGE = 104 // 104 These are different to the three sets above.
OP_CRMINRANGE = 105 // 105
OP_CRPOSSTAR = 106 // 106 Possessified versions
OP_CRPOSPLUS = 107 // 107
OP_CRPOSQUERY = 108 // 108
OP_CRPOSRANGE = 109 // 109
// End of quantifier opcodes
OP_CLASS = 110 // 110 Match a character class, chars < 256 only
OP_NCLASS = 111 // 111 Same, but the bitmap was created from a negative
// class - the difference is relevant only when a
// character > 255 is encountered.
OP_XCLASS = 112 // 112 Extended class for handling > 255 chars within the
// class. This does both positive and negative.
OP_REF = 113 // 113 Match a back reference, casefully
OP_REFI = 114 // 114 Match a back reference, caselessly
OP_DNREF = 115 // 115 Match a duplicate name backref, casefully
OP_DNREFI = 116 // 116 Match a duplicate name backref, caselessly
OP_RECURSE = 117 // 117 Match a numbered subpattern (possibly recursive)
OP_CALLOUT = 118 // 118 Call out to external function if provided
OP_CALLOUT_STR = 119 // 119 Call out with string argument
OP_ALT = 120 // 120 Start of alternation
OP_KET = 121 // 121 End of group that doesn't have an unbounded repeat
OP_KETRMAX = 122 // 122 These two must remain together and in this
OP_KETRMIN = 123 // 123 order. They are for groups the repeat for ever.
OP_KETRPOS = 124 // 124 Possessive unlimited repeat.
// The assertions must come before BRA, CBRA, ONCE, and COND.
OP_REVERSE = 125 // 125 Move pointer back - used in lookbehind assertions
OP_ASSERT = 126 // 126 Positive lookahead
OP_ASSERT_NOT = 127 // 127 Negative lookahead
OP_ASSERTBACK = 128 // 128 Positive lookbehind
OP_ASSERTBACK_NOT = 129 // 129 Negative lookbehind
OP_ASSERT_NA = 130 // 130 Positive non-atomic lookahead
OP_ASSERTBACK_NA = 131 // 131 Positive non-atomic lookbehind
// ONCE, SCRIPT_RUN, BRA, BRAPOS, CBRA, CBRAPOS, and COND must come
// immediately after the assertions, with ONCE first, as there's a test for >=
// ONCE for a subpattern that isn't an assertion. The POS versions must
// immediately follow the non-POS versions in each case.
OP_ONCE = 132 // 132 Atomic group, contains captures
OP_SCRIPT_RUN = 133 // 133 Non-capture, but check characters' scripts
OP_BRA = 134 // 134 Start of non-capturing bracket
OP_BRAPOS = 135 // 135 Ditto, with unlimited, possessive repeat
OP_CBRA = 136 // 136 Start of capturing bracket
OP_CBRAPOS = 137 // 137 Ditto, with unlimited, possessive repeat
OP_COND = 138 // 138 Conditional group
// These five must follow the previous five, in the same order. There's a
// check for >= SBRA to distinguish the two sets.
OP_SBRA = 139 // 139 Start of non-capturing bracket, check empty
OP_SBRAPOS = 140 // 149 Ditto, with unlimited, possessive repeat
OP_SCBRA = 141 // 141 Start of capturing bracket, check empty
OP_SCBRAPOS = 142 // 142 Ditto, with unlimited, possessive repeat
OP_SCOND = 143 // 143 Conditional group, check empty
// The next two pairs must (respectively) be kept together.
OP_CREF = 144 // 144 Used to hold a capture number as condition
OP_DNCREF = 145 // 145 Used to point to duplicate names as a condition
OP_RREF = 146 // 146 Used to hold a recursion number as condition
OP_DNRREF = 147 // 147 Used to point to duplicate names as a condition
OP_FALSE = 148 // 148 Always false (used by DEFINE and VERSION)
OP_TRUE = 149 // 149 Always true (used by VERSION)
OP_BRAZERO = 150 // 150 These two must remain together and in this
OP_BRAMINZERO = 151 // 151 order.
OP_BRAPOSZERO = 152 // 152
// These are backtracking control verbs
OP_MARK = 153 // 153 always has an argument
OP_PRUNE = 154 // 154
OP_PRUNE_ARG = 155 // 155 same, but with argument
OP_SKIP = 156 // 156
OP_SKIP_ARG = 157 // 157 same, but with argument
OP_THEN = 158 // 158
OP_THEN_ARG = 159 // 159 same, but with argument
OP_COMMIT = 160 // 160
OP_COMMIT_ARG = 161 // 161 same, but with argument
// These are forced failure and success verbs. FAIL and ACCEPT do accept an
// argument, but these cases can be compiled as, for example, (*MARK:X)(*FAIL)
// without the need for a special opcode.
OP_FAIL = 162 // 162
OP_ACCEPT = 163 // 163
OP_ASSERT_ACCEPT = 164 // 164 Used inside assertions
OP_CLOSE = 165 // 165 Used before OP_ACCEPT to close open captures
// This is used to skip a subpattern with a {0} quantifier
OP_SKIPZERO = 166 // 166
// This is used to identify a DEFINE group during compilation so that it can
// be checked for having only one branch. It is changed to OP_FALSE before
// compilation finishes.
OP_DEFINE = 167 // 167
// This is not an opcode, but is used to check that tables indexed by opcode
// are the correct length, in order to catch updating errors - there have been
// some in the past.
OP_TABLE_LENGTH = 168
)
// Size of entries in ucd_script_sets[]
// End of pcre2_ucp.h
// When PCRE2 is compiled as a C++ library, the subject pointer can be replaced
// with a custom type. This makes it possible, for example, to allow pcre2_match()
// to process subject strings that are discontinuous by using a smart pointer
// class. It must always be possible to inspect all of the subject string in
// pcre2_match() because of the way it backtracks.
// WARNING: This is as yet untested for PCRE2.
// When checking for integer overflow in pcre2_compile(), we need to handle
// large integers. If a 64-bit integer type is available, we can use that.
// Otherwise we have to cast to double, which of course requires floating point
// arithmetic. Handle this by defining a macro for the appropriate type.
// External (in the C sense) functions and tables that are private to the
// libraries are always referenced using the PRIV macro. This makes it possible
// for pcre2test.c to include some of the source files from the libraries using a
// different PRIV definition to avoid name clashes. It also makes it clear in the
// code that a non-static object is being referenced.
// When compiling for use with the Virtual Pascal compiler, these functions
// need to have their names changed. PCRE2 must be compiled with the -DVPCOMPAT
// option on the command line.
// Otherwise, to cope with SunOS4 and other systems that lack memmove(), define
// a macro that calls an emulating function.
// This is an unsigned int value that no UTF character can ever have, as
// Unicode doesn't go beyond 0x0010ffff.
// This is the largest valid UTF/Unicode code point.
// Compile-time positive error numbers (all except UTF errors, which are
// negative) start at this value. It should probably never be changed, in case
// some application is checking for specific numbers. There is a copy of this
// #define in pcre2posix.c (which now no longer includes this file). Ideally, a
// way of having a single definition should be found, but as the number is
// unlikely to change, this is not a pressing issue. The original reason for
// having a base other than 0 was to keep the absolute values of compile-time and
// run-time error numbers numerically different, but in the event the code does
// not rely on this.
// The initial frames vector for remembering backtracking points in
// pcre2_match() is allocated on the system stack, of this size (bytes). The size
// must be a multiple of sizeof(PCRE2_SPTR) in all environments, so making it a
// multiple of 8 is best. Typical frame sizes are a few hundred bytes (it depends
// on the number of capturing parentheses) so 20KiB handles quite a few frames. A
// larger vector on the heap is obtained for patterns that need more frames. The
// maximum size of this can be limited.
// Similarly, for DFA matching, an initial internal workspace vector is
// allocated on the stack.
// Define the default BSR convention.
// ---------------- Basic UTF-8 macros ----------------
// These UTF-8 macros are always defined because they are used in pcre2test for
// handling wide characters in 16-bit and 32-bit modes, even if an 8-bit library
// is not supported.
// Tests whether a UTF-8 code point needs extra bytes to decode.
// The following macros were originally written in the form of loops that used
// data from the tables whose names start with PRIV(utf8_table). They were
// rewritten by a user so as not to use loops, because in some environments this
// gives a significant performance advantage, and it seems never to do any harm.
// Base macro to pick up the remaining bytes of a UTF-8 character, not
// advancing the pointer.
// Base macro to pick up the remaining bytes of a UTF-8 character, advancing
// the pointer.
// Base macro to pick up the remaining bytes of a UTF-8 character, not
// advancing the pointer, incrementing the length.
// --------------- Whitespace macros ----------------
// Tests for Unicode horizontal and vertical whitespace characters must check a
// number of different values. Using a switch statement for this generates the
// fastest code (no loop, no memory access), and there are several places in the
// interpreter code where this happens. In order to ensure that all the case lists
// remain in step, we use macros so that there is only one place where the lists
// are defined.
//
// These values are also required as lists in pcre2_compile.c when processing \h,
// \H, \v and \V in a character class. The lists are defined in pcre2_tables.c,
// but macros that define the values are here so that all the definitions are
// together. The lists must be in ascending character order, terminated by
// NOTACHAR (which is 0xffffffff).
//
// Any changes should ensure that the various macros are kept in step with each
// other. NOTE: The values also appear in pcre2_jit_compile.c.
// -------------- ASCII/Unicode environments --------------
// Character U+180E (Mongolian Vowel Separator) is not included in the list of
// spaces in the Unicode file PropList.txt, and Perl does not recognize it as a
// space. However, in many other sources it is listed as a space and has been in
// PCRE (both APIs) for a long time.
// -------------- EBCDIC environments --------------
// -------------- End of whitespace macros --------------
// PCRE2 is able to support several different kinds of newline (CR, LF, CRLF,
// "any" and "anycrlf" at present). The following macros are used to package up
// testing for newlines. NLBLOCK, PSSTART, and PSEND are defined in the various
// modules to indicate in which datablock the parameters exist, and what the
// start/end of string field names are.
// This macro checks for a newline at the given position
// This macro checks for a newline immediately preceding the given position
// Private flags containing information about the compiled pattern. The first
// three must not be changed, because whichever is set is actually the number of
// bytes in a code unit in that mode.
// Values for the matchedby field in a match data block.
const ( /* pcre2_internal.h:537:1: */
PCRE2_MATCHEDBY_INTERPRETER = 0 // pcre2_match()
PCRE2_MATCHEDBY_DFA_INTERPRETER = 1 // pcre2_dfa_match()
PCRE2_MATCHEDBY_JIT = 2
)
// This function is needed only when memmove() is not available.
// End of pcre2_internal.h
// Masks for identifying the public options that are permitted at match time.
// Non-error returns from and within the match() function. Error returns are
// externally defined PCRE2_ERROR_xxx codes, which are all negative.
// Special internal returns used in the match() function. Make them
// sufficiently negative to avoid the external error codes.
// The next 5 must be kept together and in sequence so that a test that checks
// for any one of them can use a range.
// Group frame type values. Zero means the frame is not a group frame. The
// lower 16 bits are used for data (e.g. the capture number). Group frames are
// used for most groups so that information about the start is easily available at
// the end without having to scan back through intermediate frames (backtrack
// points).
// Masks for the identity and data parts of the group frame type.
// Repetition types
const ( /* pcre2_match.c:118:1: */
REPTYPE_MIN = 0
REPTYPE_MAX = 1
REPTYPE_POS = 2
) // OP_CRPOSQUERY, OP_CRPOSRANGE
// Numbers for RMATCH calls at backtracking points. When these lists are
// changed, the code at RETURN_SWITCH below must be updated in sync.
const ( /* pcre2_match.c:150:1: */
RM1 = 1
RM2 = 2
RM3 = 3
RM4 = 4
RM5 = 5
RM6 = 6
RM7 = 7
RM8 = 8
RM9 = 9
RM10 = 10
RM11 = 11
RM12 = 12
RM13 = 13
RM14 = 14
RM15 = 15
RM16 = 16
RM17 = 17
RM18 = 18
RM19 = 19
RM20 = 20
RM21 = 21
RM22 = 22
RM23 = 23
RM24 = 24
RM25 = 25
RM26 = 26
RM27 = 27
RM28 = 28
RM29 = 29
RM30 = 30
RM31 = 31
RM32 = 32
RM33 = 33
RM34 = 34
RM35 = 35
RM36 = 36
)
const ( /* pcre2_match.c:156:1: */
RM100 = 100
RM101 = 101
)
const ( /* pcre2_match.c:160:1: */
RM200 = 200
RM201 = 201
RM202 = 202
RM203 = 203
RM204 = 204
RM205 = 205
RM206 = 206
RM207 = 207
RM208 = 208
RM209 = 209
RM210 = 210
RM211 = 211
RM212 = 212
RM213 = 213
RM214 = 214
RM215 = 215
RM216 = 216
RM217 = 217
RM218 = 218
RM219 = 219
RM220 = 220
RM221 = 221
RM222 = 222
RM223 = 223
RM224 = 224
RM225 = 225
)
// This function is needed only when memmove() is not available.
// End of pcre2_internal.h
// ************************************************
//
// Check script run *
//
// A script run is conceptually a sequence of characters all in the same
// Unicode script. However, it isn't quite that simple. There are special rules
// for scripts that are commonly used together, and also special rules for digits.
// This function implements the appropriate checks, which is possible only when
// PCRE2 is compiled with Unicode support. The function returns TRUE if there is
// no Unicode support; however, it should never be called in that circumstance
// because an error is given by pcre2_compile() if a script run is called for in a
// version of PCRE2 compiled without Unicode support.
//
// Arguments:
// pgr point to the first character
// endptr point after the last character
// utf TRUE if in UTF mode
//
// Returns: TRUE if this is a valid script run
// These are states in the checking process.
const ( /* pcre2_script_run.c:73:1: */
SCRIPT_UNSET = 0 // Requirement as yet unknown
SCRIPT_MAP = 1 // Bitmap contains acceptable scripts
SCRIPT_HANPENDING = 2 // Have had only Han characters
SCRIPT_HANHIRAKATA = 3 // Expect Han or Hirikata
SCRIPT_HANBOPOMOFO = 4 // Expect Han or Bopomofo
SCRIPT_HANHANGUL = 5
)
// This function is needed only when memmove() is not available.
// End of pcre2_internal.h
// The maximum remembered capturing brackets minimum.
// Set a bit in the starting code unit bit map.
// Returns from set_start_bits()
const ( /* pcre2_study.c:61:1: */
SSB_FAIL = 0
SSB_DONE = 1
SSB_CONTINUE = 2
SSB_UNKNOWN = 3
SSB_TOODEEP = 4
)
// These are Boolean properties.
const ( /* pcre2_ucp.h:105:1: */
ucp_ASCII = 0
ucp_ASCII_Hex_Digit = 1
ucp_Alphabetic = 2
ucp_Bidi_Control = 3
ucp_Bidi_Mirrored = 4
ucp_Case_Ignorable = 5
ucp_Cased = 6
ucp_Changes_When_Casefolded = 7
ucp_Changes_When_Casemapped = 8
ucp_Changes_When_Lowercased = 9
ucp_Changes_When_Titlecased = 10
ucp_Changes_When_Uppercased = 11
ucp_Dash = 12
ucp_Default_Ignorable_Code_Point = 13
ucp_Deprecated = 14
ucp_Diacritic = 15
ucp_Emoji = 16
ucp_Emoji_Component = 17
ucp_Emoji_Modifier = 18
ucp_Emoji_Modifier_Base = 19
ucp_Emoji_Presentation = 20
ucp_Extended_Pictographic = 21
ucp_Extender = 22
ucp_Grapheme_Base = 23
ucp_Grapheme_Extend = 24
ucp_Grapheme_Link = 25
ucp_Hex_Digit = 26
ucp_IDS_Binary_Operator = 27
ucp_IDS_Trinary_Operator = 28
ucp_ID_Continue = 29
ucp_ID_Start = 30
ucp_Ideographic = 31
ucp_Join_Control = 32
ucp_Logical_Order_Exception = 33
ucp_Lowercase = 34
ucp_Math = 35
ucp_Noncharacter_Code_Point = 36
ucp_Pattern_Syntax = 37
ucp_Pattern_White_Space = 38
ucp_Prepended_Concatenation_Mark = 39
ucp_Quotation_Mark = 40
ucp_Radical = 41
ucp_Regional_Indicator = 42
ucp_Sentence_Terminal = 43
ucp_Soft_Dotted = 44
ucp_Terminal_Punctuation = 45
ucp_Unified_Ideograph = 46
ucp_Uppercase = 47
ucp_Variation_Selector = 48
ucp_White_Space = 49
ucp_XID_Continue = 50
ucp_XID_Start = 51
// This must be last
ucp_Bprop_Count = 52
)
// Size of entries in ucd_boolprop_sets[]
// These are the bidi class values.
const ( /* pcre2_ucp.h:168:1: */
ucp_bidiAL = 0 // Arabic letter
ucp_bidiAN = 1 // Arabic number
ucp_bidiB = 2 // Paragraph separator
ucp_bidiBN = 3 // Boundary neutral
ucp_bidiCS = 4 // Common separator
ucp_bidiEN = 5 // European number
ucp_bidiES = 6 // European separator
ucp_bidiET = 7 // European terminator
ucp_bidiFSI = 8 // First strong isolate
ucp_bidiL = 9 // Left to right
ucp_bidiLRE = 10 // Left to right embedding
ucp_bidiLRI = 11 // Left to right isolate
ucp_bidiLRO = 12 // Left to right override
ucp_bidiNSM = 13 // Non-spacing mark
ucp_bidiON = 14 // Other neutral
ucp_bidiPDF = 15 // Pop directional format
ucp_bidiPDI = 16 // Pop directional isolate
ucp_bidiR = 17 // Right to left
ucp_bidiRLE = 18 // Right to left embedding
ucp_bidiRLI = 19 // Right to left isolate
ucp_bidiRLO = 20 // Right to left override
ucp_bidiS = 21 // Segment separator
ucp_bidiWS = 22
)
// These are grapheme break properties. The Extended Pictographic property
// comes from the emoji-data.txt file.
const ( /* pcre2_ucp.h:197:1: */
ucp_gbCR = 0 // 0
ucp_gbLF = 1 // 1
ucp_gbControl = 2 // 2
ucp_gbExtend = 3 // 3
ucp_gbPrepend = 4 // 4
ucp_gbSpacingMark = 5 // 5
ucp_gbL = 6 // 6 Hangul syllable type L
ucp_gbV = 7 // 7 Hangul syllable type V
ucp_gbT = 8 // 8 Hangul syllable type T
ucp_gbLV = 9 // 9 Hangul syllable type LV
ucp_gbLVT = 10 // 10 Hangul syllable type LVT
ucp_gbRegional_Indicator = 11 // 11
ucp_gbOther = 12 // 12
ucp_gbZWJ = 13 // 13
ucp_gbExtended_Pictographic = 14
)
// These are the script identifications.
const ( /* pcre2_ucp.h:217:1: */
// Scripts which has characters in other scripts.
ucp_Latin = 0
ucp_Greek = 1
ucp_Cyrillic = 2
ucp_Arabic = 3
ucp_Syriac = 4
ucp_Thaana = 5
ucp_Devanagari = 6
ucp_Bengali = 7
ucp_Gurmukhi = 8
ucp_Gujarati = 9
ucp_Oriya = 10
ucp_Tamil = 11
ucp_Telugu = 12
ucp_Kannada = 13
ucp_Malayalam = 14
ucp_Sinhala = 15
ucp_Myanmar = 16
ucp_Georgian = 17
ucp_Hangul = 18
ucp_Mongolian = 19
ucp_Hiragana = 20
ucp_Katakana = 21
ucp_Bopomofo = 22
ucp_Han = 23
ucp_Yi = 24
ucp_Tagalog = 25
ucp_Hanunoo = 26
ucp_Buhid = 27
ucp_Tagbanwa = 28
ucp_Limbu = 29
ucp_Tai_Le = 30
ucp_Linear_B = 31
ucp_Cypriot = 32
ucp_Buginese = 33
ucp_Coptic = 34
ucp_Glagolitic = 35
ucp_Syloti_Nagri = 36
ucp_Phags_Pa = 37
ucp_Nko = 38
ucp_Kayah_Li = 39
ucp_Javanese = 40
ucp_Kaithi = 41
ucp_Mandaic = 42
ucp_Chakma = 43
ucp_Sharada = 44
ucp_Takri = 45
ucp_Duployan = 46
ucp_Grantha = 47
ucp_Khojki = 48
ucp_Linear_A = 49
ucp_Mahajani = 50
ucp_Manichaean = 51
ucp_Modi = 52
ucp_Old_Permic = 53
ucp_Psalter_Pahlavi = 54
ucp_Khudawadi = 55
ucp_Tirhuta = 56
ucp_Multani = 57
ucp_Adlam = 58
ucp_Masaram_Gondi = 59
ucp_Dogra = 60
ucp_Gunjala_Gondi = 61
ucp_Hanifi_Rohingya = 62
ucp_Sogdian = 63
ucp_Nandinagari = 64
ucp_Yezidi = 65
ucp_Cypro_Minoan = 66
ucp_Old_Uyghur = 67
// Scripts which has no characters in other scripts.
ucp_Unknown = 68
ucp_Common = 69
ucp_Armenian = 70
ucp_Hebrew = 71
ucp_Thai = 72
ucp_Lao = 73
ucp_Tibetan = 74
ucp_Ethiopic = 75
ucp_Cherokee = 76
ucp_Canadian_Aboriginal = 77
ucp_Ogham = 78
ucp_Runic = 79
ucp_Khmer = 80
ucp_Old_Italic = 81
ucp_Gothic = 82
ucp_Deseret = 83
ucp_Inherited = 84
ucp_Ugaritic = 85
ucp_Shavian = 86
ucp_Osmanya = 87
ucp_Braille = 88
ucp_New_Tai_Lue = 89
ucp_Tifinagh = 90
ucp_Old_Persian = 91
ucp_Kharoshthi = 92
ucp_Balinese = 93
ucp_Cuneiform = 94
ucp_Phoenician = 95
ucp_Sundanese = 96
ucp_Lepcha = 97
ucp_Ol_Chiki = 98
ucp_Vai = 99
ucp_Saurashtra = 100
ucp_Rejang = 101
ucp_Lycian = 102
ucp_Carian = 103
ucp_Lydian = 104
ucp_Cham = 105
ucp_Tai_Tham = 106
ucp_Tai_Viet = 107
ucp_Avestan = 108
ucp_Egyptian_Hieroglyphs = 109
ucp_Samaritan = 110
ucp_Lisu = 111
ucp_Bamum = 112
ucp_Meetei_Mayek = 113
ucp_Imperial_Aramaic = 114
ucp_Old_South_Arabian = 115
ucp_Inscriptional_Parthian = 116
ucp_Inscriptional_Pahlavi = 117
ucp_Old_Turkic = 118
ucp_Batak = 119
ucp_Brahmi = 120
ucp_Meroitic_Cursive = 121
ucp_Meroitic_Hieroglyphs = 122
ucp_Miao = 123
ucp_Sora_Sompeng = 124
ucp_Caucasian_Albanian = 125
ucp_Bassa_Vah = 126
ucp_Elbasan = 127
ucp_Pahawh_Hmong = 128
ucp_Mende_Kikakui = 129
ucp_Mro = 130
ucp_Old_North_Arabian = 131
ucp_Nabataean = 132
ucp_Palmyrene = 133
ucp_Pau_Cin_Hau = 134
ucp_Siddham = 135
ucp_Warang_Citi = 136
ucp_Ahom = 137
ucp_Anatolian_Hieroglyphs = 138
ucp_Hatran = 139
ucp_Old_Hungarian = 140
ucp_SignWriting = 141
ucp_Bhaiksuki = 142
ucp_Marchen = 143
ucp_Newa = 144
ucp_Osage = 145
ucp_Tangut = 146
ucp_Nushu = 147
ucp_Soyombo = 148
ucp_Zanabazar_Square = 149
ucp_Makasar = 150
ucp_Medefaidrin = 151
ucp_Old_Sogdian = 152
ucp_Elymaic = 153
ucp_Nyiakeng_Puachue_Hmong = 154
ucp_Wancho = 155
ucp_Chorasmian = 156
ucp_Dives_Akuru = 157
ucp_Khitan_Small_Script = 158
ucp_Tangsa = 159
ucp_Toto = 160
ucp_Vithkuqi = 161
// This must be last
ucp_Script_Count = 162
)
// Undefine the list macros; they are no longer needed.
// PCRE2_CODE_UNIT_WIDTH must be defined. If it is 8, 16, or 32, redefine
// PCRE2_SUFFIX to use it. If it is 0, undefine the other macros and make
// PCRE2_SUFFIX a no-op. Otherwise, generate an error.
// End of pcre2.h
// ************************************************
//
// Perl-Compatible Regular Expressions *
//
// PCRE is a library of functions to support regular expressions whose syntax
// and semantics are as close as possible to those of the Perl 5 language.
//
// Written by Philip Hazel
// Original API code Copyright (c) 1997-2012 University of Cambridge
// New API code Copyright (c) 2016-2022 University of Cambridge
//
// This module is auto-generated from Unicode data files. DO NOT EDIT MANUALLY!
// Instead, modify the maint/GenerateUcpHeader.py script and run it to generate
// a new version of this code.
//
// -----------------------------------------------------------------------------
// Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions are met:
//
// * Redistributions of source code must retain the above copyright notice,
// this list of conditions and the following disclaimer.
//
// * Redistributions in binary form must reproduce the above copyright
// notice, this list of conditions and the following disclaimer in the
// documentation and/or other materials provided with the distribution.
//
// * Neither the name of the University of Cambridge nor the names of its
// contributors may be used to endorse or promote products derived from
// this software without specific prior written permission.
//
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
// POSSIBILITY OF SUCH DAMAGE.
// -----------------------------------------------------------------------------
// This file contains definitions of the Unicode property values that are
// returned by the UCD access macros and used throughout PCRE2.
//
// IMPORTANT: The specific values of the first two enums (general and particular
// character categories) are assumed by the table called catposstab in the file
// pcre2_auto_possess.c. They are unlikely to change, but should be checked after
// an update.
// These are the general character categories.
const ( /* pcre2_ucp.h:58:1: */
ucp_C = 0
ucp_L = 1
ucp_M = 2
ucp_N = 3
ucp_P = 4
ucp_S = 5
ucp_Z = 6
)
// These are the particular character categories.
const ( /* pcre2_ucp.h:70:1: */
ucp_Cc = 0 // Control
ucp_Cf = 1 // Format
ucp_Cn = 2 // Unassigned
ucp_Co = 3 // Private use
ucp_Cs = 4 // Surrogate
ucp_Ll = 5 // Lower case letter
ucp_Lm = 6 // Modifier letter
ucp_Lo = 7 // Other letter
ucp_Lt = 8 // Title case letter
ucp_Lu = 9 // Upper case letter
ucp_Mc = 10 // Spacing mark
ucp_Me = 11 // Enclosing mark
ucp_Mn = 12 // Non-spacing mark
ucp_Nd = 13 // Decimal number
ucp_Nl = 14 // Letter number
ucp_No = 15 // Other number
ucp_Pc = 16 // Connector punctuation
ucp_Pd = 17 // Dash punctuation
ucp_Pe = 18 // Close punctuation
ucp_Pf = 19 // Final punctuation
ucp_Pi = 20 // Initial punctuation
ucp_Po = 21 // Other punctuation
ucp_Ps = 22 // Open punctuation
ucp_Sc = 23 // Currency symbol
ucp_Sk = 24 // Modifier symbol
ucp_Sm = 25 // Mathematical symbol
ucp_So = 26 // Other symbol
ucp_Zl = 27 // Line separator
ucp_Zp = 28 // Paragraph separator
ucp_Zs = 29
)
type Tptrdiff_t = int64 /* <builtin>:3:26 */
type Tsize_t = uint64 /* <builtin>:9:23 */
type Twchar_t = int32 /* <builtin>:15:24 */
type T__int128_t = struct {
Flo int64
Fhi int64
} /* <builtin>:21:43 */ // must match modernc.org/mathutil.Int128
type T__uint128_t = struct {
Flo uint64
Fhi uint64
} /* <builtin>:22:44 */ // must match modernc.org/mathutil.Int128
type T__builtin_va_list = uintptr /* <builtin>:46:14 */
type T__float128 = float64 /* <builtin>:47:21 */
// ************************************************
//
// Perl-Compatible Regular Expressions *
//
// PCRE is a library of functions to support regular expressions whose syntax
// and semantics are as close as possible to those of the Perl 5 language.
//
// Written by Philip Hazel
// Original API code Copyright (c) 1997-2012 University of Cambridge
// New API code Copyright (c) 2016-2022 University of Cambridge
//
// -----------------------------------------------------------------------------
// Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions are met:
//
// * Redistributions of source code must retain the above copyright notice,
// this list of conditions and the following disclaimer.
//
// * Redistributions in binary form must reproduce the above copyright
// notice, this list of conditions and the following disclaimer in the
// documentation and/or other materials provided with the distribution.
//
// * Neither the name of the University of Cambridge nor the names of its
// contributors may be used to endorse or promote products derived from
// this software without specific prior written permission.
//
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
// POSSIBILITY OF SUCH DAMAGE.
// -----------------------------------------------------------------------------
// This module contains functions that scan a compiled pattern and change
// repeats into possessive repeats where possible.
// src/config.h. Generated from config.h.in by configure.
// src/config.h.in. Generated from configure.ac by autoheader.
// PCRE2 is written in Standard C, but there are a few non-standard things it
// can cope with, allowing it to run on SunOS4 and other "close to standard"
// systems.
//
// In environments that support the GNU autotools, config.h.in is converted into
// config.h by the "configure" script. In environments that use CMake,
// config-cmake.in is converted into config.h. If you are going to build PCRE2 "by
// hand" without using "configure" or CMake, you should copy the distributed
// config.h.generic to config.h, and edit the macro definitions to be the way you
// need them. You must then add -DHAVE_CONFIG_H to all of your compile commands,
// so that config.h is included at the start of every source.
//
// Alternatively, you can avoid editing by using -D on the compiler command line
// to set the macro values. In this case, you do not have to set -DHAVE_CONFIG_H,
// but if you do, default values will be taken from config.h for non-boolean
// macros that are not defined on the command line.
//
// Boolean macros such as HAVE_STDLIB_H and SUPPORT_PCRE2_8 should either be
// defined (conventionally to 1) for TRUE, and not defined at all for FALSE. All
// such macros are listed as a commented #undef in config.h.generic. Macros such
// as MATCH_LIMIT, whose actual value is relevant, have defaults defined, but are
// surrounded by #ifndef/#endif lines so that the value can be overridden by -D.
//
// PCRE2 uses memmove() if HAVE_MEMMOVE is defined; otherwise it uses bcopy() if
// HAVE_BCOPY is defined. If your system has neither bcopy() nor memmove(), make
// sure both macros are undefined; an emulation function will then be used.
// By default, the \R escape sequence matches any Unicode line ending
// character or sequence of characters. If BSR_ANYCRLF is defined (to any
// value), this is changed so that backslash-R matches only CR, LF, or CRLF.
// The build-time default can be overridden by the user of PCRE2 at runtime.
//
// #undef BSR_ANYCRLF
// Define to any value to disable the use of the z and t modifiers in
// formatting settings such as %zu or %td (this is rarely needed).
// #undef DISABLE_PERCENT_ZT
// If you are compiling for a system that uses EBCDIC instead of ASCII
// character codes, define this macro to any value. When EBCDIC is set, PCRE2
// assumes that all input strings are in EBCDIC. If you do not define this
// macro, PCRE2 will assume input strings are ASCII or UTF-8/16/32 Unicode. It
// is not possible to build a version of PCRE2 that supports both EBCDIC and
// UTF-8/16/32.
// #undef EBCDIC
// In an EBCDIC environment, define this macro to any value to arrange for the
// NL character to be 0x25 instead of the default 0x15. NL plays the role that
// LF does in an ASCII/Unicode environment.
// #undef EBCDIC_NL25
// Define this if your compiler supports __attribute__((uninitialized))
// #undef HAVE_ATTRIBUTE_UNINITIALIZED
// Define to 1 if you have the `bcopy' function.
// Define to 1 if you have the <bzlib.h> header file.
// Define to 1 if you have the <dirent.h> header file.
// Define to 1 if you have the <dlfcn.h> header file.
// Define to 1 if you have the <editline/readline.h> header file.
// #undef HAVE_EDITLINE_READLINE_H
// Define to 1 if you have the <edit/readline/readline.h> header file.
// #undef HAVE_EDIT_READLINE_READLINE_H
// Define to 1 if you have the <inttypes.h> header file.
// Define to 1 if you have the <limits.h> header file.
// Define to 1 if you have the `memfd_create' function.
// Define to 1 if you have the `memmove' function.
// Define to 1 if you have the <minix/config.h> header file.
// #undef HAVE_MINIX_CONFIG_H
// Define to 1 if you have the `mkostemp' function.
// Define if you have POSIX threads libraries and header files.
// #undef HAVE_PTHREAD
// Have PTHREAD_PRIO_INHERIT.
// #undef HAVE_PTHREAD_PRIO_INHERIT
// Define to 1 if you have the <readline.h> header file.
// #undef HAVE_READLINE_H
// Define to 1 if you have the <readline/history.h> header file.
// #undef HAVE_READLINE_HISTORY_H
// Define to 1 if you have the <readline/readline.h> header file.
// #undef HAVE_READLINE_READLINE_H
// Define to 1 if you have the `realpath' function.
// Define to 1 if you have the `secure_getenv' function.
// Define to 1 if you have the <stdint.h> header file.
// Define to 1 if you have the <stdio.h> header file.
// Define to 1 if you have the <stdlib.h> header file.
// Define to 1 if you have the `strerror' function.
// Define to 1 if you have the <strings.h> header file.
// Define to 1 if you have the <string.h> header file.
// Define to 1 if you have the <sys/stat.h> header file.
// Define to 1 if you have the <sys/types.h> header file.
// Define to 1 if you have the <sys/wait.h> header file.
// Define to 1 if you have the <unistd.h> header file.
// Define to 1 if the compiler supports simple visibility declarations.
// Define to 1 if you have the <wchar.h> header file.
// Define to 1 if you have the <windows.h> header file.
// #undef HAVE_WINDOWS_H
// Define to 1 if you have the <zlib.h> header file.
// This limits the amount of memory that may be used while matching a pattern.
// It applies to both pcre2_match() and pcre2_dfa_match(). It does not apply
// to JIT matching. The value is in kibibytes (units of 1024 bytes).
// The value of LINK_SIZE determines the number of bytes used to store links
// as offsets within the compiled regex. The default is 2, which allows for
// compiled patterns up to 65535 code units long. This covers the vast
// majority of cases. However, PCRE2 can also be compiled to use 3 or 4 bytes
// instead. This allows for longer patterns in extreme cases.
// Define to the sub-directory where libtool stores uninstalled libraries.
// The value of MATCH_LIMIT determines the default number of times the
// pcre2_match() function can record a backtrack position during a single
// matching attempt. The value is also used to limit a loop counter in
// pcre2_dfa_match(). There is a runtime interface for setting a different
// limit. The limit exists in order to catch runaway regular expressions that
// take for ever to determine that they do not match. The default is set very
// large so that it does not accidentally catch legitimate cases.
// The above limit applies to all backtracks, whether or not they are nested.
// In some environments it is desirable to limit the nesting of backtracking
// (that is, the depth of tree that is searched) more strictly, in order to
// restrict the maximum amount of heap memory that is used. The value of
// MATCH_LIMIT_DEPTH provides this facility. To have any useful effect, it
// must be less than the value of MATCH_LIMIT. The default is to use the same
// value as MATCH_LIMIT. There is a runtime method for setting a different
// limit. In the case of pcre2_dfa_match(), this limit controls the depth of
// the internal nested function calls that are used for pattern recursions,
// lookarounds, and atomic groups.
// This limit is parameterized just in case anybody ever wants to change it.
// Care must be taken if it is increased, because it guards against integer
// overflow caused by enormously large patterns.
// This limit is parameterized just in case anybody ever wants to change it.
// Care must be taken if it is increased, because it guards against integer
// overflow caused by enormously large patterns.
// Defining NEVER_BACKSLASH_C locks out the use of \C in all patterns.
// #undef NEVER_BACKSLASH_C
// The value of NEWLINE_DEFAULT determines the default newline character
// sequence. PCRE2 client programs can override this by selecting other values
// at run time. The valid values are 1 (CR), 2 (LF), 3 (CRLF), 4 (ANY), 5
// (ANYCRLF), and 6 (NUL).
// Name of package
// Define to the address where bug reports for this package should be sent.
// Define to the full name of this package.
// Define to the full name and version of this package.
// Define to the one symbol short name of this package.
// Define to the home page for this package.
// Define to the version of this package.
// The value of PARENS_NEST_LIMIT specifies the maximum depth of nested
// parentheses (of any kind) in a pattern. This limits the amount of system
// stack that is used while compiling a pattern.
// The value of PCRE2GREP_BUFSIZE is the starting size of the buffer used by
// pcre2grep to hold parts of the file it is searching. The buffer will be
// expanded up to PCRE2GREP_MAX_BUFSIZE if necessary, for files containing
// very long lines. The actual amount of memory used by pcre2grep is three
// times this number, because it allows for the buffering of "before" and
// "after" lines.
// The value of PCRE2GREP_MAX_BUFSIZE specifies the maximum size of the buffer
// used by pcre2grep to hold parts of the file it is searching. The actual
// amount of memory used by pcre2grep is three times this number, because it
// allows for the buffering of "before" and "after" lines.
// to make a symbol visible
// to make a symbol visible
// Define to any value to include debugging code.
// #undef PCRE2_DEBUG
// to make a symbol visible
// If you are compiling for a system other than a Unix-like system or
// Win32, and it needs some magic to be inserted before the definition
// of a function that is exported by the library, define this macro to
// contain the relevant magic. If you do not define this macro, a suitable
// __declspec value is used for Windows systems; in other environments
// "extern" is used for a C compiler and "extern C" for a C++ compiler.
// This macro apears at the start of every exported function that is part
// of the external API. It does not appear on functions that are "external"
// in the C sense, but which are internal to the library.
// Define to any value if linking statically (TODO: make nice with Libtool)
// #undef PCRE2_STATIC
// Define to necessary symbol if this constant uses a non-standard name on
// your system.
// #undef PTHREAD_CREATE_JOINABLE
// Define to any non-zero number to enable support for SELinux compatible
// executable memory allocator in JIT. Note that this will have no effect
// unless SUPPORT_JIT is also defined.
// #undef SLJIT_PROT_EXECUTABLE_ALLOCATOR
// Define to 1 if all of the C90 standard headers exist (not just the ones
// required in a freestanding environment). This macro is provided for
// backward compatibility; new code need not use it.
// Define to any value to enable support for Just-In-Time compiling.
// #undef SUPPORT_JIT
// Define to any value to allow pcre2grep to be linked with libbz2, so that it
// is able to handle .bz2 files.
// #undef SUPPORT_LIBBZ2
// Define to any value to allow pcre2test to be linked with libedit.
// #undef SUPPORT_LIBEDIT
// Define to any value to allow pcre2test to be linked with libreadline.
// #undef SUPPORT_LIBREADLINE
// Define to any value to allow pcre2grep to be linked with libz, so that it
// is able to handle .gz files.
// #undef SUPPORT_LIBZ
// Define to any value to enable callout script support in pcre2grep.
// Define to any value to enable fork support in pcre2grep callout scripts.
// This will have no effect unless SUPPORT_PCRE2GREP_CALLOUT is also defined.
//
// Define to any value to enable JIT support in pcre2grep. Note that this will
// have no effect unless SUPPORT_JIT is also defined.
// #undef SUPPORT_PCRE2GREP_JIT
// Define to any value to enable the 16 bit PCRE2 library.
// #undef SUPPORT_PCRE2_16
// Define to any value to enable the 32 bit PCRE2 library.
// #undef SUPPORT_PCRE2_32
// Define to any value to enable the 8 bit PCRE2 library.
// Define to any value to enable support for Unicode and UTF encoding. This
// will work even in an EBCDIC environment, but it is incompatible with the
// EBCDIC macro. That is, PCRE2 can support *either* EBCDIC code *or*
// ASCII/Unicode, but not both at once.
// Define to any value for valgrind support to find invalid memory reads.
// #undef SUPPORT_VALGRIND
// Enable extensions on AIX 3, Interix.
// Enable general extensions on macOS.
// Enable general extensions on Solaris.
// Enable GNU extensions on systems that have them.
// Enable X/Open compliant socket functions that do not require linking
// with -lxnet on HP-UX 11.11.
// Identify the host operating system as Minix.
// This macro does not affect the system headers' behavior.
// A future release of Autoconf may stop defining this macro.
// # undef _MINIX
// Enable general extensions on NetBSD.
// Enable NetBSD compatibility extensions on Minix.
// Enable OpenBSD compatibility extensions on NetBSD.
// Oddly enough, this does nothing on OpenBSD.
// Define to 1 if needed for POSIX-compatible behavior.
// # undef _POSIX_SOURCE
// Define to 2 if needed for POSIX-compatible behavior.
// # undef _POSIX_1_SOURCE
// Enable POSIX-compatible threading on Solaris.
// Enable extensions specified by ISO/IEC TS 18661-5:2014.
// Enable extensions specified by ISO/IEC TS 18661-1:2014.
// Enable extensions specified by ISO/IEC TS 18661-2:2015.
// Enable extensions specified by ISO/IEC TS 18661-4:2015.
// Enable extensions specified by ISO/IEC TS 18661-3:2015.
// Enable extensions specified by ISO/IEC TR 24731-2:2010.
// Enable extensions specified by ISO/IEC 24747:2009.
// Enable extensions on HP NonStop.
// Enable X/Open extensions. Define to 500 only if necessary
// to make mbstate_t available.
// # undef _XOPEN_SOURCE
// Version number of package
// Define to empty if `const' does not conform to ANSI C.
// #undef const
// Define to the type of a signed integer type of width exactly 64 bits if
// such a type exists and the standard includes do not define it.
// #undef int64_t
// Define to `unsigned int' if <sys/types.h> does not define.
// #undef size_t
// ************************************************
//
// Perl-Compatible Regular Expressions *
//
// PCRE2 is a library of functions to support regular expressions whose syntax
// and semantics are as close as possible to those of the Perl 5 language.
//
// Written by Philip Hazel
// Original API code Copyright (c) 1997-2012 University of Cambridge
// New API code Copyright (c) 2016-2022 University of Cambridge
//
// -----------------------------------------------------------------------------
// Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions are met:
//
// * Redistributions of source code must retain the above copyright notice,
// this list of conditions and the following disclaimer.
//
// * Redistributions in binary form must reproduce the above copyright
// notice, this list of conditions and the following disclaimer in the
// documentation and/or other materials provided with the distribution.
//
// * Neither the name of the University of Cambridge nor the names of its
// contributors may be used to endorse or promote products derived from
// this software without specific prior written permission.
//
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
// POSSIBILITY OF SUCH DAMAGE.
// -----------------------------------------------------------------------------
// We do not support both EBCDIC and Unicode at the same time. The "configure"
// script prevents both being selected, but not everybody uses "configure". EBCDIC
// is only supported for the 8-bit library, but the check for this has to be later
// in this file, because the first part is not width-dependent, and is included by
// pcre2test.c with CODE_UNIT_WIDTH == 0.
// Standard C headers
// Copyright (C) 1991-2022 Free Software Foundation, Inc.
// This file is part of the GNU C Library.
//
// The GNU C Library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public
// License as published by the Free Software Foundation; either
// version 2.1 of the License, or (at your option) any later version.
//
// The GNU C Library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
// Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public
// License along with the GNU C Library; if not, see
// <https://www.gnu.org/licenses/>.
// ISO C99 Standard 7.4: Character handling <ctype.h>
// Copyright (C) 1991-2022 Free Software Foundation, Inc.
// This file is part of the GNU C Library.
//
// The GNU C Library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public
// License as published by the Free Software Foundation; either
// version 2.1 of the License, or (at your option) any later version.
//
// The GNU C Library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
// Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public
// License along with the GNU C Library; if not, see
// <https://www.gnu.org/licenses/>.
// These are defined by the user (or the compiler)
// to specify the desired environment:
//
// __STRICT_ANSI__ ISO Standard C.
// _ISOC99_SOURCE Extensions to ISO C89 from ISO C99.
// _ISOC11_SOURCE Extensions to ISO C99 from ISO C11.
// _ISOC2X_SOURCE Extensions to ISO C99 from ISO C2X.
// __STDC_WANT_LIB_EXT2__
// Extensions to ISO C99 from TR 27431-2:2010.
// __STDC_WANT_IEC_60559_BFP_EXT__
// Extensions to ISO C11 from TS 18661-1:2014.
// __STDC_WANT_IEC_60559_FUNCS_EXT__
// Extensions to ISO C11 from TS 18661-4:2015.
// __STDC_WANT_IEC_60559_TYPES_EXT__
// Extensions to ISO C11 from TS 18661-3:2015.
// __STDC_WANT_IEC_60559_EXT__
// ISO C2X interfaces defined only in Annex F.
//
// _POSIX_SOURCE IEEE Std 1003.1.
// _POSIX_C_SOURCE If ==1, like _POSIX_SOURCE; if >=2 add IEEE Std 1003.2;
// if >=199309L, add IEEE Std 1003.1b-1993;
// if >=199506L, add IEEE Std 1003.1c-1995;
// if >=200112L, all of IEEE 1003.1-2004
// if >=200809L, all of IEEE 1003.1-2008
// _XOPEN_SOURCE Includes POSIX and XPG things. Set to 500 if
// Single Unix conformance is wanted, to 600 for the
// sixth revision, to 700 for the seventh revision.
// _XOPEN_SOURCE_EXTENDED XPG things and X/Open Unix extensions.
// _LARGEFILE_SOURCE Some more functions for correct standard I/O.
// _LARGEFILE64_SOURCE Additional functionality from LFS for large files.
// _FILE_OFFSET_BITS=N Select default filesystem interface.
// _ATFILE_SOURCE Additional *at interfaces.
// _DYNAMIC_STACK_SIZE_SOURCE Select correct (but non compile-time constant)
// MINSIGSTKSZ, SIGSTKSZ and PTHREAD_STACK_MIN.
// _GNU_SOURCE All of the above, plus GNU extensions.
// _DEFAULT_SOURCE The default set of features (taking precedence over
// __STRICT_ANSI__).
//
// _FORTIFY_SOURCE Add security hardening to many library functions.
// Set to 1 or 2; 2 performs stricter checks than 1.
//
// _REENTRANT, _THREAD_SAFE
// Obsolete; equivalent to _POSIX_C_SOURCE=199506L.
//
// The `-ansi' switch to the GNU C compiler, and standards conformance
// options such as `-std=c99', define __STRICT_ANSI__. If none of
// these are defined, or if _DEFAULT_SOURCE is defined, the default is
// to have _POSIX_SOURCE set to one and _POSIX_C_SOURCE set to
// 200809L, as well as enabling miscellaneous functions from BSD and
// SVID. If more than one of these are defined, they accumulate. For
// example __STRICT_ANSI__, _POSIX_SOURCE and _POSIX_C_SOURCE together
// give you ISO C, 1003.1, and 1003.2, but nothing else.
//
// These are defined by this file and are used by the
// header files to decide what to declare or define:
//
// __GLIBC_USE (F) Define things from feature set F. This is defined
// to 1 or 0; the subsequent macros are either defined
// or undefined, and those tests should be moved to
// __GLIBC_USE.
// __USE_ISOC11 Define ISO C11 things.
// __USE_ISOC99 Define ISO C99 things.
// __USE_ISOC95 Define ISO C90 AMD1 (C95) things.
// __USE_ISOCXX11 Define ISO C++11 things.
// __USE_POSIX Define IEEE Std 1003.1 things.
// __USE_POSIX2 Define IEEE Std 1003.2 things.
// __USE_POSIX199309 Define IEEE Std 1003.1, and .1b things.
// __USE_POSIX199506 Define IEEE Std 1003.1, .1b, .1c and .1i things.
// __USE_XOPEN Define XPG things.
// __USE_XOPEN_EXTENDED Define X/Open Unix things.
// __USE_UNIX98 Define Single Unix V2 things.
// __USE_XOPEN2K Define XPG6 things.
// __USE_XOPEN2KXSI Define XPG6 XSI things.
// __USE_XOPEN2K8 Define XPG7 things.
// __USE_XOPEN2K8XSI Define XPG7 XSI things.
// __USE_LARGEFILE Define correct standard I/O things.
// __USE_LARGEFILE64 Define LFS things with separate names.
// __USE_FILE_OFFSET64 Define 64bit interface as default.
// __USE_MISC Define things from 4.3BSD or System V Unix.
// __USE_ATFILE Define *at interfaces and AT_* constants for them.
// __USE_DYNAMIC_STACK_SIZE Define correct (but non compile-time constant)
// MINSIGSTKSZ, SIGSTKSZ and PTHREAD_STACK_MIN.
// __USE_GNU Define GNU extensions.
// __USE_FORTIFY_LEVEL Additional security measures used, according to level.
//
// The macros `__GNU_LIBRARY__', `__GLIBC__', and `__GLIBC_MINOR__' are
// defined by this file unconditionally. `__GNU_LIBRARY__' is provided
// only for compatibility. All new code should use the other symbols
// to test for features.
//
// All macros listed above as possibly being defined by this file are
// explicitly undefined if they are not explicitly defined.
// Feature-test macros that are not defined by the user or compiler
// but are implied by the other feature-test macros defined (or by the
// lack of any definitions) are defined by the file.
//
// ISO C feature test macros depend on the definition of the macro
// when an affected header is included, not when the first system
// header is included, and so they are handled in
// <bits/libc-header-start.h>, which does not have a multiple include
// guard. Feature test macros that can be handled from the first
// system header included are handled here.
// Undefine everything, so we get a clean slate.
// Suppress kernel-name space pollution unless user expressedly asks
// for it.
// Convenience macro to test the version of gcc.
// Use like this:
// #if __GNUC_PREREQ (2,8)
// ... code requiring gcc 2.8 or later ...
// #endif
// Note: only works for GCC 2.0 and later, because __GNUC_MINOR__ was
// added in 2.0.
// Similarly for clang. Features added to GCC after version 4.2 may
// or may not also be available in clang, and clang's definitions of
// __GNUC(_MINOR)__ are fixed at 4 and 2 respectively. Not all such
// features can be queried via __has_extension/__has_feature.
// Whether to use feature set F.
// _BSD_SOURCE and _SVID_SOURCE are deprecated aliases for
// _DEFAULT_SOURCE. If _DEFAULT_SOURCE is present we do not
// issue a warning; the expectation is that the source is being
// transitioned to use the new macro.
// If _GNU_SOURCE was defined by the user, turn on all the other features.
// If nothing (other than _GNU_SOURCE and _DEFAULT_SOURCE) is defined,
// define _DEFAULT_SOURCE.
// This is to enable the ISO C2X extension.
// This is to enable the ISO C11 extension.
// This is to enable the ISO C99 extension.
// This is to enable the ISO C90 Amendment 1:1995 extension.
// If none of the ANSI/POSIX macros are defined, or if _DEFAULT_SOURCE
// is defined, use POSIX.1-2008 (or another version depending on
// _XOPEN_SOURCE).
// Some C libraries once required _REENTRANT and/or _THREAD_SAFE to be
// defined in all multithreaded code. GNU libc has not required this
// for many years. We now treat them as compatibility synonyms for
// _POSIX_C_SOURCE=199506L, which is the earliest level of POSIX with
// comprehensive support for multithreaded code. Using them never
// lowers the selected level of POSIX conformance, only raises it.
// Features part to handle 64-bit time_t support.
// Copyright (C) 2021-2022 Free Software Foundation, Inc.
// This file is part of the GNU C Library.
//
// The GNU C Library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public
// License as published by the Free Software Foundation; either
// version 2.1 of the License, or (at your option) any later version.
//
// The GNU C Library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
// Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public
// License along with the GNU C Library; if not, see
// <https://www.gnu.org/licenses/>.
// We need to know the word size in order to check the time size.
// Determine the wordsize from the preprocessor defines.
// Both x86-64 and x32 use the 64-bit system call interface.
// Bit size of the time_t type at glibc build time, x86-64 and x32 case.
// Copyright (C) 2018-2022 Free Software Foundation, Inc.
// This file is part of the GNU C Library.
//
// The GNU C Library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public
// License as published by the Free Software Foundation; either
// version 2.1 of the License, or (at your option) any later version.
//
// The GNU C Library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
// Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public
// License along with the GNU C Library; if not, see
// <https://www.gnu.org/licenses/>.
// Determine the wordsize from the preprocessor defines.
// Both x86-64 and x32 use the 64-bit system call interface.
// For others, time size is word size.
// The function 'gets' existed in C89, but is impossible to use
// safely. It has been removed from ISO C11 and ISO C++14. Note: for
// compatibility with various implementations of <cstdio>, this test
// must consider only the value of __cplusplus when compiling C++.
// GNU formerly extended the scanf functions with modified format
// specifiers %as, %aS, and %a[...] that allocate a buffer for the
// input using malloc. This extension conflicts with ISO C99, which
// defines %a as a standalone format specifier that reads a floating-
// point number; moreover, POSIX.1-2008 provides the same feature
// using the modifier letter 'm' instead (%ms, %mS, %m[...]).
//
// We now follow C99 unless GNU extensions are active and the compiler
// is specifically in C89 or C++98 mode (strict or not). For
// instance, with GCC, -std=gnu11 will have C99-compliant scanf with
// or without -D_GNU_SOURCE, but -std=c89 -D_GNU_SOURCE will have the
// old extension.
// Get definitions of __STDC_* predefined macros, if the compiler has
// not preincluded this header automatically.
// Copyright (C) 1991-2022 Free Software Foundation, Inc.
// This file is part of the GNU C Library.
//
// The GNU C Library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public
// License as published by the Free Software Foundation; either
// version 2.1 of the License, or (at your option) any later version.
//
// The GNU C Library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
// Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public
// License along with the GNU C Library; if not, see
// <https://www.gnu.org/licenses/>.
// This macro indicates that the installed library is the GNU C Library.
// For historic reasons the value now is 6 and this will stay from now
// on. The use of this variable is deprecated. Use __GLIBC__ and
// __GLIBC_MINOR__ now (see below) when you want to test for a specific
// GNU C library version and use the values in <gnu/lib-names.h> to get
// the sonames of the shared libraries.
// Major and minor version number of the GNU C library package. Use
// these macros to test for features in specific releases.
// This is here only because every header file already includes this one.
// Copyright (C) 1992-2022 Free Software Foundation, Inc.
// Copyright The GNU Toolchain Authors.
// This file is part of the GNU C Library.
//
// The GNU C Library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public
// License as published by the Free Software Foundation; either
// version 2.1 of the License, or (at your option) any later version.
//
// The GNU C Library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
// Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public
// License along with the GNU C Library; if not, see
// <https://www.gnu.org/licenses/>.
// We are almost always included from features.h.
// The GNU libc does not support any K&R compilers or the traditional mode
// of ISO C compilers anymore. Check for some of the combinations not
// supported anymore.
// Some user header file might have defined this before.
// Compilers that lack __has_attribute may object to
// #if defined __has_attribute && __has_attribute (...)
// even though they do not need to evaluate the right-hand side of the &&.
// Similarly for __has_builtin, etc.
// All functions, except those with callbacks or those that
// synchronize memory, are leaf functions.
// GCC can always grok prototypes. For C++ programs we add throw()
// to help it optimize the function calls. But this only works with
// gcc 2.8.x and egcs. For gcc 3.4 and up we even mark C functions
// as non-throwing using a function attribute since programs can use
// the -fexceptions options for C code as well.
// These two macros are not used in glibc anymore. They are kept here
// only because some other projects expect the macros to be defined.
// For these things, GCC behaves the ANSI way normally,
// and the non-ANSI way under -traditional.
// This is not a typedef so `const __ptr_t' does the right thing.
// C++ needs to know that types and declarations are C, not C++.
// Fortify support.
// Use __builtin_dynamic_object_size at _FORTIFY_SOURCE=3 when available.
// Compile time conditions to choose between the regular, _chk and _chk_warn
// variants. These conditions should get evaluated to constant and optimized
// away.
// Length is known to be safe at compile time if the __L * __S <= __OBJSZ
// condition can be folded to a constant and if it is true. The -1 check is
// redundant because since it implies that __glibc_safe_len_cond is true.
// Conversely, we know at compile time that the length is unsafe if the
// __L * __S <= __OBJSZ condition can be folded to a constant and if it is
// false.
// Fortify function f. __f_alias, __f_chk and __f_chk_warn must be
// declared.
// Fortify function f, where object size argument passed to f is the number of
// elements and not total size.
// Support for flexible arrays.
// Headers that should use flexible arrays only if they're "real"
// (e.g. only if they won't affect sizeof()) should test
// #if __glibc_c99_flexarr_available.
// __asm__ ("xyz") is used throughout the headers to rename functions
// at the assembly language level. This is wrapped by the __REDIRECT
// macro, in order to support compilers that can do this some other
// way. When compilers don't support asm-names at all, we have to do
// preprocessor tricks instead (which don't have exactly the right
// semantics, but it's the best we can do).
//
// Example:
// int __REDIRECT(setpgrp, (__pid_t pid, __pid_t pgrp), setpgid);
//
// #elif __SOME_OTHER_COMPILER__
//
// # define __REDIRECT(name, proto, alias) name proto; _Pragma("let " #name " = " #alias)
// GCC and clang have various useful declarations that can be made with
// the '__attribute__' syntax. All of the ways we use this do fine if
// they are omitted for compilers that don't understand it.
// At some point during the gcc 2.96 development the `malloc' attribute
// for functions was introduced. We don't want to use it unconditionally
// (although this would be possible) since it generates warnings.
// Tell the compiler which arguments to an allocation function
// indicate the size of the allocation.
// Tell the compiler which argument to an allocation function
// indicates the alignment of the allocation.
// At some point during the gcc 2.96 development the `pure' attribute
// for functions was introduced. We don't want to use it unconditionally
// (although this would be possible) since it generates warnings.
// This declaration tells the compiler that the value is constant.
// At some point during the gcc 3.1 development the `used' attribute
// for functions was introduced. We don't want to use it unconditionally
// (although this would be possible) since it generates warnings.
// Since version 3.2, gcc allows marking deprecated functions.
// Since version 4.5, gcc also allows one to specify the message printed
// when a deprecated function is used. clang claims to be gcc 4.2, but
// may also support this feature.
// At some point during the gcc 2.8 development the `format_arg' attribute
// for functions was introduced. We don't want to use it unconditionally
// (although this would be possible) since it generates warnings.
// If several `format_arg' attributes are given for the same function, in
// gcc-3.0 and older, all but the last one are ignored. In newer gccs,
// all designated arguments are considered.
// At some point during the gcc 2.97 development the `strfmon' format
// attribute for functions was introduced. We don't want to use it
// unconditionally (although this would be possible) since it
// generates warnings.
// The nonnull function attribute marks pointer parameters that
// must not be NULL. This has the name __nonnull in glibc,
// and __attribute_nonnull__ in files shared with Gnulib to avoid
// collision with a different __nonnull in DragonFlyBSD 5.9.
// The returns_nonnull function attribute marks the return type of the function
// as always being non-null.
// If fortification mode, we warn about unused results of certain
// function calls which can lead to problems.
// Forces a function to be always inlined.
// The Linux kernel defines __always_inline in stddef.h (283d7573), and
// it conflicts with this definition. Therefore undefine it first to
// allow either header to be included first.
// Associate error messages with the source location of the call site rather
// than with the source location inside the function.
// GCC 4.3 and above with -std=c99 or -std=gnu99 implements ISO C99
// inline semantics, unless -fgnu89-inline is used. Using __GNUC_STDC_INLINE__
// or __GNUC_GNU_INLINE is not a good enough check for gcc because gcc versions
// older than 4.3 may define these macros and still not guarantee GNU inlining
// semantics.
//
// clang++ identifies itself as gcc-4.2, but has support for GNU inlining
// semantics, that can be checked for by using the __GNUC_STDC_INLINE_ and
// __GNUC_GNU_INLINE__ macro definitions.
// GCC 4.3 and above allow passing all anonymous arguments of an
// __extern_always_inline function to some other vararg function.
// It is possible to compile containing GCC extensions even if GCC is
// run in pedantic mode if the uses are carefully marked using the
// `__extension__' keyword. But this is not generally available before
// version 2.8.
// __restrict is known in EGCS 1.2 and above, and in clang.
// It works also in C++ mode (outside of arrays), but only when spelled
// as '__restrict', not 'restrict'.
// ISO C99 also allows to declare arrays as non-overlapping. The syntax is
// array_name[restrict]
// GCC 3.1 and clang support this.
// This syntax is not usable in C++ mode.
// Describes a char array whose address can safely be passed as the first
// argument to strncpy and strncat, as the char array is not necessarily
// a NUL-terminated string.
// Undefine (also defined in libc-symbols.h).
// Copies attributes from the declaration or type referenced by
// the argument.
// Gnulib avoids including these, as they don't work on non-glibc or
// older glibc platforms.
// Determine the wordsize from the preprocessor defines.
// Both x86-64 and x32 use the 64-bit system call interface.
// Properties of long double type. ldbl-96 version.
// Copyright (C) 2016-2022 Free Software Foundation, Inc.
// This file is part of the GNU C Library.
//
// The GNU C Library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public
// License published by the Free Software Foundation; either
// version 2.1 of the License, or (at your option) any later version.
//
// The GNU C Library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
// Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public
// License along with the GNU C Library; if not, see
// <https://www.gnu.org/licenses/>.
// long double is distinct from double, so there is nothing to
// define here.
// __glibc_macro_warning (MESSAGE) issues warning MESSAGE. This is
// intended for use in preprocessor macros.
//
// Note: MESSAGE must be a _single_ string; concatenation of string
// literals is not supported.
// Generic selection (ISO C11) is a C-only feature, available in GCC
// since version 4.9. Previous versions do not provide generic
// selection, even though they might set __STDC_VERSION__ to 201112L,
// when in -std=c11 mode. Thus, we must check for !defined __GNUC__
// when testing __STDC_VERSION__ for generic selection support.
// On the other hand, Clang also defines __GNUC__, so a clang-specific
// check is required to enable the use of generic selection.
// Designates a 1-based positional argument ref-index of pointer type
// that can be used to access size-index elements of the pointed-to
// array according to access mode, or at least one element when
// size-index is not provided:
// access (access-mode, <ref-index> [, <size-index>])
// For _FORTIFY_SOURCE == 3 we use __builtin_dynamic_object_size, which may
// use the access attribute to get object sizes from function definition
// arguments, so we can't use them on functions we fortify. Drop the object
// size hints for such functions.
// Designates dealloc as a function to call to deallocate objects
// allocated by the declared function.
// Specify that a function such as setjmp or vfork may return
// twice.
// If we don't have __REDIRECT, prototypes will be missing if
// __USE_FILE_OFFSET64 but not __USE_LARGEFILE[64].
// Decide whether we can define 'extern inline' functions in headers.
// This is here only because every header file already includes this one.
// Get the definitions of all the appropriate `__stub_FUNCTION' symbols.
// <gnu/stubs.h> contains `#define __stub_FUNCTION' when FUNCTION is a stub
// that will always return failure (and set errno to ENOSYS).
// This file is automatically generated.
// This file selects the right generated file of `__stub_FUNCTION' macros
// based on the architecture being compiled for.
// This file is automatically generated.
// It defines a symbol `__stub_FUNCTION' for each function
// in the C library which is a stub, meaning it will fail
// every time called, usually setting errno to ENOSYS.
// bits/types.h -- definitions of __*_t types underlying *_t types.
// Copyright (C) 2002-2022 Free Software Foundation, Inc.
// This file is part of the GNU C Library.
//
// The GNU C Library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public
// License as published by the Free Software Foundation; either
// version 2.1 of the License, or (at your option) any later version.
//
// The GNU C Library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
// Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public
// License along with the GNU C Library; if not, see
// <https://www.gnu.org/licenses/>.
// Never include this file directly; use <sys/types.h> instead.
// Copyright (C) 1991-2022 Free Software Foundation, Inc.
// This file is part of the GNU C Library.
//
// The GNU C Library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public
// License as published by the Free Software Foundation; either
// version 2.1 of the License, or (at your option) any later version.
//
// The GNU C Library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
// Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public
// License along with the GNU C Library; if not, see
// <https://www.gnu.org/licenses/>.
// Determine the wordsize from the preprocessor defines.
// Both x86-64 and x32 use the 64-bit system call interface.
// Bit size of the time_t type at glibc build time, x86-64 and x32 case.
// Copyright (C) 2018-2022 Free Software Foundation, Inc.
// This file is part of the GNU C Library.
//
// The GNU C Library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public
// License as published by the Free Software Foundation; either
// version 2.1 of the License, or (at your option) any later version.
//
// The GNU C Library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
// Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public
// License along with the GNU C Library; if not, see
// <https://www.gnu.org/licenses/>.
// Determine the wordsize from the preprocessor defines.
// Both x86-64 and x32 use the 64-bit system call interface.
// For others, time size is word size.
// Convenience types.
type T__u_char = uint8 /* types.h:31:23 */
type T__u_short = uint16 /* types.h:32:28 */
type T__u_int = uint32 /* types.h:33:22 */
type T__u_long = uint64 /* types.h:34:27 */
// Fixed-size types, underlying types depend on word size and compiler.
type T__int8_t = int8 /* types.h:37:21 */
type T__uint8_t = uint8 /* types.h:38:23 */
type T__int16_t = int16 /* types.h:39:26 */
type T__uint16_t = uint16 /* types.h:40:28 */
type T__int32_t = int32 /* types.h:41:20 */
type T__uint32_t = uint32 /* types.h:42:22 */
type T__int64_t = int64 /* types.h:44:25 */
type T__uint64_t = uint64 /* types.h:45:27 */
// Smallest types with at least a given width.
type T__int_least8_t = T__int8_t /* types.h:52:18 */
type T__uint_least8_t = T__uint8_t /* types.h:53:19 */
type T__int_least16_t = T__int16_t /* types.h:54:19 */
type T__uint_least16_t = T__uint16_t /* types.h:55:20 */
type T__int_least32_t = T__int32_t /* types.h:56:19 */
type T__uint_least32_t = T__uint32_t /* types.h:57:20 */
type T__int_least64_t = T__int64_t /* types.h:58:19 */
type T__uint_least64_t = T__uint64_t /* types.h:59:20 */
// quad_t is also 64 bits.
type T__quad_t = int64 /* types.h:63:18 */
type T__u_quad_t = uint64 /* types.h:64:27 */
// Largest integral types.
type T__intmax_t = int64 /* types.h:72:18 */
type T__uintmax_t = uint64 /* types.h:73:27 */
// The machine-dependent file <bits/typesizes.h> defines __*_T_TYPE
// macros for each of the OS types we define below. The definitions
// of those macros must use the following macros for underlying types.
// We define __S<SIZE>_TYPE and __U<SIZE>_TYPE for the signed and unsigned
// variants of each of the following integer types on this machine.
//
// 16 -- "natural" 16-bit type (always short)
// 32 -- "natural" 32-bit type (always int)
// 64 -- "natural" 64-bit type (long or long long)
// LONG32 -- 32-bit type, traditionally long
// QUAD -- 64-bit type, traditionally long long
// WORD -- natural type of __WORDSIZE bits (int or long)
// LONGWORD -- type of __WORDSIZE bits, traditionally long
//
// We distinguish WORD/LONGWORD, 32/LONG32, and 64/QUAD so that the
// conventional uses of `long' or `long long' type modifiers match the
// types we define, even when a less-adorned type would be the same size.
// This matters for (somewhat) portably writing printf/scanf formats for
// these types, where using the appropriate l or ll format modifiers can
// make the typedefs and the formats match up across all GNU platforms. If
// we used `long' when it's 64 bits where `long long' is expected, then the
// compiler would warn about the formats not matching the argument types,
// and the programmer changing them to shut up the compiler would break the
// program's portability.
//
// Here we assume what is presently the case in all the GCC configurations
// we support: long long is always 64 bits, long is always word/address size,
// and int is always 32 bits.
// No need to mark the typedef with __extension__.
// bits/typesizes.h -- underlying types for *_t. Linux/x86-64 version.
// Copyright (C) 2012-2022 Free Software Foundation, Inc.
// This file is part of the GNU C Library.
//
// The GNU C Library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public
// License as published by the Free Software Foundation; either
// version 2.1 of the License, or (at your option) any later version.
//
// The GNU C Library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
// Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public
// License along with the GNU C Library; if not, see
// <https://www.gnu.org/licenses/>.
// See <bits/types.h> for the meaning of these macros. This file exists so
// that <bits/types.h> need not vary across different GNU platforms.
// X32 kernel interface is 64-bit.
// Tell the libc code that off_t and off64_t are actually the same type
// for all ABI purposes, even if possibly expressed as different base types
// for C type-checking purposes.
// Same for ino_t and ino64_t.
// And for __rlim_t and __rlim64_t.
// And for fsblkcnt_t, fsblkcnt64_t, fsfilcnt_t and fsfilcnt64_t.
// And for getitimer, setitimer and rusage
// Number of descriptors that can fit in an `fd_set'.
// bits/time64.h -- underlying types for __time64_t. Generic version.
// Copyright (C) 2018-2022 Free Software Foundation, Inc.
// This file is part of the GNU C Library.
//
// The GNU C Library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public
// License as published by the Free Software Foundation; either
// version 2.1 of the License, or (at your option) any later version.
//
// The GNU C Library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
// Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public
// License along with the GNU C Library; if not, see
// <https://www.gnu.org/licenses/>.
// Define __TIME64_T_TYPE so that it is always a 64-bit type.
// If we already have 64-bit time type then use it.
type T__dev_t = uint64 /* types.h:145:25 */ // Type of device numbers.
type T__uid_t = uint32 /* types.h:146:25 */ // Type of user identifications.
type T__gid_t = uint32 /* types.h:147:25 */ // Type of group identifications.
type T__ino_t = uint64 /* types.h:148:25 */ // Type of file serial numbers.
type T__ino64_t = uint64 /* types.h:149:27 */ // Type of file serial numbers (LFS).
type T__mode_t = uint32 /* types.h:150:26 */ // Type of file attribute bitmasks.
type T__nlink_t = uint64 /* types.h:151:27 */ // Type of file link counts.
type T__off_t = int64 /* types.h:152:25 */ // Type of file sizes and offsets.
type T__off64_t = int64 /* types.h:153:27 */ // Type of file sizes and offsets (LFS).
type T__pid_t = int32 /* types.h:154:25 */ // Type of process identifications.
type T__fsid_t = struct{ F__val [2]int32 } /* types.h:155:26 */ // Type of file system IDs.
type T__clock_t = int64 /* types.h:156:27 */ // Type of CPU usage counts.
type T__rlim_t = uint64 /* types.h:157:26 */ // Type for resource measurement.
type T__rlim64_t = uint64 /* types.h:158:28 */ // Type for resource measurement (LFS).
type T__id_t = uint32 /* types.h:159:24 */ // General type for IDs.
type T__time_t = int64 /* types.h:160:26 */ // Seconds since the Epoch.
type T__useconds_t = uint32 /* types.h:161:30 */ // Count of microseconds.
type T__suseconds_t = int64 /* types.h:162:31 */ // Signed count of microseconds.
type T__suseconds64_t = int64 /* types.h:163:33 */
type T__daddr_t = int32 /* types.h:165:27 */ // The type of a disk address.
type T__key_t = int32 /* types.h:166:25 */ // Type of an IPC key.
// Clock ID used in clock and timer functions.
type T__clockid_t = int32 /* types.h:169:29 */
// Timer ID returned by `timer_create'.
type T__timer_t = uintptr /* types.h:172:12 */
// Type to represent block size.
type T__blksize_t = int64 /* types.h:175:29 */
// Types from the Large File Support interface.
// Type to count number of disk blocks.
type T__blkcnt_t = int64 /* types.h:180:28 */
type T__blkcnt64_t = int64 /* types.h:181:30 */
// Type to count file system blocks.
type T__fsblkcnt_t = uint64 /* types.h:184:30 */
type T__fsblkcnt64_t = uint64 /* types.h:185:32 */
// Type to count file system nodes.
type T__fsfilcnt_t = uint64 /* types.h:188:30 */
type T__fsfilcnt64_t = uint64 /* types.h:189:32 */
// Type of miscellaneous file system fields.
type T__fsword_t = int64 /* types.h:192:28 */
type T__ssize_t = int64 /* types.h:194:27 */ // Type of a byte count, or error.
// Signed long type used in system calls.
type T__syscall_slong_t = int64 /* types.h:197:33 */
// Unsigned long type used in system calls.
type T__syscall_ulong_t = uint64 /* types.h:199:33 */
// These few don't really vary by system, they always correspond
// to one of the other defined types.
type T__loff_t = T__off64_t /* types.h:203:19 */ // Type of file sizes and offsets (LFS).
type T__caddr_t = uintptr /* types.h:204:14 */
// Duplicates info from stdint.h but this is used in unistd.h.
type T__intptr_t = int64 /* types.h:207:25 */
// Duplicate info from sys/socket.h.
type T__socklen_t = uint32 /* types.h:210:23 */
// C99: An integer type that can be accessed as an atomic entity,
// even in the presence of asynchronous interrupts.
// It is not currently necessary for this to be machine-specific.
type T__sig_atomic_t = int32 /* types.h:215:13 */
// This code is needed for the optimized mapping functions.
// POSIX.1-2008 extended locale interface (see locale.h).
// Definition of locale_t.
// Copyright (C) 2017-2022 Free Software Foundation, Inc.
// This file is part of the GNU C Library.
//
// The GNU C Library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public
// License as published by the Free Software Foundation; either
// version 2.1 of the License, or (at your option) any later version.
//
// The GNU C Library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
// Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public
// License along with the GNU C Library; if not, see
// <https://www.gnu.org/licenses/>.
// Definition of struct __locale_struct and __locale_t.
// Copyright (C) 1997-2022 Free Software Foundation, Inc.
// This file is part of the GNU C Library.
//
// The GNU C Library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public
// License as published by the Free Software Foundation; either
// version 2.1 of the License, or (at your option) any later version.
//
// The GNU C Library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
// Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public
// License along with the GNU C Library; if not, see
// <https://www.gnu.org/licenses/>.
// POSIX.1-2008: the locale_t type, representing a locale context
// (implementation-namespace version). This type should be treated
// as opaque by applications; some details are exposed for the sake of
// efficiency in e.g. ctype functions.
type S__locale_struct = struct {
F__locales [13]uintptr
F__ctype_b uintptr
F__ctype_tolower uintptr
F__ctype_toupper uintptr
F__names [13]uintptr
} /* __locale_t.h:27:1 */
type T__locale_t = uintptr /* __locale_t.h:41:32 */
type Tlocale_t = T__locale_t /* locale_t.h:24:20 */
// A null pointer constant.
// Offset of member MEMBER in a struct of type TYPE.
// Type whose alignment is supported in every context and is at least
// as great as that of any standard type not using alignment
// specifiers.
type Tmax_align_t = struct {
F__max_align_ll int64
F__max_align_ld float64
} /* stddef.h:426:3 */
// Define ISO C stdio on top of C++ iostreams.
// Copyright (C) 1991-2022 Free Software Foundation, Inc.
// This file is part of the GNU C Library.
//
// The GNU C Library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public
// License as published by the Free Software Foundation; either
// version 2.1 of the License, or (at your option) any later version.
//
// The GNU C Library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
// Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public
// License along with the GNU C Library; if not, see
// <https://www.gnu.org/licenses/>.
// ISO C99 Standard: 7.19 Input/output <stdio.h>
// Handle feature test macros at the start of a header.
// Copyright (C) 2016-2022 Free Software Foundation, Inc.
// This file is part of the GNU C Library.
//
// The GNU C Library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public
// License as published by the Free Software Foundation; either
// version 2.1 of the License, or (at your option) any later version.
//
// The GNU C Library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
// Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public
// License along with the GNU C Library; if not, see
// <https://www.gnu.org/licenses/>.
// This header is internal to glibc and should not be included outside
// of glibc headers. Headers including it must define
// __GLIBC_INTERNAL_STARTING_HEADER_IMPLEMENTATION first. This header
// cannot have multiple include guards because ISO C feature test
// macros depend on the definition of the macro when an affected
// header is included, not when the first system header is
// included.
// Copyright (C) 1991-2022 Free Software Foundation, Inc.
// This file is part of the GNU C Library.
//
// The GNU C Library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public
// License as published by the Free Software Foundation; either
// version 2.1 of the License, or (at your option) any later version.
//
// The GNU C Library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
// Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public
// License along with the GNU C Library; if not, see
// <https://www.gnu.org/licenses/>.
// ISO/IEC TR 24731-2:2010 defines the __STDC_WANT_LIB_EXT2__
// macro.
// ISO/IEC TS 18661-1:2014 defines the __STDC_WANT_IEC_60559_BFP_EXT__
// macro. Most but not all symbols enabled by that macro in TS
// 18661-1 are enabled unconditionally in C2X. In C2X, the symbols in
// Annex F still require a new feature test macro
// __STDC_WANT_IEC_60559_EXT__ instead (C2X does not define
// __STDC_WANT_IEC_60559_BFP_EXT__), while a few features from TS
// 18661-1 are not included in C2X (and thus should depend on
// __STDC_WANT_IEC_60559_BFP_EXT__ even when C2X features are
// enabled).
//
// __GLIBC_USE (IEC_60559_BFP_EXT) controls those features from TS
// 18661-1 not included in C2X.
//
// __GLIBC_USE (IEC_60559_BFP_EXT_C2X) controls those features from TS
// 18661-1 that are also included in C2X (with no feature test macro
// required in C2X).
//
// __GLIBC_USE (IEC_60559_EXT) controls those features from TS 18661-1
// that are included in C2X but conditional on
// __STDC_WANT_IEC_60559_EXT__. (There are currently no features
// conditional on __STDC_WANT_IEC_60559_EXT__ that are not in TS
// 18661-1.)
// ISO/IEC TS 18661-4:2015 defines the
// __STDC_WANT_IEC_60559_FUNCS_EXT__ macro. Other than the reduction
// functions, the symbols from this TS are enabled unconditionally in
// C2X.
// ISO/IEC TS 18661-3:2015 defines the
// __STDC_WANT_IEC_60559_TYPES_EXT__ macro.
// Copyright (C) 1989-2021 Free Software Foundation, Inc.
//
// This file is part of GCC.
//
// GCC is free software; you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation; either version 3, or (at your option)
// any later version.
//
// GCC is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// Under Section 7 of GPL version 3, you are granted additional
// permissions described in the GCC Runtime Library Exception, version
// 3.1, as published by the Free Software Foundation.
//
// You should have received a copy of the GNU General Public License and
// a copy of the GCC Runtime Library Exception along with this program;
// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
// <http://www.gnu.org/licenses/>.
// ISO C Standard: 7.17 Common definitions <stddef.h>
// Any one of these symbols __need_* means that GNU libc
// wants us just to define one data type. So don't define
// the symbols that indicate this file's entire job has been done.
// This avoids lossage on SunOS but only if stdtypes.h comes first.
// There's no way to win with the other order! Sun lossage.
// Sequent's header files use _PTRDIFF_T_ in some conflicting way.
// Just ignore it.
// On VxWorks, <type/vxTypesBase.h> may have defined macros like
// _TYPE_size_t which will typedef size_t. fixincludes patched the
// vxTypesBase.h so that this macro is only defined if _GCC_SIZE_T is
// not defined, and so that defining this macro defines _GCC_SIZE_T.
// If we find that the macros are still defined at this point, we must
// invoke them so that the type is defined as expected.
// In case nobody has defined these types, but we aren't running under
// GCC 2.00, make sure that __PTRDIFF_TYPE__, __SIZE_TYPE__, and
// __WCHAR_TYPE__ have reasonable values. This can happen if the
// parts of GCC is compiled by an older compiler, that actually
// include gstddef.h, such as collect2.
// Signed type of difference of two pointers.
// Define this type if we are doing the whole job,
// or if we want this type in particular.
// If this symbol has done its job, get rid of it.
// Unsigned type of `sizeof' something.
// Define this type if we are doing the whole job,
// or if we want this type in particular.
// Wide character type.
// Locale-writers should change this as necessary to
// be big enough to hold unique values not between 0 and 127,
// and not (wchar_t) -1, for each defined multibyte character.
// Define this type if we are doing the whole job,
// or if we want this type in particular.
// A null pointer constant.
// Offset of member MEMBER in a struct of type TYPE.
// Copyright (C) 1989-2021 Free Software Foundation, Inc.
//
// This file is part of GCC.
//
// GCC is free software; you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation; either version 3, or (at your option)
// any later version.
//
// GCC is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// Under Section 7 of GPL version 3, you are granted additional
// permissions described in the GCC Runtime Library Exception, version
// 3.1, as published by the Free Software Foundation.
//
// You should have received a copy of the GNU General Public License and
// a copy of the GCC Runtime Library Exception along with this program;
// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
// <http://www.gnu.org/licenses/>.
// ISO C Standard: 7.15 Variable arguments <stdarg.h>
// Define __gnuc_va_list.
type T__gnuc_va_list = T__builtin_va_list /* stdarg.h:40:27 */
// Define the standard macros for the user,
// if this invocation was from the user program.
// bits/types.h -- definitions of __*_t types underlying *_t types.
// Copyright (C) 2002-2022 Free Software Foundation, Inc.
// This file is part of the GNU C Library.
//
// The GNU C Library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public
// License as published by the Free Software Foundation; either
// version 2.1 of the License, or (at your option) any later version.
//
// The GNU C Library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
// Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public
// License along with the GNU C Library; if not, see
// <https://www.gnu.org/licenses/>.
// Never include this file directly; use <sys/types.h> instead.
// bits/types.h -- definitions of __*_t types underlying *_t types.
// Copyright (C) 2002-2022 Free Software Foundation, Inc.
// This file is part of the GNU C Library.
//
// The GNU C Library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public
// License as published by the Free Software Foundation; either
// version 2.1 of the License, or (at your option) any later version.
//
// The GNU C Library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
// Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public
// License along with the GNU C Library; if not, see
// <https://www.gnu.org/licenses/>.
// Never include this file directly; use <sys/types.h> instead.
// Integral type unchanged by default argument promotions that can
// hold any value corresponding to members of the extended character
// set, as well as at least one value that does not correspond to any
// member of the extended character set.
// Conversion state information.
type T__mbstate_t = struct {
F__count int32
F__value struct{ F__wch uint32 }
} /* __mbstate_t.h:21:3 */
// The tag name of this struct is _G_fpos_t to preserve historic
// C++ mangled names for functions taking fpos_t arguments.
// That name should not be used in new code.
type S_G_fpos_t = struct {
F__pos T__off_t
F__state T__mbstate_t
} /* __fpos_t.h:10:9 */
// The tag name of this struct is _G_fpos_t to preserve historic
// C++ mangled names for functions taking fpos_t arguments.
// That name should not be used in new code.
type T__fpos_t = S_G_fpos_t /* __fpos_t.h:14:3 */
// bits/types.h -- definitions of __*_t types underlying *_t types.
// Copyright (C) 2002-2022 Free Software Foundation, Inc.
// This file is part of the GNU C Library.
//
// The GNU C Library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public
// License as published by the Free Software Foundation; either
// version 2.1 of the License, or (at your option) any later version.
//
// The GNU C Library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
// Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public
// License along with the GNU C Library; if not, see
// <https://www.gnu.org/licenses/>.
// Never include this file directly; use <sys/types.h> instead.
// The tag name of this struct is _G_fpos64_t to preserve historic
// C++ mangled names for functions taking fpos_t and/or fpos64_t
// arguments. That name should not be used in new code.
type S_G_fpos64_t = struct {
F__pos T__off64_t
F__state T__mbstate_t
} /* __fpos64_t.h:10:9 */
// bits/types.h -- definitions of __*_t types underlying *_t types.
// Copyright (C) 2002-2022 Free Software Foundation, Inc.
// This file is part of the GNU C Library.
//
// The GNU C Library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public
// License as published by the Free Software Foundation; either
// version 2.1 of the License, or (at your option) any later version.
//
// The GNU C Library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
// Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public
// License along with the GNU C Library; if not, see
// <https://www.gnu.org/licenses/>.
// Never include this file directly; use <sys/types.h> instead.
// The tag name of this struct is _G_fpos64_t to preserve historic
// C++ mangled names for functions taking fpos_t and/or fpos64_t
// arguments. That name should not be used in new code.
type T__fpos64_t = S_G_fpos64_t /* __fpos64_t.h:14:3 */
type S_IO_FILE = struct {
F_flags int32
F__ccgo_pad1 [4]byte
F_IO_read_ptr uintptr
F_IO_read_end uintptr
F_IO_read_base uintptr
F_IO_write_base uintptr
F_IO_write_ptr uintptr
F_IO_write_end uintptr
F_IO_buf_base uintptr
F_IO_buf_end uintptr
F_IO_save_base uintptr
F_IO_backup_base uintptr
F_IO_save_end uintptr
F_markers uintptr
F_chain uintptr
F_fileno int32
F_flags2 int32
F_old_offset T__off_t
F_cur_column uint16
F_vtable_offset int8
F_shortbuf [1]int8
F__ccgo_pad2 [4]byte
F_lock uintptr
F_offset T__off64_t
F_codecvt uintptr
F_wide_data uintptr
F_freeres_list uintptr
F_freeres_buf uintptr
F__pad5 Tsize_t
F_mode int32
F_unused2 [20]int8
} /* __FILE.h:4:1 */
type T__FILE = S_IO_FILE /* __FILE.h:5:25 */
// The opaque type of streams. This is the definition used elsewhere.
type TFILE = S_IO_FILE /* FILE.h:7:25 */
// The structure with the cookie function pointers.
// The tag name of this struct is _IO_cookie_io_functions_t to
// preserve historic C++ mangled names for functions taking
// cookie_io_functions_t arguments. That name should not be used in
// new code.
type S_IO_cookie_io_functions_t = struct {
Fread uintptr
Fwrite uintptr
Fseek uintptr
Fclose uintptr
} /* cookie_io_functions_t.h:55:9 */
// The structure with the cookie function pointers.
// The tag name of this struct is _IO_cookie_io_functions_t to
// preserve historic C++ mangled names for functions taking
// cookie_io_functions_t arguments. That name should not be used in
// new code.
type Tcookie_io_functions_t = S_IO_cookie_io_functions_t /* cookie_io_functions_t.h:61:3 */
type Tva_list = T__gnuc_va_list /* stdio.h:52:24 */
type Toff_t = T__off64_t /* stdio.h:65:19 */
type Toff64_t = T__off64_t /* stdio.h:70:19 */
type Tssize_t = T__ssize_t /* stdio.h:77:19 */
// The type of the second argument to `fgetpos' and `fsetpos'.
type Tfpos_t = T__fpos64_t /* stdio.h:86:20 */
type Tfpos64_t = T__fpos64_t /* stdio.h:89:20 */
// If we are compiling with optimizing read this file. It contains
// several optimizing inline functions and macros.
// Macros to control TS 18661-3 glibc features on x86.
// Copyright (C) 2017-2022 Free Software Foundation, Inc.
// This file is part of the GNU C Library.
//
// The GNU C Library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public
// License as published by the Free Software Foundation; either
// version 2.1 of the License, or (at your option) any later version.
//
// The GNU C Library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
// Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public
// License along with the GNU C Library; if not, see
// <https://www.gnu.org/licenses/>.
// Copyright (C) 1991-2022 Free Software Foundation, Inc.
// Copyright The GNU Toolchain Authors.
// This file is part of the GNU C Library.
//
// The GNU C Library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public
// License as published by the Free Software Foundation; either
// version 2.1 of the License, or (at your option) any later version.
//
// The GNU C Library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
// Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public
// License along with the GNU C Library; if not, see
// <https://www.gnu.org/licenses/>.
// ISO C99 Standard: 7.20 General utilities <stdlib.h>
// Handle feature test macros at the start of a header.
// Copyright (C) 2016-2022 Free Software Foundation, Inc.
// This file is part of the GNU C Library.
//
// The GNU C Library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public
// License as published by the Free Software Foundation; either
// version 2.1 of the License, or (at your option) any later version.
//
// The GNU C Library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
// Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public
// License along with the GNU C Library; if not, see
// <https://www.gnu.org/licenses/>.
// This header is internal to glibc and should not be included outside
// of glibc headers. Headers including it must define
// __GLIBC_INTERNAL_STARTING_HEADER_IMPLEMENTATION first. This header
// cannot have multiple include guards because ISO C feature test
// macros depend on the definition of the macro when an affected
// header is included, not when the first system header is
// included.
// Copyright (C) 1991-2022 Free Software Foundation, Inc.
// This file is part of the GNU C Library.
//
// The GNU C Library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public
// License as published by the Free Software Foundation; either
// version 2.1 of the License, or (at your option) any later version.
//
// The GNU C Library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
// Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public
// License along with the GNU C Library; if not, see
// <https://www.gnu.org/licenses/>.
// ISO/IEC TR 24731-2:2010 defines the __STDC_WANT_LIB_EXT2__
// macro.
// ISO/IEC TS 18661-1:2014 defines the __STDC_WANT_IEC_60559_BFP_EXT__
// macro. Most but not all symbols enabled by that macro in TS
// 18661-1 are enabled unconditionally in C2X. In C2X, the symbols in
// Annex F still require a new feature test macro
// __STDC_WANT_IEC_60559_EXT__ instead (C2X does not define
// __STDC_WANT_IEC_60559_BFP_EXT__), while a few features from TS
// 18661-1 are not included in C2X (and thus should depend on
// __STDC_WANT_IEC_60559_BFP_EXT__ even when C2X features are
// enabled).
//
// __GLIBC_USE (IEC_60559_BFP_EXT) controls those features from TS
// 18661-1 not included in C2X.
//
// __GLIBC_USE (IEC_60559_BFP_EXT_C2X) controls those features from TS
// 18661-1 that are also included in C2X (with no feature test macro
// required in C2X).
//
// __GLIBC_USE (IEC_60559_EXT) controls those features from TS 18661-1
// that are included in C2X but conditional on
// __STDC_WANT_IEC_60559_EXT__. (There are currently no features
// conditional on __STDC_WANT_IEC_60559_EXT__ that are not in TS
// 18661-1.)
// ISO/IEC TS 18661-4:2015 defines the
// __STDC_WANT_IEC_60559_FUNCS_EXT__ macro. Other than the reduction
// functions, the symbols from this TS are enabled unconditionally in
// C2X.
// ISO/IEC TS 18661-3:2015 defines the
// __STDC_WANT_IEC_60559_TYPES_EXT__ macro.
// Get size_t, wchar_t and NULL from <stddef.h>.
// Copyright (C) 1989-2021 Free Software Foundation, Inc.
//
// This file is part of GCC.
//
// GCC is free software; you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation; either version 3, or (at your option)
// any later version.
//
// GCC is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// Under Section 7 of GPL version 3, you are granted additional
// permissions described in the GCC Runtime Library Exception, version
// 3.1, as published by the Free Software Foundation.
//
// You should have received a copy of the GNU General Public License and
// a copy of the GCC Runtime Library Exception along with this program;
// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
// <http://www.gnu.org/licenses/>.
// ISO C Standard: 7.17 Common definitions <stddef.h>
// Any one of these symbols __need_* means that GNU libc
// wants us just to define one data type. So don't define
// the symbols that indicate this file's entire job has been done.
// This avoids lossage on SunOS but only if stdtypes.h comes first.
// There's no way to win with the other order! Sun lossage.
// Sequent's header files use _PTRDIFF_T_ in some conflicting way.
// Just ignore it.
// On VxWorks, <type/vxTypesBase.h> may have defined macros like
// _TYPE_size_t which will typedef size_t. fixincludes patched the
// vxTypesBase.h so that this macro is only defined if _GCC_SIZE_T is
// not defined, and so that defining this macro defines _GCC_SIZE_T.
// If we find that the macros are still defined at this point, we must
// invoke them so that the type is defined as expected.
// In case nobody has defined these types, but we aren't running under
// GCC 2.00, make sure that __PTRDIFF_TYPE__, __SIZE_TYPE__, and
// __WCHAR_TYPE__ have reasonable values. This can happen if the
// parts of GCC is compiled by an older compiler, that actually
// include gstddef.h, such as collect2.
// Signed type of difference of two pointers.
// Define this type if we are doing the whole job,
// or if we want this type in particular.
// If this symbol has done its job, get rid of it.
// Unsigned type of `sizeof' something.
// Define this type if we are doing the whole job,
// or if we want this type in particular.
// Wide character type.
// Locale-writers should change this as necessary to
// be big enough to hold unique values not between 0 and 127,
// and not (wchar_t) -1, for each defined multibyte character.
// Define this type if we are doing the whole job,
// or if we want this type in particular.
// A null pointer constant.
// Offset of member MEMBER in a struct of type TYPE.
// XPG requires a few symbols from <sys/wait.h> being defined.
// Definitions of flag bits for `waitpid' et al.
// Copyright (C) 1992-2022 Free Software Foundation, Inc.
// This file is part of the GNU C Library.
//
// The GNU C Library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public
// License as published by the Free Software Foundation; either
// version 2.1 of the License, or (at your option) any later version.
//
// The GNU C Library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
// Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public
// License along with the GNU C Library; if not, see
// <https://www.gnu.org/licenses/>.
// Bits in the third argument to `waitpid'.
// Bits in the fourth argument to `waitid'.
// Definitions of status bits for `wait' et al.
// Copyright (C) 1992-2022 Free Software Foundation, Inc.
// This file is part of the GNU C Library.
//
// The GNU C Library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public
// License as published by the Free Software Foundation; either
// version 2.1 of the License, or (at your option) any later version.
//
// The GNU C Library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
// Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public
// License along with the GNU C Library; if not, see
// <https://www.gnu.org/licenses/>.
// Everything extant so far uses these same bits.
// If WIFEXITED(STATUS), the low-order 8 bits of the status.
// If WIFSIGNALED(STATUS), the terminating signal.
// If WIFSTOPPED(STATUS), the signal that stopped the child.
// Nonzero if STATUS indicates normal termination.
// Nonzero if STATUS indicates termination by a signal.
// Nonzero if STATUS indicates the child is stopped.
// Nonzero if STATUS indicates the child continued after a stop. We only
// define this if <bits/waitflags.h> provides the WCONTINUED flag bit.
// Nonzero if STATUS indicates the child dumped core.
// Macros for constructing status values.
// Define the macros <sys/wait.h> also would define this way.
// _FloatN API tests for enablement.
// Macros to control TS 18661-3 glibc features on x86.
// Copyright (C) 2017-2022 Free Software Foundation, Inc.
// This file is part of the GNU C Library.
//
// The GNU C Library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public
// License as published by the Free Software Foundation; either
// version 2.1 of the License, or (at your option) any later version.
//
// The GNU C Library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
// Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public
// License along with the GNU C Library; if not, see
// <https://www.gnu.org/licenses/>.
// Returned by `div'.
type Tdiv_t = struct {
Fquot int32
Frem int32
} /* stdlib.h:63:5 */
// Returned by `ldiv'.
type Tldiv_t = struct {
Fquot int64
Frem int64
} /* stdlib.h:71:5 */
// Returned by `lldiv'.
type Tlldiv_t = struct {
Fquot int64
Frem int64
} /* stdlib.h:81:5 */
// Copyright (C) 1991-2022 Free Software Foundation, Inc.
// This file is part of the GNU C Library.
//
// The GNU C Library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public
// License as published by the Free Software Foundation; either
// version 2.1 of the License, or (at your option) any later version.
//
// The GNU C Library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
// Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public
// License along with the GNU C Library; if not, see
// <https://www.gnu.org/licenses/>.
// POSIX Standard: 2.6 Primitive System Data Types <sys/types.h>
// Copyright (C) 1991-2022 Free Software Foundation, Inc.
// This file is part of the GNU C Library.
//
// The GNU C Library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public
// License as published by the Free Software Foundation; either
// version 2.1 of the License, or (at your option) any later version.
//
// The GNU C Library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
// Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public
// License along with the GNU C Library; if not, see
// <https://www.gnu.org/licenses/>.
// bits/types.h -- definitions of __*_t types underlying *_t types.
// Copyright (C) 2002-2022 Free Software Foundation, Inc.
// This file is part of the GNU C Library.
//
// The GNU C Library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public
// License as published by the Free Software Foundation; either
// version 2.1 of the License, or (at your option) any later version.
//
// The GNU C Library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
// Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public
// License along with the GNU C Library; if not, see
// <https://www.gnu.org/licenses/>.
// Never include this file directly; use <sys/types.h> instead.
type Tu_char = T__u_char /* types.h:33:18 */
type Tu_short = T__u_short /* types.h:34:19 */
type Tu_int = T__u_int /* types.h:35:17 */
type Tu_long = T__u_long /* types.h:36:18 */
type Tquad_t = T__quad_t /* types.h:37:18 */
type Tu_quad_t = T__u_quad_t /* types.h:38:20 */
type Tfsid_t = T__fsid_t /* types.h:39:18 */
type Tloff_t = T__loff_t /* types.h:42:18 */
type Tino_t = T__ino64_t /* types.h:49:19 */
type Tino64_t = T__ino64_t /* types.h:54:19 */
type Tdev_t = T__dev_t /* types.h:59:17 */
type Tgid_t = T__gid_t /* types.h:64:17 */
type Tmode_t = T__mode_t /* types.h:69:18 */
type Tnlink_t = T__nlink_t /* types.h:74:19 */
type Tuid_t = T__uid_t /* types.h:79:17 */
type Tpid_t = T__pid_t /* types.h:97:17 */
type Tid_t = T__id_t /* types.h:103:16 */
type Tdaddr_t = T__daddr_t /* types.h:114:19 */
type Tcaddr_t = T__caddr_t /* types.h:115:19 */
type Tkey_t = T__key_t /* types.h:121:17 */
// bits/types.h -- definitions of __*_t types underlying *_t types.
// Copyright (C) 2002-2022 Free Software Foundation, Inc.
// This file is part of the GNU C Library.
//
// The GNU C Library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public
// License as published by the Free Software Foundation; either
// version 2.1 of the License, or (at your option) any later version.
//
// The GNU C Library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
// Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public
// License along with the GNU C Library; if not, see
// <https://www.gnu.org/licenses/>.
// Never include this file directly; use <sys/types.h> instead.
// Returned by `clock'.
type Tclock_t = T__clock_t /* clock_t.h:7:19 */
// bits/types.h -- definitions of __*_t types underlying *_t types.
// Copyright (C) 2002-2022 Free Software Foundation, Inc.
// This file is part of the GNU C Library.
//
// The GNU C Library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public
// License as published by the Free Software Foundation; either
// version 2.1 of the License, or (at your option) any later version.
//
// The GNU C Library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
// Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public
// License along with the GNU C Library; if not, see
// <https://www.gnu.org/licenses/>.
// Never include this file directly; use <sys/types.h> instead.
// Clock ID used in clock and timer functions.
type Tclockid_t = T__clockid_t /* clockid_t.h:7:21 */
// bits/types.h -- definitions of __*_t types underlying *_t types.
// Copyright (C) 2002-2022 Free Software Foundation, Inc.
// This file is part of the GNU C Library.
//
// The GNU C Library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public
// License as published by the Free Software Foundation; either
// version 2.1 of the License, or (at your option) any later version.
//
// The GNU C Library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
// Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public
// License along with the GNU C Library; if not, see
// <https://www.gnu.org/licenses/>.
// Never include this file directly; use <sys/types.h> instead.
// Returned by `time'.
type Ttime_t = T__time_t /* time_t.h:10:18 */
// bits/types.h -- definitions of __*_t types underlying *_t types.
// Copyright (C) 2002-2022 Free Software Foundation, Inc.
// This file is part of the GNU C Library.
//
// The GNU C Library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public
// License as published by the Free Software Foundation; either
// version 2.1 of the License, or (at your option) any later version.
//
// The GNU C Library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
// Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public
// License along with the GNU C Library; if not, see
// <https://www.gnu.org/licenses/>.
// Never include this file directly; use <sys/types.h> instead.
// Timer ID returned by `timer_create'.
type Ttimer_t = T__timer_t /* timer_t.h:7:19 */
type Tuseconds_t = T__useconds_t /* types.h:134:22 */
type Tsuseconds_t = T__suseconds_t /* types.h:138:23 */
// Copyright (C) 1989-2021 Free Software Foundation, Inc.
//
// This file is part of GCC.
//
// GCC is free software; you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation; either version 3, or (at your option)
// any later version.
//
// GCC is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// Under Section 7 of GPL version 3, you are granted additional
// permissions described in the GCC Runtime Library Exception, version
// 3.1, as published by the Free Software Foundation.
//
// You should have received a copy of the GNU General Public License and
// a copy of the GCC Runtime Library Exception along with this program;
// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
// <http://www.gnu.org/licenses/>.
// ISO C Standard: 7.17 Common definitions <stddef.h>
// Any one of these symbols __need_* means that GNU libc
// wants us just to define one data type. So don't define
// the symbols that indicate this file's entire job has been done.
// This avoids lossage on SunOS but only if stdtypes.h comes first.
// There's no way to win with the other order! Sun lossage.
// Sequent's header files use _PTRDIFF_T_ in some conflicting way.
// Just ignore it.
// On VxWorks, <type/vxTypesBase.h> may have defined macros like
// _TYPE_size_t which will typedef size_t. fixincludes patched the
// vxTypesBase.h so that this macro is only defined if _GCC_SIZE_T is
// not defined, and so that defining this macro defines _GCC_SIZE_T.
// If we find that the macros are still defined at this point, we must
// invoke them so that the type is defined as expected.
// In case nobody has defined these types, but we aren't running under
// GCC 2.00, make sure that __PTRDIFF_TYPE__, __SIZE_TYPE__, and
// __WCHAR_TYPE__ have reasonable values. This can happen if the
// parts of GCC is compiled by an older compiler, that actually
// include gstddef.h, such as collect2.
// Signed type of difference of two pointers.
// Define this type if we are doing the whole job,
// or if we want this type in particular.
// If this symbol has done its job, get rid of it.
// Unsigned type of `sizeof' something.
// Define this type if we are doing the whole job,
// or if we want this type in particular.
// Wide character type.
// Locale-writers should change this as necessary to
// be big enough to hold unique values not between 0 and 127,
// and not (wchar_t) -1, for each defined multibyte character.
// Define this type if we are doing the whole job,
// or if we want this type in particular.
// A null pointer constant.
// Offset of member MEMBER in a struct of type TYPE.
// Old compatibility names for C types.
type Tulong = uint64 /* types.h:148:27 */
type Tushort = uint16 /* types.h:149:28 */
type Tuint = uint32 /* types.h:150:22 */
// These size-specific names are used by some of the inet code.
// Define intN_t types.
// Copyright (C) 2017-2022 Free Software Foundation, Inc.
// This file is part of the GNU C Library.
//
// The GNU C Library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public
// License as published by the Free Software Foundation; either
// version 2.1 of the License, or (at your option) any later version.
//
// The GNU C Library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
// Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public
// License along with the GNU C Library; if not, see
// <https://www.gnu.org/licenses/>.
// bits/types.h -- definitions of __*_t types underlying *_t types.
// Copyright (C) 2002-2022 Free Software Foundation, Inc.
// This file is part of the GNU C Library.
//
// The GNU C Library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public
// License as published by the Free Software Foundation; either
// version 2.1 of the License, or (at your option) any later version.
//
// The GNU C Library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
// Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public
// License along with the GNU C Library; if not, see
// <https://www.gnu.org/licenses/>.
// Never include this file directly; use <sys/types.h> instead.
type Tint8_t = T__int8_t /* stdint-intn.h:24:18 */
type Tint16_t = T__int16_t /* stdint-intn.h:25:19 */
type Tint32_t = T__int32_t /* stdint-intn.h:26:19 */
type Tint64_t = T__int64_t /* stdint-intn.h:27:19 */
// These were defined by ISO C without the first `_'.
type Tu_int8_t = T__uint8_t /* types.h:158:19 */
type Tu_int16_t = T__uint16_t /* types.h:159:20 */
type Tu_int32_t = T__uint32_t /* types.h:160:20 */
type Tu_int64_t = T__uint64_t /* types.h:161:20 */
type Tregister_t = int32 /* types.h:164:13 */
// It also defines `fd_set' and the FD_* macros for `select'.
// `fd_set' type and related macros, and `select'/`pselect' declarations.
// Copyright (C) 1996-2022 Free Software Foundation, Inc.
// This file is part of the GNU C Library.
//
// The GNU C Library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public
// License as published by the Free Software Foundation; either
// version 2.1 of the License, or (at your option) any later version.
//
// The GNU C Library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
// Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public
// License along with the GNU C Library; if not, see
// <https://www.gnu.org/licenses/>.
// POSIX 1003.1g: 6.2 Select from File Descriptor Sets <sys/select.h>
// Copyright (C) 1991-2022 Free Software Foundation, Inc.
// This file is part of the GNU C Library.
//
// The GNU C Library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public
// License as published by the Free Software Foundation; either
// version 2.1 of the License, or (at your option) any later version.
//
// The GNU C Library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
// Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public
// License along with the GNU C Library; if not, see
// <https://www.gnu.org/licenses/>.
// Get definition of needed basic types.
// bits/types.h -- definitions of __*_t types underlying *_t types.
// Copyright (C) 2002-2022 Free Software Foundation, Inc.
// This file is part of the GNU C Library.
//
// The GNU C Library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public
// License as published by the Free Software Foundation; either
// version 2.1 of the License, or (at your option) any later version.
//
// The GNU C Library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
// Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public
// License along with the GNU C Library; if not, see
// <https://www.gnu.org/licenses/>.
// Never include this file directly; use <sys/types.h> instead.
// Get __FD_* definitions.
// Copyright (C) 1997-2022 Free Software Foundation, Inc.
// This file is part of the GNU C Library.
//
// The GNU C Library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public
// License as published by the Free Software Foundation; either
// version 2.1 of the License, or (at your option) any later version.
//
// The GNU C Library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
// Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public
// License along with the GNU C Library; if not, see
// <https://www.gnu.org/licenses/>.
// We don't use `memset' because this would require a prototype and
// the array isn't too big.
// Get sigset_t.
type T__sigset_t = struct{ F__val [16]uint64 } /* __sigset_t.h:8:3 */
// A set of signals to be blocked, unblocked, or waited for.
type Tsigset_t = T__sigset_t /* sigset_t.h:7:20 */
// Get definition of timer specification structures.
// bits/types.h -- definitions of __*_t types underlying *_t types.
// Copyright (C) 2002-2022 Free Software Foundation, Inc.
// This file is part of the GNU C Library.
//
// The GNU C Library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public
// License as published by the Free Software Foundation; either
// version 2.1 of the License, or (at your option) any later version.
//
// The GNU C Library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
// Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public
// License along with the GNU C Library; if not, see
// <https://www.gnu.org/licenses/>.
// Never include this file directly; use <sys/types.h> instead.
// A time value that is accurate to the nearest
// microsecond but also has a range of years.
type Stimeval = struct {
Ftv_sec T__time_t
Ftv_usec T__suseconds_t
} /* struct_timeval.h:8:1 */
// NB: Include guard matches what <linux/time.h> uses.
// bits/types.h -- definitions of __*_t types underlying *_t types.
// Copyright (C) 2002-2022 Free Software Foundation, Inc.
// This file is part of the GNU C Library.
//
// The GNU C Library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public
// License as published by the Free Software Foundation; either
// version 2.1 of the License, or (at your option) any later version.
//
// The GNU C Library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
// Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public
// License along with the GNU C Library; if not, see
// <https://www.gnu.org/licenses/>.
// Never include this file directly; use <sys/types.h> instead.
// Endian macros for string.h functions
// Copyright (C) 1992-2022 Free Software Foundation, Inc.
// This file is part of the GNU C Library.
//
// The GNU C Library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public
// License as published by the Free Software Foundation; either
// version 2.1 of the License, or (at your option) any later version.
//
// The GNU C Library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
// Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public
// License along with the GNU C Library; if not, see
// <http://www.gnu.org/licenses/>.
// POSIX.1b structure for a time value. This is like a `struct timeval' but
// has nanoseconds instead of microseconds.
type Stimespec = struct {
Ftv_sec T__time_t
Ftv_nsec T__syscall_slong_t
} /* struct_timespec.h:11:1 */
// The fd_set member is required to be an array of longs.
type T__fd_mask = int64 /* select.h:49:18 */
// Some versions of <linux/posix_types.h> define this macros.
// It's easier to assume 8-bit bytes than to get CHAR_BIT.
// fd_set for select and pselect.
type Tfd_set = struct{ Ffds_bits [16]T__fd_mask } /* select.h:70:5 */
// Maximum number of file descriptors in `fd_set'.
// Sometimes the fd_set member is assumed to have this type.
type Tfd_mask = T__fd_mask /* select.h:77:19 */
// Define some inlines helping to catch common problems.
type Tblksize_t = T__blksize_t /* types.h:185:21 */
// Types from the Large File Support interface.
type Tblkcnt_t = T__blkcnt64_t /* types.h:205:22 */ // Type to count number of disk blocks.
type Tfsblkcnt_t = T__fsblkcnt64_t /* types.h:209:24 */ // Type to count file system blocks.
type Tfsfilcnt_t = T__fsfilcnt64_t /* types.h:213:24 */ // Type to count file system inodes.
type Tblkcnt64_t = T__blkcnt64_t /* types.h:219:22 */ // Type to count number of disk blocks.
type Tfsblkcnt64_t = T__fsblkcnt64_t /* types.h:220:24 */ // Type to count file system blocks.
type Tfsfilcnt64_t = T__fsfilcnt64_t /* types.h:221:24 */ // Type to count file system inodes.
// Now add the thread types.
// Declaration of common pthread types for all architectures.
// Copyright (C) 2017-2022 Free Software Foundation, Inc.
// This file is part of the GNU C Library.
//
// The GNU C Library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public
// License as published by the Free Software Foundation; either
// version 2.1 of the License, or (at your option) any later version.
//
// The GNU C Library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
// Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public
// License along with the GNU C Library; if not, see
// <https://www.gnu.org/licenses/>.
// For internal mutex and condition variable definitions.
// Common threading primitives definitions for both POSIX and C11.
// Copyright (C) 2017-2022 Free Software Foundation, Inc.
// This file is part of the GNU C Library.
//
// The GNU C Library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public
// License as published by the Free Software Foundation; either
// version 2.1 of the License, or (at your option) any later version.
//
// The GNU C Library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
// Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public
// License along with the GNU C Library; if not, see
// <https://www.gnu.org/licenses/>.
// Arch-specific definitions. Each architecture must define the following
// macros to define the expected sizes of pthread data types:
//
// __SIZEOF_PTHREAD_ATTR_T - size of pthread_attr_t.
// __SIZEOF_PTHREAD_MUTEX_T - size of pthread_mutex_t.
// __SIZEOF_PTHREAD_MUTEXATTR_T - size of pthread_mutexattr_t.
// __SIZEOF_PTHREAD_COND_T - size of pthread_cond_t.
// __SIZEOF_PTHREAD_CONDATTR_T - size of pthread_condattr_t.
// __SIZEOF_PTHREAD_RWLOCK_T - size of pthread_rwlock_t.
// __SIZEOF_PTHREAD_RWLOCKATTR_T - size of pthread_rwlockattr_t.
// __SIZEOF_PTHREAD_BARRIER_T - size of pthread_barrier_t.
// __SIZEOF_PTHREAD_BARRIERATTR_T - size of pthread_barrierattr_t.
//
// The additional macro defines any constraint for the lock alignment
// inside the thread structures:
//
// __LOCK_ALIGNMENT - for internal lock/futex usage.
//
// Same idea but for the once locking primitive:
//
// __ONCE_ALIGNMENT - for pthread_once_t/once_flag definition.
// Copyright (C) 2002-2022 Free Software Foundation, Inc.
// This file is part of the GNU C Library.
//
// The GNU C Library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public
// License as published by the Free Software Foundation; either
// version 2.1 of the License, or (at your option) any later version.
//
// The GNU C Library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
// Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public
// License along with the GNU C Library; if not, see
// <https://www.gnu.org/licenses/>.
// Determine the wordsize from the preprocessor defines.
// Both x86-64 and x32 use the 64-bit system call interface.
// Monotonically increasing wide counters (at least 62 bits).
// Copyright (C) 2016-2022 Free Software Foundation, Inc.
// This file is part of the GNU C Library.
//
// The GNU C Library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public
// License as published by the Free Software Foundation; either
// version 2.1 of the License, or (at your option) any later version.
//
// The GNU C Library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
// Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public
// License along with the GNU C Library; if not, see
// <https://www.gnu.org/licenses/>.
// Counter that is monotonically increasing (by less than 2**31 per
// increment), with a single writer, and an arbitrary number of
// readers.
type T__atomic_wide_counter = struct{ F__value64 uint64 } /* atomic_wide_counter.h:33:3 */
// Common definition of pthread_mutex_t.
type S__pthread_internal_list = struct {
F__prev uintptr
F__next uintptr
} /* thread-shared-types.h:51:9 */
// Common definition of pthread_mutex_t.
type T__pthread_list_t = S__pthread_internal_list /* thread-shared-types.h:55:3 */
type S__pthread_internal_slist = struct{ F__next uintptr } /* thread-shared-types.h:57:9 */
type T__pthread_slist_t = S__pthread_internal_slist /* thread-shared-types.h:60:3 */
// Arch-specific mutex definitions. A generic implementation is provided
// by sysdeps/nptl/bits/struct_mutex.h. If required, an architecture
// can override it by defining:
//
// 1. struct __pthread_mutex_s (used on both pthread_mutex_t and mtx_t
// definition). It should contains at least the internal members
// defined in the generic version.
//
// 2. __LOCK_ALIGNMENT for any extra attribute for internal lock used with
// atomic operations.
//
// 3. The macro __PTHREAD_MUTEX_INITIALIZER used for static initialization.
// It should initialize the mutex internal flag.
// x86 internal mutex struct definitions.
// Copyright (C) 2019-2022 Free Software Foundation, Inc.
// This file is part of the GNU C Library.
//
// The GNU C Library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public
// License as published by the Free Software Foundation; either
// version 2.1 of the License, or (at your option) any later version.
//
// The GNU C Library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
// Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public
// License along with the GNU C Library; if not, see
// <http://www.gnu.org/licenses/>.
type S__pthread_mutex_s = struct {
F__lock int32
F__count uint32
F__owner int32
F__nusers uint32
F__kind int32
F__spins int16
F__elision int16
F__list T__pthread_list_t
} /* struct_mutex.h:22:1 */
// Arch-sepecific read-write lock definitions. A generic implementation is
// provided by struct_rwlock.h. If required, an architecture can override it
// by defining:
//
// 1. struct __pthread_rwlock_arch_t (used on pthread_rwlock_t definition).
// It should contain at least the internal members defined in the
// generic version.
//
// 2. The macro __PTHREAD_RWLOCK_INITIALIZER used for static initialization.
// It should initialize the rwlock internal type.
// x86 internal rwlock struct definitions.
// Copyright (C) 2019-2022 Free Software Foundation, Inc.
//
// This file is part of the GNU C Library.
//
// The GNU C Library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public
// License as published by the Free Software Foundation; either
// version 2.1 of the License, or (at your option) any later version.
//
// The GNU C Library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
// Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public
// License along with the GNU C Library; if not, see
// <http://www.gnu.org/licenses/>.
type S__pthread_rwlock_arch_t = struct {
F__readers uint32
F__writers uint32
F__wrphase_futex uint32
F__writers_futex uint32
F__pad3 uint32
F__pad4 uint32
F__cur_writer int32
F__shared int32
F__rwelision int8
F__pad1 [7]uint8
F__pad2 uint64
F__flags uint32
F__ccgo_pad1 [4]byte
} /* struct_rwlock.h:23:1 */
// Common definition of pthread_cond_t.
type S__pthread_cond_s = struct {
F__wseq T__atomic_wide_counter
F__g1_start T__atomic_wide_counter
F__g_refs [2]uint32
F__g_size [2]uint32
F__g1_orig_size uint32
F__wrefs uint32
F__g_signals [2]uint32
} /* thread-shared-types.h:94:1 */
type T__tss_t = uint32 /* thread-shared-types.h:105:22 */
type T__thrd_t = uint64 /* thread-shared-types.h:106:27 */
type T__once_flag = struct{ F__data int32 } /* thread-shared-types.h:111:3 */
// Thread identifiers. The structure of the attribute type is not
// exposed on purpose.
type Tpthread_t = uint64 /* pthreadtypes.h:27:27 */
// Data structures for mutex handling. The structure of the attribute
// type is not exposed on purpose.
type Tpthread_mutexattr_t = struct {
F__ccgo_pad1 [0]uint32
F__size [4]int8
} /* pthreadtypes.h:36:3 */
// Data structure for condition variable handling. The structure of
// the attribute type is not exposed on purpose.
type Tpthread_condattr_t = struct {
F__ccgo_pad1 [0]uint32
F__size [4]int8
} /* pthreadtypes.h:45:3 */
// Keys for thread-specific data
type Tpthread_key_t = uint32 /* pthreadtypes.h:49:22 */
// Once-only execution
type Tpthread_once_t = int32 /* pthreadtypes.h:53:30 */
type Spthread_attr_t = struct {
F__ccgo_pad1 [0]uint64
F__size [56]int8
} /* pthreadtypes.h:56:1 */
type Tpthread_attr_t = Spthread_attr_t /* pthreadtypes.h:62:30 */
type Tpthread_mutex_t = struct{ F__data S__pthread_mutex_s } /* pthreadtypes.h:72:3 */
type Tpthread_cond_t = struct{ F__data S__pthread_cond_s } /* pthreadtypes.h:80:3 */
// Data structure for reader-writer lock variable handling. The
// structure of the attribute type is deliberately not exposed.
type Tpthread_rwlock_t = struct{ F__data S__pthread_rwlock_arch_t } /* pthreadtypes.h:91:3 */
type Tpthread_rwlockattr_t = struct {
F__ccgo_pad1 [0]uint64
F__size [8]int8
} /* pthreadtypes.h:97:3 */
// POSIX spinlock data type.
type Tpthread_spinlock_t = int32 /* pthreadtypes.h:103:22 */
// POSIX barriers data type. The structure of the type is
// deliberately not exposed.
type Tpthread_barrier_t = struct {
F__ccgo_pad1 [0]uint64
F__size [32]int8
} /* pthreadtypes.h:112:3 */
type Tpthread_barrierattr_t = struct {
F__ccgo_pad1 [0]uint32
F__size [4]int8
} /* pthreadtypes.h:118:3 */
// Reentrant versions of the `random' family of functions.
// These functions all use the following data structure to contain
// state, rather than global state variables.
type Srandom_data = struct {
Ffptr uintptr
Frptr uintptr
Fstate uintptr
Frand_type int32
Frand_deg int32
Frand_sep int32
F__ccgo_pad1 [4]byte
Fend_ptr uintptr
} /* stdlib.h:424:1 */
// Data structure for communication with thread safe versions. This
// type is to be regarded as opaque. It's only exported because users
// have to allocate objects of this type.
type Sdrand48_data = struct {
F__x [3]uint16
F__old_x [3]uint16
F__c uint16
F__init uint16
F__a uint64
} /* stdlib.h:491:1 */
// Shorthand for type of comparison functions.
type T__compar_fn_t = uintptr /* stdlib.h:816:13 */
type Tcomparison_fn_t = T__compar_fn_t /* stdlib.h:819:23 */
type T__compar_d_fn_t = uintptr /* stdlib.h:823:13 */
// Macros to make boolean values more obvious. The #ifndef is to pacify
// compiler warnings in environments where these macros are defined elsewhere.
// Unfortunately, there is no way to do the same for the typedef.
type TBOOL = int32 /* pcre2_internal.h:67:13 */
// Valgrind (memcheck) support
// -ftrivial-auto-var-init support supports initializing all local variables
// to avoid some classes of bug, but this can cause an unacceptable slowdown
// for large on-stack arrays in hot functions. This macro lets us annotate
// such arrays.
// Older versions of MSVC lack snprintf(). This define allows for
// warning/error-free compilation and testing with MSVC compilers back to at least
// MSVC 10/2010. Except for VC6 (which is missing some fundamentals and fails).
// When compiling a DLL for Windows, the exported symbols have to be declared
// using some MS magic. I found some useful information on this web page:
// http://msdn2.microsoft.com/en-us/library/y4h7bcy6(VS.80).aspx. According to the
// information there, using __declspec(dllexport) without "extern" we have a
// definition; with "extern" we have a declaration. The settings here override the
// setting in pcre2.h (which is included below); it defines only PCRE2_EXP_DECL,
// which is all that is needed for applications (they just import the symbols). We
// use:
//
// PCRE2_EXP_DECL for declarations
// PCRE2_EXP_DEFN for definitions
//
// The reason for wrapping this in #ifndef PCRE2_EXP_DECL is so that pcre2test,
// which is an application, but needs to import this file in order to "peek" at
// internals, can #include pcre2.h first to get an application's-eye view.
//
// In principle, people compiling for non-Windows, non-Unix-like (i.e. uncommon,
// special-purpose environments) might want to stick other stuff in front of
// exported symbols. That's why, in the non-Windows case, we set PCRE2_EXP_DEFN
// only if it is not already set.
// Include the public PCRE2 header and the definitions of UCP character
// property values. This must follow the setting of PCRE2_EXP_DECL above.
// ************************************************
//
// Perl-Compatible Regular Expressions *
//
// This is the public header file for the PCRE library, second API, to be
// #included by applications that call PCRE2 functions.
//
// Copyright (c) 2016-2021 University of Cambridge
//
// -----------------------------------------------------------------------------
// Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions are met:
//
// * Redistributions of source code must retain the above copyright notice,
// this list of conditions and the following disclaimer.
//
// * Redistributions in binary form must reproduce the above copyright
// notice, this list of conditions and the following disclaimer in the
// documentation and/or other materials provided with the distribution.
//
// * Neither the name of the University of Cambridge nor the names of its
// contributors may be used to endorse or promote products derived from
// this software without specific prior written permission.
//
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
// POSSIBILITY OF SUCH DAMAGE.
// -----------------------------------------------------------------------------
// The current PCRE version information.
// When an application links to a PCRE DLL in Windows, the symbols that are
// imported have to be identified as such. When building PCRE2, the appropriate
// export setting is defined in pcre2_internal.h, which includes this file. So we
// don't change existing definitions of PCRE2_EXP_DECL.
// By default, we use the standard "extern" declarations.
// When compiling with the MSVC compiler, it is sometimes necessary to include
// a "calling convention" before exported function names. (This is secondhand
// information; I know nothing about MSVC myself). For example, something like
//
// void __cdecl function(....)
//
// might be needed. In order so make this easy, all the exported functions have
// PCRE2_CALL_CONVENTION just before their names. It is rarely needed; if not
// set, we ensure here that it has no effect.
// Have to include limits.h, stdlib.h, and inttypes.h to ensure that size_t and
// uint8_t, UCHAR_MAX, etc are defined. Some systems that do have inttypes.h do
// not have stdint.h, which is why we use inttypes.h, which according to the C
// standard is a superset of stdint.h. If inttypes.h is not available the build
// will break and the relevant values must be provided by some other means.
// Copyright (C) 1992-2021 Free Software Foundation, Inc.
//
// This file is part of GCC.
//
// GCC is free software; you can redistribute it and/or modify it under
// the terms of the GNU General Public License as published by the Free
// Software Foundation; either version 3, or (at your option) any later
// version.
//
// GCC is distributed in the hope that it will be useful, but WITHOUT ANY
// WARRANTY; without even the implied warranty of MERCHANTABILITY or
// FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
// for more details.
//
// Under Section 7 of GPL version 3, you are granted additional
// permissions described in the GCC Runtime Library Exception, version
// 3.1, as published by the Free Software Foundation.
//
// You should have received a copy of the GNU General Public License and
// a copy of the GCC Runtime Library Exception along with this program;
// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
// <http://www.gnu.org/licenses/>.
// This administrivia gets added to the beginning of limits.h
// if the system has its own version of limits.h.
// We use _GCC_LIMITS_H_ because we want this not to match
// any macros that the system's limits.h uses for its own purposes.
// Copyright (C) 1991-2022 Free Software Foundation, Inc.
// Copyright The GNU Toolchain Authors.
// This file is part of the GNU C Library.
//
// The GNU C Library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public
// License as published by the Free Software Foundation; either
// version 2.1 of the License, or (at your option) any later version.
//
// The GNU C Library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
// Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public
// License along with the GNU C Library; if not, see
// <https://www.gnu.org/licenses/>.
// ISO C99 Standard: 7.20 General utilities <stdlib.h>
// Copyright (C) 1997-2022 Free Software Foundation, Inc.
// This file is part of the GNU C Library.
//
// The GNU C Library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public
// License as published by the Free Software Foundation; either
// version 2.1 of the License, or (at your option) any later version.
//
// The GNU C Library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
// Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public
// License along with the GNU C Library; if not, see
// <https://www.gnu.org/licenses/>.
// ISO C99: 7.8 Format conversion of integer types <inttypes.h>
// Copyright (C) 1991-2022 Free Software Foundation, Inc.
// This file is part of the GNU C Library.
//
// The GNU C Library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public
// License as published by the Free Software Foundation; either
// version 2.1 of the License, or (at your option) any later version.
//
// The GNU C Library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
// Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public
// License along with the GNU C Library; if not, see
// <https://www.gnu.org/licenses/>.
// Get the type definitions.
// Copyright (C) 1997-2022 Free Software Foundation, Inc.
// This file is part of the GNU C Library.
//
// The GNU C Library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public
// License as published by the Free Software Foundation; either
// version 2.1 of the License, or (at your option) any later version.
//
// The GNU C Library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
// Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public
// License along with the GNU C Library; if not, see
// <https://www.gnu.org/licenses/>.
// ISO C99: 7.18 Integer types <stdint.h>
// Handle feature test macros at the start of a header.
// Copyright (C) 2016-2022 Free Software Foundation, Inc.
// This file is part of the GNU C Library.
//
// The GNU C Library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public
// License as published by the Free Software Foundation; either
// version 2.1 of the License, or (at your option) any later version.
//
// The GNU C Library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
// Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public
// License along with the GNU C Library; if not, see
// <https://www.gnu.org/licenses/>.
// This header is internal to glibc and should not be included outside
// of glibc headers. Headers including it must define
// __GLIBC_INTERNAL_STARTING_HEADER_IMPLEMENTATION first. This header
// cannot have multiple include guards because ISO C feature test
// macros depend on the definition of the macro when an affected
// header is included, not when the first system header is
// included.
// Copyright (C) 1991-2022 Free Software Foundation, Inc.
// This file is part of the GNU C Library.
//
// The GNU C Library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public
// License as published by the Free Software Foundation; either
// version 2.1 of the License, or (at your option) any later version.
//
// The GNU C Library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
// Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public
// License along with the GNU C Library; if not, see
// <https://www.gnu.org/licenses/>.
// ISO/IEC TR 24731-2:2010 defines the __STDC_WANT_LIB_EXT2__
// macro.
// ISO/IEC TS 18661-1:2014 defines the __STDC_WANT_IEC_60559_BFP_EXT__
// macro. Most but not all symbols enabled by that macro in TS
// 18661-1 are enabled unconditionally in C2X. In C2X, the symbols in
// Annex F still require a new feature test macro
// __STDC_WANT_IEC_60559_EXT__ instead (C2X does not define
// __STDC_WANT_IEC_60559_BFP_EXT__), while a few features from TS
// 18661-1 are not included in C2X (and thus should depend on
// __STDC_WANT_IEC_60559_BFP_EXT__ even when C2X features are
// enabled).
//
// __GLIBC_USE (IEC_60559_BFP_EXT) controls those features from TS
// 18661-1 not included in C2X.
//
// __GLIBC_USE (IEC_60559_BFP_EXT_C2X) controls those features from TS
// 18661-1 that are also included in C2X (with no feature test macro
// required in C2X).
//
// __GLIBC_USE (IEC_60559_EXT) controls those features from TS 18661-1
// that are included in C2X but conditional on
// __STDC_WANT_IEC_60559_EXT__. (There are currently no features
// conditional on __STDC_WANT_IEC_60559_EXT__ that are not in TS
// 18661-1.)
// ISO/IEC TS 18661-4:2015 defines the
// __STDC_WANT_IEC_60559_FUNCS_EXT__ macro. Other than the reduction
// functions, the symbols from this TS are enabled unconditionally in
// C2X.
// ISO/IEC TS 18661-3:2015 defines the
// __STDC_WANT_IEC_60559_TYPES_EXT__ macro.
// bits/types.h -- definitions of __*_t types underlying *_t types.
// Copyright (C) 2002-2022 Free Software Foundation, Inc.
// This file is part of the GNU C Library.
//
// The GNU C Library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public
// License as published by the Free Software Foundation; either
// version 2.1 of the License, or (at your option) any later version.
//
// The GNU C Library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
// Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public
// License along with the GNU C Library; if not, see
// <https://www.gnu.org/licenses/>.
// Never include this file directly; use <sys/types.h> instead.
// wchar_t type related definitions.
// Copyright (C) 2000-2022 Free Software Foundation, Inc.
// This file is part of the GNU C Library.
//
// The GNU C Library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public
// License as published by the Free Software Foundation; either
// version 2.1 of the License, or (at your option) any later version.
//
// The GNU C Library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
// Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public
// License along with the GNU C Library; if not, see
// <https://www.gnu.org/licenses/>.
// The fallback definitions, for when __WCHAR_MAX__ or __WCHAR_MIN__
// are not defined, give the right value and type as long as both int
// and wchar_t are 32-bit types. Adding L'\0' to a constant value
// ensures that the type is correct; it is necessary to use (L'\0' +
// 0) rather than just L'\0' so that the type in C++ is the promoted
// version of wchar_t rather than the distinct wchar_t type itself.
// Because wchar_t in preprocessor #if expressions is treated as
// intmax_t or uintmax_t, the expression (L'\0' - 1) would have the
// wrong value for WCHAR_MAX in such expressions and so cannot be used
// to define __WCHAR_MAX in the unsigned case.
// Determine the wordsize from the preprocessor defines.
// Both x86-64 and x32 use the 64-bit system call interface.
// Exact integral types.
// Signed.
// Define intN_t types.
// Copyright (C) 2017-2022 Free Software Foundation, Inc.
// This file is part of the GNU C Library.
//
// The GNU C Library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public
// License as published by the Free Software Foundation; either
// version 2.1 of the License, or (at your option) any later version.
//
// The GNU C Library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
// Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public
// License along with the GNU C Library; if not, see
// <https://www.gnu.org/licenses/>.
// Unsigned.
// Define uintN_t types.
// Copyright (C) 2017-2022 Free Software Foundation, Inc.
// This file is part of the GNU C Library.
//
// The GNU C Library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public
// License as published by the Free Software Foundation; either
// version 2.1 of the License, or (at your option) any later version.
//
// The GNU C Library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
// Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public
// License along with the GNU C Library; if not, see
// <https://www.gnu.org/licenses/>.
// bits/types.h -- definitions of __*_t types underlying *_t types.
// Copyright (C) 2002-2022 Free Software Foundation, Inc.
// This file is part of the GNU C Library.
//
// The GNU C Library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public
// License as published by the Free Software Foundation; either
// version 2.1 of the License, or (at your option) any later version.
//
// The GNU C Library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
// Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public
// License along with the GNU C Library; if not, see
// <https://www.gnu.org/licenses/>.
// Never include this file directly; use <sys/types.h> instead.
type Tuint8_t = T__uint8_t /* stdint-uintn.h:24:19 */
type Tuint16_t = T__uint16_t /* stdint-uintn.h:25:20 */
type Tuint32_t = T__uint32_t /* stdint-uintn.h:26:20 */
type Tuint64_t = T__uint64_t /* stdint-uintn.h:27:20 */
// Small types.
// Signed.
type Tint_least8_t = T__int_least8_t /* stdint.h:43:24 */
type Tint_least16_t = T__int_least16_t /* stdint.h:44:25 */
type Tint_least32_t = T__int_least32_t /* stdint.h:45:25 */
type Tint_least64_t = T__int_least64_t /* stdint.h:46:25 */
// Unsigned.
type Tuint_least8_t = T__uint_least8_t /* stdint.h:49:25 */
type Tuint_least16_t = T__uint_least16_t /* stdint.h:50:26 */
type Tuint_least32_t = T__uint_least32_t /* stdint.h:51:26 */
type Tuint_least64_t = T__uint_least64_t /* stdint.h:52:26 */
// Fast types.
// Signed.
type Tint_fast8_t = int8 /* stdint.h:58:22 */
type Tint_fast16_t = int64 /* stdint.h:60:19 */
type Tint_fast32_t = int64 /* stdint.h:61:19 */
type Tint_fast64_t = int64 /* stdint.h:62:19 */
// Unsigned.
type Tuint_fast8_t = uint8 /* stdint.h:71:24 */
type Tuint_fast16_t = uint64 /* stdint.h:73:27 */
type Tuint_fast32_t = uint64 /* stdint.h:74:27 */
type Tuint_fast64_t = uint64 /* stdint.h:75:27 */
// Types for `void *' pointers.
type Tintptr_t = int64 /* stdint.h:87:19 */
type Tuintptr_t = uint64 /* stdint.h:90:27 */
// Largest integral types.
type Tintmax_t = T__intmax_t /* stdint.h:101:21 */
type Tuintmax_t = T__uintmax_t /* stdint.h:102:22 */
// Limits of integral types.
// Minimum of signed integral types.
// Maximum of signed integral types.
// Maximum of unsigned integral types.
// Minimum of signed integral types having a minimum size.
// Maximum of signed integral types having a minimum size.
// Maximum of unsigned integral types having a minimum size.
// Minimum of fast signed integral types having a minimum size.
// Maximum of fast signed integral types having a minimum size.
// Maximum of fast unsigned integral types having a minimum size.
// Values to test for integral types holding `void *' pointer.
// Minimum for largest signed integral type.
// Maximum for largest signed integral type.
// Maximum for largest unsigned integral type.
// Limits of other integer types.
// Limits of `ptrdiff_t' type.
// Limits of `sig_atomic_t'.
// Limit of `size_t' type.
// Limits of `wchar_t'.
// These constants might also be defined in <wchar.h>.
// Limits of `wint_t'.
// Signed.
// Unsigned.
// Maximal type.
// Get a definition for wchar_t. But we must not define wchar_t itself.
type T__gwchar_t = int32 /* inttypes.h:34:24 */
// Macros for printing format specifiers.
// Decimal notation.
// Octal notation.
// Unsigned integers.
// lowercase hexadecimal notation.
// UPPERCASE hexadecimal notation.
// Macros for printing `intmax_t' and `uintmax_t'.
// Macros for printing `intptr_t' and `uintptr_t'.
// Macros for scanning format specifiers.
// Signed decimal notation.
// Signed decimal notation.
// Unsigned decimal notation.
// Octal notation.
// Hexadecimal notation.
// Macros for scanning `intmax_t' and `uintmax_t'.
// Macros for scaning `intptr_t' and `uintptr_t'.
// We have to define the `uintmax_t' type using `ldiv_t'.
type Timaxdiv_t = struct {
Fquot int64
Frem int64
} /* inttypes.h:275:5 */
// Allow for C++ users compiling this directly.
// The following option bits can be passed to pcre2_compile(), pcre2_match(),
// or pcre2_dfa_match(). PCRE2_NO_UTF_CHECK affects only the function to which it
// is passed. Put these bits at the most significant end of the options word so
// others can be added next to them
// The following option bits can be passed only to pcre2_compile(). However,
// they may affect compilation, JIT compilation, and/or interpretive execution.
// The following tags indicate which:
//
// C alters what is compiled by pcre2_compile()
// J alters what is compiled by pcre2_jit_compile()
// M is inspected during pcre2_match() execution
// D is inspected during pcre2_dfa_match() execution
// An additional compile options word is available in the compile context.
// These are for pcre2_jit_compile().
// These are for pcre2_match(), pcre2_dfa_match(), pcre2_jit_match(), and
// pcre2_substitute(). Some are allowed only for one of the functions, and in
// these cases it is noted below. Note that PCRE2_ANCHORED, PCRE2_ENDANCHORED and
// PCRE2_NO_UTF_CHECK can also be passed to these functions (though
// pcre2_jit_match() ignores the latter since it bypasses all sanity checks).
// Options for pcre2_pattern_convert().
// Newline and \R settings, for use in compile contexts. The newline values
// must be kept in step with values set in config.h and both sets must all be
// greater than zero.
// Error codes for pcre2_compile(). Some of these are also used by
// pcre2_pattern_convert().
// Error 159 is obsolete and should now never occur
// "Expected" matching error codes: no match and partial match.
// Error codes for UTF-8 validity checks
// Error codes for UTF-16 validity checks
// Error codes for UTF-32 validity checks
// Miscellaneous error codes for pcre2[_dfa]_match(), substring extraction
// functions, context functions, and serializing functions. They are in numerical
// order. Originally they were in alphabetical order too, but now that PCRE2 is
// released, the numbers must not be changed.
// Request types for pcre2_pattern_info()
// Request types for pcre2_config().
// Types for code units in patterns and subject strings.
type TPCRE2_UCHAR8 = Tuint8_t /* pcre2.h:458:18 */
type TPCRE2_UCHAR16 = Tuint16_t /* pcre2.h:459:18 */
type TPCRE2_UCHAR32 = Tuint32_t /* pcre2.h:460:18 */
type TPCRE2_SPTR8 = uintptr /* pcre2.h:462:29 */
type TPCRE2_SPTR16 = uintptr /* pcre2.h:463:29 */
type TPCRE2_SPTR32 = uintptr /* pcre2.h:464:29 */
// The PCRE2_SIZE type is used for all string lengths and offsets in PCRE2,
// including pattern offsets for errors and subject offsets after a match. We
// define special values to indicate zero-terminated strings and unset offsets in
// the offset vector (ovector).
// Generic types for opaque structures and JIT callback functions. These
// declarations are defined in a macro that is expanded for each width later.
// The structures for passing out data via callout functions. We use structures
// so that new fields can be added on the end in future versions, without changing
// the API of the function, thereby allowing old clients to work without
// modification. Define the generic versions in a macro; the width-specific
// versions are generated from this macro below.
// Flags for the callout_flags field. These are cleared after a callout.
// List the generic forms of all other functions in macros, which will be
// expanded for each width below. Start with functions that give general
// information.
// Functions for manipulating contexts.
// Functions concerned with compiling a pattern to PCRE internal code.
// Functions that give information about a compiled pattern.
// Functions for running a match and inspecting the result.
// Convenience functions for handling matched substrings.
// Functions for serializing / deserializing compiled patterns.
// Convenience function for match + substitute.
// Functions for converting pattern source strings.
// Functions for JIT processing
// Other miscellaneous functions.
// Define macros that generate width-specific names from generic versions. The
// three-level macro scheme is necessary to get the macros expanded when we want
// them to be. First we get the width from PCRE2_LOCAL_WIDTH, which is used for
// generating three versions of everything below. After that, PCRE2_SUFFIX will be
// re-defined to use PCRE2_CODE_UNIT_WIDTH, for use when macros such as
// pcre2_compile are called by application code.
// Data types
// Data blocks
// Functions: the complete list in alphabetical order
// Keep this old function name for backwards compatibility
// Keep this obsolete function for backwards compatibility: it is now a noop.
// Now generate all three sets of width-specific structures and function
// prototypes.
type Spcre2_real_general_context_8 = struct{ Fmemctl Tpcre2_memctl } /* pcre2.h:935:1 */
type Tpcre2_general_context_8 = Spcre2_real_general_context_8 /* pcre2.h:935:1 */
type Spcre2_real_compile_context_8 = struct {
Fmemctl Tpcre2_memctl
Fstack_guard uintptr
Fstack_guard_data uintptr
Ftables uintptr
Fmax_pattern_length Tsize_t
Fbsr_convention Tuint16_t
Fnewline_convention Tuint16_t
Fparens_nest_limit Tuint32_t
Fextra_options Tuint32_t
F__ccgo_pad1 [4]byte
} /* pcre2.h:935:1 */
type Tpcre2_compile_context_8 = Spcre2_real_compile_context_8 /* pcre2.h:935:1 */
type Spcre2_real_match_context_8 = struct {
Fmemctl Tpcre2_memctl
Fcallout uintptr
Fcallout_data uintptr
Fsubstitute_callout uintptr
Fsubstitute_callout_data uintptr
Foffset_limit Tsize_t
Fheap_limit Tuint32_t
Fmatch_limit Tuint32_t
Fdepth_limit Tuint32_t
F__ccgo_pad1 [4]byte
} /* pcre2.h:935:1 */
type Tpcre2_match_context_8 = Spcre2_real_match_context_8 /* pcre2.h:935:1 */
type Spcre2_real_convert_context_8 = struct {
Fmemctl Tpcre2_memctl
Fglob_separator Tuint32_t
Fglob_escape Tuint32_t
} /* pcre2.h:935:1 */
type Tpcre2_convert_context_8 = Spcre2_real_convert_context_8 /* pcre2.h:935:1 */
type Spcre2_real_code_8 = struct {
Fmemctl Tpcre2_memctl
Ftables uintptr
Fexecutable_jit uintptr
Fstart_bitmap [32]Tuint8_t
Fblocksize Tsize_t
Fmagic_number Tuint32_t
Fcompile_options Tuint32_t
Foverall_options Tuint32_t
Fextra_options Tuint32_t
Fflags Tuint32_t
Flimit_heap Tuint32_t
Flimit_match Tuint32_t
Flimit_depth Tuint32_t
Ffirst_codeunit Tuint32_t
Flast_codeunit Tuint32_t
Fbsr_convention Tuint16_t
Fnewline_convention Tuint16_t
Fmax_lookbehind Tuint16_t
Fminlength Tuint16_t
Ftop_bracket Tuint16_t
Ftop_backref Tuint16_t
Fname_entry_size Tuint16_t
Fname_count Tuint16_t
} /* pcre2.h:935:1 */
type Tpcre2_code_8 = Spcre2_real_code_8 /* pcre2.h:935:1 */
type Spcre2_real_match_data_8 = struct {
Fmemctl Tpcre2_memctl
Fcode uintptr
Fsubject TPCRE2_SPTR8
Fmark TPCRE2_SPTR8
Fleftchar Tsize_t
Frightchar Tsize_t
Fstartchar Tsize_t
Fmatchedby Tuint8_t
Fflags Tuint8_t
Foveccount Tuint16_t
Frc int32
Fovector [131072]Tsize_t
} /* pcre2.h:935:1 */
type Tpcre2_match_data_8 = Spcre2_real_match_data_8 /* pcre2.h:935:1 */
type Spcre2_real_jit_stack_8 = struct {
Fmemctl Tpcre2_memctl
Fstack uintptr
} /* pcre2.h:935:1 */
type Tpcre2_jit_stack_8 = Spcre2_real_jit_stack_8 /* pcre2.h:935:1 */
type Tpcre2_jit_callback_8 = uintptr /* pcre2.h:935:1 */
type Spcre2_callout_block_8 = struct {
Fversion Tuint32_t
Fcallout_number Tuint32_t
Fcapture_top Tuint32_t
Fcapture_last Tuint32_t
Foffset_vector uintptr
Fmark TPCRE2_SPTR8
Fsubject TPCRE2_SPTR8
Fsubject_length Tsize_t
Fstart_match Tsize_t
Fcurrent_position Tsize_t
Fpattern_position Tsize_t
Fnext_item_length Tsize_t
Fcallout_string_offset Tsize_t
Fcallout_string_length Tsize_t
Fcallout_string TPCRE2_SPTR8
Fcallout_flags Tuint32_t
F__ccgo_pad1 [4]byte
} /* pcre2.h:935:1 */
type Tpcre2_callout_block_8 = Spcre2_callout_block_8 /* pcre2.h:935:1 */
type Spcre2_callout_enumerate_block_8 = struct {
Fversion Tuint32_t
F__ccgo_pad1 [4]byte
Fpattern_position Tsize_t
Fnext_item_length Tsize_t
Fcallout_number Tuint32_t
F__ccgo_pad2 [4]byte
Fcallout_string_offset Tsize_t
Fcallout_string_length Tsize_t
Fcallout_string TPCRE2_SPTR8
} /* pcre2.h:935:1 */
type Tpcre2_callout_enumerate_block_8 = Spcre2_callout_enumerate_block_8 /* pcre2.h:935:1 */
type Spcre2_substitute_callout_block_8 = struct {
Fversion Tuint32_t
F__ccgo_pad1 [4]byte
Finput TPCRE2_SPTR8
Foutput TPCRE2_SPTR8
Foutput_offsets [2]Tsize_t
Fovector uintptr
Foveccount Tuint32_t
Fsubscount Tuint32_t
} /* pcre2.h:935:1 */
type Tpcre2_substitute_callout_block_8 = Spcre2_substitute_callout_block_8 /* pcre2.h:935:1 */
type Tpcre2_jit_callback_16 = uintptr /* pcre2.h:939:1 */
type Spcre2_callout_block_16 = struct {
Fversion Tuint32_t
Fcallout_number Tuint32_t
Fcapture_top Tuint32_t
Fcapture_last Tuint32_t
Foffset_vector uintptr
Fmark TPCRE2_SPTR16
Fsubject TPCRE2_SPTR16
Fsubject_length Tsize_t
Fstart_match Tsize_t
Fcurrent_position Tsize_t
Fpattern_position Tsize_t
Fnext_item_length Tsize_t
Fcallout_string_offset Tsize_t
Fcallout_string_length Tsize_t
Fcallout_string TPCRE2_SPTR16
Fcallout_flags Tuint32_t
F__ccgo_pad1 [4]byte
} /* pcre2.h:939:1 */
type Tpcre2_callout_block_16 = Spcre2_callout_block_16 /* pcre2.h:939:1 */
type Spcre2_callout_enumerate_block_16 = struct {
Fversion Tuint32_t
F__ccgo_pad1 [4]byte
Fpattern_position Tsize_t
Fnext_item_length Tsize_t
Fcallout_number Tuint32_t
F__ccgo_pad2 [4]byte
Fcallout_string_offset Tsize_t
Fcallout_string_length Tsize_t
Fcallout_string TPCRE2_SPTR16
} /* pcre2.h:939:1 */
type Tpcre2_callout_enumerate_block_16 = Spcre2_callout_enumerate_block_16 /* pcre2.h:939:1 */
type Spcre2_substitute_callout_block_16 = struct {
Fversion Tuint32_t
F__ccgo_pad1 [4]byte
Finput TPCRE2_SPTR16
Foutput TPCRE2_SPTR16
Foutput_offsets [2]Tsize_t
Fovector uintptr
Foveccount Tuint32_t
Fsubscount Tuint32_t
} /* pcre2.h:939:1 */
type Tpcre2_substitute_callout_block_16 = Spcre2_substitute_callout_block_16 /* pcre2.h:939:1 */
type Tpcre2_jit_callback_32 = uintptr /* pcre2.h:943:1 */
type Spcre2_callout_block_32 = struct {
Fversion Tuint32_t
Fcallout_number Tuint32_t
Fcapture_top Tuint32_t
Fcapture_last Tuint32_t
Foffset_vector uintptr
Fmark TPCRE2_SPTR32
Fsubject TPCRE2_SPTR32
Fsubject_length Tsize_t
Fstart_match Tsize_t
Fcurrent_position Tsize_t
Fpattern_position Tsize_t
Fnext_item_length Tsize_t
Fcallout_string_offset Tsize_t
Fcallout_string_length Tsize_t
Fcallout_string TPCRE2_SPTR32
Fcallout_flags Tuint32_t
F__ccgo_pad1 [4]byte
} /* pcre2.h:943:1 */
type Tpcre2_callout_block_32 = Spcre2_callout_block_32 /* pcre2.h:943:1 */
type Spcre2_callout_enumerate_block_32 = struct {
Fversion Tuint32_t
F__ccgo_pad1 [4]byte
Fpattern_position Tsize_t
Fnext_item_length Tsize_t
Fcallout_number Tuint32_t
F__ccgo_pad2 [4]byte
Fcallout_string_offset Tsize_t
Fcallout_string_length Tsize_t
Fcallout_string TPCRE2_SPTR32
} /* pcre2.h:943:1 */
type Tpcre2_callout_enumerate_block_32 = Spcre2_callout_enumerate_block_32 /* pcre2.h:943:1 */
type Spcre2_substitute_callout_block_32 = struct {
Fversion Tuint32_t
F__ccgo_pad1 [4]byte
Finput TPCRE2_SPTR32
Foutput TPCRE2_SPTR32
Foutput_offsets [2]Tsize_t
Fovector uintptr
Foveccount Tuint32_t
Fsubscount Tuint32_t
} /* pcre2.h:943:1 */
type Tpcre2_substitute_callout_block_32 = Spcre2_substitute_callout_block_32 /* pcre2.h:943:1 */
// *** NOTE NOTE NOTE *** Whenever the list above is updated, the two macro
// definitions that follow must also be updated to match. There are also tables
// called "opcode_possessify" in pcre2_compile.c and "coptable" and "poptable" in
// pcre2_dfa_match.c that must be updated.
// This macro defines textual names for all the opcodes. These are used only
// for debugging, and some of them are only partial names. The macro is referenced
// only in pcre2_printint.c, which fills out the full names in many cases (and in
// some cases doesn't actually use these names at all).
// This macro defines the length of fixed length operations in the compiled
// regex. The lengths are used when searching for specific things, and also in the
// debugging printing of a compiled regex. We use a macro so that it can be
// defined close to the definitions of the opcodes themselves.
//
// As things have been extended, some of these are no longer fixed lenths, but are
// minima instead. For example, the length of a single-character repeat may vary
// in UTF-8 mode. The code that uses this table must know about such things.
// A magic value for OP_RREF to indicate the "any recursion" condition.
// ---------- Private structures that are mode-independent. ----------
// Structure to hold data for custom memory management.
type Spcre2_memctl = struct {
Fmalloc uintptr
Ffree uintptr
Fmemory_data uintptr
} /* pcre2.h:935:1 */
// *** NOTE NOTE NOTE *** Whenever the list above is updated, the two macro
// definitions that follow must also be updated to match. There are also tables
// called "opcode_possessify" in pcre2_compile.c and "coptable" and "poptable" in
// pcre2_dfa_match.c that must be updated.
// This macro defines textual names for all the opcodes. These are used only
// for debugging, and some of them are only partial names. The macro is referenced
// only in pcre2_printint.c, which fills out the full names in many cases (and in
// some cases doesn't actually use these names at all).
// This macro defines the length of fixed length operations in the compiled
// regex. The lengths are used when searching for specific things, and also in the
// debugging printing of a compiled regex. We use a macro so that it can be
// defined close to the definitions of the opcodes themselves.
//
// As things have been extended, some of these are no longer fixed lenths, but are
// minima instead. For example, the length of a single-character repeat may vary
// in UTF-8 mode. The code that uses this table must know about such things.
// A magic value for OP_RREF to indicate the "any recursion" condition.
// ---------- Private structures that are mode-independent. ----------
// Structure to hold data for custom memory management.
type Tpcre2_memctl = Spcre2_memctl /* pcre2_internal.h:1794:3 */
// Structure for building a chain of open capturing subpatterns during
// compiling, so that instructions to close them can be compiled when (*ACCEPT) is
// encountered.
type Sopen_capitem = struct {
Fnext uintptr
Fnumber Tuint16_t
Fassert_depth Tuint16_t
F__ccgo_pad1 [4]byte
} /* pcre2_internal.h:1800:9 */
// Structure for building a chain of open capturing subpatterns during
// compiling, so that instructions to close them can be compiled when (*ACCEPT) is
// encountered.
type Topen_capitem = Sopen_capitem /* pcre2_internal.h:1804:3 */
// Layout of the UCP type table that translates property names into types and
// codes. Each entry used to point directly to a name, but to reduce the number of
// relocations in shared libraries, it now has an offset into a single string
// instead.
type Tucp_type_table = struct {
Fname_offset Tuint16_t
Ftype Tuint16_t
Fvalue Tuint16_t
} /* pcre2_internal.h:1815:3 */
// Unicode character database (UCD) record format
type Tucd_record = struct {
Fscript Tuint8_t
Fchartype Tuint8_t
Fgbprop Tuint8_t
Fcaseset Tuint8_t
Fother_case Tint32_t
Fscriptx_bidiclass Tuint16_t
Fbprops Tuint16_t
} /* pcre2_internal.h:1827:3 */
// UCD access macros
// The "scriptx" and bprops fields contain offsets into vectors of 32-bit words
// that form a bitmap representing a list of scripts or boolean properties. These
// macros test or set a bit in the map by number.
// Header for serialized pcre2 codes.
type Spcre2_serialized_data = struct {
Fmagic Tuint32_t
Fversion Tuint32_t
Fconfig Tuint32_t
Fnumber_of_codes Tint32_t
} /* pcre2_internal.h:1870:9 */
// UCD access macros
// The "scriptx" and bprops fields contain offsets into vectors of 32-bit words
// that form a bitmap representing a list of scripts or boolean properties. These
// macros test or set a bit in the map by number.
// Header for serialized pcre2 codes.
type Tpcre2_serialized_data = Spcre2_serialized_data /* pcre2_internal.h:1875:3 */
// Mode-dependent macros and hidden and private structures are defined in a
// separate file so that pcre2test can include them at all supported widths. When
// compiling the library, PCRE2_CODE_UNIT_WIDTH will be defined, and we can
// include them at the appropriate width, after setting up suffix macros for the
// private structures.
// ************************************************
//
// Perl-Compatible Regular Expressions *
//
// PCRE is a library of functions to support regular expressions whose syntax
// and semantics are as close as possible to those of the Perl 5 language.
//
// Written by Philip Hazel
// Original API code Copyright (c) 1997-2012 University of Cambridge
// New API code Copyright (c) 2016-2018 University of Cambridge
//
// -----------------------------------------------------------------------------
// Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions are met:
//
// * Redistributions of source code must retain the above copyright notice,
// this list of conditions and the following disclaimer.
//
// * Redistributions in binary form must reproduce the above copyright
// notice, this list of conditions and the following disclaimer in the
// documentation and/or other materials provided with the distribution.
//
// * Neither the name of the University of Cambridge nor the names of its
// contributors may be used to endorse or promote products derived from
// this software without specific prior written permission.
//
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
// POSSIBILITY OF SUCH DAMAGE.
// -----------------------------------------------------------------------------
// This module contains mode-dependent macro and structure definitions. The
// file is #included by pcre2_internal.h if PCRE2_CODE_UNIT_WIDTH is defined.
// These mode-dependent items are kept in a separate file so that they can also be
// #included multiple times for different code unit widths by pcre2test in order
// to have access to the hidden structures at all supported widths.
//
// Some of the mode-dependent macros are required at different widths for
// different parts of the pcre2test code (in particular, the included
// pcre_printint.c file). We undefine them here so that they can be re-defined for
// multiple inclusions. Not all of these are used in pcre2test, but it's easier
// just to undefine them all.
// -------------------------- MACROS -----------------------------
// PCRE keeps offsets in its compiled code as at least 16-bit quantities
// (always stored in big-endian order in 8-bit mode) by default. These are used,
// for example, to link from the start of a subpattern to its alternatives and its
// end. The use of 16 bits per offset limits the size of an 8-bit compiled regex
// to around 64K, which is big enough for almost everybody. However, I received a
// request for an even bigger limit. For this reason, and also to make the code
// easier to maintain, the storing and loading of offsets from the compiled code
// unit string is now handled by the macros that are defined here.
//
// The macros are controlled by the value of LINK_SIZE. This defaults to 2, but
// values of 3 or 4 are also supported.
// ------------------- 8-bit support ------------------
// ------------------- 16-bit support ------------------
// --------------- Other mode-specific macros -----------------
// PCRE uses some other (at least) 16-bit quantities that do not change when
// the size of offsets changes. There are used for repeat counts and for other
// things such as capturing parenthesis numbers in back references.
//
// Define the number of code units required to hold a 16-bit count/offset, and
// macros to load and store such a value. For reasons that I do not understand,
// the expression in the 8-bit GET2 macro is treated by gcc as a signed
// expression, even when a is declared as unsigned. It seems that any kind of
// arithmetic results in a signed value. Hence the cast.
// Other macros that are different for 8-bit mode. The MAX_255 macro checks
// whether its argument, which is assumed to be one code unit, is less than 256.
// The CHMAX_255 macro does not assume one code unit. The maximum length of a MARK
// name must fit in one code unit; currently it is set to 255 or 65535. The
// TABLE_GET macro is used to access elements of tables containing exactly 256
// items. Its argument is a code unit. When code points can be greater than 255, a
// check is needed before accessing these tables.
// ----------------- Character-handling macros -----------------
// There is a proposed future special "UTF-21" mode, in which only the lowest
// 21 bits of a 32-bit character are interpreted as UTF, with the remaining 11
// high-order bits available to the application for other uses. In preparation for
// the future implementation of this mode, there are macros that load a data item
// and, if in this special mode, mask it to 21 bits. These macros all have names
// starting with UCHAR21. In all other modes, including the normal 32-bit
// library, the macros all have the same simple definitions. When the new mode is
// implemented, it is expected that these definitions will be varied appropriately
// using #ifdef when compiling the library that supports the special mode.
// When UTF encoding is being used, a character is no longer just a single
// byte in 8-bit mode or a single short in 16-bit mode. The macros for character
// handling generate simple sequences when used in the basic mode, and more
// complicated ones for UTF characters. GETCHARLENTEST and other macros are not
// used when UTF is not supported. To make sure they can never even appear when
// UTF support is omitted, we don't even define them.
// ------------------- 8-bit support ------------------
// The largest UTF code point that can be encoded as a single code unit.
// Tests whether the code point needs extra characters to decode.
// Returns with the additional number of characters if IS_MULTICHAR(c) is TRUE.
// Otherwise it has an undefined behaviour.
// Returns TRUE, if the given value is not the first code unit of a UTF
// sequence.
// Get the next UTF-8 character, not advancing the pointer. This is called when
// we know we are in UTF-8 mode.
// Get the next UTF-8 character, testing for UTF-8 mode, and not advancing the
// pointer.
// Get the next UTF-8 character, advancing the pointer. This is called when we
// know we are in UTF-8 mode.
// Get the next character, testing for UTF-8 mode, and advancing the pointer.
// This is called when we don't know if we are in UTF-8 mode.
// Get the next UTF-8 character, not advancing the pointer, incrementing length
// if there are extra bytes. This is called when we know we are in UTF-8 mode.
// Get the next UTF-8 character, testing for UTF-8 mode, not advancing the
// pointer, incrementing length if there are extra bytes. This is called when we
// do not know if we are in UTF-8 mode.
// If the pointer is not at the start of a character, move it back until
// it is. This is called only in UTF-8 mode - we don't put a test within the macro
// because almost all calls are already within a block of UTF-8 only code.
// Same as above, just in the other direction.
// Same as above, but it allows a fully customizable form.
// Deposit a character into memory, returning the number of code units.
// ------------------- 16-bit support ------------------
// Mode-dependent macros that have the same definition in all modes.
// ----------------------- HIDDEN STRUCTURES -----------------------------
// NOTE: All these structures *must* start with a pcre2_memctl structure. The
// code that uses them is simpler because it assumes this.
// The real general context structure. At present it holds only data for custom
// memory control.
type Tpcre2_real_general_context_8 = Spcre2_real_general_context_8 /* pcre2_intmodedep.h:561:3 */
// The real compile context structure
type Tpcre2_real_compile_context_8 = Spcre2_real_compile_context_8 /* pcre2_intmodedep.h:575:3 */
// The real match context structure.
type Tpcre2_real_match_context_8 = Spcre2_real_match_context_8 /* pcre2_intmodedep.h:593:3 */
// The real convert context structure.
type Tpcre2_real_convert_context_8 = Spcre2_real_convert_context_8 /* pcre2_intmodedep.h:601:3 */
// The real compiled code structure. The type for the blocksize field is
// defined specially because it is required in pcre2_serialize_decode() when
// copying the size from possibly unaligned memory into a variable of the same
// type. Use a macro rather than a typedef to avoid compiler warnings when this
// file is included multiple times by pcre2test. LOOKBEHIND_MAX specifies the
// largest lookbehind that is supported. (OP_REVERSE in a pattern has a 16-bit
// argument in 8-bit and 16-bit modes, so we need no more than a 16-bit field
// here.)
type Tpcre2_real_code_8 = Spcre2_real_code_8 /* pcre2_intmodedep.h:642:3 */
// The real match data structure. Define ovector as large as it can ever
// actually be so that array bound checkers don't grumble. Memory for this
// structure is obtained by calling pcre2_match_data_create(), which sets the size
// as the offset of ovector plus a pair of elements for each capturable string, so
// the size varies from call to call. As the maximum number of capturing
// subpatterns is 65535 we must allow for 65536 strings to include the overall
// match. (See also the heapframe structure below.)
type Tpcre2_real_match_data_8 = Spcre2_real_match_data_8 /* pcre2_intmodedep.h:665:3 */
// ----------------------- PRIVATE STRUCTURES -----------------------------
// These structures are not needed for pcre2test.
// Structures for checking for mutual recursion when scanning compiled or
// parsed code.
type Srecurse_check = struct {
Fprev uintptr
Fgroup TPCRE2_SPTR8
} /* pcre2_intmodedep.h:677:9 */
// ----------------------- PRIVATE STRUCTURES -----------------------------
// These structures are not needed for pcre2test.
// Structures for checking for mutual recursion when scanning compiled or
// parsed code.
type Trecurse_check = Srecurse_check /* pcre2_intmodedep.h:680:3 */
type Sparsed_recurse_check = struct {
Fprev uintptr
Fgroupptr uintptr
} /* pcre2_intmodedep.h:682:9 */
type Tparsed_recurse_check = Sparsed_recurse_check /* pcre2_intmodedep.h:685:3 */
// Structure for building a cache when filling in recursion offsets.
type Srecurse_cache = struct {
Fgroup TPCRE2_SPTR8
Fgroupnumber int32
F__ccgo_pad1 [4]byte
} /* pcre2_intmodedep.h:689:9 */
// Structure for building a cache when filling in recursion offsets.
type Trecurse_cache = Srecurse_cache /* pcre2_intmodedep.h:692:3 */
// Structure for maintaining a chain of pointers to the currently incomplete
// branches, for testing for left recursion while compiling.
type Sbranch_chain_8 = struct {
Fouter uintptr
Fcurrent_branch uintptr
} /* pcre2_intmodedep.h:697:9 */
// Structure for maintaining a chain of pointers to the currently incomplete
// branches, for testing for left recursion while compiling.
type Tbranch_chain_8 = Sbranch_chain_8 /* pcre2_intmodedep.h:700:3 */
// Structure for building a list of named groups during the first pass of
// compiling.
type Snamed_group_8 = struct {
Fname TPCRE2_SPTR8
Fnumber Tuint32_t
Flength Tuint16_t
Fisdup Tuint16_t
} /* pcre2_intmodedep.h:705:9 */
// Structure for building a list of named groups during the first pass of
// compiling.
type Tnamed_group_8 = Snamed_group_8 /* pcre2_intmodedep.h:710:3 */
// Structure for passing "static" information around between the functions
// doing the compiling, so that they are thread-safe.
type Scompile_block_8 = struct {
Fcx uintptr
Flcc uintptr
Ffcc uintptr
Fcbits uintptr
Fctypes uintptr
Fstart_workspace TPCRE2_SPTR8
Fstart_code TPCRE2_SPTR8
Fstart_pattern TPCRE2_SPTR8
Fend_pattern TPCRE2_SPTR8
Fname_table uintptr
Fworkspace_size Tsize_t
Fsmall_ref_offset [10]Tsize_t
Ferroroffset Tsize_t
Fnames_found Tuint16_t
Fname_entry_size Tuint16_t
Fparens_depth Tuint16_t
Fassert_depth Tuint16_t
Fopen_caps uintptr
Fnamed_groups uintptr
Fnamed_group_list_size Tuint32_t
Fexternal_options Tuint32_t
Fexternal_flags Tuint32_t
Fbracount Tuint32_t
Flastcapture Tuint32_t
F__ccgo_pad1 [4]byte
Fparsed_pattern uintptr
Fparsed_pattern_end uintptr
Fgroupinfo uintptr
Ftop_backref Tuint32_t
Fbackref_map Tuint32_t
Fnltype Tuint32_t
Fnllen Tuint32_t
Fclass_range_start Tuint32_t
Fclass_range_end Tuint32_t
Fnl [4]TPCRE2_UCHAR8
Freq_varyopt Tuint32_t
Fmax_lookbehind int32
Fhad_accept TBOOL
Fhad_pruneorskip TBOOL
Fhad_recurse TBOOL
Fdupnames TBOOL
F__ccgo_pad2 [4]byte
} /* pcre2_intmodedep.h:715:9 */
// Structure for passing "static" information around between the functions
// doing the compiling, so that they are thread-safe.
type Tcompile_block_8 = Scompile_block_8 /* pcre2_intmodedep.h:756:3 */
// Structure for keeping the properties of the in-memory stack used
// by the JIT matcher.
type Tpcre2_real_jit_stack_8 = Spcre2_real_jit_stack_8 /* pcre2_intmodedep.h:764:3 */
// Structure for items in a linked list that represents an explicit recursive
// call within the pattern when running pcre2_dfa_match().
type Sdfa_recursion_info = struct {
Fprevrec uintptr
Fsubject_position TPCRE2_SPTR8
Fgroup_num Tuint32_t
F__ccgo_pad1 [4]byte
} /* pcre2_intmodedep.h:769:9 */
// Structure for items in a linked list that represents an explicit recursive
// call within the pattern when running pcre2_dfa_match().
type Tdfa_recursion_info = Sdfa_recursion_info /* pcre2_intmodedep.h:773:3 */
// Structure for "stack" frames that are used for remembering backtracking
// positions during matching. As these are used in a vector, with the ovector item
// being extended, the size of the structure must be a multiple of PCRE2_SIZE. The
// only way to check this at compile time is to force an error by generating an
// array with a negative size. By putting this in a typedef (which is never used),
// we don't generate any code when all is well.
type Sheapframe = struct {
Fecode TPCRE2_SPTR8
Ftemp_sptr [2]TPCRE2_SPTR8
Flength Tsize_t
Fback_frame Tsize_t
Ftemp_size Tsize_t
Frdepth Tuint32_t
Fgroup_frame_type Tuint32_t
Ftemp_32 [4]Tuint32_t
Freturn_id Tuint8_t
Fop Tuint8_t
Foccu [6]TPCRE2_UCHAR8
Feptr TPCRE2_SPTR8
Fstart_match TPCRE2_SPTR8
Fmark TPCRE2_SPTR8
Fcurrent_recurse Tuint32_t
Fcapture_last Tuint32_t
Flast_group_offset Tsize_t
Foffset_top Tsize_t
Fovector [131072]Tsize_t
} /* pcre2_intmodedep.h:782:9 */
// Structure for "stack" frames that are used for remembering backtracking
// positions during matching. As these are used in a vector, with the ovector item
// being extended, the size of the structure must be a multiple of PCRE2_SIZE. The
// only way to check this at compile time is to force an error by generating an
// array with a negative size. By putting this in a typedef (which is never used),
// we don't generate any code when all is well.
type Theapframe = Sheapframe /* pcre2_intmodedep.h:833:3 */
// This typedef is a check that the size of the heapframe structure is a
// multiple of PCRE2_SIZE. See various comments above.
type Tcheck_heapframe_size = [1]int8 /* pcre2_intmodedep.h:838:14 */
// Structure for computing the alignment of heapframe.
type Sheapframe_align = struct {
Funalign int8
F__ccgo_pad1 [7]byte
Fframe Theapframe
} /* pcre2_intmodedep.h:843:9 */
// Structure for computing the alignment of heapframe.
type Theapframe_align = Sheapframe_align /* pcre2_intmodedep.h:846:3 */
// This define is the minimum alignment required for a heapframe, in bytes.
// Structure for passing "static" information around between the functions
// doing traditional NFA matching (pcre2_match() and friends).
type Smatch_block_8 = struct {
Fmemctl Tpcre2_memctl
Fframe_vector_size Tsize_t
Fmatch_frames uintptr
Fmatch_frames_top uintptr
Fstack_frames uintptr
Fheap_limit Tsize_t
Fmatch_limit Tuint32_t
Fmatch_limit_depth Tuint32_t
Fmatch_call_count Tuint32_t
Fhitend TBOOL
Fhasthen TBOOL
Fallowemptypartial TBOOL
Flcc uintptr
Ffcc uintptr
Fctypes uintptr
Fstart_offset Tsize_t
Fend_offset_top Tsize_t
Fpartial Tuint16_t
Fbsr_convention Tuint16_t
Fname_count Tuint16_t
Fname_entry_size Tuint16_t
Fname_table TPCRE2_SPTR8
Fstart_code TPCRE2_SPTR8
Fstart_subject TPCRE2_SPTR8
Fcheck_subject TPCRE2_SPTR8
Fend_subject TPCRE2_SPTR8
Fend_match_ptr TPCRE2_SPTR8
Fstart_used_ptr TPCRE2_SPTR8
Flast_used_ptr TPCRE2_SPTR8
Fmark TPCRE2_SPTR8
Fnomatch_mark TPCRE2_SPTR8
Fverb_ecode_ptr TPCRE2_SPTR8
Fverb_skip_ptr TPCRE2_SPTR8
Fverb_current_recurse Tuint32_t
Fmoptions Tuint32_t
Fpoptions Tuint32_t
Fskip_arg_count Tuint32_t
Fignore_skip_arg Tuint32_t
Fnltype Tuint32_t
Fnllen Tuint32_t
Fnl [4]TPCRE2_UCHAR8
Fcb uintptr
Fcallout_data uintptr
Fcallout uintptr
} /* pcre2_intmodedep.h:855:9 */
// This define is the minimum alignment required for a heapframe, in bytes.
// Structure for passing "static" information around between the functions
// doing traditional NFA matching (pcre2_match() and friends).
type Tmatch_block_8 = Smatch_block_8 /* pcre2_intmodedep.h:900:3 */
// A similar structure is used for the same purpose by the DFA matching
// functions.
type Sdfa_match_block_8 = struct {
Fmemctl Tpcre2_memctl
Fstart_code TPCRE2_SPTR8
Fstart_subject TPCRE2_SPTR8
Fend_subject TPCRE2_SPTR8
Fstart_used_ptr TPCRE2_SPTR8
Flast_used_ptr TPCRE2_SPTR8
Ftables uintptr
Fstart_offset Tsize_t
Fheap_limit Tsize_t
Fheap_used Tsize_t
Fmatch_limit Tuint32_t
Fmatch_limit_depth Tuint32_t
Fmatch_call_count Tuint32_t
Fmoptions Tuint32_t
Fpoptions Tuint32_t
Fnltype Tuint32_t
Fnllen Tuint32_t
Fallowemptypartial TBOOL
Fnl [4]TPCRE2_UCHAR8
Fbsr_convention Tuint16_t
F__ccgo_pad1 [2]byte
Fcb uintptr
Fcallout_data uintptr
Fcallout uintptr
Frecursive uintptr
} /* pcre2_intmodedep.h:905:9 */
// A similar structure is used for the same purpose by the DFA matching
// functions.
type Tdfa_match_block_8 = Sdfa_match_block_8 /* pcre2_intmodedep.h:930:3 */
// This function is needed only when memmove() is not available.
// End of pcre2_internal.h
// ************************************************
//
// Tables for auto-possessification *
//
// This table is used to check whether auto-possessification is possible
// between adjacent character-type opcodes. The left-hand (repeated) opcode is
// used to select the row, and the right-hand opcode is use to select the column.
// A value of 1 means that auto-possessification is OK. For example, the second
// value in the first row means that \D+\d can be turned into \D++\d.
//
// The Unicode property types (\P and \p) have to be present to fill out the table
// because of what their opcode values are, but the table values should always be
// zero because property types are handled separately in the code. The last four
// columns apply to items that cannot be repeated, so there is no need to have
// rows for them. Note that OP_DIGIT etc. are generated only when PCRE_UCP is
// *not* set. When it is set, \d etc. are converted into OP_(NOT_)PROP codes.
var autoposstab = [17][21]Tuint8_t{
// \D \d \S \s \W \w . .+ \C \P \p \R \H \h \V \v \X \Z \z $ $M
{Tuint8_t(0), Tuint8_t(1), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(1), Tuint8_t(0), Tuint8_t(0)}, // \D
{Tuint8_t(1), Tuint8_t(0), Tuint8_t(0), Tuint8_t(1), Tuint8_t(1), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(1), Tuint8_t(0), Tuint8_t(1), Tuint8_t(0), Tuint8_t(1), Tuint8_t(0), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1)}, // \d
{Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(1), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(1), Tuint8_t(0), Tuint8_t(1), Tuint8_t(0), Tuint8_t(1), Tuint8_t(0), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1)}, // \S
{Tuint8_t(0), Tuint8_t(1), Tuint8_t(1), Tuint8_t(0), Tuint8_t(0), Tuint8_t(1), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(1), Tuint8_t(0), Tuint8_t(0)}, // \s
{Tuint8_t(0), Tuint8_t(1), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(1), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(1), Tuint8_t(0), Tuint8_t(0)}, // \W
{Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(1), Tuint8_t(1), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(1), Tuint8_t(0), Tuint8_t(1), Tuint8_t(0), Tuint8_t(1), Tuint8_t(0), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1)}, // \w
{Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(1), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(1), Tuint8_t(0), Tuint8_t(0)}, // .
{Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(1), Tuint8_t(0), Tuint8_t(0)}, // .+
{Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(1), Tuint8_t(0), Tuint8_t(0)}, // \C
{Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0)}, // \P
{Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0)}, // \p
{Tuint8_t(0), Tuint8_t(1), Tuint8_t(0), Tuint8_t(1), Tuint8_t(0), Tuint8_t(1), Tuint8_t(1), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(1), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(1), Tuint8_t(0), Tuint8_t(0)}, // \R
{Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(1), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(1), Tuint8_t(0), Tuint8_t(0)}, // \H
{Tuint8_t(0), Tuint8_t(1), Tuint8_t(1), Tuint8_t(0), Tuint8_t(0), Tuint8_t(1), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(1), Tuint8_t(1), Tuint8_t(0), Tuint8_t(0), Tuint8_t(1), Tuint8_t(0), Tuint8_t(0), Tuint8_t(1), Tuint8_t(0), Tuint8_t(0)}, // \h
{Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(1), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(1), Tuint8_t(0), Tuint8_t(0), Tuint8_t(1), Tuint8_t(0), Tuint8_t(0)}, // \V
{Tuint8_t(0), Tuint8_t(1), Tuint8_t(1), Tuint8_t(0), Tuint8_t(0), Tuint8_t(1), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(1), Tuint8_t(1), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(1), Tuint8_t(0), Tuint8_t(0)}, // \v
{Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(1), Tuint8_t(0), Tuint8_t(0)}, // \X
} /* pcre2_auto_possess.c:73:22 */
// This table is used to check whether auto-possessification is possible
// between adjacent Unicode property opcodes (OP_PROP and OP_NOTPROP). The
// left-hand (repeated) opcode is used to select the row, and the right-hand
// opcode is used to select the column. The values are as follows:
//
// 0 Always return FALSE (never auto-possessify)
// 1 Character groups are distinct (possessify if both are OP_PROP)
// 2 Check character categories in the same group (general or particular)
// 3 TRUE if the two opcodes are not the same (PROP vs NOTPROP)
//
// 4 Check left general category vs right particular category
// 5 Check right general category vs left particular category
//
// 6 Left alphanum vs right general category
// 7 Left space vs right general category
// 8 Left word vs right general category
//
// 9 Right alphanum vs left general category
// 10 Right space vs left general category
// 11 Right word vs left general category
//
// 12 Left alphanum vs right particular category
// 13 Left space vs right particular category
// 14 Left word vs right particular category
//
// 15 Right alphanum vs left particular category
// 16 Right space vs left particular category
// 17 Right word vs left particular category
var propposstab = [14][14]Tuint8_t{
// ANY LAMP GC PC SC SCX ALNUM SPACE PXSPACE WORD CLIST UCNC BIDICL BOOL
{Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0)}, // PT_ANY
{Tuint8_t(0), Tuint8_t(3), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(3), Tuint8_t(1), Tuint8_t(1), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0)}, // PT_LAMP
{Tuint8_t(0), Tuint8_t(0), Tuint8_t(2), Tuint8_t(4), Tuint8_t(0), Tuint8_t(0), Tuint8_t(9), Tuint8_t(10), Tuint8_t(10), Tuint8_t(11), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0)}, // PT_GC
{Tuint8_t(0), Tuint8_t(0), Tuint8_t(5), Tuint8_t(2), Tuint8_t(0), Tuint8_t(0), Tuint8_t(15), Tuint8_t(16), Tuint8_t(16), Tuint8_t(17), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0)}, // PT_PC
{Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(2), Tuint8_t(2), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0)}, // PT_SC
{Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(2), Tuint8_t(2), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0)}, // PT_SCX
{Tuint8_t(0), Tuint8_t(3), Tuint8_t(6), Tuint8_t(12), Tuint8_t(0), Tuint8_t(0), Tuint8_t(3), Tuint8_t(1), Tuint8_t(1), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0)}, // PT_ALNUM
{Tuint8_t(0), Tuint8_t(1), Tuint8_t(7), Tuint8_t(13), Tuint8_t(0), Tuint8_t(0), Tuint8_t(1), Tuint8_t(3), Tuint8_t(3), Tuint8_t(1), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0)}, // PT_SPACE
{Tuint8_t(0), Tuint8_t(1), Tuint8_t(7), Tuint8_t(13), Tuint8_t(0), Tuint8_t(0), Tuint8_t(1), Tuint8_t(3), Tuint8_t(3), Tuint8_t(1), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0)}, // PT_PXSPACE
{Tuint8_t(0), Tuint8_t(0), Tuint8_t(8), Tuint8_t(14), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(1), Tuint8_t(1), Tuint8_t(3), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0)}, // PT_WORD
{Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0)}, // PT_CLIST
{Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(3), Tuint8_t(0), Tuint8_t(0)}, // PT_UCNC
{Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0)}, // PT_BIDICL
{Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0)}, // PT_BOOL
} /* pcre2_auto_possess.c:125:22 */
// This table is used to check whether auto-possessification is possible
// between adjacent Unicode property opcodes (OP_PROP and OP_NOTPROP) when one
// specifies a general category and the other specifies a particular category. The
// row is selected by the general category and the column by the particular
// category. The value is 1 if the particular category is not part of the general
// category.
var catposstab = [7][30]Tuint8_t{
// Cc Cf Cn Co Cs Ll Lm Lo Lt Lu Mc Me Mn Nd Nl No Pc Pd Pe Pf Pi Po Ps Sc Sk Sm So Zl Zp Zs
{Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1)}, // C
{Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1)}, // L
{Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1)}, // M
{Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1)}, // N
{Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1)}, // P
{Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1)}, // S
{Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0)}, // Z
} /* pcre2_auto_possess.c:150:22 */
// This table is used when checking ALNUM, (PX)SPACE, SPACE, and WORD against
// a general or particular category. The properties in each row are those
// that apply to the character set in question. Duplication means that a little
// unnecessary work is done when checking, but this keeps things much simpler
// because they can all use the same code. For more details see the comment where
// this table is used.
//
// Note: SPACE and PXSPACE used to be different because Perl excluded VT from
// "space", but from Perl 5.18 it's included, so both categories are treated the
// same here.
var posspropstab = [3][4]Tuint8_t{
{ucp_L, ucp_N, ucp_N, ucp_Nl}, // ALNUM, 3rd and 4th values redundant
{ucp_Z, ucp_Z, ucp_C, ucp_Cc}, // SPACE and PXSPACE, 2nd value redundant
{ucp_L, ucp_N, ucp_P, ucp_Po}, // WORD
} /* pcre2_auto_possess.c:172:22 */
// ************************************************
//
// Check a character and a property *
//
// This function is called by compare_opcodes() when a property item is
// adjacent to a fixed character.
//
// Arguments:
// c the character
// ptype the property type
// pdata the data for the type
// negated TRUE if it's a negated property (\P or \p{^)
//
// Returns: TRUE if auto-possessifying is OK
func check_char_prop(tls *libc.TLS, c Tuint32_t, ptype uint32, pdata uint32, negated TBOOL) TBOOL { /* pcre2_auto_possess.c:199:1: */
var ok TBOOL
var p uintptr
var prop uintptr = uintptr(unsafe.Pointer(&X_pcre2_ucd_records_8)) + uintptr(X_pcre2_ucd_stage2_8[int32(X_pcre2_ucd_stage1_8[int32(c)/DUCD_BLOCK_SIZE])*DUCD_BLOCK_SIZE+int32(c)%DUCD_BLOCK_SIZE])*12
switch ptype {
case uint32(DPT_LAMP):
return libc.Bool32(libc.Bool32(int32((*Tucd_record)(unsafe.Pointer(prop)).Fchartype) == ucp_Lu || int32((*Tucd_record)(unsafe.Pointer(prop)).Fchartype) == ucp_Ll || int32((*Tucd_record)(unsafe.Pointer(prop)).Fchartype) == ucp_Lt) == negated)
case uint32(DPT_GC):
return libc.Bool32(libc.Bool32(pdata == X_pcre2_ucp_gentype_8[(*Tucd_record)(unsafe.Pointer(prop)).Fchartype]) == negated)
case uint32(DPT_PC):
return libc.Bool32(libc.Bool32(pdata == uint32((*Tucd_record)(unsafe.Pointer(prop)).Fchartype)) == negated)
case uint32(DPT_SC):
return libc.Bool32(libc.Bool32(pdata == uint32((*Tucd_record)(unsafe.Pointer(prop)).Fscript)) == negated)
case uint32(DPT_SCX):
ok = libc.Bool32(pdata == uint32((*Tucd_record)(unsafe.Pointer(prop)).Fscript) ||
*(*Tuint32_t)(unsafe.Pointer(uintptr(unsafe.Pointer(&X_pcre2_ucd_script_sets_8)) + uintptr(int32((*Tucd_record)(unsafe.Pointer(prop)).Fscriptx_bidiclass)&DUCD_SCRIPTX_MASK)*4 + uintptr(pdata/uint32(32))*4))&(uint32(1)<<(pdata%uint32(32))) != Tuint32_t(0))
return libc.Bool32(ok == negated)
// These are specials
case uint32(DPT_ALNUM):
return libc.Bool32(libc.Bool32(X_pcre2_ucp_gentype_8[(*Tucd_record)(unsafe.Pointer(prop)).Fchartype] == ucp_L || X_pcre2_ucp_gentype_8[(*Tucd_record)(unsafe.Pointer(prop)).Fchartype] == ucp_N) == negated)
// Perl space used to exclude VT, but from Perl 5.18 it is included, which
// means that Perl space and POSIX space are now identical. PCRE was changed
// at release 8.34.
case uint32(DPT_SPACE):
fallthrough // Perl space
case uint32(DPT_PXSPACE): // POSIX space
switch c {
case Tuint32_t('\011'):
fallthrough
case Tuint32_t('\040'):
fallthrough
case libc.Uint32FromUint8(libc.Uint8FromInt32(160)):
fallthrough
case Tuint32_t(0x1680):
fallthrough /* OGHAM SPACE MARK */
case Tuint32_t(0x180e):
fallthrough /* MONGOLIAN VOWEL SEPARATOR */
case Tuint32_t(0x2000):
fallthrough /* EN QUAD */
case Tuint32_t(0x2001):
fallthrough /* EM QUAD */
case Tuint32_t(0x2002):
fallthrough /* EN SPACE */
case Tuint32_t(0x2003):
fallthrough /* EM SPACE */
case Tuint32_t(0x2004):
fallthrough /* THREE-PER-EM SPACE */
case Tuint32_t(0x2005):
fallthrough /* FOUR-PER-EM SPACE */
case Tuint32_t(0x2006):
fallthrough /* SIX-PER-EM SPACE */
case Tuint32_t(0x2007):
fallthrough /* FIGURE SPACE */
case Tuint32_t(0x2008):
fallthrough /* PUNCTUATION SPACE */
case Tuint32_t(0x2009):
fallthrough /* THIN SPACE */
case Tuint32_t(0x200A):
fallthrough /* HAIR SPACE */
case Tuint32_t(0x202f):
fallthrough /* NARROW NO-BREAK SPACE */
case Tuint32_t(0x205f):
fallthrough /* MEDIUM MATHEMATICAL SPACE */
case Tuint32_t(0x3000):
fallthrough
case Tuint32_t('\012'):
fallthrough
case Tuint32_t('\013'):
fallthrough
case Tuint32_t('\014'):
fallthrough
case Tuint32_t('\015'):
fallthrough
case libc.Uint32FromUint8(libc.Uint8FromInt32(133)):
fallthrough
case Tuint32_t(0x2028):
fallthrough /* LINE SEPARATOR */
case Tuint32_t(0x2029):
return negated
default:
return libc.Bool32(libc.Bool32(X_pcre2_ucp_gentype_8[(*Tucd_record)(unsafe.Pointer(prop)).Fchartype] == ucp_Z) == negated)
}
break // Control never reaches here
case uint32(DPT_WORD):
return libc.Bool32(libc.Bool32(X_pcre2_ucp_gentype_8[(*Tucd_record)(unsafe.Pointer(prop)).Fchartype] == ucp_L || X_pcre2_ucp_gentype_8[(*Tucd_record)(unsafe.Pointer(prop)).Fchartype] == ucp_N || c == Tuint32_t('\137')) == negated)
case uint32(DPT_CLIST):
p = uintptr(unsafe.Pointer(&X_pcre2_ucd_caseless_sets_8)) + uintptr((*Tucd_record)(unsafe.Pointer(prop)).Fcaseset)*4
for {
if c < *(*Tuint32_t)(unsafe.Pointer(p)) {
return libc.BoolInt32(!(negated != 0))
}
if c == *(*Tuint32_t)(unsafe.Pointer(libc.PostIncUintptr(&p, 4))) {
return negated
}
}
break // Control never reaches here
// Haven't yet thought these through.
case uint32(DPT_BIDICL):
return DFALSE
case uint32(DPT_BOOL):
return DFALSE
}
return DFALSE
}
// ************************************************
//
// Base opcode of repeated opcodes *
//
// Returns the base opcode for repeated single character type opcodes. If the
// opcode is not a repeated character type, it returns with the original value.
//
// Arguments: c opcode
// Returns: base opcode for the type
func get_repeat_base(tls *libc.TLS, c TPCRE2_UCHAR8) TPCRE2_UCHAR8 { /* pcre2_auto_possess.c:291:1: */
if int32(c) > OP_TYPEPOSUPTO {
return c
}
if int32(c) >= OP_TYPESTAR {
return OP_TYPESTAR
}
if int32(c) >= OP_NOTSTARI {
return OP_NOTSTARI
}
if int32(c) >= OP_NOTSTAR {
return OP_NOTSTAR
}
if int32(c) >= OP_STARI {
return OP_STARI
}
return OP_STAR
}
// ************************************************
//
// Fill the character property list *
//
// Checks whether the code points to an opcode that can take part in auto-
// possessification, and if so, fills a list with its properties.
//
// Arguments:
// code points to start of expression
// utf TRUE if in UTF mode
// ucp TRUE if in UCP mode
// fcc points to the case-flipping table
// list points to output list
// list[0] will be filled with the opcode
// list[1] will be non-zero if this opcode
// can match an empty character string
// list[2..7] depends on the opcode
//
// Returns: points to the start of the next opcode if *code is accepted
// NULL if *code is not accepted
func get_chr_property_list(tls *libc.TLS, code TPCRE2_SPTR8, utf TBOOL, ucp TBOOL, fcc uintptr, list uintptr) TPCRE2_SPTR8 { /* pcre2_auto_possess.c:325:1: */
var c TPCRE2_UCHAR8 = *(*TPCRE2_UCHAR8)(unsafe.Pointer(code))
var base TPCRE2_UCHAR8
var end TPCRE2_SPTR8
var chr Tuint32_t
var clist_dest uintptr
var clist_src uintptr
*(*Tuint32_t)(unsafe.Pointer(list)) = Tuint32_t(c)
*(*Tuint32_t)(unsafe.Pointer(list + 1*4)) = Tuint32_t(DFALSE)
code++
if int32(c) >= OP_STAR && int32(c) <= OP_TYPEPOSUPTO {
base = get_repeat_base(tls, c)
c = TPCRE2_UCHAR8(int32(c) - (int32(base) - OP_STAR))
if int32(c) == OP_UPTO || int32(c) == OP_MINUPTO || int32(c) == OP_EXACT || int32(c) == OP_POSUPTO {
code += TPCRE2_SPTR8(DIMM2_SIZE)
}
*(*Tuint32_t)(unsafe.Pointer(list + 1*4)) = Tuint32_t(libc.Bool32(int32(c) != OP_PLUS && int32(c) != OP_MINPLUS && int32(c) != OP_EXACT && int32(c) != OP_POSPLUS))
switch int32(base) {
case OP_STAR:
*(*Tuint32_t)(unsafe.Pointer(list)) = OP_CHAR
break
fallthrough
case OP_STARI:
*(*Tuint32_t)(unsafe.Pointer(list)) = OP_CHARI
break
fallthrough
case OP_NOTSTAR:
*(*Tuint32_t)(unsafe.Pointer(list)) = OP_NOT
break
fallthrough
case OP_NOTSTARI:
*(*Tuint32_t)(unsafe.Pointer(list)) = OP_NOTI
break
fallthrough
case OP_TYPESTAR:
*(*Tuint32_t)(unsafe.Pointer(list)) = Tuint32_t(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code)))
code++
break
}
c = TPCRE2_UCHAR8(*(*Tuint32_t)(unsafe.Pointer(list)))
}
switch int32(c) {
case OP_NOT_DIGIT:
fallthrough
case OP_DIGIT:
fallthrough
case OP_NOT_WHITESPACE:
fallthrough
case OP_WHITESPACE:
fallthrough
case OP_NOT_WORDCHAR:
fallthrough
case OP_WORDCHAR:
fallthrough
case OP_ANY:
fallthrough
case OP_ALLANY:
fallthrough
case OP_ANYNL:
fallthrough
case OP_NOT_HSPACE:
fallthrough
case OP_HSPACE:
fallthrough
case OP_NOT_VSPACE:
fallthrough
case OP_VSPACE:
fallthrough
case OP_EXTUNI:
fallthrough
case OP_EODN:
fallthrough
case OP_EOD:
fallthrough
case OP_DOLL:
fallthrough
case OP_DOLLM:
return code
case OP_CHAR:
fallthrough
case OP_NOT:
chr = Tuint32_t(*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&code, 1))))
if utf != 0 && chr >= 0xc0 {
if chr&0x20 == Tuint32_t(0) {
chr = chr&0x1f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&code, 1))))&0x3f
} else if chr&0x10 == Tuint32_t(0) {
chr = chr&0x0f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + 1)))&0x3f
code += uintptr(2)
} else if chr&0x08 == Tuint32_t(0) {
chr = chr&0x07<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + 1)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + 2)))&0x3f
code += uintptr(3)
} else if chr&0x04 == Tuint32_t(0) {
chr = chr&0x03<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + 1)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + 2)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + 3)))&0x3f
code += uintptr(4)
} else {
chr = chr&0x01<<30 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code)))&0x3f<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + 1)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + 2)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + 3)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + 4)))&0x3f
code += uintptr(5)
}
}
*(*Tuint32_t)(unsafe.Pointer(list + 2*4)) = chr
*(*Tuint32_t)(unsafe.Pointer(list + 3*4)) = DNOTACHAR
return code
case OP_CHARI:
fallthrough
case OP_NOTI:
*(*Tuint32_t)(unsafe.Pointer(list)) = func() uint32 {
if int32(c) == OP_CHARI {
return OP_CHAR
}
return OP_NOT
}()
chr = Tuint32_t(*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&code, 1))))
if utf != 0 && chr >= 0xc0 {
if chr&0x20 == Tuint32_t(0) {
chr = chr&0x1f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&code, 1))))&0x3f
} else if chr&0x10 == Tuint32_t(0) {
chr = chr&0x0f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + 1)))&0x3f
code += uintptr(2)
} else if chr&0x08 == Tuint32_t(0) {
chr = chr&0x07<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + 1)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + 2)))&0x3f
code += uintptr(3)
} else if chr&0x04 == Tuint32_t(0) {
chr = chr&0x03<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + 1)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + 2)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + 3)))&0x3f
code += uintptr(4)
} else {
chr = chr&0x01<<30 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code)))&0x3f<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + 1)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + 2)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + 3)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + 4)))&0x3f
code += uintptr(5)
}
}
*(*Tuint32_t)(unsafe.Pointer(list + 2*4)) = chr
if chr < Tuint32_t(128) || chr < Tuint32_t(256) && !(utf != 0) && !(ucp != 0) {
*(*Tuint32_t)(unsafe.Pointer(list + 3*4)) = Tuint32_t(*(*Tuint8_t)(unsafe.Pointer(fcc + uintptr(chr))))
} else {
*(*Tuint32_t)(unsafe.Pointer(list + 3*4)) = Tuint32_t(int32(chr) + (*Tucd_record)(unsafe.Pointer(uintptr(unsafe.Pointer(&X_pcre2_ucd_records_8))+uintptr(X_pcre2_ucd_stage2_8[int32(X_pcre2_ucd_stage1_8[int32(chr)/DUCD_BLOCK_SIZE])*DUCD_BLOCK_SIZE+int32(chr)%DUCD_BLOCK_SIZE])*12)).Fother_case)
}
// The othercase might be the same value.
if chr == *(*Tuint32_t)(unsafe.Pointer(list + 3*4)) {
*(*Tuint32_t)(unsafe.Pointer(list + 3*4)) = DNOTACHAR
} else {
*(*Tuint32_t)(unsafe.Pointer(list + 4*4)) = DNOTACHAR
}
return code
case OP_PROP:
fallthrough
case OP_NOTPROP:
if int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code))) != DPT_CLIST {
*(*Tuint32_t)(unsafe.Pointer(list + 2*4)) = Tuint32_t(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code)))
*(*Tuint32_t)(unsafe.Pointer(list + 3*4)) = Tuint32_t(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + 1)))
return code + uintptr(2)
}
// Convert only if we have enough space.
clist_src = uintptr(unsafe.Pointer(&X_pcre2_ucd_caseless_sets_8)) + uintptr(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + 1)))*4
clist_dest = list + uintptr(2)*4
code += uintptr(2)
for __ccgo := true; __ccgo; __ccgo = *(*Tuint32_t)(unsafe.Pointer(libc.PostIncUintptr(&clist_src, 4))) != DNOTACHAR {
if clist_dest >= list+uintptr(8)*4 {
// Early return if there is not enough space. This should never
// happen, since all clists are shorter than 5 character now.
*(*Tuint32_t)(unsafe.Pointer(list + 2*4)) = Tuint32_t(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code)))
*(*Tuint32_t)(unsafe.Pointer(list + 3*4)) = Tuint32_t(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + 1)))
return code
}
*(*Tuint32_t)(unsafe.Pointer(libc.PostIncUintptr(&clist_dest, 4))) = *(*Tuint32_t)(unsafe.Pointer(clist_src))
}
// All characters are stored. The terminating NOTACHAR is copied from the
// clist itself.
*(*Tuint32_t)(unsafe.Pointer(list)) = func() uint32 {
if int32(c) == OP_PROP {
return OP_CHAR
}
return OP_NOT
}()
return code
case OP_NCLASS:
fallthrough
case OP_CLASS:
fallthrough
case OP_XCLASS:
if int32(c) == OP_XCLASS {
end = code + uintptr(uint32(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code)))<<8|int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + 1))))) - uintptr(1)
} else {
end = code + uintptr(uint64(32)/uint64(unsafe.Sizeof(TPCRE2_UCHAR8(0))))
}
switch int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(end))) {
case OP_CRSTAR:
fallthrough
case OP_CRMINSTAR:
fallthrough
case OP_CRQUERY:
fallthrough
case OP_CRMINQUERY:
fallthrough
case OP_CRPOSSTAR:
fallthrough
case OP_CRPOSQUERY:
*(*Tuint32_t)(unsafe.Pointer(list + 1*4)) = Tuint32_t(DTRUE)
end++
break
case OP_CRPLUS:
fallthrough
case OP_CRMINPLUS:
fallthrough
case OP_CRPOSPLUS:
end++
break
case OP_CRRANGE:
fallthrough
case OP_CRMINRANGE:
fallthrough
case OP_CRPOSRANGE:
*(*Tuint32_t)(unsafe.Pointer(list + 1*4)) = Tuint32_t(libc.Bool32(uint32(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(end + 1)))<<8|int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(end + 2)))) == uint32(0)))
end += TPCRE2_SPTR8(1 + 2*DIMM2_SIZE)
break
}
*(*Tuint32_t)(unsafe.Pointer(list + 2*4)) = Tuint32_t((int64(end) - int64(code)) / 1)
return end
}
return uintptr(0) // Opcode not accepted
}
// ************************************************
//
// Scan further character sets for match *
//
// Checks whether the base and the current opcode have a common character, in
// which case the base cannot be possessified.
//
// Arguments:
// code points to the byte code
// utf TRUE in UTF mode
// ucp TRUE in UCP mode
// cb compile data block
// base_list the data list of the base opcode
// base_end the end of the base opcode
// rec_limit points to recursion depth counter
//
// Returns: TRUE if the auto-possessification is possible
func compare_opcodes(tls *libc.TLS, code TPCRE2_SPTR8, utf TBOOL, ucp TBOOL, cb uintptr, base_list uintptr, base_end TPCRE2_SPTR8, rec_limit uintptr) TBOOL { /* pcre2_auto_possess.c:536:1: */
bp := tls.Alloc(32)
defer tls.Free(32)
var c TPCRE2_UCHAR8
// var list [8]Tuint32_t at bp, 32
var chr_ptr uintptr
var ochr_ptr uintptr
var list_ptr uintptr
var next_code TPCRE2_SPTR8
var xclass_flags TPCRE2_SPTR8
var class_bitset uintptr
var set1 uintptr
var set2 uintptr
var set_end uintptr
var chr Tuint32_t
var accepted TBOOL
var invert_bits TBOOL
var entered_a_group TBOOL = DFALSE
if libc.PreDecInt32(&*(*int32)(unsafe.Pointer(rec_limit)), 1) <= 0 {
return DFALSE
} // Recursion has gone too deep
// Note: the base_list[1] contains whether the current opcode has a greedy
// (represented by a non-zero value) quantifier. This is a different from
// other character type lists, which store here that the character iterator
// matches to an empty string (also represented by a non-zero value).
for {
// All operations move the code pointer forward.
// Therefore infinite recursions are not possible.
c = *(*TPCRE2_UCHAR8)(unsafe.Pointer(code))
// Skip over callouts
if int32(c) == OP_CALLOUT {
code += TPCRE2_SPTR8(X_pcre2_OP_lengths_8[c])
continue
}
if int32(c) == OP_CALLOUT_STR {
code += TPCRE2_SPTR8(uint32(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + 5)))<<8 | int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + 6)))))
continue
}
// At the end of a branch, skip to the end of the group.
if int32(c) == OP_ALT {
for __ccgo := true; __ccgo; __ccgo = int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code))) == OP_ALT {
code += TPCRE2_SPTR8(uint32(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + 1)))<<8 | int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + 2)))))
}
c = *(*TPCRE2_UCHAR8)(unsafe.Pointer(code))
}
// Inspect the next opcode.
switch int32(c) {
// We can always possessify a greedy iterator at the end of the pattern,
// which is reached after skipping over the final OP_KET. A non-greedy
// iterator must never be possessified.
case OP_END:
return libc.Bool32(*(*Tuint32_t)(unsafe.Pointer(base_list + 1*4)) != Tuint32_t(0))
// When an iterator is at the end of certain kinds of group we can inspect
// what follows the group by skipping over the closing ket. Note that this
// does not apply to OP_KETRMAX or OP_KETRMIN because what follows any given
// iteration is variable (could be another iteration or could be the next
// item). As these two opcodes are not listed in the next switch, they will
// end up as the next code to inspect, and return FALSE by virtue of being
// unsupported.
case OP_KET:
fallthrough
case OP_KETRPOS:
// The non-greedy case cannot be converted to a possessive form.
if *(*Tuint32_t)(unsafe.Pointer(base_list + 1*4)) == Tuint32_t(0) {
return DFALSE
}
// If the bracket is capturing it might be referenced by an OP_RECURSE
// so its last iterator can never be possessified if the pattern contains
// recursions. (This could be improved by keeping a list of group numbers that
// are called by recursion.)
switch int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code - uintptr(uint32(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + 1)))<<8|int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + 2)))))))) {
case OP_CBRA:
fallthrough
case OP_SCBRA:
fallthrough
case OP_CBRAPOS:
fallthrough
case OP_SCBRAPOS:
if (*Tcompile_block_8)(unsafe.Pointer(cb)).Fhad_recurse != 0 {
return DFALSE
}
break
// A script run might have to backtrack if the iterated item can match
// characters from more than one script. So give up unless repeating an
// explicit character.
case OP_SCRIPT_RUN:
if *(*Tuint32_t)(unsafe.Pointer(base_list)) != OP_CHAR && *(*Tuint32_t)(unsafe.Pointer(base_list)) != OP_CHARI {
return DFALSE
}
break
// Atomic sub-patterns and assertions can always auto-possessify their
// last iterator. However, if the group was entered as a result of checking
// a previous iterator, this is not possible.
case OP_ASSERT:
fallthrough
case OP_ASSERT_NOT:
fallthrough
case OP_ASSERTBACK:
fallthrough
case OP_ASSERTBACK_NOT:
fallthrough
case OP_ONCE:
return libc.BoolInt32(!(entered_a_group != 0))
// Non-atomic assertions - don't possessify last iterator. This needs
// more thought.
case OP_ASSERT_NA:
fallthrough
case OP_ASSERTBACK_NA:
return DFALSE
}
// Skip over the bracket and inspect what comes next.
code += TPCRE2_SPTR8(X_pcre2_OP_lengths_8[c])
continue
// Handle cases where the next item is a group.
case OP_ONCE:
fallthrough
case OP_BRA:
fallthrough
case OP_CBRA:
next_code = code + uintptr(uint32(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + 1)))<<8|int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + 2)))))
code += TPCRE2_SPTR8(X_pcre2_OP_lengths_8[c])
// Check each branch. We have to recurse a level for all but the last
// branch.
for int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(next_code))) == OP_ALT {
if !(compare_opcodes(tls, code, utf, ucp, cb, base_list, base_end, rec_limit) != 0) {
return DFALSE
}
code = next_code + uintptr(1) + uintptr(DLINK_SIZE)
next_code += TPCRE2_SPTR8(uint32(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(next_code + 1)))<<8 | int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(next_code + 2)))))
}
entered_a_group = DTRUE
continue
case OP_BRAZERO:
fallthrough
case OP_BRAMINZERO:
next_code = code + uintptr(1)
if int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(next_code))) != OP_BRA && int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(next_code))) != OP_CBRA && int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(next_code))) != OP_ONCE {
return DFALSE
}
for __ccgo1 := true; __ccgo1; __ccgo1 = int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(next_code))) == OP_ALT {
next_code += TPCRE2_SPTR8(uint32(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(next_code + 1)))<<8 | int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(next_code + 2)))))
}
// The bracket content will be checked by the OP_BRA/OP_CBRA case above.
next_code += TPCRE2_SPTR8(1 + DLINK_SIZE)
if !(compare_opcodes(tls, next_code, utf, ucp, cb, base_list, base_end,
rec_limit) != 0) {
return DFALSE
}
code += TPCRE2_SPTR8(X_pcre2_OP_lengths_8[c])
continue
// The next opcode does not need special handling; fall through and use it
// to see if the base can be possessified.
default:
break
}
// We now have the next appropriate opcode to compare with the base. Check
// for a supported opcode, and load its properties.
code = get_chr_property_list(tls, code, utf, ucp, (*Tcompile_block_8)(unsafe.Pointer(cb)).Ffcc, bp)
if code == uintptr(0) {
return DFALSE
} // Unsupported
// If either opcode is a small character list, set pointers for comparing
// characters from that list with another list, or with a property.
if *(*Tuint32_t)(unsafe.Pointer(base_list)) == OP_CHAR {
chr_ptr = base_list + uintptr(2)*4
list_ptr = bp /* &list[0] */
} else if *(*Tuint32_t)(unsafe.Pointer(bp)) == OP_CHAR {
chr_ptr = bp + uintptr(2)*4
list_ptr = base_list
} else if *(*Tuint32_t)(unsafe.Pointer(base_list)) == OP_CLASS || *(*Tuint32_t)(unsafe.Pointer(bp)) == OP_CLASS ||
!(utf != 0) && (*(*Tuint32_t)(unsafe.Pointer(base_list)) == OP_NCLASS || *(*Tuint32_t)(unsafe.Pointer(bp)) == OP_NCLASS) {
if *(*Tuint32_t)(unsafe.Pointer(base_list)) == OP_CLASS || !(utf != 0) && *(*Tuint32_t)(unsafe.Pointer(base_list)) == OP_NCLASS {
set1 = base_end - uintptr(*(*Tuint32_t)(unsafe.Pointer(base_list + 2*4)))
list_ptr = bp /* &list[0] */
} else {
set1 = code - uintptr(*(*Tuint32_t)(unsafe.Pointer(bp + 2*4)))
list_ptr = base_list
}
invert_bits = DFALSE
switch *(*Tuint32_t)(unsafe.Pointer(list_ptr)) {
case OP_CLASS:
fallthrough
case OP_NCLASS:
set2 = func() uintptr {
if list_ptr == bp {
return code
}
return base_end
}() - uintptr(*(*Tuint32_t)(unsafe.Pointer(list_ptr + 2*4)))
break
fallthrough
case OP_XCLASS:
xclass_flags = func() uintptr {
if list_ptr == bp {
return code
}
return base_end
}() - uintptr(*(*Tuint32_t)(unsafe.Pointer(list_ptr + 2*4))) + uintptr(DLINK_SIZE)
if int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(xclass_flags)))&DXCL_HASPROP != 0 {
return DFALSE
}
if int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(xclass_flags)))&DXCL_MAP == 0 {
// No bits are set for characters < 256.
if *(*Tuint32_t)(unsafe.Pointer(bp + 1*4)) == Tuint32_t(0) {
return libc.Bool32(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(xclass_flags)))&DXCL_NOT == 0)
}
// Might be an empty repeat.
continue
}
set2 = xclass_flags + uintptr(1)
break
fallthrough
case OP_NOT_DIGIT:
invert_bits = DTRUE
fallthrough
// Fall through
case OP_DIGIT:
set2 = (*Tcompile_block_8)(unsafe.Pointer(cb)).Fcbits + uintptr(Dcbit_digit)
break
fallthrough
case OP_NOT_WHITESPACE:
invert_bits = DTRUE
fallthrough
// Fall through
case OP_WHITESPACE:
set2 = (*Tcompile_block_8)(unsafe.Pointer(cb)).Fcbits + uintptr(Dcbit_space)
break
fallthrough
case OP_NOT_WORDCHAR:
invert_bits = DTRUE
fallthrough
// Fall through
case OP_WORDCHAR:
set2 = (*Tcompile_block_8)(unsafe.Pointer(cb)).Fcbits + uintptr(Dcbit_word)
break
fallthrough
default:
return DFALSE
}
// Because the bit sets are unaligned bytes, we need to perform byte
// comparison here.
set_end = set1 + uintptr(32)
if invert_bits != 0 {
for __ccgo2 := true; __ccgo2; __ccgo2 = set1 < set_end {
if int32(*(*Tuint8_t)(unsafe.Pointer(libc.PostIncUintptr(&set1, 1)))) & ^int32(*(*Tuint8_t)(unsafe.Pointer(libc.PostIncUintptr(&set2, 1)))) != 0 {
return DFALSE
}
}
} else {
for __ccgo3 := true; __ccgo3; __ccgo3 = set1 < set_end {
if int32(*(*Tuint8_t)(unsafe.Pointer(libc.PostIncUintptr(&set1, 1))))&int32(*(*Tuint8_t)(unsafe.Pointer(libc.PostIncUintptr(&set2, 1)))) != 0 {
return DFALSE
}
}
}
if *(*Tuint32_t)(unsafe.Pointer(bp + 1*4)) == Tuint32_t(0) {
return DTRUE
}
// Might be an empty repeat.
continue
} else {
var leftop Tuint32_t
var rightop Tuint32_t
leftop = *(*Tuint32_t)(unsafe.Pointer(base_list))
rightop = *(*Tuint32_t)(unsafe.Pointer(bp))
accepted = DFALSE // Always set in non-unicode case.
if leftop == OP_PROP || leftop == OP_NOTPROP {
if rightop == OP_EOD {
accepted = DTRUE
} else if rightop == OP_PROP || rightop == OP_NOTPROP {
var n int32
var p uintptr
var same TBOOL = libc.Bool32(leftop == rightop)
var lisprop TBOOL = libc.Bool32(leftop == OP_PROP)
var risprop TBOOL = libc.Bool32(rightop == OP_PROP)
var bothprop TBOOL = libc.Bool32(lisprop != 0 && risprop != 0)
// There's a table that specifies how each combination is to be
// processed:
// 0 Always return FALSE (never auto-possessify)
// 1 Character groups are distinct (possessify if both are OP_PROP)
// 2 Check character categories in the same group (general or particular)
// 3 Return TRUE if the two opcodes are not the same
// ... see comments below
//
n = int32(*(*Tuint8_t)(unsafe.Pointer(uintptr(unsafe.Pointer(&propposstab)) + uintptr(*(*Tuint32_t)(unsafe.Pointer(base_list + 2*4)))*14 + uintptr(*(*Tuint32_t)(unsafe.Pointer(bp + 2*4))))))
switch n {
case 0:
break
fallthrough
case 1:
accepted = bothprop
break
fallthrough
case 2:
accepted = libc.Bool32(libc.Bool32(*(*Tuint32_t)(unsafe.Pointer(base_list + 3*4)) == *(*Tuint32_t)(unsafe.Pointer(bp + 3*4))) != same)
break
fallthrough
case 3:
accepted = libc.BoolInt32(!(same != 0))
break
fallthrough
case 4: // Left general category, right particular category
accepted = libc.Bool32(risprop != 0 && int32(*(*Tuint8_t)(unsafe.Pointer(uintptr(unsafe.Pointer(&catposstab)) + uintptr(*(*Tuint32_t)(unsafe.Pointer(base_list + 3*4)))*30 + uintptr(*(*Tuint32_t)(unsafe.Pointer(bp + 3*4)))))) == same)
break
fallthrough
case 5: // Right general category, left particular category
accepted = libc.Bool32(lisprop != 0 && int32(*(*Tuint8_t)(unsafe.Pointer(uintptr(unsafe.Pointer(&catposstab)) + uintptr(*(*Tuint32_t)(unsafe.Pointer(bp + 3*4)))*30 + uintptr(*(*Tuint32_t)(unsafe.Pointer(base_list + 3*4)))))) == same)
break
fallthrough
// This code is logically tricky. Think hard before fiddling with it.
// The posspropstab table has four entries per row. Each row relates to
// one of PCRE's special properties such as ALNUM or SPACE or WORD.
// Only WORD actually needs all four entries, but using repeats for the
// others means they can all use the same code below.
//
// The first two entries in each row are Unicode general categories, and
// apply always, because all the characters they include are part of the
// PCRE character set. The third and fourth entries are a general and a
// particular category, respectively, that include one or more relevant
// characters. One or the other is used, depending on whether the check
// is for a general or a particular category. However, in both cases the
// category contains more characters than the specials that are defined
// for the property being tested against. Therefore, it cannot be used
// in a NOTPROP case.
//
// Example: the row for WORD contains ucp_L, ucp_N, ucp_P, ucp_Po.
// Underscore is covered by ucp_P or ucp_Po.
case 6:
fallthrough // Left alphanum vs right general category
case 7:
fallthrough // Left space vs right general category
case 8: // Left word vs right general category
p = uintptr(unsafe.Pointer(&posspropstab)) + uintptr(n-6)*4
accepted = libc.Bool32(risprop != 0 && lisprop == libc.Bool32(*(*Tuint32_t)(unsafe.Pointer(bp + 3*4)) != Tuint32_t(*(*Tuint8_t)(unsafe.Pointer(p))) && *(*Tuint32_t)(unsafe.Pointer(bp + 3*4)) != Tuint32_t(*(*Tuint8_t)(unsafe.Pointer(p + 1))) && (*(*Tuint32_t)(unsafe.Pointer(bp + 3*4)) != Tuint32_t(*(*Tuint8_t)(unsafe.Pointer(p + 2))) || !(lisprop != 0))))
break
fallthrough
case 9:
fallthrough // Right alphanum vs left general category
case 10:
fallthrough // Right space vs left general category
case 11: // Right word vs left general category
p = uintptr(unsafe.Pointer(&posspropstab)) + uintptr(n-9)*4
accepted = libc.Bool32(lisprop != 0 && risprop == libc.Bool32(*(*Tuint32_t)(unsafe.Pointer(base_list + 3*4)) != Tuint32_t(*(*Tuint8_t)(unsafe.Pointer(p))) && *(*Tuint32_t)(unsafe.Pointer(base_list + 3*4)) != Tuint32_t(*(*Tuint8_t)(unsafe.Pointer(p + 1))) && (*(*Tuint32_t)(unsafe.Pointer(base_list + 3*4)) != Tuint32_t(*(*Tuint8_t)(unsafe.Pointer(p + 2))) || !(risprop != 0))))
break
fallthrough
case 12:
fallthrough // Left alphanum vs right particular category
case 13:
fallthrough // Left space vs right particular category
case 14: // Left word vs right particular category
p = uintptr(unsafe.Pointer(&posspropstab)) + uintptr(n-12)*4
accepted = libc.Bool32(risprop != 0 && lisprop == libc.Bool32(*(*Tuint8_t)(unsafe.Pointer(uintptr(unsafe.Pointer(&catposstab)) + uintptr(*(*Tuint8_t)(unsafe.Pointer(p)))*30 + uintptr(*(*Tuint32_t)(unsafe.Pointer(bp + 3*4))))) != 0 && *(*Tuint8_t)(unsafe.Pointer(uintptr(unsafe.Pointer(&catposstab)) + uintptr(*(*Tuint8_t)(unsafe.Pointer(p + 1)))*30 + uintptr(*(*Tuint32_t)(unsafe.Pointer(bp + 3*4))))) != 0 && (*(*Tuint32_t)(unsafe.Pointer(bp + 3*4)) != Tuint32_t(*(*Tuint8_t)(unsafe.Pointer(p + 3))) || !(lisprop != 0))))
break
fallthrough
case 15:
fallthrough // Right alphanum vs left particular category
case 16:
fallthrough // Right space vs left particular category
case 17: // Right word vs left particular category
p = uintptr(unsafe.Pointer(&posspropstab)) + uintptr(n-15)*4
accepted = libc.Bool32(lisprop != 0 && risprop == libc.Bool32(*(*Tuint8_t)(unsafe.Pointer(uintptr(unsafe.Pointer(&catposstab)) + uintptr(*(*Tuint8_t)(unsafe.Pointer(p)))*30 + uintptr(*(*Tuint32_t)(unsafe.Pointer(base_list + 3*4))))) != 0 && *(*Tuint8_t)(unsafe.Pointer(uintptr(unsafe.Pointer(&catposstab)) + uintptr(*(*Tuint8_t)(unsafe.Pointer(p + 1)))*30 + uintptr(*(*Tuint32_t)(unsafe.Pointer(base_list + 3*4))))) != 0 && (*(*Tuint32_t)(unsafe.Pointer(base_list + 3*4)) != Tuint32_t(*(*Tuint8_t)(unsafe.Pointer(p + 3))) || !(risprop != 0))))
break
}
}
} else {
accepted = libc.Bool32(leftop >= OP_NOT_DIGIT && leftop <= OP_EXTUNI && rightop >= OP_NOT_DIGIT && rightop <= OP_DOLLM && *(*Tuint8_t)(unsafe.Pointer(uintptr(unsafe.Pointer(&autoposstab)) + uintptr(leftop-OP_NOT_DIGIT)*21 + uintptr(rightop-OP_NOT_DIGIT))) != 0)
}
if !(accepted != 0) {
return DFALSE
}
if *(*Tuint32_t)(unsafe.Pointer(bp + 1*4)) == Tuint32_t(0) {
return DTRUE
}
// Might be an empty repeat.
continue
}
// Control reaches here only if one of the items is a small character list.
// All characters are checked against the other side.
for __ccgo4 := true; __ccgo4; __ccgo4 = *(*Tuint32_t)(unsafe.Pointer(chr_ptr)) != DNOTACHAR {
chr = *(*Tuint32_t)(unsafe.Pointer(chr_ptr))
switch *(*Tuint32_t)(unsafe.Pointer(list_ptr)) {
case OP_CHAR:
ochr_ptr = list_ptr + uintptr(2)*4
for __ccgo5 := true; __ccgo5; __ccgo5 = *(*Tuint32_t)(unsafe.Pointer(ochr_ptr)) != DNOTACHAR {
if chr == *(*Tuint32_t)(unsafe.Pointer(ochr_ptr)) {
return DFALSE
}
ochr_ptr += 4
}
break
case OP_NOT:
ochr_ptr = list_ptr + uintptr(2)*4
for __ccgo6 := true; __ccgo6; __ccgo6 = *(*Tuint32_t)(unsafe.Pointer(ochr_ptr)) != DNOTACHAR {
if chr == *(*Tuint32_t)(unsafe.Pointer(ochr_ptr)) {
break
}
ochr_ptr += 4
}
if *(*Tuint32_t)(unsafe.Pointer(ochr_ptr)) == DNOTACHAR {
return DFALSE
} // Not found
break
// Note that OP_DIGIT etc. are generated only when PCRE2_UCP is *not*
// set. When it is set, \d etc. are converted into OP_(NOT_)PROP codes.
case OP_DIGIT:
if chr < Tuint32_t(256) && int32(*(*Tuint8_t)(unsafe.Pointer((*Tcompile_block_8)(unsafe.Pointer(cb)).Fctypes + uintptr(chr))))&Dctype_digit != 0 {
return DFALSE
}
break
case OP_NOT_DIGIT:
if chr > Tuint32_t(255) || int32(*(*Tuint8_t)(unsafe.Pointer((*Tcompile_block_8)(unsafe.Pointer(cb)).Fctypes + uintptr(chr))))&Dctype_digit == 0 {
return DFALSE
}
break
case OP_WHITESPACE:
if chr < Tuint32_t(256) && int32(*(*Tuint8_t)(unsafe.Pointer((*Tcompile_block_8)(unsafe.Pointer(cb)).Fctypes + uintptr(chr))))&Dctype_space != 0 {
return DFALSE
}
break
case OP_NOT_WHITESPACE:
if chr > Tuint32_t(255) || int32(*(*Tuint8_t)(unsafe.Pointer((*Tcompile_block_8)(unsafe.Pointer(cb)).Fctypes + uintptr(chr))))&Dctype_space == 0 {
return DFALSE
}
break
case OP_WORDCHAR:
if chr < Tuint32_t(255) && int32(*(*Tuint8_t)(unsafe.Pointer((*Tcompile_block_8)(unsafe.Pointer(cb)).Fctypes + uintptr(chr))))&Dctype_word != 0 {
return DFALSE
}
break
case OP_NOT_WORDCHAR:
if chr > Tuint32_t(255) || int32(*(*Tuint8_t)(unsafe.Pointer((*Tcompile_block_8)(unsafe.Pointer(cb)).Fctypes + uintptr(chr))))&Dctype_word == 0 {
return DFALSE
}
break
case OP_HSPACE:
switch chr {
case Tuint32_t('\011'):
fallthrough
case Tuint32_t('\040'):
fallthrough
case libc.Uint32FromUint8(libc.Uint8FromInt32(160)):
fallthrough
case Tuint32_t(0x1680):
fallthrough /* OGHAM SPACE MARK */
case Tuint32_t(0x180e):
fallthrough /* MONGOLIAN VOWEL SEPARATOR */
case Tuint32_t(0x2000):
fallthrough /* EN QUAD */
case Tuint32_t(0x2001):
fallthrough /* EM QUAD */
case Tuint32_t(0x2002):
fallthrough /* EN SPACE */
case Tuint32_t(0x2003):
fallthrough /* EM SPACE */
case Tuint32_t(0x2004):
fallthrough /* THREE-PER-EM SPACE */
case Tuint32_t(0x2005):
fallthrough /* FOUR-PER-EM SPACE */
case Tuint32_t(0x2006):
fallthrough /* SIX-PER-EM SPACE */
case Tuint32_t(0x2007):
fallthrough /* FIGURE SPACE */
case Tuint32_t(0x2008):
fallthrough /* PUNCTUATION SPACE */
case Tuint32_t(0x2009):
fallthrough /* THIN SPACE */
case Tuint32_t(0x200A):
fallthrough /* HAIR SPACE */
case Tuint32_t(0x202f):
fallthrough /* NARROW NO-BREAK SPACE */
case Tuint32_t(0x205f):
fallthrough /* MEDIUM MATHEMATICAL SPACE */
case Tuint32_t(0x3000):
return DFALSE
default:
break
}
break
case OP_NOT_HSPACE:
switch chr {
case Tuint32_t('\011'):
fallthrough
case Tuint32_t('\040'):
fallthrough
case libc.Uint32FromUint8(libc.Uint8FromInt32(160)):
fallthrough
case Tuint32_t(0x1680):
fallthrough /* OGHAM SPACE MARK */
case Tuint32_t(0x180e):
fallthrough /* MONGOLIAN VOWEL SEPARATOR */
case Tuint32_t(0x2000):
fallthrough /* EN QUAD */
case Tuint32_t(0x2001):
fallthrough /* EM QUAD */
case Tuint32_t(0x2002):
fallthrough /* EN SPACE */
case Tuint32_t(0x2003):
fallthrough /* EM SPACE */
case Tuint32_t(0x2004):
fallthrough /* THREE-PER-EM SPACE */
case Tuint32_t(0x2005):
fallthrough /* FOUR-PER-EM SPACE */
case Tuint32_t(0x2006):
fallthrough /* SIX-PER-EM SPACE */
case Tuint32_t(0x2007):
fallthrough /* FIGURE SPACE */
case Tuint32_t(0x2008):
fallthrough /* PUNCTUATION SPACE */
case Tuint32_t(0x2009):
fallthrough /* THIN SPACE */
case Tuint32_t(0x200A):
fallthrough /* HAIR SPACE */
case Tuint32_t(0x202f):
fallthrough /* NARROW NO-BREAK SPACE */
case Tuint32_t(0x205f):
fallthrough /* MEDIUM MATHEMATICAL SPACE */
case Tuint32_t(0x3000):
break
default:
return DFALSE
}
break
case OP_ANYNL:
fallthrough
case OP_VSPACE:
switch chr {
case Tuint32_t('\012'):
fallthrough
case Tuint32_t('\013'):
fallthrough
case Tuint32_t('\014'):
fallthrough
case Tuint32_t('\015'):
fallthrough
case libc.Uint32FromUint8(libc.Uint8FromInt32(133)):
fallthrough
case Tuint32_t(0x2028):
fallthrough /* LINE SEPARATOR */
case Tuint32_t(0x2029):
return DFALSE
default:
break
}
break
case OP_NOT_VSPACE:
switch chr {
case Tuint32_t('\012'):
fallthrough
case Tuint32_t('\013'):
fallthrough
case Tuint32_t('\014'):
fallthrough
case Tuint32_t('\015'):
fallthrough
case libc.Uint32FromUint8(libc.Uint8FromInt32(133)):
fallthrough
case Tuint32_t(0x2028):
fallthrough /* LINE SEPARATOR */
case Tuint32_t(0x2029):
break
default:
return DFALSE
}
break
case OP_DOLL:
fallthrough
case OP_EODN:
switch chr {
case Tuint32_t('\015'):
fallthrough
case Tuint32_t('\012'):
fallthrough
case Tuint32_t('\013'):
fallthrough
case Tuint32_t('\014'):
fallthrough
case libc.Uint32FromUint8(libc.Uint8FromInt32(133)):
fallthrough
case Tuint32_t(0x2028):
fallthrough
case Tuint32_t(0x2029):
return DFALSE
}
break
case OP_EOD: // Can always possessify before \z
break
case OP_PROP:
fallthrough
case OP_NOTPROP:
if !(check_char_prop(tls, chr, *(*Tuint32_t)(unsafe.Pointer(list_ptr + 2*4)), *(*Tuint32_t)(unsafe.Pointer(list_ptr + 3*4)),
libc.Bool32(*(*Tuint32_t)(unsafe.Pointer(list_ptr)) == OP_NOTPROP)) != 0) {
return DFALSE
}
break
case OP_NCLASS:
if chr > Tuint32_t(255) {
return DFALSE
}
fallthrough
// Fall through
case OP_CLASS:
if chr > Tuint32_t(255) {
break
}
class_bitset = func() uintptr {
if list_ptr == bp {
return code
}
return base_end
}() - uintptr(*(*Tuint32_t)(unsafe.Pointer(list_ptr + 2*4)))
if uint32(*(*Tuint8_t)(unsafe.Pointer(class_bitset + uintptr(chr>>3))))&(uint32(1)<<(chr&Tuint32_t(7))) != uint32(0) {
return DFALSE
}
break
case OP_XCLASS:
if X_pcre2_xclass_8(tls, chr, func() uintptr {
if list_ptr == bp {
return code
}
return base_end
}()-uintptr(*(*Tuint32_t)(unsafe.Pointer(list_ptr + 2*4)))+uintptr(DLINK_SIZE), utf) != 0 {
return DFALSE
}
break
default:
return DFALSE
}
chr_ptr += 4
}
// At least one character must be matched from this opcode.
if *(*Tuint32_t)(unsafe.Pointer(bp + 1*4)) == Tuint32_t(0) {
return DTRUE
}
}
return TBOOL(0)
// Control never reaches here. There used to be a fail-save return FALSE; here,
// but some compilers complain about an unreachable statement.
}
// ************************************************
//
// Scan compiled regex for auto-possession *
//
// Replaces single character iterations with their possessive alternatives
// if appropriate. This function modifies the compiled opcode! Hitting a
// non-existent opcode may indicate a bug in PCRE2, but it can also be caused if a
// bad UTF string was compiled with PCRE2_NO_UTF_CHECK. The rec_limit catches
// overly complicated or large patterns. In these cases, the check just stops,
// leaving the remainder of the pattern unpossessified.
//
// Arguments:
// code points to start of the byte code
// cb compile data block
//
// Returns: 0 for success
// -1 if a non-existant opcode is encountered
func X_pcre2_auto_possessify_8(tls *libc.TLS, code uintptr, cb uintptr) int32 { /* pcre2_auto_possess.c:1132:1: */
bp := tls.Alloc(36)
defer tls.Free(36)
var c TPCRE2_UCHAR8
var end TPCRE2_SPTR8
var repeat_opcode uintptr
// var list [8]Tuint32_t at bp, 32
*(*int32)(unsafe.Pointer(bp + 32 /* rec_limit */)) = 1000 // Was 10,000 but clang+ASAN uses a lot of stack.
var utf TBOOL = libc.Bool32((*Tcompile_block_8)(unsafe.Pointer(cb)).Fexternal_options&DPCRE2_UTF != Tuint32_t(0))
var ucp TBOOL = libc.Bool32((*Tcompile_block_8)(unsafe.Pointer(cb)).Fexternal_options&DPCRE2_UCP != Tuint32_t(0))
for {
c = *(*TPCRE2_UCHAR8)(unsafe.Pointer(code))
if int32(c) >= OP_TABLE_LENGTH {
return -1
} // Something gone wrong
if int32(c) >= OP_STAR && int32(c) <= OP_TYPEPOSUPTO {
c = TPCRE2_UCHAR8(int32(c) - (int32(get_repeat_base(tls, c)) - OP_STAR))
if int32(c) <= OP_MINUPTO {
end = get_chr_property_list(tls, code, utf, ucp, (*Tcompile_block_8)(unsafe.Pointer(cb)).Ffcc, bp)
} else {
end = uintptr(0)
}
*(*Tuint32_t)(unsafe.Pointer(bp + 1*4)) = Tuint32_t(libc.Bool32(int32(c) == OP_STAR || int32(c) == OP_PLUS || int32(c) == OP_QUERY || int32(c) == OP_UPTO))
if end != uintptr(0) && compare_opcodes(tls, end, utf, ucp, cb, bp, end,
bp+32) != 0 {
switch int32(c) {
case OP_STAR:
*(*TPCRE2_UCHAR8)(unsafe.Pointer(code)) += TPCRE2_UCHAR8(OP_POSSTAR - OP_STAR)
break
fallthrough
case OP_MINSTAR:
*(*TPCRE2_UCHAR8)(unsafe.Pointer(code)) += TPCRE2_UCHAR8(OP_POSSTAR - OP_MINSTAR)
break
fallthrough
case OP_PLUS:
*(*TPCRE2_UCHAR8)(unsafe.Pointer(code)) += TPCRE2_UCHAR8(OP_POSPLUS - OP_PLUS)
break
fallthrough
case OP_MINPLUS:
*(*TPCRE2_UCHAR8)(unsafe.Pointer(code)) += TPCRE2_UCHAR8(OP_POSPLUS - OP_MINPLUS)
break
fallthrough
case OP_QUERY:
*(*TPCRE2_UCHAR8)(unsafe.Pointer(code)) += TPCRE2_UCHAR8(OP_POSQUERY - OP_QUERY)
break
fallthrough
case OP_MINQUERY:
*(*TPCRE2_UCHAR8)(unsafe.Pointer(code)) += TPCRE2_UCHAR8(OP_POSQUERY - OP_MINQUERY)
break
fallthrough
case OP_UPTO:
*(*TPCRE2_UCHAR8)(unsafe.Pointer(code)) += TPCRE2_UCHAR8(OP_POSUPTO - OP_UPTO)
break
fallthrough
case OP_MINUPTO:
*(*TPCRE2_UCHAR8)(unsafe.Pointer(code)) += TPCRE2_UCHAR8(OP_POSUPTO - OP_MINUPTO)
break
}
}
c = *(*TPCRE2_UCHAR8)(unsafe.Pointer(code))
} else if int32(c) == OP_CLASS || int32(c) == OP_NCLASS || int32(c) == OP_XCLASS {
if int32(c) == OP_XCLASS {
repeat_opcode = code + uintptr(uint32(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + 1)))<<8|int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + 2)))))
} else {
repeat_opcode = code + uintptr(1) + uintptr(uint64(32)/uint64(unsafe.Sizeof(TPCRE2_UCHAR8(0))))
}
c = *(*TPCRE2_UCHAR8)(unsafe.Pointer(repeat_opcode))
if int32(c) >= OP_CRSTAR && int32(c) <= OP_CRMINRANGE {
// The return from get_chr_property_list() will never be NULL when
// code (aka c) is one of the three class opcodes. However, gcc with
// -fanalyzer notes that a NULL return is possible, and grumbles. Hence we
// put in a check.
end = get_chr_property_list(tls, code, utf, ucp, (*Tcompile_block_8)(unsafe.Pointer(cb)).Ffcc, bp)
*(*Tuint32_t)(unsafe.Pointer(bp + 1*4)) = Tuint32_t(libc.Bool32(int32(c)&1 == 0))
if end != uintptr(0) && compare_opcodes(tls, end, utf, ucp, cb, bp, end, bp+32) != 0 {
switch int32(c) {
case OP_CRSTAR:
fallthrough
case OP_CRMINSTAR:
*(*TPCRE2_UCHAR8)(unsafe.Pointer(repeat_opcode)) = OP_CRPOSSTAR
break
fallthrough
case OP_CRPLUS:
fallthrough
case OP_CRMINPLUS:
*(*TPCRE2_UCHAR8)(unsafe.Pointer(repeat_opcode)) = OP_CRPOSPLUS
break
fallthrough
case OP_CRQUERY:
fallthrough
case OP_CRMINQUERY:
*(*TPCRE2_UCHAR8)(unsafe.Pointer(repeat_opcode)) = OP_CRPOSQUERY
break
fallthrough
case OP_CRRANGE:
fallthrough
case OP_CRMINRANGE:
*(*TPCRE2_UCHAR8)(unsafe.Pointer(repeat_opcode)) = OP_CRPOSRANGE
break
}
}
}
c = *(*TPCRE2_UCHAR8)(unsafe.Pointer(code))
}
switch int32(c) {
case OP_END:
return 0
case OP_TYPESTAR:
fallthrough
case OP_TYPEMINSTAR:
fallthrough
case OP_TYPEPLUS:
fallthrough
case OP_TYPEMINPLUS:
fallthrough
case OP_TYPEQUERY:
fallthrough
case OP_TYPEMINQUERY:
fallthrough
case OP_TYPEPOSSTAR:
fallthrough
case OP_TYPEPOSPLUS:
fallthrough
case OP_TYPEPOSQUERY:
if int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + 1))) == OP_PROP || int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + 1))) == OP_NOTPROP {
code += uintptr(2)
}
break
case OP_TYPEUPTO:
fallthrough
case OP_TYPEMINUPTO:
fallthrough
case OP_TYPEEXACT:
fallthrough
case OP_TYPEPOSUPTO:
if int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + 3))) == OP_PROP || int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + 3))) == OP_NOTPROP {
code += uintptr(2)
}
break
case OP_CALLOUT_STR:
code += uintptr(uint32(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + 5)))<<8 | int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + 6)))))
break
case OP_XCLASS:
code += uintptr(uint32(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + 1)))<<8 | int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + 2)))))
break
case OP_MARK:
fallthrough
case OP_COMMIT_ARG:
fallthrough
case OP_PRUNE_ARG:
fallthrough
case OP_SKIP_ARG:
fallthrough
case OP_THEN_ARG:
code += uintptr(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + 1)))
break
}
// Add in the fixed length from the table
code += uintptr(X_pcre2_OP_lengths_8[c])
// In UTF-8 and UTF-16 modes, opcodes that are followed by a character may be
// followed by a multi-byte character. The length in the table is a minimum, so
// we have to arrange to skip the extra code units.
if utf != 0 {
switch int32(c) {
case OP_CHAR:
fallthrough
case OP_CHARI:
fallthrough
case OP_NOT:
fallthrough
case OP_NOTI:
fallthrough
case OP_STAR:
fallthrough
case OP_MINSTAR:
fallthrough
case OP_PLUS:
fallthrough
case OP_MINPLUS:
fallthrough
case OP_QUERY:
fallthrough
case OP_MINQUERY:
fallthrough
case OP_UPTO:
fallthrough
case OP_MINUPTO:
fallthrough
case OP_EXACT:
fallthrough
case OP_POSSTAR:
fallthrough
case OP_POSPLUS:
fallthrough
case OP_POSQUERY:
fallthrough
case OP_POSUPTO:
fallthrough
case OP_STARI:
fallthrough
case OP_MINSTARI:
fallthrough
case OP_PLUSI:
fallthrough
case OP_MINPLUSI:
fallthrough
case OP_QUERYI:
fallthrough
case OP_MINQUERYI:
fallthrough
case OP_UPTOI:
fallthrough
case OP_MINUPTOI:
fallthrough
case OP_EXACTI:
fallthrough
case OP_POSSTARI:
fallthrough
case OP_POSPLUSI:
fallthrough
case OP_POSQUERYI:
fallthrough
case OP_POSUPTOI:
fallthrough
case OP_NOTSTAR:
fallthrough
case OP_NOTMINSTAR:
fallthrough
case OP_NOTPLUS:
fallthrough
case OP_NOTMINPLUS:
fallthrough
case OP_NOTQUERY:
fallthrough
case OP_NOTMINQUERY:
fallthrough
case OP_NOTUPTO:
fallthrough
case OP_NOTMINUPTO:
fallthrough
case OP_NOTEXACT:
fallthrough
case OP_NOTPOSSTAR:
fallthrough
case OP_NOTPOSPLUS:
fallthrough
case OP_NOTPOSQUERY:
fallthrough
case OP_NOTPOSUPTO:
fallthrough
case OP_NOTSTARI:
fallthrough
case OP_NOTMINSTARI:
fallthrough
case OP_NOTPLUSI:
fallthrough
case OP_NOTMINPLUSI:
fallthrough
case OP_NOTQUERYI:
fallthrough
case OP_NOTMINQUERYI:
fallthrough
case OP_NOTUPTOI:
fallthrough
case OP_NOTMINUPTOI:
fallthrough
case OP_NOTEXACTI:
fallthrough
case OP_NOTPOSSTARI:
fallthrough
case OP_NOTPOSPLUSI:
fallthrough
case OP_NOTPOSQUERYI:
fallthrough
case OP_NOTPOSUPTOI:
if int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + libc.UintptrFromInt32(-1)))) >= 0xc0 {
code += uintptr(X_pcre2_utf8_table4[uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + libc.UintptrFromInt32(-1))))&0x3f])
}
break
}
}
}
return int32(0)
}
// End of pcre2_auto_possess.c
// This function is needed only when memmove() is not available.
// End of pcre2_internal.h
var X_pcre2_default_tables_8 = [1088]Tuint8_t{
// This table is a lower casing table.
Tuint8_t(0), Tuint8_t(1), Tuint8_t(2), Tuint8_t(3), Tuint8_t(4), Tuint8_t(5), Tuint8_t(6), Tuint8_t(7),
Tuint8_t(8), Tuint8_t(9), Tuint8_t(10), Tuint8_t(11), Tuint8_t(12), Tuint8_t(13), Tuint8_t(14), Tuint8_t(15),
Tuint8_t(16), Tuint8_t(17), Tuint8_t(18), Tuint8_t(19), Tuint8_t(20), Tuint8_t(21), Tuint8_t(22), Tuint8_t(23),
Tuint8_t(24), Tuint8_t(25), Tuint8_t(26), Tuint8_t(27), Tuint8_t(28), Tuint8_t(29), Tuint8_t(30), Tuint8_t(31),
Tuint8_t(32), Tuint8_t(33), Tuint8_t(34), Tuint8_t(35), Tuint8_t(36), Tuint8_t(37), Tuint8_t(38), Tuint8_t(39),
Tuint8_t(40), Tuint8_t(41), Tuint8_t(42), Tuint8_t(43), Tuint8_t(44), Tuint8_t(45), Tuint8_t(46), Tuint8_t(47),
Tuint8_t(48), Tuint8_t(49), Tuint8_t(50), Tuint8_t(51), Tuint8_t(52), Tuint8_t(53), Tuint8_t(54), Tuint8_t(55),
Tuint8_t(56), Tuint8_t(57), Tuint8_t(58), Tuint8_t(59), Tuint8_t(60), Tuint8_t(61), Tuint8_t(62), Tuint8_t(63),
Tuint8_t(64), Tuint8_t(97), Tuint8_t(98), Tuint8_t(99), Tuint8_t(100), Tuint8_t(101), Tuint8_t(102), Tuint8_t(103),
Tuint8_t(104), Tuint8_t(105), Tuint8_t(106), Tuint8_t(107), Tuint8_t(108), Tuint8_t(109), Tuint8_t(110), Tuint8_t(111),
Tuint8_t(112), Tuint8_t(113), Tuint8_t(114), Tuint8_t(115), Tuint8_t(116), Tuint8_t(117), Tuint8_t(118), Tuint8_t(119),
Tuint8_t(120), Tuint8_t(121), Tuint8_t(122), Tuint8_t(91), Tuint8_t(92), Tuint8_t(93), Tuint8_t(94), Tuint8_t(95),
Tuint8_t(96), Tuint8_t(97), Tuint8_t(98), Tuint8_t(99), Tuint8_t(100), Tuint8_t(101), Tuint8_t(102), Tuint8_t(103),
Tuint8_t(104), Tuint8_t(105), Tuint8_t(106), Tuint8_t(107), Tuint8_t(108), Tuint8_t(109), Tuint8_t(110), Tuint8_t(111),
Tuint8_t(112), Tuint8_t(113), Tuint8_t(114), Tuint8_t(115), Tuint8_t(116), Tuint8_t(117), Tuint8_t(118), Tuint8_t(119),
Tuint8_t(120), Tuint8_t(121), Tuint8_t(122), Tuint8_t(123), Tuint8_t(124), Tuint8_t(125), Tuint8_t(126), Tuint8_t(127),
Tuint8_t(128), Tuint8_t(129), Tuint8_t(130), Tuint8_t(131), Tuint8_t(132), Tuint8_t(133), Tuint8_t(134), Tuint8_t(135),
Tuint8_t(136), Tuint8_t(137), Tuint8_t(138), Tuint8_t(139), Tuint8_t(140), Tuint8_t(141), Tuint8_t(142), Tuint8_t(143),
Tuint8_t(144), Tuint8_t(145), Tuint8_t(146), Tuint8_t(147), Tuint8_t(148), Tuint8_t(149), Tuint8_t(150), Tuint8_t(151),
Tuint8_t(152), Tuint8_t(153), Tuint8_t(154), Tuint8_t(155), Tuint8_t(156), Tuint8_t(157), Tuint8_t(158), Tuint8_t(159),
Tuint8_t(160), Tuint8_t(161), Tuint8_t(162), Tuint8_t(163), Tuint8_t(164), Tuint8_t(165), Tuint8_t(166), Tuint8_t(167),
Tuint8_t(168), Tuint8_t(169), Tuint8_t(170), Tuint8_t(171), Tuint8_t(172), Tuint8_t(173), Tuint8_t(174), Tuint8_t(175),
Tuint8_t(176), Tuint8_t(177), Tuint8_t(178), Tuint8_t(179), Tuint8_t(180), Tuint8_t(181), Tuint8_t(182), Tuint8_t(183),
Tuint8_t(184), Tuint8_t(185), Tuint8_t(186), Tuint8_t(187), Tuint8_t(188), Tuint8_t(189), Tuint8_t(190), Tuint8_t(191),
Tuint8_t(192), Tuint8_t(193), Tuint8_t(194), Tuint8_t(195), Tuint8_t(196), Tuint8_t(197), Tuint8_t(198), Tuint8_t(199),
Tuint8_t(200), Tuint8_t(201), Tuint8_t(202), Tuint8_t(203), Tuint8_t(204), Tuint8_t(205), Tuint8_t(206), Tuint8_t(207),
Tuint8_t(208), Tuint8_t(209), Tuint8_t(210), Tuint8_t(211), Tuint8_t(212), Tuint8_t(213), Tuint8_t(214), Tuint8_t(215),
Tuint8_t(216), Tuint8_t(217), Tuint8_t(218), Tuint8_t(219), Tuint8_t(220), Tuint8_t(221), Tuint8_t(222), Tuint8_t(223),
Tuint8_t(224), Tuint8_t(225), Tuint8_t(226), Tuint8_t(227), Tuint8_t(228), Tuint8_t(229), Tuint8_t(230), Tuint8_t(231),
Tuint8_t(232), Tuint8_t(233), Tuint8_t(234), Tuint8_t(235), Tuint8_t(236), Tuint8_t(237), Tuint8_t(238), Tuint8_t(239),
Tuint8_t(240), Tuint8_t(241), Tuint8_t(242), Tuint8_t(243), Tuint8_t(244), Tuint8_t(245), Tuint8_t(246), Tuint8_t(247),
Tuint8_t(248), Tuint8_t(249), Tuint8_t(250), Tuint8_t(251), Tuint8_t(252), Tuint8_t(253), Tuint8_t(254), Tuint8_t(255),
// This table is a case flipping table.
Tuint8_t(0), Tuint8_t(1), Tuint8_t(2), Tuint8_t(3), Tuint8_t(4), Tuint8_t(5), Tuint8_t(6), Tuint8_t(7),
Tuint8_t(8), Tuint8_t(9), Tuint8_t(10), Tuint8_t(11), Tuint8_t(12), Tuint8_t(13), Tuint8_t(14), Tuint8_t(15),
Tuint8_t(16), Tuint8_t(17), Tuint8_t(18), Tuint8_t(19), Tuint8_t(20), Tuint8_t(21), Tuint8_t(22), Tuint8_t(23),
Tuint8_t(24), Tuint8_t(25), Tuint8_t(26), Tuint8_t(27), Tuint8_t(28), Tuint8_t(29), Tuint8_t(30), Tuint8_t(31),
Tuint8_t(32), Tuint8_t(33), Tuint8_t(34), Tuint8_t(35), Tuint8_t(36), Tuint8_t(37), Tuint8_t(38), Tuint8_t(39),
Tuint8_t(40), Tuint8_t(41), Tuint8_t(42), Tuint8_t(43), Tuint8_t(44), Tuint8_t(45), Tuint8_t(46), Tuint8_t(47),
Tuint8_t(48), Tuint8_t(49), Tuint8_t(50), Tuint8_t(51), Tuint8_t(52), Tuint8_t(53), Tuint8_t(54), Tuint8_t(55),
Tuint8_t(56), Tuint8_t(57), Tuint8_t(58), Tuint8_t(59), Tuint8_t(60), Tuint8_t(61), Tuint8_t(62), Tuint8_t(63),
Tuint8_t(64), Tuint8_t(97), Tuint8_t(98), Tuint8_t(99), Tuint8_t(100), Tuint8_t(101), Tuint8_t(102), Tuint8_t(103),
Tuint8_t(104), Tuint8_t(105), Tuint8_t(106), Tuint8_t(107), Tuint8_t(108), Tuint8_t(109), Tuint8_t(110), Tuint8_t(111),
Tuint8_t(112), Tuint8_t(113), Tuint8_t(114), Tuint8_t(115), Tuint8_t(116), Tuint8_t(117), Tuint8_t(118), Tuint8_t(119),
Tuint8_t(120), Tuint8_t(121), Tuint8_t(122), Tuint8_t(91), Tuint8_t(92), Tuint8_t(93), Tuint8_t(94), Tuint8_t(95),
Tuint8_t(96), Tuint8_t(65), Tuint8_t(66), Tuint8_t(67), Tuint8_t(68), Tuint8_t(69), Tuint8_t(70), Tuint8_t(71),
Tuint8_t(72), Tuint8_t(73), Tuint8_t(74), Tuint8_t(75), Tuint8_t(76), Tuint8_t(77), Tuint8_t(78), Tuint8_t(79),
Tuint8_t(80), Tuint8_t(81), Tuint8_t(82), Tuint8_t(83), Tuint8_t(84), Tuint8_t(85), Tuint8_t(86), Tuint8_t(87),
Tuint8_t(88), Tuint8_t(89), Tuint8_t(90), Tuint8_t(123), Tuint8_t(124), Tuint8_t(125), Tuint8_t(126), Tuint8_t(127),
Tuint8_t(128), Tuint8_t(129), Tuint8_t(130), Tuint8_t(131), Tuint8_t(132), Tuint8_t(133), Tuint8_t(134), Tuint8_t(135),
Tuint8_t(136), Tuint8_t(137), Tuint8_t(138), Tuint8_t(139), Tuint8_t(140), Tuint8_t(141), Tuint8_t(142), Tuint8_t(143),
Tuint8_t(144), Tuint8_t(145), Tuint8_t(146), Tuint8_t(147), Tuint8_t(148), Tuint8_t(149), Tuint8_t(150), Tuint8_t(151),
Tuint8_t(152), Tuint8_t(153), Tuint8_t(154), Tuint8_t(155), Tuint8_t(156), Tuint8_t(157), Tuint8_t(158), Tuint8_t(159),
Tuint8_t(160), Tuint8_t(161), Tuint8_t(162), Tuint8_t(163), Tuint8_t(164), Tuint8_t(165), Tuint8_t(166), Tuint8_t(167),
Tuint8_t(168), Tuint8_t(169), Tuint8_t(170), Tuint8_t(171), Tuint8_t(172), Tuint8_t(173), Tuint8_t(174), Tuint8_t(175),
Tuint8_t(176), Tuint8_t(177), Tuint8_t(178), Tuint8_t(179), Tuint8_t(180), Tuint8_t(181), Tuint8_t(182), Tuint8_t(183),
Tuint8_t(184), Tuint8_t(185), Tuint8_t(186), Tuint8_t(187), Tuint8_t(188), Tuint8_t(189), Tuint8_t(190), Tuint8_t(191),
Tuint8_t(192), Tuint8_t(193), Tuint8_t(194), Tuint8_t(195), Tuint8_t(196), Tuint8_t(197), Tuint8_t(198), Tuint8_t(199),
Tuint8_t(200), Tuint8_t(201), Tuint8_t(202), Tuint8_t(203), Tuint8_t(204), Tuint8_t(205), Tuint8_t(206), Tuint8_t(207),
Tuint8_t(208), Tuint8_t(209), Tuint8_t(210), Tuint8_t(211), Tuint8_t(212), Tuint8_t(213), Tuint8_t(214), Tuint8_t(215),
Tuint8_t(216), Tuint8_t(217), Tuint8_t(218), Tuint8_t(219), Tuint8_t(220), Tuint8_t(221), Tuint8_t(222), Tuint8_t(223),
Tuint8_t(224), Tuint8_t(225), Tuint8_t(226), Tuint8_t(227), Tuint8_t(228), Tuint8_t(229), Tuint8_t(230), Tuint8_t(231),
Tuint8_t(232), Tuint8_t(233), Tuint8_t(234), Tuint8_t(235), Tuint8_t(236), Tuint8_t(237), Tuint8_t(238), Tuint8_t(239),
Tuint8_t(240), Tuint8_t(241), Tuint8_t(242), Tuint8_t(243), Tuint8_t(244), Tuint8_t(245), Tuint8_t(246), Tuint8_t(247),
Tuint8_t(248), Tuint8_t(249), Tuint8_t(250), Tuint8_t(251), Tuint8_t(252), Tuint8_t(253), Tuint8_t(254), Tuint8_t(255),
// This table contains bit maps for various character classes. Each map is 32
// bytes long and the bits run from the least significant end of each byte. The
// classes that have their own maps are: space, xdigit, digit, upper, lower, word,
// graph, print, punct, and cntrl. Other classes are built from combinations.
Tuint8_t(0x00), Tuint8_t(0x3e), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x01), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), // space
Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00),
Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00),
Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00),
Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0xff), Tuint8_t(0x03), // xdigit
Tuint8_t(0x7e), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x7e), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00),
Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00),
Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00),
Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0xff), Tuint8_t(0x03), // digit
Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00),
Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00),
Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00),
Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), // upper
Tuint8_t(0xfe), Tuint8_t(0xff), Tuint8_t(0xff), Tuint8_t(0x07), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00),
Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00),
Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00),
Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), // lower
Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0xfe), Tuint8_t(0xff), Tuint8_t(0xff), Tuint8_t(0x07),
Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00),
Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00),
Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0xff), Tuint8_t(0x03), // word
Tuint8_t(0xfe), Tuint8_t(0xff), Tuint8_t(0xff), Tuint8_t(0x87), Tuint8_t(0xfe), Tuint8_t(0xff), Tuint8_t(0xff), Tuint8_t(0x07),
Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00),
Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00),
Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0xfe), Tuint8_t(0xff), Tuint8_t(0xff), Tuint8_t(0xff), // graph
Tuint8_t(0xff), Tuint8_t(0xff), Tuint8_t(0xff), Tuint8_t(0xff), Tuint8_t(0xff), Tuint8_t(0xff), Tuint8_t(0xff), Tuint8_t(0x7f),
Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00),
Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00),
Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0xff), Tuint8_t(0xff), Tuint8_t(0xff), Tuint8_t(0xff), // print
Tuint8_t(0xff), Tuint8_t(0xff), Tuint8_t(0xff), Tuint8_t(0xff), Tuint8_t(0xff), Tuint8_t(0xff), Tuint8_t(0xff), Tuint8_t(0x7f),
Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00),
Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00),
Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0xfe), Tuint8_t(0xff), Tuint8_t(0x00), Tuint8_t(0xfc), // punct
Tuint8_t(0x01), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0xf8), Tuint8_t(0x01), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x78),
Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00),
Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00),
Tuint8_t(0xff), Tuint8_t(0xff), Tuint8_t(0xff), Tuint8_t(0xff), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), // cntrl
Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x80),
Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00),
Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00),
// This table identifies various classes of character by individual bits:
// 0x01 white space character
// 0x02 letter
// 0x04 lower case letter
// 0x08 decimal digit
// 0x10 alphanumeric or '_'
Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), // 0- 7
Tuint8_t(0x00), Tuint8_t(0x01), Tuint8_t(0x01), Tuint8_t(0x01), Tuint8_t(0x01), Tuint8_t(0x01), Tuint8_t(0x00), Tuint8_t(0x00), // 8- 15
Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), // 16- 23
Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), // 24- 31
Tuint8_t(0x01), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), // - '
Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), // ( - /
Tuint8_t(0x18), Tuint8_t(0x18), Tuint8_t(0x18), Tuint8_t(0x18), Tuint8_t(0x18), Tuint8_t(0x18), Tuint8_t(0x18), Tuint8_t(0x18), // 0 - 7
Tuint8_t(0x18), Tuint8_t(0x18), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), // 8 - ?
Tuint8_t(0x00), Tuint8_t(0x12), Tuint8_t(0x12), Tuint8_t(0x12), Tuint8_t(0x12), Tuint8_t(0x12), Tuint8_t(0x12), Tuint8_t(0x12), // @ - G
Tuint8_t(0x12), Tuint8_t(0x12), Tuint8_t(0x12), Tuint8_t(0x12), Tuint8_t(0x12), Tuint8_t(0x12), Tuint8_t(0x12), Tuint8_t(0x12), // H - O
Tuint8_t(0x12), Tuint8_t(0x12), Tuint8_t(0x12), Tuint8_t(0x12), Tuint8_t(0x12), Tuint8_t(0x12), Tuint8_t(0x12), Tuint8_t(0x12), // P - W
Tuint8_t(0x12), Tuint8_t(0x12), Tuint8_t(0x12), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x10), // X - _
Tuint8_t(0x00), Tuint8_t(0x16), Tuint8_t(0x16), Tuint8_t(0x16), Tuint8_t(0x16), Tuint8_t(0x16), Tuint8_t(0x16), Tuint8_t(0x16), // ` - g
Tuint8_t(0x16), Tuint8_t(0x16), Tuint8_t(0x16), Tuint8_t(0x16), Tuint8_t(0x16), Tuint8_t(0x16), Tuint8_t(0x16), Tuint8_t(0x16), // h - o
Tuint8_t(0x16), Tuint8_t(0x16), Tuint8_t(0x16), Tuint8_t(0x16), Tuint8_t(0x16), Tuint8_t(0x16), Tuint8_t(0x16), Tuint8_t(0x16), // p - w
Tuint8_t(0x16), Tuint8_t(0x16), Tuint8_t(0x16), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), // x -127
Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), // 128-135
Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), // 136-143
Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), // 144-151
Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), // 152-159
Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), // 160-167
Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), // 168-175
Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), // 176-183
Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), // 184-191
Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), // 192-199
Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), // 200-207
Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), // 208-215
Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), // 216-223
Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), // 224-231
Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), // 232-239
Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), // 240-247
Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00), Tuint8_t(0x00)} /* pcre2_chartables.c:34:15 */ // 248-255
// End of pcre2_chartables.c
// ************************************************
//
// Code parameters and static tables *
//
// COMPILE_WORK_SIZE specifies the size of stack workspace, which is used in
// different ways in the different pattern scans. The parsing and group-
// identifying pre-scan uses it to handle nesting, and needs it to be 16-bit
// aligned for this. Having defined the size in code units, we set up
// C16_WORK_SIZE as the number of elements in the 16-bit vector.
//
// During the first compiling phase, when determining how much memory is required,
// the regex is partly compiled into this space, but the compiled parts are
// discarded as soon as they can be, so that hopefully there will never be an
// overrun. The code does, however, check for an overrun, which can occur for
// pathological patterns. The size of the workspace depends on LINK_SIZE because
// the length of compiled items varies with this.
//
// In the real compile phase, this workspace is not currently used.
// A uint32_t vector is used for caching information about the size of
// capturing groups, to improve performance. A default is created on the stack of
// this size.
// The overrun tests check for a slightly smaller size so that they detect the
// overrun before it actually does run off the end of the data block.
// This value determines the size of the initial vector that is used for
// remembering named groups during the pre-compile. It is allocated on the stack,
// but if it is too small, it is expanded, in a similar way to the workspace. The
// value is the number of slots in the list.
// The pre-compiling pass over the pattern creates a parsed pattern in a vector
// of uint32_t. For short patterns this lives on the stack, with this size. Heap
// memory is used for longer patterns.
// Maximum length value to check against when making sure that the variable
// that holds the compiled pattern length does not overflow. We make it a bit less
// than INT_MAX to allow for adding in group terminating code units, so that we
// don't have to check them every time.
// Code values for parsed patterns, which are stored in a vector of 32-bit
// unsigned ints. Values less than META_END are literal data values. The coding
// for identifying the item is in the top 16-bits, leaving 16 bits for the
// additional data that some of them need. The META_CODE, META_DATA, and META_DIFF
// macros are used to manipulate parsed pattern elements.
//
// NOTE: When these definitions are changed, the table of extra lengths for each
// code (meta_extra_lengths, just below) must be updated to remain in step.
// These must be kept together to make it easy to check that an assertion
// is present where expected in a conditional group.
// These cannot be conditions
// These must be kept in this order, with consecutive values, and the _ARG
// versions of COMMIT, PRUNE, SKIP, and THEN immediately after their non-argument
// versions.
// These must be kept in groups of adjacent 3 values, and all together.
// This is a special "meta code" that is used only to distinguish (*asr: from
// (*sr: in the table of aphabetic assertions. It is never stored in the parsed
// pattern because (*asr: is turned into (*sr:(*atomic: at that stage. There is
// therefore no need for it to have a length entry, so use a high value.
// Table of extra lengths for each of the meta codes. Must be kept in step with
// the definitions above. For some items these values are a basic length to which
// a variable amount has to be added.
var meta_extra_lengths = [64]uint8{
uint8(0), // META_END
uint8(0), // META_ALT
uint8(0), // META_ATOMIC
uint8(0), // META_BACKREF - more if group is >= 10
uint8(1 + DSIZEOFFSET),
uint8(1), // META_BIGVALUE
uint8(3), // META_CALLOUT_NUMBER
uint8(3 + DSIZEOFFSET),
uint8(0), // META_CAPTURE
uint8(0), // META_CIRCUMFLEX
uint8(0), // META_CLASS
uint8(0), // META_CLASS_EMPTY
uint8(0), // META_CLASS_EMPTY_NOT
uint8(0), // META_CLASS_END
uint8(0), // META_CLASS_NOT
uint8(0), // META_COND_ASSERT
uint8(DSIZEOFFSET), // META_COND_DEFINE
uint8(1 + DSIZEOFFSET),
uint8(1 + DSIZEOFFSET),
uint8(1 + DSIZEOFFSET),
uint8(1 + DSIZEOFFSET),
uint8(3), // META_COND_VERSION
uint8(0), // META_DOLLAR
uint8(0), // META_DOT
uint8(0), // META_ESCAPE - more for ESC_P, ESC_p, ESC_g, ESC_k
uint8(0), // META_KET
uint8(0), // META_NOCAPTURE
uint8(1), // META_OPTIONS
uint8(1), // META_POSIX
uint8(1), // META_POSIX_NEG
uint8(0), // META_RANGE_ESCAPED
uint8(0), // META_RANGE_LITERAL
uint8(DSIZEOFFSET), // META_RECURSE
uint8(1 + DSIZEOFFSET),
uint8(0), // META_SCRIPT_RUN
uint8(0), // META_LOOKAHEAD
uint8(0), // META_LOOKAHEADNOT
uint8(DSIZEOFFSET), // META_LOOKBEHIND
uint8(DSIZEOFFSET), // META_LOOKBEHINDNOT
uint8(0), // META_LOOKAHEAD_NA
uint8(DSIZEOFFSET), // META_LOOKBEHIND_NA
uint8(1), // META_MARK - plus the string length
uint8(0), // META_ACCEPT
uint8(0), // META_FAIL
uint8(0), // META_COMMIT
uint8(1), // META_COMMIT_ARG - plus the string length
uint8(0), // META_PRUNE
uint8(1), // META_PRUNE_ARG - plus the string length
uint8(0), // META_SKIP
uint8(1), // META_SKIP_ARG - plus the string length
uint8(0), // META_THEN
uint8(1), // META_THEN_ARG - plus the string length
uint8(0), // META_ASTERISK
uint8(0), // META_ASTERISK_PLUS
uint8(0), // META_ASTERISK_QUERY
uint8(0), // META_PLUS
uint8(0), // META_PLUS_PLUS
uint8(0), // META_PLUS_QUERY
uint8(0), // META_QUERY
uint8(0), // META_QUERY_PLUS
uint8(0), // META_QUERY_QUERY
uint8(2), // META_MINMAX
uint8(2), // META_MINMAX_PLUS
uint8(2), // META_MINMAX_QUERY
} /* pcre2_compile.c:306:22 */
// Macro for setting individual bits in class bitmaps. It took some
// experimenting to figure out how to stop gcc 5.3.0 from warning with
// -Wconversion. This version gets a warning:
//
// #define SETBIT(a,b) a[(b)/8] |= (uint8_t)(1u << ((b)&7))
//
// Let's hope the apparently less efficient version isn't actually so bad if the
// compiler is clever with identical subexpressions.
// Values and flags for the unsigned xxcuflags variables that accompany xxcu
// variables, which are concerned with first and required code units. A value
// greater than or equal to REQ_NONE means "no code unit set"; otherwise the
// matching xxcu variable is set, and the low valued bits are relevant.
// These flags are used in the groupinfo vector.
// This simple test for a decimal digit works for both ASCII/Unicode and EBCDIC
// and is fast (a good compiler can turn it into a subtraction and unsigned
// comparison).
// Table to identify hex digits. The tables in chartables are dependent on the
// locale, and may mark arbitrary characters as digits. We want to recognize only
// 0-9, a-z, and A-Z as hex digits, which is why we have a private table here. It
// costs 256 bytes, but it is a lot faster than doing character value tests (at
// least in some simple cases I timed), and in some applications one wants PCRE2
// to compile efficiently as well as match efficiently. The value in the table is
// the binary hex digit value, or 0xff for non-hex digits.
// This is the "normal" case, for ASCII systems, and EBCDIC systems running in
// UTF-8 mode.
var xdigitab = [256]Tuint8_t{
Tuint8_t(0xff), Tuint8_t(0xff), Tuint8_t(0xff), Tuint8_t(0xff), Tuint8_t(0xff), Tuint8_t(0xff), Tuint8_t(0xff), Tuint8_t(0xff), // 0- 7
Tuint8_t(0xff), Tuint8_t(0xff), Tuint8_t(0xff), Tuint8_t(0xff), Tuint8_t(0xff), Tuint8_t(0xff), Tuint8_t(0xff), Tuint8_t(0xff), // 8- 15
Tuint8_t(0xff), Tuint8_t(0xff), Tuint8_t(0xff), Tuint8_t(0xff), Tuint8_t(0xff), Tuint8_t(0xff), Tuint8_t(0xff), Tuint8_t(0xff), // 16- 23
Tuint8_t(0xff), Tuint8_t(0xff), Tuint8_t(0xff), Tuint8_t(0xff), Tuint8_t(0xff), Tuint8_t(0xff), Tuint8_t(0xff), Tuint8_t(0xff), // 24- 31
Tuint8_t(0xff), Tuint8_t(0xff), Tuint8_t(0xff), Tuint8_t(0xff), Tuint8_t(0xff), Tuint8_t(0xff), Tuint8_t(0xff), Tuint8_t(0xff), // - '
Tuint8_t(0xff), Tuint8_t(0xff), Tuint8_t(0xff), Tuint8_t(0xff), Tuint8_t(0xff), Tuint8_t(0xff), Tuint8_t(0xff), Tuint8_t(0xff), // ( - /
Tuint8_t(0x00), Tuint8_t(0x01), Tuint8_t(0x02), Tuint8_t(0x03), Tuint8_t(0x04), Tuint8_t(0x05), Tuint8_t(0x06), Tuint8_t(0x07), // 0 - 7
Tuint8_t(0x08), Tuint8_t(0x09), Tuint8_t(0xff), Tuint8_t(0xff), Tuint8_t(0xff), Tuint8_t(0xff), Tuint8_t(0xff), Tuint8_t(0xff), // 8 - ?
Tuint8_t(0xff), Tuint8_t(0x0a), Tuint8_t(0x0b), Tuint8_t(0x0c), Tuint8_t(0x0d), Tuint8_t(0x0e), Tuint8_t(0x0f), Tuint8_t(0xff), // @ - G
Tuint8_t(0xff), Tuint8_t(0xff), Tuint8_t(0xff), Tuint8_t(0xff), Tuint8_t(0xff), Tuint8_t(0xff), Tuint8_t(0xff), Tuint8_t(0xff), // H - O
Tuint8_t(0xff), Tuint8_t(0xff), Tuint8_t(0xff), Tuint8_t(0xff), Tuint8_t(0xff), Tuint8_t(0xff), Tuint8_t(0xff), Tuint8_t(0xff), // P - W
Tuint8_t(0xff), Tuint8_t(0xff), Tuint8_t(0xff), Tuint8_t(0xff), Tuint8_t(0xff), Tuint8_t(0xff), Tuint8_t(0xff), Tuint8_t(0xff), // X - _
Tuint8_t(0xff), Tuint8_t(0x0a), Tuint8_t(0x0b), Tuint8_t(0x0c), Tuint8_t(0x0d), Tuint8_t(0x0e), Tuint8_t(0x0f), Tuint8_t(0xff), // ` - g
Tuint8_t(0xff), Tuint8_t(0xff), Tuint8_t(0xff), Tuint8_t(0xff), Tuint8_t(0xff), Tuint8_t(0xff), Tuint8_t(0xff), Tuint8_t(0xff), // h - o
Tuint8_t(0xff), Tuint8_t(0xff), Tuint8_t(0xff), Tuint8_t(0xff), Tuint8_t(0xff), Tuint8_t(0xff), Tuint8_t(0xff), Tuint8_t(0xff), // p - w
Tuint8_t(0xff), Tuint8_t(0xff), Tuint8_t(0xff), Tuint8_t(0xff), Tuint8_t(0xff), Tuint8_t(0xff), Tuint8_t(0xff), Tuint8_t(0xff), // x -127
Tuint8_t(0xff), Tuint8_t(0xff), Tuint8_t(0xff), Tuint8_t(0xff), Tuint8_t(0xff), Tuint8_t(0xff), Tuint8_t(0xff), Tuint8_t(0xff), // 128-135
Tuint8_t(0xff), Tuint8_t(0xff), Tuint8_t(0xff), Tuint8_t(0xff), Tuint8_t(0xff), Tuint8_t(0xff), Tuint8_t(0xff), Tuint8_t(0xff), // 136-143
Tuint8_t(0xff), Tuint8_t(0xff), Tuint8_t(0xff), Tuint8_t(0xff), Tuint8_t(0xff), Tuint8_t(0xff), Tuint8_t(0xff), Tuint8_t(0xff), // 144-151
Tuint8_t(0xff), Tuint8_t(0xff), Tuint8_t(0xff), Tuint8_t(0xff), Tuint8_t(0xff), Tuint8_t(0xff), Tuint8_t(0xff), Tuint8_t(0xff), // 152-159
Tuint8_t(0xff), Tuint8_t(0xff), Tuint8_t(0xff), Tuint8_t(0xff), Tuint8_t(0xff), Tuint8_t(0xff), Tuint8_t(0xff), Tuint8_t(0xff), // 160-167
Tuint8_t(0xff), Tuint8_t(0xff), Tuint8_t(0xff), Tuint8_t(0xff), Tuint8_t(0xff), Tuint8_t(0xff), Tuint8_t(0xff), Tuint8_t(0xff), // 168-175
Tuint8_t(0xff), Tuint8_t(0xff), Tuint8_t(0xff), Tuint8_t(0xff), Tuint8_t(0xff), Tuint8_t(0xff), Tuint8_t(0xff), Tuint8_t(0xff), // 176-183
Tuint8_t(0xff), Tuint8_t(0xff), Tuint8_t(0xff), Tuint8_t(0xff), Tuint8_t(0xff), Tuint8_t(0xff), Tuint8_t(0xff), Tuint8_t(0xff), // 184-191
Tuint8_t(0xff), Tuint8_t(0xff), Tuint8_t(0xff), Tuint8_t(0xff), Tuint8_t(0xff), Tuint8_t(0xff), Tuint8_t(0xff), Tuint8_t(0xff), // 192-199
Tuint8_t(0xff), Tuint8_t(0xff), Tuint8_t(0xff), Tuint8_t(0xff), Tuint8_t(0xff), Tuint8_t(0xff), Tuint8_t(0xff), Tuint8_t(0xff), // 2ff-207
Tuint8_t(0xff), Tuint8_t(0xff), Tuint8_t(0xff), Tuint8_t(0xff), Tuint8_t(0xff), Tuint8_t(0xff), Tuint8_t(0xff), Tuint8_t(0xff), // 208-215
Tuint8_t(0xff), Tuint8_t(0xff), Tuint8_t(0xff), Tuint8_t(0xff), Tuint8_t(0xff), Tuint8_t(0xff), Tuint8_t(0xff), Tuint8_t(0xff), // 216-223
Tuint8_t(0xff), Tuint8_t(0xff), Tuint8_t(0xff), Tuint8_t(0xff), Tuint8_t(0xff), Tuint8_t(0xff), Tuint8_t(0xff), Tuint8_t(0xff), // 224-231
Tuint8_t(0xff), Tuint8_t(0xff), Tuint8_t(0xff), Tuint8_t(0xff), Tuint8_t(0xff), Tuint8_t(0xff), Tuint8_t(0xff), Tuint8_t(0xff), // 232-239
Tuint8_t(0xff), Tuint8_t(0xff), Tuint8_t(0xff), Tuint8_t(0xff), Tuint8_t(0xff), Tuint8_t(0xff), Tuint8_t(0xff), Tuint8_t(0xff), // 240-247
Tuint8_t(0xff), Tuint8_t(0xff), Tuint8_t(0xff), Tuint8_t(0xff), Tuint8_t(0xff), Tuint8_t(0xff), Tuint8_t(0xff), Tuint8_t(0xff)} /* pcre2_compile.c:422:22 */ // 248-255
// Table for handling alphanumeric escaped characters. Positive returns are
// simple data values; negative values are for special things like \d and so on.
// Zero means further processing is needed (for things like \x), or the escape is
// invalid.
// This is the "normal" table for ASCII systems or for EBCDIC systems running
// in UTF-8 mode. It runs from '0' to 'z'.
var escapes = [75]int16{
int16(0), int16(0),
int16(0), int16(0),
int16(0), int16(0),
int16(0), int16(0),
int16(0), int16(0),
int16('\072'), int16('\073'),
int16('\074'), int16('\075'),
int16('\076'), int16('\077'),
int16('\100'), int16(-ESC_A),
int16(-ESC_B), int16(-ESC_C),
int16(-ESC_D), int16(-ESC_E),
int16(0), int16(-ESC_G),
int16(-ESC_H), int16(0),
int16(0), int16(-ESC_K),
int16(0), int16(0),
int16(-ESC_N), int16(0),
int16(-ESC_P), int16(-ESC_Q),
int16(-ESC_R), int16(-ESC_S),
int16(0), int16(0),
int16(-ESC_V), int16(-ESC_W),
int16(-ESC_X), int16(0),
int16(-ESC_Z), int16('\133'),
int16('\134'), int16('\135'),
int16('\136'), int16('\137'),
int16('\140'), int16('\007'),
int16(-ESC_b), int16(0),
int16(-ESC_d), int16('\033'),
int16('\014'), int16(0),
int16(-ESC_h), int16(0),
int16(0), int16(-ESC_k),
int16(0), int16(0),
int16('\012'), int16(0),
int16(-ESC_p), int16(0),
int16('\015'), int16(-ESC_s),
int16('\011'), int16(0),
int16(-ESC_v), int16(-ESC_w),
int16(0), int16(0),
int16(-ESC_z),
} /* pcre2_compile.c:511:24 */
// Table of special "verbs" like (*PRUNE). This is a short table, so it is
// searched linearly. Put all the names into a single string, in order to reduce
// the number of relocations when a shared library is dynamically linked. The
// string is built from string macros so that it works in UTF-8 mode on EBCDIC
// platforms.
type Sverbitem = struct {
Flen uint32
Fmeta Tuint32_t
Fhas_arg int32
} /* pcre2_compile.c:602:9 */
// Table of special "verbs" like (*PRUNE). This is a short table, so it is
// searched linearly. Put all the names into a single string, in order to reduce
// the number of relocations when a shared library is dynamically linked. The
// string is built from string macros so that it works in UTF-8 mode on EBCDIC
// platforms.
type Tverbitem = Sverbitem /* pcre2_compile.c:606:3 */
var verbnames =
// Empty name is a shorthand for MARK
*(*[43]int8)(unsafe.Pointer(ts)) /* pcre2_compile.c:608:19 */
var verbs = [9]Tverbitem{
{Fmeta: DMETA_MARK, Fhas_arg: +1}, // > 0 => must have an argument
{Flen: uint32(4), Fmeta: DMETA_MARK, Fhas_arg: +1},
{Flen: uint32(6), Fmeta: DMETA_ACCEPT, Fhas_arg: -1}, // < 0 => Optional argument, convert to pre-MARK
{Flen: uint32(1), Fmeta: DMETA_FAIL, Fhas_arg: -1},
{Flen: uint32(4), Fmeta: DMETA_FAIL, Fhas_arg: -1},
{Flen: uint32(6), Fmeta: DMETA_COMMIT},
{Flen: uint32(5), Fmeta: DMETA_PRUNE}, // Optional argument; bump META code if found
{Flen: uint32(4), Fmeta: DMETA_SKIP},
{Flen: uint32(4), Fmeta: DMETA_THEN},
} /* pcre2_compile.c:619:23 */
var verbcount int32 = int32(uint64(unsafe.Sizeof(verbs)) / uint64(unsafe.Sizeof(Tverbitem{}))) /* pcre2_compile.c:631:18 */
// Verb opcodes, indexed by their META code offset from META_MARK.
var verbops = [11]Tuint32_t{
OP_MARK, OP_ACCEPT, OP_FAIL, OP_COMMIT, OP_COMMIT_ARG, OP_PRUNE,
OP_PRUNE_ARG, OP_SKIP, OP_SKIP_ARG, OP_THEN, OP_THEN_ARG} /* pcre2_compile.c:635:23 */
// Table of "alpha assertions" like (*pla:...), similar to the (*VERB) table.
type Salasitem = struct {
Flen uint32
Fmeta Tuint32_t
} /* pcre2_compile.c:641:9 */
// Table of "alpha assertions" like (*pla:...), similar to the (*VERB) table.
type Talasitem = Salasitem /* pcre2_compile.c:644:3 */
var alasnames = *(*[210]int8)(unsafe.Pointer(ts + 43)) /* pcre2_compile.c:646:19 */
var alasmeta = [17]Talasitem{
{Flen: uint32(3), Fmeta: DMETA_LOOKAHEAD},
{Flen: uint32(3), Fmeta: DMETA_LOOKBEHIND},
{Flen: uint32(5), Fmeta: DMETA_LOOKAHEAD_NA},
{Flen: uint32(5), Fmeta: DMETA_LOOKBEHIND_NA},
{Flen: uint32(3), Fmeta: DMETA_LOOKAHEADNOT},
{Flen: uint32(3), Fmeta: DMETA_LOOKBEHINDNOT},
{Flen: uint32(18), Fmeta: DMETA_LOOKAHEAD},
{Flen: uint32(19), Fmeta: DMETA_LOOKBEHIND},
{Flen: uint32(29), Fmeta: DMETA_LOOKAHEAD_NA},
{Flen: uint32(30), Fmeta: DMETA_LOOKBEHIND_NA},
{Flen: uint32(18), Fmeta: DMETA_LOOKAHEADNOT},
{Flen: uint32(19), Fmeta: DMETA_LOOKBEHINDNOT},
{Flen: uint32(6), Fmeta: DMETA_ATOMIC},
{Flen: uint32(2), Fmeta: DMETA_SCRIPT_RUN}, // sr = script run
{Flen: uint32(3), Fmeta: DMETA_ATOMIC_SCRIPT_RUN}, // asr = atomic script run
{Flen: uint32(10), Fmeta: DMETA_SCRIPT_RUN}, // script run
{Flen: uint32(17), Fmeta: DMETA_ATOMIC_SCRIPT_RUN}, // atomic script run
} /* pcre2_compile.c:665:23 */
var alascount int32 = int32(uint64(unsafe.Sizeof(alasmeta)) / uint64(unsafe.Sizeof(Talasitem{}))) /* pcre2_compile.c:685:18 */
// Offsets from OP_STAR for case-independent and negative repeat opcodes.
var chartypeoffset = [4]Tuint32_t{
Tuint32_t(OP_STAR - OP_STAR), Tuint32_t(OP_STARI - OP_STAR),
Tuint32_t(OP_NOTSTAR - OP_STAR), Tuint32_t(OP_NOTSTARI - OP_STAR)} /* pcre2_compile.c:689:17 */
// Tables of names of POSIX character classes and their lengths. The names are
// now all in a single string, to reduce the number of relocations when a shared
// library is dynamically loaded. The list of lengths is terminated by a zero
// length entry. The first three must be alpha, lower, upper, as this is assumed
// for handling case independence. The indices for graph, print, and punct are
// needed, so identify them.
var posix_names = *(*[84]int8)(unsafe.Pointer(ts + 253)) /* pcre2_compile.c:700:19 */
var posix_name_lengths = [15]Tuint8_t{
Tuint8_t(5), Tuint8_t(5), Tuint8_t(5), Tuint8_t(5), Tuint8_t(5), Tuint8_t(5), Tuint8_t(5), Tuint8_t(5), Tuint8_t(5), Tuint8_t(5), Tuint8_t(5), Tuint8_t(5), Tuint8_t(4), Tuint8_t(6), Tuint8_t(0)} /* pcre2_compile.c:706:22 */
// Table of class bit maps for each POSIX class. Each class is formed from a
// base map, with an optional addition or removal of another map. Then, for some
// classes, there is some additional tweaking: for [:blank:] the vertical space
// characters are removed, and for [:alpha:] and [:alnum:] the underscore
// character is removed. The triples in the table consist of the base map offset,
// second map offset or -1 if no second map, and a non-negative value for map
// addition or a negative value for map subtraction (if there are two maps). The
// absolute value of the third field has these meanings: 0 => no tweaking, 1 =>
// remove vertical space characters, 2 => remove underscore.
var posix_class_maps = [42]int32{
Dcbit_word, Dcbit_digit, -2, // alpha
Dcbit_lower, -1, 0, // lower
Dcbit_upper, -1, 0, // upper
Dcbit_word, -1, 2, // alnum - word without underscore
Dcbit_print, Dcbit_cntrl, 0, // ascii
Dcbit_space, -1, 1, // blank - a GNU extension
Dcbit_cntrl, -1, 0, // cntrl
Dcbit_digit, -1, 0, // digit
Dcbit_graph, -1, 0, // graph
Dcbit_print, -1, 0, // print
Dcbit_punct, -1, 0, // punct
Dcbit_space, -1, 0, // space
Dcbit_word, -1, 0, // word - a Perl extension
Dcbit_xdigit, -1, 0, // xdigit
} /* pcre2_compile.c:723:18 */
// The POSIX class Unicode property substitutes that are used in UCP mode must
// be in the order of the POSIX class names, defined above.
var posix_substitutes = [28]int32{
DPT_GC, ucp_L, // alpha
DPT_PC, ucp_Ll, // lower
DPT_PC, ucp_Lu, // upper
DPT_ALNUM, 0, // alnum
-1, 0, // ascii, treat as non-UCP
-1, 1, // blank, treat as \h
DPT_PC, ucp_Cc, // cntrl
DPT_PC, ucp_Nd, // digit
DPT_PXGRAPH, 0, // graph
DPT_PXPRINT, 0, // print
DPT_PXPUNCT, 0, // punct
DPT_PXSPACE, 0, /* space */ // Xps is POSIX space, but from 8.34
DPT_WORD, 0, /* word */ // Perl and POSIX space are the same
-1, 0, // xdigit, treat as non-UCP
} /* pcre2_compile.c:745:12 */ // Read integer value for depth limit
type Spso = struct {
Fname uintptr
Flength Tuint16_t
Ftype Tuint16_t
Fvalue Tuint32_t
} /* pcre2_compile.c:822:9 */
// Read integer value for depth limit
type Tpso = Spso /* pcre2_compile.c:827:3 */
// NB: STRING_UTFn_RIGHTPAR contains the length as well
var pso_list = [21]Tpso{
{Fname: uintptr(ts + 337), Flength: Tuint16_t(5), Fvalue: DPCRE2_UTF},
{Fname: uintptr(ts + 343), Flength: Tuint16_t(4), Fvalue: DPCRE2_UTF},
{Fname: uintptr(ts + 348), Flength: Tuint16_t(4), Fvalue: DPCRE2_UCP},
{Fname: uintptr(ts + 353), Flength: Tuint16_t(9), Ftype: PSO_FLG, Fvalue: Tuint32_t(DPCRE2_NOTEMPTY_SET)},
{Fname: uintptr(ts + 363), Flength: Tuint16_t(17), Ftype: PSO_FLG, Fvalue: Tuint32_t(DPCRE2_NE_ATST_SET)},
{Fname: uintptr(ts + 381), Flength: Tuint16_t(16), Fvalue: DPCRE2_NO_AUTO_POSSESS},
{Fname: uintptr(ts + 398), Flength: Tuint16_t(18), Fvalue: DPCRE2_NO_DOTSTAR_ANCHOR},
{Fname: uintptr(ts + 417), Flength: Tuint16_t(7), Ftype: PSO_FLG, Fvalue: Tuint32_t(DPCRE2_NOJIT)},
{Fname: uintptr(ts + 425), Flength: Tuint16_t(13), Fvalue: DPCRE2_NO_START_OPTIMIZE},
{Fname: uintptr(ts + 439), Flength: Tuint16_t(11), Ftype: PSO_LIMH},
{Fname: uintptr(ts + 451), Flength: Tuint16_t(12), Ftype: PSO_LIMM},
{Fname: uintptr(ts + 464), Flength: Tuint16_t(12), Ftype: PSO_LIMD},
{Fname: uintptr(ts + 477), Flength: Tuint16_t(16), Ftype: PSO_LIMD},
{Fname: uintptr(ts + 494), Flength: Tuint16_t(3), Ftype: PSO_NL, Fvalue: Tuint32_t(DPCRE2_NEWLINE_CR)},
{Fname: uintptr(ts + 498), Flength: Tuint16_t(3), Ftype: PSO_NL, Fvalue: Tuint32_t(DPCRE2_NEWLINE_LF)},
{Fname: uintptr(ts + 502), Flength: Tuint16_t(5), Ftype: PSO_NL, Fvalue: Tuint32_t(DPCRE2_NEWLINE_CRLF)},
{Fname: uintptr(ts + 508), Flength: Tuint16_t(4), Ftype: PSO_NL, Fvalue: Tuint32_t(DPCRE2_NEWLINE_ANY)},
{Fname: uintptr(ts + 513), Flength: Tuint16_t(4), Ftype: PSO_NL, Fvalue: Tuint32_t(DPCRE2_NEWLINE_NUL)},
{Fname: uintptr(ts + 518), Flength: Tuint16_t(8), Ftype: PSO_NL, Fvalue: Tuint32_t(DPCRE2_NEWLINE_ANYCRLF)},
{Fname: uintptr(ts + 527), Flength: Tuint16_t(12), Ftype: PSO_BSR, Fvalue: Tuint32_t(DPCRE2_BSR_ANYCRLF)},
{Fname: uintptr(ts + 540), Flength: Tuint16_t(12), Ftype: PSO_BSR, Fvalue: Tuint32_t(DPCRE2_BSR_UNICODE)},
} /* pcre2_compile.c:831:12 */
// This table is used when converting repeating opcodes into possessified
// versions as a result of an explicit possessive quantifier such as ++. A zero
// value means there is no possessified version - in those cases the item in
// question must be wrapped in ONCE brackets. The table is truncated at OP_CALLOUT
// because all relevant opcodes are less than that.
var opcode_possessify = [119]Tuint8_t{
Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), // 0 - 15
Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), // 16 - 31
Tuint8_t(0), // NOTI
OP_POSSTAR, Tuint8_t(0), // STAR, MINSTAR
OP_POSPLUS, Tuint8_t(0), // PLUS, MINPLUS
OP_POSQUERY, Tuint8_t(0), // QUERY, MINQUERY
OP_POSUPTO, Tuint8_t(0), // UPTO, MINUPTO
Tuint8_t(0), // EXACT
Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), // POS{STAR,PLUS,QUERY,UPTO}
OP_POSSTARI, Tuint8_t(0), // STARI, MINSTARI
OP_POSPLUSI, Tuint8_t(0), // PLUSI, MINPLUSI
OP_POSQUERYI, Tuint8_t(0), // QUERYI, MINQUERYI
OP_POSUPTOI, Tuint8_t(0), // UPTOI, MINUPTOI
Tuint8_t(0), // EXACTI
Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), // POS{STARI,PLUSI,QUERYI,UPTOI}
OP_NOTPOSSTAR, Tuint8_t(0), // NOTSTAR, NOTMINSTAR
OP_NOTPOSPLUS, Tuint8_t(0), // NOTPLUS, NOTMINPLUS
OP_NOTPOSQUERY, Tuint8_t(0), // NOTQUERY, NOTMINQUERY
OP_NOTPOSUPTO, Tuint8_t(0), // NOTUPTO, NOTMINUPTO
Tuint8_t(0), // NOTEXACT
Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), // NOTPOS{STAR,PLUS,QUERY,UPTO}
OP_NOTPOSSTARI, Tuint8_t(0), // NOTSTARI, NOTMINSTARI
OP_NOTPOSPLUSI, Tuint8_t(0), // NOTPLUSI, NOTMINPLUSI
OP_NOTPOSQUERYI, Tuint8_t(0), // NOTQUERYI, NOTMINQUERYI
OP_NOTPOSUPTOI, Tuint8_t(0), // NOTUPTOI, NOTMINUPTOI
Tuint8_t(0), // NOTEXACTI
Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), // NOTPOS{STARI,PLUSI,QUERYI,UPTOI}
OP_TYPEPOSSTAR, Tuint8_t(0), // TYPESTAR, TYPEMINSTAR
OP_TYPEPOSPLUS, Tuint8_t(0), // TYPEPLUS, TYPEMINPLUS
OP_TYPEPOSQUERY, Tuint8_t(0), // TYPEQUERY, TYPEMINQUERY
OP_TYPEPOSUPTO, Tuint8_t(0), // TYPEUPTO, TYPEMINUPTO
Tuint8_t(0), // TYPEEXACT
Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), // TYPEPOS{STAR,PLUS,QUERY,UPTO}
OP_CRPOSSTAR, Tuint8_t(0), // CRSTAR, CRMINSTAR
OP_CRPOSPLUS, Tuint8_t(0), // CRPLUS, CRMINPLUS
OP_CRPOSQUERY, Tuint8_t(0), // CRQUERY, CRMINQUERY
OP_CRPOSRANGE, Tuint8_t(0), // CRRANGE, CRMINRANGE
Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), // CRPOS{STAR,PLUS,QUERY,RANGE}
Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), // CLASS, NCLASS, XCLASS
Tuint8_t(0), Tuint8_t(0), // REF, REFI
Tuint8_t(0), Tuint8_t(0), // DNREF, DNREFI
Tuint8_t(0), Tuint8_t(0), // RECURSE, CALLOUT
} /* pcre2_compile.c:861:22 */
// ************************************************
//
// Copy compiled code *
//
// Compiled JIT code cannot be copied, so the new compiled block has no
// associated JIT data.
func Xpcre2_code_copy_8(tls *libc.TLS, code uintptr) uintptr { /* pcre2_compile.c:1193:27: */
var ref_count uintptr
var newcode uintptr
if code == uintptr(0) {
return uintptr(0)
}
newcode = (*struct {
f func(*libc.TLS, Tsize_t, uintptr) uintptr
})(unsafe.Pointer(&struct{ uintptr }{(*Tpcre2_code_8)(unsafe.Pointer(code)).Fmemctl.Fmalloc})).f(tls, (*Tpcre2_code_8)(unsafe.Pointer(code)).Fblocksize, (*Tpcre2_code_8)(unsafe.Pointer(code)).Fmemctl.Fmemory_data)
if newcode == uintptr(0) {
return uintptr(0)
}
libc.Xmemcpy(tls, newcode, code, (*Tpcre2_code_8)(unsafe.Pointer(code)).Fblocksize)
(*Tpcre2_code_8)(unsafe.Pointer(newcode)).Fexecutable_jit = uintptr(0)
// If the code is one that has been deserialized, increment the reference count
// in the decoded tables.
if (*Tpcre2_code_8)(unsafe.Pointer(code)).Fflags&Tuint32_t(DPCRE2_DEREF_TABLES) != Tuint32_t(0) {
ref_count = (*Tpcre2_code_8)(unsafe.Pointer(code)).Ftables + uintptr(Dcbits_offset+Dcbit_length+256)
*(*Tsize_t)(unsafe.Pointer(ref_count))++
}
return newcode
}
// ************************************************
//
// Copy compiled code and character tables *
//
// Compiled JIT code cannot be copied, so the new compiled block has no
// associated JIT data. This version of code_copy also makes a separate copy of
// the character tables.
func Xpcre2_code_copy_with_tables_8(tls *libc.TLS, code uintptr) uintptr { /* pcre2_compile.c:1227:27: */
var ref_count uintptr
var newcode uintptr
var newtables uintptr
if code == uintptr(0) {
return uintptr(0)
}
newcode = (*struct {
f func(*libc.TLS, Tsize_t, uintptr) uintptr
})(unsafe.Pointer(&struct{ uintptr }{(*Tpcre2_code_8)(unsafe.Pointer(code)).Fmemctl.Fmalloc})).f(tls, (*Tpcre2_code_8)(unsafe.Pointer(code)).Fblocksize, (*Tpcre2_code_8)(unsafe.Pointer(code)).Fmemctl.Fmemory_data)
if newcode == uintptr(0) {
return uintptr(0)
}
libc.Xmemcpy(tls, newcode, code, (*Tpcre2_code_8)(unsafe.Pointer(code)).Fblocksize)
(*Tpcre2_code_8)(unsafe.Pointer(newcode)).Fexecutable_jit = uintptr(0)
newtables = (*struct {
f func(*libc.TLS, Tsize_t, uintptr) uintptr
})(unsafe.Pointer(&struct{ uintptr }{(*Tpcre2_code_8)(unsafe.Pointer(code)).Fmemctl.Fmalloc})).f(tls, uint64(Dcbits_offset+Dcbit_length+256)+uint64(unsafe.Sizeof(Tsize_t(0))),
(*Tpcre2_code_8)(unsafe.Pointer(code)).Fmemctl.Fmemory_data)
if newtables == uintptr(0) {
(*struct {
f func(*libc.TLS, uintptr, uintptr)
})(unsafe.Pointer(&struct{ uintptr }{(*Tpcre2_code_8)(unsafe.Pointer(code)).Fmemctl.Ffree})).f(tls, newcode, (*Tpcre2_code_8)(unsafe.Pointer(code)).Fmemctl.Fmemory_data)
return uintptr(0)
}
libc.Xmemcpy(tls, newtables, (*Tpcre2_code_8)(unsafe.Pointer(code)).Ftables, uint64(Dcbits_offset+Dcbit_length+256))
ref_count = newtables + uintptr(Dcbits_offset+Dcbit_length+256)
*(*Tsize_t)(unsafe.Pointer(ref_count)) = uint64(1)
(*Tpcre2_code_8)(unsafe.Pointer(newcode)).Ftables = newtables
*(*Tuint32_t)(unsafe.Pointer(newcode + 96)) |= Tuint32_t(DPCRE2_DEREF_TABLES)
return newcode
}
// ************************************************
//
// Free compiled code *
//
func Xpcre2_code_free_8(tls *libc.TLS, code uintptr) { /* pcre2_compile.c:1263:1: */
var ref_count uintptr
if code != uintptr(0) {
if (*Tpcre2_code_8)(unsafe.Pointer(code)).Fexecutable_jit != uintptr(0) {
X_pcre2_jit_free_8(tls, (*Tpcre2_code_8)(unsafe.Pointer(code)).Fexecutable_jit, code)
}
if (*Tpcre2_code_8)(unsafe.Pointer(code)).Fflags&Tuint32_t(DPCRE2_DEREF_TABLES) != Tuint32_t(0) {
// Decoded tables belong to the codes after deserialization, and they must
// be freed when there are no more references to them. The *ref_count should
// always be > 0.
ref_count = (*Tpcre2_code_8)(unsafe.Pointer(code)).Ftables + uintptr(Dcbits_offset+Dcbit_length+256)
if *(*Tsize_t)(unsafe.Pointer(ref_count)) > uint64(0) {
*(*Tsize_t)(unsafe.Pointer(ref_count))--
if *(*Tsize_t)(unsafe.Pointer(ref_count)) == uint64(0) {
(*struct {
f func(*libc.TLS, uintptr, uintptr)
})(unsafe.Pointer(&struct{ uintptr }{(*Tpcre2_code_8)(unsafe.Pointer(code)).Fmemctl.Ffree})).f(tls, (*Tpcre2_code_8)(unsafe.Pointer(code)).Ftables, (*Tpcre2_code_8)(unsafe.Pointer(code)).Fmemctl.Fmemory_data)
}
}
}
(*struct {
f func(*libc.TLS, uintptr, uintptr)
})(unsafe.Pointer(&struct{ uintptr }{(*Tpcre2_code_8)(unsafe.Pointer(code)).Fmemctl.Ffree})).f(tls, code, (*Tpcre2_code_8)(unsafe.Pointer(code)).Fmemctl.Fmemory_data)
}
}
// ************************************************
//
// Read a number, possibly signed *
//
// This function is used to read numbers in the pattern. The initial pointer
// must be the sign or first digit of the number. When relative values (introduced
// by + or -) are allowed, they are relative group numbers, and the result must be
// greater than zero.
//
// Arguments:
// ptrptr points to the character pointer variable
// ptrend points to the end of the input string
// allow_sign if < 0, sign not allowed; if >= 0, sign is relative to this
// max_value the largest number allowed
// max_error the error to give for an over-large number
// intptr where to put the result
// errcodeptr where to put an error code
//
// Returns: TRUE - a number was read
// FALSE - errorcode == 0 => no number was found
// errorcode != 0 => an error occurred
func read_number(tls *libc.TLS, ptrptr uintptr, ptrend TPCRE2_SPTR8, allow_sign Tint32_t, max_value Tuint32_t, max_error Tuint32_t, intptr uintptr, errorcodeptr uintptr) TBOOL { /* pcre2_compile.c:1317:1: */
var sign int32
var n Tuint32_t
var ptr TPCRE2_SPTR8
var yield TBOOL
sign = 0
n = Tuint32_t(0)
ptr = *(*TPCRE2_SPTR8)(unsafe.Pointer(ptrptr))
yield = DFALSE
*(*int32)(unsafe.Pointer(errorcodeptr)) = 0
if !(allow_sign >= 0 && ptr < ptrend) {
goto __1
}
if !(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(ptr))) == '\053') {
goto __2
}
sign = +1
max_value = max_value - Tuint32_t(allow_sign)
ptr++
goto __3
__2:
if !(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(ptr))) == '\055') {
goto __4
}
sign = -1
ptr++
__4:
;
__3:
;
__1:
;
if !(ptr >= ptrend || !(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(ptr))) >= '\060' && int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(ptr))) <= '\071')) {
goto __5
}
return DFALSE
__5:
;
__6:
if !(ptr < ptrend && (int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(ptr))) >= '\060' && int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(ptr))) <= '\071')) {
goto __7
}
n = n*Tuint32_t(10) + Tuint32_t(*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&ptr, 1)))) - Tuint32_t('\060')
if !(n > max_value) {
goto __8
}
*(*int32)(unsafe.Pointer(errorcodeptr)) = int32(max_error)
goto EXIT
__8:
;
goto __6
__7:
;
if !(allow_sign >= 0 && sign != 0) {
goto __9
}
if !(n == Tuint32_t(0)) {
goto __10
}
*(*int32)(unsafe.Pointer(errorcodeptr)) = ERR26 // +0 and -0 are not allowed
goto EXIT
__10:
;
if !(sign > 0) {
goto __11
}
n = n + Tuint32_t(allow_sign)
goto __12
__11:
if !(int32(n) > allow_sign) {
goto __13
}
*(*int32)(unsafe.Pointer(errorcodeptr)) = ERR15 // Non-existent subpattern
goto EXIT
goto __14
__13:
n = Tuint32_t(allow_sign+1) - n
__14:
;
__12:
;
__9:
;
yield = DTRUE
EXIT:
*(*int32)(unsafe.Pointer(intptr)) = int32(n)
*(*TPCRE2_SPTR8)(unsafe.Pointer(ptrptr)) = ptr
return yield
}
// ************************************************
//
// Read repeat counts *
//
// Read an item of the form {n,m} and return the values if non-NULL pointers
// are supplied. Repeat counts must be less than 65536 (MAX_REPEAT_COUNT); a
// larger value is used for "unlimited". We have to use signed arguments for
// read_number() because it is capable of returning a signed value.
//
// Arguments:
// ptrptr points to pointer to character after'{'
// ptrend pointer to end of input
// minp if not NULL, pointer to int for min
// maxp if not NULL, pointer to int for max (-1 if no max)
// returned as -1 if no max
// errorcodeptr points to error code variable
//
// Returns: FALSE if not a repeat quantifier, errorcode set zero
// FALSE on error, with errorcode set non-zero
// TRUE on success, with pointer updated to point after '}'
func read_repeat_counts(tls *libc.TLS, ptrptr uintptr, ptrend TPCRE2_SPTR8, minp uintptr, maxp uintptr, errorcodeptr uintptr) TBOOL { /* pcre2_compile.c:1403:1: */
bp := tls.Alloc(16)
defer tls.Free(16)
// var p TPCRE2_SPTR8 at bp, 8
var yield TBOOL
var had_comma TBOOL
// var min Tint32_t at bp+8, 4
// var max Tint32_t at bp+12, 4
var c Tuint32_t
yield = DFALSE
had_comma = DFALSE
*(*Tint32_t)(unsafe.Pointer(bp + 8 /* min */)) = 0
*(*Tint32_t)(unsafe.Pointer(bp + 12 /* max */)) = int32(DMAX_REPEAT_COUNT + uint32(1)) // This value is larger than MAX_REPEAT_COUNT
// Check the syntax
*(*int32)(unsafe.Pointer(errorcodeptr)) = 0
*(*TPCRE2_SPTR8)(unsafe.Pointer(bp /* p */)) = *(*TPCRE2_SPTR8)(unsafe.Pointer(ptrptr))
__1:
;
if !(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp)) >= ptrend) {
goto __4
}
return DFALSE
__4:
;
c = Tuint32_t(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp /* p */)))))
if !(c >= Tuint32_t('\060') && c <= Tuint32_t('\071')) {
goto __5
}
goto __2
__5:
;
if !(c == Tuint32_t('\175')) {
goto __6
}
goto __3
__6:
;
if !(c == Tuint32_t('\054')) {
goto __7
}
if !(had_comma != 0) {
goto __9
}
return DFALSE
__9:
;
had_comma = DTRUE
goto __8
__7:
return DFALSE
__8:
;
goto __2
__2:
*(*TPCRE2_SPTR8)(unsafe.Pointer(bp /* p */))++
goto __1
goto __3
__3:
;
// The only error from read_number() is for a number that is too big.
*(*TPCRE2_SPTR8)(unsafe.Pointer(bp /* p */)) = *(*TPCRE2_SPTR8)(unsafe.Pointer(ptrptr))
if !!(read_number(tls, bp, ptrend, -1, DMAX_REPEAT_COUNT, ERR5, bp+8, errorcodeptr) != 0) {
goto __10
}
goto EXIT
__10:
;
if !(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp))))) == '\175') {
goto __11
}
*(*TPCRE2_SPTR8)(unsafe.Pointer(bp /* p */))++
*(*Tint32_t)(unsafe.Pointer(bp + 12 /* max */)) = *(*Tint32_t)(unsafe.Pointer(bp + 8 /* min */))
goto __12
__11:
if !(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PreIncUintptr(&*(*TPCRE2_SPTR8)(unsafe.Pointer(bp)), 1)))) != '\175') {
goto __13
}
if !!(read_number(tls, bp, ptrend, -1, DMAX_REPEAT_COUNT, ERR5, bp+12,
errorcodeptr) != 0) {
goto __14
}
goto EXIT
__14:
;
if !(*(*Tint32_t)(unsafe.Pointer(bp + 12)) < *(*Tint32_t)(unsafe.Pointer(bp + 8))) {
goto __15
}
*(*int32)(unsafe.Pointer(errorcodeptr)) = ERR4
goto EXIT
__15:
;
__13:
;
*(*TPCRE2_SPTR8)(unsafe.Pointer(bp /* p */))++
__12:
;
yield = DTRUE
if !(minp != uintptr(0)) {
goto __16
}
*(*Tuint32_t)(unsafe.Pointer(minp)) = Tuint32_t(*(*Tint32_t)(unsafe.Pointer(bp + 8 /* min */)))
__16:
;
if !(maxp != uintptr(0)) {
goto __17
}
*(*Tuint32_t)(unsafe.Pointer(maxp)) = Tuint32_t(*(*Tint32_t)(unsafe.Pointer(bp + 12 /* max */)))
__17:
;
// Update the pattern pointer
EXIT:
*(*TPCRE2_SPTR8)(unsafe.Pointer(ptrptr)) = *(*TPCRE2_SPTR8)(unsafe.Pointer(bp /* p */))
return yield
}
// ************************************************
//
// Handle escapes *
//
// This function is called when a \ has been encountered. It either returns a
// positive value for a simple escape such as \d, or 0 for a data character, which
// is placed in chptr. A backreference to group n is returned as negative n. On
// entry, ptr is pointing at the character after \. On exit, it points after the
// final code unit of the escape sequence.
//
// This function is also called from pcre2_substitute() to handle escape sequences
// in replacement strings. In this case, the cb argument is NULL, and in the case
// of escapes that have further processing, only sequences that define a data
// character are recognised. The isclass argument is not relevant; the options
// argument is the final value of the compiled pattern's options.
//
// Arguments:
// ptrptr points to the input position pointer
// ptrend points to the end of the input
// chptr points to a returned data character
// errorcodeptr points to the errorcode variable (containing zero)
// options the current options bits
// isclass TRUE if inside a character class
// cb compile data block or NULL when called from pcre2_substitute()
//
// Returns: zero => a data character
// positive => a special escape sequence
// negative => a numerical back reference
// on error, errorcodeptr is set non-zero
func X_pcre2_check_escape_8(tls *libc.TLS, ptrptr uintptr, ptrend TPCRE2_SPTR8, chptr uintptr, errorcodeptr uintptr, options Tuint32_t, extra_options Tuint32_t, isclass TBOOL, cb uintptr) int32 { /* pcre2_compile.c:1502:1: */
bp := tls.Alloc(32)
defer tls.Free(32)
var utf TBOOL
// var ptr TPCRE2_SPTR8 at bp+24, 8
var c Tuint32_t
var cc Tuint32_t
var escape int32
var i int32
// var p TPCRE2_SPTR8 at bp, 8
var hptr TPCRE2_SPTR8
var xc Tuint32_t
// var p1 TPCRE2_SPTR8 at bp+8, 8
var xc1 Tuint32_t
// var s int32 at bp+16, 4
var oldptr TPCRE2_SPTR8
var overflow TBOOL
var alt_bsux TBOOL
utf = libc.Bool32(options&DPCRE2_UTF != Tuint32_t(0))
*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 24 /* ptr */)) = *(*TPCRE2_SPTR8)(unsafe.Pointer(ptrptr))
escape = 0
// If backslash is at the end of the string, it's an error.
if !(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 24)) >= ptrend) {
goto __1
}
*(*int32)(unsafe.Pointer(errorcodeptr)) = ERR1
return 0
__1:
;
c = Tuint32_t(*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 24 /* ptr */)), 1))))
if !(utf != 0 && c >= 0xc0) {
goto __2
}
if !(c&0x20 == Tuint32_t(0)) {
goto __3
}
c = c&0x1f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 24)), 1))))&0x3f
goto __4
__3:
if !(c&0x10 == Tuint32_t(0)) {
goto __5
}
c = c&0x0f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 24)))))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 24)) + 1)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 24 /* ptr */)) += uintptr(2)
goto __6
__5:
if !(c&0x08 == Tuint32_t(0)) {
goto __7
}
c = c&0x07<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 24)))))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 24)) + 1)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 24)) + 2)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 24 /* ptr */)) += uintptr(3)
goto __8
__7:
if !(c&0x04 == Tuint32_t(0)) {
goto __9
}
c = c&0x03<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 24)))))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 24)) + 1)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 24)) + 2)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 24)) + 3)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 24 /* ptr */)) += uintptr(4)
goto __10
__9:
c = c&0x01<<30 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 24)))))&0x3f<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 24)) + 1)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 24)) + 2)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 24)) + 3)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 24)) + 4)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 24 /* ptr */)) += uintptr(5)
__10:
;
__8:
;
__6:
;
__4:
;
__2:
;
// Get character value, increment pointer
*(*int32)(unsafe.Pointer(errorcodeptr)) = 0 // Be optimistic
// Non-alphanumerics are literals, so we just leave the value in c. An initial
// value test saves a memory lookup for code points outside the alphanumeric
// range.
if !(c < Tuint32_t('\060') || c > Tuint32_t('\172')) {
goto __11
}
goto __12
__11:
if !(libc.AssignInt32(&i, int32(escapes[c-Tuint32_t('\060')])) != 0) {
goto __13
}
if !(i > 0) {
goto __15
}
c = Tuint32_t(i)
if !(c == Tuint32_t('\015') && extra_options&DPCRE2_EXTRA_ESCAPED_CR_IS_LF != Tuint32_t(0)) {
goto __17
}
c = Tuint32_t('\012')
__17:
;
goto __16
__15: /* Negative table entry */
escape = -i // Else return a special escape
if !(cb != uintptr(0) && (escape == ESC_P || escape == ESC_p || escape == ESC_X)) {
goto __18
}
*(*Tuint32_t)(unsafe.Pointer(cb + 208)) |= Tuint32_t(DPCRE2_HASBKPORX)
__18:
; // Note \P, \p, or \X
// Perl supports \N{name} for character names and \N{U+dddd} for numerical
// Unicode code points, as well as plain \N for "not newline". PCRE does not
// support \N{name}. However, it does support quantification such as \N{2,3},
// so if \N{ is not followed by U+dddd we check for a quantifier.
if !(escape == ESC_N && *(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 24)) < ptrend && int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 24))))) == '\173') {
goto __19
}
*(*TPCRE2_SPTR8)(unsafe.Pointer(bp /* p */)) = *(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 24)) + uintptr(1)
// \N{U+ can be handled by the \x{ code. However, this construction is
// not valid in EBCDIC environments because it specifies a Unicode
// character, not a codepoint in the local code. For example \N{U+0041}
// must be "A" in all environments. Also, in Perl, \N{U+ forces Unicode
// casing semantics for the entire pattern, so allow it only in UTF (i.e.
// Unicode) mode.
if !((int64(ptrend)-int64(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp))))/1 > int64(1) && int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp))))) == '\125' && int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp)) + 1))) == '\053') {
goto __20
}
if !(utf != 0) {
goto __22
}
*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 24 /* ptr */)) = *(*TPCRE2_SPTR8)(unsafe.Pointer(bp)) + uintptr(1)
escape = 0 // Not a fancy escape after all
goto COME_FROM_NU
goto __23
__22:
*(*int32)(unsafe.Pointer(errorcodeptr)) = ERR93
__23:
;
goto __21
__20:
if !(!(read_repeat_counts(tls, bp, ptrend, uintptr(0), uintptr(0), errorcodeptr) != 0) && *(*int32)(unsafe.Pointer(errorcodeptr)) == 0) {
goto __24
}
*(*int32)(unsafe.Pointer(errorcodeptr)) = ERR37
__24:
;
__21:
;
__19:
;
__16:
;
goto __14
__13:
alt_bsux =
libc.Bool32(options&DPCRE2_ALT_BSUX|extra_options&DPCRE2_EXTRA_ALT_BSUX != Tuint32_t(0))
// Filter calls from pcre2_substitute().
if !(cb == uintptr(0)) {
goto __25
}
if !(c != Tuint32_t('\143') && c != Tuint32_t('\157') && c != Tuint32_t('\170')) {
goto __26
}
*(*int32)(unsafe.Pointer(errorcodeptr)) = ERR3
return 0
__26:
;
alt_bsux = DFALSE // Do not modify \x handling
__25:
;
switch c {
// A number of Perl escapes are not handled by PCRE. We give an explicit
// error.
case Tuint32_t('\106'):
goto __28
case Tuint32_t('\154'):
goto __29
case Tuint32_t('\114'):
goto __30
// \u is unrecognized when neither PCRE2_ALT_BSUX nor PCRE2_EXTRA_ALT_BSUX
// is set. Otherwise, \u must be followed by exactly four hex digits or, if
// PCRE2_EXTRA_ALT_BSUX is set, by any number of hex digits in braces.
// Otherwise it is a lowercase u letter. This gives some compatibility with
// ECMAScript (aka JavaScript).
case Tuint32_t('\165'):
goto __31
// \U is unrecognized unless PCRE2_ALT_BSUX or PCRE2_EXTRA_ALT_BSUX is set,
// in which case it is an upper case letter.
case Tuint32_t('\125'):
goto __32
// In a character class, \g is just a literal "g". Outside a character
// class, \g must be followed by one of a number of specific things:
//
// (1) A number, either plain or braced. If positive, it is an absolute
// backreference. If negative, it is a relative backreference. This is a Perl
// 5.10 feature.
//
// (2) Perl 5.10 also supports \g{name} as a reference to a named group. This
// is part of Perl's movement towards a unified syntax for back references. As
// this is synonymous with \k{name}, we fudge it up by pretending it really
// was \k{name}.
//
// (3) For Oniguruma compatibility we also support \g followed by a name or a
// number either in angle brackets or in single quotes. However, these are
// (possibly recursive) subroutine calls, _not_ backreferences. We return
// the ESC_g code.
//
// Summary: Return a negative number for a numerical back reference, ESC_k for
// a named back reference, and ESC_g for a named or numbered subroutine call.
//
case Tuint32_t('\147'):
goto __33
// The handling of escape sequences consisting of a string of digits
// starting with one that is not zero is not straightforward. Perl has changed
// over the years. Nowadays \g{} for backreferences and \o{} for octal are
// recommended to avoid the ambiguities in the old syntax.
//
// Outside a character class, the digits are read as a decimal number. If the
// number is less than 10, or if there are that many previous extracting left
// brackets, it is a back reference. Otherwise, up to three octal digits are
// read to form an escaped character code. Thus \123 is likely to be octal 123
// (cf \0123, which is octal 012 followed by the literal 3).
//
// Inside a character class, \ followed by a digit is always either a literal
// 8 or 9 or an octal number.
case Tuint32_t('\061'):
goto __34
case Tuint32_t('\062'):
goto __35
case Tuint32_t('\063'):
goto __36
case Tuint32_t('\064'):
goto __37
case Tuint32_t('\065'):
goto __38
case Tuint32_t('\066'):
goto __39
case Tuint32_t('\067'):
goto __40
case Tuint32_t('\070'):
goto __41
case Tuint32_t('\071'):
goto __42
// Fall through
// \0 always starts an octal number, but we may drop through to here with a
// larger first octal digit. The original code used just to take the least
// significant 8 bits of octal numbers (I think this is what early Perls used
// to do). Nowadays we allow for larger numbers in UTF-8 mode and 16-bit mode,
// but no more than 3 octal digits.
case Tuint32_t('\060'):
goto __43
// \o is a relatively new Perl feature, supporting a more general way of
// specifying character codes in octal. The only supported form is \o{ddd}.
case Tuint32_t('\157'):
goto __44
// When PCRE2_ALT_BSUX or PCRE2_EXTRA_ALT_BSUX is set, \x must be followed
// by two hexadecimal digits. Otherwise it is a lowercase x letter.
case Tuint32_t('\170'):
goto __45
// The handling of \c is different in ASCII and EBCDIC environments. In an
// ASCII (or Unicode) environment, an error is given if the character
// following \c is not a printable ASCII character. Otherwise, the following
// character is upper-cased if it is a letter, and after that the 0x40 bit is
// flipped. The result is the value of the escape.
//
// In an EBCDIC environment the handling of \c is compatible with the
// specification in the perlebcdic document. The following character must be
// a letter or one of small number of special characters. These provide a
// means of defining the character values 0-31.
//
// For testing the EBCDIC handling of \c in an ASCII environment, recognize
// the EBCDIC value of 'c' explicitly.
case Tuint32_t('\143'):
goto __46
// Any other alphanumeric following \ is an error. Perl gives an error only
// if in warning mode, but PCRE doesn't have a warning mode.
default:
goto __47
}
goto __27
// A number of Perl escapes are not handled by PCRE. We give an explicit
// error.
__28:
__29:
__30:
*(*int32)(unsafe.Pointer(errorcodeptr)) = ERR37
goto __27
// \u is unrecognized when neither PCRE2_ALT_BSUX nor PCRE2_EXTRA_ALT_BSUX
// is set. Otherwise, \u must be followed by exactly four hex digits or, if
// PCRE2_EXTRA_ALT_BSUX is set, by any number of hex digits in braces.
// Otherwise it is a lowercase u letter. This gives some compatibility with
// ECMAScript (aka JavaScript).
__31:
if !!(alt_bsux != 0) {
goto __48
}
*(*int32)(unsafe.Pointer(errorcodeptr)) = ERR37
goto __49
__48:
if !(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 24)) >= ptrend) {
goto __50
}
goto __27
__50:
;
if !(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 24))))) == '\173' && extra_options&DPCRE2_EXTRA_ALT_BSUX != Tuint32_t(0)) {
goto __51
}
hptr = *(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 24)) + uintptr(1)
cc = Tuint32_t(0)
__53:
if !(hptr < ptrend && libc.AssignUint32(&xc, Tuint32_t(xdigitab[*(*TPCRE2_UCHAR8)(unsafe.Pointer(hptr))])) != Tuint32_t(0xff)) {
goto __54
}
if !(cc&0xf0000000 != Tuint32_t(0)) {
goto __55
} /* Test for 32-bit overflow */
*(*int32)(unsafe.Pointer(errorcodeptr)) = ERR77
*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 24 /* ptr */)) = hptr // Show where
goto __54 // *hptr != } will cause another break below
__55:
;
cc = cc<<4 | xc
hptr++
goto __53
__54:
;
if !(hptr == *(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 24))+uintptr(1) || hptr >= ptrend || int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(hptr))) != '\175') {
goto __56
} // No } terminator
goto __27
__56:
; // Hex escape not recognized
c = cc // Accept the code point
*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 24 /* ptr */)) = hptr + uintptr(1)
goto __52
__51: /* Must be exactly 4 hex digits */
if !((int64(ptrend)-int64(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 24))))/1 < int64(4)) {
goto __57
}
goto __27
__57:
; // Less than 4 chars
if !(libc.AssignUint32(&cc, Tuint32_t(xdigitab[*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 24))))])) == Tuint32_t(0xff)) {
goto __58
}
goto __27
__58:
; // Not a hex digit
if !(libc.AssignUint32(&xc, Tuint32_t(xdigitab[*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 24)) + 1))])) == Tuint32_t(0xff)) {
goto __59
}
goto __27
__59:
; // Not a hex digit
cc = cc<<4 | xc
if !(libc.AssignUint32(&xc, Tuint32_t(xdigitab[*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 24)) + 2))])) == Tuint32_t(0xff)) {
goto __60
}
goto __27
__60:
; // Not a hex digit
cc = cc<<4 | xc
if !(libc.AssignUint32(&xc, Tuint32_t(xdigitab[*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 24)) + 3))])) == Tuint32_t(0xff)) {
goto __61
}
goto __27
__61:
; // Not a hex digit
c = cc<<4 | xc
*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 24 /* ptr */)) += uintptr(4)
__52:
;
if !(utf != 0) {
goto __62
}
if !(c > 0x10ffff) {
goto __64
}
*(*int32)(unsafe.Pointer(errorcodeptr)) = ERR77
goto __65
__64:
if !(c >= Tuint32_t(0xd800) && c <= Tuint32_t(0xdfff) && extra_options&DPCRE2_EXTRA_ALLOW_SURROGATE_ESCAPES == Tuint32_t(0)) {
goto __66
}
*(*int32)(unsafe.Pointer(errorcodeptr)) = ERR73
__66:
;
__65:
;
goto __63
__62:
if !(c > uint32(0xffffffff)>>(32-DPCRE2_CODE_UNIT_WIDTH)) {
goto __67
}
*(*int32)(unsafe.Pointer(errorcodeptr)) = ERR77
__67:
;
__63:
;
__49:
;
goto __27
// \U is unrecognized unless PCRE2_ALT_BSUX or PCRE2_EXTRA_ALT_BSUX is set,
// in which case it is an upper case letter.
__32:
if !!(alt_bsux != 0) {
goto __68
}
*(*int32)(unsafe.Pointer(errorcodeptr)) = ERR37
__68:
;
goto __27
// In a character class, \g is just a literal "g". Outside a character
// class, \g must be followed by one of a number of specific things:
//
// (1) A number, either plain or braced. If positive, it is an absolute
// backreference. If negative, it is a relative backreference. This is a Perl
// 5.10 feature.
//
// (2) Perl 5.10 also supports \g{name} as a reference to a named group. This
// is part of Perl's movement towards a unified syntax for back references. As
// this is synonymous with \k{name}, we fudge it up by pretending it really
// was \k{name}.
//
// (3) For Oniguruma compatibility we also support \g followed by a name or a
// number either in angle brackets or in single quotes. However, these are
// (possibly recursive) subroutine calls, _not_ backreferences. We return
// the ESC_g code.
//
// Summary: Return a negative number for a numerical back reference, ESC_k for
// a named back reference, and ESC_g for a named or numbered subroutine call.
//
__33:
if !(isclass != 0) {
goto __69
}
goto __27
__69:
;
if !(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 24)) >= ptrend) {
goto __70
}
*(*int32)(unsafe.Pointer(errorcodeptr)) = ERR57
goto __27
__70:
;
if !(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 24))))) == '\074' || int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 24))))) == '\047') {
goto __71
}
escape = ESC_g
goto __27
__71:
;
// If there is a brace delimiter, try to read a numerical reference. If
// there isn't one, assume we have a name and treat it as \k.
if !(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 24))))) == '\173') {
goto __72
}
*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8 /* p1 */)) = *(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 24)) + uintptr(1)
if !!(read_number(tls, bp+8, ptrend, int32((*Tcompile_block_8)(unsafe.Pointer(cb)).Fbracount), DMAX_GROUP_NUMBER, ERR61, bp+16,
errorcodeptr) != 0) {
goto __74
}
if !(*(*int32)(unsafe.Pointer(errorcodeptr)) == 0) {
goto __75
}
escape = ESC_k
__75:
; // No number found
goto __27
__74:
;
if !(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8)) >= ptrend || int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8))))) != '\175') {
goto __76
}
*(*int32)(unsafe.Pointer(errorcodeptr)) = ERR57
goto __27
__76:
;
*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 24 /* ptr */)) = *(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8)) + uintptr(1)
goto __73
__72:
if !!(read_number(tls, bp+24, ptrend, int32((*Tcompile_block_8)(unsafe.Pointer(cb)).Fbracount), DMAX_GROUP_NUMBER, ERR61, bp+16,
errorcodeptr) != 0) {
goto __77
}
if !(*(*int32)(unsafe.Pointer(errorcodeptr)) == 0) {
goto __78
}
*(*int32)(unsafe.Pointer(errorcodeptr)) = ERR57
__78:
; // No number found
goto __27
__77:
;
__73:
;
if !(*(*int32)(unsafe.Pointer(bp + 16)) <= 0) {
goto __79
}
*(*int32)(unsafe.Pointer(errorcodeptr)) = ERR15
goto __27
__79:
;
escape = -*(*int32)(unsafe.Pointer(bp + 16 /* s */))
goto __27
// The handling of escape sequences consisting of a string of digits
// starting with one that is not zero is not straightforward. Perl has changed
// over the years. Nowadays \g{} for backreferences and \o{} for octal are
// recommended to avoid the ambiguities in the old syntax.
//
// Outside a character class, the digits are read as a decimal number. If the
// number is less than 10, or if there are that many previous extracting left
// brackets, it is a back reference. Otherwise, up to three octal digits are
// read to form an escaped character code. Thus \123 is likely to be octal 123
// (cf \0123, which is octal 012 followed by the literal 3).
//
// Inside a character class, \ followed by a digit is always either a literal
// 8 or 9 or an octal number.
__34:
__35:
__36:
__37:
__38:
__39:
__40:
__41:
__42:
if !!(isclass != 0) {
goto __80
}
oldptr = *(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 24 /* ptr */))
*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 24 /* ptr */))-- // Back to the digit
// As we know we are at a digit, the only possible error from
// read_number() is a number that is too large to be a group number. In this
// case we fall through handle this as not a group reference. If we have
// read a small enough number, check for a back reference.
//
// \1 to \9 are always back references. \8x and \9x are too; \1x to \7x
// are octal escapes if there are not that many previous captures.
if !(read_number(tls, bp+24, ptrend, -1, uint32(0x7fffffff/10-1), uint32(0), bp+16, errorcodeptr) != 0 && (*(*int32)(unsafe.Pointer(bp + 16)) < 10 || int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(oldptr + libc.UintptrFromInt32(-1)))) >= '\070' || *(*int32)(unsafe.Pointer(bp + 16)) <= int32((*Tcompile_block_8)(unsafe.Pointer(cb)).Fbracount))) {
goto __81
}
if !(*(*int32)(unsafe.Pointer(bp + 16)) > int32(DMAX_GROUP_NUMBER)) {
goto __82
}
*(*int32)(unsafe.Pointer(errorcodeptr)) = ERR61
goto __83
__82:
escape = -*(*int32)(unsafe.Pointer(bp + 16 /* s */))
__83:
; // Indicates a back reference
goto __27
__81:
;
*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 24 /* ptr */)) = oldptr // Put the pointer back and fall through
__80:
;
// Handle a digit following \ when the number is not a back reference, or
// we are within a character class. If the first digit is 8 or 9, Perl used to
// generate a binary zero and then treat the digit as a following literal. At
// least by Perl 5.18 this changed so as not to insert the binary zero.
if !(c >= Tuint32_t('\070')) {
goto __84
}
goto __27
__84:
;
// Fall through
// \0 always starts an octal number, but we may drop through to here with a
// larger first octal digit. The original code used just to take the least
// significant 8 bits of octal numbers (I think this is what early Perls used
// to do). Nowadays we allow for larger numbers in UTF-8 mode and 16-bit mode,
// but no more than 3 octal digits.
__43:
c = c - Tuint32_t('\060')
__85:
if !(libc.PostIncInt32(&i, 1) < 2 && *(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 24)) < ptrend && int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 24))))) >= '\060' && int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 24))))) <= '\067') {
goto __86
}
c = c*Tuint32_t(8) + Tuint32_t(*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 24)), 1)))) - Tuint32_t('\060')
goto __85
__86:
;
if !(!(utf != 0) && c > Tuint32_t(0xff)) {
goto __87
}
*(*int32)(unsafe.Pointer(errorcodeptr)) = ERR51
__87:
;
goto __27
// \o is a relatively new Perl feature, supporting a more general way of
// specifying character codes in octal. The only supported form is \o{ddd}.
__44:
if !(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 24)) >= ptrend || int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 24)), 1)))) != '\173') {
goto __88
}
*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 24 /* ptr */))--
*(*int32)(unsafe.Pointer(errorcodeptr)) = ERR55
goto __89
__88:
if !(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 24)) >= ptrend || int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 24))))) == '\175') {
goto __90
}
*(*int32)(unsafe.Pointer(errorcodeptr)) = ERR78
goto __91
__90:
c = Tuint32_t(0)
overflow = DFALSE
__92:
if !(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 24)) < ptrend && int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 24))))) >= '\060' && int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 24))))) <= '\067') {
goto __93
}
cc = Tuint32_t(*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 24 /* ptr */)), 1))))
if !(c == Tuint32_t(0) && cc == Tuint32_t('\060')) {
goto __94
}
goto __92
__94:
; // Leading zeroes
c = c<<3 + (cc - Tuint32_t('\060'))
if !(c > func() uint32 {
if utf != 0 {
return 0x10ffff
}
return 0xff
}()) {
goto __95
}
overflow = DTRUE
goto __93
__95:
;
goto __92
__93:
;
if !(overflow != 0) {
goto __96
}
__98:
if !(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 24)) < ptrend && int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 24))))) >= '\060' && int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 24))))) <= '\067') {
goto __99
}
*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 24 /* ptr */))++
goto __98
__99:
;
*(*int32)(unsafe.Pointer(errorcodeptr)) = ERR34
goto __97
__96:
if !(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 24)) < ptrend && int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 24)), 1)))) == '\175') {
goto __100
}
if !(utf != 0 && c >= Tuint32_t(0xd800) && c <= Tuint32_t(0xdfff) && extra_options&DPCRE2_EXTRA_ALLOW_SURROGATE_ESCAPES == Tuint32_t(0)) {
goto __102
}
*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 24 /* ptr */))--
*(*int32)(unsafe.Pointer(errorcodeptr)) = ERR73
__102:
;
goto __101
__100:
*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 24 /* ptr */))--
*(*int32)(unsafe.Pointer(errorcodeptr)) = ERR64
__101:
;
__97:
;
__91:
;
__89:
;
goto __27
// When PCRE2_ALT_BSUX or PCRE2_EXTRA_ALT_BSUX is set, \x must be followed
// by two hexadecimal digits. Otherwise it is a lowercase x letter.
__45:
if !(alt_bsux != 0) {
goto __103
}
if !((int64(ptrend)-int64(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 24))))/1 < int64(2)) {
goto __105
}
goto __27
__105:
; // Less than 2 characters
if !(libc.AssignUint32(&cc, Tuint32_t(xdigitab[*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 24))))])) == Tuint32_t(0xff)) {
goto __106
}
goto __27
__106:
; // Not a hex digit
if !(libc.AssignUint32(&xc1, Tuint32_t(xdigitab[*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 24)) + 1))])) == Tuint32_t(0xff)) {
goto __107
}
goto __27
__107:
; // Not a hex digit
c = cc<<4 | xc1
*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 24 /* ptr */)) += uintptr(2)
goto __104
__103:
if !(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 24)) < ptrend && int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 24))))) == '\173') {
goto __108
}
COME_FROM_NU:
if !(libc.PreIncUintptr(&*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 24)), 1) >= ptrend || int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 24))))) == '\175') {
goto __110
}
*(*int32)(unsafe.Pointer(errorcodeptr)) = ERR78
goto __27
__110:
;
c = Tuint32_t(0)
overflow = DFALSE
__111:
if !(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 24)) < ptrend && libc.AssignUint32(&cc, Tuint32_t(xdigitab[*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 24))))])) != Tuint32_t(0xff)) {
goto __112
}
*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 24 /* ptr */))++
if !(c == Tuint32_t(0) && cc == Tuint32_t(0)) {
goto __113
}
goto __111
__113:
; // Leading zeroes
c = c<<4 | cc
if !(utf != 0 && c > 0x10ffff || !(utf != 0) && c > uint32(0xffffffff)>>(32-DPCRE2_CODE_UNIT_WIDTH)) {
goto __114
}
overflow = DTRUE
goto __112
__114:
;
goto __111
__112:
;
if !(overflow != 0) {
goto __115
}
__117:
if !(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 24)) < ptrend && int32(xdigitab[*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 24))))]) != 0xff) {
goto __118
}
*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 24 /* ptr */))++
goto __117
__118:
;
*(*int32)(unsafe.Pointer(errorcodeptr)) = ERR34
goto __116
__115:
if !(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 24)) < ptrend && int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 24)), 1)))) == '\175') {
goto __119
}
if !(utf != 0 && c >= Tuint32_t(0xd800) && c <= Tuint32_t(0xdfff) && extra_options&DPCRE2_EXTRA_ALLOW_SURROGATE_ESCAPES == Tuint32_t(0)) {
goto __121
}
*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 24 /* ptr */))--
*(*int32)(unsafe.Pointer(errorcodeptr)) = ERR73
__121:
;
goto __120
__119:
*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 24 /* ptr */))--
*(*int32)(unsafe.Pointer(errorcodeptr)) = ERR67
__120:
;
__116:
;
goto __109
__108:
c = Tuint32_t(0)
if !(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 24)) >= ptrend || libc.AssignUint32(&cc, Tuint32_t(xdigitab[*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 24))))])) == Tuint32_t(0xff)) {
goto __122
}
goto __27
__122:
; // Not a hex digit
*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 24 /* ptr */))++
c = cc
if !(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 24)) >= ptrend || libc.AssignUint32(&cc, Tuint32_t(xdigitab[*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 24))))])) == Tuint32_t(0xff)) {
goto __123
}
goto __27
__123:
; // Not a hex digit
*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 24 /* ptr */))++
c = c<<4 | cc
__109:
; // End of \xdd handling
__104:
; // End of Perl-style \x handling
goto __27
// The handling of \c is different in ASCII and EBCDIC environments. In an
// ASCII (or Unicode) environment, an error is given if the character
// following \c is not a printable ASCII character. Otherwise, the following
// character is upper-cased if it is a letter, and after that the 0x40 bit is
// flipped. The result is the value of the escape.
//
// In an EBCDIC environment the handling of \c is compatible with the
// specification in the perlebcdic document. The following character must be
// a letter or one of small number of special characters. These provide a
// means of defining the character values 0-31.
//
// For testing the EBCDIC handling of \c in an ASCII environment, recognize
// the EBCDIC value of 'c' explicitly.
__46:
if !(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 24)) >= ptrend) {
goto __124
}
*(*int32)(unsafe.Pointer(errorcodeptr)) = ERR2
goto __27
__124:
;
c = Tuint32_t(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 24 /* ptr */)))))
if !(c >= Tuint32_t('\141') && c <= Tuint32_t('\172')) {
goto __125
}
c = c - Tuint32_t(32)
__125:
;
// Handle \c in an ASCII/Unicode environment.
if !(c < Tuint32_t(32) || c > Tuint32_t(126)) {
goto __126
} /* Excludes all non-printable ASCII */
*(*int32)(unsafe.Pointer(errorcodeptr)) = ERR68
goto __27
__126:
;
c = c ^ Tuint32_t(0x40)
// Handle \c in an EBCDIC environment. The special case \c? is converted to
// 255 (0xff) or 95 (0x5f) if other characters suggest we are using the
// POSIX-BC encoding. (This is the way Perl indicates that it handles \c?.)
// The other valid sequences correspond to a list of specific characters.
*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 24 /* ptr */))++
goto __27
// Any other alphanumeric following \ is an error. Perl gives an error only
// if in warning mode, but PCRE doesn't have a warning mode.
__47:
*(*int32)(unsafe.Pointer(errorcodeptr)) = ERR3
*(*TPCRE2_SPTR8)(unsafe.Pointer(ptrptr)) = *(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 24)) - uintptr(1) // Point to the character at fault
return 0
__27:
;
__14:
;
__12:
;
// Set the pointer to the next character before returning.
*(*TPCRE2_SPTR8)(unsafe.Pointer(ptrptr)) = *(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 24 /* ptr */))
*(*Tuint32_t)(unsafe.Pointer(chptr)) = c
return escape
}
// ************************************************
//
// Handle \P and \p *
//
// This function is called after \P or \p has been encountered, provided that
// PCRE2 is compiled with support for UTF and Unicode properties. On entry, the
// contents of ptrptr are pointing after the P or p. On exit, it is left pointing
// after the final code unit of the escape sequence.
//
// Arguments:
// ptrptr the pattern position pointer
// negptr a boolean that is set TRUE for negation else FALSE
// ptypeptr an unsigned int that is set to the type value
// pdataptr an unsigned int that is set to the detailed property value
// errorcodeptr the error code variable
// cb the compile data
//
// Returns: TRUE if the type value was found, or FALSE for an invalid type
func get_ucp(tls *libc.TLS, ptrptr uintptr, negptr uintptr, ptypeptr uintptr, pdataptr uintptr, errorcodeptr uintptr, cb uintptr) TBOOL { /* pcre2_compile.c:2087:1: */
bp := tls.Alloc(58)
defer tls.Free(58)
var c TPCRE2_UCHAR8
var i Tsize_t
var bot Tsize_t
var top Tsize_t
var ptr TPCRE2_SPTR8
// var name [50]TPCRE2_UCHAR8 at bp, 50
var vptr uintptr
var ptscript Tuint16_t
var offset int32
// var sname [8]TPCRE2_UCHAR8 at bp+50, 8
var r int32
ptr = *(*TPCRE2_SPTR8)(unsafe.Pointer(ptrptr))
vptr = uintptr(0)
ptscript = Tuint16_t(DPT_NOTSCRIPT)
if !(ptr >= (*Tcompile_block_8)(unsafe.Pointer(cb)).Fend_pattern) {
goto __1
}
goto ERROR_RETURN
__1:
;
c = *(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&ptr, 1)))
*(*TBOOL)(unsafe.Pointer(negptr)) = DFALSE
// \P or \p can be followed by a name in {}, optionally preceded by ^ for
// negation.
if !(int32(c) == '\173') {
goto __2
}
if !(ptr >= (*Tcompile_block_8)(unsafe.Pointer(cb)).Fend_pattern) {
goto __4
}
goto ERROR_RETURN
__4:
;
if !(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(ptr))) == '\136') {
goto __5
}
*(*TBOOL)(unsafe.Pointer(negptr)) = DTRUE
ptr++
__5:
;
i = uint64(0)
__6:
if !(i < uint64(int32(uint64(unsafe.Sizeof([50]TPCRE2_UCHAR8{}))/uint64(unsafe.Sizeof(TPCRE2_UCHAR8(0))))-1)) {
goto __8
}
if !(ptr >= (*Tcompile_block_8)(unsafe.Pointer(cb)).Fend_pattern) {
goto __9
}
goto ERROR_RETURN
__9:
;
c = *(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&ptr, 1)))
__10:
if !(int32(c) == '_' || int32(c) == '-' || int32(*(*uint16)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(libc.X__ctype_b_loc(tls))) + uintptr(int32(c))*2)))&int32(_ISspace) != 0) {
goto __11
}
if !(ptr >= (*Tcompile_block_8)(unsafe.Pointer(cb)).Fend_pattern) {
goto __12
}
goto ERROR_RETURN
__12:
;
c = *(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&ptr, 1)))
goto __10
__11:
;
if !(int32(c) == 0) {
goto __13
}
goto ERROR_RETURN
__13:
;
if !(int32(c) == '\175') {
goto __14
}
goto __8
__14:
;
*(*TPCRE2_UCHAR8)(unsafe.Pointer(bp + uintptr(i))) = TPCRE2_UCHAR8(libc.Xtolower(tls, int32(c)))
if !((int32(c) == ':' || int32(c) == '=') && vptr == uintptr(0)) {
goto __15
}
vptr = bp + uintptr(i)
__15:
;
goto __7
__7:
i++
goto __6
goto __8
__8:
;
if !(int32(c) != '\175') {
goto __16
}
goto ERROR_RETURN
__16:
;
*(*TPCRE2_UCHAR8)(unsafe.Pointer(bp + uintptr(i))) = TPCRE2_UCHAR8(0)
goto __3
__2:
if !(1 != 0 && int32(*(*Tuint8_t)(unsafe.Pointer((*Tcompile_block_8)(unsafe.Pointer(cb)).Fctypes + uintptr(c))))&Dctype_letter != 0) {
goto __17
}
*(*TPCRE2_UCHAR8)(unsafe.Pointer(bp)) = TPCRE2_UCHAR8(libc.Xtolower(tls, int32(c)))
*(*TPCRE2_UCHAR8)(unsafe.Pointer(bp + 1)) = TPCRE2_UCHAR8(0)
goto __18
__17:
goto ERROR_RETURN
__18:
;
__3:
;
*(*TPCRE2_SPTR8)(unsafe.Pointer(ptrptr)) = ptr
// If the property contains ':' or '=' we have class name and value separately
// specified. The following are supported:
//
// . Bidi_Class (synonym bc), for which the property names are "bidi<name>".
// . Script (synonym sc) for which the property name is the script name
// . Script_Extensions (synonym scx), ditto
//
// As this is a small number, we currently just check the names directly. If this
// grows, a sorted table and a switch will be neater.
//
// For both the script properties, set a PT_xxx value so that (1) they can be
// distinguished and (2) invalid script names that happen to be the name of
// another property can be diagnosed.
if !(vptr != uintptr(0)) {
goto __19
}
offset = 0
*(*TPCRE2_UCHAR8)(unsafe.Pointer(vptr)) = TPCRE2_UCHAR8(0) // Terminate property name
if !(X_pcre2_strcmp_c8_8(tls, bp, ts+553) == 0 || X_pcre2_strcmp_c8_8(tls, bp, ts+563) == 0) {
goto __20
}
offset = 4
*(*TPCRE2_UCHAR8)(unsafe.Pointer(bp + 50)) = TPCRE2_UCHAR8('\142')
*(*TPCRE2_UCHAR8)(unsafe.Pointer(bp + 50 + 1)) = TPCRE2_UCHAR8('\151') // There is no strcpy_c8 function
*(*TPCRE2_UCHAR8)(unsafe.Pointer(bp + 50 + 2)) = TPCRE2_UCHAR8('\144')
*(*TPCRE2_UCHAR8)(unsafe.Pointer(bp + 50 + 3)) = TPCRE2_UCHAR8('\151')
goto __21
__20:
if !(X_pcre2_strcmp_c8_8(tls, bp, ts+566) == 0 || X_pcre2_strcmp_c8_8(tls, bp, ts+573) == 0) {
goto __22
}
ptscript = Tuint16_t(DPT_SC)
goto __23
__22:
if !(X_pcre2_strcmp_c8_8(tls, bp, ts+576) == 0 || X_pcre2_strcmp_c8_8(tls, bp, ts+593) == 0) {
goto __24
}
ptscript = Tuint16_t(DPT_SCX)
goto __25
__24:
*(*int32)(unsafe.Pointer(errorcodeptr)) = ERR47
return DFALSE
__25:
;
__23:
;
__21:
;
// Adjust the string in name[] as needed
libc.Xmemmove(tls, bp+uintptr(offset), vptr+uintptr(1), uint64((int64(bp+uintptr(i))-int64(vptr))/1)*uint64(unsafe.Sizeof(TPCRE2_UCHAR8(0))))
if !(offset != 0) {
goto __26
}
libc.Xmemmove(tls, bp, bp+50, uint64(offset)*uint64(unsafe.Sizeof(TPCRE2_UCHAR8(0))))
__26:
;
__19:
;
// Search for a recognized property using binary chop.
bot = uint64(0)
top = X_pcre2_utt_size_8
__27:
if !(bot < top) {
goto __28
}
i = (bot + top) >> 1
r = X_pcre2_strcmp_c8_8(tls, bp, uintptr(unsafe.Pointer(&X_pcre2_utt_names_8))+uintptr(X_pcre2_utt_8[i].Fname_offset))
// When a matching property is found, some extra checking is needed when the
// \p{xx:yy} syntax is used and xx is either sc or scx.
if !(r == 0) {
goto __29
}
*(*Tuint16_t)(unsafe.Pointer(pdataptr)) = X_pcre2_utt_8[i].Fvalue
if !(vptr == uintptr(0) || int32(ptscript) == DPT_NOTSCRIPT) {
goto __30
}
*(*Tuint16_t)(unsafe.Pointer(ptypeptr)) = X_pcre2_utt_8[i].Ftype
return DTRUE
__30:
;
switch int32(X_pcre2_utt_8[i].Ftype) {
case DPT_SC:
goto __32
case DPT_SCX:
goto __33
}
goto __31
__32:
*(*Tuint16_t)(unsafe.Pointer(ptypeptr)) = Tuint16_t(DPT_SC)
return DTRUE
__33:
*(*Tuint16_t)(unsafe.Pointer(ptypeptr)) = ptscript
return DTRUE
__31:
;
goto __28 // Non-script found
__29:
;
if !(r > 0) {
goto __34
}
bot = i + uint64(1)
goto __35
__34:
top = i
__35:
;
goto __27
__28:
;
*(*int32)(unsafe.Pointer(errorcodeptr)) = ERR47 // Unrecognized property
return DFALSE
ERROR_RETURN: // Malformed \P or \p
*(*int32)(unsafe.Pointer(errorcodeptr)) = ERR46
*(*TPCRE2_SPTR8)(unsafe.Pointer(ptrptr)) = ptr
return DFALSE
}
// ************************************************
//
// Check for POSIX class syntax *
//
// This function is called when the sequence "[:" or "[." or "[=" is
// encountered in a character class. It checks whether this is followed by a
// sequence of characters terminated by a matching ":]" or ".]" or "=]". If we
// reach an unescaped ']' without the special preceding character, return FALSE.
//
// Originally, this function only recognized a sequence of letters between the
// terminators, but it seems that Perl recognizes any sequence of characters,
// though of course unknown POSIX names are subsequently rejected. Perl gives an
// "Unknown POSIX class" error for [:f\oo:] for example, where previously PCRE
// didn't consider this to be a POSIX class. Likewise for [:1234:].
//
// The problem in trying to be exactly like Perl is in the handling of escapes. We
// have to be sure that [abc[:x\]pqr] is *not* treated as containing a POSIX
// class, but [abc[:x\]pqr:]] is (so that an error can be generated). The code
// below handles the special cases \\ and \], but does not try to do any other
// escape processing. This makes it different from Perl for cases such as
// [:l\ower:] where Perl recognizes it as the POSIX class "lower" but PCRE does
// not recognize "l\ower". This is a lesser evil than not diagnosing bad classes
// when Perl does, I think.
//
// A user pointed out that PCRE was rejecting [:a[:digit:]] whereas Perl was not.
// It seems that the appearance of a nested POSIX class supersedes an apparent
// external class. For example, [:a[:digit:]b:] matches "a", "b", ":", or
// a digit. This is handled by returning FALSE if the start of a new group with
// the same terminator is encountered, since the next closing sequence must close
// the nested group, not the outer one.
//
// In Perl, unescaped square brackets may also appear as part of class names. For
// example, [:a[:abc]b:] gives unknown POSIX class "[:abc]b:]". However, for
// [:a[:abc]b][b:] it gives unknown POSIX class "[:abc]b][b:]", which does not
// seem right at all. PCRE does not allow closing square brackets in POSIX class
// names.
//
// Arguments:
// ptr pointer to the character after the initial [ (colon, dot, equals)
// ptrend pointer to the end of the pattern
// endptr where to return a pointer to the terminating ':', '.', or '='
//
// Returns: TRUE or FALSE
func check_posix_syntax(tls *libc.TLS, ptr TPCRE2_SPTR8, ptrend TPCRE2_SPTR8, endptr uintptr) TBOOL { /* pcre2_compile.c:2293:1: */
var terminator TPCRE2_UCHAR8 // Don't combine these lines; the Solaris cc
terminator = *(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&ptr, 1))) // compiler warns about "non-constant" initializer.
for ; (int64(ptrend)-int64(ptr))/1 >= int64(2); ptr++ {
if int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(ptr))) == '\134' && (int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(ptr + 1))) == '\135' || int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(ptr + 1))) == '\134') {
ptr++
} else if int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(ptr))) == '\133' && int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(ptr + 1))) == int32(terminator) || int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(ptr))) == '\135' {
return DFALSE
} else if int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(ptr))) == int32(terminator) && int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(ptr + 1))) == '\135' {
*(*TPCRE2_SPTR8)(unsafe.Pointer(endptr)) = ptr
return DTRUE
}
}
return DFALSE
}
// ************************************************
//
// Check POSIX class name *
//
// This function is called to check the name given in a POSIX-style class entry
// such as [:alnum:].
//
// Arguments:
// ptr points to the first letter
// len the length of the name
//
// Returns: a value representing the name, or -1 if unknown
func check_posix_name(tls *libc.TLS, ptr TPCRE2_SPTR8, len int32) int32 { /* pcre2_compile.c:2334:1: */
var pn uintptr = uintptr(unsafe.Pointer(&posix_names))
var yield int32 = 0
for int32(posix_name_lengths[yield]) != 0 {
if len == int32(posix_name_lengths[yield]) && X_pcre2_strncmp_c8_8(tls, ptr, pn, uint64(uint32(len))) == 0 {
return yield
}
pn += uintptr(int32(posix_name_lengths[yield]) + 1)
yield++
}
return -1
}
// ************************************************
//
// Read a subpattern or VERB name *
//
// This function is called from parse_regex() below whenever it needs to read
// the name of a subpattern or a (*VERB) or an (*alpha_assertion). The initial
// pointer must be to the character before the name. If that character is '*' we
// are reading a verb or alpha assertion name. The pointer is updated to point
// after the name, for a VERB or alpha assertion name, or after tha name's
// terminator for a subpattern name. Returning both the offset and the name
// pointer is redundant information, but some callers use one and some the other,
// so it is simplest just to return both.
//
// Arguments:
// ptrptr points to the character pointer variable
// ptrend points to the end of the input string
// utf true if the input is UTF-encoded
// terminator the terminator of a subpattern name must be this
// offsetptr where to put the offset from the start of the pattern
// nameptr where to put a pointer to the name in the input
// namelenptr where to put the length of the name
// errcodeptr where to put an error code
// cb pointer to the compile data block
//
// Returns: TRUE if a name was read
// FALSE otherwise, with error code set
func read_name(tls *libc.TLS, ptrptr uintptr, ptrend TPCRE2_SPTR8, utf TBOOL, terminator Tuint32_t, offsetptr uintptr, nameptr uintptr, namelenptr uintptr, errorcodeptr uintptr, cb uintptr) TBOOL { /* pcre2_compile.c:2379:1: */
var ptr TPCRE2_SPTR8
var is_group TBOOL
var c Tuint32_t
var type1 Tuint32_t
ptr = *(*TPCRE2_SPTR8)(unsafe.Pointer(ptrptr))
is_group = libc.Bool32(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(ptr))) != '\052')
if !(libc.PreIncUintptr(&ptr, 1) >= ptrend) {
goto __1
} /* No characters in name */
*(*int32)(unsafe.Pointer(errorcodeptr)) = func() int32 {
if is_group != 0 {
return ERR62
}
return ERR60
}() // Verb not recognized or malformed
goto FAILED
__1:
;
*(*TPCRE2_SPTR8)(unsafe.Pointer(nameptr)) = ptr
*(*Tsize_t)(unsafe.Pointer(offsetptr)) = Tsize_t((int64(ptr) - int64((*Tcompile_block_8)(unsafe.Pointer(cb)).Fstart_pattern)) / 1)
// In UTF mode, a group name may contain letters and decimal digits as defined
// by Unicode properties, and underscores, but must not start with a digit.
if !(utf != 0 && is_group != 0) {
goto __2
}
c = Tuint32_t(*(*TPCRE2_UCHAR8)(unsafe.Pointer(ptr)))
if !(c >= 0xc0) {
goto __4
}
if !(c&0x20 == Tuint32_t(0)) {
goto __5
}
c = c&0x1f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(ptr + 1)))&0x3f
goto __6
__5:
if !(c&0x10 == Tuint32_t(0)) {
goto __7
}
c = c&0x0f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(ptr + 1)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(ptr + 2)))&0x3f
goto __8
__7:
if !(c&0x08 == Tuint32_t(0)) {
goto __9
}
c = c&0x07<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(ptr + 1)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(ptr + 2)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(ptr + 3)))&0x3f
goto __10
__9:
if !(c&0x04 == Tuint32_t(0)) {
goto __11
}
c = c&0x03<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(ptr + 1)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(ptr + 2)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(ptr + 3)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(ptr + 4)))&0x3f
goto __12
__11:
c = c&0x01<<30 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(ptr + 1)))&0x3f<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(ptr + 2)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(ptr + 3)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(ptr + 4)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(ptr + 5)))&0x3f
__12:
;
__10:
;
__8:
;
__6:
;
__4:
;
type1 = Tuint32_t((*Tucd_record)(unsafe.Pointer(uintptr(unsafe.Pointer(&X_pcre2_ucd_records_8)) + uintptr(X_pcre2_ucd_stage2_8[int32(X_pcre2_ucd_stage1_8[int32(c)/DUCD_BLOCK_SIZE])*DUCD_BLOCK_SIZE+int32(c)%DUCD_BLOCK_SIZE])*12)).Fchartype)
if !(type1 == ucp_Nd) {
goto __13
}
*(*int32)(unsafe.Pointer(errorcodeptr)) = ERR44
goto FAILED
__13:
;
__14:
if !(type1 != ucp_Nd && X_pcre2_ucp_gentype_8[type1] != ucp_L && c != Tuint32_t('\137')) {
goto __17
}
goto __16
__17:
;
ptr++
__18:
if !(ptr < ptrend && uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(ptr)))&0xc0 == 0x80) {
goto __19
}
ptr++
goto __18
__19:
;
if !(ptr >= ptrend) {
goto __20
}
goto __16
__20:
;
c = Tuint32_t(*(*TPCRE2_UCHAR8)(unsafe.Pointer(ptr)))
if !(c >= 0xc0) {
goto __21
}
if !(c&0x20 == Tuint32_t(0)) {
goto __22
}
c = c&0x1f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(ptr + 1)))&0x3f
goto __23
__22:
if !(c&0x10 == Tuint32_t(0)) {
goto __24
}
c = c&0x0f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(ptr + 1)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(ptr + 2)))&0x3f
goto __25
__24:
if !(c&0x08 == Tuint32_t(0)) {
goto __26
}
c = c&0x07<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(ptr + 1)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(ptr + 2)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(ptr + 3)))&0x3f
goto __27
__26:
if !(c&0x04 == Tuint32_t(0)) {
goto __28
}
c = c&0x03<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(ptr + 1)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(ptr + 2)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(ptr + 3)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(ptr + 4)))&0x3f
goto __29
__28:
c = c&0x01<<30 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(ptr + 1)))&0x3f<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(ptr + 2)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(ptr + 3)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(ptr + 4)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(ptr + 5)))&0x3f
__29:
;
__27:
;
__25:
;
__23:
;
__21:
;
type1 = Tuint32_t((*Tucd_record)(unsafe.Pointer(uintptr(unsafe.Pointer(&X_pcre2_ucd_records_8)) + uintptr(X_pcre2_ucd_stage2_8[int32(X_pcre2_ucd_stage1_8[int32(c)/DUCD_BLOCK_SIZE])*DUCD_BLOCK_SIZE+int32(c)%DUCD_BLOCK_SIZE])*12)).Fchartype)
goto __15
__15:
goto __14
goto __16
__16:
;
goto __3
__2:
/* Handle non-group names and group names in non-UTF modes. A group name must
not start with a digit. If either of the others start with a digit it just
won't be recognized. */
if !(is_group != 0 && (int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(ptr))) >= '\060' && int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(ptr))) <= '\071')) {
goto __30
}
*(*int32)(unsafe.Pointer(errorcodeptr)) = ERR44
goto FAILED
__30:
;
__31:
if !(ptr < ptrend && 1 != 0 && int32(*(*Tuint8_t)(unsafe.Pointer((*Tcompile_block_8)(unsafe.Pointer(cb)).Fctypes + uintptr(*(*TPCRE2_UCHAR8)(unsafe.Pointer(ptr))))))&Dctype_word != 0) {
goto __32
}
ptr++
goto __31
__32:
;
__3:
;
// Check name length
if !(ptr > *(*TPCRE2_SPTR8)(unsafe.Pointer(nameptr))+uintptr(DMAX_NAME_SIZE)) {
goto __33
}
*(*int32)(unsafe.Pointer(errorcodeptr)) = ERR48
goto FAILED
__33:
;
*(*Tuint32_t)(unsafe.Pointer(namelenptr)) = Tuint32_t((int64(ptr) - int64(*(*TPCRE2_SPTR8)(unsafe.Pointer(nameptr)))) / 1)
// Subpattern names must not be empty, and their terminator is checked here.
// (What follows a verb or alpha assertion name is checked separately.)
if !(is_group != 0) {
goto __34
}
if !(ptr == *(*TPCRE2_SPTR8)(unsafe.Pointer(nameptr))) {
goto __35
}
*(*int32)(unsafe.Pointer(errorcodeptr)) = ERR62 // Subpattern name expected
goto FAILED
__35:
;
if !(ptr >= ptrend || int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(ptr))) != int32(TPCRE2_UCHAR8(terminator))) {
goto __36
}
*(*int32)(unsafe.Pointer(errorcodeptr)) = ERR42
goto FAILED
__36:
;
ptr++
__34:
;
*(*TPCRE2_SPTR8)(unsafe.Pointer(ptrptr)) = ptr
return DTRUE
FAILED:
*(*TPCRE2_SPTR8)(unsafe.Pointer(ptrptr)) = ptr
return DFALSE
}
// ************************************************
//
// Manage callouts at start of cycle *
//
// At the start of a new item in parse_regex() we are able to record the
// details of the previous item in a prior callout, and also to set up an
// automatic callout if enabled. Avoid having two adjacent automatic callouts,
// which would otherwise happen for items such as \Q that contribute nothing to
// the parsed pattern.
//
// Arguments:
// ptr current pattern pointer
// pcalloutptr points to a pointer to previous callout, or NULL
// auto_callout TRUE if auto_callouts are enabled
// parsed_pattern the parsed pattern pointer
// cb compile block
//
// Returns: possibly updated parsed_pattern pointer.
func manage_callouts(tls *libc.TLS, ptr TPCRE2_SPTR8, pcalloutptr uintptr, auto_callout TBOOL, parsed_pattern uintptr, cb uintptr) uintptr { /* pcre2_compile.c:2503:17: */
var previous_callout uintptr = *(*uintptr)(unsafe.Pointer(pcalloutptr))
if previous_callout != uintptr(0) {
*(*Tuint32_t)(unsafe.Pointer(previous_callout + 2*4)) = Tuint32_t(Tsize_t((int64(ptr)-int64((*Tcompile_block_8)(unsafe.Pointer(cb)).Fstart_pattern))/1) - Tsize_t(*(*Tuint32_t)(unsafe.Pointer(previous_callout + 1*4))))
}
if !(auto_callout != 0) {
previous_callout = uintptr(0)
} else {
if previous_callout == uintptr(0) || previous_callout != parsed_pattern-uintptr(4)*4 || *(*Tuint32_t)(unsafe.Pointer(previous_callout + 3*4)) != Tuint32_t(255) {
previous_callout = parsed_pattern // Set up new automatic callout
parsed_pattern += 4 * uintptr(4)
*(*Tuint32_t)(unsafe.Pointer(previous_callout)) = DMETA_CALLOUT_NUMBER
*(*Tuint32_t)(unsafe.Pointer(previous_callout + 2*4)) = Tuint32_t(0)
*(*Tuint32_t)(unsafe.Pointer(previous_callout + 3*4)) = Tuint32_t(255)
}
*(*Tuint32_t)(unsafe.Pointer(previous_callout + 1*4)) = Tuint32_t((int64(ptr) - int64((*Tcompile_block_8)(unsafe.Pointer(cb)).Fstart_pattern)) / 1)
}
*(*uintptr)(unsafe.Pointer(pcalloutptr)) = previous_callout
return parsed_pattern
}
// ************************************************
//
// Parse regex and identify named groups *
//
// This function is called first of all. It scans the pattern and does two
// things: (1) It identifies capturing groups and makes a table of named capturing
// groups so that information about them is fully available to both the compiling
// scans. (2) It writes a parsed version of the pattern with comments omitted and
// escapes processed into the parsed_pattern vector.
//
// Arguments:
// ptr points to the start of the pattern
// options compiling dynamic options (may change during the scan)
// has_lookbehind points to a boolean, set TRUE if a lookbehind is found
// cb pointer to the compile data block
//
// Returns: zero on success or a non-zero error code, with the
// error offset placed in the cb field
// A structure and some flags for dealing with nested groups.
type Snest_save = struct {
Fnest_depth Tuint16_t
Freset_group Tuint16_t
Fmax_group Tuint16_t
Fflags Tuint16_t
Foptions Tuint32_t
} /* pcre2_compile.c:2555:9 */
// ************************************************
//
// Parse regex and identify named groups *
//
// This function is called first of all. It scans the pattern and does two
// things: (1) It identifies capturing groups and makes a table of named capturing
// groups so that information about them is fully available to both the compiling
// scans. (2) It writes a parsed version of the pattern with comments omitted and
// escapes processed into the parsed_pattern vector.
//
// Arguments:
// ptr points to the start of the pattern
// options compiling dynamic options (may change during the scan)
// has_lookbehind points to a boolean, set TRUE if a lookbehind is found
// cb pointer to the compile data block
//
// Returns: zero on success or a non-zero error code, with the
// error offset placed in the cb field
// A structure and some flags for dealing with nested groups.
type Tnest_save = Snest_save /* pcre2_compile.c:2561:3 */
// Only in 32-bit mode can there be literals > META_END. A macro encapsulates
// the storing of literal values in the main parsed pattern, where they can always
// be quantified.
// Here's the actual function.
func parse_regex(tls *libc.TLS, ptr TPCRE2_SPTR8, options Tuint32_t, has_lookbehind uintptr, cb uintptr) int32 { /* pcre2_compile.c:2598:12: */
bp := tls.Alloc(104)
defer tls.Free(104)
*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8)) = ptr
// var c Tuint32_t at bp+16, 4
var delimiter Tuint32_t
// var namelen Tuint32_t at bp+72, 4
var class_range_state Tuint32_t
var verblengthptr uintptr // Value avoids compiler warning
var verbstartptr uintptr
// var previous_callout uintptr at bp, 8
var parsed_pattern uintptr
var parsed_pattern_end uintptr
var meta_quantifier Tuint32_t
var add_after_mark Tuint32_t
var extra_options Tuint32_t
var nest_depth Tuint16_t
var after_manual_callout int32
var expect_cond_assert int32
// var errorcode int32 at bp+20, 4
var escape int32
// var i int32 at bp+48, 4
var inescq TBOOL
var inverbname TBOOL
var utf TBOOL
var auto_callout TBOOL
var isdupname TBOOL
var negate_class TBOOL
var okquantifier TBOOL
var thisptr TPCRE2_SPTR8
// var name TPCRE2_SPTR8 at bp+64, 8
var ptrend TPCRE2_SPTR8
var verbnamestart TPCRE2_SPTR8 // Value avoids compiler warning
var ng uintptr
var top_nest uintptr
var end_nests uintptr
var verbnamelength Tsize_t
var ok TBOOL
// var negated TBOOL at bp+32, 4
// var ptype Tuint16_t at bp+36, 2
// var pdata Tuint16_t at bp+38, 2
// var p TPCRE2_SPTR8 at bp+40, 8
var p1 uintptr
var ptype1 int32
var pvalue int32
var posix_negate TBOOL
var posix_class int32
// var negated1 TBOOL at bp+84, 4
// var ptype2 Tuint16_t at bp+88, 2
// var pdata1 Tuint16_t at bp+90, 2
var char_is_literal TBOOL
var meta Tuint32_t
var vn uintptr
var hyphenok TBOOL
var oldoptions Tuint32_t
var calloutlength Tsize_t
var startptr TPCRE2_SPTR8
var n int32
var ge Tuint32_t
// var major int32 at bp+100, 4
var minor int32
var was_r_ampersand TBOOL
var newsize Tuint32_t
var newspace uintptr
var prev_expect_cond_assert int32
// var min_repeat Tuint32_t at bp+76, 4
// var max_repeat Tuint32_t at bp+80, 4
// var set Tuint32_t at bp+92, 4
// var unset Tuint32_t at bp+96, 4
var optset uintptr
var terminator Tuint32_t
var prev_meta_quantifier Tuint32_t
var prev_okquantifier TBOOL
// var tempptr TPCRE2_SPTR8 at bp+24, 8
// var offset Tsize_t at bp+56, 8
verblengthptr = uintptr(0)
verbstartptr = uintptr(0)
*(*uintptr)(unsafe.Pointer(bp /* previous_callout */)) = uintptr(0)
parsed_pattern = (*Tcompile_block_8)(unsafe.Pointer(cb)).Fparsed_pattern
parsed_pattern_end = (*Tcompile_block_8)(unsafe.Pointer(cb)).Fparsed_pattern_end
meta_quantifier = Tuint32_t(0)
add_after_mark = Tuint32_t(0)
extra_options = (*Tpcre2_real_compile_context_8)(unsafe.Pointer((*Tcompile_block_8)(unsafe.Pointer(cb)).Fcx)).Fextra_options
nest_depth = Tuint16_t(0)
after_manual_callout = 0
expect_cond_assert = 0
*(*int32)(unsafe.Pointer(bp + 20 /* errorcode */)) = 0
inescq = DFALSE
inverbname = DFALSE
utf = libc.Bool32(options&DPCRE2_UTF != Tuint32_t(0))
auto_callout = libc.Bool32(options&DPCRE2_AUTO_CALLOUT != Tuint32_t(0))
okquantifier = DFALSE
ptrend = (*Tcompile_block_8)(unsafe.Pointer(cb)).Fend_pattern
verbnamestart = uintptr(0)
// Insert leading items for word and line matching (features provided for the
// benefit of pcre2grep).
if !(extra_options&DPCRE2_EXTRA_MATCH_LINE != Tuint32_t(0)) {
goto __1
}
*(*Tuint32_t)(unsafe.Pointer(libc.PostIncUintptr(&parsed_pattern, 4))) = DMETA_CIRCUMFLEX
*(*Tuint32_t)(unsafe.Pointer(libc.PostIncUintptr(&parsed_pattern, 4))) = DMETA_NOCAPTURE
goto __2
__1:
if !(extra_options&DPCRE2_EXTRA_MATCH_WORD != Tuint32_t(0)) {
goto __3
}
*(*Tuint32_t)(unsafe.Pointer(libc.PostIncUintptr(&parsed_pattern, 4))) = DMETA_ESCAPE + ESC_b
*(*Tuint32_t)(unsafe.Pointer(libc.PostIncUintptr(&parsed_pattern, 4))) = DMETA_NOCAPTURE
__3:
;
__2:
;
// If the pattern is actually a literal string, process it separately to avoid
// cluttering up the main loop.
if !(options&DPCRE2_LITERAL != Tuint32_t(0)) {
goto __4
}
__5:
if !(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8)) < ptrend) {
goto __6
}
if !(parsed_pattern >= parsed_pattern_end) {
goto __7
}
*(*int32)(unsafe.Pointer(bp + 20 /* errorcode */)) = ERR63 // Internal error (parsed pattern overflow)
goto FAILED
__7:
;
thisptr = *(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8 /* ptr */))
*(*Tuint32_t)(unsafe.Pointer(bp + 16 /* c */)) = Tuint32_t(*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8 /* ptr */)), 1))))
if !(utf != 0 && *(*Tuint32_t)(unsafe.Pointer(bp + 16)) >= 0xc0) {
goto __8
}
if !(*(*Tuint32_t)(unsafe.Pointer(bp + 16))&0x20 == Tuint32_t(0)) {
goto __9
}
*(*Tuint32_t)(unsafe.Pointer(bp + 16 /* c */)) = *(*Tuint32_t)(unsafe.Pointer(bp + 16))&0x1f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8)), 1))))&0x3f
goto __10
__9:
if !(*(*Tuint32_t)(unsafe.Pointer(bp + 16))&0x10 == Tuint32_t(0)) {
goto __11
}
*(*Tuint32_t)(unsafe.Pointer(bp + 16 /* c */)) = *(*Tuint32_t)(unsafe.Pointer(bp + 16))&0x0f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8)))))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8)) + 1)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8 /* ptr */)) += uintptr(2)
goto __12
__11:
if !(*(*Tuint32_t)(unsafe.Pointer(bp + 16))&0x08 == Tuint32_t(0)) {
goto __13
}
*(*Tuint32_t)(unsafe.Pointer(bp + 16 /* c */)) = *(*Tuint32_t)(unsafe.Pointer(bp + 16))&0x07<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8)))))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8)) + 1)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8)) + 2)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8 /* ptr */)) += uintptr(3)
goto __14
__13:
if !(*(*Tuint32_t)(unsafe.Pointer(bp + 16))&0x04 == Tuint32_t(0)) {
goto __15
}
*(*Tuint32_t)(unsafe.Pointer(bp + 16 /* c */)) = *(*Tuint32_t)(unsafe.Pointer(bp + 16))&0x03<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8)))))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8)) + 1)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8)) + 2)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8)) + 3)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8 /* ptr */)) += uintptr(4)
goto __16
__15:
*(*Tuint32_t)(unsafe.Pointer(bp + 16 /* c */)) = *(*Tuint32_t)(unsafe.Pointer(bp + 16))&0x01<<30 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8)))))&0x3f<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8)) + 1)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8)) + 2)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8)) + 3)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8)) + 4)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8 /* ptr */)) += uintptr(5)
__16:
;
__14:
;
__12:
;
__10:
;
__8:
;
if !(auto_callout != 0) {
goto __17
}
parsed_pattern = manage_callouts(tls, thisptr, bp,
auto_callout, parsed_pattern, cb)
__17:
;
*(*Tuint32_t)(unsafe.Pointer(libc.PostIncUintptr(&parsed_pattern, 4))) = *(*Tuint32_t)(unsafe.Pointer(bp + 16 /* c */))
okquantifier = DTRUE
goto __5
__6:
;
goto PARSED_END
__4:
;
// Process a real regex which may contain meta-characters.
top_nest = uintptr(0)
end_nests = (*Tcompile_block_8)(unsafe.Pointer(cb)).Fstart_workspace + uintptr((*Tcompile_block_8)(unsafe.Pointer(cb)).Fworkspace_size)
// The size of the nest_save structure might not be a factor of the size of the
// workspace. Therefore we must round down end_nests so as to correctly avoid
// creating a nest_save that spans the end of the workspace.
end_nests = end_nests - uintptr((*Tcompile_block_8)(unsafe.Pointer(cb)).Fworkspace_size*Tsize_t(unsafe.Sizeof(TPCRE2_UCHAR8(0)))%Tsize_t(unsafe.Sizeof(Tnest_save{})))
// PCRE2_EXTENDED_MORE implies PCRE2_EXTENDED
if !(options&DPCRE2_EXTENDED_MORE != Tuint32_t(0)) {
goto __18
}
options = options | DPCRE2_EXTENDED
__18:
;
// Now scan the pattern
__19:
if !(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8)) < ptrend) {
goto __20
}
if !(parsed_pattern >= parsed_pattern_end) {
goto __21
}
*(*int32)(unsafe.Pointer(bp + 20 /* errorcode */)) = ERR63 // Internal error (parsed pattern overflow)
goto FAILED
__21:
;
if !(Tuint32_t(nest_depth) > (*Tpcre2_real_compile_context_8)(unsafe.Pointer((*Tcompile_block_8)(unsafe.Pointer(cb)).Fcx)).Fparens_nest_limit) {
goto __22
}
*(*int32)(unsafe.Pointer(bp + 20 /* errorcode */)) = ERR19
goto FAILED // Parentheses too deeply nested
__22:
;
// Get next input character, save its position for callout handling.
thisptr = *(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8 /* ptr */))
*(*Tuint32_t)(unsafe.Pointer(bp + 16 /* c */)) = Tuint32_t(*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8 /* ptr */)), 1))))
if !(utf != 0 && *(*Tuint32_t)(unsafe.Pointer(bp + 16)) >= 0xc0) {
goto __23
}
if !(*(*Tuint32_t)(unsafe.Pointer(bp + 16))&0x20 == Tuint32_t(0)) {
goto __24
}
*(*Tuint32_t)(unsafe.Pointer(bp + 16 /* c */)) = *(*Tuint32_t)(unsafe.Pointer(bp + 16))&0x1f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8)), 1))))&0x3f
goto __25
__24:
if !(*(*Tuint32_t)(unsafe.Pointer(bp + 16))&0x10 == Tuint32_t(0)) {
goto __26
}
*(*Tuint32_t)(unsafe.Pointer(bp + 16 /* c */)) = *(*Tuint32_t)(unsafe.Pointer(bp + 16))&0x0f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8)))))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8)) + 1)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8 /* ptr */)) += uintptr(2)
goto __27
__26:
if !(*(*Tuint32_t)(unsafe.Pointer(bp + 16))&0x08 == Tuint32_t(0)) {
goto __28
}
*(*Tuint32_t)(unsafe.Pointer(bp + 16 /* c */)) = *(*Tuint32_t)(unsafe.Pointer(bp + 16))&0x07<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8)))))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8)) + 1)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8)) + 2)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8 /* ptr */)) += uintptr(3)
goto __29
__28:
if !(*(*Tuint32_t)(unsafe.Pointer(bp + 16))&0x04 == Tuint32_t(0)) {
goto __30
}
*(*Tuint32_t)(unsafe.Pointer(bp + 16 /* c */)) = *(*Tuint32_t)(unsafe.Pointer(bp + 16))&0x03<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8)))))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8)) + 1)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8)) + 2)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8)) + 3)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8 /* ptr */)) += uintptr(4)
goto __31
__30:
*(*Tuint32_t)(unsafe.Pointer(bp + 16 /* c */)) = *(*Tuint32_t)(unsafe.Pointer(bp + 16))&0x01<<30 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8)))))&0x3f<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8)) + 1)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8)) + 2)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8)) + 3)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8)) + 4)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8 /* ptr */)) += uintptr(5)
__31:
;
__29:
;
__27:
;
__25:
;
__23:
;
// Copy quoted literals until \E, allowing for the possibility of automatic
// callouts, except when processing a (*VERB) "name".
if !(inescq != 0) {
goto __32
}
if !(*(*Tuint32_t)(unsafe.Pointer(bp + 16)) == Tuint32_t('\134') && *(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8)) < ptrend && int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8))))) == '\105') {
goto __33
}
inescq = DFALSE
*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8 /* ptr */))++ // Skip E
goto __34
__33:
if !(expect_cond_assert > 0) {
goto __35
} /* A literal is not allowed if we are */
// expecting a conditional assertion,
*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8 /* ptr */))-- // but an empty \Q\E sequence is OK.
*(*int32)(unsafe.Pointer(bp + 20 /* errorcode */)) = ERR28
goto FAILED
__35:
;
if !(inverbname != 0) {
goto __36
}
// Don't use PARSED_LITERAL() because it
*(*Tuint32_t)(unsafe.Pointer(libc.PostIncUintptr(&parsed_pattern, 4))) = *(*Tuint32_t)(unsafe.Pointer(bp + 16 /* c */))
goto __37
__36:
if !(libc.PostDecInt32(&after_manual_callout, 1) <= 0) {
goto __38
}
parsed_pattern = manage_callouts(tls, thisptr, bp,
auto_callout, parsed_pattern, cb)
__38:
;
*(*Tuint32_t)(unsafe.Pointer(libc.PostIncUintptr(&parsed_pattern, 4))) = *(*Tuint32_t)(unsafe.Pointer(bp + 16 /* c */))
okquantifier = DTRUE
__37:
;
meta_quantifier = Tuint32_t(0)
__34:
;
goto __19 // Next character
__32:
;
// If we are processing the "name" part of a (*VERB:NAME) item, all
// characters up to the closing parenthesis are literals except when
// PCRE2_ALT_VERBNAMES is set. That causes backslash interpretation, but only \Q
// and \E and escaped characters are allowed (no character types such as \d). If
// PCRE2_EXTENDED is also set, we must ignore white space and # comments. Do
// this by not entering the special (*VERB:NAME) processing - they are then
// picked up below. Note that c is a character, not a code unit, so we must not
// use MAX_255 to test its size because MAX_255 tests code units and is assumed
// TRUE in 8-bit mode.
if !(inverbname != 0 && (options&(DPCRE2_EXTENDED|DPCRE2_ALT_VERBNAMES) != DPCRE2_EXTENDED|DPCRE2_ALT_VERBNAMES || *(*Tuint32_t)(unsafe.Pointer(bp + 16)) > Tuint32_t(255) && *(*Tuint32_t)(unsafe.Pointer(bp + 16))|Tuint32_t(1) != Tuint32_t(0x200f) && *(*Tuint32_t)(unsafe.Pointer(bp + 16))|Tuint32_t(1) != Tuint32_t(0x2029) || *(*Tuint32_t)(unsafe.Pointer(bp + 16)) < Tuint32_t(256) && *(*Tuint32_t)(unsafe.Pointer(bp + 16)) != Tuint32_t('\043') && int32(*(*Tuint8_t)(unsafe.Pointer((*Tcompile_block_8)(unsafe.Pointer(cb)).Fctypes + uintptr(*(*Tuint32_t)(unsafe.Pointer(bp + 16))))))&Dctype_space == 0 &&
*(*Tuint32_t)(unsafe.Pointer(bp + 16)) != libc.Uint32FromUint8(libc.Uint8FromInt32(133)))) {
goto __39
}
switch *(*Tuint32_t)(unsafe.Pointer(bp + 16 /* c */)) {
default:
goto __41
case Tuint32_t('\051'):
goto __42
case Tuint32_t('\134'):
goto __43
}
goto __40
__41: // Don't use PARSED_LITERAL() because it
*(*Tuint32_t)(unsafe.Pointer(libc.PostIncUintptr(&parsed_pattern, 4))) = *(*Tuint32_t)(unsafe.Pointer(bp + 16 /* c */))
goto __40
__42:
inverbname = DFALSE
// This is the length in characters
verbnamelength = Tsize_t((int64(parsed_pattern)-int64(verblengthptr))/4 - int64(1))
// But the limit on the length is in code units
if !((int64(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8)))-int64(verbnamestart))/1-int64(1) > int64(int32(uint32(1)<<8-uint32(1)))) {
goto __44
}
*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8 /* ptr */))--
*(*int32)(unsafe.Pointer(bp + 20 /* errorcode */)) = ERR76
goto FAILED
__44:
;
*(*Tuint32_t)(unsafe.Pointer(verblengthptr)) = Tuint32_t(verbnamelength)
// If this name was on a verb such as (*ACCEPT) which does not continue,
// a (*MARK) was generated for the name. We now add the original verb as the
// next item.
if !(add_after_mark != Tuint32_t(0)) {
goto __45
}
*(*Tuint32_t)(unsafe.Pointer(libc.PostIncUintptr(&parsed_pattern, 4))) = add_after_mark
add_after_mark = Tuint32_t(0)
__45:
;
goto __40
__43:
if !(options&DPCRE2_ALT_VERBNAMES != Tuint32_t(0)) {
goto __46
}
escape = X_pcre2_check_escape_8(tls, bp+8, ptrend, bp+16, bp+20, options,
(*Tpcre2_real_compile_context_8)(unsafe.Pointer((*Tcompile_block_8)(unsafe.Pointer(cb)).Fcx)).Fextra_options, DFALSE, cb)
if !(*(*int32)(unsafe.Pointer(bp + 20)) != 0) {
goto __48
}
goto FAILED
__48:
;
goto __47
__46:
escape = 0
__47:
; // Treat all as literal
switch escape {
case 0:
goto __50
case ESC_Q:
goto __51
case ESC_E:
goto __52
default:
goto __53
}
goto __49
__50: // Don't use PARSED_LITERAL() because it
*(*Tuint32_t)(unsafe.Pointer(libc.PostIncUintptr(&parsed_pattern, 4))) = *(*Tuint32_t)(unsafe.Pointer(bp + 16 /* c */))
goto __49
__51:
inescq = DTRUE
goto __49
__52: // Ignore
goto __49
__53:
*(*int32)(unsafe.Pointer(bp + 20 /* errorcode */)) = ERR40 // Invalid in verb name
goto FAILED
__49:
;
__40:
;
goto __19 // Next character in pattern
__39:
;
// Not a verb name character. At this point we must process everything that
// must not change the quantification state. This is mainly comments, but we
// handle \Q and \E here as well, so that an item such as A\Q\E+ is treated as
// A+, as in Perl. An isolated \E is ignored.
if !(*(*Tuint32_t)(unsafe.Pointer(bp + 16)) == Tuint32_t('\134') && *(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8)) < ptrend) {
goto __54
}
if !(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8))))) == '\121' || int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8))))) == '\105') {
goto __55
}
inescq = libc.Bool32(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8))))) == '\121')
*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8 /* ptr */))++
goto __19
__55:
;
__54:
;
// Skip over whitespace and # comments in extended mode. Note that c is a
// character, not a code unit, so we must not use MAX_255 to test its size
// because MAX_255 tests code units and is assumed TRUE in 8-bit mode. The
// whitespace characters are those designated as "Pattern White Space" by
// Unicode, which are the isspace() characters plus CHAR_NEL (newline), which is
// U+0085 in Unicode, plus U+200E, U+200F, U+2028, and U+2029. These are a
// subset of space characters that match \h and \v.
if !(options&DPCRE2_EXTENDED != Tuint32_t(0)) {
goto __56
}
if !(*(*Tuint32_t)(unsafe.Pointer(bp + 16)) < Tuint32_t(256) && int32(*(*Tuint8_t)(unsafe.Pointer((*Tcompile_block_8)(unsafe.Pointer(cb)).Fctypes + uintptr(*(*Tuint32_t)(unsafe.Pointer(bp + 16))))))&Dctype_space != 0) {
goto __57
}
goto __19
__57:
;
if !(*(*Tuint32_t)(unsafe.Pointer(bp + 16)) == libc.Uint32FromUint8(libc.Uint8FromInt32(133)) || *(*Tuint32_t)(unsafe.Pointer(bp + 16))|Tuint32_t(1) == Tuint32_t(0x200f) || *(*Tuint32_t)(unsafe.Pointer(bp + 16))|Tuint32_t(1) == Tuint32_t(0x2029)) {
goto __58
}
goto __19
__58:
;
if !(*(*Tuint32_t)(unsafe.Pointer(bp + 16)) == Tuint32_t('\043')) {
goto __59
}
__60:
if !(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8)) < ptrend) {
goto __61
}
if !(func() int32 {
if (*Tcompile_block_8)(unsafe.Pointer(cb)).Fnltype != Tuint32_t(DNLTYPE_FIXED) {
return libc.Bool32(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8)) < (*Tcompile_block_8)(unsafe.Pointer(cb)).Fend_pattern && X_pcre2_is_newline_8(tls, *(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8)), (*Tcompile_block_8)(unsafe.Pointer(cb)).Fnltype, (*Tcompile_block_8)(unsafe.Pointer(cb)).Fend_pattern, cb+260, utf) != 0)
}
return libc.Bool32(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8)) <= (*Tcompile_block_8)(unsafe.Pointer(cb)).Fend_pattern-uintptr((*Tcompile_block_8)(unsafe.Pointer(cb)).Fnllen) && int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8))))) == int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(cb + 272))) && ((*Tcompile_block_8)(unsafe.Pointer(cb)).Fnllen == Tuint32_t(1) || int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8)) + uintptr(1)))) == int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(cb + 272 + 1)))))
}() != 0) {
goto __62
} /* For non-fixed-length newline cases, */
// IS_NEWLINE sets cb->nllen.
*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8 /* ptr */)) += TPCRE2_SPTR8((*Tcompile_block_8)(unsafe.Pointer(cb)).Fnllen)
goto __61
__62:
;
*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8 /* ptr */))++
if !(utf != 0) {
goto __63
}
__64:
if !(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8)) < ptrend && uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8)))))&0xc0 == 0x80) {
goto __65
}
*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8 /* ptr */))++
goto __64
__65:
;
__63:
;
goto __60
__61:
;
goto __19 // Next character in pattern
__59:
;
__56:
;
// Skip over bracketed comments
if !(*(*Tuint32_t)(unsafe.Pointer(bp + 16)) == Tuint32_t('\050') && (int64(ptrend)-int64(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8))))/1 >= int64(2) && int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8))))) == '\077' && int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8)) + 1))) == '\043') {
goto __66
}
__67:
if !(libc.PreIncUintptr(&*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8)), 1) < ptrend && int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8))))) != '\051') {
goto __68
}
goto __67
__68:
;
if !(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8)) >= ptrend) {
goto __69
}
*(*int32)(unsafe.Pointer(bp + 20 /* errorcode */)) = ERR18 // A special error for missing ) in a comment
goto FAILED // to make it easier to debug.
__69:
;
*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8 /* ptr */))++
goto __19 // Next character in pattern
__66:
;
// If the next item is not a quantifier, fill in length of any previous
// callout and create an auto callout if required.
if !(*(*Tuint32_t)(unsafe.Pointer(bp + 16)) != Tuint32_t('\052') && *(*Tuint32_t)(unsafe.Pointer(bp + 16)) != Tuint32_t('\053') && *(*Tuint32_t)(unsafe.Pointer(bp + 16)) != Tuint32_t('\077') && (*(*Tuint32_t)(unsafe.Pointer(bp + 16)) != Tuint32_t('\173') || func() bool {
*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 24)) = *(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8))
return !(read_repeat_counts(tls, bp+24, ptrend, uintptr(0), uintptr(0), bp+20) != 0)
}())) {
goto __70
}
if !(libc.PostDecInt32(&after_manual_callout, 1) <= 0) {
goto __71
}
parsed_pattern = manage_callouts(tls, thisptr, bp, auto_callout,
parsed_pattern, cb)
__71:
;
__70:
;
// If expect_cond_assert is 2, we have just passed (?( and are expecting an
// assertion, possibly preceded by a callout. If the value is 1, we have just
// had the callout and expect an assertion. There must be at least 3 more
// characters in all cases. When expect_cond_assert is 2, we know that the
// current character is an opening parenthesis, as otherwise we wouldn't be
// here. However, when it is 1, we need to check, and it's easiest just to check
// always. Note that expect_cond_assert may be negative, since all callouts just
// decrement it.
if !(expect_cond_assert > 0) {
goto __72
}
ok = libc.Bool32(*(*Tuint32_t)(unsafe.Pointer(bp + 16)) == Tuint32_t('\050') && (int64(ptrend)-int64(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8))))/1 >= int64(3) && (int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8))))) == '\077' || int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8))))) == '\052'))
if !(ok != 0) {
goto __73
}
if !(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8))))) == '\052') {
goto __74
} /* New alpha assertion format, possibly */
ok = libc.Bool32(1 != 0 && int32(*(*Tuint8_t)(unsafe.Pointer((*Tcompile_block_8)(unsafe.Pointer(cb)).Fctypes + uintptr(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8)) + 1))))))&Dctype_lcletter != 0)
goto __75
__74:
switch int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8 /* ptr */)) + 1))) {
case '\103':
goto __77
case '\075':
goto __78
case '\041':
goto __79
case '\074':
goto __80
default:
goto __81
}
goto __76 /* Traditional symbolic format */
__77:
ok = libc.Bool32(expect_cond_assert == 2)
goto __76
__78:
__79:
goto __76
__80:
ok = libc.Bool32(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8)) + 2))) == '\075' || int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8)) + 2))) == '\041')
goto __76
__81:
ok = DFALSE
__76:
;
__75:
;
__73:
;
if !!(ok != 0) {
goto __82
}
*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8 /* ptr */))-- // Adjust error offset
*(*int32)(unsafe.Pointer(bp + 20 /* errorcode */)) = ERR28
goto FAILED
__82:
;
__72:
;
// Remember whether we are expecting a conditional assertion, and set the
// default for this item.
prev_expect_cond_assert = expect_cond_assert
expect_cond_assert = 0
// Remember quantification status for the previous significant item, then set
// default for this item.
prev_okquantifier = okquantifier
prev_meta_quantifier = meta_quantifier
okquantifier = DFALSE
meta_quantifier = Tuint32_t(0)
// If the previous significant item was a quantifier, adjust the parsed code
// if there is a following modifier. The base meta value is always followed by
// the PLUS and QUERY values, in that order. We do this here rather than after
// reading a quantifier so that intervening comments and /x whitespace can be
// ignored without having to replicate code.
if !(prev_meta_quantifier != Tuint32_t(0) && (*(*Tuint32_t)(unsafe.Pointer(bp + 16)) == Tuint32_t('\077') || *(*Tuint32_t)(unsafe.Pointer(bp + 16)) == Tuint32_t('\053'))) {
goto __83
}
*(*Tuint32_t)(unsafe.Pointer(parsed_pattern + uintptr(func() int32 {
if prev_meta_quantifier == DMETA_MINMAX {
return -3
}
return -1
}())*4)) = prev_meta_quantifier + func() uint32 {
if *(*Tuint32_t)(unsafe.Pointer(bp + 16)) == Tuint32_t('\077') {
return 0x00020000
}
return 0x00010000
}()
goto __19 // Next character in pattern
__83:
;
// Process the next item in the main part of a pattern.
switch *(*Tuint32_t)(unsafe.Pointer(bp + 16 /* c */)) {
default:
goto __85
// ---- Escape sequence ----
case Tuint32_t('\134'):
goto __86 // End escape sequence processing
// ---- Single-character special items ----
case Tuint32_t('\136'):
goto __87
case Tuint32_t('\044'):
goto __88
case Tuint32_t('\056'):
goto __89
// ---- Single-character quantifiers ----
case Tuint32_t('\052'):
goto __90
case Tuint32_t('\053'):
goto __91
case Tuint32_t('\077'):
goto __92
// ---- Potential {n,m} quantifier ----
case Tuint32_t('\173'):
goto __93
// ---- Character class ----
case Tuint32_t('\133'):
goto __94 // End of character class
// ---- Opening parenthesis ----
case Tuint32_t('\050'):
goto __95 // End of ( handling
// ---- Branch terminators ----
// Alternation: reset the capture count if we are in a (?| group.
case Tuint32_t('\174'):
goto __96
// End of group; reset the capture count to the maximum if we are in a (?|
// group and/or reset the options that are tracked during parsing. Disallow
// quantifier for a condition that is an assertion.
case Tuint32_t('\051'):
goto __97
}
goto __84
__85: // Non-special character
*(*Tuint32_t)(unsafe.Pointer(libc.PostIncUintptr(&parsed_pattern, 4))) = *(*Tuint32_t)(unsafe.Pointer(bp + 16 /* c */))
okquantifier = DTRUE
goto __84
// ---- Escape sequence ----
__86:
*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 24 /* tempptr */)) = *(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8 /* ptr */))
escape = X_pcre2_check_escape_8(tls, bp+8, ptrend, bp+16, bp+20, options,
(*Tpcre2_real_compile_context_8)(unsafe.Pointer((*Tcompile_block_8)(unsafe.Pointer(cb)).Fcx)).Fextra_options, DFALSE, cb)
if !(*(*int32)(unsafe.Pointer(bp + 20)) != 0) {
goto __98
}
ESCAPE_FAILED:
if !(extra_options&DPCRE2_EXTRA_BAD_ESCAPE_IS_LITERAL == Tuint32_t(0)) {
goto __99
}
goto FAILED
__99:
;
*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8 /* ptr */)) = *(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 24 /* tempptr */))
if !(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8)) >= ptrend) {
goto __100
}
*(*Tuint32_t)(unsafe.Pointer(bp + 16 /* c */)) = Tuint32_t('\134')
goto __101
__100:
*(*Tuint32_t)(unsafe.Pointer(bp + 16 /* c */)) = Tuint32_t(*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8 /* ptr */)), 1))))
if !(utf != 0 && *(*Tuint32_t)(unsafe.Pointer(bp + 16)) >= 0xc0) {
goto __102
}
if !(*(*Tuint32_t)(unsafe.Pointer(bp + 16))&0x20 == Tuint32_t(0)) {
goto __103
}
*(*Tuint32_t)(unsafe.Pointer(bp + 16 /* c */)) = *(*Tuint32_t)(unsafe.Pointer(bp + 16))&0x1f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8)), 1))))&0x3f
goto __104
__103:
if !(*(*Tuint32_t)(unsafe.Pointer(bp + 16))&0x10 == Tuint32_t(0)) {
goto __105
}
*(*Tuint32_t)(unsafe.Pointer(bp + 16 /* c */)) = *(*Tuint32_t)(unsafe.Pointer(bp + 16))&0x0f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8)))))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8)) + 1)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8 /* ptr */)) += uintptr(2)
goto __106
__105:
if !(*(*Tuint32_t)(unsafe.Pointer(bp + 16))&0x08 == Tuint32_t(0)) {
goto __107
}
*(*Tuint32_t)(unsafe.Pointer(bp + 16 /* c */)) = *(*Tuint32_t)(unsafe.Pointer(bp + 16))&0x07<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8)))))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8)) + 1)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8)) + 2)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8 /* ptr */)) += uintptr(3)
goto __108
__107:
if !(*(*Tuint32_t)(unsafe.Pointer(bp + 16))&0x04 == Tuint32_t(0)) {
goto __109
}
*(*Tuint32_t)(unsafe.Pointer(bp + 16 /* c */)) = *(*Tuint32_t)(unsafe.Pointer(bp + 16))&0x03<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8)))))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8)) + 1)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8)) + 2)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8)) + 3)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8 /* ptr */)) += uintptr(4)
goto __110
__109:
*(*Tuint32_t)(unsafe.Pointer(bp + 16 /* c */)) = *(*Tuint32_t)(unsafe.Pointer(bp + 16))&0x01<<30 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8)))))&0x3f<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8)) + 1)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8)) + 2)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8)) + 3)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8)) + 4)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8 /* ptr */)) += uintptr(5)
__110:
;
__108:
;
__106:
;
__104:
;
__102:
;
// Get character value, increment pointer
__101:
;
escape = 0 // Treat as literal character
__98:
;
// The escape was a data escape or literal character.
if !(escape == 0) {
goto __111
}
*(*Tuint32_t)(unsafe.Pointer(libc.PostIncUintptr(&parsed_pattern, 4))) = *(*Tuint32_t)(unsafe.Pointer(bp + 16 /* c */))
okquantifier = DTRUE
goto __112
__111:
if !(escape < 0) {
goto __113
}
*(*Tsize_t)(unsafe.Pointer(bp + 56 /* offset */)) = Tsize_t((int64(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8)))-int64((*Tcompile_block_8)(unsafe.Pointer(cb)).Fstart_pattern))/1 - int64(1))
escape = -escape
*(*Tuint32_t)(unsafe.Pointer(libc.PostIncUintptr(&parsed_pattern, 4))) = DMETA_BACKREF | Tuint32_t(escape)
if !(escape < 10) {
goto __115
}
if !(*(*Tsize_t)(unsafe.Pointer(cb + 88 + uintptr(escape)*8)) == libc.CplUint64(uint64(0))) {
goto __117
}
*(*Tsize_t)(unsafe.Pointer(cb + 88 + uintptr(escape)*8)) = *(*Tsize_t)(unsafe.Pointer(bp + 56 /* offset */))
__117:
;
goto __116
__115:
*(*Tuint32_t)(unsafe.Pointer(libc.PostIncUintptr(&parsed_pattern, 4))) = Tuint32_t(*(*Tsize_t)(unsafe.Pointer(bp + 56)) >> 32)
*(*Tuint32_t)(unsafe.Pointer(libc.PostIncUintptr(&parsed_pattern, 4))) = Tuint32_t(*(*Tsize_t)(unsafe.Pointer(bp + 56)) & uint64(0xffffffff))
__116:
;
okquantifier = DTRUE
goto __114
__113:
switch escape {
case ESC_C:
goto __119
case ESC_X:
goto __120
case ESC_H:
goto __121
case ESC_h:
goto __122
case ESC_N:
goto __123
case ESC_R:
goto __124
case ESC_V:
goto __125
case ESC_v:
goto __126
default:
goto __127
// Escapes that change in UCP mode. Note that PCRE2_UCP will never be set
// without Unicode support because it is checked when pcre2_compile() is
// called.
case ESC_d:
goto __128
case ESC_D:
goto __129
case ESC_s:
goto __130
case ESC_S:
goto __131
case ESC_w:
goto __132
case ESC_W:
goto __133
// Unicode property matching
case ESC_P:
goto __134
case ESC_p:
goto __135 // End \P and \p
// When \g is used with quotes or angle brackets as delimiters, it is a
// numerical or named subroutine call, and control comes here. When used
// with brace delimiters it is a numberical back reference and does not come
// here because check_escape() returns it directly as a reference. \k is
// always a named back reference.
case ESC_g:
goto __136
case ESC_k:
goto __137
}
goto __118
__119:
if !(options&DPCRE2_NEVER_BACKSLASH_C != Tuint32_t(0)) {
goto __138
}
*(*int32)(unsafe.Pointer(bp + 20 /* errorcode */)) = ERR83
goto ESCAPE_FAILED
__138:
;
okquantifier = DTRUE
*(*Tuint32_t)(unsafe.Pointer(libc.PostIncUintptr(&parsed_pattern, 4))) = DMETA_ESCAPE + uint32(escape)
goto __118
__120:
__121:
__122:
__123:
__124:
__125:
__126:
okquantifier = DTRUE
*(*Tuint32_t)(unsafe.Pointer(libc.PostIncUintptr(&parsed_pattern, 4))) = DMETA_ESCAPE + uint32(escape)
goto __118
__127: // \A, \B, \b, \G, \K, \Z, \z cannot be quantified.
*(*Tuint32_t)(unsafe.Pointer(libc.PostIncUintptr(&parsed_pattern, 4))) = DMETA_ESCAPE + uint32(escape)
goto __118
// Escapes that change in UCP mode. Note that PCRE2_UCP will never be set
// without Unicode support because it is checked when pcre2_compile() is
// called.
__128:
__129:
__130:
__131:
__132:
__133:
okquantifier = DTRUE
if !(options&DPCRE2_UCP == Tuint32_t(0)) {
goto __139
}
*(*Tuint32_t)(unsafe.Pointer(libc.PostIncUintptr(&parsed_pattern, 4))) = DMETA_ESCAPE + uint32(escape)
goto __140
__139:
*(*Tuint32_t)(unsafe.Pointer(libc.PostIncUintptr(&parsed_pattern, 4))) = DMETA_ESCAPE + func() uint32 {
if escape == ESC_d || escape == ESC_s || escape == ESC_w {
return ESC_p
}
return ESC_P
}()
switch escape {
case ESC_d:
goto __142
case ESC_D:
goto __143
case ESC_s:
goto __144
case ESC_S:
goto __145
case ESC_w:
goto __146
case ESC_W:
goto __147
}
goto __141
__142:
__143:
*(*Tuint32_t)(unsafe.Pointer(libc.PostIncUintptr(&parsed_pattern, 4))) = Tuint32_t(int32(DPT_PC)<<16 | ucp_Nd)
goto __141
__144:
__145:
*(*Tuint32_t)(unsafe.Pointer(libc.PostIncUintptr(&parsed_pattern, 4))) = Tuint32_t(int32(DPT_SPACE) << 16)
goto __141
__146:
__147:
*(*Tuint32_t)(unsafe.Pointer(libc.PostIncUintptr(&parsed_pattern, 4))) = Tuint32_t(int32(DPT_WORD) << 16)
goto __141
__141:
;
__140:
;
goto __118
// Unicode property matching
__134:
__135:
*(*Tuint16_t)(unsafe.Pointer(bp + 36 /* ptype */)) = Tuint16_t(0)
*(*Tuint16_t)(unsafe.Pointer(bp + 38 /* pdata */)) = Tuint16_t(0)
if !!(get_ucp(tls, bp+8, bp+32, bp+36, bp+38, bp+20, cb) != 0) {
goto __148
}
goto ESCAPE_FAILED
__148:
;
if !(*(*TBOOL)(unsafe.Pointer(bp + 32)) != 0) {
goto __149
}
if escape == ESC_P {
escape = ESC_p
} else {
escape = ESC_P
}
__149:
;
*(*Tuint32_t)(unsafe.Pointer(libc.PostIncUintptr(&parsed_pattern, 4))) = DMETA_ESCAPE + uint32(escape)
*(*Tuint32_t)(unsafe.Pointer(libc.PostIncUintptr(&parsed_pattern, 4))) = Tuint32_t(int32(*(*Tuint16_t)(unsafe.Pointer(bp + 36)))<<16 | int32(*(*Tuint16_t)(unsafe.Pointer(bp + 38))))
okquantifier = DTRUE
goto __118 // End \P and \p
// When \g is used with quotes or angle brackets as delimiters, it is a
// numerical or named subroutine call, and control comes here. When used
// with brace delimiters it is a numberical back reference and does not come
// here because check_escape() returns it directly as a reference. \k is
// always a named back reference.
__136:
__137:
if !(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8)) >= ptrend || int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8))))) != '\173' && int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8))))) != '\074' && int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8))))) != '\047') {
goto __150
}
if escape == ESC_g {
*(*int32)(unsafe.Pointer(bp + 20 /* errorcode */)) = ERR57
} else {
*(*int32)(unsafe.Pointer(bp + 20 /* errorcode */)) = ERR69
}
goto ESCAPE_FAILED
__150:
;
if int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8))))) == '\074' {
terminator = uint32('\076')
} else {
if int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8))))) == '\047' {
terminator = uint32('\047')
} else {
terminator = uint32('\175')
}
}
// For a non-braced \g, check for a numerical recursion.
if !(escape == ESC_g && terminator != Tuint32_t('\175')) {
goto __151
}
*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 40 /* p */)) = *(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8)) + uintptr(1)
if !(read_number(tls, bp+40, ptrend, int32((*Tcompile_block_8)(unsafe.Pointer(cb)).Fbracount), DMAX_GROUP_NUMBER, ERR61, bp+48,
bp+20) != 0) {
goto __152
}
if !(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 40)) >= ptrend || Tuint32_t(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 40))))) != terminator) {
goto __153
}
*(*int32)(unsafe.Pointer(bp + 20 /* errorcode */)) = ERR57
goto ESCAPE_FAILED
__153:
;
*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8 /* ptr */)) = *(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 40 /* p */))
goto SET_RECURSION
__152:
;
if !(*(*int32)(unsafe.Pointer(bp + 20)) != 0) {
goto __154
}
goto ESCAPE_FAILED
__154:
;
__151:
;
// Not a numerical recursion
if !!(read_name(tls, bp+8, ptrend, utf, terminator, bp+56, bp+64, bp+72,
bp+20, cb) != 0) {
goto __155
}
goto ESCAPE_FAILED
__155:
;
// \k and \g when used with braces are back references, whereas \g used
// with quotes or angle brackets is a recursion
*(*Tuint32_t)(unsafe.Pointer(libc.PostIncUintptr(&parsed_pattern, 4))) = func() uint32 {
if escape == ESC_k || terminator == Tuint32_t('\175') {
return DMETA_BACKREF_BYNAME
}
return DMETA_RECURSE_BYNAME
}()
*(*Tuint32_t)(unsafe.Pointer(libc.PostIncUintptr(&parsed_pattern, 4))) = *(*Tuint32_t)(unsafe.Pointer(bp + 72 /* namelen */))
*(*Tuint32_t)(unsafe.Pointer(libc.PostIncUintptr(&parsed_pattern, 4))) = Tuint32_t(*(*Tsize_t)(unsafe.Pointer(bp + 56)) >> 32)
*(*Tuint32_t)(unsafe.Pointer(libc.PostIncUintptr(&parsed_pattern, 4))) = Tuint32_t(*(*Tsize_t)(unsafe.Pointer(bp + 56)) & uint64(0xffffffff))
okquantifier = DTRUE
goto __118 // End special escape processing
__118:
;
__114:
;
__112:
;
goto __84 // End escape sequence processing
// ---- Single-character special items ----
__87:
*(*Tuint32_t)(unsafe.Pointer(libc.PostIncUintptr(&parsed_pattern, 4))) = DMETA_CIRCUMFLEX
goto __84
__88:
*(*Tuint32_t)(unsafe.Pointer(libc.PostIncUintptr(&parsed_pattern, 4))) = DMETA_DOLLAR
goto __84
__89:
*(*Tuint32_t)(unsafe.Pointer(libc.PostIncUintptr(&parsed_pattern, 4))) = DMETA_DOT
okquantifier = DTRUE
goto __84
// ---- Single-character quantifiers ----
__90:
meta_quantifier = DMETA_ASTERISK
goto CHECK_QUANTIFIER
__91:
meta_quantifier = DMETA_PLUS
goto CHECK_QUANTIFIER
__92:
meta_quantifier = DMETA_QUERY
goto CHECK_QUANTIFIER
// ---- Potential {n,m} quantifier ----
__93:
if !!(read_repeat_counts(tls, bp+8, ptrend, bp+76, bp+80,
bp+20) != 0) {
goto __156
}
if !(*(*int32)(unsafe.Pointer(bp + 20)) != 0) {
goto __157
}
goto FAILED
__157:
; // Error in quantifier.
*(*Tuint32_t)(unsafe.Pointer(libc.PostIncUintptr(&parsed_pattern, 4))) = *(*Tuint32_t)(unsafe.Pointer(bp + 16 /* c */))
okquantifier = DTRUE
// Not a quantifier
goto __84 // No more quantifier processing
__156:
;
meta_quantifier = DMETA_MINMAX
// Fall through
// ---- Quantifier post-processing ----
// Check that a quantifier is allowed after the previous item.
CHECK_QUANTIFIER:
if !!(prev_okquantifier != 0) {
goto __158
}
*(*int32)(unsafe.Pointer(bp + 20 /* errorcode */)) = ERR9
goto FAILED_BACK
__158:
;
// Most (*VERB)s are not allowed to be quantified, but an ungreedy
// quantifier can be useful for (*ACCEPT) - meaning "succeed on backtrack", a
// sort of negated (*COMMIT). We therefore allow (*ACCEPT) to be quantified by
// wrapping it in non-capturing brackets, but we have to allow for a preceding
// (*MARK) for when (*ACCEPT) has an argument.
if !(*(*Tuint32_t)(unsafe.Pointer(parsed_pattern + libc.UintptrFromInt32(-1)*4)) == DMETA_ACCEPT) {
goto __159
}
p1 = parsed_pattern - uintptr(1)*4
__160:
if !(p1 >= verbstartptr) {
goto __162
}
*(*Tuint32_t)(unsafe.Pointer(p1 + 1*4)) = *(*Tuint32_t)(unsafe.Pointer(p1))
goto __161
__161:
p1 -= 4
goto __160
goto __162
__162:
;
*(*Tuint32_t)(unsafe.Pointer(verbstartptr)) = DMETA_NOCAPTURE
*(*Tuint32_t)(unsafe.Pointer(parsed_pattern + 1*4)) = DMETA_KET
parsed_pattern += 4 * uintptr(2)
__159:
;
// Now we can put the quantifier into the parsed pattern vector. At this
// stage, we have only the basic quantifier. The check for a following + or ?
// modifier happens at the top of the loop, after any intervening comments
// have been removed.
*(*Tuint32_t)(unsafe.Pointer(libc.PostIncUintptr(&parsed_pattern, 4))) = meta_quantifier
if !(*(*Tuint32_t)(unsafe.Pointer(bp + 16)) == Tuint32_t('\173')) {
goto __163
}
*(*Tuint32_t)(unsafe.Pointer(libc.PostIncUintptr(&parsed_pattern, 4))) = *(*Tuint32_t)(unsafe.Pointer(bp + 76 /* min_repeat */))
*(*Tuint32_t)(unsafe.Pointer(libc.PostIncUintptr(&parsed_pattern, 4))) = *(*Tuint32_t)(unsafe.Pointer(bp + 80 /* max_repeat */))
__163:
;
goto __84
// ---- Character class ----
__94:
okquantifier = DTRUE
// In another (POSIX) regex library, the ugly syntax [[:<:]] and [[:>:]] is
// used for "start of word" and "end of word". As these are otherwise illegal
// sequences, we don't break anything by recognizing them. They are replaced
// by \b(?=\w) and \b(?<=\w) respectively. Sequences like [a[:<:]] are
// erroneous and are handled by the normal code below.
if !((int64(ptrend)-int64(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8))))/1 >= int64(6) && (X_pcre2_strncmp_c8_8(tls, *(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8)), ts+597, uint64(6)) == 0 || X_pcre2_strncmp_c8_8(tls, *(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8)), ts+604, uint64(6)) == 0)) {
goto __164
}
*(*Tuint32_t)(unsafe.Pointer(libc.PostIncUintptr(&parsed_pattern, 4))) = DMETA_ESCAPE + ESC_b
if !(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8)) + 2))) == '\074') {
goto __165
}
*(*Tuint32_t)(unsafe.Pointer(libc.PostIncUintptr(&parsed_pattern, 4))) = DMETA_LOOKAHEAD
goto __166
__165:
*(*Tuint32_t)(unsafe.Pointer(libc.PostIncUintptr(&parsed_pattern, 4))) = DMETA_LOOKBEHIND
*(*TBOOL)(unsafe.Pointer(has_lookbehind)) = DTRUE
/* The offset is used only for the "non-fixed length" error; this won't
occur here, so just store zero. */
*(*Tuint32_t)(unsafe.Pointer(libc.PostIncUintptr(&parsed_pattern, 4))) = uint32(Tsize_t(uint64(0)) >> 32)
*(*Tuint32_t)(unsafe.Pointer(libc.PostIncUintptr(&parsed_pattern, 4))) = uint32(uint64(0) & uint64(0xffffffff))
__166:
;
if !(options&DPCRE2_UCP == Tuint32_t(0)) {
goto __167
}
*(*Tuint32_t)(unsafe.Pointer(libc.PostIncUintptr(&parsed_pattern, 4))) = DMETA_ESCAPE + ESC_w
goto __168
__167:
*(*Tuint32_t)(unsafe.Pointer(libc.PostIncUintptr(&parsed_pattern, 4))) = DMETA_ESCAPE + ESC_p
*(*Tuint32_t)(unsafe.Pointer(libc.PostIncUintptr(&parsed_pattern, 4))) = Tuint32_t(int32(DPT_WORD) << 16)
__168:
;
*(*Tuint32_t)(unsafe.Pointer(libc.PostIncUintptr(&parsed_pattern, 4))) = DMETA_KET
*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8 /* ptr */)) += uintptr(6)
goto __84
__164:
;
// PCRE supports POSIX class stuff inside a class. Perl gives an error if
// they are encountered at the top level, so we'll do that too.
if !(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8)) < ptrend && (int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8))))) == '\072' || int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8))))) == '\056' || int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8))))) == '\075') && check_posix_syntax(tls, *(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8)), ptrend, bp+24) != 0) {
goto __169
}
if int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostDecUintptr(&*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8)), 1)))) == '\072' {
*(*int32)(unsafe.Pointer(bp + 20 /* errorcode */)) = ERR12
} else {
*(*int32)(unsafe.Pointer(bp + 20 /* errorcode */)) = ERR13
}
goto FAILED
__169:
;
// Process a regular character class. If the first character is '^', set
// the negation flag. If the first few characters (either before or after ^)
// are \Q\E or \E or space or tab in extended-more mode, we skip them too.
// This makes for compatibility with Perl.
negate_class = DFALSE
__170:
if !(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8)) < ptrend) {
goto __171
}
*(*Tuint32_t)(unsafe.Pointer(bp + 16 /* c */)) = Tuint32_t(*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8 /* ptr */)), 1))))
if !(utf != 0 && *(*Tuint32_t)(unsafe.Pointer(bp + 16)) >= 0xc0) {
goto __172
}
if !(*(*Tuint32_t)(unsafe.Pointer(bp + 16))&0x20 == Tuint32_t(0)) {
goto __173
}
*(*Tuint32_t)(unsafe.Pointer(bp + 16 /* c */)) = *(*Tuint32_t)(unsafe.Pointer(bp + 16))&0x1f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8)), 1))))&0x3f
goto __174
__173:
if !(*(*Tuint32_t)(unsafe.Pointer(bp + 16))&0x10 == Tuint32_t(0)) {
goto __175
}
*(*Tuint32_t)(unsafe.Pointer(bp + 16 /* c */)) = *(*Tuint32_t)(unsafe.Pointer(bp + 16))&0x0f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8)))))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8)) + 1)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8 /* ptr */)) += uintptr(2)
goto __176
__175:
if !(*(*Tuint32_t)(unsafe.Pointer(bp + 16))&0x08 == Tuint32_t(0)) {
goto __177
}
*(*Tuint32_t)(unsafe.Pointer(bp + 16 /* c */)) = *(*Tuint32_t)(unsafe.Pointer(bp + 16))&0x07<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8)))))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8)) + 1)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8)) + 2)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8 /* ptr */)) += uintptr(3)
goto __178
__177:
if !(*(*Tuint32_t)(unsafe.Pointer(bp + 16))&0x04 == Tuint32_t(0)) {
goto __179
}
*(*Tuint32_t)(unsafe.Pointer(bp + 16 /* c */)) = *(*Tuint32_t)(unsafe.Pointer(bp + 16))&0x03<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8)))))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8)) + 1)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8)) + 2)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8)) + 3)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8 /* ptr */)) += uintptr(4)
goto __180
__179:
*(*Tuint32_t)(unsafe.Pointer(bp + 16 /* c */)) = *(*Tuint32_t)(unsafe.Pointer(bp + 16))&0x01<<30 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8)))))&0x3f<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8)) + 1)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8)) + 2)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8)) + 3)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8)) + 4)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8 /* ptr */)) += uintptr(5)
__180:
;
__178:
;
__176:
;
__174:
;
__172:
;
if !(*(*Tuint32_t)(unsafe.Pointer(bp + 16)) == Tuint32_t('\134')) {
goto __181
}
if !(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8)) < ptrend && int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8))))) == '\105') {
goto __183
}
*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8 /* ptr */))++
goto __184
__183:
if !((int64(ptrend)-int64(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8))))/1 >= int64(3) && X_pcre2_strncmp_c8_8(tls, *(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8)), ts+611, uint64(3)) == 0) {
goto __185
}
*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8 /* ptr */)) += uintptr(3)
goto __186
__185:
goto __171
__186:
;
__184:
;
goto __182
__181:
if !(options&DPCRE2_EXTENDED_MORE != Tuint32_t(0) && (*(*Tuint32_t)(unsafe.Pointer(bp + 16)) == Tuint32_t('\040') || *(*Tuint32_t)(unsafe.Pointer(bp + 16)) == Tuint32_t('\011'))) {
goto __187
} // Note: just these two
goto __170
goto __188
__187:
if !(!(negate_class != 0) && *(*Tuint32_t)(unsafe.Pointer(bp + 16)) == Tuint32_t('\136')) {
goto __189
}
negate_class = DTRUE
goto __190
__189:
goto __171
__190:
;
__188:
;
__182:
;
goto __170
__171:
;
// Now the real contents of the class; c has the first "real" character.
// Empty classes are permitted only if the option is set.
if !(*(*Tuint32_t)(unsafe.Pointer(bp + 16)) == Tuint32_t('\135') && (*Tcompile_block_8)(unsafe.Pointer(cb)).Fexternal_options&DPCRE2_ALLOW_EMPTY_CLASS != Tuint32_t(0)) {
goto __191
}
*(*Tuint32_t)(unsafe.Pointer(libc.PostIncUintptr(&parsed_pattern, 4))) = func() uint32 {
if negate_class != 0 {
return DMETA_CLASS_EMPTY_NOT
}
return DMETA_CLASS_EMPTY
}()
goto __84 // End of class processing
__191:
;
// Process a non-empty class.
*(*Tuint32_t)(unsafe.Pointer(libc.PostIncUintptr(&parsed_pattern, 4))) = func() uint32 {
if negate_class != 0 {
return DMETA_CLASS_NOT
}
return DMETA_CLASS
}()
class_range_state = RANGE_NO
// In an EBCDIC environment, Perl treats alphabetic ranges specially
// because there are holes in the encoding, and simply using the range A-Z
// (for example) would include the characters in the holes. This applies only
// to ranges where both values are literal; [\xC1-\xE9] is different to [A-Z]
// in this respect. In order to accommodate this, we keep track of whether
// character values are literal or not, and a state variable for handling
// ranges.
// Loop for the contents of the class
__192:
char_is_literal = DTRUE
// Inside \Q...\E everything is literal except \E
if !(inescq != 0) {
goto __195
}
if !(*(*Tuint32_t)(unsafe.Pointer(bp + 16)) == Tuint32_t('\134') && *(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8)) < ptrend && int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8))))) == '\105') {
goto __196
}
inescq = DFALSE // Reset literal state
*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8 /* ptr */))++ // Skip the 'E'
goto CLASS_CONTINUE
__196:
;
goto CLASS_LITERAL
__195:
;
// Skip over space and tab (only) in extended-more mode.
if !(options&DPCRE2_EXTENDED_MORE != Tuint32_t(0) && (*(*Tuint32_t)(unsafe.Pointer(bp + 16)) == Tuint32_t('\040') || *(*Tuint32_t)(unsafe.Pointer(bp + 16)) == Tuint32_t('\011'))) {
goto __197
}
goto CLASS_CONTINUE
__197:
;
// Handle POSIX class names. Perl allows a negation extension of the
// form [:^name:]. A square bracket that doesn't match the syntax is
// treated as a literal. We also recognize the POSIX constructions
// [.ch.] and [=ch=] ("collating elements") and fault them, as Perl
// 5.6 and 5.8 do.
if !(*(*Tuint32_t)(unsafe.Pointer(bp + 16)) == Tuint32_t('\133') && (int64(ptrend)-int64(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8))))/1 >= int64(3) && (int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8))))) == '\072' || int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8))))) == '\056' || int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8))))) == '\075') && check_posix_syntax(tls, *(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8)), ptrend, bp+24) != 0) {
goto __198
}
posix_negate = DFALSE
// Perl treats a hyphen before a POSIX class as a literal, not the
// start of a range. However, it gives a warning in its warning mode. PCRE
// does not have a warning mode, so we give an error, because this is
// likely an error on the user's part.
if !(class_range_state == Tuint32_t(1)) {
goto __200
}
*(*int32)(unsafe.Pointer(bp + 20 /* errorcode */)) = ERR50
goto FAILED
__200:
;
if !(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8))))) != '\072') {
goto __201
}
*(*int32)(unsafe.Pointer(bp + 20 /* errorcode */)) = ERR13
goto FAILED_BACK
__201:
;
if !(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PreIncUintptr(&*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8)), 1)))) == '\136') {
goto __202
}
posix_negate = DTRUE
*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8 /* ptr */))++
__202:
;
posix_class = check_posix_name(tls, *(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8 /* ptr */)), int32((int64(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 24)))-int64(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8))))/1))
if !(posix_class < 0) {
goto __203
}
*(*int32)(unsafe.Pointer(bp + 20 /* errorcode */)) = ERR30
goto FAILED
__203:
;
*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8 /* ptr */)) = *(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 24)) + uintptr(2)
// Perl treats a hyphen after a POSIX class as a literal, not the
// start of a range. However, it gives a warning in its warning mode
// unless the hyphen is the last character in the class. PCRE does not
// have a warning mode, so we give an error, because this is likely an
// error on the user's part.
if !(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8)) < ptrend-uintptr(1) && int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8))))) == '\055' && int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8)) + 1))) != '\135') {
goto __204
}
*(*int32)(unsafe.Pointer(bp + 20 /* errorcode */)) = ERR50
goto FAILED
__204:
;
// Set "a hyphen is not the start of a range" for the -] case, and also
// in case the POSIX class is followed by \E or \Q\E (possibly repeated -
// fuzzers do that kind of thing) and *then* a hyphen. This causes that
// hyphen to be treated as a literal. I don't think it's worth setting up
// special apparatus to do otherwise.
class_range_state = RANGE_NO
// When PCRE2_UCP is set, some of the POSIX classes are converted to
// use Unicode properties \p or \P or, in one case, \h or \H. The
// substitutes table has two values per class, containing the type and
// value of a \p or \P item. The special cases are specified with a
// negative type: a non-zero value causes \h or \H to be used, and a zero
// value falls through to behave like a non-UCP POSIX class.
if !(options&DPCRE2_UCP != Tuint32_t(0)) {
goto __205
}
ptype1 = posix_substitutes[2*posix_class]
pvalue = posix_substitutes[2*posix_class+1]
if !(ptype1 >= 0) {
goto __206
}
*(*Tuint32_t)(unsafe.Pointer(libc.PostIncUintptr(&parsed_pattern, 4))) = DMETA_ESCAPE + func() uint32 {
if posix_negate != 0 {
return ESC_P
}
return ESC_p
}()
*(*Tuint32_t)(unsafe.Pointer(libc.PostIncUintptr(&parsed_pattern, 4))) = Tuint32_t(ptype1<<16 | pvalue)
goto CLASS_CONTINUE
__206:
;
if !(pvalue != 0) {
goto __207
}
*(*Tuint32_t)(unsafe.Pointer(libc.PostIncUintptr(&parsed_pattern, 4))) = DMETA_ESCAPE + func() uint32 {
if posix_negate != 0 {
return ESC_H
}
return ESC_h
}()
goto CLASS_CONTINUE
__207:
;
// Fall through
__205:
;
// Non-UCP POSIX class
*(*Tuint32_t)(unsafe.Pointer(libc.PostIncUintptr(&parsed_pattern, 4))) = func() uint32 {
if posix_negate != 0 {
return DMETA_POSIX_NEG
}
return DMETA_POSIX
}()
*(*Tuint32_t)(unsafe.Pointer(libc.PostIncUintptr(&parsed_pattern, 4))) = Tuint32_t(posix_class)
goto __199
__198:
if !(*(*Tuint32_t)(unsafe.Pointer(bp + 16)) == Tuint32_t('\055') && class_range_state >= RANGE_OK_ESCAPED) {
goto __208
}
*(*Tuint32_t)(unsafe.Pointer(libc.PostIncUintptr(&parsed_pattern, 4))) = func() uint32 {
if class_range_state == RANGE_OK_LITERAL {
return DMETA_RANGE_LITERAL
}
return DMETA_RANGE_ESCAPED
}()
class_range_state = Tuint32_t(1) /* RANGE_STARTED */
goto __209
__208:
if !(*(*Tuint32_t)(unsafe.Pointer(bp + 16)) != Tuint32_t('\134')) {
goto __210
}
CLASS_LITERAL:
if !(class_range_state == Tuint32_t(1)) {
goto __212
}
if !(*(*Tuint32_t)(unsafe.Pointer(bp + 16)) == *(*Tuint32_t)(unsafe.Pointer(parsed_pattern + libc.UintptrFromInt32(-2)*4))) {
goto __214
} // Optimize one-char range
parsed_pattern -= 4
goto __215
__214:
if !(*(*Tuint32_t)(unsafe.Pointer(parsed_pattern + libc.UintptrFromInt32(-2)*4)) > *(*Tuint32_t)(unsafe.Pointer(bp + 16))) {
goto __216
} /* Check range is in order */
*(*int32)(unsafe.Pointer(bp + 20 /* errorcode */)) = ERR8
goto FAILED_BACK
goto __217
__216:
if !(!(char_is_literal != 0) && *(*Tuint32_t)(unsafe.Pointer(parsed_pattern + libc.UintptrFromInt32(-1)*4)) == DMETA_RANGE_LITERAL) {
goto __218
}
*(*Tuint32_t)(unsafe.Pointer(parsed_pattern + libc.UintptrFromInt32(-1)*4)) = DMETA_RANGE_ESCAPED
__218:
;
*(*Tuint32_t)(unsafe.Pointer(libc.PostIncUintptr(&parsed_pattern, 4))) = *(*Tuint32_t)(unsafe.Pointer(bp + 16 /* c */))
okquantifier = DTRUE
__217:
;
__215:
;
class_range_state = RANGE_NO
goto __213
__212: /* Potential start of range */
if char_is_literal != 0 {
class_range_state = RANGE_OK_LITERAL
} else {
class_range_state = RANGE_OK_ESCAPED
}
*(*Tuint32_t)(unsafe.Pointer(libc.PostIncUintptr(&parsed_pattern, 4))) = *(*Tuint32_t)(unsafe.Pointer(bp + 16 /* c */))
okquantifier = DTRUE
__213:
;
goto __211
__210:
*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 24 /* tempptr */)) = *(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8 /* ptr */))
escape = X_pcre2_check_escape_8(tls, bp+8, ptrend, bp+16, bp+20, options,
(*Tpcre2_real_compile_context_8)(unsafe.Pointer((*Tcompile_block_8)(unsafe.Pointer(cb)).Fcx)).Fextra_options, DTRUE, cb)
if !(*(*int32)(unsafe.Pointer(bp + 20)) != 0) {
goto __219
}
if !(extra_options&DPCRE2_EXTRA_BAD_ESCAPE_IS_LITERAL == Tuint32_t(0)) {
goto __220
}
goto FAILED
__220:
;
*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8 /* ptr */)) = *(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 24 /* tempptr */))
if !(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8)) >= ptrend) {
goto __221
}
*(*Tuint32_t)(unsafe.Pointer(bp + 16 /* c */)) = Tuint32_t('\134')
goto __222
__221:
*(*Tuint32_t)(unsafe.Pointer(bp + 16 /* c */)) = Tuint32_t(*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8 /* ptr */)), 1))))
if !(utf != 0 && *(*Tuint32_t)(unsafe.Pointer(bp + 16)) >= 0xc0) {
goto __223
}
if !(*(*Tuint32_t)(unsafe.Pointer(bp + 16))&0x20 == Tuint32_t(0)) {
goto __224
}
*(*Tuint32_t)(unsafe.Pointer(bp + 16 /* c */)) = *(*Tuint32_t)(unsafe.Pointer(bp + 16))&0x1f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8)), 1))))&0x3f
goto __225
__224:
if !(*(*Tuint32_t)(unsafe.Pointer(bp + 16))&0x10 == Tuint32_t(0)) {
goto __226
}
*(*Tuint32_t)(unsafe.Pointer(bp + 16 /* c */)) = *(*Tuint32_t)(unsafe.Pointer(bp + 16))&0x0f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8)))))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8)) + 1)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8 /* ptr */)) += uintptr(2)
goto __227
__226:
if !(*(*Tuint32_t)(unsafe.Pointer(bp + 16))&0x08 == Tuint32_t(0)) {
goto __228
}
*(*Tuint32_t)(unsafe.Pointer(bp + 16 /* c */)) = *(*Tuint32_t)(unsafe.Pointer(bp + 16))&0x07<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8)))))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8)) + 1)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8)) + 2)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8 /* ptr */)) += uintptr(3)
goto __229
__228:
if !(*(*Tuint32_t)(unsafe.Pointer(bp + 16))&0x04 == Tuint32_t(0)) {
goto __230
}
*(*Tuint32_t)(unsafe.Pointer(bp + 16 /* c */)) = *(*Tuint32_t)(unsafe.Pointer(bp + 16))&0x03<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8)))))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8)) + 1)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8)) + 2)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8)) + 3)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8 /* ptr */)) += uintptr(4)
goto __231
__230:
*(*Tuint32_t)(unsafe.Pointer(bp + 16 /* c */)) = *(*Tuint32_t)(unsafe.Pointer(bp + 16))&0x01<<30 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8)))))&0x3f<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8)) + 1)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8)) + 2)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8)) + 3)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8)) + 4)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8 /* ptr */)) += uintptr(5)
__231:
;
__229:
;
__227:
;
__225:
;
__223:
;
// Get character value, increment pointer
__222:
;
escape = 0 // Treat as literal character
__219:
;
switch escape {
case 0:
goto __233
case ESC_b:
goto __234
case ESC_Q:
goto __235
case ESC_E:
goto __236
case ESC_B:
goto __237 // Always an error in a class
case ESC_R:
goto __238
case ESC_X:
goto __239
}
goto __232
__233: // Escaped character code point is in c
char_is_literal = DFALSE
goto CLASS_LITERAL
__234:
*(*Tuint32_t)(unsafe.Pointer(bp + 16 /* c */)) = Tuint32_t('\010') // \b is backspace in a class
char_is_literal = DFALSE
goto CLASS_LITERAL
__235:
inescq = DTRUE // Enter literal mode
goto CLASS_CONTINUE
__236: // Ignore orphan \E
goto CLASS_CONTINUE
__237: // Always an error in a class
__238:
__239:
*(*int32)(unsafe.Pointer(bp + 20 /* errorcode */)) = ERR7
*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8 /* ptr */))--
goto FAILED
__232:
;
// The second part of a range can be a single-character escape
// sequence (detected above), but not any of the other escapes. Perl
// treats a hyphen as a literal in such circumstances. However, in Perl's
// warning mode, a warning is given, so PCRE now faults it, as it is
// almost certainly a mistake on the user's part.
if !(class_range_state == Tuint32_t(1)) {
goto __240
}
*(*int32)(unsafe.Pointer(bp + 20 /* errorcode */)) = ERR50
goto FAILED // Not CLASS_ESCAPE_FAILED; always an error
__240:
;
// Of the remaining escapes, only those that define characters are
// allowed in a class. None may start a range.
class_range_state = RANGE_NO
switch escape {
case ESC_N:
goto __242
case ESC_H:
goto __243
case ESC_h:
goto __244
case ESC_V:
goto __245
case ESC_v:
goto __246
// These escapes are converted to Unicode property tests when
// PCRE2_UCP is set.
case ESC_d:
goto __247
case ESC_D:
goto __248
case ESC_s:
goto __249
case ESC_S:
goto __250
case ESC_w:
goto __251
case ESC_W:
goto __252
// Explicit Unicode property matching
case ESC_P:
goto __253
case ESC_p:
goto __254 // End \P and \p
default:
goto __255
}
goto __241
__242:
*(*int32)(unsafe.Pointer(bp + 20 /* errorcode */)) = ERR71
goto FAILED
__243:
__244:
__245:
__246:
*(*Tuint32_t)(unsafe.Pointer(libc.PostIncUintptr(&parsed_pattern, 4))) = DMETA_ESCAPE + uint32(escape)
goto __241
// These escapes are converted to Unicode property tests when
// PCRE2_UCP is set.
__247:
__248:
__249:
__250:
__251:
__252:
if !(options&DPCRE2_UCP == Tuint32_t(0)) {
goto __256
}
*(*Tuint32_t)(unsafe.Pointer(libc.PostIncUintptr(&parsed_pattern, 4))) = DMETA_ESCAPE + uint32(escape)
goto __257
__256:
*(*Tuint32_t)(unsafe.Pointer(libc.PostIncUintptr(&parsed_pattern, 4))) = DMETA_ESCAPE + func() uint32 {
if escape == ESC_d || escape == ESC_s || escape == ESC_w {
return ESC_p
}
return ESC_P
}()
switch escape {
case ESC_d:
goto __259
case ESC_D:
goto __260
case ESC_s:
goto __261
case ESC_S:
goto __262
case ESC_w:
goto __263
case ESC_W:
goto __264
}
goto __258
__259:
__260:
*(*Tuint32_t)(unsafe.Pointer(libc.PostIncUintptr(&parsed_pattern, 4))) = Tuint32_t(int32(DPT_PC)<<16 | ucp_Nd)
goto __258
__261:
__262:
*(*Tuint32_t)(unsafe.Pointer(libc.PostIncUintptr(&parsed_pattern, 4))) = Tuint32_t(int32(DPT_SPACE) << 16)
goto __258
__263:
__264:
*(*Tuint32_t)(unsafe.Pointer(libc.PostIncUintptr(&parsed_pattern, 4))) = Tuint32_t(int32(DPT_WORD) << 16)
goto __258
__258:
;
__257:
;
goto __241
// Explicit Unicode property matching
__253:
__254:
*(*Tuint16_t)(unsafe.Pointer(bp + 88 /* ptype2 */)) = Tuint16_t(0)
*(*Tuint16_t)(unsafe.Pointer(bp + 90 /* pdata1 */)) = Tuint16_t(0)
if !!(get_ucp(tls, bp+8, bp+84, bp+88, bp+90, bp+20, cb) != 0) {
goto __265
}
goto FAILED
__265:
;
if !(*(*TBOOL)(unsafe.Pointer(bp + 84)) != 0) {
goto __266
}
if escape == ESC_P {
escape = ESC_p
} else {
escape = ESC_P
}
__266:
;
*(*Tuint32_t)(unsafe.Pointer(libc.PostIncUintptr(&parsed_pattern, 4))) = DMETA_ESCAPE + uint32(escape)
*(*Tuint32_t)(unsafe.Pointer(libc.PostIncUintptr(&parsed_pattern, 4))) = Tuint32_t(int32(*(*Tuint16_t)(unsafe.Pointer(bp + 88)))<<16 | int32(*(*Tuint16_t)(unsafe.Pointer(bp + 90))))
goto __241 // End \P and \p
__255: // All others are not allowed in a class
*(*int32)(unsafe.Pointer(bp + 20 /* errorcode */)) = ERR7
*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8 /* ptr */))--
goto FAILED
__241:
;
// Perl gives a warning unless a following hyphen is the last character
// in the class. PCRE throws an error.
if !(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8)) < ptrend-uintptr(1) && int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8))))) == '\055' && int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8)) + 1))) != '\135') {
goto __267
}
*(*int32)(unsafe.Pointer(bp + 20 /* errorcode */)) = ERR50
goto FAILED
__267:
;
__211:
;
__209:
;
__199:
;
// Proceed to next thing in the class.
CLASS_CONTINUE:
if !(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8)) >= ptrend) {
goto __268
}
*(*int32)(unsafe.Pointer(bp + 20 /* errorcode */)) = ERR6 // Missing terminating ']'
goto FAILED
__268:
;
*(*Tuint32_t)(unsafe.Pointer(bp + 16 /* c */)) = Tuint32_t(*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8 /* ptr */)), 1))))
if !(utf != 0 && *(*Tuint32_t)(unsafe.Pointer(bp + 16)) >= 0xc0) {
goto __269
}
if !(*(*Tuint32_t)(unsafe.Pointer(bp + 16))&0x20 == Tuint32_t(0)) {
goto __270
}
*(*Tuint32_t)(unsafe.Pointer(bp + 16 /* c */)) = *(*Tuint32_t)(unsafe.Pointer(bp + 16))&0x1f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8)), 1))))&0x3f
goto __271
__270:
if !(*(*Tuint32_t)(unsafe.Pointer(bp + 16))&0x10 == Tuint32_t(0)) {
goto __272
}
*(*Tuint32_t)(unsafe.Pointer(bp + 16 /* c */)) = *(*Tuint32_t)(unsafe.Pointer(bp + 16))&0x0f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8)))))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8)) + 1)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8 /* ptr */)) += uintptr(2)
goto __273
__272:
if !(*(*Tuint32_t)(unsafe.Pointer(bp + 16))&0x08 == Tuint32_t(0)) {
goto __274
}
*(*Tuint32_t)(unsafe.Pointer(bp + 16 /* c */)) = *(*Tuint32_t)(unsafe.Pointer(bp + 16))&0x07<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8)))))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8)) + 1)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8)) + 2)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8 /* ptr */)) += uintptr(3)
goto __275
__274:
if !(*(*Tuint32_t)(unsafe.Pointer(bp + 16))&0x04 == Tuint32_t(0)) {
goto __276
}
*(*Tuint32_t)(unsafe.Pointer(bp + 16 /* c */)) = *(*Tuint32_t)(unsafe.Pointer(bp + 16))&0x03<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8)))))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8)) + 1)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8)) + 2)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8)) + 3)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8 /* ptr */)) += uintptr(4)
goto __277
__276:
*(*Tuint32_t)(unsafe.Pointer(bp + 16 /* c */)) = *(*Tuint32_t)(unsafe.Pointer(bp + 16))&0x01<<30 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8)))))&0x3f<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8)) + 1)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8)) + 2)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8)) + 3)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8)) + 4)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8 /* ptr */)) += uintptr(5)
__277:
;
__275:
;
__273:
;
__271:
;
__269:
;
if !(*(*Tuint32_t)(unsafe.Pointer(bp + 16)) == Tuint32_t('\135') && !(inescq != 0)) {
goto __278
}
goto __194
__278:
;
goto __193
__193:
goto __192
goto __194
__194:
; // End of class-processing loop
// -] at the end of a class is a literal '-'
if !(class_range_state == Tuint32_t(1)) {
goto __279
}
*(*Tuint32_t)(unsafe.Pointer(parsed_pattern + libc.UintptrFromInt32(-1)*4)) = Tuint32_t('\055')
class_range_state = RANGE_NO
__279:
;
*(*Tuint32_t)(unsafe.Pointer(libc.PostIncUintptr(&parsed_pattern, 4))) = DMETA_CLASS_END
goto __84 // End of character class
// ---- Opening parenthesis ----
__95:
if !(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8)) >= ptrend) {
goto __280
}
goto UNCLOSED_PARENTHESIS
__280:
;
// If ( is not followed by ? it is either a capture or a special verb or an
// alpha assertion or a positive non-atomic lookahead.
if !(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8))))) != '\077') {
goto __281
}
// Handle capturing brackets (or non-capturing if auto-capture is turned
// off).
if !(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8))))) != '\052') {
goto __282
}
nest_depth++
if !(options&DPCRE2_NO_AUTO_CAPTURE == Tuint32_t(0)) {
goto __284
}
if !((*Tcompile_block_8)(unsafe.Pointer(cb)).Fbracount >= DMAX_GROUP_NUMBER) {
goto __286
}
*(*int32)(unsafe.Pointer(bp + 20 /* errorcode */)) = ERR97
goto FAILED
__286:
;
(*Tcompile_block_8)(unsafe.Pointer(cb)).Fbracount++
*(*Tuint32_t)(unsafe.Pointer(libc.PostIncUintptr(&parsed_pattern, 4))) = DMETA_CAPTURE | (*Tcompile_block_8)(unsafe.Pointer(cb)).Fbracount
goto __285
__284:
*(*Tuint32_t)(unsafe.Pointer(libc.PostIncUintptr(&parsed_pattern, 4))) = DMETA_NOCAPTURE
__285:
;
goto __283
__282:
if !((int64(ptrend)-int64(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8))))/1 <= int64(1) || libc.AssignPtrUint32(bp+16, Tuint32_t(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8)) + 1)))) == Tuint32_t('\051')) {
goto __287
}
goto __84
goto __288
__287:
if !(*(*Tuint32_t)(unsafe.Pointer(bp + 16)) <= 255 && int32(*(*Tuint8_t)(unsafe.Pointer((*Tcompile_block_8)(unsafe.Pointer(cb)).Fctypes + uintptr(*(*Tuint32_t)(unsafe.Pointer(bp + 16))))))&Dctype_lcletter != 0) {
goto __289
}
vn = uintptr(unsafe.Pointer(&alasnames))
if !!(read_name(tls, bp+8, ptrend, utf, uint32(0), bp+56, bp+64, bp+72,
bp+20, cb) != 0) {
goto __291
}
goto FAILED
__291:
;
if !(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8)) >= ptrend || int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8))))) != '\072') {
goto __292
}
*(*int32)(unsafe.Pointer(bp + 20 /* errorcode */)) = ERR95 // Malformed
goto FAILED
__292:
;
// Scan the table of alpha assertion names
*(*int32)(unsafe.Pointer(bp + 48 /* i */)) = 0
__293:
if !(*(*int32)(unsafe.Pointer(bp + 48)) < alascount) {
goto __295
}
if !(*(*Tuint32_t)(unsafe.Pointer(bp + 72)) == alasmeta[*(*int32)(unsafe.Pointer(bp + 48))].Flen && X_pcre2_strncmp_c8_8(tls, *(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 64)), vn, uint64(*(*Tuint32_t)(unsafe.Pointer(bp + 72)))) == 0) {
goto __296
}
goto __295
__296:
;
vn += uintptr(alasmeta[*(*int32)(unsafe.Pointer(bp + 48))].Flen + uint32(1))
goto __294
__294:
*(*int32)(unsafe.Pointer(bp + 48 /* i */))++
goto __293
goto __295
__295:
;
if !(*(*int32)(unsafe.Pointer(bp + 48)) >= alascount) {
goto __297
}
*(*int32)(unsafe.Pointer(bp + 20 /* errorcode */)) = ERR95 // Alpha assertion not recognized
goto FAILED
__297:
;
// Check for expecting an assertion condition. If so, only atomic
// lookaround assertions are valid.
meta = alasmeta[*(*int32)(unsafe.Pointer(bp + 48 /* i */))].Fmeta
if !(prev_expect_cond_assert > 0 && (meta < DMETA_LOOKAHEAD || meta > DMETA_LOOKBEHINDNOT)) {
goto __298
}
if meta == DMETA_LOOKAHEAD_NA || meta == DMETA_LOOKBEHIND_NA {
*(*int32)(unsafe.Pointer(bp + 20 /* errorcode */)) = ERR98
} else {
*(*int32)(unsafe.Pointer(bp + 20 /* errorcode */)) = ERR28
} // (Atomic) assertion expected
goto FAILED
__298:
;
// The lookaround alphabetic synonyms can mostly be handled by jumping
// to the code that handles the traditional symbolic forms.
switch meta {
default:
goto __300 // the meta values come from a table above.
case DMETA_ATOMIC:
goto __301
case DMETA_LOOKAHEAD:
goto __302
case DMETA_LOOKAHEAD_NA:
goto __303
case DMETA_LOOKAHEADNOT:
goto __304
case DMETA_LOOKBEHIND:
goto __305
case DMETA_LOOKBEHINDNOT:
goto __306
case DMETA_LOOKBEHIND_NA:
goto __307
// The script run facilities are handled here. Unicode support is
// required (give an error if not, as this is a security issue). Always
// record a META_SCRIPT_RUN item. Then, for the atomic version, insert
// META_ATOMIC and remember that we need two META_KETs at the end.
case DMETA_SCRIPT_RUN:
goto __308
case DMETA_ATOMIC_SCRIPT_RUN:
goto __309
}
goto __299
__300:
*(*int32)(unsafe.Pointer(bp + 20 /* errorcode */)) = ERR89 // Unknown code; should never occur because
goto FAILED // the meta values come from a table above.
__301:
goto ATOMIC_GROUP
__302:
goto POSITIVE_LOOK_AHEAD
__303:
goto POSITIVE_NONATOMIC_LOOK_AHEAD
__304:
goto NEGATIVE_LOOK_AHEAD
__305:
__306:
__307:
*(*Tuint32_t)(unsafe.Pointer(libc.PostIncUintptr(&parsed_pattern, 4))) = meta
*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8 /* ptr */))--
goto POST_LOOKBEHIND
// The script run facilities are handled here. Unicode support is
// required (give an error if not, as this is a security issue). Always
// record a META_SCRIPT_RUN item. Then, for the atomic version, insert
// META_ATOMIC and remember that we need two META_KETs at the end.
__308:
__309:
*(*Tuint32_t)(unsafe.Pointer(libc.PostIncUintptr(&parsed_pattern, 4))) = DMETA_SCRIPT_RUN
nest_depth++
*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8 /* ptr */))++
if !(meta == DMETA_ATOMIC_SCRIPT_RUN) {
goto __310
}
*(*Tuint32_t)(unsafe.Pointer(libc.PostIncUintptr(&parsed_pattern, 4))) = DMETA_ATOMIC
if !(top_nest == uintptr(0)) {
goto __311
}
top_nest = (*Tcompile_block_8)(unsafe.Pointer(cb)).Fstart_workspace
goto __312
__311:
if !(libc.PreIncUintptr(&top_nest, 12) >= end_nests) {
goto __313
}
*(*int32)(unsafe.Pointer(bp + 20 /* errorcode */)) = ERR84
goto FAILED
__313:
;
__312:
;
(*Tnest_save)(unsafe.Pointer(top_nest)).Fnest_depth = nest_depth
(*Tnest_save)(unsafe.Pointer(top_nest)).Fflags = uint16(DNSF_ATOMICSR)
(*Tnest_save)(unsafe.Pointer(top_nest)).Foptions = options & (DPCRE2_CASELESS | DPCRE2_DOTALL | DPCRE2_DUPNAMES | DPCRE2_EXTENDED | DPCRE2_EXTENDED_MORE | DPCRE2_MULTILINE | DPCRE2_NO_AUTO_CAPTURE | DPCRE2_UNGREEDY)
__310:
;
goto __299
__299:
;
goto __290
__289:
vn = uintptr(unsafe.Pointer(&verbnames))
if !!(read_name(tls, bp+8, ptrend, utf, uint32(0), bp+56, bp+64, bp+72,
bp+20, cb) != 0) {
goto __314
}
goto FAILED
__314:
;
if !(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8)) >= ptrend || int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8))))) != '\072' && int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8))))) != '\051') {
goto __315
}
*(*int32)(unsafe.Pointer(bp + 20 /* errorcode */)) = ERR60 // Malformed
goto FAILED
__315:
;
// Scan the table of verb names
*(*int32)(unsafe.Pointer(bp + 48 /* i */)) = 0
__316:
if !(*(*int32)(unsafe.Pointer(bp + 48)) < verbcount) {
goto __318
}
if !(*(*Tuint32_t)(unsafe.Pointer(bp + 72)) == verbs[*(*int32)(unsafe.Pointer(bp + 48))].Flen && X_pcre2_strncmp_c8_8(tls, *(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 64)), vn, uint64(*(*Tuint32_t)(unsafe.Pointer(bp + 72)))) == 0) {
goto __319
}
goto __318
__319:
;
vn += uintptr(verbs[*(*int32)(unsafe.Pointer(bp + 48))].Flen + uint32(1))
goto __317
__317:
*(*int32)(unsafe.Pointer(bp + 48 /* i */))++
goto __316
goto __318
__318:
;
if !(*(*int32)(unsafe.Pointer(bp + 48)) >= verbcount) {
goto __320
}
*(*int32)(unsafe.Pointer(bp + 20 /* errorcode */)) = ERR60 // Verb not recognized
goto FAILED
__320:
;
// An empty argument is treated as no argument.
if !(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8))))) == '\072' && *(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8))+uintptr(1) < ptrend && int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8)) + 1))) == '\051') {
goto __321
}
*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8 /* ptr */))++
__321:
; // Advance to the closing parens
// Check for mandatory non-empty argument; this is (*MARK)
if !(verbs[*(*int32)(unsafe.Pointer(bp + 48))].Fhas_arg > 0 && int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8))))) != '\072') {
goto __322
}
*(*int32)(unsafe.Pointer(bp + 20 /* errorcode */)) = ERR66
goto FAILED
__322:
;
// Remember where this verb, possibly with a preceding (*MARK), starts,
// for handling quantified (*ACCEPT).
verbstartptr = parsed_pattern
okquantifier = libc.Bool32(verbs[*(*int32)(unsafe.Pointer(bp + 48))].Fmeta == DMETA_ACCEPT)
// It appears that Perl allows any characters whatsoever, other than a
// closing parenthesis, to appear in arguments ("names"), so we no longer
// insist on letters, digits, and underscores. Perl does not, however, do
// any interpretation within arguments, and has no means of including a
// closing parenthesis. PCRE supports escape processing but only when it
// is requested by an option. We set inverbname TRUE here, and let the
// main loop take care of this so that escape and \x processing is done by
// the main code above.
if !(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8)), 1)))) == '\072') {
goto __323
} /* Skip past : or ) */
// Some optional arguments can be treated as a preceding (*MARK)
if !(verbs[*(*int32)(unsafe.Pointer(bp + 48))].Fhas_arg < 0) {
goto __325
}
add_after_mark = verbs[*(*int32)(unsafe.Pointer(bp + 48 /* i */))].Fmeta
*(*Tuint32_t)(unsafe.Pointer(libc.PostIncUintptr(&parsed_pattern, 4))) = DMETA_MARK
goto __326
__325:
*(*Tuint32_t)(unsafe.Pointer(libc.PostIncUintptr(&parsed_pattern, 4))) = verbs[*(*int32)(unsafe.Pointer(bp + 48))].Fmeta + func() uint32 {
if verbs[*(*int32)(unsafe.Pointer(bp + 48))].Fmeta != DMETA_MARK {
return 0x00010000
}
return uint32(0)
}()
__326:
;
// Set up for reading the name in the main loop.
verblengthptr = libc.PostIncUintptr(&parsed_pattern, 4)
verbnamestart = *(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8 /* ptr */))
inverbname = DTRUE
goto __324
__323: /* No verb "name" argument */
*(*Tuint32_t)(unsafe.Pointer(libc.PostIncUintptr(&parsed_pattern, 4))) = verbs[*(*int32)(unsafe.Pointer(bp + 48 /* i */))].Fmeta
__324:
;
__290:
;
__288:
;
__283:
; // End of (*VERB) handling
goto __84 // Done with this parenthesis
__281:
; // End of groups that don't start with (?
// ---- Items starting (? ----
// The type of item is determined by what follows (?. Handle (?| and option
// changes under "default" because both need a new block on the nest stack.
// Comments starting with (?# are handled above. Note that there is some
// ambiguity about the sequence (?- because if a digit follows it's a relative
// recursion or subroutine call whereas otherwise it's an option unsetting.
if !(libc.PreIncUintptr(&*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8)), 1) >= ptrend) {
goto __327
}
goto UNCLOSED_PARENTHESIS
__327:
;
switch int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8 /* ptr */))))) {
default:
goto __329 // End default case after (?
// ---- Python syntax support ----
case '\120':
goto __330 // End of (?P processing
// ---- Recursion/subroutine calls by number ----
case '\122':
goto __331
// An item starting (?- followed by a digit comes here via the "default"
// case because (?- followed by a non-digit is an options setting.
case '\053':
goto __332
// Fall through
case '\060':
goto __333
case '\061':
goto __334
case '\062':
goto __335
case '\063':
goto __336
case '\064':
goto __337
case '\065':
goto __338
case '\066':
goto __339
case '\067':
goto __340
case '\070':
goto __341
case '\071':
goto __342 // End of recursive call by number handling
// ---- Recursion/subroutine calls by name ----
case '\046':
goto __343
// ---- Callout with numerical or string argument ----
case '\103':
goto __344 // End callout
// ---- Conditional group ----
// A condition can be an assertion, a number (referring to a numbered
// group's having been set), a name (referring to a named group), or 'R',
// referring to overall recursion. R<digits> and R&name are also permitted
// for recursion state tests. Numbers may be preceded by + or - to specify a
// relative group number.
//
// There are several syntaxes for testing a named group: (?(name)) is used
// by Python; Perl 5.10 onwards uses (?(<name>) or (?('name')).
//
// There are two unfortunate ambiguities. 'R' can be the recursive thing or
// the name 'R' (and similarly for 'R' followed by digits). 'DEFINE' can be
// the Perl DEFINE feature or the Python named test. We look for a name
// first; if not found, we try the other case.
//
// For compatibility with auto-callouts, we allow a callout to be specified
// before a condition that is an assertion.
case '\050':
goto __345 // End of condition processing
// ---- Atomic group ----
case '\076':
goto __346
// ---- Lookahead assertions ----
case '\075':
goto __347
case '\052':
goto __348
case '\041':
goto __349
// ---- Lookbehind assertions ----
// (?< followed by = or ! or * is a lookbehind assertion. Otherwise (?<
// is the start of the name of a capturing group.
case '\074':
goto __350
// ---- Define a named group ----
// A named group may be defined as (?'name') or (?<name>). In the latter
// case we jump to DEFINE_NAME from the disambiguation of (?< above with the
// terminator set to '>'.
case '\047':
goto __351
}
goto __328
__329:
if !(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8))))) == '\055' && (int64(ptrend)-int64(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8))))/1 > int64(1) && (int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8)) + 1))) >= '\060' && int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8)) + 1))) <= '\071')) {
goto __352
}
goto RECURSION_BYNUMBER
__352:
; // The + case is handled by CHAR_PLUS
// We now have either (?| or a (possibly empty) option setting,
// optionally followed by a non-capturing group.
nest_depth++
if !(top_nest == uintptr(0)) {
goto __353
}
top_nest = (*Tcompile_block_8)(unsafe.Pointer(cb)).Fstart_workspace
goto __354
__353:
if !(libc.PreIncUintptr(&top_nest, 12) >= end_nests) {
goto __355
}
*(*int32)(unsafe.Pointer(bp + 20 /* errorcode */)) = ERR84
goto FAILED
__355:
;
__354:
;
(*Tnest_save)(unsafe.Pointer(top_nest)).Fnest_depth = nest_depth
(*Tnest_save)(unsafe.Pointer(top_nest)).Fflags = Tuint16_t(0)
(*Tnest_save)(unsafe.Pointer(top_nest)).Foptions = options & (DPCRE2_CASELESS | DPCRE2_DOTALL | DPCRE2_DUPNAMES | DPCRE2_EXTENDED | DPCRE2_EXTENDED_MORE | DPCRE2_MULTILINE | DPCRE2_NO_AUTO_CAPTURE | DPCRE2_UNGREEDY)
// Start of non-capturing group that resets the capture count for each
// branch.
if !(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8))))) == '\174') {
goto __356
}
(*Tnest_save)(unsafe.Pointer(top_nest)).Freset_group = Tuint16_t((*Tcompile_block_8)(unsafe.Pointer(cb)).Fbracount)
(*Tnest_save)(unsafe.Pointer(top_nest)).Fmax_group = Tuint16_t((*Tcompile_block_8)(unsafe.Pointer(cb)).Fbracount)
*(*Tuint16_t)(unsafe.Pointer(top_nest + 6)) |= uint16(DNSF_RESET)
*(*Tuint32_t)(unsafe.Pointer(cb + 208)) |= Tuint32_t(DPCRE2_DUPCAPUSED)
*(*Tuint32_t)(unsafe.Pointer(libc.PostIncUintptr(&parsed_pattern, 4))) = DMETA_NOCAPTURE
*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8 /* ptr */))++
goto __357
__356:
hyphenok = DTRUE
oldoptions = options
(*Tnest_save)(unsafe.Pointer(top_nest)).Freset_group = Tuint16_t(0)
(*Tnest_save)(unsafe.Pointer(top_nest)).Fmax_group = Tuint16_t(0)
*(*Tuint32_t)(unsafe.Pointer(bp + 92 /* set */)) = libc.AssignPtrUint32(bp+96 /* unset */, Tuint32_t(0))
optset = bp + 92 /* &set */
// ^ at the start unsets imnsx and disables the subsequent use of -
if !(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8)) < ptrend && int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8))))) == '\136') {
goto __358
}
options = options & libc.CplUint32(DPCRE2_CASELESS|DPCRE2_MULTILINE|DPCRE2_NO_AUTO_CAPTURE|DPCRE2_DOTALL|DPCRE2_EXTENDED|DPCRE2_EXTENDED_MORE)
hyphenok = DFALSE
*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8 /* ptr */))++
__358:
;
__359:
if !(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8)) < ptrend && int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8))))) != '\051' && int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8))))) != '\072') {
goto __360
}
switch int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8 /* ptr */)), 1)))) {
case '\055':
goto __362
case '\112':
goto __363
case '\151':
goto __364
case '\155':
goto __365
case '\156':
goto __366
case '\163':
goto __367
case '\125':
goto __368
// If x appears twice it sets the extended extended option.
case '\170':
goto __369
default:
goto __370
}
goto __361
__362:
if !!(hyphenok != 0) {
goto __371
}
*(*int32)(unsafe.Pointer(bp + 20 /* errorcode */)) = ERR94
*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8 /* ptr */))-- // Correct the offset
goto FAILED
__371:
;
optset = bp + 96 /* &unset */
hyphenok = DFALSE
goto __361
__363: // Record that it changed in the external options
*(*Tuint32_t)(unsafe.Pointer(optset)) |= DPCRE2_DUPNAMES
*(*Tuint32_t)(unsafe.Pointer(cb + 208)) |= Tuint32_t(DPCRE2_JCHANGED)
goto __361
__364:
*(*Tuint32_t)(unsafe.Pointer(optset)) |= DPCRE2_CASELESS
goto __361
__365:
*(*Tuint32_t)(unsafe.Pointer(optset)) |= DPCRE2_MULTILINE
goto __361
__366:
*(*Tuint32_t)(unsafe.Pointer(optset)) |= DPCRE2_NO_AUTO_CAPTURE
goto __361
__367:
*(*Tuint32_t)(unsafe.Pointer(optset)) |= DPCRE2_DOTALL
goto __361
__368:
*(*Tuint32_t)(unsafe.Pointer(optset)) |= DPCRE2_UNGREEDY
goto __361
// If x appears twice it sets the extended extended option.
__369:
*(*Tuint32_t)(unsafe.Pointer(optset)) |= DPCRE2_EXTENDED
if !(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8)) < ptrend && int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8))))) == '\170') {
goto __372
}
*(*Tuint32_t)(unsafe.Pointer(optset)) |= DPCRE2_EXTENDED_MORE
*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8 /* ptr */))++
__372:
;
goto __361
__370:
*(*int32)(unsafe.Pointer(bp + 20 /* errorcode */)) = ERR11
*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8 /* ptr */))-- // Correct the offset
goto FAILED
__361:
;
goto __359
__360:
;
// If we are setting extended without extended-more, ensure that any
// existing extended-more gets unset. Also, unsetting extended must also
// unset extended-more.
if !(*(*Tuint32_t)(unsafe.Pointer(bp + 92))&(DPCRE2_EXTENDED|DPCRE2_EXTENDED_MORE) == DPCRE2_EXTENDED || *(*Tuint32_t)(unsafe.Pointer(bp + 96))&DPCRE2_EXTENDED != Tuint32_t(0)) {
goto __373
}
*(*Tuint32_t)(unsafe.Pointer(bp + 96 /* unset */)) |= DPCRE2_EXTENDED_MORE
__373:
;
options = (options | *(*Tuint32_t)(unsafe.Pointer(bp + 92))) & ^*(*Tuint32_t)(unsafe.Pointer(bp + 96))
// If the options ended with ')' this is not the start of a nested
// group with option changes, so the options change at this level.
// In this case, if the previous level set up a nest block, discard the
// one we have just created. Otherwise adjust it for the previous level.
// If the options ended with ':' we are starting a non-capturing group,
// possibly with an options setting.
if !(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8)) >= ptrend) {
goto __374
}
goto UNCLOSED_PARENTHESIS
__374:
;
if !(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8)), 1)))) == '\051') {
goto __375
}
nest_depth-- // This is not a nested group after all.
if !(top_nest > (*Tcompile_block_8)(unsafe.Pointer(cb)).Fstart_workspace && int32((*Tnest_save)(unsafe.Pointer(top_nest-uintptr(1)*12)).Fnest_depth) == int32(nest_depth)) {
goto __377
}
top_nest -= 12
goto __378
__377:
(*Tnest_save)(unsafe.Pointer(top_nest)).Fnest_depth = nest_depth
__378:
;
goto __376
__375:
*(*Tuint32_t)(unsafe.Pointer(libc.PostIncUintptr(&parsed_pattern, 4))) = DMETA_NOCAPTURE
__376:
;
// If nothing changed, no need to record.
if !(options != oldoptions) {
goto __379
}
*(*Tuint32_t)(unsafe.Pointer(libc.PostIncUintptr(&parsed_pattern, 4))) = DMETA_OPTIONS
*(*Tuint32_t)(unsafe.Pointer(libc.PostIncUintptr(&parsed_pattern, 4))) = options
__379:
;
__357:
; // End options processing
goto __328 // End default case after (?
// ---- Python syntax support ----
__330:
if !(libc.PreIncUintptr(&*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8)), 1) >= ptrend) {
goto __380
}
goto UNCLOSED_PARENTHESIS
__380:
;
// (?P<name> is the same as (?<name>, which defines a named group.
if !(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8))))) == '\074') {
goto __381
}
terminator = Tuint32_t('\076')
goto DEFINE_NAME
__381:
;
// (?P>name) is the same as (?&name), which is a recursion or subroutine
// call.
if !(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8))))) == '\076') {
goto __382
}
goto RECURSE_BY_NAME
__382:
;
// (?P=name) is the same as \k<name>, a back reference by name. Anything
// else after (?P is an error.
if !(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8))))) != '\075') {
goto __383
}
*(*int32)(unsafe.Pointer(bp + 20 /* errorcode */)) = ERR41
goto FAILED
__383:
;
if !!(read_name(tls, bp+8, ptrend, utf, uint32('\051'), bp+56, bp+64,
bp+72, bp+20, cb) != 0) {
goto __384
}
goto FAILED
__384:
;
*(*Tuint32_t)(unsafe.Pointer(libc.PostIncUintptr(&parsed_pattern, 4))) = DMETA_BACKREF_BYNAME
*(*Tuint32_t)(unsafe.Pointer(libc.PostIncUintptr(&parsed_pattern, 4))) = *(*Tuint32_t)(unsafe.Pointer(bp + 72 /* namelen */))
*(*Tuint32_t)(unsafe.Pointer(libc.PostIncUintptr(&parsed_pattern, 4))) = Tuint32_t(*(*Tsize_t)(unsafe.Pointer(bp + 56)) >> 32)
*(*Tuint32_t)(unsafe.Pointer(libc.PostIncUintptr(&parsed_pattern, 4))) = Tuint32_t(*(*Tsize_t)(unsafe.Pointer(bp + 56)) & uint64(0xffffffff))
okquantifier = DTRUE
goto __328 // End of (?P processing
// ---- Recursion/subroutine calls by number ----
__331:
*(*int32)(unsafe.Pointer(bp + 48 /* i */)) = 0 // (?R) == (?R0)
*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8 /* ptr */))++
if !(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8)) >= ptrend || int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8))))) != '\051') {
goto __385
}
*(*int32)(unsafe.Pointer(bp + 20 /* errorcode */)) = ERR58
goto FAILED
__385:
;
goto SET_RECURSION
// An item starting (?- followed by a digit comes here via the "default"
// case because (?- followed by a non-digit is an options setting.
__332:
if !((int64(ptrend)-int64(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8))))/1 < int64(2) || !(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8)) + 1))) >= '\060' && int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8)) + 1))) <= '\071')) {
goto __386
}
*(*int32)(unsafe.Pointer(bp + 20 /* errorcode */)) = ERR29 // Missing number
goto FAILED
__386:
;
// Fall through
__333:
__334:
__335:
__336:
__337:
__338:
__339:
__340:
__341:
__342:
RECURSION_BYNUMBER:
if !!(read_number(tls, bp+8, ptrend,
func() int32 {
if int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8))))) >= '\060' && int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8))))) <= '\071' {
return -1
}
return int32((*Tcompile_block_8)(unsafe.Pointer(cb)).Fbracount)
}(),
DMAX_GROUP_NUMBER, ERR61,
bp+48, bp+20) != 0) {
goto __387
}
goto FAILED
__387:
;
if !(*(*int32)(unsafe.Pointer(bp + 48)) < 0) {
goto __388
} /* NB (?0) is permitted */
*(*int32)(unsafe.Pointer(bp + 20 /* errorcode */)) = ERR15 // Unknown group
goto FAILED_BACK
__388:
;
if !(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8)) >= ptrend || int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8))))) != '\051') {
goto __389
}
goto UNCLOSED_PARENTHESIS
__389:
;
SET_RECURSION:
*(*Tuint32_t)(unsafe.Pointer(libc.PostIncUintptr(&parsed_pattern, 4))) = DMETA_RECURSE | Tuint32_t(*(*int32)(unsafe.Pointer(bp + 48)))
*(*Tsize_t)(unsafe.Pointer(bp + 56 /* offset */)) = Tsize_t((int64(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8))) - int64((*Tcompile_block_8)(unsafe.Pointer(cb)).Fstart_pattern)) / 1)
*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8 /* ptr */))++
*(*Tuint32_t)(unsafe.Pointer(libc.PostIncUintptr(&parsed_pattern, 4))) = Tuint32_t(*(*Tsize_t)(unsafe.Pointer(bp + 56)) >> 32)
*(*Tuint32_t)(unsafe.Pointer(libc.PostIncUintptr(&parsed_pattern, 4))) = Tuint32_t(*(*Tsize_t)(unsafe.Pointer(bp + 56)) & uint64(0xffffffff))
okquantifier = DTRUE
goto __328 // End of recursive call by number handling
// ---- Recursion/subroutine calls by name ----
__343:
RECURSE_BY_NAME:
if !!(read_name(tls, bp+8, ptrend, utf, uint32('\051'), bp+56, bp+64,
bp+72, bp+20, cb) != 0) {
goto __390
}
goto FAILED
__390:
;
*(*Tuint32_t)(unsafe.Pointer(libc.PostIncUintptr(&parsed_pattern, 4))) = DMETA_RECURSE_BYNAME
*(*Tuint32_t)(unsafe.Pointer(libc.PostIncUintptr(&parsed_pattern, 4))) = *(*Tuint32_t)(unsafe.Pointer(bp + 72 /* namelen */))
*(*Tuint32_t)(unsafe.Pointer(libc.PostIncUintptr(&parsed_pattern, 4))) = Tuint32_t(*(*Tsize_t)(unsafe.Pointer(bp + 56)) >> 32)
*(*Tuint32_t)(unsafe.Pointer(libc.PostIncUintptr(&parsed_pattern, 4))) = Tuint32_t(*(*Tsize_t)(unsafe.Pointer(bp + 56)) & uint64(0xffffffff))
okquantifier = DTRUE
goto __328
// ---- Callout with numerical or string argument ----
__344:
if !(libc.PreIncUintptr(&*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8)), 1) >= ptrend) {
goto __391
}
goto UNCLOSED_PARENTHESIS
__391:
;
// If the previous item was a condition starting (?(? an assertion,
// optionally preceded by a callout, is expected. This is checked later on,
// during actual compilation. However we need to identify this kind of
// assertion in this pass because it must not be qualified. The value of
// expect_cond_assert is set to 2 after (?(? is processed. We decrement it
// for a callout - still leaving a positive value that identifies the
// assertion. Multiple callouts or any other items will make it zero or
// less, which doesn't matter because they will cause an error later.
expect_cond_assert = prev_expect_cond_assert - 1
// If previous_callout is not NULL, it means this follows a previous
// callout. If it was a manual callout, do nothing; this means its "length
// of next pattern item" field will remain zero. If it was an automatic
// callout, abolish it.
if !(*(*uintptr)(unsafe.Pointer(bp)) != uintptr(0) && options&DPCRE2_AUTO_CALLOUT != Tuint32_t(0) && *(*uintptr)(unsafe.Pointer(bp)) == parsed_pattern-uintptr(4)*4 && *(*Tuint32_t)(unsafe.Pointer(parsed_pattern + libc.UintptrFromInt32(-1)*4)) == Tuint32_t(255)) {
goto __392
}
parsed_pattern = *(*uintptr)(unsafe.Pointer(bp /* previous_callout */))
__392:
;
// Save for updating next pattern item length, and skip one item before
// completing.
*(*uintptr)(unsafe.Pointer(bp /* previous_callout */)) = parsed_pattern
after_manual_callout = 1
// Handle a string argument; specific delimiter is required.
if !(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8))))) != '\051' && !(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8))))) >= '\060' && int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8))))) <= '\071')) {
goto __393
}
startptr = *(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8 /* ptr */))
delimiter = Tuint32_t(0)
*(*int32)(unsafe.Pointer(bp + 48 /* i */)) = 0
__395:
if !(X_pcre2_callout_start_delims_8[*(*int32)(unsafe.Pointer(bp + 48))] != Tuint32_t(0)) {
goto __397
}
if !(Tuint32_t(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8))))) == X_pcre2_callout_start_delims_8[*(*int32)(unsafe.Pointer(bp + 48))]) {
goto __398
}
delimiter = X_pcre2_callout_end_delims_8[*(*int32)(unsafe.Pointer(bp + 48 /* i */))]
goto __397
__398:
;
goto __396
__396:
*(*int32)(unsafe.Pointer(bp + 48 /* i */))++
goto __395
goto __397
__397:
;
if !(delimiter == Tuint32_t(0)) {
goto __399
}
*(*int32)(unsafe.Pointer(bp + 20 /* errorcode */)) = ERR82
goto FAILED
__399:
;
*(*Tuint32_t)(unsafe.Pointer(parsed_pattern)) = DMETA_CALLOUT_STRING
parsed_pattern += 4 * uintptr(3) // Skip pattern info
__400:
if !(libc.PreIncUintptr(&*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8)), 1) >= ptrend) {
goto __403
}
*(*int32)(unsafe.Pointer(bp + 20 /* errorcode */)) = ERR81
*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8 /* ptr */)) = startptr // To give a more useful message
goto FAILED
__403:
;
if !(Tuint32_t(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8))))) == delimiter && (libc.PreIncUintptr(&*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8)), 1) >= ptrend || Tuint32_t(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8))))) != delimiter)) {
goto __404
}
goto __402
__404:
;
goto __401
__401:
goto __400
goto __402
__402:
;
calloutlength = Tsize_t((int64(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8))) - int64(startptr)) / 1)
if !(calloutlength > uint64(4294967295)) {
goto __405
}
*(*int32)(unsafe.Pointer(bp + 20 /* errorcode */)) = ERR72
goto FAILED
__405:
;
*(*Tuint32_t)(unsafe.Pointer(libc.PostIncUintptr(&parsed_pattern, 4))) = Tuint32_t(calloutlength)
*(*Tsize_t)(unsafe.Pointer(bp + 56 /* offset */)) = Tsize_t((int64(startptr) - int64((*Tcompile_block_8)(unsafe.Pointer(cb)).Fstart_pattern)) / 1)
*(*Tuint32_t)(unsafe.Pointer(libc.PostIncUintptr(&parsed_pattern, 4))) = Tuint32_t(*(*Tsize_t)(unsafe.Pointer(bp + 56)) >> 32)
*(*Tuint32_t)(unsafe.Pointer(libc.PostIncUintptr(&parsed_pattern, 4))) = Tuint32_t(*(*Tsize_t)(unsafe.Pointer(bp + 56)) & uint64(0xffffffff))
goto __394
__393:
n = 0
*(*Tuint32_t)(unsafe.Pointer(parsed_pattern)) = DMETA_CALLOUT_NUMBER // Numerical callout
parsed_pattern += 4 * uintptr(3) // Skip pattern info
__406:
if !(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8)) < ptrend && (int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8))))) >= '\060' && int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8))))) <= '\071')) {
goto __407
}
n = n*10 + int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8)), 1)))) - '\060'
if !(n > 255) {
goto __408
}
*(*int32)(unsafe.Pointer(bp + 20 /* errorcode */)) = ERR38
goto FAILED
__408:
;
goto __406
__407:
;
*(*Tuint32_t)(unsafe.Pointer(libc.PostIncUintptr(&parsed_pattern, 4))) = Tuint32_t(n)
__394:
;
// Both formats must have a closing parenthesis
if !(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8)) >= ptrend || int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8))))) != '\051') {
goto __409
}
*(*int32)(unsafe.Pointer(bp + 20 /* errorcode */)) = ERR39
goto FAILED
__409:
;
*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8 /* ptr */))++
// Remember the offset to the next item in the pattern, and set a default
// length. This should get updated after the next item is read.
*(*Tuint32_t)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp /* previous_callout */)) + 1*4)) = Tuint32_t((int64(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8))) - int64((*Tcompile_block_8)(unsafe.Pointer(cb)).Fstart_pattern)) / 1)
*(*Tuint32_t)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp /* previous_callout */)) + 2*4)) = Tuint32_t(0)
goto __328 // End callout
// ---- Conditional group ----
// A condition can be an assertion, a number (referring to a numbered
// group's having been set), a name (referring to a named group), or 'R',
// referring to overall recursion. R<digits> and R&name are also permitted
// for recursion state tests. Numbers may be preceded by + or - to specify a
// relative group number.
//
// There are several syntaxes for testing a named group: (?(name)) is used
// by Python; Perl 5.10 onwards uses (?(<name>) or (?('name')).
//
// There are two unfortunate ambiguities. 'R' can be the recursive thing or
// the name 'R' (and similarly for 'R' followed by digits). 'DEFINE' can be
// the Perl DEFINE feature or the Python named test. We look for a name
// first; if not found, we try the other case.
//
// For compatibility with auto-callouts, we allow a callout to be specified
// before a condition that is an assertion.
__345:
if !(libc.PreIncUintptr(&*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8)), 1) >= ptrend) {
goto __410
}
goto UNCLOSED_PARENTHESIS
__410:
;
nest_depth++
// If the next character is ? or * there must be an assertion next
// (optionally preceded by a callout). We do not check this here, but
// instead we set expect_cond_assert to 2. If this is still greater than
// zero (callouts decrement it) when the next assertion is read, it will be
// marked as a condition that must not be repeated. A value greater than
// zero also causes checking that an assertion (possibly with callout)
// follows.
if !(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8))))) == '\077' || int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8))))) == '\052') {
goto __411
}
*(*Tuint32_t)(unsafe.Pointer(libc.PostIncUintptr(&parsed_pattern, 4))) = DMETA_COND_ASSERT
*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8 /* ptr */))-- // Pull pointer back to the opening parenthesis.
expect_cond_assert = 2
goto __328 // End of conditional
__411:
;
// Handle (?([+-]number)...
if !(read_number(tls, bp+8, ptrend, int32((*Tcompile_block_8)(unsafe.Pointer(cb)).Fbracount), DMAX_GROUP_NUMBER, ERR61, bp+48,
bp+20) != 0) {
goto __412
}
if !(*(*int32)(unsafe.Pointer(bp + 48)) <= 0) {
goto __414
}
*(*int32)(unsafe.Pointer(bp + 20 /* errorcode */)) = ERR15
goto FAILED
__414:
;
*(*Tuint32_t)(unsafe.Pointer(libc.PostIncUintptr(&parsed_pattern, 4))) = DMETA_COND_NUMBER
*(*Tsize_t)(unsafe.Pointer(bp + 56 /* offset */)) = Tsize_t((int64(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8)))-int64((*Tcompile_block_8)(unsafe.Pointer(cb)).Fstart_pattern))/1 - int64(2))
*(*Tuint32_t)(unsafe.Pointer(libc.PostIncUintptr(&parsed_pattern, 4))) = Tuint32_t(*(*Tsize_t)(unsafe.Pointer(bp + 56)) >> 32)
*(*Tuint32_t)(unsafe.Pointer(libc.PostIncUintptr(&parsed_pattern, 4))) = Tuint32_t(*(*Tsize_t)(unsafe.Pointer(bp + 56)) & uint64(0xffffffff))
*(*Tuint32_t)(unsafe.Pointer(libc.PostIncUintptr(&parsed_pattern, 4))) = Tuint32_t(*(*int32)(unsafe.Pointer(bp + 48 /* i */)))
goto __413
__412:
if !(*(*int32)(unsafe.Pointer(bp + 20)) != 0) {
goto __415
}
goto FAILED
goto __416
__415:
if !((int64(ptrend)-int64(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8))))/1 >= int64(10) && X_pcre2_strncmp_c8_8(tls, *(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8)), ts+615, uint64(7)) == 0 && int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8)) + 7))) != '\051') {
goto __417
}
ge = Tuint32_t(0)
*(*int32)(unsafe.Pointer(bp + 100 /* major */)) = 0
minor = 0
*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8 /* ptr */)) += uintptr(7)
if !(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8))))) == '\076') {
goto __419
}
ge = Tuint32_t(1)
*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8 /* ptr */))++
__419:
;
// NOTE: cannot write IS_DIGIT(*(++ptr)) here because IS_DIGIT
// references its argument twice.
if !(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8))))) != '\075' || func() bool {
*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8))++
return !(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8))))) >= '\060' && int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8))))) <= '\071')
}()) {
goto __420
}
goto BAD_VERSION_CONDITION
__420:
;
if !!(read_number(tls, bp+8, ptrend, -1, uint32(1000), ERR79, bp+100, bp+20) != 0) {
goto __421
}
goto FAILED
__421:
;
if !(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8)) >= ptrend) {
goto __422
}
goto BAD_VERSION_CONDITION
__422:
;
if !(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8))))) == '\056') {
goto __423
}
if !(libc.PreIncUintptr(&*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8)), 1) >= ptrend || !(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8))))) >= '\060' && int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8))))) <= '\071')) {
goto __424
}
goto BAD_VERSION_CONDITION
__424:
;
minor = (int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8)), 1)))) - '\060') * 10
if !(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8)) >= ptrend) {
goto __425
}
goto BAD_VERSION_CONDITION
__425:
;
if !(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8))))) >= '\060' && int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8))))) <= '\071') {
goto __426
}
minor = minor + (int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8)), 1)))) - '\060')
__426:
;
if !(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8)) >= ptrend || int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8))))) != '\051') {
goto __427
}
goto BAD_VERSION_CONDITION
__427:
;
__423:
;
*(*Tuint32_t)(unsafe.Pointer(libc.PostIncUintptr(&parsed_pattern, 4))) = DMETA_COND_VERSION
*(*Tuint32_t)(unsafe.Pointer(libc.PostIncUintptr(&parsed_pattern, 4))) = ge
*(*Tuint32_t)(unsafe.Pointer(libc.PostIncUintptr(&parsed_pattern, 4))) = Tuint32_t(*(*int32)(unsafe.Pointer(bp + 100 /* major */)))
*(*Tuint32_t)(unsafe.Pointer(libc.PostIncUintptr(&parsed_pattern, 4))) = Tuint32_t(minor)
goto __418
__417:
was_r_ampersand = DFALSE
if !(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8))))) == '\122' && (int64(ptrend)-int64(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8))))/1 > int64(1) && int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8)) + 1))) == '\046') {
goto __428
}
terminator = Tuint32_t('\051')
was_r_ampersand = DTRUE
*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8 /* ptr */))++
goto __429
__428:
if !(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8))))) == '\074') {
goto __430
}
terminator = Tuint32_t('\076')
goto __431
__430:
if !(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8))))) == '\047') {
goto __432
}
terminator = Tuint32_t('\047')
goto __433
__432:
terminator = Tuint32_t('\051')
*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8 /* ptr */))-- // Point to char before name
__433:
;
__431:
;
__429:
;
if !!(read_name(tls, bp+8, ptrend, utf, terminator, bp+56, bp+64, bp+72,
bp+20, cb) != 0) {
goto __434
}
goto FAILED
__434:
;
// Handle (?(R&name)
if !(was_r_ampersand != 0) {
goto __435
}
*(*Tuint32_t)(unsafe.Pointer(parsed_pattern)) = DMETA_COND_RNAME
*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8 /* ptr */))-- // Back to closing parens
goto __436
__435:
if !(terminator == Tuint32_t('\051')) {
goto __437
}
if !(*(*Tuint32_t)(unsafe.Pointer(bp + 72)) == Tuint32_t(6) && X_pcre2_strncmp_c8_8(tls, *(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 64)), ts+623, uint64(6)) == 0) {
goto __439
}
*(*Tuint32_t)(unsafe.Pointer(parsed_pattern)) = DMETA_COND_DEFINE
goto __440
__439:
*(*int32)(unsafe.Pointer(bp + 48 /* i */)) = 1
__441:
if !(*(*int32)(unsafe.Pointer(bp + 48)) < int32(*(*Tuint32_t)(unsafe.Pointer(bp + 72)))) {
goto __443
}
if !!(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 64)) + uintptr(*(*int32)(unsafe.Pointer(bp + 48)))))) >= '\060' && int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 64)) + uintptr(*(*int32)(unsafe.Pointer(bp + 48)))))) <= '\071') {
goto __444
}
goto __443
__444:
;
goto __442
__442:
*(*int32)(unsafe.Pointer(bp + 48 /* i */))++
goto __441
goto __443
__443:
;
*(*Tuint32_t)(unsafe.Pointer(parsed_pattern)) = func() uint32 {
if int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 64))))) == '\122' && *(*int32)(unsafe.Pointer(bp + 48)) >= int32(*(*Tuint32_t)(unsafe.Pointer(bp + 72))) {
return DMETA_COND_RNUMBER
}
return DMETA_COND_NAME
}()
__440:
;
*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8 /* ptr */))-- // Back to closing parens
goto __438
__437:
*(*Tuint32_t)(unsafe.Pointer(parsed_pattern)) = DMETA_COND_NAME
__438:
;
__436:
;
// All these cases except DEFINE end with the name length and offset;
// DEFINE just has an offset (for the "too many branches" error).
if !(*(*Tuint32_t)(unsafe.Pointer(libc.PostIncUintptr(&parsed_pattern, 4))) != DMETA_COND_DEFINE) {
goto __445
}
*(*Tuint32_t)(unsafe.Pointer(libc.PostIncUintptr(&parsed_pattern, 4))) = *(*Tuint32_t)(unsafe.Pointer(bp + 72 /* namelen */))
__445:
;
*(*Tuint32_t)(unsafe.Pointer(libc.PostIncUintptr(&parsed_pattern, 4))) = Tuint32_t(*(*Tsize_t)(unsafe.Pointer(bp + 56)) >> 32)
*(*Tuint32_t)(unsafe.Pointer(libc.PostIncUintptr(&parsed_pattern, 4))) = Tuint32_t(*(*Tsize_t)(unsafe.Pointer(bp + 56)) & uint64(0xffffffff))
__418:
;
__416:
;
__413:
; // End cases that read a name
// Check the closing parenthesis of the condition
if !(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8)) >= ptrend || int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8))))) != '\051') {
goto __446
}
*(*int32)(unsafe.Pointer(bp + 20 /* errorcode */)) = ERR24
goto FAILED
__446:
;
*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8 /* ptr */))++
goto __328 // End of condition processing
// ---- Atomic group ----
__346:
ATOMIC_GROUP: // Come from (*atomic:
*(*Tuint32_t)(unsafe.Pointer(libc.PostIncUintptr(&parsed_pattern, 4))) = DMETA_ATOMIC
nest_depth++
*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8 /* ptr */))++
goto __328
// ---- Lookahead assertions ----
__347:
POSITIVE_LOOK_AHEAD: // Come from (*pla:
*(*Tuint32_t)(unsafe.Pointer(libc.PostIncUintptr(&parsed_pattern, 4))) = DMETA_LOOKAHEAD
*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8 /* ptr */))++
goto POST_ASSERTION
__348:
POSITIVE_NONATOMIC_LOOK_AHEAD: // Come from (?*
*(*Tuint32_t)(unsafe.Pointer(libc.PostIncUintptr(&parsed_pattern, 4))) = DMETA_LOOKAHEAD_NA
*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8 /* ptr */))++
goto POST_ASSERTION
__349:
NEGATIVE_LOOK_AHEAD: // Come from (*nla:
*(*Tuint32_t)(unsafe.Pointer(libc.PostIncUintptr(&parsed_pattern, 4))) = DMETA_LOOKAHEADNOT
*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8 /* ptr */))++
goto POST_ASSERTION
// ---- Lookbehind assertions ----
// (?< followed by = or ! or * is a lookbehind assertion. Otherwise (?<
// is the start of the name of a capturing group.
__350:
if !((int64(ptrend)-int64(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8))))/1 <= int64(1) || int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8)) + 1))) != '\075' && int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8)) + 1))) != '\041' && int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8)) + 1))) != '\052') {
goto __447
}
terminator = Tuint32_t('\076')
goto DEFINE_NAME
__447:
;
*(*Tuint32_t)(unsafe.Pointer(libc.PostIncUintptr(&parsed_pattern, 4))) = func() uint32 {
if int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8)) + 1))) == '\075' {
return DMETA_LOOKBEHIND
}
return func() uint32 {
if int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8)) + 1))) == '\041' {
return DMETA_LOOKBEHINDNOT
}
return DMETA_LOOKBEHIND_NA
}()
}()
POST_LOOKBEHIND: // Come from (*plb: (*naplb: and (*nlb:
*(*TBOOL)(unsafe.Pointer(has_lookbehind)) = DTRUE
*(*Tsize_t)(unsafe.Pointer(bp + 56 /* offset */)) = Tsize_t((int64(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8)))-int64((*Tcompile_block_8)(unsafe.Pointer(cb)).Fstart_pattern))/1 - int64(2))
*(*Tuint32_t)(unsafe.Pointer(libc.PostIncUintptr(&parsed_pattern, 4))) = Tuint32_t(*(*Tsize_t)(unsafe.Pointer(bp + 56)) >> 32)
*(*Tuint32_t)(unsafe.Pointer(libc.PostIncUintptr(&parsed_pattern, 4))) = Tuint32_t(*(*Tsize_t)(unsafe.Pointer(bp + 56)) & uint64(0xffffffff))
*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8 /* ptr */)) += uintptr(2)
// Fall through
// If the previous item was a condition starting (?(? an assertion,
// optionally preceded by a callout, is expected. This is checked later on,
// during actual compilation. However we need to identify this kind of
// assertion in this pass because it must not be qualified. The value of
// expect_cond_assert is set to 2 after (?(? is processed. We decrement it
// for a callout - still leaving a positive value that identifies the
// assertion. Multiple callouts or any other items will make it zero or
// less, which doesn't matter because they will cause an error later.
POST_ASSERTION:
nest_depth++
if !(prev_expect_cond_assert > 0) {
goto __448
}
if !(top_nest == uintptr(0)) {
goto __449
}
top_nest = (*Tcompile_block_8)(unsafe.Pointer(cb)).Fstart_workspace
goto __450
__449:
if !(libc.PreIncUintptr(&top_nest, 12) >= end_nests) {
goto __451
}
*(*int32)(unsafe.Pointer(bp + 20 /* errorcode */)) = ERR84
goto FAILED
__451:
;
__450:
;
(*Tnest_save)(unsafe.Pointer(top_nest)).Fnest_depth = nest_depth
(*Tnest_save)(unsafe.Pointer(top_nest)).Fflags = uint16(DNSF_CONDASSERT)
(*Tnest_save)(unsafe.Pointer(top_nest)).Foptions = options & (DPCRE2_CASELESS | DPCRE2_DOTALL | DPCRE2_DUPNAMES | DPCRE2_EXTENDED | DPCRE2_EXTENDED_MORE | DPCRE2_MULTILINE | DPCRE2_NO_AUTO_CAPTURE | DPCRE2_UNGREEDY)
__448:
;
goto __328
// ---- Define a named group ----
// A named group may be defined as (?'name') or (?<name>). In the latter
// case we jump to DEFINE_NAME from the disambiguation of (?< above with the
// terminator set to '>'.
__351:
terminator = Tuint32_t('\047') // Terminator
DEFINE_NAME:
if !!(read_name(tls, bp+8, ptrend, utf, terminator, bp+56, bp+64, bp+72,
bp+20, cb) != 0) {
goto __452
}
goto FAILED
__452:
;
// We have a name for this capturing group. It is also assigned a number,
// which is its primary means of identification.
if !((*Tcompile_block_8)(unsafe.Pointer(cb)).Fbracount >= DMAX_GROUP_NUMBER) {
goto __453
}
*(*int32)(unsafe.Pointer(bp + 20 /* errorcode */)) = ERR97
goto FAILED
__453:
;
(*Tcompile_block_8)(unsafe.Pointer(cb)).Fbracount++
*(*Tuint32_t)(unsafe.Pointer(libc.PostIncUintptr(&parsed_pattern, 4))) = DMETA_CAPTURE | (*Tcompile_block_8)(unsafe.Pointer(cb)).Fbracount
nest_depth++
// Check not too many names
if !(int32((*Tcompile_block_8)(unsafe.Pointer(cb)).Fnames_found) >= DMAX_NAME_COUNT) {
goto __454
}
*(*int32)(unsafe.Pointer(bp + 20 /* errorcode */)) = ERR49
goto FAILED
__454:
;
// Adjust the entry size to accommodate the longest name found.
if !(*(*Tuint32_t)(unsafe.Pointer(bp + 72))+Tuint32_t(DIMM2_SIZE)+Tuint32_t(1) > Tuint32_t((*Tcompile_block_8)(unsafe.Pointer(cb)).Fname_entry_size)) {
goto __455
}
(*Tcompile_block_8)(unsafe.Pointer(cb)).Fname_entry_size = Tuint16_t(*(*Tuint32_t)(unsafe.Pointer(bp + 72)) + Tuint32_t(DIMM2_SIZE) + Tuint32_t(1))
__455:
;
// Scan the list to check for duplicates. For duplicate names, if the
// number is the same, break the loop, which causes the name to be
// discarded; otherwise, if DUPNAMES is not set, give an error.
// If it is set, allow the name with a different number, but continue
// scanning in case this is a duplicate with the same number. For
// non-duplicate names, give an error if the number is duplicated.
isdupname = DFALSE
ng = (*Tcompile_block_8)(unsafe.Pointer(cb)).Fnamed_groups
*(*int32)(unsafe.Pointer(bp + 48 /* i */)) = 0
__456:
if !(*(*int32)(unsafe.Pointer(bp + 48)) < int32((*Tcompile_block_8)(unsafe.Pointer(cb)).Fnames_found)) {
goto __458
}
if !(*(*Tuint32_t)(unsafe.Pointer(bp + 72)) == Tuint32_t((*Tnamed_group_8)(unsafe.Pointer(ng)).Flength) && X_pcre2_strncmp_8(tls, *(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 64)), (*Tnamed_group_8)(unsafe.Pointer(ng)).Fname, Tsize_t(*(*Tuint32_t)(unsafe.Pointer(bp + 72)))) == 0) {
goto __459
}
if !((*Tnamed_group_8)(unsafe.Pointer(ng)).Fnumber == (*Tcompile_block_8)(unsafe.Pointer(cb)).Fbracount) {
goto __461
}
goto __458
__461:
;
if !(options&DPCRE2_DUPNAMES == Tuint32_t(0)) {
goto __462
}
*(*int32)(unsafe.Pointer(bp + 20 /* errorcode */)) = ERR43
goto FAILED
__462:
;
isdupname = TBOOL(libc.AssignPtrUint16(ng+14, Tuint16_t(DTRUE))) // Mark as a duplicate
(*Tcompile_block_8)(unsafe.Pointer(cb)).Fdupnames = DTRUE // Duplicate names exist
goto __460
__459:
if !((*Tnamed_group_8)(unsafe.Pointer(ng)).Fnumber == (*Tcompile_block_8)(unsafe.Pointer(cb)).Fbracount) {
goto __463
}
*(*int32)(unsafe.Pointer(bp + 20 /* errorcode */)) = ERR65
goto FAILED
__463:
;
__460:
;
goto __457
__457:
*(*int32)(unsafe.Pointer(bp + 48 /* i */))++
ng += 16
goto __456
goto __458
__458:
;
if !(*(*int32)(unsafe.Pointer(bp + 48)) < int32((*Tcompile_block_8)(unsafe.Pointer(cb)).Fnames_found)) {
goto __464
}
goto __328
__464:
; // Ignore duplicate with same number
// Increase the list size if necessary
if !(Tuint32_t((*Tcompile_block_8)(unsafe.Pointer(cb)).Fnames_found) >= (*Tcompile_block_8)(unsafe.Pointer(cb)).Fnamed_group_list_size) {
goto __465
}
newsize = (*Tcompile_block_8)(unsafe.Pointer(cb)).Fnamed_group_list_size * Tuint32_t(2)
newspace =
(*struct {
f func(*libc.TLS, Tsize_t, uintptr) uintptr
})(unsafe.Pointer(&struct{ uintptr }{(*Tpcre2_real_compile_context_8)(unsafe.Pointer((*Tcompile_block_8)(unsafe.Pointer(cb)).Fcx)).Fmemctl.Fmalloc})).f(tls, uint64(newsize)*uint64(unsafe.Sizeof(Tnamed_group_8{})),
(*Tpcre2_real_compile_context_8)(unsafe.Pointer((*Tcompile_block_8)(unsafe.Pointer(cb)).Fcx)).Fmemctl.Fmemory_data)
if !(newspace == uintptr(0)) {
goto __466
}
*(*int32)(unsafe.Pointer(bp + 20 /* errorcode */)) = ERR21
goto FAILED
__466:
;
libc.Xmemcpy(tls, newspace, (*Tcompile_block_8)(unsafe.Pointer(cb)).Fnamed_groups,
uint64((*Tcompile_block_8)(unsafe.Pointer(cb)).Fnamed_group_list_size)*uint64(unsafe.Sizeof(Tnamed_group_8{})))
if !((*Tcompile_block_8)(unsafe.Pointer(cb)).Fnamed_group_list_size > Tuint32_t(DNAMED_GROUP_LIST_SIZE)) {
goto __467
}
(*struct {
f func(*libc.TLS, uintptr, uintptr)
})(unsafe.Pointer(&struct{ uintptr }{(*Tpcre2_real_compile_context_8)(unsafe.Pointer((*Tcompile_block_8)(unsafe.Pointer(cb)).Fcx)).Fmemctl.Ffree})).f(tls, (*Tcompile_block_8)(unsafe.Pointer(cb)).Fnamed_groups,
(*Tpcre2_real_compile_context_8)(unsafe.Pointer((*Tcompile_block_8)(unsafe.Pointer(cb)).Fcx)).Fmemctl.Fmemory_data)
__467:
;
(*Tcompile_block_8)(unsafe.Pointer(cb)).Fnamed_groups = newspace
(*Tcompile_block_8)(unsafe.Pointer(cb)).Fnamed_group_list_size = newsize
__465:
;
// Add this name to the list
(*Tnamed_group_8)(unsafe.Pointer((*Tcompile_block_8)(unsafe.Pointer(cb)).Fnamed_groups + uintptr((*Tcompile_block_8)(unsafe.Pointer(cb)).Fnames_found)*16)).Fname = *(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 64 /* name */))
(*Tnamed_group_8)(unsafe.Pointer((*Tcompile_block_8)(unsafe.Pointer(cb)).Fnamed_groups + uintptr((*Tcompile_block_8)(unsafe.Pointer(cb)).Fnames_found)*16)).Flength = Tuint16_t(*(*Tuint32_t)(unsafe.Pointer(bp + 72 /* namelen */)))
(*Tnamed_group_8)(unsafe.Pointer((*Tcompile_block_8)(unsafe.Pointer(cb)).Fnamed_groups + uintptr((*Tcompile_block_8)(unsafe.Pointer(cb)).Fnames_found)*16)).Fnumber = (*Tcompile_block_8)(unsafe.Pointer(cb)).Fbracount
(*Tnamed_group_8)(unsafe.Pointer((*Tcompile_block_8)(unsafe.Pointer(cb)).Fnamed_groups + uintptr((*Tcompile_block_8)(unsafe.Pointer(cb)).Fnames_found)*16)).Fisdup = Tuint16_t(isdupname)
(*Tcompile_block_8)(unsafe.Pointer(cb)).Fnames_found++
goto __328
__328:
; // End of (? switch
goto __84 // End of ( handling
// ---- Branch terminators ----
// Alternation: reset the capture count if we are in a (?| group.
__96:
if !(top_nest != uintptr(0) && int32((*Tnest_save)(unsafe.Pointer(top_nest)).Fnest_depth) == int32(nest_depth) && uint32((*Tnest_save)(unsafe.Pointer(top_nest)).Fflags)&DNSF_RESET != uint32(0)) {
goto __468
}
if !((*Tcompile_block_8)(unsafe.Pointer(cb)).Fbracount > Tuint32_t((*Tnest_save)(unsafe.Pointer(top_nest)).Fmax_group)) {
goto __469
}
(*Tnest_save)(unsafe.Pointer(top_nest)).Fmax_group = Tuint16_t((*Tcompile_block_8)(unsafe.Pointer(cb)).Fbracount)
__469:
;
(*Tcompile_block_8)(unsafe.Pointer(cb)).Fbracount = Tuint32_t((*Tnest_save)(unsafe.Pointer(top_nest)).Freset_group)
__468:
;
*(*Tuint32_t)(unsafe.Pointer(libc.PostIncUintptr(&parsed_pattern, 4))) = DMETA_ALT
goto __84
// End of group; reset the capture count to the maximum if we are in a (?|
// group and/or reset the options that are tracked during parsing. Disallow
// quantifier for a condition that is an assertion.
__97:
okquantifier = DTRUE
if !(top_nest != uintptr(0) && int32((*Tnest_save)(unsafe.Pointer(top_nest)).Fnest_depth) == int32(nest_depth)) {
goto __470
}
options = options&libc.CplUint32(DPCRE2_CASELESS|DPCRE2_DOTALL|DPCRE2_DUPNAMES|DPCRE2_EXTENDED|DPCRE2_EXTENDED_MORE|DPCRE2_MULTILINE|DPCRE2_NO_AUTO_CAPTURE|DPCRE2_UNGREEDY) | (*Tnest_save)(unsafe.Pointer(top_nest)).Foptions
if !(uint32((*Tnest_save)(unsafe.Pointer(top_nest)).Fflags)&DNSF_RESET != uint32(0) && Tuint32_t((*Tnest_save)(unsafe.Pointer(top_nest)).Fmax_group) > (*Tcompile_block_8)(unsafe.Pointer(cb)).Fbracount) {
goto __471
}
(*Tcompile_block_8)(unsafe.Pointer(cb)).Fbracount = Tuint32_t((*Tnest_save)(unsafe.Pointer(top_nest)).Fmax_group)
__471:
;
if !(uint32((*Tnest_save)(unsafe.Pointer(top_nest)).Fflags)&DNSF_CONDASSERT != uint32(0)) {
goto __472
}
okquantifier = DFALSE
__472:
;
if !(uint32((*Tnest_save)(unsafe.Pointer(top_nest)).Fflags)&DNSF_ATOMICSR != uint32(0)) {
goto __473
}
*(*Tuint32_t)(unsafe.Pointer(libc.PostIncUintptr(&parsed_pattern, 4))) = DMETA_KET
__473:
;
if !(top_nest == (*Tcompile_block_8)(unsafe.Pointer(cb)).Fstart_workspace) {
goto __474
}
top_nest = uintptr(0)
goto __475
__474:
top_nest -= 12
__475:
;
__470:
;
if !(int32(nest_depth) == 0) {
goto __476
} /* Unmatched closing parenthesis */
*(*int32)(unsafe.Pointer(bp + 20 /* errorcode */)) = ERR22
goto FAILED_BACK
__476:
;
nest_depth--
*(*Tuint32_t)(unsafe.Pointer(libc.PostIncUintptr(&parsed_pattern, 4))) = DMETA_KET
goto __84
__84:
; // End of switch on pattern character
goto __19
__20:
; // End of main character scan loop
// End of pattern reached. Check for missing ) at the end of a verb name.
if !(inverbname != 0 && *(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8)) >= ptrend) {
goto __477
}
*(*int32)(unsafe.Pointer(bp + 20 /* errorcode */)) = ERR60
goto FAILED
__477:
;
// Manage callout for the final item
PARSED_END:
parsed_pattern = manage_callouts(tls, *(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8 /* ptr */)), bp, auto_callout,
parsed_pattern, cb)
// Insert trailing items for word and line matching (features provided for the
// benefit of pcre2grep).
if !(extra_options&DPCRE2_EXTRA_MATCH_LINE != Tuint32_t(0)) {
goto __478
}
*(*Tuint32_t)(unsafe.Pointer(libc.PostIncUintptr(&parsed_pattern, 4))) = DMETA_KET
*(*Tuint32_t)(unsafe.Pointer(libc.PostIncUintptr(&parsed_pattern, 4))) = DMETA_DOLLAR
goto __479
__478:
if !(extra_options&DPCRE2_EXTRA_MATCH_WORD != Tuint32_t(0)) {
goto __480
}
*(*Tuint32_t)(unsafe.Pointer(libc.PostIncUintptr(&parsed_pattern, 4))) = DMETA_KET
*(*Tuint32_t)(unsafe.Pointer(libc.PostIncUintptr(&parsed_pattern, 4))) = DMETA_ESCAPE + ESC_b
__480:
;
__479:
;
// Terminate the parsed pattern, then return success if all groups are closed.
// Otherwise we have unclosed parentheses.
if !(parsed_pattern >= parsed_pattern_end) {
goto __481
}
*(*int32)(unsafe.Pointer(bp + 20 /* errorcode */)) = ERR63 // Internal error (parsed pattern overflow)
goto FAILED
__481:
;
*(*Tuint32_t)(unsafe.Pointer(parsed_pattern)) = DMETA_END
if !(int32(nest_depth) == 0) {
goto __482
}
return 0
__482:
;
UNCLOSED_PARENTHESIS:
*(*int32)(unsafe.Pointer(bp + 20 /* errorcode */)) = ERR14
// Come here for all failures.
FAILED:
(*Tcompile_block_8)(unsafe.Pointer(cb)).Ferroroffset = Tsize_t((int64(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8))) - int64((*Tcompile_block_8)(unsafe.Pointer(cb)).Fstart_pattern)) / 1)
return *(*int32)(unsafe.Pointer(bp + 20 /* errorcode */))
// Some errors need to indicate the previous character.
FAILED_BACK:
*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8 /* ptr */))--
goto FAILED
// This failure happens several times.
BAD_VERSION_CONDITION:
*(*int32)(unsafe.Pointer(bp + 20 /* errorcode */)) = ERR79
goto FAILED
return int32(0)
}
// ************************************************
//
// Find first significant opcode *
//
// This is called by several functions that scan a compiled expression looking
// for a fixed first character, or an anchoring opcode etc. It skips over things
// that do not influence this. For some calls, it makes sense to skip negative
// forward and all backward assertions, and also the \b assertion; for others it
// does not.
//
// Arguments:
// code pointer to the start of the group
// skipassert TRUE if certain assertions are to be skipped
//
// Returns: pointer to the first significant opcode
func first_significant_code(tls *libc.TLS, code TPCRE2_SPTR8, skipassert TBOOL) uintptr { /* pcre2_compile.c:4845:25: */
for {
switch int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code))) {
case OP_ASSERT_NOT:
fallthrough
case OP_ASSERTBACK:
fallthrough
case OP_ASSERTBACK_NOT:
fallthrough
case OP_ASSERTBACK_NA:
if !(skipassert != 0) {
return code
}
for __ccgo := true; __ccgo; __ccgo = int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code))) == OP_ALT {
code += TPCRE2_SPTR8(uint32(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + 1)))<<8 | int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + 2)))))
}
code += TPCRE2_SPTR8(X_pcre2_OP_lengths_8[*(*TPCRE2_UCHAR8)(unsafe.Pointer(code))])
break
case OP_WORD_BOUNDARY:
fallthrough
case OP_NOT_WORD_BOUNDARY:
if !(skipassert != 0) {
return code
}
fallthrough
// Fall through
case OP_CALLOUT:
fallthrough
case OP_CREF:
fallthrough
case OP_DNCREF:
fallthrough
case OP_RREF:
fallthrough
case OP_DNRREF:
fallthrough
case OP_FALSE:
fallthrough
case OP_TRUE:
code += TPCRE2_SPTR8(X_pcre2_OP_lengths_8[*(*TPCRE2_UCHAR8)(unsafe.Pointer(code))])
break
case OP_CALLOUT_STR:
code += TPCRE2_SPTR8(uint32(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + 5)))<<8 | int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + 6)))))
break
case OP_SKIPZERO:
code += TPCRE2_SPTR8(uint32(2) + uint32(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + 2)))<<8|int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + 3)))) + uint32(DLINK_SIZE))
break
case OP_COND:
fallthrough
case OP_SCOND:
if int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + 3))) != OP_FALSE || int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + uintptr(uint32(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + 1)))<<8|int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + 2)))))))) != OP_KET { // More than one branch
return code
}
code += TPCRE2_SPTR8(uint32(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + 1)))<<8|int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + 2)))) + uint32(1) + uint32(DLINK_SIZE))
break
case OP_MARK:
fallthrough
case OP_COMMIT_ARG:
fallthrough
case OP_PRUNE_ARG:
fallthrough
case OP_SKIP_ARG:
fallthrough
case OP_THEN_ARG:
code += TPCRE2_SPTR8(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + 1))) + int32(X_pcre2_OP_lengths_8[*(*TPCRE2_UCHAR8)(unsafe.Pointer(code))]))
break
default:
return code
}
}
return uintptr(0)
// Control never reaches here
}
// ************************************************
//
// Get othercase range *
//
// This function is passed the start and end of a class range in UCP mode. It
// searches up the characters, looking for ranges of characters in the "other"
// case. Each call returns the next one, updating the start address. A character
// with multiple other cases is returned on its own with a special return value.
//
// Arguments:
// cptr points to starting character value; updated
// d end value
// ocptr where to put start of othercase range
// odptr where to put end of othercase range
//
// Yield: -1 when no more
// 0 when a range is returned
// >0 the CASESET offset for char with multiple other cases
// in this case, ocptr contains the original
func get_othercase_range(tls *libc.TLS, cptr uintptr, d Tuint32_t, ocptr uintptr, odptr uintptr) int32 { /* pcre2_compile.c:4932:1: */
var c Tuint32_t
var othercase Tuint32_t
var next Tuint32_t
var co uint32
// Find the first character that has an other case. If it has multiple other
// cases, return its case offset value.
for c = *(*Tuint32_t)(unsafe.Pointer(cptr)); c <= d; c++ {
if libc.AssignUint32(&co, uint32((*Tucd_record)(unsafe.Pointer(uintptr(unsafe.Pointer(&X_pcre2_ucd_records_8))+uintptr(X_pcre2_ucd_stage2_8[int32(X_pcre2_ucd_stage1_8[int32(c)/DUCD_BLOCK_SIZE])*DUCD_BLOCK_SIZE+int32(c)%DUCD_BLOCK_SIZE])*12)).Fcaseset)) != uint32(0) {
*(*Tuint32_t)(unsafe.Pointer(ocptr)) = libc.PostIncUint32(&c, 1) // Character that has the set
*(*Tuint32_t)(unsafe.Pointer(cptr)) = c // Rest of input range
return int32(co)
}
if libc.AssignUint32(&othercase, Tuint32_t(int32(c)+(*Tucd_record)(unsafe.Pointer(uintptr(unsafe.Pointer(&X_pcre2_ucd_records_8))+uintptr(X_pcre2_ucd_stage2_8[int32(X_pcre2_ucd_stage1_8[int32(c)/DUCD_BLOCK_SIZE])*DUCD_BLOCK_SIZE+int32(c)%DUCD_BLOCK_SIZE])*12)).Fother_case)) != c {
break
}
}
if c > d {
return -1
} // Reached end of range
// Found a character that has a single other case. Search for the end of the
// range, which is either the end of the input range, or a character that has zero
// or more than one other cases.
*(*Tuint32_t)(unsafe.Pointer(ocptr)) = othercase
next = othercase + Tuint32_t(1)
for c++; c <= d; c++ {
if libc.AssignUint32(&co, uint32((*Tucd_record)(unsafe.Pointer(uintptr(unsafe.Pointer(&X_pcre2_ucd_records_8))+uintptr(X_pcre2_ucd_stage2_8[int32(X_pcre2_ucd_stage1_8[int32(c)/DUCD_BLOCK_SIZE])*DUCD_BLOCK_SIZE+int32(c)%DUCD_BLOCK_SIZE])*12)).Fcaseset)) != uint32(0) || Tuint32_t(int32(c)+(*Tucd_record)(unsafe.Pointer(uintptr(unsafe.Pointer(&X_pcre2_ucd_records_8))+uintptr(X_pcre2_ucd_stage2_8[int32(X_pcre2_ucd_stage1_8[int32(c)/DUCD_BLOCK_SIZE])*DUCD_BLOCK_SIZE+int32(c)%DUCD_BLOCK_SIZE])*12)).Fother_case) != next {
break
}
next++
}
*(*Tuint32_t)(unsafe.Pointer(odptr)) = next - Tuint32_t(1) // End of othercase range
*(*Tuint32_t)(unsafe.Pointer(cptr)) = c // Rest of input range
return 0
}
// ************************************************
//
// Add a character or range to a class (internal) *
//
// This function packages up the logic of adding a character or range of
// characters to a class. The character values in the arguments will be within the
// valid values for the current mode (8-bit, 16-bit, UTF, etc). This function is
// called only from within the "add to class" group of functions, some of which
// are recursive and mutually recursive. The external entry point is
// add_to_class().
//
// Arguments:
// classbits the bit map for characters < 256
// uchardptr points to the pointer for extra data
// options the options word
// cb compile data
// start start of range character
// end end of range character
//
// Returns: the number of < 256 characters added
// the pointer to extra data is updated
func add_to_class_internal(tls *libc.TLS, classbits uintptr, uchardptr uintptr, options Tuint32_t, cb uintptr, start Tuint32_t, end Tuint32_t) uint32 { /* pcre2_compile.c:4999:1: */
bp := tls.Alloc(12)
defer tls.Free(12)
// var c Tuint32_t at bp, 4
var classbits_end Tuint32_t = func() uint32 {
if end <= Tuint32_t(0xff) {
return end
}
return uint32(0xff)
}()
var n8 uint32 = uint32(0)
// If caseless matching is required, scan the range and process alternate
// cases. In Unicode, there are 8-bit characters that have alternate cases that
// are greater than 255 and vice-versa. Sometimes we can just extend the original
// range.
if options&DPCRE2_CASELESS != Tuint32_t(0) {
if options&(DPCRE2_UTF|DPCRE2_UCP) != Tuint32_t(0) {
var rc int32
// var oc Tuint32_t at bp+4, 4
// var od Tuint32_t at bp+8, 4
options = options & libc.CplUint32(DPCRE2_CASELESS) // Remove for recursive calls
*(*Tuint32_t)(unsafe.Pointer(bp /* c */)) = start
for libc.AssignInt32(&rc, get_othercase_range(tls, bp, end, bp+4, bp+8)) >= 0 {
// Handle a single character that has more than one other case.
if rc > 0 {
n8 = n8 + add_list_to_class_internal(tls, classbits, uchardptr, options, cb,
uintptr(unsafe.Pointer(&X_pcre2_ucd_caseless_sets_8))+uintptr(rc)*4, *(*Tuint32_t)(unsafe.Pointer(bp + 4)))
} else if *(*Tuint32_t)(unsafe.Pointer(bp + 4)) >= (*Tcompile_block_8)(unsafe.Pointer(cb)).Fclass_range_start && *(*Tuint32_t)(unsafe.Pointer(bp + 8)) <= (*Tcompile_block_8)(unsafe.Pointer(cb)).Fclass_range_end {
continue
} else if *(*Tuint32_t)(unsafe.Pointer(bp + 4)) < start && *(*Tuint32_t)(unsafe.Pointer(bp + 8)) >= start-Tuint32_t(1) {
start = *(*Tuint32_t)(unsafe.Pointer(bp + 4 /* oc */))
} else if *(*Tuint32_t)(unsafe.Pointer(bp + 8)) > end && *(*Tuint32_t)(unsafe.Pointer(bp + 4)) <= end+Tuint32_t(1) {
end = *(*Tuint32_t)(unsafe.Pointer(bp + 8 /* od */)) // Extend upwards
if end > classbits_end {
classbits_end = func() uint32 {
if end <= Tuint32_t(0xff) {
return end
}
return uint32(0xff)
}()
}
} else {
n8 = n8 + add_to_class_internal(tls, classbits, uchardptr, options, cb, *(*Tuint32_t)(unsafe.Pointer(bp + 4)), *(*Tuint32_t)(unsafe.Pointer(bp + 8)))
}
}
} else {
// Not UTF mode
for *(*Tuint32_t)(unsafe.Pointer(bp /* c */)) = start; *(*Tuint32_t)(unsafe.Pointer(bp /* c */)) <= classbits_end; *(*Tuint32_t)(unsafe.Pointer(bp /* c */))++ {
*(*Tuint8_t)(unsafe.Pointer(classbits + uintptr(int32(*(*Tuint8_t)(unsafe.Pointer((*Tcompile_block_8)(unsafe.Pointer(cb)).Ffcc + uintptr(*(*Tuint32_t)(unsafe.Pointer(bp))))))/8))) = Tuint8_t(uint32(*(*Tuint8_t)(unsafe.Pointer(classbits + uintptr(int32(*(*Tuint8_t)(unsafe.Pointer((*Tcompile_block_8)(unsafe.Pointer(cb)).Ffcc + uintptr(*(*Tuint32_t)(unsafe.Pointer(bp))))))/8)))) | uint32(1)<<(int32(*(*Tuint8_t)(unsafe.Pointer((*Tcompile_block_8)(unsafe.Pointer(cb)).Ffcc + uintptr(*(*Tuint32_t)(unsafe.Pointer(bp))))))&7))
n8++
}
}
}
// Now handle the originally supplied range. Adjust the final value according
// to the bit length - this means that the same lists of (e.g.) horizontal spaces
// can be used in all cases.
if options&DPCRE2_UTF == Tuint32_t(0) && end > uint32(0xffffffff)>>(32-DPCRE2_CODE_UNIT_WIDTH) {
end = uint32(0xffffffff) >> (32 - DPCRE2_CODE_UNIT_WIDTH)
}
if start > (*Tcompile_block_8)(unsafe.Pointer(cb)).Fclass_range_start && end < (*Tcompile_block_8)(unsafe.Pointer(cb)).Fclass_range_end {
return n8
}
// Use the bitmap for characters < 256. Otherwise use extra data.
for *(*Tuint32_t)(unsafe.Pointer(bp /* c */)) = start; *(*Tuint32_t)(unsafe.Pointer(bp /* c */)) <= classbits_end; *(*Tuint32_t)(unsafe.Pointer(bp /* c */))++ {
// Regardless of start, c will always be <= 255.
*(*Tuint8_t)(unsafe.Pointer(classbits + uintptr(*(*Tuint32_t)(unsafe.Pointer(bp))/Tuint32_t(8)))) = Tuint8_t(uint32(*(*Tuint8_t)(unsafe.Pointer(classbits + uintptr(*(*Tuint32_t)(unsafe.Pointer(bp))/Tuint32_t(8))))) | uint32(1)<<(*(*Tuint32_t)(unsafe.Pointer(bp))&Tuint32_t(7)))
n8++
}
if start <= Tuint32_t(0xff) {
start = Tuint32_t(0xff + 1)
}
if end >= start {
var uchardata uintptr = *(*uintptr)(unsafe.Pointer(uchardptr))
if options&DPCRE2_UTF != Tuint32_t(0) {
if start < end {
*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&uchardata, 1))) = TPCRE2_UCHAR8(DXCL_RANGE)
uchardata += uintptr(X_pcre2_ord2utf_8(tls, start, uchardata))
uchardata += uintptr(X_pcre2_ord2utf_8(tls, end, uchardata))
} else if start == end {
*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&uchardata, 1))) = TPCRE2_UCHAR8(DXCL_SINGLE)
uchardata += uintptr(X_pcre2_ord2utf_8(tls, start, uchardata))
}
} else {
}
*(*uintptr)(unsafe.Pointer(uchardptr)) = uchardata // Updata extra data pointer
}
return n8 // Number of 8-bit characters
}
// ************************************************
//
// Add a list of characters to a class (internal) *
//
// This function is used for adding a list of case-equivalent characters to a
// class when in UTF mode. This function is called only from within
// add_to_class_internal(), with which it is mutually recursive.
//
// Arguments:
// classbits the bit map for characters < 256
// uchardptr points to the pointer for extra data
// options the options word
// cb contains pointers to tables etc.
// p points to row of 32-bit values, terminated by NOTACHAR
// except character to omit; this is used when adding lists of
// case-equivalent characters to avoid including the one we
// already know about
//
// Returns: the number of < 256 characters added
// the pointer to extra data is updated
func add_list_to_class_internal(tls *libc.TLS, classbits uintptr, uchardptr uintptr, options Tuint32_t, cb uintptr, p uintptr, except uint32) uint32 { /* pcre2_compile.c:5154:1: */
var n8 uint32 = uint32(0)
for *(*Tuint32_t)(unsafe.Pointer(p)) < DNOTACHAR {
var n uint32 = uint32(0)
if *(*Tuint32_t)(unsafe.Pointer(p)) != except {
for *(*Tuint32_t)(unsafe.Pointer(p + uintptr(n+uint32(1))*4)) == *(*Tuint32_t)(unsafe.Pointer(p))+n+Tuint32_t(1) {
n++
}
n8 = n8 + add_to_class_internal(tls, classbits, uchardptr, options, cb, *(*Tuint32_t)(unsafe.Pointer(p)), *(*Tuint32_t)(unsafe.Pointer(p + uintptr(n)*4)))
}
p += 4 * uintptr(n+uint32(1))
}
return n8
}
// ************************************************
//
// External entry point for add range to class *
//
// This function sets the overall range so that the internal functions can try
// to avoid duplication when handling case-independence.
//
// Arguments:
// classbits the bit map for characters < 256
// uchardptr points to the pointer for extra data
// options the options word
// cb compile data
// start start of range character
// end end of range character
//
// Returns: the number of < 256 characters added
// the pointer to extra data is updated
func add_to_class(tls *libc.TLS, classbits uintptr, uchardptr uintptr, options Tuint32_t, cb uintptr, start Tuint32_t, end Tuint32_t) uint32 { /* pcre2_compile.c:5194:1: */
(*Tcompile_block_8)(unsafe.Pointer(cb)).Fclass_range_start = start
(*Tcompile_block_8)(unsafe.Pointer(cb)).Fclass_range_end = end
return add_to_class_internal(tls, classbits, uchardptr, options, cb, start, end)
}
// ************************************************
//
// External entry point for add list to class *
//
// This function is used for adding a list of horizontal or vertical whitespace
// characters to a class. The list must be in order so that ranges of characters
// can be detected and handled appropriately. This function sets the overall range
// so that the internal functions can try to avoid duplication when handling
// case-independence.
//
// Arguments:
// classbits the bit map for characters < 256
// uchardptr points to the pointer for extra data
// options the options word
// cb contains pointers to tables etc.
// p points to row of 32-bit values, terminated by NOTACHAR
// except character to omit; this is used when adding lists of
// case-equivalent characters to avoid including the one we
// already know about
//
// Returns: the number of < 256 characters added
// the pointer to extra data is updated
func add_list_to_class(tls *libc.TLS, classbits uintptr, uchardptr uintptr, options Tuint32_t, cb uintptr, p uintptr, except uint32) uint32 { /* pcre2_compile.c:5228:1: */
var n8 uint32 = uint32(0)
for *(*Tuint32_t)(unsafe.Pointer(p)) < DNOTACHAR {
var n uint32 = uint32(0)
if *(*Tuint32_t)(unsafe.Pointer(p)) != except {
for *(*Tuint32_t)(unsafe.Pointer(p + uintptr(n+uint32(1))*4)) == *(*Tuint32_t)(unsafe.Pointer(p))+n+Tuint32_t(1) {
n++
}
(*Tcompile_block_8)(unsafe.Pointer(cb)).Fclass_range_start = *(*Tuint32_t)(unsafe.Pointer(p))
(*Tcompile_block_8)(unsafe.Pointer(cb)).Fclass_range_end = *(*Tuint32_t)(unsafe.Pointer(p + uintptr(n)*4))
n8 = n8 + add_to_class_internal(tls, classbits, uchardptr, options, cb, *(*Tuint32_t)(unsafe.Pointer(p)), *(*Tuint32_t)(unsafe.Pointer(p + uintptr(n)*4)))
}
p += 4 * uintptr(n+uint32(1))
}
return n8
}
// ************************************************
//
// Add characters not in a list to a class *
//
// This function is used for adding the complement of a list of horizontal or
// vertical whitespace to a class. The list must be in order.
//
// Arguments:
// classbits the bit map for characters < 256
// uchardptr points to the pointer for extra data
// options the options word
// cb contains pointers to tables etc.
// p points to row of 32-bit values, terminated by NOTACHAR
//
// Returns: the number of < 256 characters added
// the pointer to extra data is updated
func add_not_list_to_class(tls *libc.TLS, classbits uintptr, uchardptr uintptr, options Tuint32_t, cb uintptr, p uintptr) uint32 { /* pcre2_compile.c:5268:1: */
var utf TBOOL = libc.Bool32(options&DPCRE2_UTF != Tuint32_t(0))
var n8 uint32 = uint32(0)
if *(*Tuint32_t)(unsafe.Pointer(p)) > Tuint32_t(0) {
n8 = n8 + add_to_class(tls, classbits, uchardptr, options, cb, uint32(0), *(*Tuint32_t)(unsafe.Pointer(p))-Tuint32_t(1))
}
for *(*Tuint32_t)(unsafe.Pointer(p)) < DNOTACHAR {
for *(*Tuint32_t)(unsafe.Pointer(p + 1*4)) == *(*Tuint32_t)(unsafe.Pointer(p))+Tuint32_t(1) {
p += 4
}
n8 = n8 + add_to_class(tls, classbits, uchardptr, options, cb, *(*Tuint32_t)(unsafe.Pointer(p))+Tuint32_t(1),
func() uint32 {
if *(*Tuint32_t)(unsafe.Pointer(p + 1*4)) == DNOTACHAR {
return func() uint32 {
if utf != 0 {
return 0x10ffff
}
return 0xffffffff
}()
}
return *(*Tuint32_t)(unsafe.Pointer(p + 1*4)) - Tuint32_t(1)
}())
p += 4
}
return n8
}
// ************************************************
//
// Find details of duplicate group names *
//
// This is called from compile_branch() when it needs to know the index and
// count of duplicates in the names table when processing named backreferences,
// either directly, or as conditions.
//
// Arguments:
// name points to the name
// length the length of the name
// indexptr where to put the index
// countptr where to put the count of duplicates
// errorcodeptr where to put an error code
// cb the compile block
//
// Returns: TRUE if OK, FALSE if not, error code set
func find_dupname_details(tls *libc.TLS, name TPCRE2_SPTR8, length Tuint32_t, indexptr uintptr, countptr uintptr, errorcodeptr uintptr, cb uintptr) TBOOL { /* pcre2_compile.c:5307:1: */
var i Tuint32_t
var groupnumber Tuint32_t
var count int32
var slot uintptr = (*Tcompile_block_8)(unsafe.Pointer(cb)).Fname_table
// Find the first entry in the table
for i = Tuint32_t(0); i < Tuint32_t((*Tcompile_block_8)(unsafe.Pointer(cb)).Fnames_found); i++ {
if X_pcre2_strncmp_8(tls, name, slot+uintptr(DIMM2_SIZE), uint64(length)) == 0 && int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(slot + uintptr(Tuint32_t(DIMM2_SIZE)+length)))) == 0 {
break
}
slot += uintptr((*Tcompile_block_8)(unsafe.Pointer(cb)).Fname_entry_size)
}
// This should not occur, because this function is called only when we know we
// have duplicate names. Give an internal error.
if i >= Tuint32_t((*Tcompile_block_8)(unsafe.Pointer(cb)).Fnames_found) {
*(*int32)(unsafe.Pointer(errorcodeptr)) = ERR53
(*Tcompile_block_8)(unsafe.Pointer(cb)).Ferroroffset = Tsize_t((int64(name) - int64((*Tcompile_block_8)(unsafe.Pointer(cb)).Fstart_pattern)) / 1)
return DFALSE
}
// Record the index and then see how many duplicates there are, updating the
// backref map and maximum back reference as we do.
*(*int32)(unsafe.Pointer(indexptr)) = int32(i)
count = 0
for {
count++
groupnumber = uint32(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(slot)))<<8 | int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(slot + 1))))
*(*Tuint32_t)(unsafe.Pointer(cb + 252)) |= func() uint32 {
if groupnumber < Tuint32_t(32) {
return uint32(1) << groupnumber
}
return uint32(1)
}()
if groupnumber > (*Tcompile_block_8)(unsafe.Pointer(cb)).Ftop_backref {
(*Tcompile_block_8)(unsafe.Pointer(cb)).Ftop_backref = groupnumber
}
if libc.PreIncUint32(&i, 1) >= Tuint32_t((*Tcompile_block_8)(unsafe.Pointer(cb)).Fnames_found) {
break
}
slot += uintptr((*Tcompile_block_8)(unsafe.Pointer(cb)).Fname_entry_size)
if X_pcre2_strncmp_8(tls, name, slot+uintptr(DIMM2_SIZE), uint64(length)) != 0 || int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(slot + uintptr(DIMM2_SIZE) + uintptr(length)))) != 0 {
break
}
}
*(*int32)(unsafe.Pointer(countptr)) = count
return DTRUE
}
// ************************************************
//
// Compile one branch *
//
// Scan the parsed pattern, compiling it into the a vector of PCRE2_UCHAR. If
// the options are changed during the branch, the pointer is used to change the
// external options bits. This function is used during the pre-compile phase when
// we are trying to find out the amount of memory needed, as well as during the
// real compile phase. The value of lengthptr distinguishes the two phases.
//
// Arguments:
// optionsptr pointer to the option bits
// codeptr points to the pointer to the current code point
// pptrptr points to the current parsed pattern pointer
// errorcodeptr points to error code variable
// firstcuptr place to put the first required code unit
// firstcuflagsptr place to put the first code unit flags
// reqcuptr place to put the last required code unit
// reqcuflagsptr place to put the last required code unit flags
// bcptr points to current branch chain
// cb contains pointers to tables etc.
// lengthptr NULL during the real compile phase
// points to length accumulator during pre-compile phase
//
// Returns: 0 There's been an error, *errorcodeptr is non-zero
// +1 Success, this branch must match at least one character
// -1 Success, this branch may match an empty string
func compile_branch(tls *libc.TLS, optionsptr uintptr, codeptr uintptr, pptrptr uintptr, errorcodeptr uintptr, firstcuptr uintptr, firstcuflagsptr uintptr, reqcuptr uintptr, reqcuflagsptr uintptr, bcptr uintptr, cb uintptr, lengthptr uintptr) int32 { /* pcre2_compile.c:5387:1: */
bp := tls.Alloc(136)
defer tls.Free(136)
var bravalue int32
var okreturn int32
var group_return int32
var repeat_min Tuint32_t
var repeat_max Tuint32_t // To please picky compilers
var greedy_default Tuint32_t
var greedy_non_default Tuint32_t
var repeat_type Tuint32_t
var op_type Tuint32_t
var options Tuint32_t // May change dynamically
var firstcu Tuint32_t
var reqcu Tuint32_t
var zeroreqcu Tuint32_t
var zerofirstcu Tuint32_t
var escape Tuint32_t
// var pptr uintptr at bp+96, 8
var meta Tuint32_t
var meta_arg Tuint32_t
var firstcuflags Tuint32_t
var reqcuflags Tuint32_t
var zeroreqcuflags Tuint32_t
var zerofirstcuflags Tuint32_t
var req_caseopt Tuint32_t
var reqvary Tuint32_t
var tempreqvary Tuint32_t
var offset Tsize_t
// var length_prevgroup Tsize_t at bp+120, 8
var code uintptr
var last_code uintptr
var orig_code uintptr
// var tempcode uintptr at bp+88, 8
var previous uintptr
var op_previous TPCRE2_UCHAR8
var groupsetfirstcu TBOOL
var had_accept TBOOL
var matched_char TBOOL
var previous_matched_char TBOOL
var reset_caseful TBOOL
var cbits uintptr
// var classbits [32]Tuint8_t at bp, 32
// We can fish out the UTF setting once and for all into a BOOL, but we must
// not do this for other options (e.g. PCRE2_EXTENDED) because they may change
// dynamically as we process the pattern.
var utf TBOOL
var ucp TBOOL
// Helper variables for OP_XCLASS opcode (for characters > 255). We define
// class_uchardata always so that it can be passed to add_to_class() always,
// though it will not be used in non-UTF 8-bit cases. This avoids having to supply
// alternative calls for the different cases.
// var class_uchardata uintptr at bp+64, 8
var xclass TBOOL
var class_uchardata_base uintptr
var d Tuint32_t
var c Tuint32_t
var d1 Tuint32_t
var c1 Tuint32_t
var i int32
var i1 int32
var local_negate TBOOL
var posix_class int32
var taboffset int32
var tabopt int32
// var pbits [32]Tuint8_t at bp+32, 32
var i2 int32
var i3 int32
var ptype Tuint32_t
var pdata Tuint32_t
var i4 int32
var i5 int32
var i6 int32
var i7 int32
var i8 int32
var i9 int32
var c2 Tuint32_t
var d2 Tuint32_t
var i10 int32
var i11 int32
// var count int32 at bp+84, 4
// var index int32 at bp+80, 4
var i12 uint32
var name TPCRE2_SPTR8
var ng uintptr
var length Tuint32_t
var tc uintptr
var condcount int32
// var count1 int32 at bp+132, 4
// var index1 int32 at bp+128, 4
var name1 TPCRE2_SPTR8
var is_dupname TBOOL
var ng1 uintptr
var length1 Tuint32_t
var i13 uint32
var pp TPCRE2_SPTR8
var delimiter Tuint32_t
var length2 Tuint32_t
var callout_string uintptr
var lastchar uintptr
var delta Tsize_t
var replicate int32
var i14 int32
var linkoffset int32
var delta1 Tsize_t
var i15 Tuint32_t
var delta2 Tsize_t
var linkoffset1 int32
var oldlinkoffset int32
var linkoffset2 int32
var bra uintptr
var i16 Tuint32_t
var nlen int32
var ketcode uintptr
var bracode uintptr
var len int32
var bralink uintptr
var brazeroptr uintptr
var prop_type int32
var prop_value int32
var oldcode uintptr
var repcode uint32
var len1 int32
var ptype1 Tuint32_t
var pdata1 Tuint32_t
var caseset Tuint32_t
var i17 int32
var xclass_has_prop TBOOL
var negate_class TBOOL
var should_flip_negation TBOOL
var match_all_or_no_wide_chars TBOOL
var possessive_quantifier TBOOL
var note_group_empty TBOOL
var class_has_8bitchar int32
var mclength Tuint32_t
var skipunits Tuint32_t
// var subreqcu Tuint32_t at bp+112, 4
// var subfirstcu Tuint32_t at bp+104, 4
var groupnumber Tuint32_t
var verbarglen Tuint32_t
var verbculen Tuint32_t
// var subreqcuflags Tuint32_t at bp+116, 4
// var subfirstcuflags Tuint32_t at bp+108, 4
var oc uintptr
// var mcbuffer [8]TPCRE2_UCHAR8 at bp+72, 8
bravalue = 0
okreturn = -1
group_return = 0
repeat_min = Tuint32_t(0)
repeat_max = Tuint32_t(0)
options = *(*Tuint32_t)(unsafe.Pointer(optionsptr))
*(*uintptr)(unsafe.Pointer(bp + 96 /* pptr */)) = *(*uintptr)(unsafe.Pointer(pptrptr))
offset = uint64(0)
*(*Tsize_t)(unsafe.Pointer(bp + 120 /* length_prevgroup */)) = uint64(0)
code = *(*uintptr)(unsafe.Pointer(codeptr))
last_code = code
orig_code = code
previous = uintptr(0)
groupsetfirstcu = DFALSE
had_accept = DFALSE
matched_char = DFALSE
previous_matched_char = DFALSE
reset_caseful = DFALSE
cbits = (*Tcompile_block_8)(unsafe.Pointer(cb)).Fcbits
utf = libc.Bool32(options&DPCRE2_UTF != Tuint32_t(0))
ucp = libc.Bool32(options&DPCRE2_UCP != Tuint32_t(0))
// Set up the default and non-default settings for greediness
greedy_default = Tuint32_t(libc.Bool32(options&DPCRE2_UNGREEDY != Tuint32_t(0)))
greedy_non_default = greedy_default ^ Tuint32_t(1)
// Initialize no first unit, no required unit. REQ_UNSET means "no char
// matching encountered yet". It gets changed to REQ_NONE if we hit something that
// matches a non-fixed first unit; reqcu just remains unset if we never find one.
//
// When we hit a repeat whose minimum is zero, we may have to adjust these values
// to take the zero repeat into account. This is implemented by setting them to
// zerofirstcu and zeroreqcu when such a repeat is encountered. The individual
// item types that can be repeated set these backoff variables appropriately.
firstcu = libc.AssignUint32(&reqcu, libc.AssignUint32(&zerofirstcu, libc.AssignUint32(&zeroreqcu, Tuint32_t(0))))
firstcuflags = libc.AssignUint32(&reqcuflags, libc.AssignUint32(&zerofirstcuflags, libc.AssignUint32(&zeroreqcuflags, DREQ_UNSET)))
// The variable req_caseopt contains either the REQ_CASELESS bit or zero,
// according to the current setting of the caseless flag. The REQ_CASELESS value
// leaves the lower 28 bit empty. It is added into the firstcu or reqcu variables
// to record the case status of the value. This is used only for ASCII characters.
if options&DPCRE2_CASELESS != Tuint32_t(0) {
req_caseopt = DREQ_CASELESS
} else {
req_caseopt = uint32(0)
}
// Switch on next META item until the end of the branch
__1:
;
// Get next META item in the pattern and its potential argument.
meta = *(*Tuint32_t)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 96)))) & 0xffff0000
meta_arg = *(*Tuint32_t)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 96)))) & 0x0000ffff
// If we are in the pre-compile phase, accumulate the length used for the
// previous cycle of this loop, unless the next item is a quantifier.
if !(lengthptr != uintptr(0)) {
goto __4
}
if !(code > (*Tcompile_block_8)(unsafe.Pointer(cb)).Fstart_workspace+uintptr((*Tcompile_block_8)(unsafe.Pointer(cb)).Fworkspace_size)-uintptr(100)) {
goto __5
} /* Check for overrun */
*(*int32)(unsafe.Pointer(errorcodeptr)) = func() int32 {
if code >= (*Tcompile_block_8)(unsafe.Pointer(cb)).Fstart_workspace+uintptr((*Tcompile_block_8)(unsafe.Pointer(cb)).Fworkspace_size) {
return ERR52
}
return ERR86
}()
return 0
__5:
;
// There is at least one situation where code goes backwards: this is the
// case of a zero quantifier after a class (e.g. [ab]{0}). When the quantifier
// is processed, the whole class is eliminated. However, it is created first,
// so we have to allow memory for it. Therefore, don't ever reduce the length
// at this point.
if !(code < last_code) {
goto __6
}
code = last_code
__6:
;
// If the next thing is not a quantifier, we add the length of the previous
// item into the total, and reset the code pointer to the start of the
// workspace. Otherwise leave the previous item available to be quantified.
if !(meta < DMETA_ASTERISK || meta > DMETA_MINMAX_QUERY) {
goto __7
}
if !(uint64(0x7fffffff-20)-*(*Tsize_t)(unsafe.Pointer(lengthptr)) < Tsize_t((int64(code)-int64(orig_code))/1)) {
goto __8
}
*(*int32)(unsafe.Pointer(errorcodeptr)) = ERR20 // Integer overflow
return 0
__8:
;
*(*Tsize_t)(unsafe.Pointer(lengthptr)) += Tsize_t((int64(code) - int64(orig_code)) / 1)
if !(*(*Tsize_t)(unsafe.Pointer(lengthptr)) > uint64(int32(1)<<16)) {
goto __9
}
*(*int32)(unsafe.Pointer(errorcodeptr)) = ERR20 // Pattern is too large
return 0
__9:
;
code = orig_code
__7:
;
// Remember where this code item starts so we can catch the "backwards"
// case above next time round.
last_code = code
__4:
;
// Process the next parsed pattern item. If it is not a quantifier, remember
// where it starts so that it can be quantified when a quantifier follows.
// Checking for the legality of quantifiers happens in parse_regex(), except for
// a quantifier after an assertion that is a condition.
if !(meta < DMETA_ASTERISK || meta > DMETA_MINMAX_QUERY) {
goto __10
}
previous = code
if !(matched_char != 0 && !(had_accept != 0)) {
goto __11
}
okreturn = 1
__11:
;
__10:
;
previous_matched_char = matched_char
matched_char = DFALSE
note_group_empty = DFALSE
skipunits = Tuint32_t(0) // Default value for most subgroups
switch meta {
// ===================================================================
// The branch terminates at pattern end or | or )
case DMETA_END:
goto __13
case DMETA_ALT:
goto __14
case DMETA_KET:
goto __15
// ===================================================================
// Handle single-character metacharacters. In multiline mode, ^ disables
// the setting of any following char as a first character.
case DMETA_CIRCUMFLEX:
goto __16
case DMETA_DOLLAR:
goto __17
// There can never be a first char if '.' is first, whatever happens about
// repeats. The value of reqcu doesn't change either.
case DMETA_DOT:
goto __18
// ===================================================================
// Empty character classes are allowed if PCRE2_ALLOW_EMPTY_CLASS is set.
// Otherwise, an initial ']' is taken as a data character. When empty classes
// are allowed, [] must always fail, so generate OP_FAIL, whereas [^] must
// match any character, so generate OP_ALLANY.
case DMETA_CLASS_EMPTY:
goto __19
case DMETA_CLASS_EMPTY_NOT:
goto __20
// ===================================================================
// Non-empty character class. If the included characters are all < 256, we
// build a 32-byte bitmap of the permitted characters, except in the special
// case where there is only one such character. For negated classes, we build
// the map as usual, then invert it at the end. However, we use a different
// opcode so that data characters > 255 can be handled correctly.
//
// If the class contains characters outside the 0-255 range, a different
// opcode is compiled. It may optionally have a bit map for characters < 256,
// but those above are are explicitly listed afterwards. A flag code unit
// tells whether the bitmap is present, and whether this is a negated class or
// not.
case DMETA_CLASS_NOT:
goto __21
case DMETA_CLASS:
goto __22 // End of class processing
// ===================================================================
// Deal with (*VERB)s.
// Check for open captures before ACCEPT and close those that are within
// the same assertion level, also converting ACCEPT to ASSERT_ACCEPT in an
// assertion. In the first pass, just accumulate the length required;
// otherwise hitting (*ACCEPT) inside many nested parentheses can cause
// workspace overflow. Do not set firstcu after *ACCEPT.
case DMETA_ACCEPT:
goto __23
case DMETA_PRUNE:
goto __24
case DMETA_SKIP:
goto __25
// Fall through
case DMETA_COMMIT:
goto __26
case DMETA_FAIL:
goto __27
case DMETA_THEN:
goto __28
// Handle verbs with arguments. Arguments can be very long, especially in
// 16- and 32-bit modes, and can overflow the workspace in the first pass.
// However, the argument length is constrained to be small enough to fit in
// one code unit. This check happens in parse_regex(). In the first pass,
// instead of putting the argument into memory, we just update the length
// counter and set up an empty argument.
case DMETA_THEN_ARG:
goto __29
case DMETA_PRUNE_ARG:
goto __30
case DMETA_SKIP_ARG:
goto __31
// Fall through
case DMETA_MARK:
goto __32
case DMETA_COMMIT_ARG:
goto __33
// ===================================================================
// Handle options change. The new setting must be passed back for use in
// subsequent branches. Reset the greedy defaults and the case value for
// firstcu and reqcu.
case DMETA_OPTIONS:
goto __34
// ===================================================================
// Handle conditional subpatterns. The case of (?(Rdigits) is ambiguous
// because it could be a numerical check on recursion, or a name check on a
// group's being set. The pre-pass sets up META_COND_RNUMBER as a name so that
// we can handle it either way. We first try for a name; if not found, process
// the number.
case DMETA_COND_RNUMBER:
goto __35 // (?(Rdigits)
case DMETA_COND_NAME:
goto __36 // (?(name) or (?'name') or ?(<name>)
case DMETA_COND_RNAME:
goto __37
// The DEFINE condition is always false. Its internal groups may never
// be called, so matched_char must remain false, hence the jump to
// GROUP_PROCESS rather than GROUP_PROCESS_NOTE_EMPTY.
case DMETA_COND_DEFINE:
goto __38
// Conditional test of a group's being set.
case DMETA_COND_NUMBER:
goto __39
// Test for the PCRE2 version.
case DMETA_COND_VERSION:
goto __40
// The condition is an assertion, possibly preceded by a callout.
case DMETA_COND_ASSERT:
goto __41
// ===================================================================
// Handle all kinds of nested bracketed groups. The non-capturing,
// non-conditional cases are here; others come to GROUP_PROCESS via goto.
case DMETA_LOOKAHEAD:
goto __42
case DMETA_LOOKAHEAD_NA:
goto __43
// Optimize (?!) to (*FAIL) unless it is quantified - which is a weird
// thing to do, but Perl allows all assertions to be quantified, and when
// they contain capturing parentheses there may be a potential use for
// this feature. Not that that applies to a quantified (?!) but we allow
// it for uniformity.
case DMETA_LOOKAHEADNOT:
goto __44
case DMETA_LOOKBEHIND:
goto __45
case DMETA_LOOKBEHINDNOT:
goto __46
case DMETA_LOOKBEHIND_NA:
goto __47
case DMETA_ATOMIC:
goto __48
case DMETA_SCRIPT_RUN:
goto __49
case DMETA_NOCAPTURE:
goto __50 // End of nested group handling
// ===================================================================
// Handle named backreferences and recursions.
case DMETA_BACKREF_BYNAME:
goto __51
case DMETA_RECURSE_BYNAME:
goto __52
// ===================================================================
// Handle a numerical callout.
case DMETA_CALLOUT_NUMBER:
goto __53
// ===================================================================
// Handle a callout with a string argument. In the pre-pass we just compute
// the length without generating anything. The length in pptr[3] includes both
// delimiters; in the actual compile only the first one is copied, but a
// terminating zero is added. Any doubled delimiters within the string make
// this an overestimate, but it is not worth bothering about.
case DMETA_CALLOUT_STRING:
goto __54
// ===================================================================
// Handle repetition. The different types are all sorted out in the parsing
// pass.
case DMETA_MINMAX_PLUS:
goto __55
case DMETA_MINMAX_QUERY:
goto __56
case DMETA_MINMAX:
goto __57
case DMETA_ASTERISK:
goto __58
case DMETA_ASTERISK_PLUS:
goto __59
case DMETA_ASTERISK_QUERY:
goto __60
case DMETA_PLUS:
goto __61
case DMETA_PLUS_PLUS:
goto __62
case DMETA_PLUS_QUERY:
goto __63
case DMETA_QUERY:
goto __64
case DMETA_QUERY_PLUS:
goto __65
case DMETA_QUERY_QUERY:
goto __66
// ===================================================================
// Handle a 32-bit data character with a value greater than META_END.
case DMETA_BIGVALUE:
goto __67
// ===============================================================
// Handle a back reference by number, which is the meta argument. The
// pattern offsets for back references to group numbers less than 10 are held
// in a special vector, to avoid using more than two parsed pattern elements
// in 64-bit environments. We only need the offset to the first occurrence,
// because if that doesn't fail, subsequent ones will also be OK.
case DMETA_BACKREF:
goto __68
// ===============================================================
// Handle recursion by inserting the number of the called group (which is
// the meta argument) after OP_RECURSE. At the end of compiling the pattern is
// scanned and these numbers are replaced by offsets within the pattern. It is
// done like this to avoid problems with forward references and adjusting
// offsets when groups are duplicated and moved (as discovered in previous
// implementations). Note that a recursion does not have a set first
// character.
case DMETA_RECURSE:
goto __69
// ===============================================================
// Handle capturing parentheses; the number is the meta argument.
case DMETA_CAPTURE:
goto __70
// ===============================================================
// Handle escape sequence items. For ones like \d, the ESC_values are
// arranged to be the same as the corresponding OP_values in the default case
// when PCRE2_UCP is not set (which is the only case in which they will appear
// here).
//
// Note: \Q and \E are never seen here, as they were dealt with in
// parse_pattern(). Neither are numerical back references or recursions, which
// were turned into META_BACKREF or META_RECURSE items, respectively. \k and
// \g, when followed by names, are turned into META_BACKREF_BYNAME or
// META_RECURSE_BYNAME.
case DMETA_ESCAPE:
goto __71 // End META_ESCAPE
// ===================================================================
// Handle an unrecognized meta value. A parsed pattern value less than
// META_END is a literal. Otherwise we have a problem.
default:
goto __72
}
goto __12
// ===================================================================
// The branch terminates at pattern end or | or )
__13:
__14:
__15:
*(*Tuint32_t)(unsafe.Pointer(firstcuptr)) = firstcu
*(*Tuint32_t)(unsafe.Pointer(firstcuflagsptr)) = firstcuflags
*(*Tuint32_t)(unsafe.Pointer(reqcuptr)) = reqcu
*(*Tuint32_t)(unsafe.Pointer(reqcuflagsptr)) = reqcuflags
*(*uintptr)(unsafe.Pointer(codeptr)) = code
*(*uintptr)(unsafe.Pointer(pptrptr)) = *(*uintptr)(unsafe.Pointer(bp + 96 /* pptr */))
return okreturn
// ===================================================================
// Handle single-character metacharacters. In multiline mode, ^ disables
// the setting of any following char as a first character.
__16:
if !(options&DPCRE2_MULTILINE != Tuint32_t(0)) {
goto __73
}
if !(firstcuflags == DREQ_UNSET) {
goto __75
}
zerofirstcuflags = libc.AssignUint32(&firstcuflags, DREQ_NONE)
__75:
;
*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&code, 1))) = OP_CIRCM
goto __74
__73:
*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&code, 1))) = OP_CIRC
__74:
;
goto __12
__17:
*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&code, 1))) = func() uint8 {
if options&DPCRE2_MULTILINE != Tuint32_t(0) {
return OP_DOLLM
}
return OP_DOLL
}()
goto __12
// There can never be a first char if '.' is first, whatever happens about
// repeats. The value of reqcu doesn't change either.
__18:
matched_char = DTRUE
if !(firstcuflags == DREQ_UNSET) {
goto __76
}
firstcuflags = DREQ_NONE
__76:
;
zerofirstcu = firstcu
zerofirstcuflags = firstcuflags
zeroreqcu = reqcu
zeroreqcuflags = reqcuflags
*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&code, 1))) = func() uint8 {
if options&DPCRE2_DOTALL != Tuint32_t(0) {
return OP_ALLANY
}
return OP_ANY
}()
goto __12
// ===================================================================
// Empty character classes are allowed if PCRE2_ALLOW_EMPTY_CLASS is set.
// Otherwise, an initial ']' is taken as a data character. When empty classes
// are allowed, [] must always fail, so generate OP_FAIL, whereas [^] must
// match any character, so generate OP_ALLANY.
__19:
__20:
matched_char = DTRUE
*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&code, 1))) = func() uint8 {
if meta == DMETA_CLASS_EMPTY_NOT {
return OP_ALLANY
}
return OP_FAIL
}()
if !(firstcuflags == DREQ_UNSET) {
goto __77
}
firstcuflags = DREQ_NONE
__77:
;
zerofirstcu = firstcu
zerofirstcuflags = firstcuflags
goto __12
// ===================================================================
// Non-empty character class. If the included characters are all < 256, we
// build a 32-byte bitmap of the permitted characters, except in the special
// case where there is only one such character. For negated classes, we build
// the map as usual, then invert it at the end. However, we use a different
// opcode so that data characters > 255 can be handled correctly.
//
// If the class contains characters outside the 0-255 range, a different
// opcode is compiled. It may optionally have a bit map for characters < 256,
// but those above are are explicitly listed afterwards. A flag code unit
// tells whether the bitmap is present, and whether this is a negated class or
// not.
__21:
__22:
matched_char = DTRUE
negate_class = libc.Bool32(meta == DMETA_CLASS_NOT)
// We can optimize the case of a single character in a class by generating
// OP_CHAR or OP_CHARI if it's positive, or OP_NOT or OP_NOTI if it's
// negative. In the negative case there can be no first char if this item is
// first, whatever repeat count may follow. In the case of reqcu, save the
// previous value for reinstating.
// NOTE: at present this optimization is not effective if the only
// character in a class in 32-bit, non-UCP mode has its top bit set.
if !(*(*Tuint32_t)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 96)) + 1*4)) < DMETA_END && *(*Tuint32_t)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 96)) + 2*4)) == DMETA_CLASS_END) {
goto __78
}
c = *(*Tuint32_t)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 96 /* pptr */)) + 1*4))
*(*uintptr)(unsafe.Pointer(bp + 96 /* pptr */)) += 4 * uintptr(2) // Move on to class end
if !(meta == DMETA_CLASS) {
goto __79
} /* A positive one-char class can be */
// handled as a normal literal character.
meta = c // Set up the character
goto NORMAL_CHAR_SET
__79:
;
// Handle a negative one-character class
zeroreqcu = reqcu
zeroreqcuflags = reqcuflags
if !(firstcuflags == DREQ_UNSET) {
goto __80
}
firstcuflags = DREQ_NONE
__80:
;
zerofirstcu = firstcu
zerofirstcuflags = firstcuflags
// For caseless UTF or UCP mode, check whether this character has more
// than one other case. If so, generate a special OP_NOTPROP item instead of
// OP_NOTI.
if !((utf != 0 || ucp != 0) && options&DPCRE2_CASELESS != Tuint32_t(0) && libc.AssignUint32(&d, Tuint32_t((*Tucd_record)(unsafe.Pointer(uintptr(unsafe.Pointer(&X_pcre2_ucd_records_8))+uintptr(X_pcre2_ucd_stage2_8[int32(X_pcre2_ucd_stage1_8[int32(c)/DUCD_BLOCK_SIZE])*DUCD_BLOCK_SIZE+int32(c)%DUCD_BLOCK_SIZE])*12)).Fcaseset)) != Tuint32_t(0)) {
goto __81
}
*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&code, 1))) = OP_NOTPROP
*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&code, 1))) = TPCRE2_UCHAR8(DPT_CLIST)
*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&code, 1))) = TPCRE2_UCHAR8(d)
goto __12 // We are finished with this class
__81:
;
// Char has only one other case, or UCP not available
*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&code, 1))) = func() uint8 {
if options&DPCRE2_CASELESS != Tuint32_t(0) {
return OP_NOTI
}
return OP_NOT
}()
code += func() uintptr {
if utf != 0 && c > Tuint32_t(DMAX_UTF_SINGLE_CU) {
return uintptr(X_pcre2_ord2utf_8(tls, c, code))
}
return uintptr(func() int32 { *(*TPCRE2_UCHAR8)(unsafe.Pointer(code)) = TPCRE2_UCHAR8(c); return 1 }())
}()
goto __12 // We are finished with this class
__78:
; // End of 1-char optimization
// Handle character classes that contain more than just one literal
// character. If there are exactly two characters in a positive class, see if
// they are case partners. This can be optimized to generate a caseless single
// character match (which also sets first/required code units if relevant).
if !(meta == DMETA_CLASS && *(*Tuint32_t)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 96)) + 1*4)) < DMETA_END && *(*Tuint32_t)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 96)) + 2*4)) < DMETA_END && *(*Tuint32_t)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 96)) + 3*4)) == DMETA_CLASS_END) {
goto __82
}
c1 = *(*Tuint32_t)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 96 /* pptr */)) + 1*4))
if !(int32((*Tucd_record)(unsafe.Pointer(uintptr(unsafe.Pointer(&X_pcre2_ucd_records_8))+uintptr(X_pcre2_ucd_stage2_8[int32(X_pcre2_ucd_stage1_8[int32(c1)/DUCD_BLOCK_SIZE])*DUCD_BLOCK_SIZE+int32(c1)%DUCD_BLOCK_SIZE])*12)).Fcaseset) == 0) {
goto __83
}
if !((utf != 0 || ucp != 0) && c1 > Tuint32_t(127)) {
goto __84
}
d1 = Tuint32_t(int32(c1) + (*Tucd_record)(unsafe.Pointer(uintptr(unsafe.Pointer(&X_pcre2_ucd_records_8))+uintptr(X_pcre2_ucd_stage2_8[int32(X_pcre2_ucd_stage1_8[int32(c1)/DUCD_BLOCK_SIZE])*DUCD_BLOCK_SIZE+int32(c1)%DUCD_BLOCK_SIZE])*12)).Fother_case)
goto __85
__84:
d1 = Tuint32_t(*(*Tuint8_t)(unsafe.Pointer((*Tcompile_block_8)(unsafe.Pointer(cb)).Ffcc + uintptr(c1))))
__85:
;
if !(c1 != d1 && *(*Tuint32_t)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 96)) + 2*4)) == d1) {
goto __86
}
*(*uintptr)(unsafe.Pointer(bp + 96 /* pptr */)) += 4 * uintptr(3) // Move on to class end
meta = c1
if !(options&DPCRE2_CASELESS == Tuint32_t(0)) {
goto __87
}
reset_caseful = DTRUE
options = options | DPCRE2_CASELESS
req_caseopt = DREQ_CASELESS
__87:
;
goto CLASS_CASELESS_CHAR
__86:
;
__83:
;
__82:
;
// If a non-extended class contains a negative special such as \S, we need
// to flip the negation flag at the end, so that support for characters > 255
// works correctly (they are all included in the class). An extended class may
// need to insert specific matching or non-matching code for wide characters.
//
should_flip_negation = libc.AssignInt32(&match_all_or_no_wide_chars, DFALSE)
// Extended class (xclass) will be used when characters > 255
// might match.
xclass = DFALSE
*(*uintptr)(unsafe.Pointer(bp + 64 /* class_uchardata */)) = code + uintptr(DLINK_SIZE) + uintptr(2) // For XCLASS items
class_uchardata_base = *(*uintptr)(unsafe.Pointer(bp + 64 /* class_uchardata */)) // Save the start
// For optimization purposes, we track some properties of the class:
// class_has_8bitchar will be non-zero if the class contains at least one
// character with a code point less than 256; xclass_has_prop will be TRUE if
// Unicode property checks are present in the class.
class_has_8bitchar = 0
xclass_has_prop = DFALSE
// Initialize the 256-bit (32-byte) bit map to all zeros. We build the map
// in a temporary bit of memory, in case the class contains fewer than two
// 8-bit characters because in that case the compiled code doesn't use the bit
// map.
libc.Xmemset(tls, bp, 0, uint64(32)*uint64(unsafe.Sizeof(Tuint8_t(0))))
// Process items until META_CLASS_END is reached.
__88:
if !(libc.AssignUint32(&meta, *(*Tuint32_t)(unsafe.Pointer(libc.PreIncUintptr(&*(*uintptr)(unsafe.Pointer(bp + 96)), 4)))) != DMETA_CLASS_END) {
goto __89
}
// Handle POSIX classes such as [:alpha:] etc.
if !(meta == DMETA_POSIX || meta == DMETA_POSIX_NEG) {
goto __90
}
local_negate = libc.Bool32(meta == DMETA_POSIX_NEG)
posix_class = int32(*(*Tuint32_t)(unsafe.Pointer(libc.PreIncUintptr(&*(*uintptr)(unsafe.Pointer(bp + 96)), 4))))
should_flip_negation = local_negate // Note negative special
// If matching is caseless, upper and lower are converted to alpha.
// This relies on the fact that the class table starts with alpha,
// lower, upper as the first 3 entries.
if !(options&DPCRE2_CASELESS != Tuint32_t(0) && posix_class <= 2) {
goto __91
}
posix_class = 0
__91:
;
// When PCRE2_UCP is set, some of the POSIX classes are converted to
// different escape sequences that use Unicode properties \p or \P.
// Others that are not available via \p or \P have to generate
// XCL_PROP/XCL_NOTPROP directly, which is done here.
if !(options&DPCRE2_UCP != Tuint32_t(0)) {
goto __92
}
switch posix_class {
case DPC_GRAPH:
goto __94
case DPC_PRINT:
goto __95
case DPC_PUNCT:
goto __96
// For the other POSIX classes (ascii, xdigit) we are going to
// fall through to the non-UCP case and build a bit map for
// characters with code points less than 256. However, if we are in
// a negated POSIX class, characters with code points greater than
// 255 must either all match or all not match, depending on whether
// the whole class is not or is negated. For example, for
// [[:^ascii:]... they must all match, whereas for [^[:^xdigit:]...
// they must not.
//
// In the special case where there are no xclass items, this is
// automatically handled by the use of OP_CLASS or OP_NCLASS, but an
// explicit range is needed for OP_XCLASS. Setting a flag here
// causes the range to be generated later when it is known that
// OP_XCLASS is required. In the 8-bit library this is relevant only in
// utf mode, since no wide characters can exist otherwise.
default:
goto __97
}
goto __93
__94:
__95:
__96:
*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&*(*uintptr)(unsafe.Pointer(bp + 64 /* class_uchardata */)), 1))) = func() uint8 {
if local_negate != 0 {
return uint8(DXCL_NOTPROP)
}
return uint8(DXCL_PROP)
}()
*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&*(*uintptr)(unsafe.Pointer(bp + 64 /* class_uchardata */)), 1))) = func() uint8 {
if posix_class == DPC_GRAPH {
return uint8(DPT_PXGRAPH)
}
return func() uint8 {
if posix_class == DPC_PRINT {
return uint8(DPT_PXPRINT)
}
return uint8(DPT_PXPUNCT)
}()
}()
*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&*(*uintptr)(unsafe.Pointer(bp + 64 /* class_uchardata */)), 1))) = TPCRE2_UCHAR8(0)
xclass_has_prop = DTRUE
goto CONTINUE_CLASS
// For the other POSIX classes (ascii, xdigit) we are going to
// fall through to the non-UCP case and build a bit map for
// characters with code points less than 256. However, if we are in
// a negated POSIX class, characters with code points greater than
// 255 must either all match or all not match, depending on whether
// the whole class is not or is negated. For example, for
// [[:^ascii:]... they must all match, whereas for [^[:^xdigit:]...
// they must not.
//
// In the special case where there are no xclass items, this is
// automatically handled by the use of OP_CLASS or OP_NCLASS, but an
// explicit range is needed for OP_XCLASS. Setting a flag here
// causes the range to be generated later when it is known that
// OP_XCLASS is required. In the 8-bit library this is relevant only in
// utf mode, since no wide characters can exist otherwise.
__97:
if !(utf != 0) {
goto __98
}
match_all_or_no_wide_chars = match_all_or_no_wide_chars | local_negate
__98:
;
goto __93
__93:
;
__92:
;
// In the non-UCP case, or when UCP makes no difference, we build the
// bit map for the POSIX class in a chunk of local store because we may
// be adding and subtracting from it, and we don't want to subtract bits
// that may be in the main map already. At the end we or the result into
// the bit map that is being built.
posix_class = posix_class * 3
// Copy in the first table (always present)
libc.Xmemcpy(tls, bp+32, cbits+uintptr(posix_class_maps[posix_class]),
uint64(32)*uint64(unsafe.Sizeof(Tuint8_t(0))))
// If there is a second table, add or remove it as required.
taboffset = posix_class_maps[posix_class+1]
tabopt = posix_class_maps[posix_class+2]
if !(taboffset >= 0) {
goto __99
}
if !(tabopt >= 0) {
goto __100
}
{
i = 0
__102:
if !(i < 32) {
goto __104
}
*(*Tuint8_t)(unsafe.Pointer(bp + 32 + uintptr(i))) |= Tuint8_t(int32(*(*Tuint8_t)(unsafe.Pointer(cbits + uintptr(i+taboffset)))))
goto __103
__103:
i++
goto __102
goto __104
__104:
}
goto __101
__100:
{
i1 = 0
__105:
if !(i1 < 32) {
goto __107
}
*(*Tuint8_t)(unsafe.Pointer(bp + 32 + uintptr(i1))) &= Tuint8_t(^int32(*(*Tuint8_t)(unsafe.Pointer(cbits + uintptr(i1+taboffset)))))
goto __106
__106:
i1++
goto __105
goto __107
__107:
}
__101:
;
__99:
;
// Now see if we need to remove any special characters. An option
// value of 1 removes vertical space and 2 removes underscore.
if !(tabopt < 0) {
goto __108
}
tabopt = -tabopt
__108:
;
if !(tabopt == 1) {
goto __109
}
*(*Tuint8_t)(unsafe.Pointer(bp + 32 + 1)) &= libc.Uint8FromInt32(libc.CplInt32(0x3c))
goto __110
__109:
if !(tabopt == 2) {
goto __111
}
*(*Tuint8_t)(unsafe.Pointer(bp + 32 + 11)) &= Tuint8_t(0x7f)
__111:
;
__110:
;
// Add the POSIX table or its complement into the main table that is
// being built and we are done.
if !(local_negate != 0) {
goto __112
}
{
i2 = 0
__114:
if !(i2 < 32) {
goto __116
}
*(*Tuint8_t)(unsafe.Pointer(bp + uintptr(i2))) |= Tuint8_t(int32(Tuint8_t(^int32(*(*Tuint8_t)(unsafe.Pointer(bp + 32 + uintptr(i2)))))))
goto __115
__115:
i2++
goto __114
goto __116
__116:
}
goto __113
__112:
{
i3 = 0
__117:
if !(i3 < 32) {
goto __119
}
*(*Tuint8_t)(unsafe.Pointer(bp + uintptr(i3))) |= Tuint8_t(int32(*(*Tuint8_t)(unsafe.Pointer(bp + 32 + uintptr(i3)))))
goto __118
__118:
i3++
goto __117
goto __119
__119:
}
__113:
;
// Every class contains at least one < 256 character.
class_has_8bitchar = 1
goto CONTINUE_CLASS // End of POSIX handling
__90:
;
// Other than POSIX classes, the only items we should encounter are
// \d-type escapes and literal characters (possibly as ranges).
if !(meta == DMETA_BIGVALUE) {
goto __120
}
meta = *(*Tuint32_t)(unsafe.Pointer(libc.PreIncUintptr(&*(*uintptr)(unsafe.Pointer(bp + 96)), 4)))
goto CLASS_LITERAL
__120:
;
// Any other non-literal must be an escape
if !(meta >= DMETA_END) {
goto __121
}
if !(meta&0xffff0000 != DMETA_ESCAPE) {
goto __123
}
*(*int32)(unsafe.Pointer(errorcodeptr)) = ERR89 // Internal error - unrecognized.
return 0
__123:
;
escape = meta & 0x0000ffff
// Every class contains at least one < 256 character.
class_has_8bitchar++
switch escape {
case ESC_d:
goto __125
case ESC_D:
goto __126
case ESC_w:
goto __127
case ESC_W:
goto __128
// Perl 5.004 onwards omitted VT from \s, but restored it at Perl
// 5.18. Before PCRE 8.34, we had to preserve the VT bit if it was
// previously set by something earlier in the character class.
// Luckily, the value of CHAR_VT is 0x0b in both ASCII and EBCDIC, so
// we could just adjust the appropriate bit. From PCRE 8.34 we no
// longer treat \s and \S specially.
case ESC_s:
goto __129
case ESC_S:
goto __130
// When adding the horizontal or vertical space lists to a class, or
// their complements, disable PCRE2_CASELESS, because it justs wastes
// time, and in the "not-x" UTF cases can create unwanted duplicates in
// the XCLASS list (provoked by characters that have more than one other
// case and by both cases being in the same "not-x" sublist).
case ESC_h:
goto __131
case ESC_H:
goto __132
case ESC_v:
goto __133
case ESC_V:
goto __134
// If Unicode is not supported, \P and \p are not allowed and are
// faulted at parse time, so will never appear here.
case ESC_p:
goto __135
case ESC_P:
goto __136
}
goto __124
__125:
{
i4 = 0
__137:
if !(i4 < 32) {
goto __139
}
*(*Tuint8_t)(unsafe.Pointer(bp + uintptr(i4))) |= Tuint8_t(int32(*(*Tuint8_t)(unsafe.Pointer(cbits + uintptr(i4+Dcbit_digit)))))
goto __138
__138:
i4++
goto __137
goto __139
__139:
}
goto __124
__126:
should_flip_negation = DTRUE
{
i5 = 0
__140:
if !(i5 < 32) {
goto __142
}
*(*Tuint8_t)(unsafe.Pointer(bp + uintptr(i5))) |= Tuint8_t(int32(Tuint8_t(^int32(*(*Tuint8_t)(unsafe.Pointer(cbits + uintptr(i5+Dcbit_digit)))))))
goto __141
__141:
i5++
goto __140
goto __142
__142:
}
goto __124
__127:
{
i6 = 0
__143:
if !(i6 < 32) {
goto __145
}
*(*Tuint8_t)(unsafe.Pointer(bp + uintptr(i6))) |= Tuint8_t(int32(*(*Tuint8_t)(unsafe.Pointer(cbits + uintptr(i6+Dcbit_word)))))
goto __144
__144:
i6++
goto __143
goto __145
__145:
}
goto __124
__128:
should_flip_negation = DTRUE
{
i7 = 0
__146:
if !(i7 < 32) {
goto __148
}
*(*Tuint8_t)(unsafe.Pointer(bp + uintptr(i7))) |= Tuint8_t(int32(Tuint8_t(^int32(*(*Tuint8_t)(unsafe.Pointer(cbits + uintptr(i7+Dcbit_word)))))))
goto __147
__147:
i7++
goto __146
goto __148
__148:
}
goto __124
// Perl 5.004 onwards omitted VT from \s, but restored it at Perl
// 5.18. Before PCRE 8.34, we had to preserve the VT bit if it was
// previously set by something earlier in the character class.
// Luckily, the value of CHAR_VT is 0x0b in both ASCII and EBCDIC, so
// we could just adjust the appropriate bit. From PCRE 8.34 we no
// longer treat \s and \S specially.
__129:
{
i8 = 0
__149:
if !(i8 < 32) {
goto __151
}
*(*Tuint8_t)(unsafe.Pointer(bp + uintptr(i8))) |= Tuint8_t(int32(*(*Tuint8_t)(unsafe.Pointer(cbits + uintptr(i8+Dcbit_space)))))
goto __150
__150:
i8++
goto __149
goto __151
__151:
}
goto __124
__130:
should_flip_negation = DTRUE
{
i9 = 0
__152:
if !(i9 < 32) {
goto __154
}
*(*Tuint8_t)(unsafe.Pointer(bp + uintptr(i9))) |= Tuint8_t(int32(Tuint8_t(^int32(*(*Tuint8_t)(unsafe.Pointer(cbits + uintptr(i9+Dcbit_space)))))))
goto __153
__153:
i9++
goto __152
goto __154
__154:
}
goto __124
// When adding the horizontal or vertical space lists to a class, or
// their complements, disable PCRE2_CASELESS, because it justs wastes
// time, and in the "not-x" UTF cases can create unwanted duplicates in
// the XCLASS list (provoked by characters that have more than one other
// case and by both cases being in the same "not-x" sublist).
__131:
add_list_to_class(tls, bp, bp+64,
options&libc.CplUint32(DPCRE2_CASELESS), cb, uintptr(unsafe.Pointer(&X_pcre2_hspace_list_8)), DNOTACHAR)
goto __124
__132:
add_not_list_to_class(tls, bp, bp+64,
options&libc.CplUint32(DPCRE2_CASELESS), cb, uintptr(unsafe.Pointer(&X_pcre2_hspace_list_8)))
goto __124
__133:
add_list_to_class(tls, bp, bp+64,
options&libc.CplUint32(DPCRE2_CASELESS), cb, uintptr(unsafe.Pointer(&X_pcre2_vspace_list_8)), DNOTACHAR)
goto __124
__134:
add_not_list_to_class(tls, bp, bp+64,
options&libc.CplUint32(DPCRE2_CASELESS), cb, uintptr(unsafe.Pointer(&X_pcre2_vspace_list_8)))
goto __124
// If Unicode is not supported, \P and \p are not allowed and are
// faulted at parse time, so will never appear here.
__135:
__136:
ptype = *(*Tuint32_t)(unsafe.Pointer(libc.PreIncUintptr(&*(*uintptr)(unsafe.Pointer(bp + 96)), 4))) >> 16
pdata = *(*Tuint32_t)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 96)))) & Tuint32_t(0xffff)
*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&*(*uintptr)(unsafe.Pointer(bp + 64 /* class_uchardata */)), 1))) = func() uint8 {
if escape == ESC_p {
return uint8(DXCL_PROP)
}
return uint8(DXCL_NOTPROP)
}()
*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&*(*uintptr)(unsafe.Pointer(bp + 64 /* class_uchardata */)), 1))) = TPCRE2_UCHAR8(ptype)
*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&*(*uintptr)(unsafe.Pointer(bp + 64 /* class_uchardata */)), 1))) = TPCRE2_UCHAR8(pdata)
xclass_has_prop = DTRUE
class_has_8bitchar-- // Undo!
goto __124
__124:
;
goto CONTINUE_CLASS
goto __122
__121:
CLASS_LITERAL:
c2 = libc.AssignUint32(&d2, meta)
// Remember if \r or \n were explicitly used
if !(c2 == Tuint32_t('\015') || c2 == Tuint32_t('\012')) {
goto __155
}
*(*Tuint32_t)(unsafe.Pointer(cb + 208)) |= Tuint32_t(DPCRE2_HASCRORLF)
__155:
;
// Process a character range
if !(*(*Tuint32_t)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 96)) + 1*4)) == DMETA_RANGE_LITERAL || *(*Tuint32_t)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 96)) + 1*4)) == DMETA_RANGE_ESCAPED) {
goto __156
}
*(*uintptr)(unsafe.Pointer(bp + 96 /* pptr */)) += 4 * uintptr(2)
d2 = *(*Tuint32_t)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 96 /* pptr */))))
if !(d2 == DMETA_BIGVALUE) {
goto __157
}
d2 = *(*Tuint32_t)(unsafe.Pointer(libc.PreIncUintptr(&*(*uintptr)(unsafe.Pointer(bp + 96)), 4)))
__157:
;
// Remember an explicit \r or \n, and add the range to the class.
if !(d2 == Tuint32_t('\015') || d2 == Tuint32_t('\012')) {
goto __158
}
*(*Tuint32_t)(unsafe.Pointer(cb + 208)) |= Tuint32_t(DPCRE2_HASCRORLF)
__158:
;
// In an EBCDIC environment, Perl treats alphabetic ranges specially
// because there are holes in the encoding, and simply using the range
// A-Z (for example) would include the characters in the holes. This
// applies only to literal ranges; [\xC1-\xE9] is different to [A-Z].
// Not an EBCDIC special range
class_has_8bitchar = int32(uint32(class_has_8bitchar) + add_to_class(tls, bp, bp+64, options, cb, c2, d2))
goto CONTINUE_CLASS // Go get the next char in the class
__156:
; // End of range handling
// Handle a single character.
class_has_8bitchar = int32(uint32(class_has_8bitchar) + add_to_class(tls, bp, bp+64, options, cb, meta, meta))
__122:
;
// Continue to the next item in the class.
CONTINUE_CLASS:
// If any wide characters or Unicode properties have been encountered,
// set xclass = TRUE. Then, in the pre-compile phase, accumulate the length
// of the extra data and reset the pointer. This is so that very large
// classes that contain a zillion wide characters or Unicode property tests
// do not overwrite the workspace (which is on the stack).
if !(*(*uintptr)(unsafe.Pointer(bp + 64)) > class_uchardata_base) {
goto __159
}
xclass = DTRUE
if !(lengthptr != uintptr(0)) {
goto __160
}
*(*Tsize_t)(unsafe.Pointer(lengthptr)) += Tsize_t((int64(*(*uintptr)(unsafe.Pointer(bp + 64))) - int64(class_uchardata_base)) / 1)
*(*uintptr)(unsafe.Pointer(bp + 64 /* class_uchardata */)) = class_uchardata_base
__160:
;
__159:
;
goto __88 // Needed to avoid error when not supporting wide chars
goto __88
__89:
; // End of main class-processing loop
// If this class is the first thing in the branch, there can be no first
// char setting, whatever the repeat count. Any reqcu setting must remain
// unchanged after any kind of repeat.
if !(firstcuflags == DREQ_UNSET) {
goto __161
}
firstcuflags = DREQ_NONE
__161:
;
zerofirstcu = firstcu
zerofirstcuflags = firstcuflags
zeroreqcu = reqcu
zeroreqcuflags = reqcuflags
// If there are characters with values > 255, or Unicode property settings
// (\p or \P), we have to compile an extended class, with its own opcode,
// unless there were no property settings and there was a negated special such
// as \S in the class, and PCRE2_UCP is not set, because in that case all
// characters > 255 are in or not in the class, so any that were explicitly
// given as well can be ignored.
//
// In the UCP case, if certain negated POSIX classes ([:^ascii:] or
// [^:xdigit:]) were present in a class, we either have to match or not match
// all wide characters (depending on whether the whole class is or is not
// negated). This requirement is indicated by match_all_or_no_wide_chars being
// true. We do this by including an explicit range, which works in both cases.
// This applies only in UTF and 16-bit and 32-bit non-UTF modes, since there
// cannot be any wide characters in 8-bit non-UTF mode.
//
// When there *are* properties in a positive UTF-8 or any 16-bit or 32_bit
// class where \S etc is present without PCRE2_UCP, causing an extended class
// to be compiled, we make sure that all characters > 255 are included by
// forcing match_all_or_no_wide_chars to be true.
//
// If, when generating an xclass, there are no characters < 256, we can omit
// the bitmap in the actual compiled code.
if !(xclass != 0 && (options&DPCRE2_UCP != Tuint32_t(0) || xclass_has_prop != 0 || !(should_flip_negation != 0))) {
goto __162
}
if !(match_all_or_no_wide_chars != 0 || utf != 0 && should_flip_negation != 0 && !(negate_class != 0) && options&DPCRE2_UCP == Tuint32_t(0)) {
goto __163
}
*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&*(*uintptr)(unsafe.Pointer(bp + 64 /* class_uchardata */)), 1))) = TPCRE2_UCHAR8(DXCL_RANGE)
if !(utf != 0) {
goto __164
} /* Will always be utf in the 8-bit library */
*(*uintptr)(unsafe.Pointer(bp + 64 /* class_uchardata */)) += uintptr(X_pcre2_ord2utf_8(tls, uint32(0x100), *(*uintptr)(unsafe.Pointer(bp + 64 /* class_uchardata */))))
*(*uintptr)(unsafe.Pointer(bp + 64 /* class_uchardata */)) += uintptr(X_pcre2_ord2utf_8(tls, uint32(DMAX_UTF_CODE_POINT), *(*uintptr)(unsafe.Pointer(bp + 64 /* class_uchardata */))))
goto __165
__164: /* Can only happen for the 16-bit & 32-bit libraries */
;
__165:
;
__163:
;
*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&*(*uintptr)(unsafe.Pointer(bp + 64 /* class_uchardata */)), 1))) = TPCRE2_UCHAR8(DXCL_END) // Marks the end of extra data
*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&code, 1))) = OP_XCLASS
code += uintptr(DLINK_SIZE)
*(*TPCRE2_UCHAR8)(unsafe.Pointer(code)) = func() uint8 {
if negate_class != 0 {
return uint8(DXCL_NOT)
}
return uint8(0)
}()
if !(xclass_has_prop != 0) {
goto __166
}
*(*TPCRE2_UCHAR8)(unsafe.Pointer(code)) |= TPCRE2_UCHAR8(DXCL_HASPROP)
__166:
;
// If the map is required, move up the extra data to make room for it;
// otherwise just move the code pointer to the end of the extra data.
if !(class_has_8bitchar > 0) {
goto __167
}
*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&code, 1))) |= TPCRE2_UCHAR8(DXCL_MAP)
libc.Xmemmove(tls, code+uintptr(uint64(32)/uint64(unsafe.Sizeof(TPCRE2_UCHAR8(0)))), code,
uint64((int64(*(*uintptr)(unsafe.Pointer(bp + 64)))-int64(code))/1*int64(DPCRE2_CODE_UNIT_WIDTH/8)))
if !(negate_class != 0 && !(xclass_has_prop != 0)) {
goto __169
}
// Using 255 ^ instead of ~ avoids clang sanitize warning.
{
i10 = 0
__170:
if !(i10 < 32) {
goto __172
}
*(*Tuint8_t)(unsafe.Pointer(bp + uintptr(i10))) = Tuint8_t(255 ^ int32(*(*Tuint8_t)(unsafe.Pointer(bp + uintptr(i10)))))
goto __171
__171:
i10++
goto __170
goto __172
__172:
}
__169:
;
libc.Xmemcpy(tls, code, bp, uint64(32))
code = *(*uintptr)(unsafe.Pointer(bp + 64)) + uintptr(uint64(32)/uint64(unsafe.Sizeof(TPCRE2_UCHAR8(0))))
goto __168
__167:
code = *(*uintptr)(unsafe.Pointer(bp + 64 /* class_uchardata */))
__168:
;
// Now fill in the complete length of the item
*(*TPCRE2_UCHAR8)(unsafe.Pointer(previous + 1)) = TPCRE2_UCHAR8(int32((int64(code)-int64(previous))/1) >> 8)
*(*TPCRE2_UCHAR8)(unsafe.Pointer(previous + 2)) = TPCRE2_UCHAR8(int32((int64(code)-int64(previous))/1) & 255)
goto __12 // End of class handling
__162:
;
// If there are no characters > 255, or they are all to be included or
// excluded, set the opcode to OP_CLASS or OP_NCLASS, depending on whether the
// whole class was negated and whether there were negative specials such as \S
// (non-UCP) in the class. Then copy the 32-byte map into the code vector,
// negating it if necessary.
*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&code, 1))) = func() uint8 {
if negate_class == should_flip_negation {
return OP_CLASS
}
return OP_NCLASS
}()
if !(lengthptr == uintptr(0)) {
goto __173
} /* Save time in the pre-compile phase */
if !(negate_class != 0) {
goto __174
}
// Using 255 ^ instead of ~ avoids clang sanitize warning.
{
i11 = 0
__175:
if !(i11 < 32) {
goto __177
}
*(*Tuint8_t)(unsafe.Pointer(bp + uintptr(i11))) = Tuint8_t(255 ^ int32(*(*Tuint8_t)(unsafe.Pointer(bp + uintptr(i11)))))
goto __176
__176:
i11++
goto __175
goto __177
__177:
}
__174:
;
libc.Xmemcpy(tls, code, bp, uint64(32))
__173:
;
code += uintptr(uint64(32) / uint64(unsafe.Sizeof(TPCRE2_UCHAR8(0))))
goto __12 // End of class processing
// ===================================================================
// Deal with (*VERB)s.
// Check for open captures before ACCEPT and close those that are within
// the same assertion level, also converting ACCEPT to ASSERT_ACCEPT in an
// assertion. In the first pass, just accumulate the length required;
// otherwise hitting (*ACCEPT) inside many nested parentheses can cause
// workspace overflow. Do not set firstcu after *ACCEPT.
__23:
(*Tcompile_block_8)(unsafe.Pointer(cb)).Fhad_accept = libc.AssignInt32(&had_accept, DTRUE)
oc = (*Tcompile_block_8)(unsafe.Pointer(cb)).Fopen_caps
__178:
if !(oc != uintptr(0) && int32((*Topen_capitem)(unsafe.Pointer(oc)).Fassert_depth) >= int32((*Tcompile_block_8)(unsafe.Pointer(cb)).Fassert_depth)) {
goto __180
}
if !(lengthptr != uintptr(0)) {
goto __181
}
*(*Tsize_t)(unsafe.Pointer(lengthptr)) += uint64(1*(DPCRE2_CODE_UNIT_WIDTH/8) + DIMM2_SIZE)
goto __182
__181:
*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&code, 1))) = OP_CLOSE
*(*TPCRE2_UCHAR8)(unsafe.Pointer(code)) = TPCRE2_UCHAR8(int32((*Topen_capitem)(unsafe.Pointer(oc)).Fnumber) >> 8)
*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + 1)) = TPCRE2_UCHAR8(int32((*Topen_capitem)(unsafe.Pointer(oc)).Fnumber) & 255)
code += uintptr(DIMM2_SIZE)
__182:
;
goto __179
__179:
oc = (*Topen_capitem)(unsafe.Pointer(oc)).Fnext
goto __178
goto __180
__180:
;
*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&code, 1))) = func() uint8 {
if int32((*Tcompile_block_8)(unsafe.Pointer(cb)).Fassert_depth) > 0 {
return OP_ASSERT_ACCEPT
}
return OP_ACCEPT
}()
if !(firstcuflags == DREQ_UNSET) {
goto __183
}
firstcuflags = DREQ_NONE
__183:
;
goto __12
__24:
__25:
(*Tcompile_block_8)(unsafe.Pointer(cb)).Fhad_pruneorskip = DTRUE
// Fall through
__26:
__27:
*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&code, 1))) = TPCRE2_UCHAR8(verbops[(meta-DMETA_MARK)>>16])
goto __12
__28:
*(*Tuint32_t)(unsafe.Pointer(cb + 208)) |= Tuint32_t(DPCRE2_HASTHEN)
*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&code, 1))) = OP_THEN
goto __12
// Handle verbs with arguments. Arguments can be very long, especially in
// 16- and 32-bit modes, and can overflow the workspace in the first pass.
// However, the argument length is constrained to be small enough to fit in
// one code unit. This check happens in parse_regex(). In the first pass,
// instead of putting the argument into memory, we just update the length
// counter and set up an empty argument.
__29:
*(*Tuint32_t)(unsafe.Pointer(cb + 208)) |= Tuint32_t(DPCRE2_HASTHEN)
goto VERB_ARG
__30:
__31:
(*Tcompile_block_8)(unsafe.Pointer(cb)).Fhad_pruneorskip = DTRUE
// Fall through
__32:
__33:
VERB_ARG:
*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&code, 1))) = TPCRE2_UCHAR8(verbops[(meta-DMETA_MARK)>>16])
// The length is in characters.
verbarglen = *(*Tuint32_t)(unsafe.Pointer(libc.PreIncUintptr(&*(*uintptr)(unsafe.Pointer(bp + 96)), 4)))
verbculen = Tuint32_t(0)
*(*uintptr)(unsafe.Pointer(bp + 88 /* tempcode */)) = libc.PostIncUintptr(&code, 1)
{
i17 = 0
__184:
if !(i17 < int32(verbarglen)) {
goto __186
}
meta = *(*Tuint32_t)(unsafe.Pointer(libc.PreIncUintptr(&*(*uintptr)(unsafe.Pointer(bp + 96)), 4)))
if !(utf != 0) {
goto __187
}
mclength = X_pcre2_ord2utf_8(tls, meta, bp+72)
goto __188
__187:
mclength = Tuint32_t(1)
*(*TPCRE2_UCHAR8)(unsafe.Pointer(bp + 72)) = TPCRE2_UCHAR8(meta)
__188:
;
if !(lengthptr != uintptr(0)) {
goto __189
}
*(*Tsize_t)(unsafe.Pointer(lengthptr)) += Tsize_t(mclength)
goto __190
__189:
libc.Xmemcpy(tls, code, bp+72, uint64(mclength*Tuint32_t(DPCRE2_CODE_UNIT_WIDTH/8)))
code += uintptr(mclength)
verbculen = verbculen + mclength
__190:
;
goto __185
__185:
i17++
goto __184
goto __186
__186:
}
*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 88 /* tempcode */)))) = TPCRE2_UCHAR8(verbculen) // Fill in the code unit length
*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&code, 1))) = TPCRE2_UCHAR8(0) // Terminating zero
goto __12
// ===================================================================
// Handle options change. The new setting must be passed back for use in
// subsequent branches. Reset the greedy defaults and the case value for
// firstcu and reqcu.
__34:
*(*Tuint32_t)(unsafe.Pointer(optionsptr)) = libc.AssignUint32(&options, *(*Tuint32_t)(unsafe.Pointer(libc.PreIncUintptr(&*(*uintptr)(unsafe.Pointer(bp + 96)), 4))))
greedy_default = Tuint32_t(libc.Bool32(options&DPCRE2_UNGREEDY != Tuint32_t(0)))
greedy_non_default = greedy_default ^ Tuint32_t(1)
if options&DPCRE2_CASELESS != Tuint32_t(0) {
req_caseopt = DREQ_CASELESS
} else {
req_caseopt = uint32(0)
}
goto __12
// ===================================================================
// Handle conditional subpatterns. The case of (?(Rdigits) is ambiguous
// because it could be a numerical check on recursion, or a name check on a
// group's being set. The pre-pass sets up META_COND_RNUMBER as a name so that
// we can handle it either way. We first try for a name; if not found, process
// the number.
__35: // (?(Rdigits)
__36: // (?(name) or (?'name') or ?(<name>)
__37: // (?(R&name) - test for recursion
bravalue = OP_COND
ng = (*Tcompile_block_8)(unsafe.Pointer(cb)).Fnamed_groups
length = *(*Tuint32_t)(unsafe.Pointer(libc.PreIncUintptr(&*(*uintptr)(unsafe.Pointer(bp + 96)), 4)))
offset = Tsize_t(*(*Tuint32_t)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 96)) + 1*4)))<<32 | Tsize_t(*(*Tuint32_t)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 96)) + 2*4)))
*(*uintptr)(unsafe.Pointer(bp + 96 /* pptr */)) += 4 * uintptr(2)
name = (*Tcompile_block_8)(unsafe.Pointer(cb)).Fstart_pattern + uintptr(offset)
// In the first pass, the names generated in the pre-pass are available,
// but the main name table has not yet been created. Scan the list of names
// generated in the pre-pass in order to get a number and whether or not
// this name is duplicated. If it is not duplicated, we can handle it as a
// numerical group.
i12 = uint32(0)
__191:
if !(i12 < uint32((*Tcompile_block_8)(unsafe.Pointer(cb)).Fnames_found)) {
goto __193
}
if !(length == Tuint32_t((*Tnamed_group_8)(unsafe.Pointer(ng)).Flength) && X_pcre2_strncmp_8(tls, name, (*Tnamed_group_8)(unsafe.Pointer(ng)).Fname, uint64(length)) == 0) {
goto __194
}
if !!(int32((*Tnamed_group_8)(unsafe.Pointer(ng)).Fisdup) != 0) {
goto __195
}
*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + 3)) = func() uint8 {
if meta == DMETA_COND_RNAME {
return OP_RREF
}
return OP_CREF
}()
*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + 4)) = TPCRE2_UCHAR8((*Tnamed_group_8)(unsafe.Pointer(ng)).Fnumber >> 8)
*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + 5)) = TPCRE2_UCHAR8((*Tnamed_group_8)(unsafe.Pointer(ng)).Fnumber & Tuint32_t(255))
if !((*Tnamed_group_8)(unsafe.Pointer(ng)).Fnumber > (*Tcompile_block_8)(unsafe.Pointer(cb)).Ftop_backref) {
goto __196
}
(*Tcompile_block_8)(unsafe.Pointer(cb)).Ftop_backref = (*Tnamed_group_8)(unsafe.Pointer(ng)).Fnumber
__196:
;
skipunits = Tuint32_t(1 + DIMM2_SIZE)
goto GROUP_PROCESS_NOTE_EMPTY
__195:
;
goto __193 // Found a duplicated name
__194:
;
goto __192
__192:
i12++
ng += 16
goto __191
goto __193
__193:
;
// If the name was not found we have a bad reference, unless we are
// dealing with R<digits>, which is treated as a recursion test by number.
//
if !(i12 >= uint32((*Tcompile_block_8)(unsafe.Pointer(cb)).Fnames_found)) {
goto __197
}
groupnumber = Tuint32_t(0)
if !(meta == DMETA_COND_RNUMBER) {
goto __198
}
i12 = uint32(1)
__199:
if !(i12 < length) {
goto __201
}
groupnumber = groupnumber*Tuint32_t(10) + Tuint32_t(*(*TPCRE2_UCHAR8)(unsafe.Pointer(name + uintptr(i12)))) - Tuint32_t('\060')
if !(groupnumber > DMAX_GROUP_NUMBER) {
goto __202
}
*(*int32)(unsafe.Pointer(errorcodeptr)) = ERR61
(*Tcompile_block_8)(unsafe.Pointer(cb)).Ferroroffset = offset + Tsize_t(i12)
return 0
__202:
;
goto __200
__200:
i12++
goto __199
goto __201
__201:
;
__198:
;
if !(meta != DMETA_COND_RNUMBER || groupnumber > (*Tcompile_block_8)(unsafe.Pointer(cb)).Fbracount) {
goto __203
}
*(*int32)(unsafe.Pointer(errorcodeptr)) = ERR15
(*Tcompile_block_8)(unsafe.Pointer(cb)).Ferroroffset = offset
return 0
__203:
;
// (?Rdigits) treated as a recursion reference by number. A value of
// zero (which is the result of both (?R) and (?R0)) means "any", and is
// translated into RREF_ANY (which is 0xffff).
if !(groupnumber == Tuint32_t(0)) {
goto __204
}
groupnumber = Tuint32_t(DRREF_ANY)
__204:
;
*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + 3)) = OP_RREF
*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + 4)) = TPCRE2_UCHAR8(groupnumber >> 8)
*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + 5)) = TPCRE2_UCHAR8(groupnumber & Tuint32_t(255))
skipunits = Tuint32_t(1 + DIMM2_SIZE)
goto GROUP_PROCESS_NOTE_EMPTY
__197:
;
// A duplicated name was found. Note that if an R<digits> name is found
// (META_COND_RNUMBER), it is a reference test, not a recursion test.
*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + 3)) = func() uint8 {
if meta == DMETA_COND_RNAME {
return OP_RREF
}
return OP_CREF
}()
// We have a duplicated name. In the compile pass we have to search the
// main table in order to get the index and count values.
*(*int32)(unsafe.Pointer(bp + 84 /* count */)) = 0 // Values for first pass (avoids compiler warning)
*(*int32)(unsafe.Pointer(bp + 80 /* index */)) = 0
if !(lengthptr == uintptr(0) && !(find_dupname_details(tls, name, length, bp+80,
bp+84, errorcodeptr, cb) != 0)) {
goto __205
}
return 0
__205:
;
// Add one to the opcode to change CREF/RREF into DNCREF/DNRREF and
// insert appropriate data values.
*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + 3))++
skipunits = Tuint32_t(1 + 2*DIMM2_SIZE)
*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + 4)) = TPCRE2_UCHAR8(*(*int32)(unsafe.Pointer(bp + 80)) >> 8)
*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + 5)) = TPCRE2_UCHAR8(*(*int32)(unsafe.Pointer(bp + 80)) & 255)
*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + 6)) = TPCRE2_UCHAR8(*(*int32)(unsafe.Pointer(bp + 84)) >> 8)
*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + 7)) = TPCRE2_UCHAR8(*(*int32)(unsafe.Pointer(bp + 84)) & 255)
goto GROUP_PROCESS_NOTE_EMPTY
// The DEFINE condition is always false. Its internal groups may never
// be called, so matched_char must remain false, hence the jump to
// GROUP_PROCESS rather than GROUP_PROCESS_NOTE_EMPTY.
__38:
bravalue = OP_COND
offset = Tsize_t(*(*Tuint32_t)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 96)) + 1*4)))<<32 | Tsize_t(*(*Tuint32_t)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 96)) + 2*4)))
*(*uintptr)(unsafe.Pointer(bp + 96 /* pptr */)) += 4 * uintptr(2)
*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + 3)) = OP_DEFINE
skipunits = Tuint32_t(1)
goto GROUP_PROCESS
// Conditional test of a group's being set.
__39:
bravalue = OP_COND
offset = Tsize_t(*(*Tuint32_t)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 96)) + 1*4)))<<32 | Tsize_t(*(*Tuint32_t)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 96)) + 2*4)))
*(*uintptr)(unsafe.Pointer(bp + 96 /* pptr */)) += 4 * uintptr(2)
groupnumber = *(*Tuint32_t)(unsafe.Pointer(libc.PreIncUintptr(&*(*uintptr)(unsafe.Pointer(bp + 96)), 4)))
if !(groupnumber > (*Tcompile_block_8)(unsafe.Pointer(cb)).Fbracount) {
goto __206
}
*(*int32)(unsafe.Pointer(errorcodeptr)) = ERR15
(*Tcompile_block_8)(unsafe.Pointer(cb)).Ferroroffset = offset
return 0
__206:
;
if !(groupnumber > (*Tcompile_block_8)(unsafe.Pointer(cb)).Ftop_backref) {
goto __207
}
(*Tcompile_block_8)(unsafe.Pointer(cb)).Ftop_backref = groupnumber
__207:
;
offset = offset - uint64(2) // Point at initial ( for too many branches error
*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + 3)) = OP_CREF
skipunits = Tuint32_t(1 + DIMM2_SIZE)
*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + 4)) = TPCRE2_UCHAR8(groupnumber >> 8)
*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + 5)) = TPCRE2_UCHAR8(groupnumber & Tuint32_t(255))
goto GROUP_PROCESS_NOTE_EMPTY
// Test for the PCRE2 version.
__40:
bravalue = OP_COND
if !(*(*Tuint32_t)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 96)) + 1*4)) > Tuint32_t(0)) {
goto __208
}
*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + 3)) = func() uint8 {
if Tuint32_t(DPCRE2_MAJOR) > *(*Tuint32_t)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 96)) + 2*4)) || Tuint32_t(DPCRE2_MAJOR) == *(*Tuint32_t)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 96)) + 2*4)) && Tuint32_t(DPCRE2_MINOR) >= *(*Tuint32_t)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 96)) + 3*4)) {
return OP_TRUE
}
return OP_FALSE
}()
goto __209
__208:
*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + 3)) = func() uint8 {
if Tuint32_t(DPCRE2_MAJOR) == *(*Tuint32_t)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 96)) + 2*4)) && Tuint32_t(DPCRE2_MINOR) == *(*Tuint32_t)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 96)) + 3*4)) {
return OP_TRUE
}
return OP_FALSE
}()
__209:
;
skipunits = Tuint32_t(1)
*(*uintptr)(unsafe.Pointer(bp + 96 /* pptr */)) += 4 * uintptr(3)
goto GROUP_PROCESS_NOTE_EMPTY
// The condition is an assertion, possibly preceded by a callout.
__41:
bravalue = OP_COND
goto GROUP_PROCESS_NOTE_EMPTY
// ===================================================================
// Handle all kinds of nested bracketed groups. The non-capturing,
// non-conditional cases are here; others come to GROUP_PROCESS via goto.
__42:
bravalue = OP_ASSERT
*(*Tuint16_t)(unsafe.Pointer(cb + 182)) += Tuint16_t(1)
goto GROUP_PROCESS
__43:
bravalue = OP_ASSERT_NA
*(*Tuint16_t)(unsafe.Pointer(cb + 182)) += Tuint16_t(1)
goto GROUP_PROCESS
// Optimize (?!) to (*FAIL) unless it is quantified - which is a weird
// thing to do, but Perl allows all assertions to be quantified, and when
// they contain capturing parentheses there may be a potential use for
// this feature. Not that that applies to a quantified (?!) but we allow
// it for uniformity.
__44:
if !(*(*Tuint32_t)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 96)) + 1*4)) == DMETA_KET && (*(*Tuint32_t)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 96)) + 2*4)) < DMETA_ASTERISK || *(*Tuint32_t)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 96)) + 2*4)) > DMETA_MINMAX_QUERY)) {
goto __210
}
*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&code, 1))) = OP_FAIL
*(*uintptr)(unsafe.Pointer(bp + 96 /* pptr */)) += 4
goto __211
__210:
bravalue = OP_ASSERT_NOT
*(*Tuint16_t)(unsafe.Pointer(cb + 182)) += Tuint16_t(1)
goto GROUP_PROCESS
__211:
;
goto __12
__45:
bravalue = OP_ASSERTBACK
*(*Tuint16_t)(unsafe.Pointer(cb + 182)) += Tuint16_t(1)
goto GROUP_PROCESS
__46:
bravalue = OP_ASSERTBACK_NOT
*(*Tuint16_t)(unsafe.Pointer(cb + 182)) += Tuint16_t(1)
goto GROUP_PROCESS
__47:
bravalue = OP_ASSERTBACK_NA
*(*Tuint16_t)(unsafe.Pointer(cb + 182)) += Tuint16_t(1)
goto GROUP_PROCESS
__48:
bravalue = OP_ONCE
goto GROUP_PROCESS_NOTE_EMPTY
__49:
bravalue = OP_SCRIPT_RUN
goto GROUP_PROCESS_NOTE_EMPTY
__50:
bravalue = OP_BRA
// Fall through
// Process nested bracketed regex. The nesting depth is maintained for the
// benefit of the stackguard function. The test for too deep nesting is now
// done in parse_regex(). Assertion and DEFINE groups come to GROUP_PROCESS;
// others come to GROUP_PROCESS_NOTE_EMPTY, to indicate that we need to take
// note of whether or not they may match an empty string.
GROUP_PROCESS_NOTE_EMPTY:
note_group_empty = DTRUE
GROUP_PROCESS:
*(*Tuint16_t)(unsafe.Pointer(cb + 180)) += Tuint16_t(1)
*(*TPCRE2_UCHAR8)(unsafe.Pointer(code)) = TPCRE2_UCHAR8(bravalue)
*(*uintptr)(unsafe.Pointer(bp + 96 /* pptr */)) += 4
*(*uintptr)(unsafe.Pointer(bp + 88 /* tempcode */)) = code
tempreqvary = (*Tcompile_block_8)(unsafe.Pointer(cb)).Freq_varyopt // Save value before group
*(*Tsize_t)(unsafe.Pointer(bp + 120 /* length_prevgroup */)) = uint64(0) // Initialize for pre-compile phase
if !(libc.AssignInt32(&group_return, compile_regex(tls,
options,
bp+88,
bp+96,
errorcodeptr,
skipunits,
bp+104,
bp+108,
bp+112,
bp+116,
bcptr,
cb,
func() uintptr {
if lengthptr == uintptr(0) {
return uintptr(0)
}
return bp + 120
}())) == 0) {
goto __212
}
return 0
__212:
; // Error
*(*Tuint16_t)(unsafe.Pointer(cb + 180)) -= Tuint16_t(1)
// If that was a non-conditional significant group (not an assertion, not a
// DEFINE) that matches at least one character, then the current item matches
// a character. Conditionals are handled below.
if !(note_group_empty != 0 && bravalue != OP_COND && group_return > 0) {
goto __213
}
matched_char = DTRUE
__213:
;
// If we've just compiled an assertion, pop the assert depth.
if !(bravalue >= OP_ASSERT && bravalue <= OP_ASSERTBACK_NA) {
goto __214
}
*(*Tuint16_t)(unsafe.Pointer(cb + 182)) -= Tuint16_t(1)
__214:
;
// At the end of compiling, code is still pointing to the start of the
// group, while tempcode has been updated to point past the end of the group.
// The parsed pattern pointer (pptr) is on the closing META_KET.
//
// If this is a conditional bracket, check that there are no more than
// two branches in the group, or just one if it's a DEFINE group. We do this
// in the real compile phase, not in the pre-pass, where the whole group may
// not be available.
if !(bravalue == OP_COND && lengthptr == uintptr(0)) {
goto __215
}
tc = code
condcount = 0
__216:
condcount++
tc += uintptr(uint32(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(tc + 1)))<<8 | int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(tc + 2)))))
goto __217
__217:
if int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(tc))) != OP_KET {
goto __216
}
goto __218
__218:
;
// A DEFINE group is never obeyed inline (the "condition" is always
// false). It must have only one branch. Having checked this, change the
// opcode to OP_FALSE.
if !(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + 3))) == OP_DEFINE) {
goto __219
}
if !(condcount > 1) {
goto __221
}
(*Tcompile_block_8)(unsafe.Pointer(cb)).Ferroroffset = offset
*(*int32)(unsafe.Pointer(errorcodeptr)) = ERR54
return 0
__221:
;
*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + 3)) = OP_FALSE
bravalue = OP_DEFINE // A flag to suppress char handling below
goto __220
__219:
if !(condcount > 2) {
goto __222
}
(*Tcompile_block_8)(unsafe.Pointer(cb)).Ferroroffset = offset
*(*int32)(unsafe.Pointer(errorcodeptr)) = ERR27
return 0
__222:
;
if !(condcount == 1) {
goto __223
}
*(*Tuint32_t)(unsafe.Pointer(bp + 108 /* subfirstcuflags */)) = libc.AssignPtrUint32(bp+116 /* subreqcuflags */, DREQ_NONE)
goto __224
__223:
if !(group_return > 0) {
goto __225
}
matched_char = DTRUE
__225:
;
__224:
;
__220:
;
__215:
;
// In the pre-compile phase, update the length by the length of the group,
// less the brackets at either end. Then reduce the compiled code to just a
// set of non-capturing brackets so that it doesn't use much memory if it is
// duplicated by a quantifier.
if !(lengthptr != uintptr(0)) {
goto __226
}
if !(uint64(0x7fffffff-20)-*(*Tsize_t)(unsafe.Pointer(lengthptr)) < *(*Tsize_t)(unsafe.Pointer(bp + 120))-uint64(2)-uint64(2*DLINK_SIZE)) {
goto __227
}
*(*int32)(unsafe.Pointer(errorcodeptr)) = ERR20
return 0
__227:
;
*(*Tsize_t)(unsafe.Pointer(lengthptr)) += *(*Tsize_t)(unsafe.Pointer(bp + 120)) - uint64(2) - uint64(2*DLINK_SIZE)
code++ // This already contains bravalue
*(*TPCRE2_UCHAR8)(unsafe.Pointer(code)) = TPCRE2_UCHAR8(int32(1+DLINK_SIZE) >> 8)
*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + 1)) = TPCRE2_UCHAR8((1 + DLINK_SIZE) & 255)
code += uintptr(DLINK_SIZE)
*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&code, 1))) = OP_KET
*(*TPCRE2_UCHAR8)(unsafe.Pointer(code)) = TPCRE2_UCHAR8(int32(1+DLINK_SIZE) >> 8)
*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + 1)) = TPCRE2_UCHAR8((1 + DLINK_SIZE) & 255)
code += uintptr(DLINK_SIZE)
goto __12 // No need to waste time with special character handling
__226:
;
// Otherwise update the main code pointer to the end of the group.
code = *(*uintptr)(unsafe.Pointer(bp + 88 /* tempcode */))
// For a DEFINE group, required and first character settings are not
// relevant.
if !(bravalue == OP_DEFINE) {
goto __228
}
goto __12
__228:
;
// Handle updating of the required and first code units for other types of
// group. Update for normal brackets of all kinds, and conditions with two
// branches (see code above). If the bracket is followed by a quantifier with
// zero repeat, we have to back off. Hence the definition of zeroreqcu and
// zerofirstcu outside the main loop so that they can be accessed for the back
// off.
zeroreqcu = reqcu
zeroreqcuflags = reqcuflags
zerofirstcu = firstcu
zerofirstcuflags = firstcuflags
groupsetfirstcu = DFALSE
if !(bravalue >= OP_ONCE) {
goto __229
} /* Not an assertion */
// If we have not yet set a firstcu in this branch, take it from the
// subpattern, remembering that it was set here so that a repeat of more
// than one can replicate it as reqcu if necessary. If the subpattern has
// no firstcu, set "none" for the whole branch. In both cases, a zero
// repeat forces firstcu to "none".
if !(firstcuflags == DREQ_UNSET && *(*Tuint32_t)(unsafe.Pointer(bp + 108)) != DREQ_UNSET) {
goto __231
}
if !(*(*Tuint32_t)(unsafe.Pointer(bp + 108)) < DREQ_NONE) {
goto __233
}
firstcu = *(*Tuint32_t)(unsafe.Pointer(bp + 104 /* subfirstcu */))
firstcuflags = *(*Tuint32_t)(unsafe.Pointer(bp + 108 /* subfirstcuflags */))
groupsetfirstcu = DTRUE
goto __234
__233:
firstcuflags = DREQ_NONE
__234:
;
zerofirstcuflags = DREQ_NONE
goto __232
__231:
if !(*(*Tuint32_t)(unsafe.Pointer(bp + 108)) < DREQ_NONE && *(*Tuint32_t)(unsafe.Pointer(bp + 116)) >= DREQ_NONE) {
goto __235
}
*(*Tuint32_t)(unsafe.Pointer(bp + 112 /* subreqcu */)) = *(*Tuint32_t)(unsafe.Pointer(bp + 104 /* subfirstcu */))
*(*Tuint32_t)(unsafe.Pointer(bp + 116 /* subreqcuflags */)) = *(*Tuint32_t)(unsafe.Pointer(bp + 108)) | tempreqvary
__235:
;
__232:
;
// If the subpattern set a required code unit (or set a first code unit
// that isn't really the first code unit - see above), set it.
if !(*(*Tuint32_t)(unsafe.Pointer(bp + 116)) < DREQ_NONE) {
goto __236
}
reqcu = *(*Tuint32_t)(unsafe.Pointer(bp + 112 /* subreqcu */))
reqcuflags = *(*Tuint32_t)(unsafe.Pointer(bp + 116 /* subreqcuflags */))
__236:
;
goto __230
__229:
if !((bravalue == OP_ASSERT || bravalue == OP_ASSERT_NA) && *(*Tuint32_t)(unsafe.Pointer(bp + 116)) < DREQ_NONE && *(*Tuint32_t)(unsafe.Pointer(bp + 108)) < DREQ_NONE) {
goto __237
}
reqcu = *(*Tuint32_t)(unsafe.Pointer(bp + 112 /* subreqcu */))
reqcuflags = *(*Tuint32_t)(unsafe.Pointer(bp + 116 /* subreqcuflags */))
__237:
;
__230:
;
goto __12 // End of nested group handling
// ===================================================================
// Handle named backreferences and recursions.
__51:
__52:
is_dupname = DFALSE
ng1 = (*Tcompile_block_8)(unsafe.Pointer(cb)).Fnamed_groups
length1 = *(*Tuint32_t)(unsafe.Pointer(libc.PreIncUintptr(&*(*uintptr)(unsafe.Pointer(bp + 96)), 4)))
offset = Tsize_t(*(*Tuint32_t)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 96)) + 1*4)))<<32 | Tsize_t(*(*Tuint32_t)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 96)) + 2*4)))
*(*uintptr)(unsafe.Pointer(bp + 96 /* pptr */)) += 4 * uintptr(2)
name1 = (*Tcompile_block_8)(unsafe.Pointer(cb)).Fstart_pattern + uintptr(offset)
// In the first pass, the names generated in the pre-pass are available,
// but the main name table has not yet been created. Scan the list of names
// generated in the pre-pass in order to get a number and whether or not
// this name is duplicated.
groupnumber = Tuint32_t(0)
{
i13 = uint32(0)
__238:
if !(i13 < uint32((*Tcompile_block_8)(unsafe.Pointer(cb)).Fnames_found)) {
goto __240
}
if !(length1 == Tuint32_t((*Tnamed_group_8)(unsafe.Pointer(ng1)).Flength) && X_pcre2_strncmp_8(tls, name1, (*Tnamed_group_8)(unsafe.Pointer(ng1)).Fname, uint64(length1)) == 0) {
goto __241
}
is_dupname = TBOOL((*Tnamed_group_8)(unsafe.Pointer(ng1)).Fisdup)
groupnumber = (*Tnamed_group_8)(unsafe.Pointer(ng1)).Fnumber
// For a recursion, that's all that is needed. We can now go to
// the code that handles numerical recursion, applying it to the first
// group with the given name.
if !(meta == DMETA_RECURSE_BYNAME) {
goto __242
}
meta_arg = groupnumber
goto HANDLE_NUMERICAL_RECURSION
__242:
;
// For a back reference, update the back reference map and the
// maximum back reference.
*(*Tuint32_t)(unsafe.Pointer(cb + 252)) |= func() uint32 {
if groupnumber < Tuint32_t(32) {
return uint32(1) << groupnumber
}
return uint32(1)
}()
if !(groupnumber > (*Tcompile_block_8)(unsafe.Pointer(cb)).Ftop_backref) {
goto __243
}
(*Tcompile_block_8)(unsafe.Pointer(cb)).Ftop_backref = groupnumber
__243:
;
__241:
;
goto __239
__239:
i13++
ng1 += 16
goto __238
goto __240
__240:
}
// If the name was not found we have a bad reference.
if !(groupnumber == Tuint32_t(0)) {
goto __244
}
*(*int32)(unsafe.Pointer(errorcodeptr)) = ERR15
(*Tcompile_block_8)(unsafe.Pointer(cb)).Ferroroffset = offset
return 0
__244:
;
// If a back reference name is not duplicated, we can handle it as
// a numerical reference.
if !!(is_dupname != 0) {
goto __245
}
meta_arg = groupnumber
goto HANDLE_SINGLE_REFERENCE
__245:
;
// If a back reference name is duplicated, we generate a different
// opcode to a numerical back reference. In the second pass we must
// search for the index and count in the final name table.
*(*int32)(unsafe.Pointer(bp + 132 /* count1 */)) = 0 // Values for first pass (avoids compiler warning)
*(*int32)(unsafe.Pointer(bp + 128 /* index1 */)) = 0
if !(lengthptr == uintptr(0) && !(find_dupname_details(tls, name1, length1, bp+128,
bp+132, errorcodeptr, cb) != 0)) {
goto __246
}
return 0
__246:
;
if !(firstcuflags == DREQ_UNSET) {
goto __247
}
firstcuflags = DREQ_NONE
__247:
;
*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&code, 1))) = func() uint8 {
if options&DPCRE2_CASELESS != Tuint32_t(0) {
return OP_DNREFI
}
return OP_DNREF
}()
*(*TPCRE2_UCHAR8)(unsafe.Pointer(code)) = TPCRE2_UCHAR8(*(*int32)(unsafe.Pointer(bp + 128)) >> 8)
*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + 1)) = TPCRE2_UCHAR8(*(*int32)(unsafe.Pointer(bp + 128)) & 255)
code += uintptr(DIMM2_SIZE)
*(*TPCRE2_UCHAR8)(unsafe.Pointer(code)) = TPCRE2_UCHAR8(*(*int32)(unsafe.Pointer(bp + 132)) >> 8)
*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + 1)) = TPCRE2_UCHAR8(*(*int32)(unsafe.Pointer(bp + 132)) & 255)
code += uintptr(DIMM2_SIZE)
goto __12
// ===================================================================
// Handle a numerical callout.
__53:
*(*TPCRE2_UCHAR8)(unsafe.Pointer(code)) = OP_CALLOUT
*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + 1)) = TPCRE2_UCHAR8(*(*Tuint32_t)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 96)) + 1*4)) >> 8)
*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + 2)) = TPCRE2_UCHAR8(*(*Tuint32_t)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 96)) + 1*4)) & Tuint32_t(255)) // Offset to next pattern item
*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + 3)) = TPCRE2_UCHAR8(*(*Tuint32_t)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 96)) + 2*4)) >> 8)
*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + 4)) = TPCRE2_UCHAR8(*(*Tuint32_t)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 96)) + 2*4)) & Tuint32_t(255)) // Length of next pattern item
*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + 5)) = TPCRE2_UCHAR8(*(*Tuint32_t)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 96 /* pptr */)) + 3*4)))
*(*uintptr)(unsafe.Pointer(bp + 96 /* pptr */)) += 4 * uintptr(3)
code += uintptr(X_pcre2_OP_lengths_8[OP_CALLOUT])
goto __12
// ===================================================================
// Handle a callout with a string argument. In the pre-pass we just compute
// the length without generating anything. The length in pptr[3] includes both
// delimiters; in the actual compile only the first one is copied, but a
// terminating zero is added. Any doubled delimiters within the string make
// this an overestimate, but it is not worth bothering about.
__54:
if !(lengthptr != uintptr(0)) {
goto __248
}
*(*Tsize_t)(unsafe.Pointer(lengthptr)) += Tsize_t(*(*Tuint32_t)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 96)) + 3*4)) + Tuint32_t(1+4*DLINK_SIZE))
*(*uintptr)(unsafe.Pointer(bp + 96 /* pptr */)) += 4 * uintptr(3)
*(*uintptr)(unsafe.Pointer(bp + 96 /* pptr */)) += 4 * uintptr(2)
goto __249
__248:
length2 = *(*Tuint32_t)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 96 /* pptr */)) + 3*4))
callout_string = code + uintptr(1+4*DLINK_SIZE)
*(*TPCRE2_UCHAR8)(unsafe.Pointer(code)) = OP_CALLOUT_STR
*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + 1)) = TPCRE2_UCHAR8(*(*Tuint32_t)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 96)) + 1*4)) >> 8)
*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + 2)) = TPCRE2_UCHAR8(*(*Tuint32_t)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 96)) + 1*4)) & Tuint32_t(255)) // Offset to next pattern item
*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + 3)) = TPCRE2_UCHAR8(*(*Tuint32_t)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 96)) + 2*4)) >> 8)
*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + 4)) = TPCRE2_UCHAR8(*(*Tuint32_t)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 96)) + 2*4)) & Tuint32_t(255)) // Length of next pattern item
*(*uintptr)(unsafe.Pointer(bp + 96 /* pptr */)) += 4 * uintptr(3)
offset = Tsize_t(*(*Tuint32_t)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 96)) + 1*4)))<<32 | Tsize_t(*(*Tuint32_t)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 96)) + 2*4)))
*(*uintptr)(unsafe.Pointer(bp + 96 /* pptr */)) += 4 * uintptr(2)
// Offset to string in pattern
pp = (*Tcompile_block_8)(unsafe.Pointer(cb)).Fstart_pattern + uintptr(offset)
delimiter = Tuint32_t(libc.AssignPtrUint8(libc.PostIncUintptr(&callout_string, 1), *(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&pp, 1)))))
if !(delimiter == Tuint32_t('\173')) {
goto __250
}
delimiter = Tuint32_t('\175')
__250:
;
*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + 7)) = TPCRE2_UCHAR8(int32(offset+uint64(1)) >> 8)
*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + 8)) = TPCRE2_UCHAR8(int32(offset+uint64(1)) & 255) // One after delimiter
// The syntax of the pattern was checked in the parsing scan. The length
// includes both delimiters, but we have passed the opening one just above,
// so we reduce length before testing it. The test is for > 1 because we do
// not want to copy the final delimiter. This also ensures that pp[1] is
// accessible.
__251:
if !(libc.PreDecUint32(&length2, 1) > Tuint32_t(1)) {
goto __252
}
if !(Tuint32_t(*(*TPCRE2_UCHAR8)(unsafe.Pointer(pp))) == delimiter && Tuint32_t(*(*TPCRE2_UCHAR8)(unsafe.Pointer(pp + 1))) == delimiter) {
goto __253
}
*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&callout_string, 1))) = TPCRE2_UCHAR8(delimiter)
pp += uintptr(2)
length2--
goto __254
__253:
*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&callout_string, 1))) = *(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&pp, 1)))
__254:
;
goto __251
__252:
;
*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&callout_string, 1))) = TPCRE2_UCHAR8(0)
// Set the length of the entire item, the advance to its end.
*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + 5)) = TPCRE2_UCHAR8(int32((int64(callout_string)-int64(code))/1) >> 8)
*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + 6)) = TPCRE2_UCHAR8(int32((int64(callout_string)-int64(code))/1) & 255)
code = callout_string
__249:
;
goto __12
// ===================================================================
// Handle repetition. The different types are all sorted out in the parsing
// pass.
__55:
__56:
__57:
repeat_min = *(*Tuint32_t)(unsafe.Pointer(libc.PreIncUintptr(&*(*uintptr)(unsafe.Pointer(bp + 96)), 4)))
repeat_max = *(*Tuint32_t)(unsafe.Pointer(libc.PreIncUintptr(&*(*uintptr)(unsafe.Pointer(bp + 96)), 4)))
goto REPEAT
__58:
__59:
__60:
repeat_min = Tuint32_t(0)
repeat_max = DMAX_REPEAT_COUNT + uint32(1)
goto REPEAT
__61:
__62:
__63:
repeat_min = Tuint32_t(1)
repeat_max = DMAX_REPEAT_COUNT + uint32(1)
goto REPEAT
__64:
__65:
__66:
repeat_min = Tuint32_t(0)
repeat_max = Tuint32_t(1)
REPEAT:
if !(previous_matched_char != 0 && repeat_min > Tuint32_t(0)) {
goto __255
}
matched_char = DTRUE
__255:
;
// Remember whether this is a variable length repeat, and default to
// single-char opcodes.
if repeat_min == repeat_max {
reqvary = uint32(0)
} else {
reqvary = DREQ_VARY
}
op_type = Tuint32_t(0)
// Adjust first and required code units for a zero repeat.
if !(repeat_min == Tuint32_t(0)) {
goto __256
}
firstcu = zerofirstcu
firstcuflags = zerofirstcuflags
reqcu = zeroreqcu
reqcuflags = zeroreqcuflags
__256:
;
// Note the greediness and possessiveness.
switch meta {
case DMETA_MINMAX_PLUS:
goto __258
case DMETA_ASTERISK_PLUS:
goto __259
case DMETA_PLUS_PLUS:
goto __260
case DMETA_QUERY_PLUS:
goto __261
case DMETA_MINMAX_QUERY:
goto __262
case DMETA_ASTERISK_QUERY:
goto __263
case DMETA_PLUS_QUERY:
goto __264
case DMETA_QUERY_QUERY:
goto __265
default:
goto __266
}
goto __257
__258:
__259:
__260:
__261:
repeat_type = Tuint32_t(0) // Force greedy
possessive_quantifier = DTRUE
goto __257
__262:
__263:
__264:
__265:
repeat_type = greedy_non_default
possessive_quantifier = DFALSE
goto __257
__266:
repeat_type = greedy_default
possessive_quantifier = DFALSE
goto __257
__257:
;
// Save start of previous item, in case we have to move it up in order to
// insert something before it, and remember what it was.
*(*uintptr)(unsafe.Pointer(bp + 88 /* tempcode */)) = previous
op_previous = *(*TPCRE2_UCHAR8)(unsafe.Pointer(previous))
// Now handle repetition for the different types of item. If the repeat
// minimum and the repeat maximum are both 1, we can ignore the quantifier for
// non-parenthesized items, as they have only one alternative. For anything in
// parentheses, we must not ignore if {1} is possessive.
switch int32(op_previous) {
// If previous was a character or negated character match, abolish the
// item and generate a repeat item instead. If a char item has a minimum of
// more than one, ensure that it is set in reqcu - it might not be if a
// sequence such as x{3} is the first thing in a branch because the x will
// have gone into firstcu instead.
case OP_CHAR:
goto __268
case OP_CHARI:
goto __269
case OP_NOT:
goto __270
case OP_NOTI:
goto __271 // Code shared with single character types
// If previous was a character class or a back reference, we put the
// repeat stuff after it, but just skip the item if the repeat was {0,0}.
case OP_XCLASS:
goto __272
case OP_CLASS:
goto __273
case OP_NCLASS:
goto __274
case OP_REF:
goto __275
case OP_REFI:
goto __276
case OP_DNREF:
goto __277
case OP_DNREFI:
goto __278
// If previous is OP_FAIL, it was generated by an empty class []
// (PCRE2_ALLOW_EMPTY_CLASS is set). The other ways in which OP_FAIL can be
// generated, that is by (*FAIL) or (?!), disallow a quantifier at parse
// time. We can just ignore this repeat.
case OP_FAIL:
goto __279
// Prior to 10.30, repeated recursions were wrapped in OP_ONCE brackets
// because pcre2_match() could not handle backtracking into recursively
// called groups. Now that this backtracking is available, we no longer need
// to do this. However, we still need to replicate recursions as we do for
// groups so as to have independent backtracking points. We can replicate
// for the minimum number of repeats directly. For optional repeats we now
// wrap the recursion in OP_BRA brackets and make use of the bracket
// repetition.
case OP_RECURSE:
goto __280 // Set "may match empty string"
// Now treat as a repeated OP_BRA.
// Fall through
// If previous was a bracket group, we may have to replicate it in
// certain cases. Note that at this point we can encounter only the "basic"
// bracket opcodes such as BRA and CBRA, as this is the place where they get
// converted into the more special varieties such as BRAPOS and SBRA.
// Originally, PCRE did not allow repetition of assertions, but now it does,
// for Perl compatibility.
case OP_ASSERT:
goto __281
case OP_ASSERT_NOT:
goto __282
case OP_ASSERT_NA:
goto __283
case OP_ASSERTBACK:
goto __284
case OP_ASSERTBACK_NOT:
goto __285
case OP_ASSERTBACK_NA:
goto __286
case OP_ONCE:
goto __287
case OP_SCRIPT_RUN:
goto __288
case OP_BRA:
goto __289
case OP_CBRA:
goto __290
case OP_COND:
goto __291
// If previous was a character type match (\d or similar), abolish it and
// create a suitable repeat item. The code is shared with single-character
// repeats by setting op_type to add a suitable offset into repeat_type.
// Note the the Unicode property types will be present only when
// SUPPORT_UNICODE is defined, but we don't wrap the little bits of code
// here because it just makes it horribly messy.
default:
goto __292
}
goto __267
// If previous was a character or negated character match, abolish the
// item and generate a repeat item instead. If a char item has a minimum of
// more than one, ensure that it is set in reqcu - it might not be if a
// sequence such as x{3} is the first thing in a branch because the x will
// have gone into firstcu instead.
__268:
__269:
__270:
__271:
if !(repeat_max == Tuint32_t(1) && repeat_min == Tuint32_t(1)) {
goto __293
}
goto END_REPEAT
__293:
;
op_type = chartypeoffset[int32(op_previous)-OP_CHAR]
// Deal with UTF characters that take up more than one code unit.
if !(utf != 0 && uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + libc.UintptrFromInt32(-1))))&0xc0 == 0x80) {
goto __294
}
lastchar = code - uintptr(1)
__296:
if !(uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(lastchar)))&0xc0 == 0x80) {
goto __297
}
lastchar--
goto __296
__297:
;
mclength = Tuint32_t((int64(code) - int64(lastchar)) / 1) // Length of UTF character
libc.Xmemcpy(tls, bp+72, lastchar, uint64(mclength*Tuint32_t(DPCRE2_CODE_UNIT_WIDTH/8))) // Save the char
goto __295
__294:
/* Handle the case of a single code unit - either with no UTF support, or
with UTF disabled, or for a single-code-unit UTF character. In the latter
case, for a repeated positive match, get the caseless flag for the
required code unit from the previous character, because a class like [Aa]
sets a caseless A but by now the req_caseopt flag has been reset. */
*(*TPCRE2_UCHAR8)(unsafe.Pointer(bp + 72)) = *(*TPCRE2_UCHAR8)(unsafe.Pointer(code + libc.UintptrFromInt32(-1)))
mclength = Tuint32_t(1)
if !(int32(op_previous) <= OP_CHARI && repeat_min > Tuint32_t(1)) {
goto __298
}
reqcu = Tuint32_t(*(*TPCRE2_UCHAR8)(unsafe.Pointer(bp + 72)))
reqcuflags = (*Tcompile_block_8)(unsafe.Pointer(cb)).Freq_varyopt
if !(int32(op_previous) == OP_CHARI) {
goto __299
}
reqcuflags = reqcuflags | DREQ_CASELESS
__299:
;
__298:
;
__295:
;
goto OUTPUT_SINGLE_REPEAT // Code shared with single character types
// If previous was a character class or a back reference, we put the
// repeat stuff after it, but just skip the item if the repeat was {0,0}.
__272:
__273:
__274:
__275:
__276:
__277:
__278:
if !(repeat_max == Tuint32_t(0)) {
goto __300
}
code = previous
goto END_REPEAT
__300:
;
if !(repeat_max == Tuint32_t(1) && repeat_min == Tuint32_t(1)) {
goto __301
}
goto END_REPEAT
__301:
;
if !(repeat_min == Tuint32_t(0) && repeat_max == DMAX_REPEAT_COUNT+uint32(1)) {
goto __302
}
*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&code, 1))) = TPCRE2_UCHAR8(OP_CRSTAR + repeat_type)
goto __303
__302:
if !(repeat_min == Tuint32_t(1) && repeat_max == DMAX_REPEAT_COUNT+uint32(1)) {
goto __304
}
*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&code, 1))) = TPCRE2_UCHAR8(OP_CRPLUS + repeat_type)
goto __305
__304:
if !(repeat_min == Tuint32_t(0) && repeat_max == Tuint32_t(1)) {
goto __306
}
*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&code, 1))) = TPCRE2_UCHAR8(OP_CRQUERY + repeat_type)
goto __307
__306:
*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&code, 1))) = TPCRE2_UCHAR8(OP_CRRANGE + repeat_type)
*(*TPCRE2_UCHAR8)(unsafe.Pointer(code)) = TPCRE2_UCHAR8(repeat_min >> 8)
*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + 1)) = TPCRE2_UCHAR8(repeat_min & Tuint32_t(255))
code += uintptr(DIMM2_SIZE)
if !(repeat_max == DMAX_REPEAT_COUNT+uint32(1)) {
goto __308
}
repeat_max = Tuint32_t(0)
__308:
; // 2-byte encoding for max
*(*TPCRE2_UCHAR8)(unsafe.Pointer(code)) = TPCRE2_UCHAR8(repeat_max >> 8)
*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + 1)) = TPCRE2_UCHAR8(repeat_max & Tuint32_t(255))
code += uintptr(DIMM2_SIZE)
__307:
;
__305:
;
__303:
;
goto __267
// If previous is OP_FAIL, it was generated by an empty class []
// (PCRE2_ALLOW_EMPTY_CLASS is set). The other ways in which OP_FAIL can be
// generated, that is by (*FAIL) or (?!), disallow a quantifier at parse
// time. We can just ignore this repeat.
__279:
goto END_REPEAT
// Prior to 10.30, repeated recursions were wrapped in OP_ONCE brackets
// because pcre2_match() could not handle backtracking into recursively
// called groups. Now that this backtracking is available, we no longer need
// to do this. However, we still need to replicate recursions as we do for
// groups so as to have independent backtracking points. We can replicate
// for the minimum number of repeats directly. For optional repeats we now
// wrap the recursion in OP_BRA brackets and make use of the bracket
// repetition.
__280:
if !(repeat_max == Tuint32_t(1) && repeat_min == Tuint32_t(1) && !(possessive_quantifier != 0)) {
goto __309
}
goto END_REPEAT
__309:
;
// Generate unwrapped repeats for a non-zero minimum, except when the
// minimum is 1 and the maximum unlimited, because that can be handled with
// OP_BRA terminated by OP_KETRMAX/MIN. When the maximum is equal to the
// minimum, we just need to generate the appropriate additional copies.
// Otherwise we need to generate one more, to simulate the situation when
// the minimum is zero.
if !(repeat_min > Tuint32_t(0) && (repeat_min != Tuint32_t(1) || repeat_max != DMAX_REPEAT_COUNT+uint32(1))) {
goto __310
}
replicate = int32(repeat_min)
if !(repeat_min == repeat_max) {
goto __311
}
replicate--
__311:
;
// In the pre-compile phase, we don't actually do the replication. We
// just adjust the length as if we had. Do some paranoid checks for
// potential integer overflow. The INT64_OR_DOUBLE type is a 64-bit
// integer type when available, otherwise double.
if !(lengthptr != uintptr(0)) {
goto __312
}
delta = Tsize_t(replicate * (1 + DLINK_SIZE))
if !(Tint64_t(replicate)*int64(1+DLINK_SIZE) > int64(0x7fffffff) || uint64(0x7fffffff-20)-*(*Tsize_t)(unsafe.Pointer(lengthptr)) < delta) {
goto __314
}
*(*int32)(unsafe.Pointer(errorcodeptr)) = ERR20
return 0
__314:
;
*(*Tsize_t)(unsafe.Pointer(lengthptr)) += delta
goto __313
__312:
{
i14 = 0
__315:
if !(i14 < replicate) {
goto __317
}
libc.Xmemcpy(tls, code, previous, uint64((1+DLINK_SIZE)*(DPCRE2_CODE_UNIT_WIDTH/8)))
previous = code
code += uintptr(1 + DLINK_SIZE)
goto __316
__316:
i14++
goto __315
goto __317
__317:
}
__313:
;
// If the number of repeats is fixed, we are done. Otherwise, adjust
// the counts and fall through.
if !(repeat_min == repeat_max) {
goto __318
}
goto __267
__318:
;
if !(repeat_max != DMAX_REPEAT_COUNT+uint32(1)) {
goto __319
}
repeat_max = repeat_max - repeat_min
__319:
;
repeat_min = Tuint32_t(0)
__310:
;
// Wrap the recursion call in OP_BRA brackets.
libc.Xmemmove(tls, previous+uintptr(1)+uintptr(DLINK_SIZE), previous, uint64((1+DLINK_SIZE)*(DPCRE2_CODE_UNIT_WIDTH/8)))
op_previous = libc.AssignPtrUint8(previous, OP_BRA)
*(*TPCRE2_UCHAR8)(unsafe.Pointer(previous + 1)) = TPCRE2_UCHAR8(int32(2+2*DLINK_SIZE) >> 8)
*(*TPCRE2_UCHAR8)(unsafe.Pointer(previous + 2)) = TPCRE2_UCHAR8((2 + 2*DLINK_SIZE) & 255)
*(*TPCRE2_UCHAR8)(unsafe.Pointer(previous + 6)) = OP_KET
*(*TPCRE2_UCHAR8)(unsafe.Pointer(previous + 7)) = TPCRE2_UCHAR8(int32(2+2*DLINK_SIZE) >> 8)
*(*TPCRE2_UCHAR8)(unsafe.Pointer(previous + 8)) = TPCRE2_UCHAR8((2 + 2*DLINK_SIZE) & 255)
code += uintptr(2 + 2*DLINK_SIZE)
*(*Tsize_t)(unsafe.Pointer(bp + 120 /* length_prevgroup */)) = uint64(3 + 3*DLINK_SIZE)
group_return = -1 // Set "may match empty string"
// Now treat as a repeated OP_BRA.
// Fall through
// If previous was a bracket group, we may have to replicate it in
// certain cases. Note that at this point we can encounter only the "basic"
// bracket opcodes such as BRA and CBRA, as this is the place where they get
// converted into the more special varieties such as BRAPOS and SBRA.
// Originally, PCRE did not allow repetition of assertions, but now it does,
// for Perl compatibility.
__281:
__282:
__283:
__284:
__285:
__286:
__287:
__288:
__289:
__290:
__291:
len = int32((int64(code) - int64(previous)) / 1)
bralink = uintptr(0)
brazeroptr = uintptr(0)
if !(repeat_max == Tuint32_t(1) && repeat_min == Tuint32_t(1) && !(possessive_quantifier != 0)) {
goto __320
}
goto END_REPEAT
__320:
;
// Repeating a DEFINE group (or any group where the condition is always
// FALSE and there is only one branch) is pointless, but Perl allows the
// syntax, so we just ignore the repeat.
if !(int32(op_previous) == OP_COND && int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(previous + 3))) == OP_FALSE && int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(previous + uintptr(uint32(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(previous + 1)))<<8|int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(previous + 2)))))))) != OP_ALT) {
goto __321
}
goto END_REPEAT
__321:
;
// Perl allows all assertions to be quantified, and when they contain
// capturing parentheses and/or are optional there are potential uses for
// this feature. PCRE2 used to force the maximum quantifier to 1 on the
// invalid grounds that further repetition was never useful. This was
// always a bit pointless, since an assertion could be wrapped with a
// repeated group to achieve the effect. General repetition is now
// permitted, but if the maximum is unlimited it is set to one more than
// the minimum.
if !(int32(op_previous) < OP_ONCE) {
goto __322
} /* Assertion */
if !(repeat_max == DMAX_REPEAT_COUNT+uint32(1)) {
goto __323
}
repeat_max = repeat_min + Tuint32_t(1)
__323:
;
__322:
;
// The case of a zero minimum is special because of the need to stick
// OP_BRAZERO in front of it, and because the group appears once in the
// data, whereas in other cases it appears the minimum number of times. For
// this reason, it is simplest to treat this case separately, as otherwise
// the code gets far too messy. There are several special subcases when the
// minimum is zero.
if !(repeat_min == Tuint32_t(0)) {
goto __324
}
// If the maximum is also zero, we used to just omit the group from
// the output altogether, like this:
//
// ** if (repeat_max == 0)
// ** {
// ** code = previous;
// ** goto END_REPEAT;
// ** }
//
// However, that fails when a group or a subgroup within it is
// referenced as a subroutine from elsewhere in the pattern, so now we
// stick in OP_SKIPZERO in front of it so that it is skipped on
// execution. As we don't have a list of which groups are referenced, we
// cannot do this selectively.
//
// If the maximum is 1 or unlimited, we just have to stick in the
// BRAZERO and do no more at this point.
if !(repeat_max <= Tuint32_t(1) || repeat_max == DMAX_REPEAT_COUNT+uint32(1)) {
goto __326
}
libc.Xmemmove(tls, previous+uintptr(1), previous, uint64(len*(DPCRE2_CODE_UNIT_WIDTH/8)))
code++
if !(repeat_max == Tuint32_t(0)) {
goto __328
}
*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&previous, 1))) = OP_SKIPZERO
goto END_REPEAT
__328:
;
brazeroptr = previous // Save for possessive optimizing
*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&previous, 1))) = TPCRE2_UCHAR8(OP_BRAZERO + repeat_type)
goto __327
__326:
libc.Xmemmove(tls, previous+uintptr(2)+uintptr(DLINK_SIZE), previous, uint64(len*(DPCRE2_CODE_UNIT_WIDTH/8)))
code += uintptr(2 + DLINK_SIZE)
*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&previous, 1))) = TPCRE2_UCHAR8(OP_BRAZERO + repeat_type)
*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&previous, 1))) = OP_BRA
// We chain together the bracket link offset fields that have to be
// filled in later when the ends of the brackets are reached.
if bralink == uintptr(0) {
linkoffset = 0
} else {
linkoffset = int32((int64(previous) - int64(bralink)) / 1)
}
bralink = previous
*(*TPCRE2_UCHAR8)(unsafe.Pointer(previous)) = TPCRE2_UCHAR8(linkoffset >> 8)
*(*TPCRE2_UCHAR8)(unsafe.Pointer(previous + 1)) = TPCRE2_UCHAR8(linkoffset & 255)
previous += uintptr(DLINK_SIZE)
__327:
;
if !(repeat_max != DMAX_REPEAT_COUNT+uint32(1)) {
goto __329
}
repeat_max--
__329:
;
goto __325
__324:
if !(repeat_min > Tuint32_t(1)) {
goto __330
}
// In the pre-compile phase, we don't actually do the replication.
// We just adjust the length as if we had. Do some paranoid checks for
// potential integer overflow. The INT64_OR_DOUBLE type is a 64-bit
// integer type when available, otherwise double.
if !(lengthptr != uintptr(0)) {
goto __331
}
delta1 = Tsize_t(repeat_min-Tuint32_t(1)) * *(*Tsize_t)(unsafe.Pointer(bp + 120))
if !(Tint64_t(repeat_min-Tuint32_t(1))*Tint64_t(*(*Tsize_t)(unsafe.Pointer(bp + 120))) > int64(0x7fffffff) || uint64(0x7fffffff-20)-*(*Tsize_t)(unsafe.Pointer(lengthptr)) < delta1) {
goto __333
}
*(*int32)(unsafe.Pointer(errorcodeptr)) = ERR20
return 0
__333:
;
*(*Tsize_t)(unsafe.Pointer(lengthptr)) += delta1
goto __332
__331:
if !(groupsetfirstcu != 0 && reqcuflags >= DREQ_NONE) {
goto __334
}
reqcu = firstcu
reqcuflags = firstcuflags
__334:
;
{
i15 = Tuint32_t(1)
__335:
if !(i15 < repeat_min) {
goto __337
}
libc.Xmemcpy(tls, code, previous, uint64(len*(DPCRE2_CODE_UNIT_WIDTH/8)))
code += uintptr(len)
goto __336
__336:
i15++
goto __335
goto __337
__337:
}
__332:
;
__330:
;
if !(repeat_max != DMAX_REPEAT_COUNT+uint32(1)) {
goto __338
}
repeat_max = repeat_max - repeat_min
__338:
;
__325:
;
// This code is common to both the zero and non-zero minimum cases. If
// the maximum is limited, it replicates the group in a nested fashion,
// remembering the bracket starts on a stack. In the case of a zero
// minimum, the first one was set up above. In all cases the repeat_max
// now specifies the number of additional copies needed. Again, we must
// remember to replicate entries on the forward reference list.
if !(repeat_max != DMAX_REPEAT_COUNT+uint32(1)) {
goto __339
}
// In the pre-compile phase, we don't actually do the replication. We
// just adjust the length as if we had. For each repetition we must add
// 1 to the length for BRAZERO and for all but the last repetition we
// must add 2 + 2*LINKSIZE to allow for the nesting that occurs. Do some
// paranoid checks to avoid integer overflow. The INT64_OR_DOUBLE type
// is a 64-bit integer type when available, otherwise double.
if !(lengthptr != uintptr(0) && repeat_max > Tuint32_t(0)) {
goto __341
}
delta2 = Tsize_t(repeat_max)*(*(*Tsize_t)(unsafe.Pointer(bp + 120))+uint64(1)+uint64(2)+uint64(2*DLINK_SIZE)) - uint64(2) - uint64(2*DLINK_SIZE) // Last one doesn't nest
if !(Tint64_t(repeat_max)*Tint64_t(*(*Tsize_t)(unsafe.Pointer(bp + 120))+uint64(1)+uint64(2)+uint64(2*DLINK_SIZE)) >
int64(0x7fffffff) || uint64(0x7fffffff-20)-*(*Tsize_t)(unsafe.Pointer(lengthptr)) < delta2) {
goto __343
}
*(*int32)(unsafe.Pointer(errorcodeptr)) = ERR20
return 0
__343:
;
*(*Tsize_t)(unsafe.Pointer(lengthptr)) += delta2
goto __342
__341:
{
i16 = repeat_max
__344:
if !(i16 >= Tuint32_t(1)) {
goto __346
}
*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&code, 1))) = TPCRE2_UCHAR8(OP_BRAZERO + repeat_type)
// All but the final copy start a new nesting, maintaining the
// chain of brackets outstanding.
if !(i16 != Tuint32_t(1)) {
goto __347
}
*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&code, 1))) = OP_BRA
if bralink == uintptr(0) {
linkoffset1 = 0
} else {
linkoffset1 = int32((int64(code) - int64(bralink)) / 1)
}
bralink = code
*(*TPCRE2_UCHAR8)(unsafe.Pointer(code)) = TPCRE2_UCHAR8(linkoffset1 >> 8)
*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + 1)) = TPCRE2_UCHAR8(linkoffset1 & 255)
code += uintptr(DLINK_SIZE)
__347:
;
libc.Xmemcpy(tls, code, previous, uint64(len*(DPCRE2_CODE_UNIT_WIDTH/8)))
code += uintptr(len)
goto __345
__345:
i16--
goto __344
goto __346
__346:
}
__342:
;
// Now chain through the pending brackets, and fill in their length
// fields (which are holding the chain links pro tem).
__348:
if !(bralink != uintptr(0)) {
goto __349
}
linkoffset2 = int32((int64(code)-int64(bralink))/1 + int64(1))
bra = code - uintptr(linkoffset2)
oldlinkoffset = int32(uint32(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(bra + 1)))<<8 | int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(bra + 2)))))
if oldlinkoffset == 0 {
bralink = uintptr(0)
} else {
bralink = bralink - uintptr(oldlinkoffset)
}
*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&code, 1))) = OP_KET
*(*TPCRE2_UCHAR8)(unsafe.Pointer(code)) = TPCRE2_UCHAR8(linkoffset2 >> 8)
*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + 1)) = TPCRE2_UCHAR8(linkoffset2 & 255)
code += uintptr(DLINK_SIZE)
*(*TPCRE2_UCHAR8)(unsafe.Pointer(bra + 1)) = TPCRE2_UCHAR8(linkoffset2 >> 8)
*(*TPCRE2_UCHAR8)(unsafe.Pointer(bra + 2)) = TPCRE2_UCHAR8(linkoffset2 & 255)
goto __348
__349:
;
goto __340
__339:
ketcode = code - uintptr(1) - uintptr(DLINK_SIZE)
bracode = ketcode - uintptr(uint32(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(ketcode + 1)))<<8|int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(ketcode + 2)))))
// Convert possessive ONCE brackets to non-capturing
if !(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(bracode))) == OP_ONCE && possessive_quantifier != 0) {
goto __350
}
*(*TPCRE2_UCHAR8)(unsafe.Pointer(bracode)) = OP_BRA
__350:
;
// For non-possessive ONCE and for SCRIPT_RUN brackets, all we need
// to do is to set the KET.
if !(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(bracode))) == OP_ONCE || int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(bracode))) == OP_SCRIPT_RUN) {
goto __351
}
*(*TPCRE2_UCHAR8)(unsafe.Pointer(ketcode)) = TPCRE2_UCHAR8(OP_KETRMAX + repeat_type)
goto __352
__351:
// In the compile phase, adjust the opcode if the group can match
// an empty string. For a conditional group with only one branch, the
// value of group_return will not show "could be empty", so we must
// check that separately.
if !(lengthptr == uintptr(0)) {
goto __353
}
if !(group_return < 0) {
goto __354
}
*(*TPCRE2_UCHAR8)(unsafe.Pointer(bracode)) += TPCRE2_UCHAR8(OP_SBRA - OP_BRA)
__354:
;
if !(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(bracode))) == OP_COND && int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(bracode + uintptr(uint32(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(bracode + 1)))<<8|int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(bracode + 2)))))))) != OP_ALT) {
goto __355
}
*(*TPCRE2_UCHAR8)(unsafe.Pointer(bracode)) = OP_SCOND
__355:
;
__353:
;
// Handle possessive quantifiers.
if !(possessive_quantifier != 0) {
goto __356
}
// For COND brackets, we wrap the whole thing in a possessively
// repeated non-capturing bracket, because we have not invented POS
// versions of the COND opcodes.
if !(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(bracode))) == OP_COND || int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(bracode))) == OP_SCOND) {
goto __358
}
nlen = int32((int64(code) - int64(bracode)) / 1)
libc.Xmemmove(tls, bracode+uintptr(1)+uintptr(DLINK_SIZE), bracode, uint64(nlen*(DPCRE2_CODE_UNIT_WIDTH/8)))
code += uintptr(1 + DLINK_SIZE)
nlen = nlen + (1 + DLINK_SIZE)
*(*TPCRE2_UCHAR8)(unsafe.Pointer(bracode)) = func() uint8 {
if int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(bracode))) == OP_COND {
return OP_BRAPOS
}
return OP_SBRAPOS
}()
*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&code, 1))) = OP_KETRPOS
*(*TPCRE2_UCHAR8)(unsafe.Pointer(code)) = TPCRE2_UCHAR8(nlen >> 8)
*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + 1)) = TPCRE2_UCHAR8(nlen & 255)
code += uintptr(DLINK_SIZE)
*(*TPCRE2_UCHAR8)(unsafe.Pointer(bracode + 1)) = TPCRE2_UCHAR8(nlen >> 8)
*(*TPCRE2_UCHAR8)(unsafe.Pointer(bracode + 2)) = TPCRE2_UCHAR8(nlen & 255)
goto __359
__358:
*(*TPCRE2_UCHAR8)(unsafe.Pointer(bracode)) += TPCRE2_UCHAR8(1) // Switch to xxxPOS opcodes
*(*TPCRE2_UCHAR8)(unsafe.Pointer(ketcode)) = OP_KETRPOS
__359:
;
// If the minimum is zero, mark it as possessive, then unset the
// possessive flag when the minimum is 0 or 1.
if !(brazeroptr != uintptr(0)) {
goto __360
}
*(*TPCRE2_UCHAR8)(unsafe.Pointer(brazeroptr)) = OP_BRAPOSZERO
__360:
;
if !(repeat_min < Tuint32_t(2)) {
goto __361
}
possessive_quantifier = DFALSE
__361:
;
goto __357
__356:
*(*TPCRE2_UCHAR8)(unsafe.Pointer(ketcode)) = TPCRE2_UCHAR8(OP_KETRMAX + repeat_type)
__357:
;
__352:
;
__340:
;
goto __267
// If previous was a character type match (\d or similar), abolish it and
// create a suitable repeat item. The code is shared with single-character
// repeats by setting op_type to add a suitable offset into repeat_type.
// Note the the Unicode property types will be present only when
// SUPPORT_UNICODE is defined, but we don't wrap the little bits of code
// here because it just makes it horribly messy.
__292:
if !(int32(op_previous) >= OP_EODN) {
goto __362
} /* Not a character type - internal error */
*(*int32)(unsafe.Pointer(errorcodeptr)) = ERR10
return 0
goto __363
__362:
if !(repeat_max == Tuint32_t(1) && repeat_min == Tuint32_t(1)) {
goto __364
}
goto END_REPEAT
__364:
;
op_type = Tuint32_t(OP_TYPESTAR - OP_STAR) // Use type opcodes
mclength = Tuint32_t(0) // Not a character
if !(int32(op_previous) == OP_PROP || int32(op_previous) == OP_NOTPROP) {
goto __365
}
prop_type = int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(previous + 1)))
prop_value = int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(previous + 2)))
goto __366
__365:
// Come here from just above with a character in mcbuffer/mclength.
OUTPUT_SINGLE_REPEAT:
prop_type = libc.AssignInt32(&prop_value, -1)
__366:
;
// At this point, if prop_type == prop_value == -1 we either have a
// character in mcbuffer when mclength is greater than zero, or we have
// mclength zero, in which case there is a non-property character type in
// op_previous. If prop_type/value are not negative, we have a property
// character type in op_previous.
oldcode = code // Save where we were
code = previous // Usually overwrite previous item
// If the maximum is zero then the minimum must also be zero; Perl allows
// this case, so we do too - by simply omitting the item altogether.
if !(repeat_max == Tuint32_t(0)) {
goto __367
}
goto END_REPEAT
__367:
;
// Combine the op_type with the repeat_type
repeat_type = repeat_type + op_type
// A minimum of zero is handled either as the special case * or ?, or as
// an UPTO, with the maximum given.
if !(repeat_min == Tuint32_t(0)) {
goto __368
}
if !(repeat_max == DMAX_REPEAT_COUNT+uint32(1)) {
goto __370
}
*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&code, 1))) = TPCRE2_UCHAR8(OP_STAR + repeat_type)
goto __371
__370:
if !(repeat_max == Tuint32_t(1)) {
goto __372
}
*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&code, 1))) = TPCRE2_UCHAR8(OP_QUERY + repeat_type)
goto __373
__372:
*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&code, 1))) = TPCRE2_UCHAR8(OP_UPTO + repeat_type)
*(*TPCRE2_UCHAR8)(unsafe.Pointer(code)) = TPCRE2_UCHAR8(repeat_max >> 8)
*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + 1)) = TPCRE2_UCHAR8(repeat_max & Tuint32_t(255))
code += uintptr(DIMM2_SIZE)
__373:
;
__371:
;
goto __369
__368:
if !(repeat_min == Tuint32_t(1)) {
goto __374
}
if !(repeat_max == DMAX_REPEAT_COUNT+uint32(1)) {
goto __376
}
*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&code, 1))) = TPCRE2_UCHAR8(OP_PLUS + repeat_type)
goto __377
__376:
code = oldcode // Leave previous item in place
if !(repeat_max == Tuint32_t(1)) {
goto __378
}
goto END_REPEAT
__378:
;
*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&code, 1))) = TPCRE2_UCHAR8(OP_UPTO + repeat_type)
*(*TPCRE2_UCHAR8)(unsafe.Pointer(code)) = TPCRE2_UCHAR8((repeat_max - Tuint32_t(1)) >> 8)
*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + 1)) = TPCRE2_UCHAR8((repeat_max - Tuint32_t(1)) & Tuint32_t(255))
code += uintptr(DIMM2_SIZE)
__377:
;
goto __375
__374:
*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&code, 1))) = TPCRE2_UCHAR8(OP_EXACT + op_type) // NB EXACT doesn't have repeat_type
*(*TPCRE2_UCHAR8)(unsafe.Pointer(code)) = TPCRE2_UCHAR8(repeat_min >> 8)
*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + 1)) = TPCRE2_UCHAR8(repeat_min & Tuint32_t(255))
code += uintptr(DIMM2_SIZE)
// Unless repeat_max equals repeat_min, fill in the data for EXACT,
// and then generate the second opcode. For a repeated Unicode property
// match, there are two extra values that define the required property,
// and mclength is set zero to indicate this.
if !(repeat_max != repeat_min) {
goto __379
}
if !(mclength > Tuint32_t(0)) {
goto __380
}
libc.Xmemcpy(tls, code, bp+72, uint64(mclength*Tuint32_t(DPCRE2_CODE_UNIT_WIDTH/8)))
code += uintptr(mclength)
goto __381
__380:
*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&code, 1))) = op_previous
if !(prop_type >= 0) {
goto __382
}
*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&code, 1))) = TPCRE2_UCHAR8(prop_type)
*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&code, 1))) = TPCRE2_UCHAR8(prop_value)
__382:
;
__381:
;
// Now set up the following opcode
if !(repeat_max == DMAX_REPEAT_COUNT+uint32(1)) {
goto __383
}
*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&code, 1))) = TPCRE2_UCHAR8(OP_STAR + repeat_type)
goto __384
__383:
repeat_max = repeat_max - repeat_min
if !(repeat_max == Tuint32_t(1)) {
goto __385
}
*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&code, 1))) = TPCRE2_UCHAR8(OP_QUERY + repeat_type)
goto __386
__385:
*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&code, 1))) = TPCRE2_UCHAR8(OP_UPTO + repeat_type)
*(*TPCRE2_UCHAR8)(unsafe.Pointer(code)) = TPCRE2_UCHAR8(repeat_max >> 8)
*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + 1)) = TPCRE2_UCHAR8(repeat_max & Tuint32_t(255))
code += uintptr(DIMM2_SIZE)
__386:
;
__384:
;
__379:
;
__375:
;
__369:
;
// Fill in the character or character type for the final opcode.
if !(mclength > Tuint32_t(0)) {
goto __387
}
libc.Xmemcpy(tls, code, bp+72, uint64(mclength*Tuint32_t(DPCRE2_CODE_UNIT_WIDTH/8)))
code += uintptr(mclength)
goto __388
__387:
*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&code, 1))) = op_previous
if !(prop_type >= 0) {
goto __389
}
*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&code, 1))) = TPCRE2_UCHAR8(prop_type)
*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&code, 1))) = TPCRE2_UCHAR8(prop_value)
__389:
;
__388:
;
__363:
;
goto __267
__267:
; // End of switch on different op_previous values
// If the character following a repeat is '+', possessive_quantifier is
// TRUE. For some opcodes, there are special alternative opcodes for this
// case. For anything else, we wrap the entire repeated item inside OP_ONCE
// brackets. Logically, the '+' notation is just syntactic sugar, taken from
// Sun's Java package, but the special opcodes can optimize it.
//
// Some (but not all) possessively repeated subpatterns have already been
// completely handled in the code just above. For them, possessive_quantifier
// is always FALSE at this stage. Note that the repeated item starts at
// tempcode, not at previous, which might be the first part of a string whose
// (former) last char we repeated.
if !(possessive_quantifier != 0) {
goto __390
}
// Possessifying an EXACT quantifier has no effect, so we can ignore it.
// However, QUERY, STAR, or UPTO may follow (for quantifiers such as {5,6},
// {5,}, or {5,10}). We skip over an EXACT item; if the length of what
// remains is greater than zero, there's a further opcode that can be
// handled. If not, do nothing, leaving the EXACT alone.
switch int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 88 /* tempcode */))))) {
case OP_TYPEEXACT:
goto __392
// CHAR opcodes are used for exacts whose count is 1.
case OP_CHAR:
goto __393
case OP_CHARI:
goto __394
case OP_NOT:
goto __395
case OP_NOTI:
goto __396
case OP_EXACT:
goto __397
case OP_EXACTI:
goto __398
case OP_NOTEXACT:
goto __399
case OP_NOTEXACTI:
goto __400
// For the class opcodes, the repeat operator appears at the end;
// adjust tempcode to point to it.
case OP_CLASS:
goto __401
case OP_NCLASS:
goto __402
case OP_XCLASS:
goto __403
}
goto __391
__392:
*(*uintptr)(unsafe.Pointer(bp + 88 /* tempcode */)) += uintptr(int32(X_pcre2_OP_lengths_8[*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 88))))]) + func() int32 {
if int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 88)) + 3))) == OP_PROP ||
int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 88)) + 3))) == OP_NOTPROP {
return 2
}
return 0
}())
goto __391
// CHAR opcodes are used for exacts whose count is 1.
__393:
__394:
__395:
__396:
__397:
__398:
__399:
__400:
*(*uintptr)(unsafe.Pointer(bp + 88 /* tempcode */)) += uintptr(X_pcre2_OP_lengths_8[*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 88 /* tempcode */))))])
if !(utf != 0 && int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 88)) + libc.UintptrFromInt32(-1)))) >= 0xc0) {
goto __404
}
*(*uintptr)(unsafe.Pointer(bp + 88 /* tempcode */)) += uintptr(X_pcre2_utf8_table4[uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 88)) + libc.UintptrFromInt32(-1))))&0x3f])
__404:
;
goto __391
// For the class opcodes, the repeat operator appears at the end;
// adjust tempcode to point to it.
__401:
__402:
*(*uintptr)(unsafe.Pointer(bp + 88 /* tempcode */)) += uintptr(uint64(1) + uint64(32)/uint64(unsafe.Sizeof(TPCRE2_UCHAR8(0))))
goto __391
__403:
*(*uintptr)(unsafe.Pointer(bp + 88 /* tempcode */)) += uintptr(uint32(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 88)) + 1)))<<8 | int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 88)) + 2)))))
goto __391
__391:
;
// If tempcode is equal to code (which points to the end of the repeated
// item), it means we have skipped an EXACT item but there is no following
// QUERY, STAR, or UPTO; the value of len will be 0, and we do nothing. In
// all other cases, tempcode will be pointing to the repeat opcode, and will
// be less than code, so the value of len will be greater than 0.
len1 = int32((int64(code) - int64(*(*uintptr)(unsafe.Pointer(bp + 88)))) / 1)
if !(len1 > 0) {
goto __405
}
repcode = uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 88 /* tempcode */)))))
// There is a table for possessifying opcodes, all of which are less
// than OP_CALLOUT. A zero entry means there is no possessified version.
//
if !(repcode < OP_CALLOUT && int32(opcode_possessify[repcode]) > 0) {
goto __406
}
*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 88 /* tempcode */)))) = opcode_possessify[repcode]
goto __407
__406:
libc.Xmemmove(tls, *(*uintptr)(unsafe.Pointer(bp + 88))+uintptr(1)+uintptr(DLINK_SIZE), *(*uintptr)(unsafe.Pointer(bp + 88 /* tempcode */)), uint64(len1*(DPCRE2_CODE_UNIT_WIDTH/8)))
code += uintptr(1 + DLINK_SIZE)
len1 = len1 + (1 + DLINK_SIZE)
*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 88 /* tempcode */)))) = OP_ONCE
*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&code, 1))) = OP_KET
*(*TPCRE2_UCHAR8)(unsafe.Pointer(code)) = TPCRE2_UCHAR8(len1 >> 8)
*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + 1)) = TPCRE2_UCHAR8(len1 & 255)
code += uintptr(DLINK_SIZE)
*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 88 /* tempcode */)) + 1)) = TPCRE2_UCHAR8(len1 >> 8)
*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 88 /* tempcode */)) + 2)) = TPCRE2_UCHAR8(len1 & 255)
__407:
;
__405:
;
__390:
;
// We set the "follows varying string" flag for subsequently encountered
// reqcus if it isn't already set and we have just passed a varying length
// item.
END_REPEAT:
*(*Tuint32_t)(unsafe.Pointer(cb + 276)) |= reqvary
goto __12
// ===================================================================
// Handle a 32-bit data character with a value greater than META_END.
__67:
*(*uintptr)(unsafe.Pointer(bp + 96 /* pptr */)) += 4
goto NORMAL_CHAR
// ===============================================================
// Handle a back reference by number, which is the meta argument. The
// pattern offsets for back references to group numbers less than 10 are held
// in a special vector, to avoid using more than two parsed pattern elements
// in 64-bit environments. We only need the offset to the first occurrence,
// because if that doesn't fail, subsequent ones will also be OK.
__68:
if !(meta_arg < Tuint32_t(10)) {
goto __408
}
offset = *(*Tsize_t)(unsafe.Pointer(cb + 88 + uintptr(meta_arg)*8))
goto __409
__408:
offset = Tsize_t(*(*Tuint32_t)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 96)) + 1*4)))<<32 | Tsize_t(*(*Tuint32_t)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 96)) + 2*4)))
*(*uintptr)(unsafe.Pointer(bp + 96 /* pptr */)) += 4 * uintptr(2)
__409:
;
if !(meta_arg > (*Tcompile_block_8)(unsafe.Pointer(cb)).Fbracount) {
goto __410
}
(*Tcompile_block_8)(unsafe.Pointer(cb)).Ferroroffset = offset
*(*int32)(unsafe.Pointer(errorcodeptr)) = ERR15 // Non-existent subpattern
return 0
__410:
;
// Come here from named backref handling when the reference is to a
// single group (that is, not to a duplicated name). The back reference
// data will have already been updated. We must disable firstcu if not
// set, to cope with cases like (?=(\w+))\1: which would otherwise set ':'
// later.
HANDLE_SINGLE_REFERENCE:
if !(firstcuflags == DREQ_UNSET) {
goto __411
}
zerofirstcuflags = libc.AssignUint32(&firstcuflags, DREQ_NONE)
__411:
;
*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&code, 1))) = func() uint8 {
if options&DPCRE2_CASELESS != Tuint32_t(0) {
return OP_REFI
}
return OP_REF
}()
*(*TPCRE2_UCHAR8)(unsafe.Pointer(code)) = TPCRE2_UCHAR8(meta_arg >> 8)
*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + 1)) = TPCRE2_UCHAR8(meta_arg & Tuint32_t(255))
code += uintptr(DIMM2_SIZE)
// Update the map of back references, and keep the highest one. We
// could do this in parse_regex() for numerical back references, but not
// for named back references, because we don't know the numbers to which
// named back references refer. So we do it all in this function.
*(*Tuint32_t)(unsafe.Pointer(cb + 252)) |= func() uint32 {
if meta_arg < Tuint32_t(32) {
return uint32(1) << meta_arg
}
return uint32(1)
}()
if !(meta_arg > (*Tcompile_block_8)(unsafe.Pointer(cb)).Ftop_backref) {
goto __412
}
(*Tcompile_block_8)(unsafe.Pointer(cb)).Ftop_backref = meta_arg
__412:
;
goto __12
// ===============================================================
// Handle recursion by inserting the number of the called group (which is
// the meta argument) after OP_RECURSE. At the end of compiling the pattern is
// scanned and these numbers are replaced by offsets within the pattern. It is
// done like this to avoid problems with forward references and adjusting
// offsets when groups are duplicated and moved (as discovered in previous
// implementations). Note that a recursion does not have a set first
// character.
__69:
offset = Tsize_t(*(*Tuint32_t)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 96)) + 1*4)))<<32 | Tsize_t(*(*Tuint32_t)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 96)) + 2*4)))
*(*uintptr)(unsafe.Pointer(bp + 96 /* pptr */)) += 4 * uintptr(2)
if !(meta_arg > (*Tcompile_block_8)(unsafe.Pointer(cb)).Fbracount) {
goto __413
}
(*Tcompile_block_8)(unsafe.Pointer(cb)).Ferroroffset = offset
*(*int32)(unsafe.Pointer(errorcodeptr)) = ERR15 // Non-existent subpattern
return 0
__413:
;
HANDLE_NUMERICAL_RECURSION:
*(*TPCRE2_UCHAR8)(unsafe.Pointer(code)) = OP_RECURSE
*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + 1)) = TPCRE2_UCHAR8(meta_arg >> 8)
*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + 2)) = TPCRE2_UCHAR8(meta_arg & Tuint32_t(255))
code += uintptr(1 + DLINK_SIZE)
groupsetfirstcu = DFALSE
(*Tcompile_block_8)(unsafe.Pointer(cb)).Fhad_recurse = DTRUE
if !(firstcuflags == DREQ_UNSET) {
goto __414
}
firstcuflags = DREQ_NONE
__414:
;
zerofirstcu = firstcu
zerofirstcuflags = firstcuflags
goto __12
// ===============================================================
// Handle capturing parentheses; the number is the meta argument.
__70:
bravalue = OP_CBRA
skipunits = Tuint32_t(DIMM2_SIZE)
*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + 3)) = TPCRE2_UCHAR8(meta_arg >> 8)
*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + 4)) = TPCRE2_UCHAR8(meta_arg & Tuint32_t(255))
(*Tcompile_block_8)(unsafe.Pointer(cb)).Flastcapture = meta_arg
goto GROUP_PROCESS_NOTE_EMPTY
// ===============================================================
// Handle escape sequence items. For ones like \d, the ESC_values are
// arranged to be the same as the corresponding OP_values in the default case
// when PCRE2_UCP is not set (which is the only case in which they will appear
// here).
//
// Note: \Q and \E are never seen here, as they were dealt with in
// parse_pattern(). Neither are numerical back references or recursions, which
// were turned into META_BACKREF or META_RECURSE items, respectively. \k and
// \g, when followed by names, are turned into META_BACKREF_BYNAME or
// META_RECURSE_BYNAME.
__71:
// We can test for escape sequences that consume a character because their
// values lie between ESC_b and ESC_Z; this may have to change if any new ones
// are ever created. For these sequences, we disable the setting of a first
// character if it hasn't already been set.
if !(meta_arg > ESC_b && meta_arg < ESC_Z) {
goto __415
}
matched_char = DTRUE
if !(firstcuflags == DREQ_UNSET) {
goto __416
}
firstcuflags = DREQ_NONE
__416:
;
__415:
;
// Set values to reset to if this is followed by a zero repeat.
zerofirstcu = firstcu
zerofirstcuflags = firstcuflags
zeroreqcu = reqcu
zeroreqcuflags = reqcuflags
// If Unicode is not supported, \P and \p are not allowed and are
// faulted at parse time, so will never appear here.
if !(meta_arg == ESC_P || meta_arg == ESC_p) {
goto __417
}
ptype1 = *(*Tuint32_t)(unsafe.Pointer(libc.PreIncUintptr(&*(*uintptr)(unsafe.Pointer(bp + 96)), 4))) >> 16
pdata1 = *(*Tuint32_t)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 96)))) & Tuint32_t(0xffff)
// The special case of \p{Any} is compiled to OP_ALLANY so as to benefit
// from the auto-anchoring code.
if !(meta_arg == ESC_p && ptype1 == Tuint32_t(DPT_ANY)) {
goto __418
}
*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&code, 1))) = OP_ALLANY
goto __419
__418:
*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&code, 1))) = func() uint8 {
if meta_arg == ESC_p {
return OP_PROP
}
return OP_NOTPROP
}()
*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&code, 1))) = TPCRE2_UCHAR8(ptype1)
*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&code, 1))) = TPCRE2_UCHAR8(pdata1)
__419:
;
goto __12 // End META_ESCAPE
__417:
;
// \K is forbidden in lookarounds since 10.38 because that's what Perl has
// done. However, there's an option, in case anyone was relying on it.
if !(int32((*Tcompile_block_8)(unsafe.Pointer(cb)).Fassert_depth) > 0 && meta_arg == ESC_K && (*Tpcre2_real_compile_context_8)(unsafe.Pointer((*Tcompile_block_8)(unsafe.Pointer(cb)).Fcx)).Fextra_options&DPCRE2_EXTRA_ALLOW_LOOKAROUND_BSK == Tuint32_t(0)) {
goto __420
}
*(*int32)(unsafe.Pointer(errorcodeptr)) = ERR99
return 0
__420:
;
// For the rest (including \X when Unicode is supported - if not it's
// faulted at parse time), the OP value is the escape value when PCRE2_UCP is
// not set; if it is set, these escapes do not show up here because they are
// converted into Unicode property tests in parse_regex(). Note that \b and \B
// do a one-character lookbehind, and \A also behaves as if it does.
if !(meta_arg == ESC_C) {
goto __421
}
*(*Tuint32_t)(unsafe.Pointer(cb + 208)) |= Tuint32_t(DPCRE2_HASBKC)
__421:
; // Record
if !((meta_arg == ESC_b || meta_arg == ESC_B || meta_arg == ESC_A) && (*Tcompile_block_8)(unsafe.Pointer(cb)).Fmax_lookbehind == 0) {
goto __422
}
(*Tcompile_block_8)(unsafe.Pointer(cb)).Fmax_lookbehind = 1
__422:
;
// In non-UTF mode, and for both 32-bit modes, we turn \C into OP_ALLANY
// instead of OP_ANYBYTE so that it works in DFA mode and in lookbehinds.
*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&code, 1))) = func() uint8 {
if !(utf != 0) && meta_arg == ESC_C {
return OP_ALLANY
}
return uint8(meta_arg)
}()
goto __12 // End META_ESCAPE
// ===================================================================
// Handle an unrecognized meta value. A parsed pattern value less than
// META_END is a literal. Otherwise we have a problem.
__72:
if !(meta >= DMETA_END) {
goto __423
}
*(*int32)(unsafe.Pointer(errorcodeptr)) = ERR89 // Internal error - unrecognized.
return 0
__423:
;
// Handle a literal character. We come here by goto in the case of a
// 32-bit, non-UTF character whose value is greater than META_END.
NORMAL_CHAR:
meta = *(*Tuint32_t)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 96 /* pptr */)))) // Get the full 32 bits
NORMAL_CHAR_SET: // Character is already in meta
matched_char = DTRUE
// For caseless UTF or UCP mode, check whether this character has more than
// one other case. If so, generate a special OP_PROP item instead of OP_CHARI.
//
if !((utf != 0 || ucp != 0) && options&DPCRE2_CASELESS != Tuint32_t(0)) {
goto __424
}
caseset = Tuint32_t((*Tucd_record)(unsafe.Pointer(uintptr(unsafe.Pointer(&X_pcre2_ucd_records_8)) + uintptr(X_pcre2_ucd_stage2_8[int32(X_pcre2_ucd_stage1_8[int32(meta)/DUCD_BLOCK_SIZE])*DUCD_BLOCK_SIZE+int32(meta)%DUCD_BLOCK_SIZE])*12)).Fcaseset)
if !(caseset != Tuint32_t(0)) {
goto __425
}
*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&code, 1))) = OP_PROP
*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&code, 1))) = TPCRE2_UCHAR8(DPT_CLIST)
*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&code, 1))) = TPCRE2_UCHAR8(caseset)
if !(firstcuflags == DREQ_UNSET) {
goto __426
}
firstcuflags = libc.AssignUint32(&zerofirstcuflags, DREQ_NONE)
__426:
;
goto __12 // End handling this meta item
__425:
;
__424:
;
// Caseful matches, or caseless and not one of the multicase characters. We
// come here by goto in the case of a positive class that contains only
// case-partners of a character with just two cases; matched_char has already
// been set TRUE and options fudged if necessary.
CLASS_CASELESS_CHAR:
// Get the character's code units into mcbuffer, with the length in
// mclength. When not in UTF mode, the length is always 1.
if !(utf != 0) {
goto __427
}
mclength = X_pcre2_ord2utf_8(tls, meta, bp+72)
goto __428
__427:
mclength = Tuint32_t(1)
*(*TPCRE2_UCHAR8)(unsafe.Pointer(bp + 72)) = TPCRE2_UCHAR8(meta)
__428:
;
// Generate the appropriate code
*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&code, 1))) = func() uint8 {
if options&DPCRE2_CASELESS != Tuint32_t(0) {
return OP_CHARI
}
return OP_CHAR
}()
libc.Xmemcpy(tls, code, bp+72, uint64(mclength*Tuint32_t(DPCRE2_CODE_UNIT_WIDTH/8)))
code += uintptr(mclength)
// Remember if \r or \n were seen
if !(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(bp + 72))) == '\015' || int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(bp + 72))) == '\012') {
goto __429
}
*(*Tuint32_t)(unsafe.Pointer(cb + 208)) |= Tuint32_t(DPCRE2_HASCRORLF)
__429:
;
// Set the first and required code units appropriately. If no previous
// first code unit, set it from this character, but revert to none on a zero
// repeat. Otherwise, leave the firstcu value alone, and don't change it on
// a zero repeat.
if !(firstcuflags == DREQ_UNSET) {
goto __430
}
zerofirstcuflags = DREQ_NONE
zeroreqcu = reqcu
zeroreqcuflags = reqcuflags
// If the character is more than one code unit long, we can set a single
// firstcu only if it is not to be matched caselessly. Multiple possible
// starting code units may be picked up later in the studying code.
if !(mclength == Tuint32_t(1) || req_caseopt == Tuint32_t(0)) {
goto __432
}
firstcu = Tuint32_t(*(*TPCRE2_UCHAR8)(unsafe.Pointer(bp + 72)))
firstcuflags = req_caseopt
if !(mclength != Tuint32_t(1)) {
goto __434
}
reqcu = Tuint32_t(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + libc.UintptrFromInt32(-1))))
reqcuflags = (*Tcompile_block_8)(unsafe.Pointer(cb)).Freq_varyopt
__434:
;
goto __433
__432:
firstcuflags = libc.AssignUint32(&reqcuflags, DREQ_NONE)
__433:
;
goto __431
__430:
zerofirstcu = firstcu
zerofirstcuflags = firstcuflags
zeroreqcu = reqcu
zeroreqcuflags = reqcuflags
if !(mclength == Tuint32_t(1) || req_caseopt == Tuint32_t(0)) {
goto __435
}
reqcu = Tuint32_t(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + libc.UintptrFromInt32(-1))))
reqcuflags = req_caseopt | (*Tcompile_block_8)(unsafe.Pointer(cb)).Freq_varyopt
__435:
;
__431:
;
// If caselessness was temporarily instated, reset it.
if !(reset_caseful != 0) {
goto __436
}
options = options & libc.CplUint32(DPCRE2_CASELESS)
req_caseopt = Tuint32_t(0)
reset_caseful = DFALSE
__436:
;
goto __12 // End literal character handling
__12:
; // End of big switch
goto __2
__2:
*(*uintptr)(unsafe.Pointer(bp + 96 /* pptr */)) += 4
goto __1
goto __3
__3:
;
return int32(0) // End of big loop
// Control never reaches here.
}
// ************************************************
//
// Compile regex: a sequence of alternatives *
//
// On entry, pptr is pointing past the bracket meta, but on return it points to
// the closing bracket or META_END. The code variable is pointing at the code unit
// into which the BRA operator has been stored. This function is used during the
// pre-compile phase when we are trying to find out the amount of memory needed,
// as well as during the real compile phase. The value of lengthptr distinguishes
// the two phases.
//
// Arguments:
// options option bits, including any changes for this subpattern
// codeptr -> the address of the current code pointer
// pptrptr -> the address of the current parsed pattern pointer
// errorcodeptr -> pointer to error code variable
// skipunits skip this many code units at start (for brackets and OP_COND)
// firstcuptr place to put the first required code unit
// firstcuflagsptr place to put the first code unit flags
// reqcuptr place to put the last required code unit
// reqcuflagsptr place to put the last required code unit flags
// bcptr pointer to the chain of currently open branches
// cb points to the data block with tables pointers etc.
// lengthptr NULL during the real compile phase
// points to length accumulator during pre-compile phase
//
// Returns: 0 There has been an error
// +1 Success, this group must match at least one character
// -1 Success, this group may match an empty string
func compile_regex(tls *libc.TLS, options Tuint32_t, codeptr uintptr, pptrptr uintptr, errorcodeptr uintptr, skipunits Tuint32_t, firstcuptr uintptr, firstcuflagsptr uintptr, reqcuptr uintptr, reqcuflagsptr uintptr, bcptr uintptr, cb uintptr, lengthptr uintptr) int32 { /* pcre2_compile.c:8095:1: */
bp := tls.Alloc(80)
defer tls.Free(80)
*(*Tuint32_t)(unsafe.Pointer(bp + 16)) = options
*(*uintptr)(unsafe.Pointer(bp + 24 /* code */)) = *(*uintptr)(unsafe.Pointer(codeptr))
var last_branch uintptr = *(*uintptr)(unsafe.Pointer(bp + 24 /* code */))
var start_bracket uintptr = *(*uintptr)(unsafe.Pointer(bp + 24 /* code */))
var lookbehind TBOOL
// var capitem Topen_capitem at bp, 16
var capnumber int32 = 0
var okreturn int32 = 1
*(*uintptr)(unsafe.Pointer(bp + 32 /* pptr */)) = *(*uintptr)(unsafe.Pointer(pptrptr))
var firstcu Tuint32_t
var reqcu Tuint32_t
var lookbehindlength Tuint32_t
var firstcuflags Tuint32_t
var reqcuflags Tuint32_t
// var branchfirstcu Tuint32_t at bp+40, 4
// var branchreqcu Tuint32_t at bp+48, 4
// var branchfirstcuflags Tuint32_t at bp+44, 4
// var branchreqcuflags Tuint32_t at bp+52, 4
// var length Tsize_t at bp+72, 8
// var bc Tbranch_chain_8 at bp+56, 16
// If set, call the external function that checks for stack availability.
if (*Tpcre2_real_compile_context_8)(unsafe.Pointer((*Tcompile_block_8)(unsafe.Pointer(cb)).Fcx)).Fstack_guard != uintptr(0) && (*struct {
f func(*libc.TLS, Tuint32_t, uintptr) int32
})(unsafe.Pointer(&struct{ uintptr }{(*Tpcre2_real_compile_context_8)(unsafe.Pointer((*Tcompile_block_8)(unsafe.Pointer(cb)).Fcx)).Fstack_guard})).f(tls, uint32((*Tcompile_block_8)(unsafe.Pointer(cb)).Fparens_depth), (*Tpcre2_real_compile_context_8)(unsafe.Pointer((*Tcompile_block_8)(unsafe.Pointer(cb)).Fcx)).Fstack_guard_data) != 0 {
*(*int32)(unsafe.Pointer(errorcodeptr)) = ERR33
return 0
}
// Miscellaneous initialization
(*Tbranch_chain_8)(unsafe.Pointer(bp + 56 /* &bc */)).Fouter = bcptr
(*Tbranch_chain_8)(unsafe.Pointer(bp + 56 /* &bc */)).Fcurrent_branch = *(*uintptr)(unsafe.Pointer(bp + 24 /* code */))
firstcu = libc.AssignUint32(&reqcu, Tuint32_t(0))
firstcuflags = libc.AssignUint32(&reqcuflags, DREQ_UNSET)
// Accumulate the length for use in the pre-compile phase. Start with the
// length of the BRA and KET and any extra code units that are required at the
// beginning. We accumulate in a local variable to save frequent testing of
// lengthptr for NULL. We cannot do this by looking at the value of 'code' at the
// start and end of each alternative, because compiled items are discarded during
// the pre-compile phase so that the workspace is not exceeded.
*(*Tsize_t)(unsafe.Pointer(bp + 72 /* length */)) = Tsize_t(Tuint32_t(2+2*DLINK_SIZE) + skipunits)
// Remember if this is a lookbehind assertion, and if it is, save its length
// and skip over the pattern offset.
lookbehind = libc.Bool32(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 24))))) == OP_ASSERTBACK || int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 24))))) == OP_ASSERTBACK_NOT || int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 24))))) == OP_ASSERTBACK_NA)
if lookbehind != 0 {
lookbehindlength = *(*Tuint32_t)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 32)) + libc.UintptrFromInt32(-1)*4)) & 0x0000ffff
*(*uintptr)(unsafe.Pointer(bp + 32 /* pptr */)) += 4 * uintptr(DSIZEOFFSET)
} else {
lookbehindlength = Tuint32_t(0)
}
// If this is a capturing subpattern, add to the chain of open capturing items
// so that we can detect them if (*ACCEPT) is encountered. Note that only OP_CBRA
// need be tested here; changing this opcode to one of its variants, e.g.
// OP_SCBRAPOS, happens later, after the group has been compiled.
if int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 24))))) == OP_CBRA {
capnumber = int32(uint32(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 24)) + 3)))<<8 | int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 24)) + 4)))))
(*Topen_capitem)(unsafe.Pointer(bp /* &capitem */)).Fnumber = Tuint16_t(capnumber)
(*Topen_capitem)(unsafe.Pointer(bp /* &capitem */)).Fnext = (*Tcompile_block_8)(unsafe.Pointer(cb)).Fopen_caps
(*Topen_capitem)(unsafe.Pointer(bp /* &capitem */)).Fassert_depth = (*Tcompile_block_8)(unsafe.Pointer(cb)).Fassert_depth
(*Tcompile_block_8)(unsafe.Pointer(cb)).Fopen_caps = bp /* &capitem */
}
// Offset is set zero to mark that this bracket is still open
*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 24 /* code */)) + 1)) = TPCRE2_UCHAR8(int32(0) >> 8)
*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 24 /* code */)) + 2)) = TPCRE2_UCHAR8(0 & 255)
*(*uintptr)(unsafe.Pointer(bp + 24 /* code */)) += uintptr(Tuint32_t(1+DLINK_SIZE) + skipunits)
// Loop for each alternative branch
for {
var branch_return int32
// Insert OP_REVERSE if this is as lookbehind assertion.
if lookbehind != 0 && lookbehindlength > Tuint32_t(0) {
*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&*(*uintptr)(unsafe.Pointer(bp + 24 /* code */)), 1))) = OP_REVERSE
*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 24 /* code */)))) = TPCRE2_UCHAR8(lookbehindlength >> 8)
*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 24 /* code */)) + 1)) = TPCRE2_UCHAR8(lookbehindlength & Tuint32_t(255))
*(*uintptr)(unsafe.Pointer(bp + 24 /* code */)) += uintptr(DLINK_SIZE)
*(*Tsize_t)(unsafe.Pointer(bp + 72 /* length */)) += uint64(1 + DLINK_SIZE)
}
// Now compile the branch; in the pre-compile phase its length gets added
// into the length.
if libc.AssignInt32(&branch_return, compile_branch(tls, bp+16, bp+24, bp+32, errorcodeptr, bp+40,
bp+44, bp+48, bp+52, bp+56,
cb, func() uintptr {
if lengthptr == uintptr(0) {
return uintptr(0)
}
return bp + 72
}())) == 0 {
return 0
}
// If a branch can match an empty string, so can the whole group.
if branch_return < 0 {
okreturn = -1
}
// In the real compile phase, there is some post-processing to be done.
if lengthptr == uintptr(0) {
// If this is the first branch, the firstcu and reqcu values for the
// branch become the values for the regex.
if int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(last_branch))) != OP_ALT {
firstcu = *(*Tuint32_t)(unsafe.Pointer(bp + 40 /* branchfirstcu */))
firstcuflags = *(*Tuint32_t)(unsafe.Pointer(bp + 44 /* branchfirstcuflags */))
reqcu = *(*Tuint32_t)(unsafe.Pointer(bp + 48 /* branchreqcu */))
reqcuflags = *(*Tuint32_t)(unsafe.Pointer(bp + 52 /* branchreqcuflags */))
} else {
// If we previously had a firstcu, but it doesn't match the new branch,
// we have to abandon the firstcu for the regex, but if there was
// previously no reqcu, it takes on the value of the old firstcu.
if firstcuflags != *(*Tuint32_t)(unsafe.Pointer(bp + 44)) || firstcu != *(*Tuint32_t)(unsafe.Pointer(bp + 40)) {
if firstcuflags < DREQ_NONE {
if reqcuflags >= DREQ_NONE {
reqcu = firstcu
reqcuflags = firstcuflags
}
}
firstcuflags = DREQ_NONE
}
// If we (now or from before) have no firstcu, a firstcu from the
// branch becomes a reqcu if there isn't a branch reqcu.
if firstcuflags >= DREQ_NONE && *(*Tuint32_t)(unsafe.Pointer(bp + 44)) < DREQ_NONE && *(*Tuint32_t)(unsafe.Pointer(bp + 52)) >= DREQ_NONE {
*(*Tuint32_t)(unsafe.Pointer(bp + 48 /* branchreqcu */)) = *(*Tuint32_t)(unsafe.Pointer(bp + 40 /* branchfirstcu */))
*(*Tuint32_t)(unsafe.Pointer(bp + 52 /* branchreqcuflags */)) = *(*Tuint32_t)(unsafe.Pointer(bp + 44 /* branchfirstcuflags */))
}
// Now ensure that the reqcus match
if reqcuflags&libc.CplUint32(DREQ_VARY) != *(*Tuint32_t)(unsafe.Pointer(bp + 52))&libc.CplUint32(DREQ_VARY) || reqcu != *(*Tuint32_t)(unsafe.Pointer(bp + 48)) {
reqcuflags = DREQ_NONE
} else {
reqcu = *(*Tuint32_t)(unsafe.Pointer(bp + 48 /* branchreqcu */))
reqcuflags = reqcuflags | *(*Tuint32_t)(unsafe.Pointer(bp + 52)) // To "or" REQ_VARY if present
}
}
}
// Handle reaching the end of the expression, either ')' or end of pattern.
// In the real compile phase, go back through the alternative branches and
// reverse the chain of offsets, with the field in the BRA item now becoming an
// offset to the first alternative. If there are no alternatives, it points to
// the end of the group. The length in the terminating ket is always the length
// of the whole bracketed item. Return leaving the pointer at the terminating
// char.
if *(*Tuint32_t)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 32))))&0xffff0000 != DMETA_ALT {
if lengthptr == uintptr(0) {
var branch_length Tsize_t = Tsize_t((int64(*(*uintptr)(unsafe.Pointer(bp + 24))) - int64(last_branch)) / 1)
for __ccgo := true; __ccgo; __ccgo = branch_length > uint64(0) {
var prev_length Tsize_t = Tsize_t(uint32(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(last_branch + 1)))<<8 | int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(last_branch + 2)))))
*(*TPCRE2_UCHAR8)(unsafe.Pointer(last_branch + 1)) = TPCRE2_UCHAR8(branch_length >> 8)
*(*TPCRE2_UCHAR8)(unsafe.Pointer(last_branch + 2)) = TPCRE2_UCHAR8(branch_length & uint64(255))
branch_length = prev_length
last_branch -= uintptr(branch_length)
}
}
// Fill in the ket
*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 24 /* code */)))) = OP_KET
*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 24 /* code */)) + 1)) = TPCRE2_UCHAR8(int32((int64(*(*uintptr)(unsafe.Pointer(bp + 24)))-int64(start_bracket))/1) >> 8)
*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 24 /* code */)) + 2)) = TPCRE2_UCHAR8(int32((int64(*(*uintptr)(unsafe.Pointer(bp + 24)))-int64(start_bracket))/1) & 255)
*(*uintptr)(unsafe.Pointer(bp + 24 /* code */)) += uintptr(1 + DLINK_SIZE)
// If it was a capturing subpattern, remove the block from the chain.
if capnumber > 0 {
(*Tcompile_block_8)(unsafe.Pointer(cb)).Fopen_caps = (*Topen_capitem)(unsafe.Pointer((*Tcompile_block_8)(unsafe.Pointer(cb)).Fopen_caps)).Fnext
}
// Set values to pass back
*(*uintptr)(unsafe.Pointer(codeptr)) = *(*uintptr)(unsafe.Pointer(bp + 24 /* code */))
*(*uintptr)(unsafe.Pointer(pptrptr)) = *(*uintptr)(unsafe.Pointer(bp + 32 /* pptr */))
*(*Tuint32_t)(unsafe.Pointer(firstcuptr)) = firstcu
*(*Tuint32_t)(unsafe.Pointer(firstcuflagsptr)) = firstcuflags
*(*Tuint32_t)(unsafe.Pointer(reqcuptr)) = reqcu
*(*Tuint32_t)(unsafe.Pointer(reqcuflagsptr)) = reqcuflags
if lengthptr != uintptr(0) {
if uint64(0x7fffffff-20)-*(*Tsize_t)(unsafe.Pointer(lengthptr)) < *(*Tsize_t)(unsafe.Pointer(bp + 72)) {
*(*int32)(unsafe.Pointer(errorcodeptr)) = ERR20
return 0
}
*(*Tsize_t)(unsafe.Pointer(lengthptr)) += *(*Tsize_t)(unsafe.Pointer(bp + 72))
}
return okreturn
}
// Another branch follows. In the pre-compile phase, we can move the code
// pointer back to where it was for the start of the first branch. (That is,
// pretend that each branch is the only one.)
//
// In the real compile phase, insert an ALT node. Its length field points back
// to the previous branch while the bracket remains open. At the end the chain
// is reversed. It's done like this so that the start of the bracket has a
// zero offset until it is closed, making it possible to detect recursion.
if lengthptr != uintptr(0) {
*(*uintptr)(unsafe.Pointer(bp + 24 /* code */)) = *(*uintptr)(unsafe.Pointer(codeptr)) + uintptr(1) + uintptr(DLINK_SIZE) + uintptr(skipunits)
*(*Tsize_t)(unsafe.Pointer(bp + 72 /* length */)) += uint64(1 + DLINK_SIZE)
} else {
*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 24 /* code */)))) = OP_ALT
*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 24 /* code */)) + 1)) = TPCRE2_UCHAR8(int32((int64(*(*uintptr)(unsafe.Pointer(bp + 24)))-int64(last_branch))/1) >> 8)
*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 24 /* code */)) + 2)) = TPCRE2_UCHAR8(int32((int64(*(*uintptr)(unsafe.Pointer(bp + 24)))-int64(last_branch))/1) & 255)
(*Tbranch_chain_8)(unsafe.Pointer(bp + 56 /* &bc */)).Fcurrent_branch = libc.AssignUintptr(&last_branch, *(*uintptr)(unsafe.Pointer(bp + 24 /* code */)))
*(*uintptr)(unsafe.Pointer(bp + 24 /* code */)) += uintptr(1 + DLINK_SIZE)
}
// Set the lookbehind length (if not in a lookbehind the value will be zero)
// and then advance past the vertical bar.
lookbehindlength = *(*Tuint32_t)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 32)))) & 0x0000ffff
*(*uintptr)(unsafe.Pointer(bp + 32 /* pptr */)) += 4
}
return int32(0)
// Control never reaches here
}
// ************************************************
//
// Check for anchored pattern *
//
// Try to find out if this is an anchored regular expression. Consider each
// alternative branch. If they all start with OP_SOD or OP_CIRC, or with a bracket
// all of whose alternatives start with OP_SOD or OP_CIRC (recurse ad lib), then
// it's anchored. However, if this is a multiline pattern, then only OP_SOD will
// be found, because ^ generates OP_CIRCM in that mode.
//
// We can also consider a regex to be anchored if OP_SOM starts all its branches.
// This is the code for \G, which means "match at start of match position, taking
// into account the match offset".
//
// A branch is also implicitly anchored if it starts with .* and DOTALL is set,
// because that will try the rest of the pattern at all possible matching points,
// so there is no point trying again.... er ....
//
// .... except when the .* appears inside capturing parentheses, and there is a
// subsequent back reference to those parentheses. We haven't enough information
// to catch that case precisely.
//
// At first, the best we could do was to detect when .* was in capturing brackets
// and the highest back reference was greater than or equal to that level.
// However, by keeping a bitmap of the first 31 back references, we can catch some
// of the more common cases more precisely.
//
// ... A second exception is when the .* appears inside an atomic group, because
// this prevents the number of characters it matches from being adjusted.
//
// Arguments:
// code points to start of the compiled pattern
// bracket_map a bitmap of which brackets we are inside while testing; this
// handles up to substring 31; after that we just have to take
// the less precise approach
// cb points to the compile data block
// atomcount atomic group level
// inassert TRUE if in an assertion
//
// Returns: TRUE or FALSE
func is_anchored(tls *libc.TLS, code TPCRE2_SPTR8, bracket_map Tuint32_t, cb uintptr, atomcount int32, inassert TBOOL) TBOOL { /* pcre2_compile.c:8394:1: */
for __ccgo := true; __ccgo; __ccgo = int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code))) == OP_ALT {
var scode TPCRE2_SPTR8 = first_significant_code(tls,
code+uintptr(X_pcre2_OP_lengths_8[*(*TPCRE2_UCHAR8)(unsafe.Pointer(code))]), DFALSE)
var op int32 = int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(scode)))
// Non-capturing brackets
if op == OP_BRA || op == OP_BRAPOS || op == OP_SBRA || op == OP_SBRAPOS {
if !(is_anchored(tls, scode, bracket_map, cb, atomcount, inassert) != 0) {
return DFALSE
}
} else if op == OP_CBRA || op == OP_CBRAPOS || op == OP_SCBRA || op == OP_SCBRAPOS {
var n int32 = int32(uint32(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(scode + 3)))<<8 | int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(scode + 4)))))
var new_map Tuint32_t = bracket_map | func() uint32 {
if n < 32 {
return uint32(1) << n
}
return uint32(1)
}()
if !(is_anchored(tls, scode, new_map, cb, atomcount, inassert) != 0) {
return DFALSE
}
} else if op == OP_ASSERT || op == OP_ASSERT_NA {
if !(is_anchored(tls, scode, bracket_map, cb, atomcount, DTRUE) != 0) {
return DFALSE
}
} else if op == OP_COND || op == OP_SCOND {
if int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(scode + uintptr(uint32(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(scode + 1)))<<8|int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(scode + 2)))))))) != OP_ALT {
return DFALSE
}
if !(is_anchored(tls, scode, bracket_map, cb, atomcount, inassert) != 0) {
return DFALSE
}
} else if op == OP_ONCE {
if !(is_anchored(tls, scode, bracket_map, cb, atomcount+1, inassert) != 0) {
return DFALSE
}
} else if op == OP_TYPESTAR || op == OP_TYPEMINSTAR || op == OP_TYPEPOSSTAR {
if int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(scode + 1))) != OP_ALLANY || bracket_map&(*Tcompile_block_8)(unsafe.Pointer(cb)).Fbackref_map != Tuint32_t(0) || atomcount > 0 || (*Tcompile_block_8)(unsafe.Pointer(cb)).Fhad_pruneorskip != 0 || inassert != 0 || (*Tcompile_block_8)(unsafe.Pointer(cb)).Fexternal_options&DPCRE2_NO_DOTSTAR_ANCHOR != Tuint32_t(0) {
return DFALSE
}
} else if op != OP_SOD && op != OP_SOM && op != OP_CIRC {
return DFALSE
}
code += TPCRE2_SPTR8(uint32(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + 1)))<<8 | int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + 2)))))
} // Loop for each alternative
return DTRUE
}
// ************************************************
//
// Check for starting with ^ or .* *
//
// This is called to find out if every branch starts with ^ or .* so that
// "first char" processing can be done to speed things up in multiline
// matching and for non-DOTALL patterns that start with .* (which must start at
// the beginning or after \n). As in the case of is_anchored() (see above), we
// have to take account of back references to capturing brackets that contain .*
// because in that case we can't make the assumption. Also, the appearance of .*
// inside atomic brackets or in an assertion, or in a pattern that contains *PRUNE
// or *SKIP does not count, because once again the assumption no longer holds.
//
// Arguments:
// code points to start of the compiled pattern or a group
// bracket_map a bitmap of which brackets we are inside while testing; this
// handles up to substring 31; after that we just have to take
// the less precise approach
// cb points to the compile data
// atomcount atomic group level
// inassert TRUE if in an assertion
//
// Returns: TRUE or FALSE
func is_startline(tls *libc.TLS, code TPCRE2_SPTR8, bracket_map uint32, cb uintptr, atomcount int32, inassert TBOOL) TBOOL { /* pcre2_compile.c:8499:1: */
for __ccgo := true; __ccgo; __ccgo = int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code))) == OP_ALT {
var scode TPCRE2_SPTR8 = first_significant_code(tls,
code+uintptr(X_pcre2_OP_lengths_8[*(*TPCRE2_UCHAR8)(unsafe.Pointer(code))]), DFALSE)
var op int32 = int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(scode)))
// If we are at the start of a conditional assertion group, *both* the
// conditional assertion *and* what follows the condition must satisfy the test
// for start of line. Other kinds of condition fail. Note that there may be an
// auto-callout at the start of a condition.
if op == OP_COND {
scode += TPCRE2_SPTR8(1 + DLINK_SIZE)
if int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(scode))) == OP_CALLOUT {
scode += TPCRE2_SPTR8(X_pcre2_OP_lengths_8[OP_CALLOUT])
} else if int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(scode))) == OP_CALLOUT_STR {
scode += TPCRE2_SPTR8(uint32(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(scode + 5)))<<8 | int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(scode + 6)))))
}
switch int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(scode))) {
case OP_CREF:
fallthrough
case OP_DNCREF:
fallthrough
case OP_RREF:
fallthrough
case OP_DNRREF:
fallthrough
case OP_FAIL:
fallthrough
case OP_FALSE:
fallthrough
case OP_TRUE:
return DFALSE
fallthrough
default: // Assertion
if !(is_startline(tls, scode, bracket_map, cb, atomcount, DTRUE) != 0) {
return DFALSE
}
for __ccgo1 := true; __ccgo1; __ccgo1 = int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(scode))) == OP_ALT {
scode += TPCRE2_SPTR8(uint32(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(scode + 1)))<<8 | int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(scode + 2)))))
}
scode += TPCRE2_SPTR8(1 + DLINK_SIZE)
break
}
scode = first_significant_code(tls, scode, DFALSE)
op = int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(scode)))
}
// Non-capturing brackets
if op == OP_BRA || op == OP_BRAPOS || op == OP_SBRA || op == OP_SBRAPOS {
if !(is_startline(tls, scode, bracket_map, cb, atomcount, inassert) != 0) {
return DFALSE
}
} else if op == OP_CBRA || op == OP_CBRAPOS || op == OP_SCBRA || op == OP_SCBRAPOS {
var n int32 = int32(uint32(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(scode + 3)))<<8 | int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(scode + 4)))))
var new_map int32 = int32(bracket_map | func() uint32 {
if n < 32 {
return uint32(1) << n
}
return uint32(1)
}())
if !(is_startline(tls, scode, uint32(new_map), cb, atomcount, inassert) != 0) {
return DFALSE
}
} else if op == OP_ASSERT || op == OP_ASSERT_NA {
if !(is_startline(tls, scode, bracket_map, cb, atomcount, DTRUE) != 0) {
return DFALSE
}
} else if op == OP_ONCE {
if !(is_startline(tls, scode, bracket_map, cb, atomcount+1, inassert) != 0) {
return DFALSE
}
} else if op == OP_TYPESTAR || op == OP_TYPEMINSTAR || op == OP_TYPEPOSSTAR {
if int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(scode + 1))) != OP_ANY || bracket_map&(*Tcompile_block_8)(unsafe.Pointer(cb)).Fbackref_map != uint32(0) || atomcount > 0 || (*Tcompile_block_8)(unsafe.Pointer(cb)).Fhad_pruneorskip != 0 || inassert != 0 || (*Tcompile_block_8)(unsafe.Pointer(cb)).Fexternal_options&DPCRE2_NO_DOTSTAR_ANCHOR != Tuint32_t(0) {
return DFALSE
}
} else if op != OP_CIRC && op != OP_CIRCM {
return DFALSE
}
// Move on to the next alternative
code += TPCRE2_SPTR8(uint32(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + 1)))<<8 | int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + 2)))))
} // Loop for each alternative
return DTRUE
}
// ************************************************
//
// Scan compiled regex for recursion reference *
//
// This function scans through a compiled pattern until it finds an instance of
// OP_RECURSE.
//
// Arguments:
// code points to start of expression
// utf TRUE in UTF mode
//
// Returns: pointer to the opcode for OP_RECURSE, or NULL if not found
func find_recurse(tls *libc.TLS, code TPCRE2_SPTR8, utf TBOOL) TPCRE2_SPTR8 { /* pcre2_compile.c:8621:1: */
for {
var c TPCRE2_UCHAR8 = *(*TPCRE2_UCHAR8)(unsafe.Pointer(code))
if int32(c) == OP_END {
return uintptr(0)
}
if int32(c) == OP_RECURSE {
return code
}
// XCLASS is used for classes that cannot be represented just by a bit map.
// This includes negated single high-valued characters. CALLOUT_STR is used for
// callouts with string arguments. In both cases the length in the table is
// zero; the actual length is stored in the compiled code.
if int32(c) == OP_XCLASS {
code += TPCRE2_SPTR8(uint32(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + 1)))<<8 | int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + 2)))))
} else if int32(c) == OP_CALLOUT_STR {
code += TPCRE2_SPTR8(uint32(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + 5)))<<8 | int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + 6)))))
} else {
switch int32(c) {
case OP_TYPESTAR:
fallthrough
case OP_TYPEMINSTAR:
fallthrough
case OP_TYPEPLUS:
fallthrough
case OP_TYPEMINPLUS:
fallthrough
case OP_TYPEQUERY:
fallthrough
case OP_TYPEMINQUERY:
fallthrough
case OP_TYPEPOSSTAR:
fallthrough
case OP_TYPEPOSPLUS:
fallthrough
case OP_TYPEPOSQUERY:
if int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + 1))) == OP_PROP || int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + 1))) == OP_NOTPROP {
code += uintptr(2)
}
break
fallthrough
case OP_TYPEPOSUPTO:
fallthrough
case OP_TYPEUPTO:
fallthrough
case OP_TYPEMINUPTO:
fallthrough
case OP_TYPEEXACT:
if int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + 3))) == OP_PROP || int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + 3))) == OP_NOTPROP {
code += uintptr(2)
}
break
fallthrough
case OP_MARK:
fallthrough
case OP_COMMIT_ARG:
fallthrough
case OP_PRUNE_ARG:
fallthrough
case OP_SKIP_ARG:
fallthrough
case OP_THEN_ARG:
code += TPCRE2_SPTR8(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + 1)))
break
}
// Add in the fixed length from the table
code += TPCRE2_SPTR8(X_pcre2_OP_lengths_8[c])
// In UTF-8 and UTF-16 modes, opcodes that are followed by a character may
// be followed by a multi-unit character. The length in the table is a
// minimum, so we have to arrange to skip the extra units.
if utf != 0 {
switch int32(c) {
case OP_CHAR:
fallthrough
case OP_CHARI:
fallthrough
case OP_NOT:
fallthrough
case OP_NOTI:
fallthrough
case OP_EXACT:
fallthrough
case OP_EXACTI:
fallthrough
case OP_NOTEXACT:
fallthrough
case OP_NOTEXACTI:
fallthrough
case OP_UPTO:
fallthrough
case OP_UPTOI:
fallthrough
case OP_NOTUPTO:
fallthrough
case OP_NOTUPTOI:
fallthrough
case OP_MINUPTO:
fallthrough
case OP_MINUPTOI:
fallthrough
case OP_NOTMINUPTO:
fallthrough
case OP_NOTMINUPTOI:
fallthrough
case OP_POSUPTO:
fallthrough
case OP_POSUPTOI:
fallthrough
case OP_NOTPOSUPTO:
fallthrough
case OP_NOTPOSUPTOI:
fallthrough
case OP_STAR:
fallthrough
case OP_STARI:
fallthrough
case OP_NOTSTAR:
fallthrough
case OP_NOTSTARI:
fallthrough
case OP_MINSTAR:
fallthrough
case OP_MINSTARI:
fallthrough
case OP_NOTMINSTAR:
fallthrough
case OP_NOTMINSTARI:
fallthrough
case OP_POSSTAR:
fallthrough
case OP_POSSTARI:
fallthrough
case OP_NOTPOSSTAR:
fallthrough
case OP_NOTPOSSTARI:
fallthrough
case OP_PLUS:
fallthrough
case OP_PLUSI:
fallthrough
case OP_NOTPLUS:
fallthrough
case OP_NOTPLUSI:
fallthrough
case OP_MINPLUS:
fallthrough
case OP_MINPLUSI:
fallthrough
case OP_NOTMINPLUS:
fallthrough
case OP_NOTMINPLUSI:
fallthrough
case OP_POSPLUS:
fallthrough
case OP_POSPLUSI:
fallthrough
case OP_NOTPOSPLUS:
fallthrough
case OP_NOTPOSPLUSI:
fallthrough
case OP_QUERY:
fallthrough
case OP_QUERYI:
fallthrough
case OP_NOTQUERY:
fallthrough
case OP_NOTQUERYI:
fallthrough
case OP_MINQUERY:
fallthrough
case OP_MINQUERYI:
fallthrough
case OP_NOTMINQUERY:
fallthrough
case OP_NOTMINQUERYI:
fallthrough
case OP_POSQUERY:
fallthrough
case OP_POSQUERYI:
fallthrough
case OP_NOTPOSQUERY:
fallthrough
case OP_NOTPOSQUERYI:
if int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + libc.UintptrFromInt32(-1)))) >= 0xc0 {
code += TPCRE2_SPTR8(X_pcre2_utf8_table4[uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + libc.UintptrFromInt32(-1))))&0x3f])
}
break
}
}
}
}
return TPCRE2_SPTR8(0)
}
// ************************************************
//
// Check for asserted fixed first code unit *
//
// During compilation, the "first code unit" settings from forward assertions
// are discarded, because they can cause conflicts with actual literals that
// follow. However, if we end up without a first code unit setting for an
// unanchored pattern, it is worth scanning the regex to see if there is an
// initial asserted first code unit. If all branches start with the same asserted
// code unit, or with a non-conditional bracket all of whose alternatives start
// with the same asserted code unit (recurse ad lib), then we return that code
// unit, with the flags set to zero or REQ_CASELESS; otherwise return zero with
// REQ_NONE in the flags.
//
// Arguments:
// code points to start of compiled pattern
// flags points to the first code unit flags
// inassert non-zero if in an assertion
//
// Returns: the fixed first code unit, or 0 with REQ_NONE in flags
func find_firstassertedcu(tls *libc.TLS, code TPCRE2_SPTR8, flags uintptr, inassert Tuint32_t) Tuint32_t { /* pcre2_compile.c:8777:1: */
bp := tls.Alloc(4)
defer tls.Free(4)
var c Tuint32_t = Tuint32_t(0)
var cflags Tuint32_t = DREQ_NONE
*(*Tuint32_t)(unsafe.Pointer(flags)) = DREQ_NONE
for __ccgo := true; __ccgo; __ccgo = int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code))) == OP_ALT {
var d Tuint32_t
// var dflags Tuint32_t at bp, 4
var xl int32
if int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code))) == OP_CBRA || int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code))) == OP_SCBRA || int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code))) == OP_CBRAPOS || int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code))) == OP_SCBRAPOS {
xl = DIMM2_SIZE
} else {
xl = 0
}
var scode TPCRE2_SPTR8 = first_significant_code(tls, code+uintptr(1)+uintptr(DLINK_SIZE)+uintptr(xl), DTRUE)
var op TPCRE2_UCHAR8 = *(*TPCRE2_UCHAR8)(unsafe.Pointer(scode))
switch int32(op) {
default:
return Tuint32_t(0)
case OP_BRA:
fallthrough
case OP_BRAPOS:
fallthrough
case OP_CBRA:
fallthrough
case OP_SCBRA:
fallthrough
case OP_CBRAPOS:
fallthrough
case OP_SCBRAPOS:
fallthrough
case OP_ASSERT:
fallthrough
case OP_ASSERT_NA:
fallthrough
case OP_ONCE:
fallthrough
case OP_SCRIPT_RUN:
d = find_firstassertedcu(tls, scode, bp, inassert+func() uint32 {
if int32(op) == OP_ASSERT || int32(op) == OP_ASSERT_NA {
return uint32(1)
}
return uint32(0)
}())
if *(*Tuint32_t)(unsafe.Pointer(bp)) >= DREQ_NONE {
return Tuint32_t(0)
}
if cflags >= DREQ_NONE {
c = d
cflags = *(*Tuint32_t)(unsafe.Pointer(bp /* dflags */))
} else if c != d || cflags != *(*Tuint32_t)(unsafe.Pointer(bp)) {
return Tuint32_t(0)
}
break
case OP_EXACT:
scode += TPCRE2_SPTR8(DIMM2_SIZE)
fallthrough
// Fall through
case OP_CHAR:
fallthrough
case OP_PLUS:
fallthrough
case OP_MINPLUS:
fallthrough
case OP_POSPLUS:
if inassert == Tuint32_t(0) {
return Tuint32_t(0)
}
if cflags >= DREQ_NONE {
c = Tuint32_t(*(*TPCRE2_UCHAR8)(unsafe.Pointer(scode + 1)))
cflags = Tuint32_t(0)
} else if c != Tuint32_t(*(*TPCRE2_UCHAR8)(unsafe.Pointer(scode + 1))) {
return Tuint32_t(0)
}
break
case OP_EXACTI:
scode += TPCRE2_SPTR8(DIMM2_SIZE)
fallthrough
// Fall through
case OP_CHARI:
fallthrough
case OP_PLUSI:
fallthrough
case OP_MINPLUSI:
fallthrough
case OP_POSPLUSI:
if inassert == Tuint32_t(0) {
return Tuint32_t(0)
}
// If the character is more than one code unit long, we cannot set its
// first code unit when matching caselessly. Later scanning may pick up
// multiple code units.
if int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(scode + 1))) >= 0x80 {
return Tuint32_t(0)
}
if cflags >= DREQ_NONE {
c = Tuint32_t(*(*TPCRE2_UCHAR8)(unsafe.Pointer(scode + 1)))
cflags = DREQ_CASELESS
} else if c != Tuint32_t(*(*TPCRE2_UCHAR8)(unsafe.Pointer(scode + 1))) {
return Tuint32_t(0)
}
break
}
code += TPCRE2_SPTR8(uint32(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + 1)))<<8 | int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + 2)))))
}
*(*Tuint32_t)(unsafe.Pointer(flags)) = cflags
return c
}
// ************************************************
//
// Add an entry to the name/number table *
//
// This function is called between compiling passes to add an entry to the
// name/number table, maintaining alphabetical order. Checking for permitted
// and forbidden duplicates has already been done.
//
// Arguments:
// cb the compile data block
// name the name to add
// length the length of the name
// groupno the group number
// tablecount the count of names in the table so far
//
// Returns: nothing
func add_name_to_table(tls *libc.TLS, cb uintptr, name TPCRE2_SPTR8, length int32, groupno uint32, tablecount Tuint32_t) { /* pcre2_compile.c:8882:1: */
var i Tuint32_t
var slot uintptr = (*Tcompile_block_8)(unsafe.Pointer(cb)).Fname_table
for i = Tuint32_t(0); i < tablecount; i++ {
var crc int32 = libc.Xmemcmp(tls, name, slot+uintptr(DIMM2_SIZE), uint64(length*(DPCRE2_CODE_UNIT_WIDTH/8)))
if crc == 0 && int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(slot + uintptr(DIMM2_SIZE+length)))) != 0 {
crc = -1
} // Current name is a substring
// Make space in the table and break the loop for an earlier name. For a
// duplicate or later name, carry on. We do this for duplicates so that in the
// simple case (when ?(| is not used) they are in order of their numbers. In all
// cases they are in the order in which they appear in the pattern.
if crc < 0 {
libc.Xmemmove(tls, slot+uintptr((*Tcompile_block_8)(unsafe.Pointer(cb)).Fname_entry_size), slot,
uint64((tablecount-i)*Tuint32_t((*Tcompile_block_8)(unsafe.Pointer(cb)).Fname_entry_size)*Tuint32_t(DPCRE2_CODE_UNIT_WIDTH/8)))
break
}
// Continue the loop for a later or duplicate name
slot += uintptr((*Tcompile_block_8)(unsafe.Pointer(cb)).Fname_entry_size)
}
*(*TPCRE2_UCHAR8)(unsafe.Pointer(slot)) = TPCRE2_UCHAR8(groupno >> 8)
*(*TPCRE2_UCHAR8)(unsafe.Pointer(slot + 1)) = TPCRE2_UCHAR8(groupno & uint32(255))
libc.Xmemcpy(tls, slot+uintptr(DIMM2_SIZE), name, uint64(length*(DPCRE2_CODE_UNIT_WIDTH/8)))
// Add a terminating zero and fill the rest of the slot with zeroes so that
// the memory is all initialized. Otherwise valgrind moans about uninitialized
// memory when saving serialized compiled patterns.
libc.Xmemset(tls, slot+uintptr(DIMM2_SIZE)+uintptr(length), 0,
uint64((int32((*Tcompile_block_8)(unsafe.Pointer(cb)).Fname_entry_size)-length-DIMM2_SIZE)*(DPCRE2_CODE_UNIT_WIDTH/8)))
}
// ************************************************
//
// Skip in parsed pattern *
//
// This function is called to skip parts of the parsed pattern when finding the
// length of a lookbehind branch. It is called after (*ACCEPT) and (*FAIL) to find
// the end of the branch, it is called to skip over an internal lookaround or
// (DEFINE) group, and it is also called to skip to the end of a class, during
// which it will never encounter nested groups (but there's no need to have
// special code for that).
//
// When called to find the end of a branch or group, pptr must point to the first
// meta code inside the branch, not the branch-starting code. In other cases it
// can point to the item that causes the function to be called.
//
// Arguments:
// pptr current pointer to skip from
// skiptype PSKIP_CLASS when skipping to end of class
// PSKIP_ALT when META_ALT ends the skip
// PSKIP_KET when only META_KET ends the skip
//
// Returns: new value of pptr
// NULL if META_END is reached - should never occur
// or for an unknown meta value - likewise
func parsed_skip(tls *libc.TLS, pptr uintptr, skiptype Tuint32_t) uintptr { /* pcre2_compile.c:8950:17: */
var nestlevel Tuint32_t = Tuint32_t(0)
for ; ; pptr += 4 {
var meta Tuint32_t = *(*Tuint32_t)(unsafe.Pointer(pptr)) & 0xffff0000
switch meta {
default: // Just skip over most items
if meta < DMETA_END {
continue
} // Literal
break
// This should never occur.
case DMETA_END:
return uintptr(0)
// The data for these items is variable in length.
case DMETA_BACKREF: // Offset is present only if group >= 10
if *(*Tuint32_t)(unsafe.Pointer(pptr))&0x0000ffff >= Tuint32_t(10) {
pptr += 4 * uintptr(DSIZEOFFSET)
}
break
case DMETA_ESCAPE: // A few escapes are followed by data items.
switch *(*Tuint32_t)(unsafe.Pointer(pptr)) & 0x0000ffff {
case ESC_P:
fallthrough
case ESC_p:
pptr += 4 * uintptr(1)
break
case ESC_g:
fallthrough
case ESC_k:
pptr += 4 * uintptr(1+DSIZEOFFSET)
break
}
break
case DMETA_MARK:
fallthrough // Add the length of the name.
case DMETA_COMMIT_ARG:
fallthrough
case DMETA_PRUNE_ARG:
fallthrough
case DMETA_SKIP_ARG:
fallthrough
case DMETA_THEN_ARG:
pptr += 4 * uintptr(*(*Tuint32_t)(unsafe.Pointer(pptr + 1*4)))
break
// These are the "active" items in this loop.
case DMETA_CLASS_END:
if skiptype == PSKIP_CLASS {
return pptr
}
break
case DMETA_ATOMIC:
fallthrough
case DMETA_CAPTURE:
fallthrough
case DMETA_COND_ASSERT:
fallthrough
case DMETA_COND_DEFINE:
fallthrough
case DMETA_COND_NAME:
fallthrough
case DMETA_COND_NUMBER:
fallthrough
case DMETA_COND_RNAME:
fallthrough
case DMETA_COND_RNUMBER:
fallthrough
case DMETA_COND_VERSION:
fallthrough
case DMETA_LOOKAHEAD:
fallthrough
case DMETA_LOOKAHEADNOT:
fallthrough
case DMETA_LOOKAHEAD_NA:
fallthrough
case DMETA_LOOKBEHIND:
fallthrough
case DMETA_LOOKBEHINDNOT:
fallthrough
case DMETA_LOOKBEHIND_NA:
fallthrough
case DMETA_NOCAPTURE:
fallthrough
case DMETA_SCRIPT_RUN:
nestlevel++
break
case DMETA_ALT:
if nestlevel == Tuint32_t(0) && skiptype == PSKIP_ALT {
return pptr
}
break
case DMETA_KET:
if nestlevel == Tuint32_t(0) {
return pptr
}
nestlevel--
break
}
// The extra data item length for each meta is in a table.
meta = meta >> 16 & Tuint32_t(0x7fff)
if uint64(meta) >= uint64(unsafe.Sizeof(meta_extra_lengths)) {
return uintptr(0)
}
pptr += 4 * uintptr(meta_extra_lengths[meta])
}
// Control never reaches here
return pptr
}
// ************************************************
//
// Find length of a parsed group *
//
// This is called for nested groups within a branch of a lookbehind whose
// length is being computed. If all the branches in the nested group have the same
// length, that is OK. On entry, the pointer must be at the first element after
// the group initializing code. On exit it points to OP_KET. Caching is used to
// improve processing speed when the same capturing group occurs many times.
//
// Arguments:
// pptrptr pointer to pointer in the parsed pattern
// isinline FALSE if a reference or recursion; TRUE for inline group
// errcodeptr pointer to the errorcode
// lcptr pointer to the loop counter
// group number of captured group or -1 for a non-capturing group
// recurses chain of recurse_check to catch mutual recursion
// cb pointer to the compile data
//
// Returns: the group length or a negative number
func get_grouplength(tls *libc.TLS, pptrptr uintptr, isinline TBOOL, errcodeptr uintptr, lcptr uintptr, group int32, recurses uintptr, cb uintptr) int32 { /* pcre2_compile.c:9070:1: */
var branchlength int32
var grouplength int32
var groupinfo Tuint32_t
grouplength = -1
// The cache can be used only if there is no possibility of there being two
// groups with the same number. We do not need to set the end pointer for a group
// that is being processed as a back reference or recursion, but we must do so for
// an inline group.
if !(group > 0 && (*Tcompile_block_8)(unsafe.Pointer(cb)).Fexternal_flags&Tuint32_t(DPCRE2_DUPCAPUSED) == Tuint32_t(0)) {
goto __1
}
groupinfo = *(*Tuint32_t)(unsafe.Pointer((*Tcompile_block_8)(unsafe.Pointer(cb)).Fgroupinfo + uintptr(group)*4))
if !(groupinfo&DGI_NOT_FIXED_LENGTH != Tuint32_t(0)) {
goto __2
}
return -1
__2:
;
if !(groupinfo&DGI_SET_FIXED_LENGTH != Tuint32_t(0)) {
goto __3
}
if !(isinline != 0) {
goto __4
}
*(*uintptr)(unsafe.Pointer(pptrptr)) = parsed_skip(tls, *(*uintptr)(unsafe.Pointer(pptrptr)), PSKIP_KET)
__4:
;
return int32(groupinfo & DGI_FIXED_LENGTH_MASK)
__3:
;
__1:
;
// Scan the group. In this case we find the end pointer of necessity.
__5:
branchlength = get_branchlength(tls, pptrptr, errcodeptr, lcptr, recurses, cb)
if !(branchlength < 0) {
goto __8
}
goto ISNOTFIXED
__8:
;
if !(grouplength == -1) {
goto __9
}
grouplength = branchlength
goto __10
__9:
if !(grouplength != branchlength) {
goto __11
}
goto ISNOTFIXED
__11:
;
__10:
;
if !(*(*Tuint32_t)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(pptrptr)))) == DMETA_KET) {
goto __12
}
goto __7
__12:
;
*(*uintptr)(unsafe.Pointer(pptrptr)) += uintptr(1) * 4 // Skip META_ALT
goto __6
__6:
goto __5
goto __7
__7:
;
if !(group > 0) {
goto __13
}
*(*Tuint32_t)(unsafe.Pointer((*Tcompile_block_8)(unsafe.Pointer(cb)).Fgroupinfo + uintptr(group)*4)) |= DGI_SET_FIXED_LENGTH | uint32(grouplength)
__13:
;
return grouplength
ISNOTFIXED:
if !(group > 0) {
goto __14
}
*(*Tuint32_t)(unsafe.Pointer((*Tcompile_block_8)(unsafe.Pointer(cb)).Fgroupinfo + uintptr(group)*4)) |= DGI_NOT_FIXED_LENGTH
__14:
;
return -1
}
// ************************************************
//
// Find length of a parsed branch *
//
// Return a fixed length for a branch in a lookbehind, giving an error if the
// length is not fixed. On entry, *pptrptr points to the first element inside the
// branch. On exit it is set to point to the ALT or KET.
//
// Arguments:
// pptrptr pointer to pointer in the parsed pattern
// errcodeptr pointer to error code
// lcptr pointer to loop counter
// recurses chain of recurse_check to catch mutual recursion
// cb pointer to compile block
//
// Returns: the length, or a negative value on error
func get_branchlength(tls *libc.TLS, pptrptr uintptr, errcodeptr uintptr, lcptr uintptr, recurses uintptr, cb uintptr) int32 { /* pcre2_compile.c:9134:1: */
bp := tls.Alloc(32)
defer tls.Free(32)
var branchlength int32
var grouplength int32
var lastitemlength Tuint32_t
// var pptr uintptr at bp, 8
var offset Tsize_t
// var this_recurse Tparsed_recurse_check at bp+16, 16
var i int32
var name TPCRE2_SPTR8
var is_dupname TBOOL
var ng uintptr
var meta_code Tuint32_t
var length Tuint32_t
var r uintptr
// var gptr uintptr at bp+8, 8
var gptrend uintptr
var escape Tuint32_t
var group Tuint32_t
var itemlength Tuint32_t
branchlength = 0
lastitemlength = Tuint32_t(0)
*(*uintptr)(unsafe.Pointer(bp /* pptr */)) = *(*uintptr)(unsafe.Pointer(pptrptr))
// A large and/or complex regex can take too long to process. This can happen
// more often when (?| groups are present in the pattern because their length
// cannot be cached.
if !(libc.PostIncInt32(&*(*int32)(unsafe.Pointer(lcptr)), 1) > 2000) {
goto __1
}
*(*int32)(unsafe.Pointer(errcodeptr)) = ERR35 // Lookbehind is too complicated
return -1
__1:
;
// Scan the branch, accumulating the length.
__2:
;
group = Tuint32_t(0)
itemlength = Tuint32_t(0)
if !(*(*Tuint32_t)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp)))) < DMETA_END) {
goto __5
}
itemlength = Tuint32_t(1)
goto __6
__5:
switch *(*Tuint32_t)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp)))) & 0xffff0000 {
case DMETA_KET:
goto __8
case DMETA_ALT:
goto __9
// (*ACCEPT) and (*FAIL) terminate the branch, but we must skip to the
// actual termination.
case DMETA_ACCEPT:
goto __10
case DMETA_FAIL:
goto __11
case DMETA_MARK:
goto __12
case DMETA_COMMIT_ARG:
goto __13
case DMETA_PRUNE_ARG:
goto __14
case DMETA_SKIP_ARG:
goto __15
case DMETA_THEN_ARG:
goto __16
case DMETA_CIRCUMFLEX:
goto __17
case DMETA_COMMIT:
goto __18
case DMETA_DOLLAR:
goto __19
case DMETA_PRUNE:
goto __20
case DMETA_SKIP:
goto __21
case DMETA_THEN:
goto __22
case DMETA_OPTIONS:
goto __23
case DMETA_BIGVALUE:
goto __24
case DMETA_CLASS:
goto __25
case DMETA_CLASS_NOT:
goto __26
case DMETA_CLASS_EMPTY_NOT:
goto __27
case DMETA_DOT:
goto __28
case DMETA_CALLOUT_NUMBER:
goto __29
case DMETA_CALLOUT_STRING:
goto __30
// Only some escapes consume a character. Of those, \R and \X are never
// allowed because they might match more than character. \C is allowed only in
// 32-bit and non-UTF 8/16-bit modes.
case DMETA_ESCAPE:
goto __31
// Lookaheads do not contribute to the length of this branch, but they may
// contain lookbehinds within them whose lengths need to be set.
case DMETA_LOOKAHEAD:
goto __32
case DMETA_LOOKAHEADNOT:
goto __33
case DMETA_LOOKAHEAD_NA:
goto __34
// A nested lookbehind does not contribute any length to this lookbehind,
// but must itself be checked and have its lengths set.
case DMETA_LOOKBEHIND:
goto __35
case DMETA_LOOKBEHINDNOT:
goto __36
case DMETA_LOOKBEHIND_NA:
goto __37
// Back references and recursions are handled by very similar code. At this
// stage, the names generated in the parsing pass are available, but the main
// name table has not yet been created. So for the named varieties, scan the
// list of names in order to get the number of the first one in the pattern,
// and whether or not this name is duplicated.
case DMETA_BACKREF_BYNAME:
goto __38
// Fall through
case DMETA_RECURSE_BYNAME:
goto __39 // Duplicate name or number
// The offset values for back references < 10 are in a separate vector
// because otherwise they would use more than two parsed pattern elements on
// 64-bit systems.
case DMETA_BACKREF:
goto __40
// Fall through
// For groups >= 10 - picking up group twice does no harm.
// A true recursion implies not fixed length, but a subroutine call may
// be OK. Back reference "recursions" are also failed.
case DMETA_RECURSE:
goto __41
// A (DEFINE) group is never obeyed inline and so it does not contribute to
// the length of this branch. Skip from the following item to the next
// unpaired ket.
case DMETA_COND_DEFINE:
goto __42
// Check other nested groups - advance past the initial data for each type
// and then seek a fixed length with get_grouplength().
case DMETA_COND_NAME:
goto __43
case DMETA_COND_NUMBER:
goto __44
case DMETA_COND_RNAME:
goto __45
case DMETA_COND_RNUMBER:
goto __46
case DMETA_COND_ASSERT:
goto __47
case DMETA_COND_VERSION:
goto __48
case DMETA_CAPTURE:
goto __49
// Fall through
case DMETA_ATOMIC:
goto __50
case DMETA_NOCAPTURE:
goto __51
case DMETA_SCRIPT_RUN:
goto __52
// Exact repetition is OK; variable repetition is not. A repetition of zero
// must subtract the length that has already been added.
case DMETA_MINMAX:
goto __53
case DMETA_MINMAX_PLUS:
goto __54
case DMETA_MINMAX_QUERY:
goto __55
// Fall through
// Any other item means this branch does not have a fixed length.
default:
goto __56
}
goto __7
__8:
__9:
goto EXIT
// (*ACCEPT) and (*FAIL) terminate the branch, but we must skip to the
// actual termination.
__10:
__11:
*(*uintptr)(unsafe.Pointer(bp /* pptr */)) = parsed_skip(tls, *(*uintptr)(unsafe.Pointer(bp /* pptr */)), PSKIP_ALT)
if !(*(*uintptr)(unsafe.Pointer(bp)) == uintptr(0)) {
goto __57
}
goto PARSED_SKIP_FAILED
__57:
;
goto EXIT
__12:
__13:
__14:
__15:
__16:
*(*uintptr)(unsafe.Pointer(bp /* pptr */)) += 4 * uintptr(*(*Tuint32_t)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp)) + 1*4))+Tuint32_t(1))
goto __7
__17:
__18:
__19:
__20:
__21:
__22:
goto __7
__23:
*(*uintptr)(unsafe.Pointer(bp /* pptr */)) += 4 * uintptr(1)
goto __7
__24:
itemlength = Tuint32_t(1)
*(*uintptr)(unsafe.Pointer(bp /* pptr */)) += 4 * uintptr(1)
goto __7
__25:
__26:
itemlength = Tuint32_t(1)
*(*uintptr)(unsafe.Pointer(bp /* pptr */)) = parsed_skip(tls, *(*uintptr)(unsafe.Pointer(bp /* pptr */)), PSKIP_CLASS)
if !(*(*uintptr)(unsafe.Pointer(bp)) == uintptr(0)) {
goto __58
}
goto PARSED_SKIP_FAILED
__58:
;
goto __7
__27:
__28:
itemlength = Tuint32_t(1)
goto __7
__29:
*(*uintptr)(unsafe.Pointer(bp /* pptr */)) += 4 * uintptr(3)
goto __7
__30:
*(*uintptr)(unsafe.Pointer(bp /* pptr */)) += 4 * uintptr(3+DSIZEOFFSET)
goto __7
// Only some escapes consume a character. Of those, \R and \X are never
// allowed because they might match more than character. \C is allowed only in
// 32-bit and non-UTF 8/16-bit modes.
__31:
escape = *(*Tuint32_t)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp)))) & 0x0000ffff
if !(escape == ESC_R || escape == ESC_X) {
goto __59
}
return -1
__59:
;
if !(escape > ESC_b && escape < ESC_Z) {
goto __60
}
if !((*Tcompile_block_8)(unsafe.Pointer(cb)).Fexternal_options&DPCRE2_UTF != Tuint32_t(0) && escape == ESC_C) {
goto __61
}
*(*int32)(unsafe.Pointer(errcodeptr)) = ERR36
return -1
__61:
;
itemlength = Tuint32_t(1)
if !(escape == ESC_p || escape == ESC_P) {
goto __62
}
*(*uintptr)(unsafe.Pointer(bp /* pptr */)) += 4
__62:
; // Skip prop data
__60:
;
goto __7
// Lookaheads do not contribute to the length of this branch, but they may
// contain lookbehinds within them whose lengths need to be set.
__32:
__33:
__34:
*(*int32)(unsafe.Pointer(errcodeptr)) = check_lookbehinds(tls, *(*uintptr)(unsafe.Pointer(bp))+uintptr(1)*4, bp, recurses, cb, lcptr)
if !(*(*int32)(unsafe.Pointer(errcodeptr)) != 0) {
goto __63
}
return -1
__63:
;
// Ignore any qualifiers that follow a lookahead assertion.
switch *(*Tuint32_t)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp /* pptr */)) + 1*4)) {
case DMETA_ASTERISK:
goto __65
case DMETA_ASTERISK_PLUS:
goto __66
case DMETA_ASTERISK_QUERY:
goto __67
case DMETA_PLUS:
goto __68
case DMETA_PLUS_PLUS:
goto __69
case DMETA_PLUS_QUERY:
goto __70
case DMETA_QUERY:
goto __71
case DMETA_QUERY_PLUS:
goto __72
case DMETA_QUERY_QUERY:
goto __73
case DMETA_MINMAX:
goto __74
case DMETA_MINMAX_PLUS:
goto __75
case DMETA_MINMAX_QUERY:
goto __76
default:
goto __77
}
goto __64
__65:
__66:
__67:
__68:
__69:
__70:
__71:
__72:
__73:
*(*uintptr)(unsafe.Pointer(bp /* pptr */)) += 4
goto __64
__74:
__75:
__76:
*(*uintptr)(unsafe.Pointer(bp /* pptr */)) += 4 * uintptr(3)
goto __64
__77:
goto __64
__64:
;
goto __7
// A nested lookbehind does not contribute any length to this lookbehind,
// but must itself be checked and have its lengths set.
__35:
__36:
__37:
if !!(set_lookbehind_lengths(tls, bp, errcodeptr, lcptr, recurses, cb) != 0) {
goto __78
}
return -1
__78:
;
goto __7
// Back references and recursions are handled by very similar code. At this
// stage, the names generated in the parsing pass are available, but the main
// name table has not yet been created. So for the named varieties, scan the
// list of names in order to get the number of the first one in the pattern,
// and whether or not this name is duplicated.
__38:
if !((*Tcompile_block_8)(unsafe.Pointer(cb)).Fexternal_options&DPCRE2_MATCH_UNSET_BACKREF != Tuint32_t(0)) {
goto __79
}
goto ISNOTFIXED
__79:
;
// Fall through
__39:
is_dupname = DFALSE
ng = (*Tcompile_block_8)(unsafe.Pointer(cb)).Fnamed_groups
meta_code = *(*Tuint32_t)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp)))) & 0xffff0000
length = *(*Tuint32_t)(unsafe.Pointer(libc.PreIncUintptr(&*(*uintptr)(unsafe.Pointer(bp)), 4)))
offset = Tsize_t(*(*Tuint32_t)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp)) + 1*4)))<<32 | Tsize_t(*(*Tuint32_t)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp)) + 2*4)))
*(*uintptr)(unsafe.Pointer(bp /* pptr */)) += 4 * uintptr(2)
name = (*Tcompile_block_8)(unsafe.Pointer(cb)).Fstart_pattern + uintptr(offset)
i = 0
__80:
if !(i < int32((*Tcompile_block_8)(unsafe.Pointer(cb)).Fnames_found)) {
goto __82
}
if !(length == Tuint32_t((*Tnamed_group_8)(unsafe.Pointer(ng)).Flength) && X_pcre2_strncmp_8(tls, name, (*Tnamed_group_8)(unsafe.Pointer(ng)).Fname, uint64(length)) == 0) {
goto __83
}
group = (*Tnamed_group_8)(unsafe.Pointer(ng)).Fnumber
is_dupname = TBOOL((*Tnamed_group_8)(unsafe.Pointer(ng)).Fisdup)
goto __82
__83:
;
goto __81
__81:
i++
ng += 16
goto __80
goto __82
__82:
;
if !(group == Tuint32_t(0)) {
goto __84
}
*(*int32)(unsafe.Pointer(errcodeptr)) = ERR15 // Non-existent subpattern
(*Tcompile_block_8)(unsafe.Pointer(cb)).Ferroroffset = offset
return -1
__84:
;
// A numerical back reference can be fixed length if duplicate capturing
// groups are not being used. A non-duplicate named back reference can also
// be handled.
if !(meta_code == DMETA_RECURSE_BYNAME || !(is_dupname != 0) && (*Tcompile_block_8)(unsafe.Pointer(cb)).Fexternal_flags&Tuint32_t(DPCRE2_DUPCAPUSED) == Tuint32_t(0)) {
goto __85
}
goto RECURSE_OR_BACKREF_LENGTH
__85:
; // Handle as a numbered version.
goto ISNOTFIXED // Duplicate name or number
// The offset values for back references < 10 are in a separate vector
// because otherwise they would use more than two parsed pattern elements on
// 64-bit systems.
__40:
if !((*Tcompile_block_8)(unsafe.Pointer(cb)).Fexternal_options&DPCRE2_MATCH_UNSET_BACKREF != Tuint32_t(0) || (*Tcompile_block_8)(unsafe.Pointer(cb)).Fexternal_flags&Tuint32_t(DPCRE2_DUPCAPUSED) != Tuint32_t(0)) {
goto __86
}
goto ISNOTFIXED
__86:
;
group = *(*Tuint32_t)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp)))) & 0x0000ffff
if !(group < Tuint32_t(10)) {
goto __87
}
offset = *(*Tsize_t)(unsafe.Pointer(cb + 88 + uintptr(group)*8))
goto RECURSE_OR_BACKREF_LENGTH
__87:
;
// Fall through
// For groups >= 10 - picking up group twice does no harm.
// A true recursion implies not fixed length, but a subroutine call may
// be OK. Back reference "recursions" are also failed.
__41:
group = *(*Tuint32_t)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp)))) & 0x0000ffff
offset = Tsize_t(*(*Tuint32_t)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp)) + 1*4)))<<32 | Tsize_t(*(*Tuint32_t)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp)) + 2*4)))
*(*uintptr)(unsafe.Pointer(bp /* pptr */)) += 4 * uintptr(2)
RECURSE_OR_BACKREF_LENGTH:
if !(group > (*Tcompile_block_8)(unsafe.Pointer(cb)).Fbracount) {
goto __88
}
(*Tcompile_block_8)(unsafe.Pointer(cb)).Ferroroffset = offset
*(*int32)(unsafe.Pointer(errcodeptr)) = ERR15 // Non-existent subpattern
return -1
__88:
;
if !(group == Tuint32_t(0)) {
goto __89
}
goto ISNOTFIXED
__89:
; // Local recursion
*(*uintptr)(unsafe.Pointer(bp + 8 /* gptr */)) = (*Tcompile_block_8)(unsafe.Pointer(cb)).Fparsed_pattern
__90:
if !(*(*Tuint32_t)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 8)))) != DMETA_END) {
goto __92
}
if !(*(*Tuint32_t)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 8))))&0xffff0000 == DMETA_BIGVALUE) {
goto __93
}
*(*uintptr)(unsafe.Pointer(bp + 8 /* gptr */)) += 4
goto __94
__93:
if !(*(*Tuint32_t)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 8)))) == DMETA_CAPTURE|group) {
goto __95
}
goto __92
__95:
;
__94:
;
goto __91
__91:
*(*uintptr)(unsafe.Pointer(bp + 8 /* gptr */)) += 4
goto __90
goto __92
__92:
;
// We must start the search for the end of the group at the first meta code
// inside the group. Otherwise it will be treated as an enclosed group.
gptrend = parsed_skip(tls, *(*uintptr)(unsafe.Pointer(bp + 8))+uintptr(1)*4, PSKIP_KET)
if !(gptrend == uintptr(0)) {
goto __96
}
goto PARSED_SKIP_FAILED
__96:
;
if !(*(*uintptr)(unsafe.Pointer(bp)) > *(*uintptr)(unsafe.Pointer(bp + 8)) && *(*uintptr)(unsafe.Pointer(bp)) < gptrend) {
goto __97
}
goto ISNOTFIXED
__97:
; // Local recursion
r = recurses
__98:
if !(r != uintptr(0)) {
goto __100
}
if !((*Tparsed_recurse_check)(unsafe.Pointer(r)).Fgroupptr == *(*uintptr)(unsafe.Pointer(bp + 8))) {
goto __101
}
goto __100
__101:
;
goto __99
__99:
r = (*Tparsed_recurse_check)(unsafe.Pointer(r)).Fprev
goto __98
goto __100
__100:
;
if !(r != uintptr(0)) {
goto __102
}
goto ISNOTFIXED
__102:
; // Mutual recursion
(*Tparsed_recurse_check)(unsafe.Pointer(bp + 16 /* &this_recurse */)).Fprev = recurses
(*Tparsed_recurse_check)(unsafe.Pointer(bp + 16 /* &this_recurse */)).Fgroupptr = *(*uintptr)(unsafe.Pointer(bp + 8 /* gptr */))
// We do not need to know the position of the end of the group, that is,
// gptr is not used after the call to get_grouplength(). Setting the second
// argument FALSE stops it scanning for the end when the length can be found
// in the cache.
*(*uintptr)(unsafe.Pointer(bp + 8 /* gptr */)) += 4
grouplength = get_grouplength(tls, bp+8, DFALSE, errcodeptr, lcptr, int32(group),
bp+16, cb)
if !(grouplength < 0) {
goto __103
}
if !(*(*int32)(unsafe.Pointer(errcodeptr)) == 0) {
goto __104
}
goto ISNOTFIXED
__104:
;
return -1 // Error already set
__103:
;
itemlength = Tuint32_t(grouplength)
goto __7
// A (DEFINE) group is never obeyed inline and so it does not contribute to
// the length of this branch. Skip from the following item to the next
// unpaired ket.
__42:
*(*uintptr)(unsafe.Pointer(bp /* pptr */)) = parsed_skip(tls, *(*uintptr)(unsafe.Pointer(bp))+uintptr(1)*4, PSKIP_KET)
goto __7
// Check other nested groups - advance past the initial data for each type
// and then seek a fixed length with get_grouplength().
__43:
__44:
__45:
__46:
*(*uintptr)(unsafe.Pointer(bp /* pptr */)) += 4 * uintptr(2+DSIZEOFFSET)
goto CHECK_GROUP
__47:
*(*uintptr)(unsafe.Pointer(bp /* pptr */)) += 4 * uintptr(1)
goto CHECK_GROUP
__48:
*(*uintptr)(unsafe.Pointer(bp /* pptr */)) += 4 * uintptr(4)
goto CHECK_GROUP
__49:
group = *(*Tuint32_t)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp)))) & 0x0000ffff
// Fall through
__50:
__51:
__52:
*(*uintptr)(unsafe.Pointer(bp /* pptr */)) += 4
CHECK_GROUP:
grouplength = get_grouplength(tls, bp, DTRUE, errcodeptr, lcptr, int32(group),
recurses, cb)
if !(grouplength < 0) {
goto __105
}
return -1
__105:
;
itemlength = Tuint32_t(grouplength)
goto __7
// Exact repetition is OK; variable repetition is not. A repetition of zero
// must subtract the length that has already been added.
__53:
__54:
__55:
if !(*(*Tuint32_t)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp)) + 1*4)) == *(*Tuint32_t)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp)) + 2*4))) {
goto __106
}
switch *(*Tuint32_t)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp /* pptr */)) + 1*4)) {
case Tuint32_t(0):
goto __108
case Tuint32_t(1):
goto __109
default:
goto __110
}
goto __107
__108:
branchlength = int32(Tuint32_t(branchlength) - lastitemlength)
goto __107
__109:
itemlength = Tuint32_t(0)
goto __107
__110: // Check for integer overflow
if !(lastitemlength != Tuint32_t(0) && Tuint32_t(0x7fffffff)/lastitemlength < *(*Tuint32_t)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp)) + 1*4))-Tuint32_t(1)) {
goto __111
}
*(*int32)(unsafe.Pointer(errcodeptr)) = ERR87 // Integer overflow; lookbehind too big
return -1
__111:
;
itemlength = (*(*Tuint32_t)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp)) + 1*4)) - Tuint32_t(1)) * lastitemlength
goto __107
__107:
;
*(*uintptr)(unsafe.Pointer(bp /* pptr */)) += 4 * uintptr(2)
goto __7
__106:
;
// Fall through
// Any other item means this branch does not have a fixed length.
__56:
ISNOTFIXED:
*(*int32)(unsafe.Pointer(errcodeptr)) = ERR25 // Not fixed length
return -1
__7:
;
__6:
;
// Add the item length to the branchlength, checking for integer overflow and
// for the branch length exceeding the limit.
if !(0x7fffffff-branchlength < int32(itemlength) || libc.AssignAddInt32(&branchlength, int32(itemlength)) > 65535) {
goto __112
}
*(*int32)(unsafe.Pointer(errcodeptr)) = ERR87
return -1
__112:
;
// Save this item length for use if the next item is a quantifier.
lastitemlength = itemlength
goto __3
__3:
*(*uintptr)(unsafe.Pointer(bp /* pptr */)) += 4
goto __2
goto __4
__4:
;
EXIT:
*(*uintptr)(unsafe.Pointer(pptrptr)) = *(*uintptr)(unsafe.Pointer(bp /* pptr */))
return branchlength
PARSED_SKIP_FAILED:
*(*int32)(unsafe.Pointer(errcodeptr)) = ERR90
return -1
}
// ************************************************
//
// Set lengths in a lookbehind *
//
// This function is called for each lookbehind, to set the lengths in its
// branches. An error occurs if any branch does not have a fixed length that is
// less than the maximum (65535). On exit, the pointer must be left on the final
// ket.
//
// The function also maintains the max_lookbehind value. Any lookbehind branch
// that contains a nested lookbehind may actually look further back than the
// length of the branch. The additional amount is passed back from
// get_branchlength() as an "extra" value.
//
// Arguments:
// pptrptr pointer to pointer in the parsed pattern
// errcodeptr pointer to error code
// lcptr pointer to loop counter
// recurses chain of recurse_check to catch mutual recursion
// cb pointer to compile block
//
// Returns: TRUE if all is well
// FALSE otherwise, with error code and offset set
func set_lookbehind_lengths(tls *libc.TLS, pptrptr uintptr, errcodeptr uintptr, lcptr uintptr, recurses uintptr, cb uintptr) TBOOL { /* pcre2_compile.c:9545:1: */
var offset Tsize_t
var branchlength int32
var bptr uintptr = *(*uintptr)(unsafe.Pointer(pptrptr))
{
offset = Tsize_t(*(*Tuint32_t)(unsafe.Pointer(bptr + 1*4)))<<32 | Tsize_t(*(*Tuint32_t)(unsafe.Pointer(bptr + 2*4)))
}
// Offset for error messages
*(*uintptr)(unsafe.Pointer(pptrptr)) += uintptr(DSIZEOFFSET) * 4
for __ccgo := true; __ccgo; __ccgo = *(*Tuint32_t)(unsafe.Pointer(bptr)) == DMETA_ALT {
*(*uintptr)(unsafe.Pointer(pptrptr)) += uintptr(1) * 4
branchlength = get_branchlength(tls, pptrptr, errcodeptr, lcptr, recurses, cb)
if branchlength < 0 {
// The errorcode and offset may already be set from a nested lookbehind.
if *(*int32)(unsafe.Pointer(errcodeptr)) == 0 {
*(*int32)(unsafe.Pointer(errcodeptr)) = ERR25
}
if (*Tcompile_block_8)(unsafe.Pointer(cb)).Ferroroffset == libc.CplUint64(uint64(0)) {
(*Tcompile_block_8)(unsafe.Pointer(cb)).Ferroroffset = offset
}
return DFALSE
}
if branchlength > (*Tcompile_block_8)(unsafe.Pointer(cb)).Fmax_lookbehind {
(*Tcompile_block_8)(unsafe.Pointer(cb)).Fmax_lookbehind = branchlength
}
*(*Tuint32_t)(unsafe.Pointer(bptr)) |= Tuint32_t(branchlength) // branchlength never more than 65535
bptr = *(*uintptr)(unsafe.Pointer(pptrptr))
}
return DTRUE
}
// ************************************************
//
// Check parsed pattern lookbehinds *
//
// This function is called at the end of parsing a pattern if any lookbehinds
// were encountered. It scans the parsed pattern for them, calling
// set_lookbehind_lengths() for each one. At the start, the errorcode is zero and
// the error offset is marked unset. The enables the functions above not to
// override settings from deeper nestings.
//
// This function is called recursively from get_branchlength() for lookaheads in
// order to process any lookbehinds that they may contain. It stops when it hits a
// non-nested closing parenthesis in this case, returning a pointer to it.
//
// Arguments
// pptr points to where to start (start of pattern or start of lookahead)
// retptr if not NULL, return the ket pointer here
// recurses chain of recurse_check to catch mutual recursion
// cb points to the compile block
// lcptr points to loop counter
//
// Returns: 0 on success, or an errorcode (cb->erroroffset will be set)
func check_lookbehinds(tls *libc.TLS, pptr uintptr, retptr uintptr, recurses uintptr, cb uintptr, lcptr uintptr) int32 { /* pcre2_compile.c:9602:1: */
bp := tls.Alloc(12)
defer tls.Free(12)
*(*uintptr)(unsafe.Pointer(bp)) = pptr
*(*int32)(unsafe.Pointer(bp + 8 /* errorcode */)) = 0
var nestlevel int32 = 0
(*Tcompile_block_8)(unsafe.Pointer(cb)).Ferroroffset = libc.CplUint64(uint64(0))
for ; *(*Tuint32_t)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp)))) != DMETA_END; *(*uintptr)(unsafe.Pointer(bp /* pptr */)) += 4 {
if *(*Tuint32_t)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp)))) < DMETA_END {
continue
} // Literal
switch *(*Tuint32_t)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp)))) & 0xffff0000 {
default:
return ERR70 // Unrecognized meta code
case DMETA_ESCAPE:
if *(*Tuint32_t)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp))))-DMETA_ESCAPE == ESC_P || *(*Tuint32_t)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp))))-DMETA_ESCAPE == ESC_p {
*(*uintptr)(unsafe.Pointer(bp /* pptr */)) += 4 * uintptr(1)
}
break
case DMETA_KET:
if libc.PreDecInt32(&nestlevel, 1) < 0 {
if retptr != uintptr(0) {
*(*uintptr)(unsafe.Pointer(retptr)) = *(*uintptr)(unsafe.Pointer(bp /* pptr */))
}
return 0
}
break
case DMETA_ATOMIC:
fallthrough
case DMETA_CAPTURE:
fallthrough
case DMETA_COND_ASSERT:
fallthrough
case DMETA_LOOKAHEAD:
fallthrough
case DMETA_LOOKAHEADNOT:
fallthrough
case DMETA_LOOKAHEAD_NA:
fallthrough
case DMETA_NOCAPTURE:
fallthrough
case DMETA_SCRIPT_RUN:
nestlevel++
break
case DMETA_ACCEPT:
fallthrough
case DMETA_ALT:
fallthrough
case DMETA_ASTERISK:
fallthrough
case DMETA_ASTERISK_PLUS:
fallthrough
case DMETA_ASTERISK_QUERY:
fallthrough
case DMETA_BACKREF:
fallthrough
case DMETA_CIRCUMFLEX:
fallthrough
case DMETA_CLASS:
fallthrough
case DMETA_CLASS_EMPTY:
fallthrough
case DMETA_CLASS_EMPTY_NOT:
fallthrough
case DMETA_CLASS_END:
fallthrough
case DMETA_CLASS_NOT:
fallthrough
case DMETA_COMMIT:
fallthrough
case DMETA_DOLLAR:
fallthrough
case DMETA_DOT:
fallthrough
case DMETA_FAIL:
fallthrough
case DMETA_PLUS:
fallthrough
case DMETA_PLUS_PLUS:
fallthrough
case DMETA_PLUS_QUERY:
fallthrough
case DMETA_PRUNE:
fallthrough
case DMETA_QUERY:
fallthrough
case DMETA_QUERY_PLUS:
fallthrough
case DMETA_QUERY_QUERY:
fallthrough
case DMETA_RANGE_ESCAPED:
fallthrough
case DMETA_RANGE_LITERAL:
fallthrough
case DMETA_SKIP:
fallthrough
case DMETA_THEN:
break
case DMETA_RECURSE:
*(*uintptr)(unsafe.Pointer(bp /* pptr */)) += 4 * uintptr(DSIZEOFFSET)
break
case DMETA_BACKREF_BYNAME:
fallthrough
case DMETA_RECURSE_BYNAME:
*(*uintptr)(unsafe.Pointer(bp /* pptr */)) += 4 * uintptr(1+DSIZEOFFSET)
break
case DMETA_COND_DEFINE:
*(*uintptr)(unsafe.Pointer(bp /* pptr */)) += 4 * uintptr(DSIZEOFFSET)
nestlevel++
break
case DMETA_COND_NAME:
fallthrough
case DMETA_COND_NUMBER:
fallthrough
case DMETA_COND_RNAME:
fallthrough
case DMETA_COND_RNUMBER:
*(*uintptr)(unsafe.Pointer(bp /* pptr */)) += 4 * uintptr(1+DSIZEOFFSET)
nestlevel++
break
case DMETA_COND_VERSION:
*(*uintptr)(unsafe.Pointer(bp /* pptr */)) += 4 * uintptr(3)
nestlevel++
break
case DMETA_CALLOUT_STRING:
*(*uintptr)(unsafe.Pointer(bp /* pptr */)) += 4 * uintptr(3+DSIZEOFFSET)
break
case DMETA_BIGVALUE:
fallthrough
case DMETA_OPTIONS:
fallthrough
case DMETA_POSIX:
fallthrough
case DMETA_POSIX_NEG:
*(*uintptr)(unsafe.Pointer(bp /* pptr */)) += 4 * uintptr(1)
break
case DMETA_MINMAX:
fallthrough
case DMETA_MINMAX_QUERY:
fallthrough
case DMETA_MINMAX_PLUS:
*(*uintptr)(unsafe.Pointer(bp /* pptr */)) += 4 * uintptr(2)
break
case DMETA_CALLOUT_NUMBER:
*(*uintptr)(unsafe.Pointer(bp /* pptr */)) += 4 * uintptr(3)
break
case DMETA_MARK:
fallthrough
case DMETA_COMMIT_ARG:
fallthrough
case DMETA_PRUNE_ARG:
fallthrough
case DMETA_SKIP_ARG:
fallthrough
case DMETA_THEN_ARG:
*(*uintptr)(unsafe.Pointer(bp /* pptr */)) += 4 * uintptr(Tuint32_t(1)+*(*Tuint32_t)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp)) + 1*4)))
break
case DMETA_LOOKBEHIND:
fallthrough
case DMETA_LOOKBEHINDNOT:
fallthrough
case DMETA_LOOKBEHIND_NA:
if !(set_lookbehind_lengths(tls, bp, bp+8, lcptr, recurses, cb) != 0) {
return *(*int32)(unsafe.Pointer(bp + 8 /* errorcode */))
}
break
}
}
return 0
}
// ************************************************
//
// External function to compile a pattern *
//
// This function reads a regular expression in the form of a string and returns
// a pointer to a block of store holding a compiled version of the expression.
//
// Arguments:
// pattern the regular expression
// patlen the length of the pattern, or PCRE2_ZERO_TERMINATED
// options option bits
// errorptr pointer to errorcode
// erroroffset pointer to error offset
// ccontext points to a compile context or is NULL
//
// Returns: pointer to compiled data block, or NULL on error,
// with errorcode and erroroffset set
func Xpcre2_compile_8(tls *libc.TLS, pattern TPCRE2_SPTR8, patlen Tsize_t, options Tuint32_t, errorptr uintptr, erroroffset uintptr, ccontext uintptr) uintptr { /* pcre2_compile.c:9761:27: */
bp := tls.Alloc(17928)
defer tls.Free(17928)
var utf TBOOL // Set TRUE for UTF mode
var ucp TBOOL // Set TRUE for UCP mode
// var has_lookbehind TBOOL at bp+17744, 4
// Set TRUE if a lookbehind is found
var zero_terminated TBOOL
_ = zero_terminated // Set TRUE for zero-terminated pattern
var re uintptr // What we will return
// var cb Tcompile_block_8 at bp+17440, 304
// "Static" compile-time data
var tables uintptr // Char tables base pointer
// var code uintptr at bp+17752, 8
// Current pointer in compiled code
var codestart TPCRE2_SPTR8 // Start of compiled code
var ptr TPCRE2_SPTR8 // Current pointer in pattern
// var pptr uintptr at bp+17760, 8
// Current pointer in parsed pattern
// var length Tsize_t at bp+17792, 8
// Allow for final END opcode
var usedlength Tsize_t // Actual length used
var re_blocksize Tsize_t // Size of memory block
var big32count Tsize_t // 32-bit literals >= 0x80000000
var parsed_size_needed Tsize_t // Needed for parsed pattern
// var firstcuflags Tuint32_t at bp+17776, 4
// var reqcuflags Tuint32_t at bp+17784, 4
// Type of first/req code unit
// var firstcu Tuint32_t at bp+17772, 4
// var reqcu Tuint32_t at bp+17780, 4
// Value of first/req code unit
var setflags Tuint32_t // NL and BSR set flags
var skipatstart Tuint32_t // When checking (*UTF) etc
var limit_heap Tuint32_t
var limit_match Tuint32_t // Unset match limits
var limit_depth Tuint32_t
var newline int32 // Unset; can be set by the pattern
var bsr int32 // Unset; can be set by the pattern
// var errorcode int32 at bp+17768, 4
// Initialize to avoid compiler warn
var regexrc int32 // Return from compile
var i Tuint32_t // Local loop counter
// Comments at the head of this file explain about these variables.
// var stack_groupinfo [256]Tuint32_t at bp+12000, 1024
// var stack_parsed_pattern [1024]Tuint32_t at bp+13344, 4096
// var named_groups [20]Tnamed_group_8 at bp+13024, 320
// The workspace is used in different ways in the different compiling phases.
// It needs to be 16-bit aligned for the preliminary parsing scan.
// var c16workspace [3000]Tuint32_t at bp, 12000
var cworkspace uintptr
var c Tuint32_t
var pp Tuint32_t
var p uintptr
var heap_parsed_pattern uintptr
// var loopcount int32 at bp+17748, 4
var ng uintptr
var search_from TPCRE2_SPTR8
var p1 int32
var groupnumber int32
var rcode uintptr
var rgroup TPCRE2_SPTR8
var ccount uint32
var start int32
// var rc [8]Trecurse_cache at bp+17800, 128
var temp uintptr
var minminlength int32
*(*TBOOL)(unsafe.Pointer(bp + 17744 /* has_lookbehind */)) = DFALSE
re = uintptr(0)
*(*Tsize_t)(unsafe.Pointer(bp + 17792 /* length */)) = uint64(1)
big32count = uint64(0)
setflags = Tuint32_t(0)
limit_heap = 4294967295
limit_match = 4294967295
limit_depth = 4294967295
newline = 0
bsr = 0
*(*int32)(unsafe.Pointer(bp + 17768 /* errorcode */)) = 0
cworkspace = bp /* c16workspace */
// -------------- Check arguments and set up the pattern -----------------
// There must be error code and offset pointers.
if !(errorptr == uintptr(0) || erroroffset == uintptr(0)) {
goto __1
}
return uintptr(0)
__1:
;
*(*int32)(unsafe.Pointer(errorptr)) = ERR0
*(*Tsize_t)(unsafe.Pointer(erroroffset)) = uint64(0)
// There must be a pattern!
if !(pattern == uintptr(0)) {
goto __2
}
*(*int32)(unsafe.Pointer(errorptr)) = ERR16
return uintptr(0)
__2:
;
// A NULL compile context means "use a default context"
if !(ccontext == uintptr(0)) {
goto __3
}
ccontext = uintptr(unsafe.Pointer(&X_pcre2_default_compile_context_8))
__3:
;
// PCRE2_MATCH_INVALID_UTF implies UTF
if !(options&DPCRE2_MATCH_INVALID_UTF != Tuint32_t(0)) {
goto __4
}
options = options | DPCRE2_UTF
__4:
;
// Check that all undefined public option bits are zero.
if !(options&libc.CplUint32(DPCRE2_ANCHORED|DPCRE2_AUTO_CALLOUT|DPCRE2_CASELESS|DPCRE2_ENDANCHORED|DPCRE2_FIRSTLINE|DPCRE2_LITERAL|DPCRE2_MATCH_INVALID_UTF|DPCRE2_NO_START_OPTIMIZE|DPCRE2_NO_UTF_CHECK|DPCRE2_USE_OFFSET_LIMIT|DPCRE2_UTF|DPCRE2_ALLOW_EMPTY_CLASS|DPCRE2_ALT_BSUX|DPCRE2_ALT_CIRCUMFLEX|DPCRE2_ALT_VERBNAMES|DPCRE2_DOLLAR_ENDONLY|DPCRE2_DOTALL|DPCRE2_DUPNAMES|DPCRE2_EXTENDED|DPCRE2_EXTENDED_MORE|DPCRE2_MATCH_UNSET_BACKREF|DPCRE2_MULTILINE|DPCRE2_NEVER_BACKSLASH_C|DPCRE2_NEVER_UCP|DPCRE2_NEVER_UTF|DPCRE2_NO_AUTO_CAPTURE|DPCRE2_NO_AUTO_POSSESS|DPCRE2_NO_DOTSTAR_ANCHOR|DPCRE2_UCP|DPCRE2_UNGREEDY) != Tuint32_t(0) || (*Tpcre2_compile_context_8)(unsafe.Pointer(ccontext)).Fextra_options&libc.CplUint32(DPCRE2_EXTRA_MATCH_LINE|DPCRE2_EXTRA_MATCH_WORD|DPCRE2_EXTRA_ALLOW_SURROGATE_ESCAPES|DPCRE2_EXTRA_BAD_ESCAPE_IS_LITERAL|DPCRE2_EXTRA_ESCAPED_CR_IS_LF|DPCRE2_EXTRA_ALT_BSUX|DPCRE2_EXTRA_ALLOW_LOOKAROUND_BSK) != Tuint32_t(0)) {
goto __5
}
*(*int32)(unsafe.Pointer(errorptr)) = ERR17
return uintptr(0)
__5:
;
if !(options&DPCRE2_LITERAL != Tuint32_t(0) && (options&libc.CplUint32(DPCRE2_ANCHORED|DPCRE2_AUTO_CALLOUT|DPCRE2_CASELESS|DPCRE2_ENDANCHORED|DPCRE2_FIRSTLINE|DPCRE2_LITERAL|DPCRE2_MATCH_INVALID_UTF|DPCRE2_NO_START_OPTIMIZE|DPCRE2_NO_UTF_CHECK|DPCRE2_USE_OFFSET_LIMIT|DPCRE2_UTF) != Tuint32_t(0) || (*Tpcre2_compile_context_8)(unsafe.Pointer(ccontext)).Fextra_options&libc.CplUint32(DPCRE2_EXTRA_MATCH_LINE|DPCRE2_EXTRA_MATCH_WORD) != Tuint32_t(0))) {
goto __6
}
*(*int32)(unsafe.Pointer(errorptr)) = ERR92
return uintptr(0)
__6:
;
// A zero-terminated pattern is indicated by the special length value
// PCRE2_ZERO_TERMINATED. Check for an overlong pattern.
if !(libc.AssignInt32(&zero_terminated, libc.Bool32(patlen == libc.CplUint64(uint64(0)))) != 0) {
goto __7
}
patlen = X_pcre2_strlen_8(tls, pattern)
__7:
;
if !(patlen > (*Tpcre2_compile_context_8)(unsafe.Pointer(ccontext)).Fmax_pattern_length) {
goto __8
}
*(*int32)(unsafe.Pointer(errorptr)) = ERR88
return uintptr(0)
__8:
;
// From here on, all returns from this function should end up going via the
// EXIT label.
// ------------ Initialize the "static" compile data --------------
if (*Tpcre2_compile_context_8)(unsafe.Pointer(ccontext)).Ftables != uintptr(0) {
tables = (*Tpcre2_compile_context_8)(unsafe.Pointer(ccontext)).Ftables
} else {
tables = uintptr(unsafe.Pointer(&X_pcre2_default_tables_8))
}
(*Tcompile_block_8)(unsafe.Pointer(bp + 17440 /* &cb */)).Flcc = tables + uintptr(Dlcc_offset) // Individual
(*Tcompile_block_8)(unsafe.Pointer(bp + 17440 /* &cb */)).Ffcc = tables + uintptr(Dfcc_offset) // character
(*Tcompile_block_8)(unsafe.Pointer(bp + 17440 /* &cb */)).Fcbits = tables + uintptr(Dcbits_offset) // tables
(*Tcompile_block_8)(unsafe.Pointer(bp + 17440 /* &cb */)).Fctypes = tables + uintptr(Dcbits_offset+Dcbit_length)
(*Tcompile_block_8)(unsafe.Pointer(bp + 17440 /* &cb */)).Fassert_depth = Tuint16_t(0)
(*Tcompile_block_8)(unsafe.Pointer(bp + 17440 /* &cb */)).Fbracount = Tuint32_t(0)
(*Tcompile_block_8)(unsafe.Pointer(bp + 17440 /* &cb */)).Fcx = ccontext
(*Tcompile_block_8)(unsafe.Pointer(bp + 17440 /* &cb */)).Fdupnames = DFALSE
(*Tcompile_block_8)(unsafe.Pointer(bp + 17440 /* &cb */)).Fend_pattern = pattern + uintptr(patlen)
(*Tcompile_block_8)(unsafe.Pointer(bp + 17440 /* &cb */)).Ferroroffset = uint64(0)
(*Tcompile_block_8)(unsafe.Pointer(bp + 17440 /* &cb */)).Fexternal_flags = Tuint32_t(0)
(*Tcompile_block_8)(unsafe.Pointer(bp + 17440 /* &cb */)).Fexternal_options = options
(*Tcompile_block_8)(unsafe.Pointer(bp + 17440 /* &cb */)).Fgroupinfo = bp + 12000 /* &stack_groupinfo[0] */
(*Tcompile_block_8)(unsafe.Pointer(bp + 17440 /* &cb */)).Fhad_recurse = DFALSE
(*Tcompile_block_8)(unsafe.Pointer(bp + 17440 /* &cb */)).Flastcapture = Tuint32_t(0)
(*Tcompile_block_8)(unsafe.Pointer(bp + 17440 /* &cb */)).Fmax_lookbehind = 0
(*Tcompile_block_8)(unsafe.Pointer(bp + 17440 /* &cb */)).Fname_entry_size = Tuint16_t(0)
(*Tcompile_block_8)(unsafe.Pointer(bp + 17440 /* &cb */)).Fname_table = uintptr(0)
(*Tcompile_block_8)(unsafe.Pointer(bp + 17440 /* &cb */)).Fnamed_groups = bp + 13024 /* &named_groups[0] */
(*Tcompile_block_8)(unsafe.Pointer(bp + 17440 /* &cb */)).Fnamed_group_list_size = Tuint32_t(DNAMED_GROUP_LIST_SIZE)
(*Tcompile_block_8)(unsafe.Pointer(bp + 17440 /* &cb */)).Fnames_found = Tuint16_t(0)
(*Tcompile_block_8)(unsafe.Pointer(bp + 17440 /* &cb */)).Fopen_caps = uintptr(0)
(*Tcompile_block_8)(unsafe.Pointer(bp + 17440 /* &cb */)).Fparens_depth = Tuint16_t(0)
(*Tcompile_block_8)(unsafe.Pointer(bp + 17440 /* &cb */)).Fparsed_pattern = bp + 13344 /* &stack_parsed_pattern[0] */
(*Tcompile_block_8)(unsafe.Pointer(bp + 17440 /* &cb */)).Freq_varyopt = Tuint32_t(0)
(*Tcompile_block_8)(unsafe.Pointer(bp + 17440 /* &cb */)).Fstart_code = cworkspace
(*Tcompile_block_8)(unsafe.Pointer(bp + 17440 /* &cb */)).Fstart_pattern = pattern
(*Tcompile_block_8)(unsafe.Pointer(bp + 17440 /* &cb */)).Fstart_workspace = cworkspace
(*Tcompile_block_8)(unsafe.Pointer(bp + 17440 /* &cb */)).Fworkspace_size = uint64(3000 * DLINK_SIZE)
// Maximum back reference and backref bitmap. The bitmap records up to 31 back
// references to help in deciding whether (.*) can be treated as anchored or not.
(*Tcompile_block_8)(unsafe.Pointer(bp + 17440 /* &cb */)).Ftop_backref = Tuint32_t(0)
(*Tcompile_block_8)(unsafe.Pointer(bp + 17440 /* &cb */)).Fbackref_map = Tuint32_t(0)
// Escape sequences \1 to \9 are always back references, but as they are only
// two characters long, only two elements can be used in the parsed_pattern
// vector. The first contains the reference, and we'd like to use the second to
// record the offset in the pattern, so that forward references to non-existent
// groups can be diagnosed later with an offset. However, on 64-bit systems,
// PCRE2_SIZE won't fit. Instead, we have a vector of offsets for the first
// occurrence of \1 to \9, indexed by the second parsed_pattern value. All other
// references have enough space for the offset to be put into the parsed pattern.
i = Tuint32_t(0)
__9:
if !(i < Tuint32_t(10)) {
goto __11
}
*(*Tsize_t)(unsafe.Pointer(bp + 17440 + 88 + uintptr(i)*8)) = libc.CplUint64(uint64(0))
goto __10
__10:
i++
goto __9
goto __11
__11:
;
// --------------- Start looking at the pattern ---------------
// Unless PCRE2_LITERAL is set, check for global one-time option settings at
// the start of the pattern, and remember the offset to the actual regex. With
// valgrind support, make the terminator of a zero-terminated pattern
// inaccessible. This catches bugs that would otherwise only show up for
// non-zero-terminated patterns.
ptr = pattern
skipatstart = Tuint32_t(0)
if !(options&DPCRE2_LITERAL == Tuint32_t(0)) {
goto __12
}
__13:
if !(patlen-Tsize_t(skipatstart) >= uint64(2) && int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(ptr + uintptr(skipatstart)))) == '\050' && int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(ptr + uintptr(skipatstart+Tuint32_t(1))))) == '\052') {
goto __14
}
i = Tuint32_t(0)
__15:
if !(uint64(i) < uint64(unsafe.Sizeof(pso_list))/uint64(unsafe.Sizeof(Tpso{}))) {
goto __17
}
p = uintptr(unsafe.Pointer(&pso_list)) + uintptr(i)*16
if !(patlen-Tsize_t(skipatstart)-uint64(2) >= Tsize_t((*Tpso)(unsafe.Pointer(p)).Flength) && X_pcre2_strncmp_c8_8(tls, ptr+uintptr(skipatstart)+uintptr(2), (*Tpso)(unsafe.Pointer(p)).Fname,
uint64((*Tpso)(unsafe.Pointer(p)).Flength)) == 0) {
goto __18
}
skipatstart = skipatstart + Tuint32_t(int32((*Tpso)(unsafe.Pointer(p)).Flength)+2)
switch int32((*Tpso)(unsafe.Pointer(p)).Ftype) {
case PSO_OPT:
goto __20
case PSO_FLG:
goto __21
case PSO_NL:
goto __22
case PSO_BSR:
goto __23
case PSO_LIMM:
goto __24
case PSO_LIMD:
goto __25
case PSO_LIMH:
goto __26
}
goto __19
__20:
*(*Tuint32_t)(unsafe.Pointer(bp + 17440 + 204)) |= (*Tpso)(unsafe.Pointer(p)).Fvalue
goto __19
__21:
setflags = setflags | (*Tpso)(unsafe.Pointer(p)).Fvalue
goto __19
__22:
newline = int32((*Tpso)(unsafe.Pointer(p)).Fvalue)
setflags = setflags | Tuint32_t(DPCRE2_NL_SET)
goto __19
__23:
bsr = int32((*Tpso)(unsafe.Pointer(p)).Fvalue)
setflags = setflags | Tuint32_t(DPCRE2_BSR_SET)
goto __19
__24:
__25:
__26:
c = Tuint32_t(0)
pp = skipatstart
if !!(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(ptr + uintptr(pp)))) >= '\060' && int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(ptr + uintptr(pp)))) <= '\071') {
goto __27
}
*(*int32)(unsafe.Pointer(bp + 17768 /* errorcode */)) = ERR60
ptr += TPCRE2_SPTR8(pp)
goto HAD_EARLY_ERROR
__27:
;
__28:
if !(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(ptr + uintptr(pp)))) >= '\060' && int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(ptr + uintptr(pp)))) <= '\071') {
goto __29
}
if !(c > 4294967295/uint32(10)-uint32(1)) {
goto __30
}
goto __29
__30:
; // Integer overflow
c = c*Tuint32_t(10) + Tuint32_t(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(ptr + uintptr(libc.PostIncUint32(&pp, 1)))))-'\060')
goto __28
__29:
;
if !(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(ptr + uintptr(libc.PostIncUint32(&pp, 1))))) != '\051') {
goto __31
}
*(*int32)(unsafe.Pointer(bp + 17768 /* errorcode */)) = ERR60
ptr += TPCRE2_SPTR8(pp)
goto HAD_EARLY_ERROR
__31:
;
if !(int32((*Tpso)(unsafe.Pointer(p)).Ftype) == PSO_LIMH) {
goto __32
}
limit_heap = c
goto __33
__32:
if !(int32((*Tpso)(unsafe.Pointer(p)).Ftype) == PSO_LIMM) {
goto __34
}
limit_match = c
goto __35
__34:
limit_depth = c
__35:
;
__33:
;
skipatstart = skipatstart + (pp - skipatstart)
goto __19
__19:
;
goto __17 // Out of the table scan loop
__18:
;
goto __16
__16:
i++
goto __15
goto __17
__17:
;
if !(uint64(i) >= uint64(unsafe.Sizeof(pso_list))/uint64(unsafe.Sizeof(Tpso{}))) {
goto __36
}
goto __14
__36:
; // Out of pso loop
goto __13
__14:
;
__12:
;
// End of pattern-start options; advance to start of real regex.
ptr += TPCRE2_SPTR8(skipatstart)
// Can't support UTF or UCP if PCRE2 was built without Unicode support.
// Check UTF. We have the original options in 'options', with that value as
// modified by (*UTF) etc in cb->external_options. The extra option
// PCRE2_EXTRA_ALLOW_SURROGATE_ESCAPES is not permitted in UTF-16 mode because the
// surrogate code points cannot be represented in UTF-16.
utf = libc.Bool32((*Tcompile_block_8)(unsafe.Pointer(bp+17440)).Fexternal_options&DPCRE2_UTF != Tuint32_t(0))
if !(utf != 0) {
goto __37
}
if !(options&DPCRE2_NEVER_UTF != Tuint32_t(0)) {
goto __38
}
*(*int32)(unsafe.Pointer(bp + 17768 /* errorcode */)) = ERR74
goto HAD_EARLY_ERROR
__38:
;
if !(options&DPCRE2_NO_UTF_CHECK == Tuint32_t(0) && libc.AssignPtrInt32(bp+17768, X_pcre2_valid_utf_8(tls, pattern, patlen, erroroffset)) != 0) {
goto __39
}
goto HAD_ERROR
__39:
; // Offset was set by valid_utf()
__37:
;
// Check UCP lockout.
ucp = libc.Bool32((*Tcompile_block_8)(unsafe.Pointer(bp+17440)).Fexternal_options&DPCRE2_UCP != Tuint32_t(0))
if !(ucp != 0 && (*Tcompile_block_8)(unsafe.Pointer(bp+17440)).Fexternal_options&DPCRE2_NEVER_UCP != Tuint32_t(0)) {
goto __40
}
*(*int32)(unsafe.Pointer(bp + 17768 /* errorcode */)) = ERR75
goto HAD_EARLY_ERROR
__40:
;
// Process the BSR setting.
if !(bsr == 0) {
goto __41
}
bsr = int32((*Tpcre2_compile_context_8)(unsafe.Pointer(ccontext)).Fbsr_convention)
__41:
;
// Process the newline setting.
if !(newline == 0) {
goto __42
}
newline = int32((*Tpcre2_compile_context_8)(unsafe.Pointer(ccontext)).Fnewline_convention)
__42:
;
(*Tcompile_block_8)(unsafe.Pointer(bp + 17440 /* &cb */)).Fnltype = Tuint32_t(DNLTYPE_FIXED)
switch newline {
case DPCRE2_NEWLINE_CR:
goto __44
case DPCRE2_NEWLINE_LF:
goto __45
case DPCRE2_NEWLINE_NUL:
goto __46
case DPCRE2_NEWLINE_CRLF:
goto __47
case DPCRE2_NEWLINE_ANY:
goto __48
case DPCRE2_NEWLINE_ANYCRLF:
goto __49
default:
goto __50
}
goto __43
__44:
(*Tcompile_block_8)(unsafe.Pointer(bp + 17440 /* &cb */)).Fnllen = Tuint32_t(1)
*(*TPCRE2_UCHAR8)(unsafe.Pointer(bp + 17440 + 272)) = TPCRE2_UCHAR8('\015')
goto __43
__45:
(*Tcompile_block_8)(unsafe.Pointer(bp + 17440 /* &cb */)).Fnllen = Tuint32_t(1)
*(*TPCRE2_UCHAR8)(unsafe.Pointer(bp + 17440 + 272)) = TPCRE2_UCHAR8('\012')
goto __43
__46:
(*Tcompile_block_8)(unsafe.Pointer(bp + 17440 /* &cb */)).Fnllen = Tuint32_t(1)
*(*TPCRE2_UCHAR8)(unsafe.Pointer(bp + 17440 + 272)) = TPCRE2_UCHAR8(0)
goto __43
__47:
(*Tcompile_block_8)(unsafe.Pointer(bp + 17440 /* &cb */)).Fnllen = Tuint32_t(2)
*(*TPCRE2_UCHAR8)(unsafe.Pointer(bp + 17440 + 272)) = TPCRE2_UCHAR8('\015')
*(*TPCRE2_UCHAR8)(unsafe.Pointer(bp + 17440 + 272 + 1)) = TPCRE2_UCHAR8('\012')
goto __43
__48:
(*Tcompile_block_8)(unsafe.Pointer(bp + 17440 /* &cb */)).Fnltype = Tuint32_t(DNLTYPE_ANY)
goto __43
__49:
(*Tcompile_block_8)(unsafe.Pointer(bp + 17440 /* &cb */)).Fnltype = Tuint32_t(DNLTYPE_ANYCRLF)
goto __43
__50:
*(*int32)(unsafe.Pointer(bp + 17768 /* errorcode */)) = ERR56
goto HAD_EARLY_ERROR
__43:
;
// Pre-scan the pattern to do two things: (1) Discover the named groups and
// their numerical equivalents, so that this information is always available for
// the remaining processing. (2) At the same time, parse the pattern and put a
// processed version into the parsed_pattern vector. This has escapes interpreted
// and comments removed (amongst other things).
//
// In all but one case, when PCRE2_AUTO_CALLOUT is not set, the number of unsigned
// 32-bit ints in the parsed pattern is bounded by the length of the pattern plus
// one (for the terminator) plus four if PCRE2_EXTRA_WORD or PCRE2_EXTRA_LINE is
// set. The exceptional case is when running in 32-bit, non-UTF mode, when literal
// characters greater than META_END (0x80000000) have to be coded as two units. In
// this case, therefore, we scan the pattern to check for such values.
// Ensure that the parsed pattern buffer is big enough. When PCRE2_AUTO_CALLOUT
// is set we have to assume a numerical callout (4 elements) for each character
// plus one at the end. This is overkill, but memory is plentiful these days. For
// many smaller patterns the vector on the stack (which was set up above) can be
// used.
parsed_size_needed = patlen - Tsize_t(skipatstart) + big32count
if !((*Tpcre2_compile_context_8)(unsafe.Pointer(ccontext)).Fextra_options&(DPCRE2_EXTRA_MATCH_WORD|DPCRE2_EXTRA_MATCH_LINE) != Tuint32_t(0)) {
goto __51
}
parsed_size_needed = parsed_size_needed + uint64(4)
__51:
;
if !(options&DPCRE2_AUTO_CALLOUT != Tuint32_t(0)) {
goto __52
}
parsed_size_needed = (parsed_size_needed + uint64(1)) * uint64(5)
__52:
;
if !(parsed_size_needed >= uint64(DPARSED_PATTERN_DEFAULT_SIZE)) {
goto __53
}
heap_parsed_pattern = (*struct {
f func(*libc.TLS, Tsize_t, uintptr) uintptr
})(unsafe.Pointer(&struct{ uintptr }{(*Tpcre2_compile_context_8)(unsafe.Pointer(ccontext)).Fmemctl.Fmalloc})).f(tls,
(parsed_size_needed+uint64(1))*Tsize_t(unsafe.Sizeof(Tuint32_t(0))), (*Tpcre2_compile_context_8)(unsafe.Pointer(ccontext)).Fmemctl.Fmemory_data)
if !(heap_parsed_pattern == uintptr(0)) {
goto __54
}
*(*int32)(unsafe.Pointer(errorptr)) = ERR21
goto EXIT
__54:
;
(*Tcompile_block_8)(unsafe.Pointer(bp + 17440 /* &cb */)).Fparsed_pattern = heap_parsed_pattern
__53:
;
(*Tcompile_block_8)(unsafe.Pointer(bp + 17440 /* &cb */)).Fparsed_pattern_end = (*Tcompile_block_8)(unsafe.Pointer(bp+17440)).Fparsed_pattern + uintptr(parsed_size_needed)*4 + uintptr(1)*4
// Do the parsing scan.
*(*int32)(unsafe.Pointer(bp + 17768 /* errorcode */)) = parse_regex(tls, ptr, (*Tcompile_block_8)(unsafe.Pointer(bp+17440 /* &cb */)).Fexternal_options, bp+17744, bp+17440)
if !(*(*int32)(unsafe.Pointer(bp + 17768)) != 0) {
goto __55
}
goto HAD_CB_ERROR
__55:
;
// Workspace is needed to remember information about numbered groups: whether a
// group can match an empty string and what its fixed length is. This is done to
// avoid the possibility of recursive references causing very long compile times
// when checking these features. Unnumbered groups do not have this exposure since
// they cannot be referenced. We use an indexed vector for this purpose. If there
// are sufficiently few groups, the default vector on the stack, as set up above,
// can be used. Otherwise we have to get/free a special vector. The vector must be
// initialized to zero.
if !((*Tcompile_block_8)(unsafe.Pointer(bp+17440)).Fbracount >= Tuint32_t(DGROUPINFO_DEFAULT_SIZE)) {
goto __56
}
(*Tcompile_block_8)(unsafe.Pointer(bp + 17440 /* &cb */)).Fgroupinfo = (*struct {
f func(*libc.TLS, Tsize_t, uintptr) uintptr
})(unsafe.Pointer(&struct{ uintptr }{(*Tpcre2_compile_context_8)(unsafe.Pointer(ccontext)).Fmemctl.Fmalloc})).f(tls,
uint64((*Tcompile_block_8)(unsafe.Pointer(bp+17440)).Fbracount+Tuint32_t(1))*uint64(unsafe.Sizeof(Tuint32_t(0))), (*Tpcre2_compile_context_8)(unsafe.Pointer(ccontext)).Fmemctl.Fmemory_data)
if !((*Tcompile_block_8)(unsafe.Pointer(bp+17440)).Fgroupinfo == uintptr(0)) {
goto __57
}
*(*int32)(unsafe.Pointer(bp + 17768 /* errorcode */)) = ERR21
(*Tcompile_block_8)(unsafe.Pointer(bp + 17440 /* &cb */)).Ferroroffset = uint64(0)
goto HAD_CB_ERROR
__57:
;
__56:
;
libc.Xmemset(tls, (*Tcompile_block_8)(unsafe.Pointer(bp+17440 /* &cb */)).Fgroupinfo, 0, uint64((*Tcompile_block_8)(unsafe.Pointer(bp+17440)).Fbracount+Tuint32_t(1))*uint64(unsafe.Sizeof(Tuint32_t(0))))
// If there were any lookbehinds, scan the parsed pattern to figure out their
// lengths.
if !(*(*TBOOL)(unsafe.Pointer(bp + 17744)) != 0) {
goto __58
}
*(*int32)(unsafe.Pointer(bp + 17748 /* loopcount */)) = 0
*(*int32)(unsafe.Pointer(bp + 17768 /* errorcode */)) = check_lookbehinds(tls, (*Tcompile_block_8)(unsafe.Pointer(bp+17440 /* &cb */)).Fparsed_pattern, uintptr(0), uintptr(0), bp+17440, bp+17748)
if !(*(*int32)(unsafe.Pointer(bp + 17768)) != 0) {
goto __59
}
goto HAD_CB_ERROR
__59:
;
__58:
;
// For debugging, there is a function that shows the parsed data vector.
// For debugging capturing information this code can be enabled.
// Pretend to compile the pattern while actually just accumulating the amount
// of memory required in the 'length' variable. This behaviour is triggered by
// passing a non-NULL final argument to compile_regex(). We pass a block of
// workspace (cworkspace) for it to compile parts of the pattern into; the
// compiled code is discarded when it is no longer needed, so hopefully this
// workspace will never overflow, though there is a test for its doing so.
//
// On error, errorcode will be set non-zero, so we don't need to look at the
// result of the function. The initial options have been put into the cb block,
// but we still have to pass a separate options variable (the first argument)
// because the options may change as the pattern is processed.
(*Tcompile_block_8)(unsafe.Pointer(bp + 17440 /* &cb */)).Ferroroffset = patlen // For any subsequent errors that do not set it
*(*uintptr)(unsafe.Pointer(bp + 17760 /* pptr */)) = (*Tcompile_block_8)(unsafe.Pointer(bp + 17440 /* &cb */)).Fparsed_pattern
*(*uintptr)(unsafe.Pointer(bp + 17752 /* code */)) = cworkspace
*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 17752 /* code */)))) = OP_BRA
compile_regex(tls, (*Tcompile_block_8)(unsafe.Pointer(bp+17440 /* &cb */)).Fexternal_options, bp+17752, bp+17760, bp+17768, uint32(0), bp+17772,
bp+17776, bp+17780, bp+17784, uintptr(0), bp+17440, bp+17792)
if !(*(*int32)(unsafe.Pointer(bp + 17768)) != 0) {
goto __60
}
goto HAD_CB_ERROR
__60:
; // Offset is in cb.erroroffset
// This should be caught in compile_regex(), but just in case...
if !(*(*Tsize_t)(unsafe.Pointer(bp + 17792)) > uint64(int32(1)<<16)) {
goto __61
}
*(*int32)(unsafe.Pointer(bp + 17768 /* errorcode */)) = ERR20
goto HAD_CB_ERROR
__61:
;
// Compute the size of, and then get and initialize, the data block for storing
// the compiled pattern and names table. Integer overflow should no longer be
// possible because nowadays we limit the maximum value of cb.names_found and
// cb.name_entry_size.
re_blocksize = uint64(unsafe.Sizeof(Tpcre2_real_code_8{})) + (*(*Tsize_t)(unsafe.Pointer(bp + 17792))+Tsize_t((*Tcompile_block_8)(unsafe.Pointer(bp+17440)).Fnames_found)*Tsize_t((*Tcompile_block_8)(unsafe.Pointer(bp+17440)).Fname_entry_size))*uint64(DPCRE2_CODE_UNIT_WIDTH/8)
re = (*struct {
f func(*libc.TLS, Tsize_t, uintptr) uintptr
})(unsafe.Pointer(&struct{ uintptr }{(*Tpcre2_compile_context_8)(unsafe.Pointer(ccontext)).Fmemctl.Fmalloc})).f(tls, re_blocksize, (*Tpcre2_compile_context_8)(unsafe.Pointer(ccontext)).Fmemctl.Fmemory_data)
if !(re == uintptr(0)) {
goto __62
}
*(*int32)(unsafe.Pointer(bp + 17768 /* errorcode */)) = ERR21
goto HAD_CB_ERROR
__62:
;
// The compiler may put padding at the end of the pcre2_real_code structure in
// order to round it up to a multiple of 4 or 8 bytes. This means that when a
// compiled pattern is copied (for example, when serialized) undefined bytes are
// read, and this annoys debuggers such as valgrind. To avoid this, we explicitly
// write to the last 8 bytes of the structure before setting the fields.
libc.Xmemset(tls, re+uintptr(uint64(unsafe.Sizeof(Tpcre2_real_code_8{})))-uintptr(8), 0, uint64(8))
(*Tpcre2_real_code_8)(unsafe.Pointer(re)).Fmemctl = (*Tpcre2_compile_context_8)(unsafe.Pointer(ccontext)).Fmemctl
(*Tpcre2_real_code_8)(unsafe.Pointer(re)).Ftables = tables
(*Tpcre2_real_code_8)(unsafe.Pointer(re)).Fexecutable_jit = uintptr(0)
libc.Xmemset(tls, re+40, 0, uint64(32)*uint64(unsafe.Sizeof(Tuint8_t(0))))
(*Tpcre2_real_code_8)(unsafe.Pointer(re)).Fblocksize = re_blocksize
(*Tpcre2_real_code_8)(unsafe.Pointer(re)).Fmagic_number = uint32(DMAGIC_NUMBER)
(*Tpcre2_real_code_8)(unsafe.Pointer(re)).Fcompile_options = options
(*Tpcre2_real_code_8)(unsafe.Pointer(re)).Foverall_options = (*Tcompile_block_8)(unsafe.Pointer(bp + 17440 /* &cb */)).Fexternal_options
(*Tpcre2_real_code_8)(unsafe.Pointer(re)).Fextra_options = (*Tpcre2_compile_context_8)(unsafe.Pointer(ccontext)).Fextra_options
(*Tpcre2_real_code_8)(unsafe.Pointer(re)).Fflags = Tuint32_t(DPCRE2_CODE_UNIT_WIDTH/8) | (*Tcompile_block_8)(unsafe.Pointer(bp+17440)).Fexternal_flags | setflags
(*Tpcre2_real_code_8)(unsafe.Pointer(re)).Flimit_heap = limit_heap
(*Tpcre2_real_code_8)(unsafe.Pointer(re)).Flimit_match = limit_match
(*Tpcre2_real_code_8)(unsafe.Pointer(re)).Flimit_depth = limit_depth
(*Tpcre2_real_code_8)(unsafe.Pointer(re)).Ffirst_codeunit = Tuint32_t(0)
(*Tpcre2_real_code_8)(unsafe.Pointer(re)).Flast_codeunit = Tuint32_t(0)
(*Tpcre2_real_code_8)(unsafe.Pointer(re)).Fbsr_convention = Tuint16_t(bsr)
(*Tpcre2_real_code_8)(unsafe.Pointer(re)).Fnewline_convention = Tuint16_t(newline)
(*Tpcre2_real_code_8)(unsafe.Pointer(re)).Fmax_lookbehind = Tuint16_t(0)
(*Tpcre2_real_code_8)(unsafe.Pointer(re)).Fminlength = Tuint16_t(0)
(*Tpcre2_real_code_8)(unsafe.Pointer(re)).Ftop_bracket = Tuint16_t(0)
(*Tpcre2_real_code_8)(unsafe.Pointer(re)).Ftop_backref = Tuint16_t(0)
(*Tpcre2_real_code_8)(unsafe.Pointer(re)).Fname_entry_size = (*Tcompile_block_8)(unsafe.Pointer(bp + 17440 /* &cb */)).Fname_entry_size
(*Tpcre2_real_code_8)(unsafe.Pointer(re)).Fname_count = (*Tcompile_block_8)(unsafe.Pointer(bp + 17440 /* &cb */)).Fnames_found
// The basic block is immediately followed by the name table, and the compiled
// code follows after that.
codestart = re + uintptr(uint64(unsafe.Sizeof(Tpcre2_real_code_8{}))) + uintptr(int32((*Tpcre2_real_code_8)(unsafe.Pointer(re)).Fname_entry_size)*int32((*Tpcre2_real_code_8)(unsafe.Pointer(re)).Fname_count))
// Update the compile data block for the actual compile. The starting points of
// the name/number translation table and of the code are passed around in the
// compile data block. The start/end pattern and initial options are already set
// from the pre-compile phase, as is the name_entry_size field.
(*Tcompile_block_8)(unsafe.Pointer(bp + 17440 /* &cb */)).Fparens_depth = Tuint16_t(0)
(*Tcompile_block_8)(unsafe.Pointer(bp + 17440 /* &cb */)).Fassert_depth = Tuint16_t(0)
(*Tcompile_block_8)(unsafe.Pointer(bp + 17440 /* &cb */)).Flastcapture = Tuint32_t(0)
(*Tcompile_block_8)(unsafe.Pointer(bp + 17440 /* &cb */)).Fname_table = re + uintptr(uint64(unsafe.Sizeof(Tpcre2_real_code_8{})))
(*Tcompile_block_8)(unsafe.Pointer(bp + 17440 /* &cb */)).Fstart_code = codestart
(*Tcompile_block_8)(unsafe.Pointer(bp + 17440 /* &cb */)).Freq_varyopt = Tuint32_t(0)
(*Tcompile_block_8)(unsafe.Pointer(bp + 17440 /* &cb */)).Fhad_accept = DFALSE
(*Tcompile_block_8)(unsafe.Pointer(bp + 17440 /* &cb */)).Fhad_pruneorskip = DFALSE
(*Tcompile_block_8)(unsafe.Pointer(bp + 17440 /* &cb */)).Fopen_caps = uintptr(0)
// If any named groups were found, create the name/number table from the list
// created in the pre-pass.
if !(int32((*Tcompile_block_8)(unsafe.Pointer(bp+17440)).Fnames_found) > 0) {
goto __63
}
ng = (*Tcompile_block_8)(unsafe.Pointer(bp + 17440 /* &cb */)).Fnamed_groups
i = Tuint32_t(0)
__64:
if !(i < Tuint32_t((*Tcompile_block_8)(unsafe.Pointer(bp+17440)).Fnames_found)) {
goto __66
}
add_name_to_table(tls, bp+17440, (*Tnamed_group_8)(unsafe.Pointer(ng)).Fname, int32((*Tnamed_group_8)(unsafe.Pointer(ng)).Flength), (*Tnamed_group_8)(unsafe.Pointer(ng)).Fnumber, i)
goto __65
__65:
i++
ng += 16
goto __64
goto __66
__66:
;
__63:
;
// Set up a starting, non-extracting bracket, then compile the expression. On
// error, errorcode will be set non-zero, so we don't need to look at the result
// of the function here.
*(*uintptr)(unsafe.Pointer(bp + 17760 /* pptr */)) = (*Tcompile_block_8)(unsafe.Pointer(bp + 17440 /* &cb */)).Fparsed_pattern
*(*uintptr)(unsafe.Pointer(bp + 17752 /* code */)) = codestart
*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 17752 /* code */)))) = OP_BRA
regexrc = compile_regex(tls, (*Tpcre2_real_code_8)(unsafe.Pointer(re)).Foverall_options, bp+17752, bp+17760, bp+17768, uint32(0),
bp+17772, bp+17776, bp+17780, bp+17784, uintptr(0), bp+17440, uintptr(0))
if !(regexrc < 0) {
goto __67
}
*(*Tuint32_t)(unsafe.Pointer(re + 96)) |= Tuint32_t(DPCRE2_MATCH_EMPTY)
__67:
;
(*Tpcre2_real_code_8)(unsafe.Pointer(re)).Ftop_bracket = Tuint16_t((*Tcompile_block_8)(unsafe.Pointer(bp + 17440 /* &cb */)).Fbracount)
(*Tpcre2_real_code_8)(unsafe.Pointer(re)).Ftop_backref = Tuint16_t((*Tcompile_block_8)(unsafe.Pointer(bp + 17440 /* &cb */)).Ftop_backref)
(*Tpcre2_real_code_8)(unsafe.Pointer(re)).Fmax_lookbehind = Tuint16_t((*Tcompile_block_8)(unsafe.Pointer(bp + 17440 /* &cb */)).Fmax_lookbehind)
if !((*Tcompile_block_8)(unsafe.Pointer(bp+17440)).Fhad_accept != 0) {
goto __68
}
*(*Tuint32_t)(unsafe.Pointer(bp + 17780 /* reqcu */)) = Tuint32_t(0) // Must disable after (*ACCEPT)
*(*Tuint32_t)(unsafe.Pointer(bp + 17784 /* reqcuflags */)) = DREQ_NONE
*(*Tuint32_t)(unsafe.Pointer(re + 96)) |= Tuint32_t(DPCRE2_HASACCEPT) // Disables minimum length
__68:
;
// Fill in the final opcode and check for disastrous overflow. If no overflow,
// but the estimated length exceeds the really used length, adjust the value of
// re->blocksize, and if valgrind support is configured, mark the extra allocated
// memory as unaddressable, so that any out-of-bound reads can be detected.
*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&*(*uintptr)(unsafe.Pointer(bp + 17752 /* code */)), 1))) = OP_END
usedlength = Tsize_t((int64(*(*uintptr)(unsafe.Pointer(bp + 17752))) - int64(codestart)) / 1)
if !(usedlength > *(*Tsize_t)(unsafe.Pointer(bp + 17792))) {
goto __69
}
*(*int32)(unsafe.Pointer(bp + 17768 /* errorcode */)) = ERR23
goto __70
__69:
*(*Tsize_t)(unsafe.Pointer(re + 72)) -= (*(*Tsize_t)(unsafe.Pointer(bp + 17792)) - usedlength) * uint64(DPCRE2_CODE_UNIT_WIDTH/8)
__70:
;
// Scan the pattern for recursion/subroutine calls and convert the group
// numbers into offsets. Maintain a small cache so that repeated groups containing
// recursions are efficiently handled.
if !(*(*int32)(unsafe.Pointer(bp + 17768)) == 0 && (*Tcompile_block_8)(unsafe.Pointer(bp+17440)).Fhad_recurse != 0) {
goto __71
}
ccount = uint32(0)
start = DRSCAN_CACHE_SIZE
rcode = find_recurse(tls, codestart, utf)
__72:
if !(rcode != uintptr(0)) {
goto __74
}
groupnumber = int32(uint32(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(rcode + 1)))<<8 | int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(rcode + 2)))))
if !(groupnumber == 0) {
goto __75
}
rgroup = codestart
goto __76
__75:
search_from = codestart
rgroup = uintptr(0)
i = Tuint32_t(0)
p1 = start
__77:
if !(i < ccount) {
goto __79
}
if !(groupnumber == (*Trecurse_cache)(unsafe.Pointer(bp+17800+uintptr(p1)*16)).Fgroupnumber) {
goto __80
}
rgroup = (*Trecurse_cache)(unsafe.Pointer(bp + 17800 + uintptr(p1)*16)).Fgroup
goto __79
__80:
;
// Group n+1 must always start to the right of group n, so we can save
// search time below when the new group number is greater than any of the
// previously found groups.
if !(groupnumber > (*Trecurse_cache)(unsafe.Pointer(bp+17800+uintptr(p1)*16)).Fgroupnumber) {
goto __81
}
search_from = (*Trecurse_cache)(unsafe.Pointer(bp + 17800 + uintptr(p1)*16)).Fgroup
__81:
;
goto __78
__78:
i++
p1 = (p1 + 1) & 7
goto __77
goto __79
__79:
;
if !(rgroup == uintptr(0)) {
goto __82
}
rgroup = X_pcre2_find_bracket_8(tls, search_from, utf, groupnumber)
if !(rgroup == uintptr(0)) {
goto __83
}
*(*int32)(unsafe.Pointer(bp + 17768 /* errorcode */)) = ERR53
goto __74
__83:
;
if !(libc.PreDecInt32(&start, 1) < 0) {
goto __84
}
start = DRSCAN_CACHE_SIZE - 1
__84:
;
(*Trecurse_cache)(unsafe.Pointer(bp + 17800 + uintptr(start)*16)).Fgroupnumber = groupnumber
(*Trecurse_cache)(unsafe.Pointer(bp + 17800 + uintptr(start)*16)).Fgroup = rgroup
if !(ccount < uint32(DRSCAN_CACHE_SIZE)) {
goto __85
}
ccount++
__85:
;
__82:
;
__76:
;
*(*TPCRE2_UCHAR8)(unsafe.Pointer(rcode + 1)) = TPCRE2_UCHAR8((int64(rgroup) - int64(codestart)) / 1 >> 8)
*(*TPCRE2_UCHAR8)(unsafe.Pointer(rcode + 2)) = TPCRE2_UCHAR8((int64(rgroup) - int64(codestart)) / 1 & int64(255))
goto __73
__73:
rcode = find_recurse(tls, rcode+uintptr(1)+uintptr(DLINK_SIZE), utf)
goto __72
goto __74
__74:
;
__71:
;
// In rare debugging situations we sometimes need to look at the compiled code
// at this stage.
// Unless disabled, check whether any single character iterators can be
// auto-possessified. The function overwrites the appropriate opcode values, so
// the type of the pointer must be cast. NOTE: the intermediate variable "temp" is
// used in this code because at least one compiler gives a warning about loss of
// "const" attribute if the cast (PCRE2_UCHAR *)codestart is used directly in the
// function call.
if !(*(*int32)(unsafe.Pointer(bp + 17768)) == 0 && (*Tpcre2_real_code_8)(unsafe.Pointer(re)).Foverall_options&DPCRE2_NO_AUTO_POSSESS == Tuint32_t(0)) {
goto __86
}
temp = codestart
if !(X_pcre2_auto_possessify_8(tls, temp, bp+17440) != 0) {
goto __87
}
*(*int32)(unsafe.Pointer(bp + 17768 /* errorcode */)) = ERR80
__87:
;
__86:
;
// Failed to compile, or error while post-processing.
if !(*(*int32)(unsafe.Pointer(bp + 17768)) != 0) {
goto __88
}
goto HAD_CB_ERROR
__88:
;
// Successful compile. If the anchored option was not passed, set it if
// we can determine that the pattern is anchored by virtue of ^ characters or \A
// or anything else, such as starting with non-atomic .* when DOTALL is set and
// there are no occurrences of *PRUNE or *SKIP (though there is an option to
// disable this case).
if !((*Tpcre2_real_code_8)(unsafe.Pointer(re)).Foverall_options&DPCRE2_ANCHORED == Tuint32_t(0) && is_anchored(tls, codestart, uint32(0), bp+17440, 0, DFALSE) != 0) {
goto __89
}
*(*Tuint32_t)(unsafe.Pointer(re + 88)) |= DPCRE2_ANCHORED
__89:
;
// Set up the first code unit or startline flag, the required code unit, and
// then study the pattern. This code need not be obeyed if PCRE2_NO_START_OPTIMIZE
// is set, as the data it would create will not be used. Note that a first code
// unit (but not the startline flag) is useful for anchored patterns because it
// can still give a quick "no match" and also avoid searching for a last code
// unit.
if !((*Tpcre2_real_code_8)(unsafe.Pointer(re)).Foverall_options&DPCRE2_NO_START_OPTIMIZE == Tuint32_t(0)) {
goto __90
}
minminlength = 0 // For minimal minlength from first/required CU
// If we do not have a first code unit, see if there is one that is asserted
// (these are not saved during the compile because they can cause conflicts with
// actual literals that follow).
if !(*(*Tuint32_t)(unsafe.Pointer(bp + 17776)) >= DREQ_NONE) {
goto __91
}
*(*Tuint32_t)(unsafe.Pointer(bp + 17772 /* firstcu */)) = find_firstassertedcu(tls, codestart, bp+17776, uint32(0))
__91:
;
// Save the data for a first code unit. The existence of one means the
// minimum length must be at least 1.
if !(*(*Tuint32_t)(unsafe.Pointer(bp + 17776)) < DREQ_NONE) {
goto __92
}
(*Tpcre2_real_code_8)(unsafe.Pointer(re)).Ffirst_codeunit = *(*Tuint32_t)(unsafe.Pointer(bp + 17772 /* firstcu */))
*(*Tuint32_t)(unsafe.Pointer(re + 96)) |= Tuint32_t(DPCRE2_FIRSTSET)
minminlength++
// Handle caseless first code units.
if !(*(*Tuint32_t)(unsafe.Pointer(bp + 17776))&DREQ_CASELESS != Tuint32_t(0)) {
goto __94
}
if !(*(*Tuint32_t)(unsafe.Pointer(bp + 17772)) < Tuint32_t(128) || !(utf != 0) && !(ucp != 0) && *(*Tuint32_t)(unsafe.Pointer(bp + 17772)) < Tuint32_t(255)) {
goto __95
}
if !(Tuint32_t(*(*Tuint8_t)(unsafe.Pointer((*Tcompile_block_8)(unsafe.Pointer(bp+17440)).Ffcc + uintptr(*(*Tuint32_t)(unsafe.Pointer(bp + 17772)))))) != *(*Tuint32_t)(unsafe.Pointer(bp + 17772))) {
goto __97
}
*(*Tuint32_t)(unsafe.Pointer(re + 96)) |= Tuint32_t(DPCRE2_FIRSTCASELESS)
__97:
;
goto __96
__95:
if !(ucp != 0 && !(utf != 0) && Tuint32_t(int32(*(*Tuint32_t)(unsafe.Pointer(bp + 17772)))+(*Tucd_record)(unsafe.Pointer(uintptr(unsafe.Pointer(&X_pcre2_ucd_records_8))+uintptr(X_pcre2_ucd_stage2_8[int32(X_pcre2_ucd_stage1_8[int32(*(*Tuint32_t)(unsafe.Pointer(bp + 17772)))/DUCD_BLOCK_SIZE])*DUCD_BLOCK_SIZE+int32(*(*Tuint32_t)(unsafe.Pointer(bp + 17772)))%DUCD_BLOCK_SIZE])*12)).Fother_case) != *(*Tuint32_t)(unsafe.Pointer(bp + 17772))) {
goto __98
}
*(*Tuint32_t)(unsafe.Pointer(re + 96)) |= Tuint32_t(DPCRE2_FIRSTCASELESS)
__98:
;
__96:
;
__94:
;
goto __93
__92:
if !((*Tpcre2_real_code_8)(unsafe.Pointer(re)).Foverall_options&DPCRE2_ANCHORED == Tuint32_t(0) && is_startline(tls, codestart, uint32(0), bp+17440, 0, DFALSE) != 0) {
goto __99
}
*(*Tuint32_t)(unsafe.Pointer(re + 96)) |= Tuint32_t(DPCRE2_STARTLINE)
__99:
;
__93:
;
// Handle the "required code unit", if one is set. In the UTF case we can
// increment the minimum minimum length only if we are sure this really is a
// different character and not a non-starting code unit of the first character,
// because the minimum length count is in characters, not code units.
if !(*(*Tuint32_t)(unsafe.Pointer(bp + 17784)) < DREQ_NONE) {
goto __100
}
if !((*Tpcre2_real_code_8)(unsafe.Pointer(re)).Foverall_options&DPCRE2_UTF == Tuint32_t(0) || *(*Tuint32_t)(unsafe.Pointer(bp + 17776)) >= DREQ_NONE || *(*Tuint32_t)(unsafe.Pointer(bp + 17772))&Tuint32_t(0x80) == Tuint32_t(0) || *(*Tuint32_t)(unsafe.Pointer(bp + 17780))&Tuint32_t(0x80) == Tuint32_t(0)) {
goto __101
} /* Req is ASCII */
minminlength++
__101:
;
// In the case of an anchored pattern, set up the value only if it follows
// a variable length item in the pattern.
if !((*Tpcre2_real_code_8)(unsafe.Pointer(re)).Foverall_options&DPCRE2_ANCHORED == Tuint32_t(0) || *(*Tuint32_t)(unsafe.Pointer(bp + 17784))&DREQ_VARY != Tuint32_t(0)) {
goto __102
}
(*Tpcre2_real_code_8)(unsafe.Pointer(re)).Flast_codeunit = *(*Tuint32_t)(unsafe.Pointer(bp + 17780 /* reqcu */))
*(*Tuint32_t)(unsafe.Pointer(re + 96)) |= Tuint32_t(DPCRE2_LASTSET)
// Handle caseless required code units as for first code units (above).
if !(*(*Tuint32_t)(unsafe.Pointer(bp + 17784))&DREQ_CASELESS != Tuint32_t(0)) {
goto __103
}
if !(*(*Tuint32_t)(unsafe.Pointer(bp + 17780)) < Tuint32_t(128) || !(utf != 0) && !(ucp != 0) && *(*Tuint32_t)(unsafe.Pointer(bp + 17780)) < Tuint32_t(255)) {
goto __104
}
if !(Tuint32_t(*(*Tuint8_t)(unsafe.Pointer((*Tcompile_block_8)(unsafe.Pointer(bp+17440)).Ffcc + uintptr(*(*Tuint32_t)(unsafe.Pointer(bp + 17780)))))) != *(*Tuint32_t)(unsafe.Pointer(bp + 17780))) {
goto __106
}
*(*Tuint32_t)(unsafe.Pointer(re + 96)) |= Tuint32_t(DPCRE2_LASTCASELESS)
__106:
;
goto __105
__104:
if !(ucp != 0 && !(utf != 0) && Tuint32_t(int32(*(*Tuint32_t)(unsafe.Pointer(bp + 17780)))+(*Tucd_record)(unsafe.Pointer(uintptr(unsafe.Pointer(&X_pcre2_ucd_records_8))+uintptr(X_pcre2_ucd_stage2_8[int32(X_pcre2_ucd_stage1_8[int32(*(*Tuint32_t)(unsafe.Pointer(bp + 17780)))/DUCD_BLOCK_SIZE])*DUCD_BLOCK_SIZE+int32(*(*Tuint32_t)(unsafe.Pointer(bp + 17780)))%DUCD_BLOCK_SIZE])*12)).Fother_case) != *(*Tuint32_t)(unsafe.Pointer(bp + 17780))) {
goto __107
}
*(*Tuint32_t)(unsafe.Pointer(re + 96)) |= Tuint32_t(DPCRE2_LASTCASELESS)
__107:
;
__105:
;
__103:
;
__102:
;
__100:
;
// Study the compiled pattern to set up information such as a bitmap of
// starting code units and a minimum matching length.
if !(X_pcre2_study_8(tls, re) != 0) {
goto __108
}
*(*int32)(unsafe.Pointer(bp + 17768 /* errorcode */)) = ERR31
goto HAD_CB_ERROR
__108:
;
// If study() set a bitmap of starting code units, it implies a minimum
// length of at least one.
if !((*Tpcre2_real_code_8)(unsafe.Pointer(re)).Fflags&Tuint32_t(DPCRE2_FIRSTMAPSET) != Tuint32_t(0) && minminlength == 0) {
goto __109
}
minminlength = 1
__109:
;
// If the minimum length set (or not set) by study() is less than the minimum
// implied by required code units, override it.
if !(int32((*Tpcre2_real_code_8)(unsafe.Pointer(re)).Fminlength) < minminlength) {
goto __110
}
(*Tpcre2_real_code_8)(unsafe.Pointer(re)).Fminlength = Tuint16_t(minminlength)
__110:
;
__90:
; // End of start-of-match optimizations.
// Control ends up here in all cases. When running under valgrind, make a
// pattern's terminating zero defined again. If memory was obtained for the parsed
// version of the pattern, free it before returning. Also free the list of named
// groups if a larger one had to be obtained, and likewise the group information
// vector.
EXIT:
if !((*Tcompile_block_8)(unsafe.Pointer(bp+17440)).Fparsed_pattern != bp+13344) {
goto __111
}
(*struct {
f func(*libc.TLS, uintptr, uintptr)
})(unsafe.Pointer(&struct{ uintptr }{(*Tpcre2_compile_context_8)(unsafe.Pointer(ccontext)).Fmemctl.Ffree})).f(tls, (*Tcompile_block_8)(unsafe.Pointer(bp+17440 /* &cb */)).Fparsed_pattern, (*Tpcre2_compile_context_8)(unsafe.Pointer(ccontext)).Fmemctl.Fmemory_data)
__111:
;
if !((*Tcompile_block_8)(unsafe.Pointer(bp+17440)).Fnamed_group_list_size > Tuint32_t(DNAMED_GROUP_LIST_SIZE)) {
goto __112
}
(*struct {
f func(*libc.TLS, uintptr, uintptr)
})(unsafe.Pointer(&struct{ uintptr }{(*Tpcre2_compile_context_8)(unsafe.Pointer(ccontext)).Fmemctl.Ffree})).f(tls, (*Tcompile_block_8)(unsafe.Pointer(bp+17440 /* &cb */)).Fnamed_groups, (*Tpcre2_compile_context_8)(unsafe.Pointer(ccontext)).Fmemctl.Fmemory_data)
__112:
;
if !((*Tcompile_block_8)(unsafe.Pointer(bp+17440)).Fgroupinfo != bp+12000) {
goto __113
}
(*struct {
f func(*libc.TLS, uintptr, uintptr)
})(unsafe.Pointer(&struct{ uintptr }{(*Tpcre2_compile_context_8)(unsafe.Pointer(ccontext)).Fmemctl.Ffree})).f(tls, (*Tcompile_block_8)(unsafe.Pointer(bp+17440 /* &cb */)).Fgroupinfo, (*Tpcre2_compile_context_8)(unsafe.Pointer(ccontext)).Fmemctl.Fmemory_data)
__113:
;
return re // Will be NULL after an error
// Errors discovered in parse_regex() set the offset value in the compile
// block. Errors discovered before it is called must compute it from the ptr
// value. After parse_regex() is called, the offset in the compile block is set to
// the end of the pattern, but certain errors in compile_regex() may reset it if
// an offset is available in the parsed pattern.
HAD_CB_ERROR:
ptr = pattern + uintptr((*Tcompile_block_8)(unsafe.Pointer(bp+17440)).Ferroroffset)
HAD_EARLY_ERROR:
*(*Tsize_t)(unsafe.Pointer(erroroffset)) = Tsize_t((int64(ptr) - int64(pattern)) / 1)
HAD_ERROR:
*(*int32)(unsafe.Pointer(errorptr)) = *(*int32)(unsafe.Pointer(bp + 17768 /* errorcode */))
Xpcre2_code_free_8(tls, re)
re = uintptr(0)
goto EXIT
return uintptr(0)
}
// End of pcre2_compile.c
// ************************************************
//
// Perl-Compatible Regular Expressions *
//
// PCRE is a library of functions to support regular expressions whose syntax
// and semantics are as close as possible to those of the Perl 5 language.
//
// Written by Philip Hazel
// Original API code Copyright (c) 1997-2012 University of Cambridge
// New API code Copyright (c) 2016-2020 University of Cambridge
//
// -----------------------------------------------------------------------------
// Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions are met:
//
// * Redistributions of source code must retain the above copyright notice,
// this list of conditions and the following disclaimer.
//
// * Redistributions in binary form must reproduce the above copyright
// notice, this list of conditions and the following disclaimer in the
// documentation and/or other materials provided with the distribution.
//
// * Neither the name of the University of Cambridge nor the names of its
// contributors may be used to endorse or promote products derived from
// this software without specific prior written permission.
//
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
// POSSIBILITY OF SUCH DAMAGE.
// -----------------------------------------------------------------------------
// src/config.h. Generated from config.h.in by configure.
// src/config.h.in. Generated from configure.ac by autoheader.
// PCRE2 is written in Standard C, but there are a few non-standard things it
// can cope with, allowing it to run on SunOS4 and other "close to standard"
// systems.
//
// In environments that support the GNU autotools, config.h.in is converted into
// config.h by the "configure" script. In environments that use CMake,
// config-cmake.in is converted into config.h. If you are going to build PCRE2 "by
// hand" without using "configure" or CMake, you should copy the distributed
// config.h.generic to config.h, and edit the macro definitions to be the way you
// need them. You must then add -DHAVE_CONFIG_H to all of your compile commands,
// so that config.h is included at the start of every source.
//
// Alternatively, you can avoid editing by using -D on the compiler command line
// to set the macro values. In this case, you do not have to set -DHAVE_CONFIG_H,
// but if you do, default values will be taken from config.h for non-boolean
// macros that are not defined on the command line.
//
// Boolean macros such as HAVE_STDLIB_H and SUPPORT_PCRE2_8 should either be
// defined (conventionally to 1) for TRUE, and not defined at all for FALSE. All
// such macros are listed as a commented #undef in config.h.generic. Macros such
// as MATCH_LIMIT, whose actual value is relevant, have defaults defined, but are
// surrounded by #ifndef/#endif lines so that the value can be overridden by -D.
//
// PCRE2 uses memmove() if HAVE_MEMMOVE is defined; otherwise it uses bcopy() if
// HAVE_BCOPY is defined. If your system has neither bcopy() nor memmove(), make
// sure both macros are undefined; an emulation function will then be used.
// By default, the \R escape sequence matches any Unicode line ending
// character or sequence of characters. If BSR_ANYCRLF is defined (to any
// value), this is changed so that backslash-R matches only CR, LF, or CRLF.
// The build-time default can be overridden by the user of PCRE2 at runtime.
//
// #undef BSR_ANYCRLF
// Define to any value to disable the use of the z and t modifiers in
// formatting settings such as %zu or %td (this is rarely needed).
// #undef DISABLE_PERCENT_ZT
// If you are compiling for a system that uses EBCDIC instead of ASCII
// character codes, define this macro to any value. When EBCDIC is set, PCRE2
// assumes that all input strings are in EBCDIC. If you do not define this
// macro, PCRE2 will assume input strings are ASCII or UTF-8/16/32 Unicode. It
// is not possible to build a version of PCRE2 that supports both EBCDIC and
// UTF-8/16/32.
// #undef EBCDIC
// In an EBCDIC environment, define this macro to any value to arrange for the
// NL character to be 0x25 instead of the default 0x15. NL plays the role that
// LF does in an ASCII/Unicode environment.
// #undef EBCDIC_NL25
// Define this if your compiler supports __attribute__((uninitialized))
// #undef HAVE_ATTRIBUTE_UNINITIALIZED
// Define to 1 if you have the `bcopy' function.
// Define to 1 if you have the <bzlib.h> header file.
// Define to 1 if you have the <dirent.h> header file.
// Define to 1 if you have the <dlfcn.h> header file.
// Define to 1 if you have the <editline/readline.h> header file.
// #undef HAVE_EDITLINE_READLINE_H
// Define to 1 if you have the <edit/readline/readline.h> header file.
// #undef HAVE_EDIT_READLINE_READLINE_H
// Define to 1 if you have the <inttypes.h> header file.
// Define to 1 if you have the <limits.h> header file.
// Define to 1 if you have the `memfd_create' function.
// Define to 1 if you have the `memmove' function.
// Define to 1 if you have the <minix/config.h> header file.
// #undef HAVE_MINIX_CONFIG_H
// Define to 1 if you have the `mkostemp' function.
// Define if you have POSIX threads libraries and header files.
// #undef HAVE_PTHREAD
// Have PTHREAD_PRIO_INHERIT.
// #undef HAVE_PTHREAD_PRIO_INHERIT
// Define to 1 if you have the <readline.h> header file.
// #undef HAVE_READLINE_H
// Define to 1 if you have the <readline/history.h> header file.
// #undef HAVE_READLINE_HISTORY_H
// Define to 1 if you have the <readline/readline.h> header file.
// #undef HAVE_READLINE_READLINE_H
// Define to 1 if you have the `realpath' function.
// Define to 1 if you have the `secure_getenv' function.
// Define to 1 if you have the <stdint.h> header file.
// Define to 1 if you have the <stdio.h> header file.
// Define to 1 if you have the <stdlib.h> header file.
// Define to 1 if you have the `strerror' function.
// Define to 1 if you have the <strings.h> header file.
// Define to 1 if you have the <string.h> header file.
// Define to 1 if you have the <sys/stat.h> header file.
// Define to 1 if you have the <sys/types.h> header file.
// Define to 1 if you have the <sys/wait.h> header file.
// Define to 1 if you have the <unistd.h> header file.
// Define to 1 if the compiler supports simple visibility declarations.
// Define to 1 if you have the <wchar.h> header file.
// Define to 1 if you have the <windows.h> header file.
// #undef HAVE_WINDOWS_H
// Define to 1 if you have the <zlib.h> header file.
// This limits the amount of memory that may be used while matching a pattern.
// It applies to both pcre2_match() and pcre2_dfa_match(). It does not apply
// to JIT matching. The value is in kibibytes (units of 1024 bytes).
// The value of LINK_SIZE determines the number of bytes used to store links
// as offsets within the compiled regex. The default is 2, which allows for
// compiled patterns up to 65535 code units long. This covers the vast
// majority of cases. However, PCRE2 can also be compiled to use 3 or 4 bytes
// instead. This allows for longer patterns in extreme cases.
// Define to the sub-directory where libtool stores uninstalled libraries.
// The value of MATCH_LIMIT determines the default number of times the
// pcre2_match() function can record a backtrack position during a single
// matching attempt. The value is also used to limit a loop counter in
// pcre2_dfa_match(). There is a runtime interface for setting a different
// limit. The limit exists in order to catch runaway regular expressions that
// take for ever to determine that they do not match. The default is set very
// large so that it does not accidentally catch legitimate cases.
// The above limit applies to all backtracks, whether or not they are nested.
// In some environments it is desirable to limit the nesting of backtracking
// (that is, the depth of tree that is searched) more strictly, in order to
// restrict the maximum amount of heap memory that is used. The value of
// MATCH_LIMIT_DEPTH provides this facility. To have any useful effect, it
// must be less than the value of MATCH_LIMIT. The default is to use the same
// value as MATCH_LIMIT. There is a runtime method for setting a different
// limit. In the case of pcre2_dfa_match(), this limit controls the depth of
// the internal nested function calls that are used for pattern recursions,
// lookarounds, and atomic groups.
// This limit is parameterized just in case anybody ever wants to change it.
// Care must be taken if it is increased, because it guards against integer
// overflow caused by enormously large patterns.
// This limit is parameterized just in case anybody ever wants to change it.
// Care must be taken if it is increased, because it guards against integer
// overflow caused by enormously large patterns.
// Defining NEVER_BACKSLASH_C locks out the use of \C in all patterns.
// #undef NEVER_BACKSLASH_C
// The value of NEWLINE_DEFAULT determines the default newline character
// sequence. PCRE2 client programs can override this by selecting other values
// at run time. The valid values are 1 (CR), 2 (LF), 3 (CRLF), 4 (ANY), 5
// (ANYCRLF), and 6 (NUL).
// Name of package
// Define to the address where bug reports for this package should be sent.
// Define to the full name of this package.
// Define to the full name and version of this package.
// Define to the one symbol short name of this package.
// Define to the home page for this package.
// Define to the version of this package.
// The value of PARENS_NEST_LIMIT specifies the maximum depth of nested
// parentheses (of any kind) in a pattern. This limits the amount of system
// stack that is used while compiling a pattern.
// The value of PCRE2GREP_BUFSIZE is the starting size of the buffer used by
// pcre2grep to hold parts of the file it is searching. The buffer will be
// expanded up to PCRE2GREP_MAX_BUFSIZE if necessary, for files containing
// very long lines. The actual amount of memory used by pcre2grep is three
// times this number, because it allows for the buffering of "before" and
// "after" lines.
// The value of PCRE2GREP_MAX_BUFSIZE specifies the maximum size of the buffer
// used by pcre2grep to hold parts of the file it is searching. The actual
// amount of memory used by pcre2grep is three times this number, because it
// allows for the buffering of "before" and "after" lines.
// to make a symbol visible
// to make a symbol visible
// Define to any value to include debugging code.
// #undef PCRE2_DEBUG
// to make a symbol visible
// If you are compiling for a system other than a Unix-like system or
// Win32, and it needs some magic to be inserted before the definition
// of a function that is exported by the library, define this macro to
// contain the relevant magic. If you do not define this macro, a suitable
// __declspec value is used for Windows systems; in other environments
// "extern" is used for a C compiler and "extern C" for a C++ compiler.
// This macro apears at the start of every exported function that is part
// of the external API. It does not appear on functions that are "external"
// in the C sense, but which are internal to the library.
// Define to any value if linking statically (TODO: make nice with Libtool)
// #undef PCRE2_STATIC
// Define to necessary symbol if this constant uses a non-standard name on
// your system.
// #undef PTHREAD_CREATE_JOINABLE
// Define to any non-zero number to enable support for SELinux compatible
// executable memory allocator in JIT. Note that this will have no effect
// unless SUPPORT_JIT is also defined.
// #undef SLJIT_PROT_EXECUTABLE_ALLOCATOR
// Define to 1 if all of the C90 standard headers exist (not just the ones
// required in a freestanding environment). This macro is provided for
// backward compatibility; new code need not use it.
// Define to any value to enable support for Just-In-Time compiling.
// #undef SUPPORT_JIT
// Define to any value to allow pcre2grep to be linked with libbz2, so that it
// is able to handle .bz2 files.
// #undef SUPPORT_LIBBZ2
// Define to any value to allow pcre2test to be linked with libedit.
// #undef SUPPORT_LIBEDIT
// Define to any value to allow pcre2test to be linked with libreadline.
// #undef SUPPORT_LIBREADLINE
// Define to any value to allow pcre2grep to be linked with libz, so that it
// is able to handle .gz files.
// #undef SUPPORT_LIBZ
// Define to any value to enable callout script support in pcre2grep.
// Define to any value to enable fork support in pcre2grep callout scripts.
// This will have no effect unless SUPPORT_PCRE2GREP_CALLOUT is also defined.
//
// Define to any value to enable JIT support in pcre2grep. Note that this will
// have no effect unless SUPPORT_JIT is also defined.
// #undef SUPPORT_PCRE2GREP_JIT
// Define to any value to enable the 16 bit PCRE2 library.
// #undef SUPPORT_PCRE2_16
// Define to any value to enable the 32 bit PCRE2 library.
// #undef SUPPORT_PCRE2_32
// Define to any value to enable the 8 bit PCRE2 library.
// Define to any value to enable support for Unicode and UTF encoding. This
// will work even in an EBCDIC environment, but it is incompatible with the
// EBCDIC macro. That is, PCRE2 can support *either* EBCDIC code *or*
// ASCII/Unicode, but not both at once.
// Define to any value for valgrind support to find invalid memory reads.
// #undef SUPPORT_VALGRIND
// Enable extensions on AIX 3, Interix.
// Enable general extensions on macOS.
// Enable general extensions on Solaris.
// Enable GNU extensions on systems that have them.
// Enable X/Open compliant socket functions that do not require linking
// with -lxnet on HP-UX 11.11.
// Identify the host operating system as Minix.
// This macro does not affect the system headers' behavior.
// A future release of Autoconf may stop defining this macro.
// # undef _MINIX
// Enable general extensions on NetBSD.
// Enable NetBSD compatibility extensions on Minix.
// Enable OpenBSD compatibility extensions on NetBSD.
// Oddly enough, this does nothing on OpenBSD.
// Define to 1 if needed for POSIX-compatible behavior.
// # undef _POSIX_SOURCE
// Define to 2 if needed for POSIX-compatible behavior.
// # undef _POSIX_1_SOURCE
// Enable POSIX-compatible threading on Solaris.
// Enable extensions specified by ISO/IEC TS 18661-5:2014.
// Enable extensions specified by ISO/IEC TS 18661-1:2014.
// Enable extensions specified by ISO/IEC TS 18661-2:2015.
// Enable extensions specified by ISO/IEC TS 18661-4:2015.
// Enable extensions specified by ISO/IEC TS 18661-3:2015.
// Enable extensions specified by ISO/IEC TR 24731-2:2010.
// Enable extensions specified by ISO/IEC 24747:2009.
// Enable extensions on HP NonStop.
// Enable X/Open extensions. Define to 500 only if necessary
// to make mbstate_t available.
// # undef _XOPEN_SOURCE
// Version number of package
// Define to empty if `const' does not conform to ANSI C.
// #undef const
// Define to the type of a signed integer type of width exactly 64 bits if
// such a type exists and the standard includes do not define it.
// #undef int64_t
// Define to `unsigned int' if <sys/types.h> does not define.
// #undef size_t
// Save the configured link size, which is in bytes. In 16-bit and 32-bit modes
// its value gets changed by pcre2_intmodedep.h (included by pcre2_internal.h) to
// be in code units.
var configured_link_size int32 = DLINK_SIZE /* pcre2_config.c:49:12 */
// This function is needed only when memmove() is not available.
// End of pcre2_internal.h
// These macros are the standard way of turning unquoted text into C strings.
// They allow macros like PCRE2_MAJOR to be defined without quotes, which is
// convenient for user programs that want to test their values.
// ************************************************
//
// Return info about what features are configured *
//
// If where is NULL, the length of memory required is returned.
//
// Arguments:
// what what information is required
// where where to put the information
//
// Returns: 0 if a numerical value is returned
// >= 0 if a string value
// PCRE2_ERROR_BADOPTION if "where" not recognized
// or JIT target requested when JIT not enabled
func Xpcre2_config_8(tls *libc.TLS, what Tuint32_t, where uintptr) int32 { /* pcre2_config.c:78:1: */
if where == uintptr(0) {
switch what {
default:
return -34
fallthrough
case Tuint32_t(DPCRE2_CONFIG_BSR):
fallthrough
case Tuint32_t(DPCRE2_CONFIG_COMPILED_WIDTHS):
fallthrough
case Tuint32_t(DPCRE2_CONFIG_DEPTHLIMIT):
fallthrough
case Tuint32_t(DPCRE2_CONFIG_HEAPLIMIT):
fallthrough
case Tuint32_t(DPCRE2_CONFIG_JIT):
fallthrough
case Tuint32_t(DPCRE2_CONFIG_LINKSIZE):
fallthrough
case Tuint32_t(DPCRE2_CONFIG_MATCHLIMIT):
fallthrough
case Tuint32_t(DPCRE2_CONFIG_NEVER_BACKSLASH_C):
fallthrough
case Tuint32_t(DPCRE2_CONFIG_NEWLINE):
fallthrough
case Tuint32_t(DPCRE2_CONFIG_PARENSLIMIT):
fallthrough
case Tuint32_t(DPCRE2_CONFIG_STACKRECURSE):
fallthrough // Obsolete
case Tuint32_t(DPCRE2_CONFIG_TABLES_LENGTH):
fallthrough
case Tuint32_t(DPCRE2_CONFIG_UNICODE):
return int32(unsafe.Sizeof(Tuint32_t(0)))
fallthrough
// These are handled below
case Tuint32_t(DPCRE2_CONFIG_JITTARGET):
fallthrough
case Tuint32_t(DPCRE2_CONFIG_UNICODE_VERSION):
fallthrough
case Tuint32_t(DPCRE2_CONFIG_VERSION):
break
}
}
switch what {
default:
return -34
case Tuint32_t(DPCRE2_CONFIG_BSR):
*(*Tuint32_t)(unsafe.Pointer(where)) = Tuint32_t(DPCRE2_BSR_UNICODE)
break
case Tuint32_t(DPCRE2_CONFIG_COMPILED_WIDTHS):
*(*Tuint32_t)(unsafe.Pointer(where)) = Tuint32_t(0 +
1)
break
case Tuint32_t(DPCRE2_CONFIG_DEPTHLIMIT):
*(*Tuint32_t)(unsafe.Pointer(where)) = Tuint32_t(DMATCH_LIMIT)
break
case Tuint32_t(DPCRE2_CONFIG_HEAPLIMIT):
*(*Tuint32_t)(unsafe.Pointer(where)) = Tuint32_t(DHEAP_LIMIT)
break
case Tuint32_t(DPCRE2_CONFIG_JIT):
*(*Tuint32_t)(unsafe.Pointer(where)) = Tuint32_t(0)
break
case Tuint32_t(DPCRE2_CONFIG_JITTARGET):
return -34
case Tuint32_t(DPCRE2_CONFIG_LINKSIZE):
*(*Tuint32_t)(unsafe.Pointer(where)) = Tuint32_t(configured_link_size)
break
case Tuint32_t(DPCRE2_CONFIG_MATCHLIMIT):
*(*Tuint32_t)(unsafe.Pointer(where)) = Tuint32_t(DMATCH_LIMIT)
break
case Tuint32_t(DPCRE2_CONFIG_NEWLINE):
*(*Tuint32_t)(unsafe.Pointer(where)) = Tuint32_t(DNEWLINE_DEFAULT)
break
case Tuint32_t(DPCRE2_CONFIG_NEVER_BACKSLASH_C):
*(*Tuint32_t)(unsafe.Pointer(where)) = Tuint32_t(0)
break
case Tuint32_t(DPCRE2_CONFIG_PARENSLIMIT):
*(*Tuint32_t)(unsafe.Pointer(where)) = Tuint32_t(DPARENS_NEST_LIMIT)
break
// This is now obsolete. The stack is no longer used via recursion for
// handling backtracking in pcre2_match().
case Tuint32_t(DPCRE2_CONFIG_STACKRECURSE):
*(*Tuint32_t)(unsafe.Pointer(where)) = Tuint32_t(0)
break
case Tuint32_t(DPCRE2_CONFIG_TABLES_LENGTH):
*(*Tuint32_t)(unsafe.Pointer(where)) = Tuint32_t(Dcbits_offset + Dcbit_length + 256)
break
case Tuint32_t(DPCRE2_CONFIG_UNICODE_VERSION):
{
var v uintptr = X_pcre2_unicode_version_8
return int32(uint64(1) + func() uint64 {
if where == uintptr(0) {
return libc.Xstrlen(tls, v)
}
return X_pcre2_strcpy_c8_8(tls, where, v)
}())
}
break
case Tuint32_t(DPCRE2_CONFIG_UNICODE):
*(*Tuint32_t)(unsafe.Pointer(where)) = Tuint32_t(1)
break
// The hackery in setting "v" below is to cope with the case when
// PCRE2_PRERELEASE is set to an empty string (which it is for real releases).
// If the second alternative is used in this case, it does not leave a space
// before the date. On the other hand, if all four macros are put into a single
// XSTRING when PCRE2_PRERELEASE is not empty, an unwanted space is inserted.
// There are problems using an "obvious" approach like this:
//
// XSTRING(PCRE2_MAJOR) "." XSTRING(PCRE_MINOR)
// XSTRING(PCRE2_PRERELEASE) " " XSTRING(PCRE_DATE)
//
// because, when PCRE2_PRERELEASE is empty, this leads to an attempted expansion
// of STRING(). The C standard states: "If (before argument substitution) any
// argument consists of no preprocessing tokens, the behavior is undefined." It
// turns out the gcc treats this case as a single empty string - which is what
// we really want - but Visual C grumbles about the lack of an argument for the
// macro. Unfortunately, both are within their rights. As there seems to be no
// way to test for a macro's value being empty at compile time, we have to
// resort to a runtime test.
case Tuint32_t(DPCRE2_CONFIG_VERSION):
{
var v uintptr
if int32(*(*int8)(unsafe.Pointer(ts + 630 + 1))) == 0 {
v = ts + 632 /* "10.40 2022-04-14" */
} else {
v = ts + 649 /* "10.402022-04-14" */
}
return int32(uint64(1) + func() uint64 {
if where == uintptr(0) {
return libc.Xstrlen(tls, v)
}
return X_pcre2_strcpy_c8_8(tls, where, v)
}())
}
}
return 0
}
// End of pcre2_config.c
// This function is needed only when memmove() is not available.
// End of pcre2_internal.h
// ************************************************
//
// Default malloc/free functions *
//
// Ignore the "user data" argument in each case.
func default_malloc(tls *libc.TLS, size Tsize_t, data uintptr) uintptr { /* pcre2_context.c:56:13: */
_ = data
return libc.Xmalloc(tls, size)
}
func default_free(tls *libc.TLS, block uintptr, data uintptr) { /* pcre2_context.c:63:13: */
_ = data
libc.Xfree(tls, block)
}
// ************************************************
//
// Get a block and save memory control *
//
// This internal function is called to get a block of memory in which the
// memory control data is to be stored at the start for future use.
//
// Arguments:
// size amount of memory required
// memctl pointer to a memctl block or NULL
//
// Returns: pointer to memory or NULL on failure
func X_pcre2_memctl_malloc_8(tls *libc.TLS, size Tsize_t, memctl uintptr) uintptr { /* pcre2_context.c:85:13: */
var newmemctl uintptr
var yield uintptr
if memctl == uintptr(0) {
yield = libc.Xmalloc(tls, size)
} else {
yield = (*struct {
f func(*libc.TLS, Tsize_t, uintptr) uintptr
})(unsafe.Pointer(&struct{ uintptr }{(*Tpcre2_memctl)(unsafe.Pointer(memctl)).Fmalloc})).f(tls, size, (*Tpcre2_memctl)(unsafe.Pointer(memctl)).Fmemory_data)
}
if yield == uintptr(0) {
return uintptr(0)
}
newmemctl = yield
if memctl == uintptr(0) {
(*Tpcre2_memctl)(unsafe.Pointer(newmemctl)).Fmalloc = *(*uintptr)(unsafe.Pointer(&struct {
f func(*libc.TLS, Tsize_t, uintptr) uintptr
}{default_malloc}))
(*Tpcre2_memctl)(unsafe.Pointer(newmemctl)).Ffree = *(*uintptr)(unsafe.Pointer(&struct {
f func(*libc.TLS, uintptr, uintptr)
}{default_free}))
(*Tpcre2_memctl)(unsafe.Pointer(newmemctl)).Fmemory_data = uintptr(0)
} else {
*(*Tpcre2_memctl)(unsafe.Pointer(newmemctl)) = *(*Tpcre2_memctl)(unsafe.Pointer(memctl))
}
return yield
}
// ************************************************
//
// Create and initialize contexts *
//
// Initializing for compile and match contexts is done in separate, private
// functions so that these can be called from functions such as pcre2_compile()
// when an external context is not supplied. The initializing functions have an
// option to set up default memory management.
func Xpcre2_general_context_create_8(tls *libc.TLS, private_malloc uintptr, private_free uintptr, memory_data uintptr) uintptr { /* pcre2_context.c:114:38: */
var gcontext uintptr
if private_malloc == uintptr(0) {
private_malloc = *(*uintptr)(unsafe.Pointer(&struct {
f func(*libc.TLS, Tsize_t, uintptr) uintptr
}{default_malloc}))
}
if private_free == uintptr(0) {
private_free = *(*uintptr)(unsafe.Pointer(&struct {
f func(*libc.TLS, uintptr, uintptr)
}{default_free}))
}
gcontext = (*struct {
f func(*libc.TLS, Tsize_t, uintptr) uintptr
})(unsafe.Pointer(&struct{ uintptr }{private_malloc})).f(tls, uint64(unsafe.Sizeof(Tpcre2_real_general_context_8{})), memory_data)
if gcontext == uintptr(0) {
return uintptr(0)
}
(*Tpcre2_general_context_8)(unsafe.Pointer(gcontext)).Fmemctl.Fmalloc = private_malloc
(*Tpcre2_general_context_8)(unsafe.Pointer(gcontext)).Fmemctl.Ffree = private_free
(*Tpcre2_general_context_8)(unsafe.Pointer(gcontext)).Fmemctl.Fmemory_data = memory_data
return gcontext
}
// A default compile context is set up to save having to initialize at run time
// when no context is supplied to the compile function.
var X_pcre2_default_compile_context_8 = Tpcre2_compile_context_8{
Fmemctl: Tpcre2_memctl{Fmalloc: 0, Ffree: 0}, // Stack guard data
Ftables: 0, // Character tables
Fmax_pattern_length: libc.CplUint64(uint64(0)),
Fbsr_convention: Tuint16_t(DPCRE2_BSR_UNICODE), // Backslash R default
Fnewline_convention: Tuint16_t(DNEWLINE_DEFAULT), // Newline convention
Fparens_nest_limit: Tuint32_t(DPARENS_NEST_LIMIT)} /* pcre2_context.c:133:29 */
// Extra options
// The create function copies the default into the new memory, but must
// override the default memory handling functions if a gcontext was provided.
func Xpcre2_compile_context_create_8(tls *libc.TLS, gcontext uintptr) uintptr { /* pcre2_context.c:147:38: */
var ccontext uintptr = X_pcre2_memctl_malloc_8(tls,
uint64(unsafe.Sizeof(Tpcre2_real_compile_context_8{})), gcontext)
if ccontext == uintptr(0) {
return uintptr(0)
}
*(*Tpcre2_compile_context_8)(unsafe.Pointer(ccontext)) = X_pcre2_default_compile_context_8
if gcontext != uintptr(0) {
*(*Tpcre2_memctl)(unsafe.Pointer(ccontext)) = *(*Tpcre2_memctl)(unsafe.Pointer(gcontext))
}
return ccontext
}
// A default match context is set up to save having to initialize at run time
// when no context is supplied to a match function.
var X_pcre2_default_match_context_8 = Tpcre2_match_context_8{
Fmemctl: Tpcre2_memctl{Fmalloc: 0, Ffree: 0}, // Substitute callout data
Foffset_limit: libc.CplUint64(uint64(0)),
Fheap_limit: Tuint32_t(DHEAP_LIMIT),
Fmatch_limit: Tuint32_t(DMATCH_LIMIT),
Fdepth_limit: Tuint32_t(DMATCH_LIMIT)} /* pcre2_context.c:163:27 */
// The create function copies the default into the new memory, but must
// override the default memory handling functions if a gcontext was provided.
func Xpcre2_match_context_create_8(tls *libc.TLS, gcontext uintptr) uintptr { /* pcre2_context.c:181:36: */
var mcontext uintptr = X_pcre2_memctl_malloc_8(tls,
uint64(unsafe.Sizeof(Tpcre2_real_match_context_8{})), gcontext)
if mcontext == uintptr(0) {
return uintptr(0)
}
*(*Tpcre2_match_context_8)(unsafe.Pointer(mcontext)) = X_pcre2_default_match_context_8
if gcontext != uintptr(0) {
*(*Tpcre2_memctl)(unsafe.Pointer(mcontext)) = *(*Tpcre2_memctl)(unsafe.Pointer(gcontext))
}
return mcontext
}
// A default convert context is set up to save having to initialize at run time
// when no context is supplied to the convert function.
var X_pcre2_default_convert_context_8 = Tpcre2_convert_context_8{
Fmemctl: Tpcre2_memctl{Fmalloc: 0, Ffree: 0}, // Default memory handling
Fglob_separator: Tuint32_t('\057'), // Default path separator
Fglob_escape: Tuint32_t('\134'), // Default escape character
} /* pcre2_context.c:197:29 */
// The create function copies the default into the new memory, but must
// override the default memory handling functions if a gcontext was provided.
func Xpcre2_convert_context_create_8(tls *libc.TLS, gcontext uintptr) uintptr { /* pcre2_context.c:211:38: */
var ccontext uintptr = X_pcre2_memctl_malloc_8(tls,
uint64(unsafe.Sizeof(Tpcre2_real_convert_context_8{})), gcontext)
if ccontext == uintptr(0) {
return uintptr(0)
}
*(*Tpcre2_convert_context_8)(unsafe.Pointer(ccontext)) = X_pcre2_default_convert_context_8
if gcontext != uintptr(0) {
*(*Tpcre2_memctl)(unsafe.Pointer(ccontext)) = *(*Tpcre2_memctl)(unsafe.Pointer(gcontext))
}
return ccontext
}
// ************************************************
//
// Context copy functions *
//
func Xpcre2_general_context_copy_8(tls *libc.TLS, gcontext uintptr) uintptr { /* pcre2_context.c:228:38: */
var new uintptr = (*struct {
f func(*libc.TLS, Tsize_t, uintptr) uintptr
})(unsafe.Pointer(&struct{ uintptr }{(*Tpcre2_general_context_8)(unsafe.Pointer(gcontext)).Fmemctl.Fmalloc})).f(tls, uint64(unsafe.Sizeof(Tpcre2_real_general_context_8{})),
(*Tpcre2_general_context_8)(unsafe.Pointer(gcontext)).Fmemctl.Fmemory_data)
if new == uintptr(0) {
return uintptr(0)
}
libc.Xmemcpy(tls, new, gcontext, uint64(unsafe.Sizeof(Tpcre2_real_general_context_8{})))
return new
}
func Xpcre2_compile_context_copy_8(tls *libc.TLS, ccontext uintptr) uintptr { /* pcre2_context.c:240:38: */
var new uintptr = (*struct {
f func(*libc.TLS, Tsize_t, uintptr) uintptr
})(unsafe.Pointer(&struct{ uintptr }{(*Tpcre2_compile_context_8)(unsafe.Pointer(ccontext)).Fmemctl.Fmalloc})).f(tls, uint64(unsafe.Sizeof(Tpcre2_real_compile_context_8{})),
(*Tpcre2_compile_context_8)(unsafe.Pointer(ccontext)).Fmemctl.Fmemory_data)
if new == uintptr(0) {
return uintptr(0)
}
libc.Xmemcpy(tls, new, ccontext, uint64(unsafe.Sizeof(Tpcre2_real_compile_context_8{})))
return new
}
func Xpcre2_match_context_copy_8(tls *libc.TLS, mcontext uintptr) uintptr { /* pcre2_context.c:252:36: */
var new uintptr = (*struct {
f func(*libc.TLS, Tsize_t, uintptr) uintptr
})(unsafe.Pointer(&struct{ uintptr }{(*Tpcre2_match_context_8)(unsafe.Pointer(mcontext)).Fmemctl.Fmalloc})).f(tls, uint64(unsafe.Sizeof(Tpcre2_real_match_context_8{})),
(*Tpcre2_match_context_8)(unsafe.Pointer(mcontext)).Fmemctl.Fmemory_data)
if new == uintptr(0) {
return uintptr(0)
}
libc.Xmemcpy(tls, new, mcontext, uint64(unsafe.Sizeof(Tpcre2_real_match_context_8{})))
return new
}
func Xpcre2_convert_context_copy_8(tls *libc.TLS, ccontext uintptr) uintptr { /* pcre2_context.c:265:38: */
var new uintptr = (*struct {
f func(*libc.TLS, Tsize_t, uintptr) uintptr
})(unsafe.Pointer(&struct{ uintptr }{(*Tpcre2_convert_context_8)(unsafe.Pointer(ccontext)).Fmemctl.Fmalloc})).f(tls, uint64(unsafe.Sizeof(Tpcre2_real_convert_context_8{})),
(*Tpcre2_convert_context_8)(unsafe.Pointer(ccontext)).Fmemctl.Fmemory_data)
if new == uintptr(0) {
return uintptr(0)
}
libc.Xmemcpy(tls, new, ccontext, uint64(unsafe.Sizeof(Tpcre2_real_convert_context_8{})))
return new
}
// ************************************************
//
// Context free functions *
//
func Xpcre2_general_context_free_8(tls *libc.TLS, gcontext uintptr) { /* pcre2_context.c:282:1: */
if gcontext != uintptr(0) {
(*struct {
f func(*libc.TLS, uintptr, uintptr)
})(unsafe.Pointer(&struct{ uintptr }{(*Tpcre2_general_context_8)(unsafe.Pointer(gcontext)).Fmemctl.Ffree})).f(tls, gcontext, (*Tpcre2_general_context_8)(unsafe.Pointer(gcontext)).Fmemctl.Fmemory_data)
}
}
func Xpcre2_compile_context_free_8(tls *libc.TLS, ccontext uintptr) { /* pcre2_context.c:290:1: */
if ccontext != uintptr(0) {
(*struct {
f func(*libc.TLS, uintptr, uintptr)
})(unsafe.Pointer(&struct{ uintptr }{(*Tpcre2_compile_context_8)(unsafe.Pointer(ccontext)).Fmemctl.Ffree})).f(tls, ccontext, (*Tpcre2_compile_context_8)(unsafe.Pointer(ccontext)).Fmemctl.Fmemory_data)
}
}
func Xpcre2_match_context_free_8(tls *libc.TLS, mcontext uintptr) { /* pcre2_context.c:298:1: */
if mcontext != uintptr(0) {
(*struct {
f func(*libc.TLS, uintptr, uintptr)
})(unsafe.Pointer(&struct{ uintptr }{(*Tpcre2_match_context_8)(unsafe.Pointer(mcontext)).Fmemctl.Ffree})).f(tls, mcontext, (*Tpcre2_match_context_8)(unsafe.Pointer(mcontext)).Fmemctl.Fmemory_data)
}
}
func Xpcre2_convert_context_free_8(tls *libc.TLS, ccontext uintptr) { /* pcre2_context.c:306:1: */
if ccontext != uintptr(0) {
(*struct {
f func(*libc.TLS, uintptr, uintptr)
})(unsafe.Pointer(&struct{ uintptr }{(*Tpcre2_convert_context_8)(unsafe.Pointer(ccontext)).Fmemctl.Ffree})).f(tls, ccontext, (*Tpcre2_convert_context_8)(unsafe.Pointer(ccontext)).Fmemctl.Fmemory_data)
}
}
// ************************************************
//
// Set values in contexts *
//
// All these functions return 0 for success or PCRE2_ERROR_BADDATA if invalid
// data is given. Only some of the functions are able to test the validity of the
// data.
// ------------ Compile context ------------
func Xpcre2_set_character_tables_8(tls *libc.TLS, ccontext uintptr, tables uintptr) int32 { /* pcre2_context.c:325:1: */
(*Tpcre2_compile_context_8)(unsafe.Pointer(ccontext)).Ftables = tables
return 0
}
func Xpcre2_set_bsr_8(tls *libc.TLS, ccontext uintptr, value Tuint32_t) int32 { /* pcre2_context.c:333:1: */
switch value {
case Tuint32_t(DPCRE2_BSR_ANYCRLF):
fallthrough
case Tuint32_t(DPCRE2_BSR_UNICODE):
(*Tpcre2_compile_context_8)(unsafe.Pointer(ccontext)).Fbsr_convention = Tuint16_t(value)
return 0
default:
return -29
}
return int32(0)
}
func Xpcre2_set_max_pattern_length_8(tls *libc.TLS, ccontext uintptr, length Tsize_t) int32 { /* pcre2_context.c:348:1: */
(*Tpcre2_compile_context_8)(unsafe.Pointer(ccontext)).Fmax_pattern_length = length
return 0
}
func Xpcre2_set_newline_8(tls *libc.TLS, ccontext uintptr, newline Tuint32_t) int32 { /* pcre2_context.c:355:1: */
switch newline {
case Tuint32_t(DPCRE2_NEWLINE_CR):
fallthrough
case Tuint32_t(DPCRE2_NEWLINE_LF):
fallthrough
case Tuint32_t(DPCRE2_NEWLINE_CRLF):
fallthrough
case Tuint32_t(DPCRE2_NEWLINE_ANY):
fallthrough
case Tuint32_t(DPCRE2_NEWLINE_ANYCRLF):
fallthrough
case Tuint32_t(DPCRE2_NEWLINE_NUL):
(*Tpcre2_compile_context_8)(unsafe.Pointer(ccontext)).Fnewline_convention = Tuint16_t(newline)
return 0
default:
return -29
}
return int32(0)
}
func Xpcre2_set_parens_nest_limit_8(tls *libc.TLS, ccontext uintptr, limit Tuint32_t) int32 { /* pcre2_context.c:374:1: */
(*Tpcre2_compile_context_8)(unsafe.Pointer(ccontext)).Fparens_nest_limit = limit
return 0
}
func Xpcre2_set_compile_extra_options_8(tls *libc.TLS, ccontext uintptr, options Tuint32_t) int32 { /* pcre2_context.c:381:1: */
(*Tpcre2_compile_context_8)(unsafe.Pointer(ccontext)).Fextra_options = options
return 0
}
func Xpcre2_set_compile_recursion_guard_8(tls *libc.TLS, ccontext uintptr, guard uintptr, user_data uintptr) int32 { /* pcre2_context.c:388:1: */
(*Tpcre2_compile_context_8)(unsafe.Pointer(ccontext)).Fstack_guard = guard
(*Tpcre2_compile_context_8)(unsafe.Pointer(ccontext)).Fstack_guard_data = user_data
return 0
}
// ------------ Match context ------------
func Xpcre2_set_callout_8(tls *libc.TLS, mcontext uintptr, callout uintptr, callout_data uintptr) int32 { /* pcre2_context.c:400:1: */
(*Tpcre2_match_context_8)(unsafe.Pointer(mcontext)).Fcallout = callout
(*Tpcre2_match_context_8)(unsafe.Pointer(mcontext)).Fcallout_data = callout_data
return 0
}
func Xpcre2_set_substitute_callout_8(tls *libc.TLS, mcontext uintptr, substitute_callout uintptr, substitute_callout_data uintptr) int32 { /* pcre2_context.c:409:1: */
(*Tpcre2_match_context_8)(unsafe.Pointer(mcontext)).Fsubstitute_callout = substitute_callout
(*Tpcre2_match_context_8)(unsafe.Pointer(mcontext)).Fsubstitute_callout_data = substitute_callout_data
return 0
}
func Xpcre2_set_heap_limit_8(tls *libc.TLS, mcontext uintptr, limit Tuint32_t) int32 { /* pcre2_context.c:419:1: */
(*Tpcre2_match_context_8)(unsafe.Pointer(mcontext)).Fheap_limit = limit
return 0
}
func Xpcre2_set_match_limit_8(tls *libc.TLS, mcontext uintptr, limit Tuint32_t) int32 { /* pcre2_context.c:426:1: */
(*Tpcre2_match_context_8)(unsafe.Pointer(mcontext)).Fmatch_limit = limit
return 0
}
func Xpcre2_set_depth_limit_8(tls *libc.TLS, mcontext uintptr, limit Tuint32_t) int32 { /* pcre2_context.c:433:1: */
(*Tpcre2_match_context_8)(unsafe.Pointer(mcontext)).Fdepth_limit = limit
return 0
}
func Xpcre2_set_offset_limit_8(tls *libc.TLS, mcontext uintptr, limit Tsize_t) int32 { /* pcre2_context.c:440:1: */
(*Tpcre2_match_context_8)(unsafe.Pointer(mcontext)).Foffset_limit = limit
return 0
}
// This function became obsolete at release 10.30. It is kept as a synonym for
// backwards compatibility.
func Xpcre2_set_recursion_limit_8(tls *libc.TLS, mcontext uintptr, limit Tuint32_t) int32 { /* pcre2_context.c:450:1: */
return Xpcre2_set_depth_limit_8(tls, mcontext, limit)
}
func Xpcre2_set_recursion_memory_management_8(tls *libc.TLS, mcontext uintptr, mymalloc uintptr, myfree uintptr, mydata uintptr) int32 { /* pcre2_context.c:456:1: */
_ = mcontext
_ = mymalloc
_ = myfree
_ = mydata
return 0
}
// ------------ Convert context ------------
func Xpcre2_set_glob_separator_8(tls *libc.TLS, ccontext uintptr, separator Tuint32_t) int32 { /* pcre2_context.c:470:1: */
if separator != Tuint32_t('\057') && separator != Tuint32_t('\134') && separator != Tuint32_t('\056') {
return -29
}
(*Tpcre2_convert_context_8)(unsafe.Pointer(ccontext)).Fglob_separator = separator
return 0
}
func Xpcre2_set_glob_escape_8(tls *libc.TLS, ccontext uintptr, escape Tuint32_t) int32 { /* pcre2_context.c:479:1: */
if escape > Tuint32_t(255) || escape != Tuint32_t(0) && !(int32(*(*uint16)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(libc.X__ctype_b_loc(tls))) + uintptr(int32(escape))*2)))&int32(_ISpunct) != 0) {
return -29
}
(*Tpcre2_convert_context_8)(unsafe.Pointer(ccontext)).Fglob_escape = escape
return 0
}
// End of pcre2_context.c
// Macro to add a character string to the output buffer, checking for overflow.
// Literals that must be escaped: \ ? * + | . ^ $ { } [ ] ( )
var pcre2_escaped_literals uintptr = ts + 665 /* "\\?*+|.^${}[]()" */ /* pcre2_convert.c:87:19 */
// Recognized escaped metacharacters in POSIX basic patterns.
var posix_meta_escapes uintptr = ts + 680 /* "(){}123456789" */ /* pcre2_convert.c:96:19 */
// ************************************************
//
// Convert a POSIX pattern *
//
// This function handles both basic and extended POSIX patterns.
//
// Arguments:
// pattype the pattern type
// pattern the pattern
// plength length in code units
// utf TRUE if UTF
// use_buffer where to put the output
// use_length length of use_buffer
// bufflenptr where to put the used length
// dummyrun TRUE if a dummy run
// ccontext the convert context
//
// Returns: 0 => success
// !0 => error code
func convert_posix(tls *libc.TLS, pattype Tuint32_t, pattern TPCRE2_SPTR8, plength Tsize_t, utf TBOOL, use_buffer uintptr, use_length Tsize_t, bufflenptr uintptr, dummyrun TBOOL, ccontext uintptr) int32 { /* pcre2_convert.c:125:1: */
var s uintptr
var posix TPCRE2_SPTR8
var p uintptr
var pp uintptr
var endp uintptr // Allow for trailing zero
var convlength Tsize_t
var bracount Tuint32_t
var posix_state Tuint32_t
var lastspecial Tuint32_t
var extended TBOOL
var nextisliteral TBOOL
var c Tuint32_t
var sc Tuint32_t
var clength int32
posix = pattern
p = use_buffer
pp = p
endp = p + uintptr(use_length) - uintptr(1)
convlength = uint64(0)
bracount = Tuint32_t(0)
posix_state = POSIX_START_REGEX
lastspecial = Tuint32_t(0)
extended = libc.Bool32(pattype&DPCRE2_CONVERT_POSIX_EXTENDED != Tuint32_t(0))
nextisliteral = DFALSE
_ = utf // Not used when Unicode not supported
_ = ccontext // Not currently used
// Initialize default for error offset as end of input.
*(*Tsize_t)(unsafe.Pointer(bufflenptr)) = plength
s = ts + 694
__1:
if !(int32(*(*int8)(unsafe.Pointer(s))) != 0) {
goto __3
}
if !(p >= endp) {
goto __4
}
return -48
__4:
;
*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&p, 1))) = TPCRE2_UCHAR8(*(*int8)(unsafe.Pointer(s)))
goto __2
__2:
s++
goto __1
goto __3
__3:
;
// Now scan the input.
__5:
if !(plength > uint64(0)) {
goto __6
}
clength = 1
// Add in the length of the last item, then, if in the dummy run, pull the
// pointer back to the start of the (temporary) buffer and then remember the
// start of the next item.
convlength = convlength + Tsize_t((int64(p)-int64(pp))/1)
if !(dummyrun != 0) {
goto __7
}
p = use_buffer
__7:
;
pp = p
// Pick up the next character
c = Tuint32_t(*(*TPCRE2_UCHAR8)(unsafe.Pointer(posix)))
if !(utf != 0 && c >= 0xc0) {
goto __8
}
if !(c&0x20 == Tuint32_t(0)) {
goto __9
}
c = c&0x1f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(posix + 1)))&0x3f
clength++
goto __10
__9:
if !(c&0x10 == Tuint32_t(0)) {
goto __11
}
c = c&0x0f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(posix + 1)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(posix + 2)))&0x3f
clength = clength + 2
goto __12
__11:
if !(c&0x08 == Tuint32_t(0)) {
goto __13
}
c = c&0x07<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(posix + 1)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(posix + 2)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(posix + 3)))&0x3f
clength = clength + 3
goto __14
__13:
if !(c&0x04 == Tuint32_t(0)) {
goto __15
}
c = c&0x03<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(posix + 1)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(posix + 2)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(posix + 3)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(posix + 4)))&0x3f
clength = clength + 4
goto __16
__15:
c = c&0x01<<30 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(posix + 1)))&0x3f<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(posix + 2)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(posix + 3)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(posix + 4)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(posix + 5)))&0x3f
clength = clength + 5
__16:
;
__14:
;
__12:
;
__10:
;
__8:
;
posix += TPCRE2_SPTR8(clength)
plength = plength - Tsize_t(clength)
if nextisliteral != 0 {
sc = uint32(0)
} else {
sc = c
}
nextisliteral = DFALSE
// Handle a character within a class.
if !(posix_state >= POSIX_CLASS_NOT_STARTED) {
goto __17
}
if !(c == Tuint32_t('\135')) {
goto __19
}
s = ts + 701
__21:
if !(int32(*(*int8)(unsafe.Pointer(s))) != 0) {
goto __23
}
if !(p >= endp) {
goto __24
}
return -48
__24:
;
*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&p, 1))) = TPCRE2_UCHAR8(*(*int8)(unsafe.Pointer(s)))
goto __22
__22:
s++
goto __21
goto __23
__23:
;
posix_state = POSIX_NOT_BRACKET
goto __20
__19:
switch posix_state {
case POSIX_CLASS_STARTED:
goto __26
// Fall through
case POSIX_CLASS_NOT_STARTED:
goto __27
case POSIX_CLASS_STARTING:
goto __28
}
goto __25
__26:
if !(c <= Tuint32_t(127) && int32(*(*uint16)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(libc.X__ctype_b_loc(tls))) + uintptr(int32(c))*2)))&int32(_ISlower) != 0) {
goto __29
}
goto __25
__29:
; // Remain in started state
posix_state = POSIX_CLASS_NOT_STARTED
if !(c == Tuint32_t('\072') && plength > uint64(0) && int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(posix))) == '\135') {
goto __30
}
s = ts + 703
__31:
if !(int32(*(*int8)(unsafe.Pointer(s))) != 0) {
goto __33
}
if !(p >= endp) {
goto __34
}
return -48
__34:
;
*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&p, 1))) = TPCRE2_UCHAR8(*(*int8)(unsafe.Pointer(s)))
goto __32
__32:
s++
goto __31
goto __33
__33:
;
plength--
posix++
goto __5 // With next character after :]
__30:
;
// Fall through
__27:
if !(c == Tuint32_t('\133')) {
goto __35
}
posix_state = POSIX_CLASS_STARTING
__35:
;
goto __25
__28:
if !(c == Tuint32_t('\072')) {
goto __36
}
posix_state = POSIX_CLASS_STARTED
__36:
;
goto __25
__25:
;
if !(c == Tuint32_t('\134')) {
goto __37
}
s = ts + 706
__38:
if !(int32(*(*int8)(unsafe.Pointer(s))) != 0) {
goto __40
}
if !(p >= endp) {
goto __41
}
return -48
__41:
;
*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&p, 1))) = TPCRE2_UCHAR8(*(*int8)(unsafe.Pointer(s)))
goto __39
__39:
s++
goto __38
goto __40
__40:
;
__37:
;
if !(p+uintptr(clength) > endp) {
goto __42
}
return -48
__42:
;
libc.Xmemcpy(tls, p, posix-uintptr(clength), uint64(clength*(DPCRE2_CODE_UNIT_WIDTH/8)))
p += uintptr(clength)
__20:
;
goto __18
__17:
switch sc {
case Tuint32_t('\133'):
goto __44
case Tuint32_t('\134'):
goto __45
case Tuint32_t('\051'):
goto __46
case Tuint32_t('\050'):
goto __47
// Fall through
case Tuint32_t('\077'):
goto __48
case Tuint32_t('\053'):
goto __49
case Tuint32_t('\173'):
goto __50
case Tuint32_t('\175'):
goto __51
case Tuint32_t('\174'):
goto __52
// Fall through
case Tuint32_t('\056'):
goto __53
case Tuint32_t('\044'):
goto __54
case Tuint32_t('\052'):
goto __55 // Ignore second and subsequent asterisks
case Tuint32_t('\136'):
goto __56
// Fall through
default:
goto __57
}
goto __43
__44:
s = ts + 708
__58:
if !(int32(*(*int8)(unsafe.Pointer(s))) != 0) {
goto __60
}
if !(p >= endp) {
goto __61
}
return -48
__61:
;
*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&p, 1))) = TPCRE2_UCHAR8(*(*int8)(unsafe.Pointer(s)))
goto __59
__59:
s++
goto __58
goto __60
__60:
;
// Handle start of "normal" character classes
posix_state = POSIX_CLASS_NOT_STARTED
// Handle ^ and ] as first characters
if !(plength > uint64(0)) {
goto __62
}
if !(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(posix))) == '\136') {
goto __63
}
posix++
plength--
s = ts + 710
__64:
if !(int32(*(*int8)(unsafe.Pointer(s))) != 0) {
goto __66
}
if !(p >= endp) {
goto __67
}
return -48
__67:
;
*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&p, 1))) = TPCRE2_UCHAR8(*(*int8)(unsafe.Pointer(s)))
goto __65
__65:
s++
goto __64
goto __66
__66:
;
__63:
;
if !(plength > uint64(0) && int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(posix))) == '\135') {
goto __68
}
posix++
plength--
s = ts + 701
__69:
if !(int32(*(*int8)(unsafe.Pointer(s))) != 0) {
goto __71
}
if !(p >= endp) {
goto __72
}
return -48
__72:
;
*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&p, 1))) = TPCRE2_UCHAR8(*(*int8)(unsafe.Pointer(s)))
goto __70
__70:
s++
goto __69
goto __71
__71:
;
__68:
;
__62:
;
goto __43
__45:
if !(plength == uint64(0)) {
goto __73
}
return DPCRE2_ERROR_END_BACKSLASH
__73:
;
if !(extended != 0) {
goto __74
}
nextisliteral = DTRUE
goto __75
__74:
if !(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(posix))) < 127 && libc.Xstrchr(tls, posix_meta_escapes, int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(posix)))) != uintptr(0)) {
goto __76
}
if !(int32(*(*uint16)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(libc.X__ctype_b_loc(tls))) + uintptr(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(posix))))*2)))&int32(_ISdigit) != 0) {
goto __78
}
s = ts + 706
__79:
if !(int32(*(*int8)(unsafe.Pointer(s))) != 0) {
goto __81
}
if !(p >= endp) {
goto __82
}
return -48
__82:
;
*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&p, 1))) = TPCRE2_UCHAR8(*(*int8)(unsafe.Pointer(s)))
goto __80
__80:
s++
goto __79
goto __81
__81:
;
__78:
;
if !(p+uintptr(1) > endp) {
goto __83
}
return -48
__83:
;
lastspecial = Tuint32_t(libc.AssignPtrUint8(libc.PostIncUintptr(&p, 1), *(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&posix, 1)))))
plength--
goto __77
__76:
nextisliteral = DTRUE
__77:
;
__75:
;
goto __43
__46:
if !(!(extended != 0) || bracount == Tuint32_t(0)) {
goto __84
}
goto ESCAPE_LITERAL
__84:
;
bracount--
goto COPY_SPECIAL
__47:
bracount++
// Fall through
__48:
__49:
__50:
__51:
__52:
if !!(extended != 0) {
goto __85
}
goto ESCAPE_LITERAL
__85:
;
// Fall through
__53:
__54:
posix_state = POSIX_NOT_BRACKET
COPY_SPECIAL:
lastspecial = c
if !(p+uintptr(1) > endp) {
goto __86
}
return -48
__86:
;
*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&p, 1))) = TPCRE2_UCHAR8(c)
goto __43
__55:
if !(lastspecial != Tuint32_t('\052')) {
goto __87
}
if !(!(extended != 0) && (posix_state < POSIX_NOT_BRACKET || lastspecial == Tuint32_t('\050'))) {
goto __88
}
goto ESCAPE_LITERAL
__88:
;
goto COPY_SPECIAL
__87:
;
goto __43 // Ignore second and subsequent asterisks
__56:
if !(extended != 0) {
goto __89
}
goto COPY_SPECIAL
__89:
;
if !(posix_state == POSIX_START_REGEX || lastspecial == Tuint32_t('\050')) {
goto __90
}
posix_state = POSIX_ANCHORED
goto COPY_SPECIAL
__90:
;
// Fall through
__57:
if !(c < Tuint32_t(128) && libc.Xstrchr(tls, pcre2_escaped_literals, int32(c)) != uintptr(0)) {
goto __91
}
ESCAPE_LITERAL:
s = ts + 706
__92:
if !(int32(*(*int8)(unsafe.Pointer(s))) != 0) {
goto __94
}
if !(p >= endp) {
goto __95
}
return -48
__95:
;
*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&p, 1))) = TPCRE2_UCHAR8(*(*int8)(unsafe.Pointer(s)))
goto __93
__93:
s++
goto __92
goto __94
__94:
;
__91:
;
lastspecial = Tuint32_t(0xff) // Indicates nothing special
if !(p+uintptr(clength) > endp) {
goto __96
}
return -48
__96:
;
libc.Xmemcpy(tls, p, posix-uintptr(clength), uint64(clength*(DPCRE2_CODE_UNIT_WIDTH/8)))
p += uintptr(clength)
posix_state = POSIX_NOT_BRACKET
goto __43
__43:
;
__18:
;
goto __5
__6:
;
if !(posix_state >= POSIX_CLASS_NOT_STARTED) {
goto __97
}
return DPCRE2_ERROR_MISSING_SQUARE_BRACKET
__97:
;
convlength = convlength + Tsize_t((int64(p)-int64(pp))/1) // Final segment
*(*Tsize_t)(unsafe.Pointer(bufflenptr)) = convlength
*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&p, 1))) = TPCRE2_UCHAR8(0)
return 0
}
// ************************************************
//
// Convert a glob pattern *
//
// Context for writing the output into a buffer.
type Spcre2_output_context = struct {
Foutput uintptr
Foutput_end TPCRE2_SPTR8
Foutput_size Tsize_t
Fout_str [8]Tuint8_t
} /* pcre2_convert.c:369:9 */
// ************************************************
//
// Convert a glob pattern *
//
// Context for writing the output into a buffer.
type Tpcre2_output_context = Spcre2_output_context /* pcre2_convert.c:374:3 */
// Write a character into the output.
//
// Arguments:
// out output context
// chr the next character
func convert_glob_write(tls *libc.TLS, out uintptr, chr TPCRE2_UCHAR8) { /* pcre2_convert.c:385:1: */
(*Tpcre2_output_context)(unsafe.Pointer(out)).Foutput_size++
if (*Tpcre2_output_context)(unsafe.Pointer(out)).Foutput < (*Tpcre2_output_context)(unsafe.Pointer(out)).Foutput_end {
*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&(*Tpcre2_output_context)(unsafe.Pointer(out)).Foutput, 1))) = chr
}
}
// Write a string into the output.
//
// Arguments:
// out output context
// length length of out->out_str
func convert_glob_write_str(tls *libc.TLS, out uintptr, length Tsize_t) { /* pcre2_convert.c:402:1: */
var out_str uintptr = out + 24 /* &.out_str */
var output uintptr = (*Tpcre2_output_context)(unsafe.Pointer(out)).Foutput
var output_end TPCRE2_SPTR8 = (*Tpcre2_output_context)(unsafe.Pointer(out)).Foutput_end
var output_size Tsize_t = (*Tpcre2_output_context)(unsafe.Pointer(out)).Foutput_size
for __ccgo := true; __ccgo; __ccgo = libc.PreDecUint64(&length, 1) != uint64(0) {
output_size++
if output < output_end {
*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&output, 1))) = *(*Tuint8_t)(unsafe.Pointer(libc.PostIncUintptr(&out_str, 1)))
}
}
(*Tpcre2_output_context)(unsafe.Pointer(out)).Foutput = output
(*Tpcre2_output_context)(unsafe.Pointer(out)).Foutput_size = output_size
}
// Prints the separator into the output.
//
// Arguments:
// out output context
// separator glob separator
// with_escape backslash is needed before separator
func convert_glob_print_separator(tls *libc.TLS, out uintptr, separator TPCRE2_UCHAR8, with_escape TBOOL) { /* pcre2_convert.c:432:1: */
if with_escape != 0 {
convert_glob_write(tls, out, uint8('\134'))
}
convert_glob_write(tls, out, separator)
}
// Prints a wildcard into the output.
//
// Arguments:
// out output context
// separator glob separator
// with_escape backslash is needed before separator
func convert_glob_print_wildcard(tls *libc.TLS, out uintptr, separator TPCRE2_UCHAR8, with_escape TBOOL) { /* pcre2_convert.c:451:1: */
*(*Tuint8_t)(unsafe.Pointer(out + 24)) = Tuint8_t('\133')
*(*Tuint8_t)(unsafe.Pointer(out + 24 + 1)) = Tuint8_t('\136')
convert_glob_write_str(tls, out, uint64(2))
convert_glob_print_separator(tls, out, separator, with_escape)
convert_glob_write(tls, out, uint8('\135'))
}
// Parse a posix class.
//
// Arguments:
// from starting point of scanning the range
// pattern_end end of pattern
// out output context
//
// Returns: >0 => class index
// 0 => malformed class
func convert_glob_parse_class(tls *libc.TLS, from uintptr, pattern_end TPCRE2_SPTR8, out uintptr) int32 { /* pcre2_convert.c:476:1: */
var start TPCRE2_SPTR8 = *(*TPCRE2_SPTR8)(unsafe.Pointer(from)) + uintptr(1)
var pattern TPCRE2_SPTR8 = start
var class_ptr uintptr
var c TPCRE2_UCHAR8
var class_index int32
for 1 != 0 {
if pattern >= pattern_end {
return 0
}
c = *(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&pattern, 1)))
if int32(c) < '\141' || int32(c) > '\172' {
break
}
}
if int32(c) != '\072' || pattern >= pattern_end || int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(pattern))) != '\135' {
return 0
}
class_ptr = posix_classes
class_index = 1
for 1 != 0 {
if int32(*(*int8)(unsafe.Pointer(class_ptr))) == 0 {
return 0
}
pattern = start
for int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(pattern))) == int32(TPCRE2_UCHAR8(*(*int8)(unsafe.Pointer(class_ptr)))) {
if int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(pattern))) == '\072' {
pattern += uintptr(2)
start -= uintptr(2)
for __ccgo := true; __ccgo; __ccgo = start < pattern {
convert_glob_write(tls, out, *(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&start, 1))))
}
*(*TPCRE2_SPTR8)(unsafe.Pointer(from)) = pattern
return class_index
}
pattern++
class_ptr++
}
for int32(*(*int8)(unsafe.Pointer(class_ptr))) != '\072' {
class_ptr++
}
class_ptr++
class_index++
}
return int32(0)
}
var posix_classes uintptr = ts + 712 /* "alnum:alpha:asci..." */ /* pcre2_convert.c:479:19 */
// Checks whether the character is in the class.
//
// Arguments:
// class_index class index
// c character
//
// Returns: !0 => character is found in the class
// 0 => otherwise
func convert_glob_char_in_class(tls *libc.TLS, class_index int32, c TPCRE2_UCHAR8) TBOOL { /* pcre2_convert.c:542:1: */
switch class_index {
case 1:
return int32(*(*uint16)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(libc.X__ctype_b_loc(tls))) + uintptr(int32(c))*2))) & int32(_ISalnum)
case 2:
return int32(*(*uint16)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(libc.X__ctype_b_loc(tls))) + uintptr(int32(c))*2))) & int32(_ISalpha)
case 3:
return 1
case 4:
return libc.Bool32(int32(c) == '\011' || int32(c) == '\040')
case 5:
return int32(*(*uint16)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(libc.X__ctype_b_loc(tls))) + uintptr(int32(c))*2))) & int32(_IScntrl)
case 6:
return int32(*(*uint16)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(libc.X__ctype_b_loc(tls))) + uintptr(int32(c))*2))) & int32(_ISdigit)
case 7:
return int32(*(*uint16)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(libc.X__ctype_b_loc(tls))) + uintptr(int32(c))*2))) & int32(_ISgraph)
case 8:
return int32(*(*uint16)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(libc.X__ctype_b_loc(tls))) + uintptr(int32(c))*2))) & int32(_ISlower)
case 9:
return int32(*(*uint16)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(libc.X__ctype_b_loc(tls))) + uintptr(int32(c))*2))) & int32(_ISprint)
case 10:
return int32(*(*uint16)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(libc.X__ctype_b_loc(tls))) + uintptr(int32(c))*2))) & int32(_ISpunct)
case 11:
return int32(*(*uint16)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(libc.X__ctype_b_loc(tls))) + uintptr(int32(c))*2))) & int32(_ISspace)
case 12:
return int32(*(*uint16)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(libc.X__ctype_b_loc(tls))) + uintptr(int32(c))*2))) & int32(_ISupper)
case 13:
return libc.Bool32(int32(*(*uint16)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(libc.X__ctype_b_loc(tls))) + uintptr(int32(c))*2)))&int32(_ISalnum) != 0 || int32(c) == '\137')
default:
return int32(*(*uint16)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(libc.X__ctype_b_loc(tls))) + uintptr(int32(c))*2))) & int32(_ISxdigit)
}
return TBOOL(0)
}
// Parse a range of characters.
//
// Arguments:
// from starting point of scanning the range
// pattern_end end of pattern
// out output context
// separator glob separator
// with_escape backslash is needed before separator
//
// Returns: 0 => success
// !0 => error code
func convert_glob_parse_range(tls *libc.TLS, from uintptr, pattern_end TPCRE2_SPTR8, out uintptr, utf TBOOL, separator TPCRE2_UCHAR8, with_escape TBOOL, escape TPCRE2_UCHAR8, no_wildsep TBOOL) int32 { /* pcre2_convert.c:577:1: */
var is_negative TBOOL = DFALSE
var separator_seen TBOOL = DFALSE
var has_prev_c TBOOL
var pattern TPCRE2_SPTR8 = *(*TPCRE2_SPTR8)(unsafe.Pointer(from))
var char_start TPCRE2_SPTR8 = uintptr(0)
var c Tuint32_t
var prev_c Tuint32_t
var len int32
var class_index int32
_ = utf // Avoid compiler warning.
if pattern >= pattern_end {
*(*TPCRE2_SPTR8)(unsafe.Pointer(from)) = pattern
return DPCRE2_ERROR_MISSING_SQUARE_BRACKET
}
if int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(pattern))) == '\041' ||
int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(pattern))) == '\136' {
pattern++
if pattern >= pattern_end {
*(*TPCRE2_SPTR8)(unsafe.Pointer(from)) = pattern
return DPCRE2_ERROR_MISSING_SQUARE_BRACKET
}
is_negative = DTRUE
*(*Tuint8_t)(unsafe.Pointer(out + 24)) = Tuint8_t('\133')
*(*Tuint8_t)(unsafe.Pointer(out + 24 + 1)) = Tuint8_t('\136')
len = 2
if !(no_wildsep != 0) {
if with_escape != 0 {
*(*Tuint8_t)(unsafe.Pointer(out + 24 + uintptr(len))) = Tuint8_t('\134')
len++
}
*(*Tuint8_t)(unsafe.Pointer(out + 24 + uintptr(len))) = separator
}
convert_glob_write_str(tls, out, uint64(len+1))
} else {
convert_glob_write(tls, out, uint8('\133'))
}
has_prev_c = DFALSE
prev_c = Tuint32_t(0)
if int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(pattern))) == '\135' {
*(*Tuint8_t)(unsafe.Pointer(out + 24)) = Tuint8_t('\134')
*(*Tuint8_t)(unsafe.Pointer(out + 24 + 1)) = Tuint8_t('\135')
convert_glob_write_str(tls, out, uint64(2))
has_prev_c = DTRUE
prev_c = Tuint32_t('\135')
pattern++
}
for pattern < pattern_end {
char_start = pattern
c = Tuint32_t(*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&pattern, 1))))
if utf != 0 && c >= 0xc0 {
if c&0x20 == Tuint32_t(0) {
c = c&0x1f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&pattern, 1))))&0x3f
} else if c&0x10 == Tuint32_t(0) {
c = c&0x0f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(pattern)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(pattern + 1)))&0x3f
pattern += uintptr(2)
} else if c&0x08 == Tuint32_t(0) {
c = c&0x07<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(pattern)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(pattern + 1)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(pattern + 2)))&0x3f
pattern += uintptr(3)
} else if c&0x04 == Tuint32_t(0) {
c = c&0x03<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(pattern)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(pattern + 1)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(pattern + 2)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(pattern + 3)))&0x3f
pattern += uintptr(4)
} else {
c = c&0x01<<30 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(pattern)))&0x3f<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(pattern + 1)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(pattern + 2)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(pattern + 3)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(pattern + 4)))&0x3f
pattern += uintptr(5)
}
}
if c == Tuint32_t('\135') {
convert_glob_write(tls, out, uint8(c))
if !(is_negative != 0) && !(no_wildsep != 0) && separator_seen != 0 {
*(*Tuint8_t)(unsafe.Pointer(out + 24)) = Tuint8_t('\050')
*(*Tuint8_t)(unsafe.Pointer(out + 24 + 1)) = Tuint8_t('\077')
*(*Tuint8_t)(unsafe.Pointer(out + 24 + 2)) = Tuint8_t('\074')
*(*Tuint8_t)(unsafe.Pointer(out + 24 + 3)) = Tuint8_t('\041')
convert_glob_write_str(tls, out, uint64(4))
convert_glob_print_separator(tls, out, separator, with_escape)
convert_glob_write(tls, out, uint8('\051'))
}
*(*TPCRE2_SPTR8)(unsafe.Pointer(from)) = pattern
return 0
}
if pattern >= pattern_end {
break
}
if c == Tuint32_t('\133') && int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(pattern))) == '\072' {
*(*TPCRE2_SPTR8)(unsafe.Pointer(from)) = pattern
class_index = convert_glob_parse_class(tls, from, pattern_end, out)
if class_index != 0 {
pattern = *(*TPCRE2_SPTR8)(unsafe.Pointer(from))
has_prev_c = DFALSE
prev_c = Tuint32_t(0)
if !(is_negative != 0) && convert_glob_char_in_class(tls, class_index, separator) != 0 {
separator_seen = DTRUE
}
continue
}
} else if c == Tuint32_t('\055') && has_prev_c != 0 && int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(pattern))) != '\135' {
convert_glob_write(tls, out, uint8('\055'))
char_start = pattern
c = Tuint32_t(*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&pattern, 1))))
if utf != 0 && c >= 0xc0 {
if c&0x20 == Tuint32_t(0) {
c = c&0x1f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&pattern, 1))))&0x3f
} else if c&0x10 == Tuint32_t(0) {
c = c&0x0f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(pattern)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(pattern + 1)))&0x3f
pattern += uintptr(2)
} else if c&0x08 == Tuint32_t(0) {
c = c&0x07<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(pattern)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(pattern + 1)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(pattern + 2)))&0x3f
pattern += uintptr(3)
} else if c&0x04 == Tuint32_t(0) {
c = c&0x03<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(pattern)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(pattern + 1)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(pattern + 2)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(pattern + 3)))&0x3f
pattern += uintptr(4)
} else {
c = c&0x01<<30 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(pattern)))&0x3f<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(pattern + 1)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(pattern + 2)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(pattern + 3)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(pattern + 4)))&0x3f
pattern += uintptr(5)
}
}
if pattern >= pattern_end {
break
}
if int32(escape) != 0 && c == Tuint32_t(escape) {
char_start = pattern
c = Tuint32_t(*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&pattern, 1))))
if utf != 0 && c >= 0xc0 {
if c&0x20 == Tuint32_t(0) {
c = c&0x1f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&pattern, 1))))&0x3f
} else if c&0x10 == Tuint32_t(0) {
c = c&0x0f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(pattern)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(pattern + 1)))&0x3f
pattern += uintptr(2)
} else if c&0x08 == Tuint32_t(0) {
c = c&0x07<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(pattern)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(pattern + 1)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(pattern + 2)))&0x3f
pattern += uintptr(3)
} else if c&0x04 == Tuint32_t(0) {
c = c&0x03<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(pattern)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(pattern + 1)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(pattern + 2)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(pattern + 3)))&0x3f
pattern += uintptr(4)
} else {
c = c&0x01<<30 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(pattern)))&0x3f<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(pattern + 1)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(pattern + 2)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(pattern + 3)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(pattern + 4)))&0x3f
pattern += uintptr(5)
}
}
} else if c == Tuint32_t('\133') && int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(pattern))) == '\072' {
*(*TPCRE2_SPTR8)(unsafe.Pointer(from)) = pattern
return -64
}
if prev_c > c {
*(*TPCRE2_SPTR8)(unsafe.Pointer(from)) = pattern
return -64
}
if prev_c < Tuint32_t(separator) && Tuint32_t(separator) < c {
separator_seen = DTRUE
}
has_prev_c = DFALSE
prev_c = Tuint32_t(0)
} else {
if int32(escape) != 0 && c == Tuint32_t(escape) {
char_start = pattern
c = Tuint32_t(*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&pattern, 1))))
if utf != 0 && c >= 0xc0 {
if c&0x20 == Tuint32_t(0) {
c = c&0x1f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&pattern, 1))))&0x3f
} else if c&0x10 == Tuint32_t(0) {
c = c&0x0f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(pattern)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(pattern + 1)))&0x3f
pattern += uintptr(2)
} else if c&0x08 == Tuint32_t(0) {
c = c&0x07<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(pattern)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(pattern + 1)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(pattern + 2)))&0x3f
pattern += uintptr(3)
} else if c&0x04 == Tuint32_t(0) {
c = c&0x03<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(pattern)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(pattern + 1)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(pattern + 2)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(pattern + 3)))&0x3f
pattern += uintptr(4)
} else {
c = c&0x01<<30 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(pattern)))&0x3f<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(pattern + 1)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(pattern + 2)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(pattern + 3)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(pattern + 4)))&0x3f
pattern += uintptr(5)
}
}
if pattern >= pattern_end {
break
}
}
has_prev_c = DTRUE
prev_c = c
}
if c == Tuint32_t('\133') || c == Tuint32_t('\135') || c == Tuint32_t('\134') || c == Tuint32_t('\055') {
convert_glob_write(tls, out, uint8('\134'))
}
if c == Tuint32_t(separator) {
separator_seen = DTRUE
}
for __ccgo := true; __ccgo; __ccgo = char_start < pattern {
convert_glob_write(tls, out, *(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&char_start, 1))))
}
}
*(*TPCRE2_SPTR8)(unsafe.Pointer(from)) = pattern
return DPCRE2_ERROR_MISSING_SQUARE_BRACKET
}
// Prints a (*COMMIT) into the output.
//
// Arguments:
// out output context
func convert_glob_print_commit(tls *libc.TLS, out uintptr) { /* pcre2_convert.c:754:1: */
*(*Tuint8_t)(unsafe.Pointer(out + 24)) = Tuint8_t('\050')
*(*Tuint8_t)(unsafe.Pointer(out + 24 + 1)) = Tuint8_t('\052')
*(*Tuint8_t)(unsafe.Pointer(out + 24 + 2)) = Tuint8_t('\103')
*(*Tuint8_t)(unsafe.Pointer(out + 24 + 3)) = Tuint8_t('\117')
*(*Tuint8_t)(unsafe.Pointer(out + 24 + 4)) = Tuint8_t('\115')
*(*Tuint8_t)(unsafe.Pointer(out + 24 + 5)) = Tuint8_t('\115')
*(*Tuint8_t)(unsafe.Pointer(out + 24 + 6)) = Tuint8_t('\111')
*(*Tuint8_t)(unsafe.Pointer(out + 24 + 7)) = Tuint8_t('\124')
convert_glob_write_str(tls, out, uint64(8))
convert_glob_write(tls, out, uint8('\051'))
}
// Bash glob converter.
//
// Arguments:
// pattype the pattern type
// pattern the pattern
// plength length in code units
// utf TRUE if UTF
// use_buffer where to put the output
// use_length length of use_buffer
// bufflenptr where to put the used length
// dummyrun TRUE if a dummy run
// ccontext the convert context
//
// Returns: 0 => success
// !0 => error code
func convert_glob(tls *libc.TLS, options Tuint32_t, pattern TPCRE2_SPTR8, plength Tsize_t, utf TBOOL, use_buffer uintptr, use_length Tsize_t, bufflenptr uintptr, dummyrun TBOOL, ccontext uintptr) int32 { /* pcre2_convert.c:787:1: */
bp := tls.Alloc(40)
defer tls.Free(40)
*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 32)) = pattern
// var out Tpcre2_output_context at bp, 32
var pattern_start TPCRE2_SPTR8 = *(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 32 /* pattern */))
var pattern_end TPCRE2_SPTR8 = *(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 32)) + uintptr(plength)
var separator TPCRE2_UCHAR8 = TPCRE2_UCHAR8((*Tpcre2_convert_context_8)(unsafe.Pointer(ccontext)).Fglob_separator)
var escape TPCRE2_UCHAR8 = TPCRE2_UCHAR8((*Tpcre2_convert_context_8)(unsafe.Pointer(ccontext)).Fglob_escape)
var c TPCRE2_UCHAR8
var no_wildsep TBOOL = libc.Bool32(options&DPCRE2_CONVERT_GLOB_NO_WILD_SEPARATOR != Tuint32_t(0))
var no_starstar TBOOL = libc.Bool32(options&DPCRE2_CONVERT_GLOB_NO_STARSTAR != Tuint32_t(0))
var in_atomic TBOOL = DFALSE
var after_starstar TBOOL = DFALSE
var no_slash_z TBOOL = DFALSE
var with_escape TBOOL
var is_start TBOOL
var after_separator TBOOL
var result int32 = 0
_ = utf // Avoid compiler warning.
if utf != 0 && (int32(separator) >= 128 || int32(escape) >= 128) {
// Currently only ASCII characters are supported.
*(*Tsize_t)(unsafe.Pointer(bufflenptr)) = uint64(0)
return -64
}
with_escape = libc.Bool32(libc.Xstrchr(tls, pcre2_escaped_literals, int32(separator)) != uintptr(0))
// Initialize default for error offset as end of input.
(*Tpcre2_output_context)(unsafe.Pointer(bp /* &out */)).Foutput = use_buffer
(*Tpcre2_output_context)(unsafe.Pointer(bp /* &out */)).Foutput_end = use_buffer + uintptr(use_length)
(*Tpcre2_output_context)(unsafe.Pointer(bp /* &out */)).Foutput_size = uint64(0)
*(*Tuint8_t)(unsafe.Pointer(bp + 24)) = Tuint8_t('\050')
*(*Tuint8_t)(unsafe.Pointer(bp + 24 + 1)) = Tuint8_t('\077')
*(*Tuint8_t)(unsafe.Pointer(bp + 24 + 2)) = Tuint8_t('\163')
*(*Tuint8_t)(unsafe.Pointer(bp + 24 + 3)) = Tuint8_t('\051')
convert_glob_write_str(tls, bp, uint64(4))
is_start = DTRUE
if *(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 32)) < pattern_end && int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 32))))) == '\052' {
if no_wildsep != 0 {
is_start = DFALSE
} else if !(no_starstar != 0) && *(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 32))+uintptr(1) < pattern_end && int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 32)) + 1))) == '\052' {
is_start = DFALSE
}
}
if is_start != 0 {
*(*Tuint8_t)(unsafe.Pointer(bp + 24)) = Tuint8_t('\134')
*(*Tuint8_t)(unsafe.Pointer(bp + 24 + 1)) = Tuint8_t('\101')
convert_glob_write_str(tls, bp, uint64(2))
}
for *(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 32)) < pattern_end {
c = *(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 32 /* pattern */)), 1)))
if int32(c) == '\052' {
is_start = libc.Bool32(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 32)) == pattern_start+uintptr(1))
if in_atomic != 0 {
convert_glob_write(tls, bp, uint8('\051'))
in_atomic = DFALSE
}
if !(no_starstar != 0) && *(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 32)) < pattern_end && int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 32))))) == '\052' {
after_separator = libc.Bool32(is_start != 0 || int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 32)) + libc.UintptrFromInt32(-2)))) == int32(separator))
for __ccgo := true; __ccgo; __ccgo = *(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 32)) < pattern_end && int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 32))))) == '\052' {
*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 32 /* pattern */))++
}
if *(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 32)) >= pattern_end {
no_slash_z = DTRUE
break
}
after_starstar = DTRUE
if after_separator != 0 && int32(escape) != 0 && int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 32))))) == int32(escape) && *(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 32))+uintptr(1) < pattern_end && int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 32)) + 1))) == int32(separator) {
*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 32 /* pattern */))++
}
if is_start != 0 {
if int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 32))))) != int32(separator) {
continue
}
*(*Tuint8_t)(unsafe.Pointer(bp + 24)) = Tuint8_t('\050')
*(*Tuint8_t)(unsafe.Pointer(bp + 24 + 1)) = Tuint8_t('\077')
*(*Tuint8_t)(unsafe.Pointer(bp + 24 + 2)) = Tuint8_t('\072')
*(*Tuint8_t)(unsafe.Pointer(bp + 24 + 3)) = Tuint8_t('\134')
*(*Tuint8_t)(unsafe.Pointer(bp + 24 + 4)) = Tuint8_t('\101')
*(*Tuint8_t)(unsafe.Pointer(bp + 24 + 5)) = Tuint8_t('\174')
convert_glob_write_str(tls, bp, uint64(6))
convert_glob_print_separator(tls, bp, separator, with_escape)
convert_glob_write(tls, bp, uint8('\051'))
*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 32 /* pattern */))++
continue
}
convert_glob_print_commit(tls, bp)
if !(after_separator != 0) || int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 32))))) != int32(separator) {
*(*Tuint8_t)(unsafe.Pointer(bp + 24)) = Tuint8_t('\056')
*(*Tuint8_t)(unsafe.Pointer(bp + 24 + 1)) = Tuint8_t('\052')
*(*Tuint8_t)(unsafe.Pointer(bp + 24 + 2)) = Tuint8_t('\077')
convert_glob_write_str(tls, bp, uint64(3))
continue
}
*(*Tuint8_t)(unsafe.Pointer(bp + 24)) = Tuint8_t('\050')
*(*Tuint8_t)(unsafe.Pointer(bp + 24 + 1)) = Tuint8_t('\077')
*(*Tuint8_t)(unsafe.Pointer(bp + 24 + 2)) = Tuint8_t('\072')
*(*Tuint8_t)(unsafe.Pointer(bp + 24 + 3)) = Tuint8_t('\056')
*(*Tuint8_t)(unsafe.Pointer(bp + 24 + 4)) = Tuint8_t('\052')
*(*Tuint8_t)(unsafe.Pointer(bp + 24 + 5)) = Tuint8_t('\077')
convert_glob_write_str(tls, bp, uint64(6))
convert_glob_print_separator(tls, bp, separator, with_escape)
*(*Tuint8_t)(unsafe.Pointer(bp + 24)) = Tuint8_t('\051')
*(*Tuint8_t)(unsafe.Pointer(bp + 24 + 1)) = Tuint8_t('\077')
*(*Tuint8_t)(unsafe.Pointer(bp + 24 + 2)) = Tuint8_t('\077')
convert_glob_write_str(tls, bp, uint64(3))
*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 32 /* pattern */))++
continue
}
if *(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 32)) < pattern_end && int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 32))))) == '\052' {
for __ccgo1 := true; __ccgo1; __ccgo1 = *(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 32)) < pattern_end && int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 32))))) == '\052' {
*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 32 /* pattern */))++
}
}
if no_wildsep != 0 {
if *(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 32)) >= pattern_end {
no_slash_z = DTRUE
break
}
// Start check must be after the end check.
if is_start != 0 {
continue
}
}
if !(is_start != 0) {
if after_starstar != 0 {
*(*Tuint8_t)(unsafe.Pointer(bp + 24)) = Tuint8_t('\050')
*(*Tuint8_t)(unsafe.Pointer(bp + 24 + 1)) = Tuint8_t('\077')
*(*Tuint8_t)(unsafe.Pointer(bp + 24 + 2)) = Tuint8_t('\076')
convert_glob_write_str(tls, bp, uint64(3))
in_atomic = DTRUE
} else {
convert_glob_print_commit(tls, bp)
}
}
if no_wildsep != 0 {
convert_glob_write(tls, bp, uint8('\056'))
} else {
convert_glob_print_wildcard(tls, bp, separator, with_escape)
}
*(*Tuint8_t)(unsafe.Pointer(bp + 24)) = Tuint8_t('\052')
*(*Tuint8_t)(unsafe.Pointer(bp + 24 + 1)) = Tuint8_t('\077')
if *(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 32)) >= pattern_end {
*(*Tuint8_t)(unsafe.Pointer(bp + 24 + 1)) = Tuint8_t('\053')
}
convert_glob_write_str(tls, bp, uint64(2))
continue
}
if int32(c) == '\077' {
if no_wildsep != 0 {
convert_glob_write(tls, bp, uint8('\056'))
} else {
convert_glob_print_wildcard(tls, bp, separator, with_escape)
}
continue
}
if int32(c) == '\133' {
result = convert_glob_parse_range(tls, bp+32, pattern_end,
bp, utf, separator, with_escape, escape, no_wildsep)
if result != 0 {
break
}
continue
}
if int32(escape) != 0 && int32(c) == int32(escape) {
if *(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 32)) >= pattern_end {
result = -64
break
}
c = *(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 32 /* pattern */)), 1)))
}
if int32(c) < 128 && libc.Xstrchr(tls, pcre2_escaped_literals, int32(c)) != uintptr(0) {
convert_glob_write(tls, bp, uint8('\134'))
}
convert_glob_write(tls, bp, c)
}
if result == 0 {
if !(no_slash_z != 0) {
*(*Tuint8_t)(unsafe.Pointer(bp + 24)) = Tuint8_t('\134')
*(*Tuint8_t)(unsafe.Pointer(bp + 24 + 1)) = Tuint8_t('\172')
convert_glob_write_str(tls, bp, uint64(2))
}
if in_atomic != 0 {
convert_glob_write(tls, bp, uint8('\051'))
}
convert_glob_write(tls, bp, uint8(0))
if !(dummyrun != 0) && (*Tpcre2_output_context)(unsafe.Pointer(bp)).Foutput_size != Tsize_t((int64((*Tpcre2_output_context)(unsafe.Pointer(bp)).Foutput)-int64(use_buffer))/1) {
result = -48
}
}
if result != 0 {
*(*Tsize_t)(unsafe.Pointer(bufflenptr)) = Tsize_t((int64(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 32))) - int64(pattern_start)) / 1)
return result
}
*(*Tsize_t)(unsafe.Pointer(bufflenptr)) = (*Tpcre2_output_context)(unsafe.Pointer(bp)).Foutput_size - uint64(1)
return 0
}
// ************************************************
//
// Convert pattern *
//
// This is the external-facing function for converting other forms of pattern
// into PCRE2 regular expression patterns. On error, the bufflenptr argument is
// used to return an offset in the original pattern.
//
// Arguments:
// pattern the input pattern
// plength length of input, or PCRE2_ZERO_TERMINATED
// options options bits
// buffptr pointer to pointer to output buffer
// bufflenptr pointer to length of output buffer
// ccontext convert context or NULL
//
// Returns: 0 for success, else an error code (+ve or -ve)
func Xpcre2_pattern_convert_8(tls *libc.TLS, pattern TPCRE2_SPTR8, plength Tsize_t, options Tuint32_t, buffptr uintptr, bufflenptr uintptr, ccontext uintptr) int32 { /* pcre2_convert.c:1057:1: */
bp := tls.Alloc(112)
defer tls.Free(112)
var i int32
var rc int32
// var dummy_buffer [100]TPCRE2_UCHAR8 at bp, 100
var use_buffer uintptr = bp /* dummy_buffer */
var use_length Tsize_t = uint64(DDUMMY_BUFFER_SIZE)
var utf TBOOL = libc.Bool32(options&DPCRE2_CONVERT_UTF != Tuint32_t(0))
var pattype Tuint32_t = options & (DPCRE2_CONVERT_GLOB | DPCRE2_CONVERT_POSIX_BASIC | DPCRE2_CONVERT_POSIX_EXTENDED)
if pattern == uintptr(0) || bufflenptr == uintptr(0) {
return -51
}
if options&libc.CplUint32(DPCRE2_CONVERT_UTF|DPCRE2_CONVERT_NO_UTF_CHECK|DPCRE2_CONVERT_GLOB_NO_WILD_SEPARATOR|DPCRE2_CONVERT_GLOB_NO_STARSTAR|(DPCRE2_CONVERT_GLOB|DPCRE2_CONVERT_POSIX_BASIC|DPCRE2_CONVERT_POSIX_EXTENDED)) != Tuint32_t(0) || pattype&(^pattype+Tuint32_t(1)) != pattype || pattype == Tuint32_t(0) {
*(*Tsize_t)(unsafe.Pointer(bufflenptr)) = uint64(0) // Error offset
return -34
}
if plength == libc.CplUint64(uint64(0)) {
plength = X_pcre2_strlen_8(tls, pattern)
}
if ccontext == uintptr(0) {
ccontext = uintptr(unsafe.Pointer(&X_pcre2_default_convert_context_8))
}
// Check UTF if required.
if utf != 0 && options&DPCRE2_CONVERT_NO_UTF_CHECK == Tuint32_t(0) {
// var erroroffset Tsize_t at bp+104, 8
rc = X_pcre2_valid_utf_8(tls, pattern, plength, bp+104)
if rc != 0 {
*(*Tsize_t)(unsafe.Pointer(bufflenptr)) = *(*Tsize_t)(unsafe.Pointer(bp + 104 /* erroroffset */))
return rc
}
}
// If buffptr is not NULL, and what it points to is not NULL, we are being
// provided with a buffer and a length, so set them as the buffer to use.
if buffptr != uintptr(0) && *(*uintptr)(unsafe.Pointer(buffptr)) != uintptr(0) {
use_buffer = *(*uintptr)(unsafe.Pointer(buffptr))
use_length = *(*Tsize_t)(unsafe.Pointer(bufflenptr))
}
// Call an individual converter, either just once (if a buffer was provided or
// just the length is needed), or twice (if a memory allocation is required).
for i = 0; i < 2; i++ {
var allocated uintptr
var dummyrun TBOOL = libc.Bool32(buffptr == uintptr(0) || *(*uintptr)(unsafe.Pointer(buffptr)) == uintptr(0))
switch pattype {
case DPCRE2_CONVERT_GLOB:
rc = convert_glob(tls, options&libc.CplUint32(DPCRE2_CONVERT_GLOB), pattern, plength, utf,
use_buffer, use_length, bufflenptr, dummyrun, ccontext)
break
case DPCRE2_CONVERT_POSIX_BASIC:
fallthrough
case DPCRE2_CONVERT_POSIX_EXTENDED:
rc = convert_posix(tls, pattype, pattern, plength, utf, use_buffer, use_length,
bufflenptr, dummyrun, ccontext)
break
default:
*(*Tsize_t)(unsafe.Pointer(bufflenptr)) = uint64(0) // Error offset
return -44
}
if rc != 0 || buffptr == uintptr(0) || *(*uintptr)(unsafe.Pointer(buffptr)) != uintptr(0) { // Buffer was provided or allocated
return rc
}
// Allocate memory for the buffer, with hidden space for an allocator at
// the start. The next time round the loop runs the conversion for real.
allocated = X_pcre2_memctl_malloc_8(tls, uint64(unsafe.Sizeof(Tpcre2_memctl{}))+(*(*Tsize_t)(unsafe.Pointer(bufflenptr))+uint64(1))*uint64(DPCRE2_CODE_UNIT_WIDTH), ccontext)
if allocated == uintptr(0) {
return -48
}
*(*uintptr)(unsafe.Pointer(buffptr)) = allocated + uintptr(uint64(unsafe.Sizeof(Tpcre2_memctl{})))
use_buffer = *(*uintptr)(unsafe.Pointer(buffptr))
use_length = *(*Tsize_t)(unsafe.Pointer(bufflenptr)) + uint64(1)
}
// Control should never get here.
return -44
}
// ************************************************
//
// Free converted pattern *
//
// This frees a converted pattern that was put in newly-allocated memory.
//
// Argument: the converted pattern
// Returns: nothing
func Xpcre2_converted_pattern_free_8(tls *libc.TLS, converted uintptr) { /* pcre2_convert.c:1172:1: */
if converted != uintptr(0) {
var memctl uintptr = converted - uintptr(uint64(unsafe.Sizeof(Tpcre2_memctl{})))
(*struct {
f func(*libc.TLS, uintptr, uintptr)
})(unsafe.Pointer(&struct{ uintptr }{(*Tpcre2_memctl)(unsafe.Pointer(memctl)).Ffree})).f(tls, memctl, (*Tpcre2_memctl)(unsafe.Pointer(memctl)).Fmemory_data)
}
}
// End of pcre2_convert.c
// This function is needed only when memmove() is not available.
// End of pcre2_internal.h
// ************************************************
//
// Code parameters and static tables *
//
// These are offsets that are used to turn the OP_TYPESTAR and friends opcodes
// into others, under special conditions. A gap of 20 between the blocks should be
// enough. The resulting opcodes don't have to be less than 256 because they are
// never stored, so we push them well clear of the normal opcodes.
// This table identifies those opcodes that are followed immediately by a
// character that is to be tested in some way. This makes it possible to
// centralize the loading of these characters. In the case of Type * etc, the
// "character" is the opcode for \D, \d, \S, \s, \W, or \w, which will always be a
// small value. Non-zero values in the table are the offsets from the opcode where
// the character is to be found. ***NOTE*** If the start of this table is
// modified, the three tables that follow must also be modified.
var coptable = [168]Tuint8_t{
Tuint8_t(0), // End
Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), // \A, \G, \K, \B, \b
Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), // \D, \d, \S, \s, \W, \w
Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), // Any, AllAny, Anybyte
Tuint8_t(0), Tuint8_t(0), // \P, \p
Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), // \R, \H, \h, \V, \v
Tuint8_t(0), // \X
Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), // \Z, \z, $, $M, ^, ^M
Tuint8_t(1), // Char
Tuint8_t(1), // Chari
Tuint8_t(1), // not
Tuint8_t(1), // noti
// Positive single-char repeats
Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), // *, *?, +, +?, ?, ??
Tuint8_t(1 + DIMM2_SIZE), Tuint8_t(1 + DIMM2_SIZE),
Tuint8_t(1 + DIMM2_SIZE),
Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1 + DIMM2_SIZE),
Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), // *I, *?I, +I, +?I, ?I, ??I
Tuint8_t(1 + DIMM2_SIZE), Tuint8_t(1 + DIMM2_SIZE),
Tuint8_t(1 + DIMM2_SIZE),
Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1 + DIMM2_SIZE),
// Negative single-char repeats - only for chars < 256
Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), // NOT *, *?, +, +?, ?, ??
Tuint8_t(1 + DIMM2_SIZE), Tuint8_t(1 + DIMM2_SIZE),
Tuint8_t(1 + DIMM2_SIZE),
Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1 + DIMM2_SIZE),
Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), // NOT *I, *?I, +I, +?I, ?I, ??I
Tuint8_t(1 + DIMM2_SIZE), Tuint8_t(1 + DIMM2_SIZE),
Tuint8_t(1 + DIMM2_SIZE),
Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1 + DIMM2_SIZE),
// Positive type repeats
Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), // Type *, *?, +, +?, ?, ??
Tuint8_t(1 + DIMM2_SIZE), Tuint8_t(1 + DIMM2_SIZE),
Tuint8_t(1 + DIMM2_SIZE),
Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1 + DIMM2_SIZE),
// Character class & ref repeats
Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), // *, *?, +, +?, ?, ??
Tuint8_t(0), Tuint8_t(0), // CRRANGE, CRMINRANGE
Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), // Possessive *+, ++, ?+, CRPOSRANGE
Tuint8_t(0), // CLASS
Tuint8_t(0), // NCLASS
Tuint8_t(0), // XCLASS - variable length
Tuint8_t(0), // REF
Tuint8_t(0), // REFI
Tuint8_t(0), // DNREF
Tuint8_t(0), // DNREFI
Tuint8_t(0), // RECURSE
Tuint8_t(0), // CALLOUT
Tuint8_t(0), // CALLOUT_STR
Tuint8_t(0), // Alt
Tuint8_t(0), // Ket
Tuint8_t(0), // KetRmax
Tuint8_t(0), // KetRmin
Tuint8_t(0), // KetRpos
Tuint8_t(0), // Reverse
Tuint8_t(0), // Assert
Tuint8_t(0), // Assert not
Tuint8_t(0), // Assert behind
Tuint8_t(0), // Assert behind not
Tuint8_t(0), // NA assert
Tuint8_t(0), // NA assert behind
Tuint8_t(0), // ONCE
Tuint8_t(0), // SCRIPT_RUN
Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), // BRA, BRAPOS, CBRA, CBRAPOS, COND
Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), // SBRA, SBRAPOS, SCBRA, SCBRAPOS, SCOND
Tuint8_t(0), Tuint8_t(0), // CREF, DNCREF
Tuint8_t(0), Tuint8_t(0), // RREF, DNRREF
Tuint8_t(0), Tuint8_t(0), // FALSE, TRUE
Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), // BRAZERO, BRAMINZERO, BRAPOSZERO
Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), // MARK, PRUNE, PRUNE_ARG
Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), // SKIP, SKIP_ARG, THEN, THEN_ARG
Tuint8_t(0), Tuint8_t(0), // COMMIT, COMMIT_ARG
Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), // FAIL, ACCEPT, ASSERT_ACCEPT
Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), // CLOSE, SKIPZERO, DEFINE
} /* pcre2_dfa_match.c:116:22 */
// This table identifies those opcodes that inspect a character. It is used to
// remember the fact that a character could have been inspected when the end of
// the subject is reached. ***NOTE*** If the start of this table is modified, the
// two tables that follow must also be modified.
var poptable = [168]Tuint8_t{
Tuint8_t(0), // End
Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(1), Tuint8_t(1), // \A, \G, \K, \B, \b
Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), // \D, \d, \S, \s, \W, \w
Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), // Any, AllAny, Anybyte
Tuint8_t(1), Tuint8_t(1), // \P, \p
Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), // \R, \H, \h, \V, \v
Tuint8_t(1), // \X
Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), // \Z, \z, $, $M, ^, ^M
Tuint8_t(1), // Char
Tuint8_t(1), // Chari
Tuint8_t(1), // not
Tuint8_t(1), // noti
// Positive single-char repeats
Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), // *, *?, +, +?, ?, ??
Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), // upto, minupto, exact
Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), // *+, ++, ?+, upto+
Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), // *I, *?I, +I, +?I, ?I, ??I
Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), // upto I, minupto I, exact I
Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), // *+I, ++I, ?+I, upto+I
// Negative single-char repeats - only for chars < 256
Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), // NOT *, *?, +, +?, ?, ??
Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), // NOT upto, minupto, exact
Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), // NOT *+, ++, ?+, upto+
Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), // NOT *I, *?I, +I, +?I, ?I, ??I
Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), // NOT upto I, minupto I, exact I
Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), // NOT *+I, ++I, ?+I, upto+I
// Positive type repeats
Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), // Type *, *?, +, +?, ?, ??
Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), // Type upto, minupto, exact
Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), // Type *+, ++, ?+, upto+
// Character class & ref repeats
Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), // *, *?, +, +?, ?, ??
Tuint8_t(1), Tuint8_t(1), // CRRANGE, CRMINRANGE
Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), // Possessive *+, ++, ?+, CRPOSRANGE
Tuint8_t(1), // CLASS
Tuint8_t(1), // NCLASS
Tuint8_t(1), // XCLASS - variable length
Tuint8_t(0), // REF
Tuint8_t(0), // REFI
Tuint8_t(0), // DNREF
Tuint8_t(0), // DNREFI
Tuint8_t(0), // RECURSE
Tuint8_t(0), // CALLOUT
Tuint8_t(0), // CALLOUT_STR
Tuint8_t(0), // Alt
Tuint8_t(0), // Ket
Tuint8_t(0), // KetRmax
Tuint8_t(0), // KetRmin
Tuint8_t(0), // KetRpos
Tuint8_t(0), // Reverse
Tuint8_t(0), // Assert
Tuint8_t(0), // Assert not
Tuint8_t(0), // Assert behind
Tuint8_t(0), // Assert behind not
Tuint8_t(0), // NA assert
Tuint8_t(0), // NA assert behind
Tuint8_t(0), // ONCE
Tuint8_t(0), // SCRIPT_RUN
Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), // BRA, BRAPOS, CBRA, CBRAPOS, COND
Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), // SBRA, SBRAPOS, SCBRA, SCBRAPOS, SCOND
Tuint8_t(0), Tuint8_t(0), // CREF, DNCREF
Tuint8_t(0), Tuint8_t(0), // RREF, DNRREF
Tuint8_t(0), Tuint8_t(0), // FALSE, TRUE
Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), // BRAZERO, BRAMINZERO, BRAPOSZERO
Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), // MARK, PRUNE, PRUNE_ARG
Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), // SKIP, SKIP_ARG, THEN, THEN_ARG
Tuint8_t(0), Tuint8_t(0), // COMMIT, COMMIT_ARG
Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), // FAIL, ACCEPT, ASSERT_ACCEPT
Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), // CLOSE, SKIPZERO, DEFINE
} /* pcre2_dfa_match.c:198:22 */
// These 2 tables allow for compact code for testing for \D, \d, \S, \s, \W,
// and \w
var toptable1 = [14]Tuint8_t{
Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0),
Tuint8_t(Dctype_digit), Tuint8_t(Dctype_digit),
Tuint8_t(Dctype_space), Tuint8_t(Dctype_space),
Tuint8_t(Dctype_word), Tuint8_t(Dctype_word),
Tuint8_t(0), Tuint8_t(0), // OP_ANY, OP_ALLANY
} /* pcre2_dfa_match.c:273:22 */
var toptable2 = [14]Tuint8_t{
Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0), Tuint8_t(0),
Tuint8_t(Dctype_digit), Tuint8_t(0),
Tuint8_t(Dctype_space), Tuint8_t(0),
Tuint8_t(Dctype_word), Tuint8_t(0),
Tuint8_t(1), Tuint8_t(1), // OP_ANY, OP_ALLANY
} /* pcre2_dfa_match.c:281:22 */
// Structure for holding data about a particular state, which is in effect the
// current data for an active path through the match tree. It must consist
// entirely of ints because the working vector we are passed, and which we put
// these structures in, is a vector of ints.
type Sstateblock = struct {
Foffset int32
Fcount int32
Fdata int32
} /* pcre2_dfa_match.c:295:9 */
// Structure for holding data about a particular state, which is in effect the
// current data for an active path through the match tree. It must consist
// entirely of ints because the working vector we are passed, and which we put
// these structures in, is a vector of ints.
type Tstateblock = Sstateblock /* pcre2_dfa_match.c:299:3 */
// Before version 10.32 the recursive calls of internal_dfa_match() were passed
// local working space and output vectors that were created on the stack. This has
// caused issues for some patterns, especially in small-stack environments such as
// Windows. A new scheme is now in use which sets up a vector on the stack, but if
// this is too small, heap memory is used, up to the heap_limit. The main
// parameters are all numbers of ints because the workspace is a vector of ints.
//
// The size of the starting stack vector, DFA_START_RWS_SIZE, is in bytes, and is
// defined in pcre2_internal.h so as to be available to pcre2test when it is
// finding the minimum heap requirement for a match.
// This structure is at the start of each workspace block.
type SRWS_anchor = struct {
Fnext uintptr
Fsize Tuint32_t
Ffree Tuint32_t
} /* pcre2_dfa_match.c:324:9 */
// Before version 10.32 the recursive calls of internal_dfa_match() were passed
// local working space and output vectors that were created on the stack. This has
// caused issues for some patterns, especially in small-stack environments such as
// Windows. A new scheme is now in use which sets up a vector on the stack, but if
// this is too small, heap memory is used, up to the heap_limit. The main
// parameters are all numbers of ints because the workspace is a vector of ints.
//
// The size of the starting stack vector, DFA_START_RWS_SIZE, is in bytes, and is
// defined in pcre2_internal.h so as to be available to pcre2test when it is
// finding the minimum heap requirement for a match.
// This structure is at the start of each workspace block.
type TRWS_anchor = SRWS_anchor /* pcre2_dfa_match.c:328:3 */
// ************************************************
//
// Process a callout *
//
// This function is called to perform a callout.
//
// Arguments:
// code current code pointer
// offsets points to current capture offsets
// current_subject start of current subject match
// ptr current position in subject
// mb the match block
// extracode extra code offset when called from condition
// lengthptr where to return the callout length
//
// Returns: the return from the callout
func do_callout(tls *libc.TLS, code TPCRE2_SPTR8, offsets uintptr, current_subject TPCRE2_SPTR8, ptr TPCRE2_SPTR8, mb uintptr, extracode Tsize_t, lengthptr uintptr) int32 { /* pcre2_dfa_match.c:353:1: */
var cb uintptr = (*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fcb
*(*Tsize_t)(unsafe.Pointer(lengthptr)) = func() uint64 {
if int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + uintptr(extracode)))) == OP_CALLOUT {
return Tsize_t(X_pcre2_OP_lengths_8[OP_CALLOUT])
}
return Tsize_t(uint32(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + uintptr(uint64(1+2*DLINK_SIZE)+extracode))))<<8 | int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + uintptr(uint64(1+2*DLINK_SIZE)+extracode+uint64(1)))))))
}()
if (*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fcallout == uintptr(0) {
return 0
} // No callout provided
// Fixed fields in the callout block are set once and for all at the start of
// matching.
(*Tpcre2_callout_block_8)(unsafe.Pointer(cb)).Foffset_vector = offsets
(*Tpcre2_callout_block_8)(unsafe.Pointer(cb)).Fstart_match = Tsize_t((int64(current_subject) - int64((*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fstart_subject)) / 1)
(*Tpcre2_callout_block_8)(unsafe.Pointer(cb)).Fcurrent_position = Tsize_t((int64(ptr) - int64((*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fstart_subject)) / 1)
(*Tpcre2_callout_block_8)(unsafe.Pointer(cb)).Fpattern_position = Tsize_t(uint32(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + uintptr(uint64(1)+extracode))))<<8 | int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + uintptr(uint64(1)+extracode+uint64(1)))))))
(*Tpcre2_callout_block_8)(unsafe.Pointer(cb)).Fnext_item_length = Tsize_t(uint32(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + uintptr(uint64(1+DLINK_SIZE)+extracode))))<<8 | int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + uintptr(uint64(1+DLINK_SIZE)+extracode+uint64(1)))))))
if int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + uintptr(extracode)))) == OP_CALLOUT {
(*Tpcre2_callout_block_8)(unsafe.Pointer(cb)).Fcallout_number = Tuint32_t(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + uintptr(uint64(1+2*DLINK_SIZE)+extracode))))
(*Tpcre2_callout_block_8)(unsafe.Pointer(cb)).Fcallout_string_offset = uint64(0)
(*Tpcre2_callout_block_8)(unsafe.Pointer(cb)).Fcallout_string = uintptr(0)
(*Tpcre2_callout_block_8)(unsafe.Pointer(cb)).Fcallout_string_length = uint64(0)
} else {
(*Tpcre2_callout_block_8)(unsafe.Pointer(cb)).Fcallout_number = Tuint32_t(0)
(*Tpcre2_callout_block_8)(unsafe.Pointer(cb)).Fcallout_string_offset = Tsize_t(uint32(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + uintptr(uint64(1+3*DLINK_SIZE)+extracode))))<<8 | int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + uintptr(uint64(1+3*DLINK_SIZE)+extracode+uint64(1)))))))
(*Tpcre2_callout_block_8)(unsafe.Pointer(cb)).Fcallout_string = code + uintptr(uint64(1+4*DLINK_SIZE)+extracode) + uintptr(1)
(*Tpcre2_callout_block_8)(unsafe.Pointer(cb)).Fcallout_string_length = *(*Tsize_t)(unsafe.Pointer(lengthptr)) - uint64(1+4*DLINK_SIZE) - uint64(2)
}
return (*struct {
f func(*libc.TLS, uintptr, uintptr) int32
})(unsafe.Pointer(&struct{ uintptr }{(*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fcallout})).f(tls, cb, (*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fcallout_data)
}
// ************************************************
//
// Expand local workspace memory *
//
// This function is called when internal_dfa_match() is about to be called
// recursively and there is insufficient working space left in the current
// workspace block. If there's an existing next block, use it; otherwise get a new
// block unless the heap limit is reached.
//
// Arguments:
// rwsptr pointer to block pointer (updated)
// ovecsize space needed for an ovector
// mb the match block
//
// Returns: 0 rwsptr has been updated
// !0 an error code
func more_workspace(tls *libc.TLS, rwsptr uintptr, ovecsize uint32, mb uintptr) int32 { /* pcre2_dfa_match.c:413:1: */
var rws uintptr = *(*uintptr)(unsafe.Pointer(rwsptr))
var new uintptr
if (*TRWS_anchor)(unsafe.Pointer(rws)).Fnext != uintptr(0) {
new = (*TRWS_anchor)(unsafe.Pointer(rws)).Fnext
} else {
var newsize Tuint32_t
if (*TRWS_anchor)(unsafe.Pointer(rws)).Fsize >= 4294967295/uint32(2) {
newsize = 4294967295 / uint32(2)
} else {
newsize = (*TRWS_anchor)(unsafe.Pointer(rws)).Fsize * Tuint32_t(2)
}
var newsizeK Tuint32_t = Tuint32_t(uint64(newsize) / (uint64(1024) / uint64(unsafe.Sizeof(int32(0)))))
if Tsize_t(newsizeK)+(*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fheap_used > (*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fheap_limit {
newsizeK = Tuint32_t((*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fheap_limit - (*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fheap_used)
}
newsize = Tuint32_t(uint64(newsizeK) * (uint64(1024) / uint64(unsafe.Sizeof(int32(0)))))
if uint64(newsize) < uint64(uint32(DRWS_RSIZE)+ovecsize)+uint64(unsafe.Sizeof(TRWS_anchor{}))/uint64(unsafe.Sizeof(int32(0))) {
return -63
}
new = (*struct {
f func(*libc.TLS, Tsize_t, uintptr) uintptr
})(unsafe.Pointer(&struct{ uintptr }{(*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fmemctl.Fmalloc})).f(tls, uint64(newsize)*uint64(unsafe.Sizeof(int32(0))), (*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fmemctl.Fmemory_data)
if new == uintptr(0) {
return -48
}
*(*Tsize_t)(unsafe.Pointer(mb + 88)) += Tsize_t(newsizeK)
(*TRWS_anchor)(unsafe.Pointer(new)).Fnext = uintptr(0)
(*TRWS_anchor)(unsafe.Pointer(new)).Fsize = newsize
(*TRWS_anchor)(unsafe.Pointer(rws)).Fnext = new
}
(*TRWS_anchor)(unsafe.Pointer(new)).Ffree = Tuint32_t(uint64((*TRWS_anchor)(unsafe.Pointer(new)).Fsize) - uint64(unsafe.Sizeof(TRWS_anchor{}))/uint64(unsafe.Sizeof(int32(0))))
*(*uintptr)(unsafe.Pointer(rwsptr)) = new
return 0
}
// ************************************************
//
// Match a Regular Expression - DFA engine *
//
// This internal function applies a compiled pattern to a subject string,
// starting at a given point, using a DFA engine. This function is called from the
// external one, possibly multiple times if the pattern is not anchored. The
// function calls itself recursively for some kinds of subpattern.
//
// Arguments:
// mb the match_data block with fixed information
// this_start_code the opening bracket of this subexpression's code
// current_subject where we currently are in the subject string
// start_offset start offset in the subject string
// offsets vector to contain the matching string offsets
// offsetcount size of same
// workspace vector of workspace
// wscount size of same
// rlevel function call recursion level
//
// Returns: > 0 => number of match offset pairs placed in offsets
// = 0 => offsets overflowed; longest matches are present
// -1 => failed to match
// < -1 => some kind of unexpected problem
//
// The following macros are used for adding states to the two state vectors (one
// for the current character, one for the following character).
// And now, here is the code
func internal_dfa_match(tls *libc.TLS, mb uintptr, this_start_code TPCRE2_SPTR8, current_subject TPCRE2_SPTR8, start_offset Tsize_t, offsets uintptr, offsetcount Tuint32_t, workspace uintptr, wscount int32, rlevel Tuint32_t, RWS uintptr) int32 { /* pcre2_dfa_match.c:522:1: */
bp := tls.Alloc(96)
defer tls.Free(96)
var active_states uintptr
var new_states uintptr
var temp_states uintptr
var next_active_state uintptr
var next_new_state uintptr
var ctypes uintptr
var lcc uintptr
var fcc uintptr
var ptr TPCRE2_SPTR8
var end_code TPCRE2_SPTR8
// var new_recursive Tdfa_recursion_info at bp+48, 24
var active_count int32
var new_count int32
var match_count int32
// Some fields in the mb block are frequently referenced, so we load them into
// independent variables in the hope that this will perform better.
var start_subject TPCRE2_SPTR8
var end_subject TPCRE2_SPTR8
var start_code TPCRE2_SPTR8
var utf TBOOL
var utf_or_ucp TBOOL
var reset_could_continue TBOOL
var back Tsize_t
var current_offset Tsize_t
var bstate int32
var revlen Tuint32_t
var back1 Tsize_t
var max_back Tsize_t
var gone_back Tsize_t
var length int32
var cat Tuint32_t
var temp TPCRE2_SPTR8
var temp1 TPCRE2_SPTR8
var cat1 Tuint32_t
var left_word int32
var right_word int32
var OK TBOOL
var cp uintptr
var prop uintptr
var OK1 TBOOL
var cp1 uintptr
var prop1 uintptr
// var ncount int32 at bp, 4
var ncount1 int32
var OK2 TBOOL
var OK3 TBOOL
var OK4 TBOOL
var cp2 uintptr
var prop2 uintptr
// var ncount2 int32 at bp+4, 4
var ncount3 int32
var OK5 TBOOL
var OK6 TBOOL
var OK7 TBOOL
var cp3 uintptr
var prop3 uintptr
var nptr TPCRE2_SPTR8
// var ncount4 int32 at bp+8, 4
var ncount5 int32
var OK8 TBOOL
var OK9 TBOOL
var othercase uint32
// var ncount6 int32 at bp+12, 4
var nptr1 TPCRE2_SPTR8
var otherd Tuint32_t
var otherd1 Tuint32_t
var otherd2 Tuint32_t
var otherd3 Tuint32_t
var otherd4 Tuint32_t
var otherd5 Tuint32_t
var max int32
var isinclass TBOOL
var next_state_offset int32
var ecode TPCRE2_SPTR8
var rc int32
var local_workspace uintptr
var local_offsets uintptr
var endasscode TPCRE2_SPTR8
// var rws uintptr at bp+16, 8
// var callout_length Tsize_t at bp+24, 8
var value uint32
var rc1 int32
var local_workspace1 uintptr
var local_offsets1 uintptr
var asscode TPCRE2_SPTR8
var endasscode1 TPCRE2_SPTR8
// var rws1 uintptr at bp+32, 8
var codelink int32
var condcode TPCRE2_UCHAR8
var p TPCRE2_SPTR8
var pp TPCRE2_SPTR8
var charcount Tsize_t
var rc2 int32
var local_workspace2 uintptr
var local_offsets2 uintptr
// var rws2 uintptr at bp+40, 8
var ri uintptr
var callpat TPCRE2_SPTR8
var recno Tuint32_t
var p1 TPCRE2_SPTR8
var pp1 TPCRE2_SPTR8
var end_subpattern TPCRE2_SPTR8
var next_state_offset1 int32
var rc3 int32
var local_workspace3 uintptr
var local_offsets3 uintptr
var charcount1 Tsize_t
var matched_count Tsize_t
var local_ptr TPCRE2_SPTR8
// var rws3 uintptr at bp+72, 8
var allow_zero TBOOL
var p2 TPCRE2_SPTR8
var pp2 TPCRE2_SPTR8
var end_subpattern1 TPCRE2_SPTR8
var charcount2 Tsize_t
var next_state_offset2 int32
var repeat_state_offset int32
var rc4 int32
var local_workspace4 uintptr
var local_offsets4 uintptr
// var rws4 uintptr at bp+80, 8
// var callout_length1 Tsize_t at bp+88, 8
var current_state uintptr
var caseless TBOOL
var code TPCRE2_SPTR8
var codevalue Tuint32_t
var state_offset int32
var rrc int32
var count int32
var i int32
var j int32
var clen int32
var dlen int32
var c Tuint32_t
var d Tuint32_t
var forced_fail int32
var partial_newline TBOOL
var could_continue TBOOL
start_subject = (*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fstart_subject
end_subject = (*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fend_subject
start_code = (*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fstart_code
utf = libc.Bool32((*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fpoptions&DPCRE2_UTF != Tuint32_t(0))
utf_or_ucp = libc.Bool32(utf != 0 || (*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fpoptions&DPCRE2_UCP != Tuint32_t(0))
reset_could_continue = DFALSE
if !(libc.PostIncUint32(&(*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fmatch_call_count, 1) >= (*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fmatch_limit) {
goto __1
}
return -47
__1:
;
if !(libc.PostIncUint32(&rlevel, 1) > (*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fmatch_limit_depth) {
goto __2
}
return -53
__2:
;
offsetcount = offsetcount & libc.Uint32(libc.Uint32FromInt32(-2)) // Round down
wscount = wscount - 2
wscount = (wscount - wscount%(int32(uint64(unsafe.Sizeof(Tstateblock{}))/uint64(unsafe.Sizeof(int32(0))))*2)) / (2 * int32(uint64(unsafe.Sizeof(Tstateblock{}))/uint64(unsafe.Sizeof(int32(0)))))
ctypes = (*Tdfa_match_block_8)(unsafe.Pointer(mb)).Ftables + uintptr(Dcbits_offset+Dcbit_length)
lcc = (*Tdfa_match_block_8)(unsafe.Pointer(mb)).Ftables + uintptr(Dlcc_offset)
fcc = (*Tdfa_match_block_8)(unsafe.Pointer(mb)).Ftables + uintptr(Dfcc_offset)
match_count = -1 // A negative number
active_states = workspace + uintptr(2)*4
next_new_state = libc.AssignUintptr(&new_states, active_states+uintptr(wscount)*12)
new_count = 0
// The first thing in any (sub) pattern is a bracket of some sort. Push all
// the alternative states onto the list, and find out where the end is. This
// makes is possible to use this function recursively, when we want to stop at a
// matching internal ket rather than at the end.
//
// If we are dealing with a backward assertion we have to find out the maximum
// amount to move back, and set up each alternative appropriately.
if !(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(this_start_code))) == OP_ASSERTBACK || int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(this_start_code))) == OP_ASSERTBACK_NOT) {
goto __3
}
max_back = uint64(0)
end_code = this_start_code
__5:
back = Tsize_t(uint32(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(end_code + 4)))<<8 | int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(end_code + 5)))))
if !(back > max_back) {
goto __8
}
max_back = back
__8:
;
end_code += TPCRE2_SPTR8(uint32(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(end_code + 1)))<<8 | int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(end_code + 2)))))
goto __6
__6:
if int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(end_code))) == OP_ALT {
goto __5
}
goto __7
__7:
;
// If we can't go back the amount required for the longest lookbehind
// pattern, go back as far as we can; some alternatives may still be viable.
// In character mode we have to step back character by character
if !(utf != 0) {
goto __9
}
gone_back = uint64(0)
__11:
if !(gone_back < max_back) {
goto __13
}
if !(current_subject <= start_subject) {
goto __14
}
goto __13
__14:
;
current_subject--
__15:
if !(current_subject > start_subject && uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(current_subject)))&0xc0 == 0x80) {
goto __16
}
current_subject--
goto __15
__16:
;
goto __12
__12:
gone_back++
goto __11
goto __13
__13:
;
goto __10
__9:
/* In byte-mode we can do this quickly. */
current_offset = Tsize_t((int64(current_subject) - int64(start_subject)) / 1)
if current_offset < max_back {
gone_back = current_offset
} else {
gone_back = max_back
}
current_subject -= TPCRE2_SPTR8(gone_back)
__10:
;
// Save the earliest consulted character
if !(current_subject < (*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fstart_used_ptr) {
goto __17
}
(*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fstart_used_ptr = current_subject
__17:
;
// Now we can process the individual branches. There will be an OP_REVERSE at
// the start of each branch, except when the length of the branch is zero.
end_code = this_start_code
__18:
if int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(end_code + 3))) == OP_REVERSE {
revlen = uint32(1 + DLINK_SIZE)
} else {
revlen = uint32(0)
}
if revlen == Tuint32_t(0) {
back1 = uint64(0)
} else {
back1 = Tsize_t(uint32(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(end_code + 4)))<<8 | int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(end_code + 5)))))
}
if !(back1 <= gone_back) {
goto __21
}
bstate = int32((int64(end_code)-int64(start_code))/1 + int64(1) + int64(DLINK_SIZE) + int64(revlen))
if !(libc.PostIncInt32(&new_count, 1) < wscount) {
goto __22
}
(*Tstateblock)(unsafe.Pointer(next_new_state)).Foffset = -bstate
(*Tstateblock)(unsafe.Pointer(next_new_state)).Fcount = 0
(*Tstateblock)(unsafe.Pointer(next_new_state)).Fdata = int32(gone_back - back1)
next_new_state += 12
goto __23
__22:
return -43
__23:
;
__21:
;
end_code += TPCRE2_SPTR8(uint32(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(end_code + 1)))<<8 | int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(end_code + 2)))))
goto __19
__19:
if int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(end_code))) == OP_ALT {
goto __18
}
goto __20
__20:
;
goto __4
__3:
end_code = this_start_code
// Restarting
if !(rlevel == Tuint32_t(1) && (*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fmoptions&DPCRE2_DFA_RESTART != Tuint32_t(0)) {
goto __24
}
__26:
end_code += TPCRE2_SPTR8(uint32(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(end_code + 1)))<<8 | int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(end_code + 2)))))
goto __27
__27:
if int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(end_code))) == OP_ALT {
goto __26
}
goto __28
__28:
;
new_count = *(*int32)(unsafe.Pointer(workspace + 1*4))
if !!(*(*int32)(unsafe.Pointer(workspace)) != 0) {
goto __29
}
libc.Xmemcpy(tls, new_states, active_states, Tsize_t(new_count)*Tsize_t(unsafe.Sizeof(Tstateblock{})))
__29:
;
goto __25
__24:
length = 1 + DLINK_SIZE + func() int32 {
if int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(this_start_code))) == OP_CBRA || int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(this_start_code))) == OP_SCBRA || int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(this_start_code))) == OP_CBRAPOS || int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(this_start_code))) == OP_SCBRAPOS {
return DIMM2_SIZE
}
return 0
}()
__30:
if !(libc.PostIncInt32(&new_count, 1) < wscount) {
goto __33
}
(*Tstateblock)(unsafe.Pointer(next_new_state)).Foffset = int32((int64(end_code)-int64(start_code))/1 + int64(length))
(*Tstateblock)(unsafe.Pointer(next_new_state)).Fcount = 0
next_new_state += 12
goto __34
__33:
return -43
__34:
;
end_code += TPCRE2_SPTR8(uint32(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(end_code + 1)))<<8 | int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(end_code + 2)))))
length = 1 + DLINK_SIZE
goto __31
__31:
if int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(end_code))) == OP_ALT {
goto __30
}
goto __32
__32:
;
__25:
;
__4:
;
*(*int32)(unsafe.Pointer(workspace)) = 0 // Bit indicating which vector is current
// Loop for scanning the subject
ptr = current_subject
__35:
forced_fail = 0
partial_newline = DFALSE
could_continue = reset_could_continue
reset_could_continue = DFALSE
if !(ptr > (*Tdfa_match_block_8)(unsafe.Pointer(mb)).Flast_used_ptr) {
goto __38
}
(*Tdfa_match_block_8)(unsafe.Pointer(mb)).Flast_used_ptr = ptr
__38:
;
// Make the new state list into the active state list and empty the
// new state list.
temp_states = active_states
active_states = new_states
new_states = temp_states
active_count = new_count
new_count = 0
*(*int32)(unsafe.Pointer(workspace)) ^= 1 // Remember for the restarting feature
*(*int32)(unsafe.Pointer(workspace + 1*4)) = active_count
// Set the pointers for adding new states
next_active_state = active_states + uintptr(active_count)*12
next_new_state = new_states
// Load the current character from the subject outside the loop, as many
// different states may want to look at it, and we assume that at least one
// will.
if !(ptr < end_subject) {
goto __39
}
clen = 1 // Number of data items in the character
c = Tuint32_t(*(*TPCRE2_UCHAR8)(unsafe.Pointer(ptr)))
if !(utf != 0 && c >= 0xc0) {
goto __41
}
if !(c&0x20 == Tuint32_t(0)) {
goto __42
}
c = c&0x1f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(ptr + 1)))&0x3f
clen++
goto __43
__42:
if !(c&0x10 == Tuint32_t(0)) {
goto __44
}
c = c&0x0f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(ptr + 1)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(ptr + 2)))&0x3f
clen = clen + 2
goto __45
__44:
if !(c&0x08 == Tuint32_t(0)) {
goto __46
}
c = c&0x07<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(ptr + 1)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(ptr + 2)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(ptr + 3)))&0x3f
clen = clen + 3
goto __47
__46:
if !(c&0x04 == Tuint32_t(0)) {
goto __48
}
c = c&0x03<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(ptr + 1)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(ptr + 2)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(ptr + 3)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(ptr + 4)))&0x3f
clen = clen + 4
goto __49
__48:
c = c&0x01<<30 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(ptr + 1)))&0x3f<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(ptr + 2)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(ptr + 3)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(ptr + 4)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(ptr + 5)))&0x3f
clen = clen + 5
__49:
;
__47:
;
__45:
;
__43:
;
__41:
;
goto __40
__39:
clen = 0 // This indicates the end of the subject
c = DNOTACHAR // This value should never actually be used
__40:
;
// Scan up the active states and act on each one. The result of an action
// may be to add more states to the currently active list (e.g. on hitting a
// parenthesis) or it may be to put states on the new list, for considering
// when we move the character pointer on.
i = 0
__50:
if !(i < active_count) {
goto __52
}
current_state = active_states + uintptr(i)*12
caseless = DFALSE
state_offset = (*Tstateblock)(unsafe.Pointer(current_state)).Foffset
// A negative offset is a special case meaning "hold off going to this
// (negated) state until the number of characters in the data field have
// been skipped". If the could_continue flag was passed over from a previous
// state, arrange for it to passed on.
if !(state_offset < 0) {
goto __53
}
if !((*Tstateblock)(unsafe.Pointer(current_state)).Fdata > 0) {
goto __54
}
if !(libc.PostIncInt32(&new_count, 1) < wscount) {
goto __56
}
(*Tstateblock)(unsafe.Pointer(next_new_state)).Foffset = state_offset
(*Tstateblock)(unsafe.Pointer(next_new_state)).Fcount = (*Tstateblock)(unsafe.Pointer(current_state)).Fcount
(*Tstateblock)(unsafe.Pointer(next_new_state)).Fdata = (*Tstateblock)(unsafe.Pointer(current_state)).Fdata - 1
next_new_state += 12
goto __57
__56:
return -43
__57:
;
if !(could_continue != 0) {
goto __58
}
reset_could_continue = DTRUE
__58:
;
goto __51
goto __55
__54:
(*Tstateblock)(unsafe.Pointer(current_state)).Foffset = libc.AssignInt32(&state_offset, -state_offset)
__55:
;
__53:
;
// Check for a duplicate state with the same count, and skip if found.
// See the note at the head of this module about the possibility of improving
// performance here.
j = 0
__59:
if !(j < i) {
goto __61
}
if !((*Tstateblock)(unsafe.Pointer(active_states+uintptr(j)*12)).Foffset == state_offset && (*Tstateblock)(unsafe.Pointer(active_states+uintptr(j)*12)).Fcount == (*Tstateblock)(unsafe.Pointer(current_state)).Fcount) {
goto __62
}
goto NEXT_ACTIVE_STATE
__62:
;
goto __60
__60:
j++
goto __59
goto __61
__61:
;
// The state offset is the offset to the opcode
code = start_code + uintptr(state_offset)
codevalue = Tuint32_t(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code)))
// If this opcode inspects a character, but we are at the end of the
// subject, remember the fact for use when testing for a partial match.
if !(clen == 0 && int32(poptable[codevalue]) != 0) {
goto __63
}
could_continue = DTRUE
__63:
;
// If this opcode is followed by an inline character, load it. It is
// tempting to test for the presence of a subject character here, but that
// is wrong, because sometimes zero repetitions of the subject are
// permitted.
//
// We also use this mechanism for opcodes such as OP_TYPEPLUS that take an
// argument that is not a data character - but is always one byte long because
// the values are small. We have to take special action to deal with \P, \p,
// \H, \h, \V, \v and \X in this case. To keep the other cases fast, convert
// these ones to new opcodes.
if !(int32(coptable[codevalue]) > 0) {
goto __64
}
dlen = 1
if !(utf != 0) {
goto __66
}
d = Tuint32_t(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + uintptr(coptable[codevalue]))))
if !(d >= 0xc0) {
goto __68
}
if !(d&0x20 == Tuint32_t(0)) {
goto __69
}
d = d&0x1f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + uintptr(coptable[codevalue]) + 1)))&0x3f
dlen++
goto __70
__69:
if !(d&0x10 == Tuint32_t(0)) {
goto __71
}
d = d&0x0f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + uintptr(coptable[codevalue]) + 1)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + uintptr(coptable[codevalue]) + 2)))&0x3f
dlen = dlen + 2
goto __72
__71:
if !(d&0x08 == Tuint32_t(0)) {
goto __73
}
d = d&0x07<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + uintptr(coptable[codevalue]) + 1)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + uintptr(coptable[codevalue]) + 2)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + uintptr(coptable[codevalue]) + 3)))&0x3f
dlen = dlen + 3
goto __74
__73:
if !(d&0x04 == Tuint32_t(0)) {
goto __75
}
d = d&0x03<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + uintptr(coptable[codevalue]) + 1)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + uintptr(coptable[codevalue]) + 2)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + uintptr(coptable[codevalue]) + 3)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + uintptr(coptable[codevalue]) + 4)))&0x3f
dlen = dlen + 4
goto __76
__75:
d = d&0x01<<30 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + uintptr(coptable[codevalue]) + 1)))&0x3f<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + uintptr(coptable[codevalue]) + 2)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + uintptr(coptable[codevalue]) + 3)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + uintptr(coptable[codevalue]) + 4)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + uintptr(coptable[codevalue]) + 5)))&0x3f
dlen = dlen + 5
__76:
;
__74:
;
__72:
;
__70:
;
__68:
;
goto __67
__66:
d = Tuint32_t(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + uintptr(coptable[codevalue]))))
__67:
;
if !(codevalue >= OP_TYPESTAR) {
goto __77
}
switch d {
case OP_ANYBYTE:
goto __79
case OP_NOTPROP:
goto __80
case OP_PROP:
goto __81
case OP_ANYNL:
goto __82
case OP_EXTUNI:
goto __83
case OP_NOT_HSPACE:
goto __84
case OP_HSPACE:
goto __85
case OP_NOT_VSPACE:
goto __86
case OP_VSPACE:
goto __87
default:
goto __88
}
goto __78
__79:
return -42
__80:
__81:
codevalue = codevalue + Tuint32_t(DOP_PROP_EXTRA)
goto __78
__82:
codevalue = codevalue + Tuint32_t(DOP_ANYNL_EXTRA)
goto __78
__83:
codevalue = codevalue + Tuint32_t(DOP_EXTUNI_EXTRA)
goto __78
__84:
__85:
codevalue = codevalue + Tuint32_t(DOP_HSPACE_EXTRA)
goto __78
__86:
__87:
codevalue = codevalue + Tuint32_t(DOP_VSPACE_EXTRA)
goto __78
__88:
goto __78
__78:
;
__77:
;
goto __65
__64:
dlen = 0 // Not strictly necessary, but compilers moan
d = DNOTACHAR // if these variables are not set.
__65:
;
// Now process the individual opcodes
switch codevalue {
// ==========================================================================
// These cases are never obeyed. This is a fudge that causes a compile-
// time error if the vectors coptable or poptable, which are indexed by
// opcode, are not the correct length. It seems to be the only way to do
// such a check at compile time, as the sizeof() operator does not work
// in the C preprocessor.
case OP_TABLE_LENGTH:
goto __90
case Tuint32_t(OP_TABLE_LENGTH + libc.Bool32(uint64(unsafe.Sizeof(coptable)) == OP_TABLE_LENGTH && uint64(unsafe.Sizeof(poptable)) == OP_TABLE_LENGTH)):
goto __91
// ==========================================================================
// Reached a closing bracket. If not at the end of the pattern, carry
// on with the next opcode. For repeating opcodes, also add the repeat
// state. Note that KETRPOS will always be encountered at the end of the
// subpattern, because the possessive subpattern repeats are always handled
// using recursive calls. Thus, it never adds any new states.
//
// At the end of the (sub)pattern, unless we have an empty string and
// PCRE2_NOTEMPTY is set, or PCRE2_NOTEMPTY_ATSTART is set and we are at the
// start of the subject, save the match data, shifting up all previous
// matches so we always have the longest first.
case OP_KET:
goto __92
case OP_KETRMIN:
goto __93
case OP_KETRMAX:
goto __94
case OP_KETRPOS:
goto __95
// ==========================================================================
// These opcodes add to the current list of states without looking
// at the current character.
//-----------------------------------------------------------------
case OP_ALT:
goto __96
//-----------------------------------------------------------------
case OP_BRA:
goto __97
case OP_SBRA:
goto __98
//-----------------------------------------------------------------
case OP_CBRA:
goto __99
case OP_SCBRA:
goto __100
//-----------------------------------------------------------------
case OP_BRAZERO:
goto __101
case OP_BRAMINZERO:
goto __102
//-----------------------------------------------------------------
case OP_SKIPZERO:
goto __103
//-----------------------------------------------------------------
case OP_CIRC:
goto __104
//-----------------------------------------------------------------
case OP_CIRCM:
goto __105
//-----------------------------------------------------------------
case OP_EOD:
goto __106
//-----------------------------------------------------------------
case OP_SOD:
goto __107
//-----------------------------------------------------------------
case OP_SOM:
goto __108
// ==========================================================================
// These opcodes inspect the next subject character, and sometimes
// the previous one as well, but do not have an argument. The variable
// clen contains the length of the current character and is zero if we are
// at the end of the subject.
//-----------------------------------------------------------------
case OP_ANY:
goto __109
//-----------------------------------------------------------------
case OP_ALLANY:
goto __110
//-----------------------------------------------------------------
case OP_EODN:
goto __111
//-----------------------------------------------------------------
case OP_DOLL:
goto __112
//-----------------------------------------------------------------
case OP_DOLLM:
goto __113
//-----------------------------------------------------------------
case OP_DIGIT:
goto __114
case OP_WHITESPACE:
goto __115
case OP_WORDCHAR:
goto __116
//-----------------------------------------------------------------
case OP_NOT_DIGIT:
goto __117
case OP_NOT_WHITESPACE:
goto __118
case OP_NOT_WORDCHAR:
goto __119
//-----------------------------------------------------------------
case OP_WORD_BOUNDARY:
goto __120
case OP_NOT_WORD_BOUNDARY:
goto __121
//-----------------------------------------------------------------
// Check the next character by Unicode property. We will get here only
// if the support is in the binary; otherwise a compile-time error occurs.
//
case OP_PROP:
goto __122
case OP_NOTPROP:
goto __123
// ==========================================================================
// These opcodes likewise inspect the subject character, but have an
// argument that is not a data character. It is one of these opcodes:
// OP_ANY, OP_ALLANY, OP_DIGIT, OP_NOT_DIGIT, OP_WHITESPACE, OP_NOT_SPACE,
// OP_WORDCHAR, OP_NOT_WORDCHAR. The value is loaded into d.
case OP_TYPEPLUS:
goto __124
case OP_TYPEMINPLUS:
goto __125
case OP_TYPEPOSPLUS:
goto __126
//-----------------------------------------------------------------
case OP_TYPEQUERY:
goto __127
case OP_TYPEMINQUERY:
goto __128
case OP_TYPEPOSQUERY:
goto __129
//-----------------------------------------------------------------
case OP_TYPESTAR:
goto __130
case OP_TYPEMINSTAR:
goto __131
case OP_TYPEPOSSTAR:
goto __132
//-----------------------------------------------------------------
case OP_TYPEEXACT:
goto __133
//-----------------------------------------------------------------
case OP_TYPEUPTO:
goto __134
case OP_TYPEMINUPTO:
goto __135
case OP_TYPEPOSUPTO:
goto __136
// ==========================================================================
// These are virtual opcodes that are used when something like
// OP_TYPEPLUS has OP_PROP, OP_NOTPROP, OP_ANYNL, or OP_EXTUNI as its
// argument. It keeps the code above fast for the other cases. The argument
// is in the d variable.
case Tuint32_t(DOP_PROP_EXTRA + OP_TYPEPLUS):
goto __137
case Tuint32_t(DOP_PROP_EXTRA + OP_TYPEMINPLUS):
goto __138
case Tuint32_t(DOP_PROP_EXTRA + OP_TYPEPOSPLUS):
goto __139
//-----------------------------------------------------------------
case Tuint32_t(DOP_EXTUNI_EXTRA + OP_TYPEPLUS):
goto __140
case Tuint32_t(DOP_EXTUNI_EXTRA + OP_TYPEMINPLUS):
goto __141
case Tuint32_t(DOP_EXTUNI_EXTRA + OP_TYPEPOSPLUS):
goto __142
//-----------------------------------------------------------------
case Tuint32_t(DOP_ANYNL_EXTRA + OP_TYPEPLUS):
goto __143
case Tuint32_t(DOP_ANYNL_EXTRA + OP_TYPEMINPLUS):
goto __144
case Tuint32_t(DOP_ANYNL_EXTRA + OP_TYPEPOSPLUS):
goto __145
//-----------------------------------------------------------------
case Tuint32_t(DOP_VSPACE_EXTRA + OP_TYPEPLUS):
goto __146
case Tuint32_t(DOP_VSPACE_EXTRA + OP_TYPEMINPLUS):
goto __147
case Tuint32_t(DOP_VSPACE_EXTRA + OP_TYPEPOSPLUS):
goto __148
//-----------------------------------------------------------------
case Tuint32_t(DOP_HSPACE_EXTRA + OP_TYPEPLUS):
goto __149
case Tuint32_t(DOP_HSPACE_EXTRA + OP_TYPEMINPLUS):
goto __150
case Tuint32_t(DOP_HSPACE_EXTRA + OP_TYPEPOSPLUS):
goto __151
//-----------------------------------------------------------------
case Tuint32_t(DOP_PROP_EXTRA + OP_TYPEQUERY):
goto __152
case Tuint32_t(DOP_PROP_EXTRA + OP_TYPEMINQUERY):
goto __153
case Tuint32_t(DOP_PROP_EXTRA + OP_TYPEPOSQUERY):
goto __154
case Tuint32_t(DOP_PROP_EXTRA + OP_TYPESTAR):
goto __155
case Tuint32_t(DOP_PROP_EXTRA + OP_TYPEMINSTAR):
goto __156
case Tuint32_t(DOP_PROP_EXTRA + OP_TYPEPOSSTAR):
goto __157
//-----------------------------------------------------------------
case Tuint32_t(DOP_EXTUNI_EXTRA + OP_TYPEQUERY):
goto __158
case Tuint32_t(DOP_EXTUNI_EXTRA + OP_TYPEMINQUERY):
goto __159
case Tuint32_t(DOP_EXTUNI_EXTRA + OP_TYPEPOSQUERY):
goto __160
case Tuint32_t(DOP_EXTUNI_EXTRA + OP_TYPESTAR):
goto __161
case Tuint32_t(DOP_EXTUNI_EXTRA + OP_TYPEMINSTAR):
goto __162
case Tuint32_t(DOP_EXTUNI_EXTRA + OP_TYPEPOSSTAR):
goto __163
//-----------------------------------------------------------------
case Tuint32_t(DOP_ANYNL_EXTRA + OP_TYPEQUERY):
goto __164
case Tuint32_t(DOP_ANYNL_EXTRA + OP_TYPEMINQUERY):
goto __165
case Tuint32_t(DOP_ANYNL_EXTRA + OP_TYPEPOSQUERY):
goto __166
case Tuint32_t(DOP_ANYNL_EXTRA + OP_TYPESTAR):
goto __167
case Tuint32_t(DOP_ANYNL_EXTRA + OP_TYPEMINSTAR):
goto __168
case Tuint32_t(DOP_ANYNL_EXTRA + OP_TYPEPOSSTAR):
goto __169
//-----------------------------------------------------------------
case Tuint32_t(DOP_VSPACE_EXTRA + OP_TYPEQUERY):
goto __170
case Tuint32_t(DOP_VSPACE_EXTRA + OP_TYPEMINQUERY):
goto __171
case Tuint32_t(DOP_VSPACE_EXTRA + OP_TYPEPOSQUERY):
goto __172
case Tuint32_t(DOP_VSPACE_EXTRA + OP_TYPESTAR):
goto __173
case Tuint32_t(DOP_VSPACE_EXTRA + OP_TYPEMINSTAR):
goto __174
case Tuint32_t(DOP_VSPACE_EXTRA + OP_TYPEPOSSTAR):
goto __175
//-----------------------------------------------------------------
case Tuint32_t(DOP_HSPACE_EXTRA + OP_TYPEQUERY):
goto __176
case Tuint32_t(DOP_HSPACE_EXTRA + OP_TYPEMINQUERY):
goto __177
case Tuint32_t(DOP_HSPACE_EXTRA + OP_TYPEPOSQUERY):
goto __178
case Tuint32_t(DOP_HSPACE_EXTRA + OP_TYPESTAR):
goto __179
case Tuint32_t(DOP_HSPACE_EXTRA + OP_TYPEMINSTAR):
goto __180
case Tuint32_t(DOP_HSPACE_EXTRA + OP_TYPEPOSSTAR):
goto __181
//-----------------------------------------------------------------
case Tuint32_t(DOP_PROP_EXTRA + OP_TYPEEXACT):
goto __182
case Tuint32_t(DOP_PROP_EXTRA + OP_TYPEUPTO):
goto __183
case Tuint32_t(DOP_PROP_EXTRA + OP_TYPEMINUPTO):
goto __184
case Tuint32_t(DOP_PROP_EXTRA + OP_TYPEPOSUPTO):
goto __185
//-----------------------------------------------------------------
case Tuint32_t(DOP_EXTUNI_EXTRA + OP_TYPEEXACT):
goto __186
case Tuint32_t(DOP_EXTUNI_EXTRA + OP_TYPEUPTO):
goto __187
case Tuint32_t(DOP_EXTUNI_EXTRA + OP_TYPEMINUPTO):
goto __188
case Tuint32_t(DOP_EXTUNI_EXTRA + OP_TYPEPOSUPTO):
goto __189
//-----------------------------------------------------------------
case Tuint32_t(DOP_ANYNL_EXTRA + OP_TYPEEXACT):
goto __190
case Tuint32_t(DOP_ANYNL_EXTRA + OP_TYPEUPTO):
goto __191
case Tuint32_t(DOP_ANYNL_EXTRA + OP_TYPEMINUPTO):
goto __192
case Tuint32_t(DOP_ANYNL_EXTRA + OP_TYPEPOSUPTO):
goto __193
//-----------------------------------------------------------------
case Tuint32_t(DOP_VSPACE_EXTRA + OP_TYPEEXACT):
goto __194
case Tuint32_t(DOP_VSPACE_EXTRA + OP_TYPEUPTO):
goto __195
case Tuint32_t(DOP_VSPACE_EXTRA + OP_TYPEMINUPTO):
goto __196
case Tuint32_t(DOP_VSPACE_EXTRA + OP_TYPEPOSUPTO):
goto __197
//-----------------------------------------------------------------
case Tuint32_t(DOP_HSPACE_EXTRA + OP_TYPEEXACT):
goto __198
case Tuint32_t(DOP_HSPACE_EXTRA + OP_TYPEUPTO):
goto __199
case Tuint32_t(DOP_HSPACE_EXTRA + OP_TYPEMINUPTO):
goto __200
case Tuint32_t(DOP_HSPACE_EXTRA + OP_TYPEPOSUPTO):
goto __201
// ==========================================================================
// These opcodes are followed by a character that is usually compared
// to the current subject character; it is loaded into d. We still get
// here even if there is no subject character, because in some cases zero
// repetitions are permitted.
//-----------------------------------------------------------------
case OP_CHAR:
goto __202
//-----------------------------------------------------------------
case OP_CHARI:
goto __203
//-----------------------------------------------------------------
// This is a tricky one because it can match more than one character.
// Find out how many characters to skip, and then set up a negative state
// to wait for them to pass before continuing.
case OP_EXTUNI:
goto __204
//-----------------------------------------------------------------
// This is a tricky like EXTUNI because it too can match more than one
// character (when CR is followed by LF). In this case, set up a negative
// state to wait for one character to pass before continuing.
case OP_ANYNL:
goto __205
//-----------------------------------------------------------------
case OP_NOT_VSPACE:
goto __206
//-----------------------------------------------------------------
case OP_VSPACE:
goto __207
//-----------------------------------------------------------------
case OP_NOT_HSPACE:
goto __208
//-----------------------------------------------------------------
case OP_HSPACE:
goto __209
//-----------------------------------------------------------------
// Match a negated single character casefully.
case OP_NOT:
goto __210
//-----------------------------------------------------------------
// Match a negated single character caselessly.
case OP_NOTI:
goto __211
//-----------------------------------------------------------------
case OP_PLUSI:
goto __212
case OP_MINPLUSI:
goto __213
case OP_POSPLUSI:
goto __214
case OP_NOTPLUSI:
goto __215
case OP_NOTMINPLUSI:
goto __216
case OP_NOTPOSPLUSI:
goto __217
// Fall through
case OP_PLUS:
goto __218
case OP_MINPLUS:
goto __219
case OP_POSPLUS:
goto __220
case OP_NOTPLUS:
goto __221
case OP_NOTMINPLUS:
goto __222
case OP_NOTPOSPLUS:
goto __223
//-----------------------------------------------------------------
case OP_QUERYI:
goto __224
case OP_MINQUERYI:
goto __225
case OP_POSQUERYI:
goto __226
case OP_NOTQUERYI:
goto __227
case OP_NOTMINQUERYI:
goto __228
case OP_NOTPOSQUERYI:
goto __229
// Fall through
case OP_QUERY:
goto __230
case OP_MINQUERY:
goto __231
case OP_POSQUERY:
goto __232
case OP_NOTQUERY:
goto __233
case OP_NOTMINQUERY:
goto __234
case OP_NOTPOSQUERY:
goto __235
//-----------------------------------------------------------------
case OP_STARI:
goto __236
case OP_MINSTARI:
goto __237
case OP_POSSTARI:
goto __238
case OP_NOTSTARI:
goto __239
case OP_NOTMINSTARI:
goto __240
case OP_NOTPOSSTARI:
goto __241
// Fall through
case OP_STAR:
goto __242
case OP_MINSTAR:
goto __243
case OP_POSSTAR:
goto __244
case OP_NOTSTAR:
goto __245
case OP_NOTMINSTAR:
goto __246
case OP_NOTPOSSTAR:
goto __247
//-----------------------------------------------------------------
case OP_EXACTI:
goto __248
case OP_NOTEXACTI:
goto __249
// Fall through
case OP_EXACT:
goto __250
case OP_NOTEXACT:
goto __251
//-----------------------------------------------------------------
case OP_UPTOI:
goto __252
case OP_MINUPTOI:
goto __253
case OP_POSUPTOI:
goto __254
case OP_NOTUPTOI:
goto __255
case OP_NOTMINUPTOI:
goto __256
case OP_NOTPOSUPTOI:
goto __257
// Fall through
case OP_UPTO:
goto __258
case OP_MINUPTO:
goto __259
case OP_POSUPTO:
goto __260
case OP_NOTUPTO:
goto __261
case OP_NOTMINUPTO:
goto __262
case OP_NOTPOSUPTO:
goto __263
// ==========================================================================
// These are the class-handling opcodes
case OP_CLASS:
goto __264
case OP_NCLASS:
goto __265
case OP_XCLASS:
goto __266
// ==========================================================================
// These are the opcodes for fancy brackets of various kinds. We have
// to use recursion in order to handle them. The "always failing" assertion
// (?!) is optimised to OP_FAIL when compiling, so we have to support that,
// though the other "backtracking verbs" are not supported.
case OP_FAIL:
goto __267
case OP_ASSERT:
goto __268
case OP_ASSERT_NOT:
goto __269
case OP_ASSERTBACK:
goto __270
case OP_ASSERTBACK_NOT:
goto __271
//-----------------------------------------------------------------
case OP_COND:
goto __272
case OP_SCOND:
goto __273
//-----------------------------------------------------------------
case OP_RECURSE:
goto __274
//-----------------------------------------------------------------
case OP_BRAPOS:
goto __275
case OP_SBRAPOS:
goto __276
case OP_CBRAPOS:
goto __277
case OP_SCBRAPOS:
goto __278
case OP_BRAPOSZERO:
goto __279
//-----------------------------------------------------------------
case OP_ONCE:
goto __280
// ==========================================================================
// Handle callouts
case OP_CALLOUT:
goto __281
case OP_CALLOUT_STR:
goto __282
// ==========================================================================
default:
goto __283
}
goto __89
// ==========================================================================
// These cases are never obeyed. This is a fudge that causes a compile-
// time error if the vectors coptable or poptable, which are indexed by
// opcode, are not the correct length. It seems to be the only way to do
// such a check at compile time, as the sizeof() operator does not work
// in the C preprocessor.
__90:
__91:
return 0
// ==========================================================================
// Reached a closing bracket. If not at the end of the pattern, carry
// on with the next opcode. For repeating opcodes, also add the repeat
// state. Note that KETRPOS will always be encountered at the end of the
// subpattern, because the possessive subpattern repeats are always handled
// using recursive calls. Thus, it never adds any new states.
//
// At the end of the (sub)pattern, unless we have an empty string and
// PCRE2_NOTEMPTY is set, or PCRE2_NOTEMPTY_ATSTART is set and we are at the
// start of the subject, save the match data, shifting up all previous
// matches so we always have the longest first.
__92:
__93:
__94:
__95:
if !(code != end_code) {
goto __284
}
if !(libc.PostIncInt32(&active_count, 1) < wscount) {
goto __286
}
(*Tstateblock)(unsafe.Pointer(next_active_state)).Foffset = state_offset + 1 + DLINK_SIZE
(*Tstateblock)(unsafe.Pointer(next_active_state)).Fcount = 0
next_active_state += 12
goto __287
__286:
return -43
__287:
;
if !(codevalue != OP_KET) {
goto __288
}
if !(libc.PostIncInt32(&active_count, 1) < wscount) {
goto __289
}
(*Tstateblock)(unsafe.Pointer(next_active_state)).Foffset = state_offset - int32(uint32(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + 1)))<<8|int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + 2)))))
(*Tstateblock)(unsafe.Pointer(next_active_state)).Fcount = 0
next_active_state += 12
goto __290
__289:
return -43
__290:
;
__288:
;
goto __285
__284:
if !(ptr > current_subject || (*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fmoptions&DPCRE2_NOTEMPTY == Tuint32_t(0) && ((*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fmoptions&DPCRE2_NOTEMPTY_ATSTART == Tuint32_t(0) || current_subject > start_subject+uintptr((*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fstart_offset))) {
goto __291
}
if !(match_count < 0) {
goto __292
}
if offsetcount >= Tuint32_t(2) {
match_count = 1
} else {
match_count = 0
}
goto __293
__292:
if !(match_count > 0 && libc.PreIncInt32(&match_count, 1)*2 > int32(offsetcount)) {
goto __294
}
match_count = 0
__294:
;
__293:
;
count = func() int32 {
if match_count == 0 {
return int32(offsetcount)
}
return match_count * 2
}() - 2
if !(count > 0) {
goto __295
}
libc.Xmemmove(tls, offsets+uintptr(2)*8, offsets,
Tsize_t(count)*Tsize_t(unsafe.Sizeof(Tsize_t(0))))
__295:
;
if !(offsetcount >= Tuint32_t(2)) {
goto __296
}
*(*Tsize_t)(unsafe.Pointer(offsets)) = Tsize_t((int64(current_subject) - int64(start_subject)) / 1)
*(*Tsize_t)(unsafe.Pointer(offsets + 1*8)) = Tsize_t((int64(ptr) - int64(start_subject)) / 1)
__296:
;
if !((*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fmoptions&DPCRE2_DFA_SHORTEST != Tuint32_t(0)) {
goto __297
}
return match_count
__297:
;
__291:
;
__285:
;
goto __89
// ==========================================================================
// These opcodes add to the current list of states without looking
// at the current character.
//-----------------------------------------------------------------
__96:
__298:
code += TPCRE2_SPTR8(uint32(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + 1)))<<8 | int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + 2)))))
goto __299
__299:
if int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code))) == OP_ALT {
goto __298
}
goto __300
__300:
;
if !(libc.PostIncInt32(&active_count, 1) < wscount) {
goto __301
}
(*Tstateblock)(unsafe.Pointer(next_active_state)).Foffset = int32((int64(code) - int64(start_code)) / 1)
(*Tstateblock)(unsafe.Pointer(next_active_state)).Fcount = 0
next_active_state += 12
goto __302
__301:
return -43
__302:
;
goto __89
//-----------------------------------------------------------------
__97:
__98:
__303:
if !(libc.PostIncInt32(&active_count, 1) < wscount) {
goto __306
}
(*Tstateblock)(unsafe.Pointer(next_active_state)).Foffset = int32((int64(code)-int64(start_code))/1 + int64(1) + int64(DLINK_SIZE))
(*Tstateblock)(unsafe.Pointer(next_active_state)).Fcount = 0
next_active_state += 12
goto __307
__306:
return -43
__307:
;
code += TPCRE2_SPTR8(uint32(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + 1)))<<8 | int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + 2)))))
goto __304
__304:
if int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code))) == OP_ALT {
goto __303
}
goto __305
__305:
;
goto __89
//-----------------------------------------------------------------
__99:
__100:
if !(libc.PostIncInt32(&active_count, 1) < wscount) {
goto __308
}
(*Tstateblock)(unsafe.Pointer(next_active_state)).Foffset = int32((int64(code)-int64(start_code))/1 + int64(1) + int64(DLINK_SIZE) + int64(DIMM2_SIZE))
(*Tstateblock)(unsafe.Pointer(next_active_state)).Fcount = 0
next_active_state += 12
goto __309
__308:
return -43
__309:
;
code += TPCRE2_SPTR8(uint32(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + 1)))<<8 | int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + 2)))))
__310:
if !(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code))) == OP_ALT) {
goto __311
}
if !(libc.PostIncInt32(&active_count, 1) < wscount) {
goto __312
}
(*Tstateblock)(unsafe.Pointer(next_active_state)).Foffset = int32((int64(code)-int64(start_code))/1 + int64(1) + int64(DLINK_SIZE))
(*Tstateblock)(unsafe.Pointer(next_active_state)).Fcount = 0
next_active_state += 12
goto __313
__312:
return -43
__313:
;
code += TPCRE2_SPTR8(uint32(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + 1)))<<8 | int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + 2)))))
goto __310
__311:
;
goto __89
//-----------------------------------------------------------------
__101:
__102:
if !(libc.PostIncInt32(&active_count, 1) < wscount) {
goto __314
}
(*Tstateblock)(unsafe.Pointer(next_active_state)).Foffset = state_offset + 1
(*Tstateblock)(unsafe.Pointer(next_active_state)).Fcount = 0
next_active_state += 12
goto __315
__314:
return -43
__315:
;
code += TPCRE2_SPTR8(uint32(1) + uint32(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + 2)))<<8|int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + 3)))))
__316:
if !(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code))) == OP_ALT) {
goto __317
}
code += TPCRE2_SPTR8(uint32(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + 1)))<<8 | int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + 2)))))
goto __316
__317:
;
if !(libc.PostIncInt32(&active_count, 1) < wscount) {
goto __318
}
(*Tstateblock)(unsafe.Pointer(next_active_state)).Foffset = int32((int64(code)-int64(start_code))/1 + int64(1) + int64(DLINK_SIZE))
(*Tstateblock)(unsafe.Pointer(next_active_state)).Fcount = 0
next_active_state += 12
goto __319
__318:
return -43
__319:
;
goto __89
//-----------------------------------------------------------------
__103:
code += TPCRE2_SPTR8(uint32(1) + uint32(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + 2)))<<8|int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + 3)))))
__320:
if !(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code))) == OP_ALT) {
goto __321
}
code += TPCRE2_SPTR8(uint32(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + 1)))<<8 | int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + 2)))))
goto __320
__321:
;
if !(libc.PostIncInt32(&active_count, 1) < wscount) {
goto __322
}
(*Tstateblock)(unsafe.Pointer(next_active_state)).Foffset = int32((int64(code)-int64(start_code))/1 + int64(1) + int64(DLINK_SIZE))
(*Tstateblock)(unsafe.Pointer(next_active_state)).Fcount = 0
next_active_state += 12
goto __323
__322:
return -43
__323:
;
goto __89
//-----------------------------------------------------------------
__104:
if !(ptr == start_subject && (*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fmoptions&DPCRE2_NOTBOL == Tuint32_t(0)) {
goto __324
}
if !(libc.PostIncInt32(&active_count, 1) < wscount) {
goto __325
}
(*Tstateblock)(unsafe.Pointer(next_active_state)).Foffset = state_offset + 1
(*Tstateblock)(unsafe.Pointer(next_active_state)).Fcount = 0
next_active_state += 12
goto __326
__325:
return -43
__326:
;
__324:
;
goto __89
//-----------------------------------------------------------------
__105:
if !(ptr == start_subject && (*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fmoptions&DPCRE2_NOTBOL == Tuint32_t(0) || (ptr != end_subject || (*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fpoptions&DPCRE2_ALT_CIRCUMFLEX != Tuint32_t(0)) &&
func() int32 {
if (*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fnltype != Tuint32_t(DNLTYPE_FIXED) {
return libc.Bool32(ptr > (*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fstart_subject && X_pcre2_was_newline_8(tls, ptr, (*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fnltype, (*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fstart_subject, mb+120, utf) != 0)
}
return libc.Bool32(ptr >= (*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fstart_subject+uintptr((*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fnllen) && int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(ptr - uintptr((*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fnllen)))) == int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(mb + 128))) && ((*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fnllen == Tuint32_t(1) || int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(ptr - uintptr((*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fnllen) + uintptr(1)))) == int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(mb + 128 + 1)))))
}() != 0) {
goto __327
}
if !(libc.PostIncInt32(&active_count, 1) < wscount) {
goto __328
}
(*Tstateblock)(unsafe.Pointer(next_active_state)).Foffset = state_offset + 1
(*Tstateblock)(unsafe.Pointer(next_active_state)).Fcount = 0
next_active_state += 12
goto __329
__328:
return -43
__329:
;
__327:
;
goto __89
//-----------------------------------------------------------------
__106:
if !(ptr >= end_subject) {
goto __330
}
if !((*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fmoptions&DPCRE2_PARTIAL_HARD != Tuint32_t(0)) {
goto __331
}
return -2
goto __332
__331:
if !(libc.PostIncInt32(&active_count, 1) < wscount) {
goto __333
}
(*Tstateblock)(unsafe.Pointer(next_active_state)).Foffset = state_offset + 1
(*Tstateblock)(unsafe.Pointer(next_active_state)).Fcount = 0
next_active_state += 12
goto __334
__333:
return -43
__334:
;
__332:
;
__330:
;
goto __89
//-----------------------------------------------------------------
__107:
if !(ptr == start_subject) {
goto __335
}
if !(libc.PostIncInt32(&active_count, 1) < wscount) {
goto __336
}
(*Tstateblock)(unsafe.Pointer(next_active_state)).Foffset = state_offset + 1
(*Tstateblock)(unsafe.Pointer(next_active_state)).Fcount = 0
next_active_state += 12
goto __337
__336:
return -43
__337:
;
__335:
;
goto __89
//-----------------------------------------------------------------
__108:
if !(ptr == start_subject+uintptr(start_offset)) {
goto __338
}
if !(libc.PostIncInt32(&active_count, 1) < wscount) {
goto __339
}
(*Tstateblock)(unsafe.Pointer(next_active_state)).Foffset = state_offset + 1
(*Tstateblock)(unsafe.Pointer(next_active_state)).Fcount = 0
next_active_state += 12
goto __340
__339:
return -43
__340:
;
__338:
;
goto __89
// ==========================================================================
// These opcodes inspect the next subject character, and sometimes
// the previous one as well, but do not have an argument. The variable
// clen contains the length of the current character and is zero if we are
// at the end of the subject.
//-----------------------------------------------------------------
__109:
if !(clen > 0 && !(func() int32 {
if (*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fnltype != Tuint32_t(DNLTYPE_FIXED) {
return libc.Bool32(ptr < (*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fend_subject && X_pcre2_is_newline_8(tls, ptr, (*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fnltype, (*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fend_subject, mb+120, utf) != 0)
}
return libc.Bool32(ptr <= (*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fend_subject-uintptr((*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fnllen) && int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(ptr))) == int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(mb + 128))) && ((*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fnllen == Tuint32_t(1) || int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(ptr + uintptr(1)))) == int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(mb + 128 + 1)))))
}() != 0)) {
goto __341
}
if !(ptr+uintptr(1) >= (*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fend_subject && (*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fmoptions&DPCRE2_PARTIAL_HARD != Tuint32_t(0) && (*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fnltype == Tuint32_t(DNLTYPE_FIXED) && (*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fnllen == Tuint32_t(2) && c == Tuint32_t(*(*TPCRE2_UCHAR8)(unsafe.Pointer(mb + 128)))) {
goto __342
}
could_continue = libc.AssignInt32(&partial_newline, DTRUE)
goto __343
__342:
if !(libc.PostIncInt32(&new_count, 1) < wscount) {
goto __344
}
(*Tstateblock)(unsafe.Pointer(next_new_state)).Foffset = state_offset + 1
(*Tstateblock)(unsafe.Pointer(next_new_state)).Fcount = 0
next_new_state += 12
goto __345
__344:
return -43
__345:
;
__343:
;
__341:
;
goto __89
//-----------------------------------------------------------------
__110:
if !(clen > 0) {
goto __346
}
if !(libc.PostIncInt32(&new_count, 1) < wscount) {
goto __347
}
(*Tstateblock)(unsafe.Pointer(next_new_state)).Foffset = state_offset + 1
(*Tstateblock)(unsafe.Pointer(next_new_state)).Fcount = 0
next_new_state += 12
goto __348
__347:
return -43
__348:
;
__346:
;
goto __89
//-----------------------------------------------------------------
__111:
if !(clen == 0 || func() int32 {
if (*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fnltype != Tuint32_t(DNLTYPE_FIXED) {
return libc.Bool32(ptr < (*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fend_subject && X_pcre2_is_newline_8(tls, ptr, (*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fnltype, (*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fend_subject, mb+120, utf) != 0)
}
return libc.Bool32(ptr <= (*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fend_subject-uintptr((*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fnllen) && int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(ptr))) == int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(mb + 128))) && ((*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fnllen == Tuint32_t(1) || int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(ptr + uintptr(1)))) == int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(mb + 128 + 1)))))
}() != 0 && ptr == end_subject-uintptr((*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fnllen)) {
goto __349
}
if !((*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fmoptions&DPCRE2_PARTIAL_HARD != Tuint32_t(0)) {
goto __350
}
return -2
__350:
;
if !(libc.PostIncInt32(&active_count, 1) < wscount) {
goto __351
}
(*Tstateblock)(unsafe.Pointer(next_active_state)).Foffset = state_offset + 1
(*Tstateblock)(unsafe.Pointer(next_active_state)).Fcount = 0
next_active_state += 12
goto __352
__351:
return -43
__352:
;
__349:
;
goto __89
//-----------------------------------------------------------------
__112:
if !((*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fmoptions&DPCRE2_NOTEOL == Tuint32_t(0)) {
goto __353
}
if !(clen == 0 && (*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fmoptions&DPCRE2_PARTIAL_HARD != Tuint32_t(0)) {
goto __354
}
could_continue = DTRUE
goto __355
__354:
if !(clen == 0 || (*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fpoptions&DPCRE2_DOLLAR_ENDONLY == Tuint32_t(0) && func() int32 {
if (*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fnltype != Tuint32_t(DNLTYPE_FIXED) {
return libc.Bool32(ptr < (*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fend_subject && X_pcre2_is_newline_8(tls, ptr, (*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fnltype, (*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fend_subject, mb+120, utf) != 0)
}
return libc.Bool32(ptr <= (*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fend_subject-uintptr((*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fnllen) && int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(ptr))) == int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(mb + 128))) && ((*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fnllen == Tuint32_t(1) || int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(ptr + uintptr(1)))) == int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(mb + 128 + 1)))))
}() != 0 && ptr == end_subject-uintptr((*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fnllen)) {
goto __356
}
if !(libc.PostIncInt32(&active_count, 1) < wscount) {
goto __358
}
(*Tstateblock)(unsafe.Pointer(next_active_state)).Foffset = state_offset + 1
(*Tstateblock)(unsafe.Pointer(next_active_state)).Fcount = 0
next_active_state += 12
goto __359
__358:
return -43
__359:
;
goto __357
__356:
if !(ptr+uintptr(1) >= (*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fend_subject && (*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fmoptions&(DPCRE2_PARTIAL_HARD|DPCRE2_PARTIAL_SOFT) != Tuint32_t(0) && (*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fnltype == Tuint32_t(DNLTYPE_FIXED) && (*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fnllen == Tuint32_t(2) && c == Tuint32_t(*(*TPCRE2_UCHAR8)(unsafe.Pointer(mb + 128)))) {
goto __360
}
if !((*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fmoptions&DPCRE2_PARTIAL_HARD != Tuint32_t(0)) {
goto __361
}
reset_could_continue = DTRUE
if !(libc.PostIncInt32(&new_count, 1) < wscount) {
goto __363
}
(*Tstateblock)(unsafe.Pointer(next_new_state)).Foffset = -(state_offset + 1)
(*Tstateblock)(unsafe.Pointer(next_new_state)).Fcount = 0
(*Tstateblock)(unsafe.Pointer(next_new_state)).Fdata = 1
next_new_state += 12
goto __364
__363:
return -43
__364:
;
goto __362
__361:
could_continue = libc.AssignInt32(&partial_newline, DTRUE)
__362:
;
__360:
;
__357:
;
__355:
;
__353:
;
goto __89
//-----------------------------------------------------------------
__113:
if !((*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fmoptions&DPCRE2_NOTEOL == Tuint32_t(0)) {
goto __365
}
if !(clen == 0 && (*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fmoptions&DPCRE2_PARTIAL_HARD != Tuint32_t(0)) {
goto __367
}
could_continue = DTRUE
goto __368
__367:
if !(clen == 0 || (*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fpoptions&DPCRE2_DOLLAR_ENDONLY == Tuint32_t(0) && func() int32 {
if (*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fnltype != Tuint32_t(DNLTYPE_FIXED) {
return libc.Bool32(ptr < (*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fend_subject && X_pcre2_is_newline_8(tls, ptr, (*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fnltype, (*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fend_subject, mb+120, utf) != 0)
}
return libc.Bool32(ptr <= (*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fend_subject-uintptr((*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fnllen) && int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(ptr))) == int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(mb + 128))) && ((*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fnllen == Tuint32_t(1) || int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(ptr + uintptr(1)))) == int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(mb + 128 + 1)))))
}() != 0) {
goto __369
}
if !(libc.PostIncInt32(&active_count, 1) < wscount) {
goto __371
}
(*Tstateblock)(unsafe.Pointer(next_active_state)).Foffset = state_offset + 1
(*Tstateblock)(unsafe.Pointer(next_active_state)).Fcount = 0
next_active_state += 12
goto __372
__371:
return -43
__372:
;
goto __370
__369:
if !(ptr+uintptr(1) >= (*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fend_subject && (*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fmoptions&(DPCRE2_PARTIAL_HARD|DPCRE2_PARTIAL_SOFT) != Tuint32_t(0) && (*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fnltype == Tuint32_t(DNLTYPE_FIXED) && (*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fnllen == Tuint32_t(2) && c == Tuint32_t(*(*TPCRE2_UCHAR8)(unsafe.Pointer(mb + 128)))) {
goto __373
}
if !((*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fmoptions&DPCRE2_PARTIAL_HARD != Tuint32_t(0)) {
goto __374
}
reset_could_continue = DTRUE
if !(libc.PostIncInt32(&new_count, 1) < wscount) {
goto __376
}
(*Tstateblock)(unsafe.Pointer(next_new_state)).Foffset = -(state_offset + 1)
(*Tstateblock)(unsafe.Pointer(next_new_state)).Fcount = 0
(*Tstateblock)(unsafe.Pointer(next_new_state)).Fdata = 1
next_new_state += 12
goto __377
__376:
return -43
__377:
;
goto __375
__374:
could_continue = libc.AssignInt32(&partial_newline, DTRUE)
__375:
;
__373:
;
__370:
;
__368:
;
goto __366
__365:
if !(func() int32 {
if (*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fnltype != Tuint32_t(DNLTYPE_FIXED) {
return libc.Bool32(ptr < (*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fend_subject && X_pcre2_is_newline_8(tls, ptr, (*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fnltype, (*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fend_subject, mb+120, utf) != 0)
}
return libc.Bool32(ptr <= (*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fend_subject-uintptr((*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fnllen) && int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(ptr))) == int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(mb + 128))) && ((*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fnllen == Tuint32_t(1) || int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(ptr + uintptr(1)))) == int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(mb + 128 + 1)))))
}() != 0) {
goto __378
}
if !(libc.PostIncInt32(&active_count, 1) < wscount) {
goto __379
}
(*Tstateblock)(unsafe.Pointer(next_active_state)).Foffset = state_offset + 1
(*Tstateblock)(unsafe.Pointer(next_active_state)).Fcount = 0
next_active_state += 12
goto __380
__379:
return -43
__380:
;
__378:
;
__366:
;
goto __89
//-----------------------------------------------------------------
__114:
__115:
__116:
if !(clen > 0 && c < Tuint32_t(256) && int32(*(*Tuint8_t)(unsafe.Pointer(ctypes + uintptr(c))))&int32(toptable1[codevalue])^int32(toptable2[codevalue]) != 0) {
goto __381
}
if !(libc.PostIncInt32(&new_count, 1) < wscount) {
goto __382
}
(*Tstateblock)(unsafe.Pointer(next_new_state)).Foffset = state_offset + 1
(*Tstateblock)(unsafe.Pointer(next_new_state)).Fcount = 0
next_new_state += 12
goto __383
__382:
return -43
__383:
;
__381:
;
goto __89
//-----------------------------------------------------------------
__117:
__118:
__119:
if !(clen > 0 && (c >= Tuint32_t(256) || int32(*(*Tuint8_t)(unsafe.Pointer(ctypes + uintptr(c))))&int32(toptable1[codevalue])^int32(toptable2[codevalue]) != 0)) {
goto __384
}
if !(libc.PostIncInt32(&new_count, 1) < wscount) {
goto __385
}
(*Tstateblock)(unsafe.Pointer(next_new_state)).Foffset = state_offset + 1
(*Tstateblock)(unsafe.Pointer(next_new_state)).Fcount = 0
next_new_state += 12
goto __386
__385:
return -43
__386:
;
__384:
;
goto __89
//-----------------------------------------------------------------
__120:
__121:
if !(ptr > start_subject) {
goto __387
}
temp = ptr - uintptr(1)
if !(temp < (*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fstart_used_ptr) {
goto __389
}
(*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fstart_used_ptr = temp
__389:
;
if !(utf != 0) {
goto __390
}
__391:
if !(uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(temp)))&0xc0 == 0x80) {
goto __392
}
temp--
goto __391
__392:
;
__390:
;
d = Tuint32_t(*(*TPCRE2_UCHAR8)(unsafe.Pointer(temp)))
if !(utf != 0 && d >= 0xc0) {
goto __393
}
if !(d&0x20 == Tuint32_t(0)) {
goto __394
}
d = d&0x1f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(temp + 1)))&0x3f
goto __395
__394:
if !(d&0x10 == Tuint32_t(0)) {
goto __396
}
d = d&0x0f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(temp + 1)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(temp + 2)))&0x3f
goto __397
__396:
if !(d&0x08 == Tuint32_t(0)) {
goto __398
}
d = d&0x07<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(temp + 1)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(temp + 2)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(temp + 3)))&0x3f
goto __399
__398:
if !(d&0x04 == Tuint32_t(0)) {
goto __400
}
d = d&0x03<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(temp + 1)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(temp + 2)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(temp + 3)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(temp + 4)))&0x3f
goto __401
__400:
d = d&0x01<<30 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(temp + 1)))&0x3f<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(temp + 2)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(temp + 3)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(temp + 4)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(temp + 5)))&0x3f
__401:
;
__399:
;
__397:
;
__395:
;
__393:
;
if !((*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fpoptions&DPCRE2_UCP != Tuint32_t(0)) {
goto __402
}
if !(d == Tuint32_t('_')) {
goto __404
}
left_word = DTRUE
goto __405
__404:
cat = X_pcre2_ucp_gentype_8[(*Tucd_record)(unsafe.Pointer(uintptr(unsafe.Pointer(&X_pcre2_ucd_records_8))+uintptr(X_pcre2_ucd_stage2_8[int32(X_pcre2_ucd_stage1_8[int32(d)/DUCD_BLOCK_SIZE])*DUCD_BLOCK_SIZE+int32(d)%DUCD_BLOCK_SIZE])*12)).Fchartype]
left_word = libc.Bool32(cat == ucp_L || cat == ucp_N)
__405:
;
goto __403
__402:
left_word = libc.Bool32(d < Tuint32_t(256) && int32(*(*Tuint8_t)(unsafe.Pointer(ctypes + uintptr(d))))&Dctype_word != 0)
__403:
;
goto __388
__387:
left_word = DFALSE
__388:
;
if !(clen > 0) {
goto __406
}
if !(ptr >= (*Tdfa_match_block_8)(unsafe.Pointer(mb)).Flast_used_ptr) {
goto __408
}
temp1 = ptr + uintptr(1)
if !(utf != 0) {
goto __409
}
__410:
if !(temp1 < (*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fend_subject && uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(temp1)))&0xc0 == 0x80) {
goto __411
}
temp1++
goto __410
__411:
;
__409:
;
(*Tdfa_match_block_8)(unsafe.Pointer(mb)).Flast_used_ptr = temp1
__408:
;
if !((*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fpoptions&DPCRE2_UCP != Tuint32_t(0)) {
goto __412
}
if !(c == Tuint32_t('_')) {
goto __414
}
right_word = DTRUE
goto __415
__414:
cat1 = X_pcre2_ucp_gentype_8[(*Tucd_record)(unsafe.Pointer(uintptr(unsafe.Pointer(&X_pcre2_ucd_records_8))+uintptr(X_pcre2_ucd_stage2_8[int32(X_pcre2_ucd_stage1_8[int32(c)/DUCD_BLOCK_SIZE])*DUCD_BLOCK_SIZE+int32(c)%DUCD_BLOCK_SIZE])*12)).Fchartype]
right_word = libc.Bool32(cat1 == ucp_L || cat1 == ucp_N)
__415:
;
goto __413
__412:
right_word = libc.Bool32(c < Tuint32_t(256) && int32(*(*Tuint8_t)(unsafe.Pointer(ctypes + uintptr(c))))&Dctype_word != 0)
__413:
;
goto __407
__406:
right_word = DFALSE
__407:
;
if !(libc.Bool32(left_word == right_word) == libc.Bool32(codevalue == OP_NOT_WORD_BOUNDARY)) {
goto __416
}
if !(libc.PostIncInt32(&active_count, 1) < wscount) {
goto __417
}
(*Tstateblock)(unsafe.Pointer(next_active_state)).Foffset = state_offset + 1
(*Tstateblock)(unsafe.Pointer(next_active_state)).Fcount = 0
next_active_state += 12
goto __418
__417:
return -43
__418:
;
__416:
;
goto __89
//-----------------------------------------------------------------
// Check the next character by Unicode property. We will get here only
// if the support is in the binary; otherwise a compile-time error occurs.
//
__122:
__123:
if !(clen > 0) {
goto __419
}
prop = uintptr(unsafe.Pointer(&X_pcre2_ucd_records_8)) + uintptr(X_pcre2_ucd_stage2_8[int32(X_pcre2_ucd_stage1_8[int32(c)/DUCD_BLOCK_SIZE])*DUCD_BLOCK_SIZE+int32(c)%DUCD_BLOCK_SIZE])*12
switch int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + 1))) {
case DPT_ANY:
goto __421
case DPT_LAMP:
goto __422
case DPT_GC:
goto __423
case DPT_PC:
goto __424
case DPT_SC:
goto __425
case DPT_SCX:
goto __426
// These are specials for combination cases.
case DPT_ALNUM:
goto __427
// Perl space used to exclude VT, but from Perl 5.18 it is included,
// which means that Perl space and POSIX space are now identical. PCRE
// was changed at release 8.34.
case DPT_SPACE:
goto __428 // Perl space
case DPT_PXSPACE:
goto __429
case DPT_WORD:
goto __430
case DPT_CLIST:
goto __431
case DPT_UCNC:
goto __432
case DPT_BIDICL:
goto __433
case DPT_BOOL:
goto __434
// Should never occur, but keep compilers from grumbling.
default:
goto __435
}
goto __420
__421:
OK = DTRUE
goto __420
__422:
OK = libc.Bool32(int32((*Tucd_record)(unsafe.Pointer(prop)).Fchartype) == ucp_Lu || int32((*Tucd_record)(unsafe.Pointer(prop)).Fchartype) == ucp_Ll || int32((*Tucd_record)(unsafe.Pointer(prop)).Fchartype) == ucp_Lt)
goto __420
__423:
OK = libc.Bool32(X_pcre2_ucp_gentype_8[(*Tucd_record)(unsafe.Pointer(prop)).Fchartype] == Tuint32_t(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + 2))))
goto __420
__424:
OK = libc.Bool32(int32((*Tucd_record)(unsafe.Pointer(prop)).Fchartype) == int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + 2))))
goto __420
__425:
OK = libc.Bool32(int32((*Tucd_record)(unsafe.Pointer(prop)).Fscript) == int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + 2))))
goto __420
__426:
OK = libc.Bool32(int32((*Tucd_record)(unsafe.Pointer(prop)).Fscript) == int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + 2))) || *(*Tuint32_t)(unsafe.Pointer(uintptr(unsafe.Pointer(&X_pcre2_ucd_script_sets_8)) + uintptr(int32((*Tucd_record)(unsafe.Pointer(prop)).Fscriptx_bidiclass)&DUCD_SCRIPTX_MASK)*4 + uintptr(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + 2)))/32)*4))&(uint32(1)<<(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + 2)))%32)) != Tuint32_t(0))
goto __420
// These are specials for combination cases.
__427:
OK = libc.Bool32(X_pcre2_ucp_gentype_8[(*Tucd_record)(unsafe.Pointer(prop)).Fchartype] == ucp_L || X_pcre2_ucp_gentype_8[(*Tucd_record)(unsafe.Pointer(prop)).Fchartype] == ucp_N)
goto __420
// Perl space used to exclude VT, but from Perl 5.18 it is included,
// which means that Perl space and POSIX space are now identical. PCRE
// was changed at release 8.34.
__428: // Perl space
__429: // POSIX space
switch c {
case Tuint32_t('\011'):
goto __437
case Tuint32_t('\040'):
goto __438
case libc.Uint32FromUint8(libc.Uint8FromInt32(160)):
goto __439
case Tuint32_t(0x1680):
goto __440 /* OGHAM SPACE MARK */
case Tuint32_t(0x180e):
goto __441 /* MONGOLIAN VOWEL SEPARATOR */
case Tuint32_t(0x2000):
goto __442 /* EN QUAD */
case Tuint32_t(0x2001):
goto __443 /* EM QUAD */
case Tuint32_t(0x2002):
goto __444 /* EN SPACE */
case Tuint32_t(0x2003):
goto __445 /* EM SPACE */
case Tuint32_t(0x2004):
goto __446 /* THREE-PER-EM SPACE */
case Tuint32_t(0x2005):
goto __447 /* FOUR-PER-EM SPACE */
case Tuint32_t(0x2006):
goto __448 /* SIX-PER-EM SPACE */
case Tuint32_t(0x2007):
goto __449 /* FIGURE SPACE */
case Tuint32_t(0x2008):
goto __450 /* PUNCTUATION SPACE */
case Tuint32_t(0x2009):
goto __451 /* THIN SPACE */
case Tuint32_t(0x200A):
goto __452 /* HAIR SPACE */
case Tuint32_t(0x202f):
goto __453 /* NARROW NO-BREAK SPACE */
case Tuint32_t(0x205f):
goto __454 /* MEDIUM MATHEMATICAL SPACE */
case Tuint32_t(0x3000):
goto __455
case Tuint32_t('\012'):
goto __456
case Tuint32_t('\013'):
goto __457
case Tuint32_t('\014'):
goto __458
case Tuint32_t('\015'):
goto __459
case libc.Uint32FromUint8(libc.Uint8FromInt32(133)):
goto __460
case Tuint32_t(0x2028):
goto __461 /* LINE SEPARATOR */
case Tuint32_t(0x2029):
goto __462
default:
goto __463
}
goto __436
__437:
__438:
__439:
__440: /* OGHAM SPACE MARK */
__441: /* MONGOLIAN VOWEL SEPARATOR */
__442: /* EN QUAD */
__443: /* EM QUAD */
__444: /* EN SPACE */
__445: /* EM SPACE */
__446: /* THREE-PER-EM SPACE */
__447: /* FOUR-PER-EM SPACE */
__448: /* SIX-PER-EM SPACE */
__449: /* FIGURE SPACE */
__450: /* PUNCTUATION SPACE */
__451: /* THIN SPACE */
__452: /* HAIR SPACE */
__453: /* NARROW NO-BREAK SPACE */
__454: /* MEDIUM MATHEMATICAL SPACE */
__455:
__456:
__457:
__458:
__459:
__460:
__461: /* LINE SEPARATOR */
__462:
OK = DTRUE
goto __436
__463:
OK = libc.Bool32(X_pcre2_ucp_gentype_8[(*Tucd_record)(unsafe.Pointer(prop)).Fchartype] == ucp_Z)
goto __436
__436:
;
goto __420
__430:
OK = libc.Bool32(X_pcre2_ucp_gentype_8[(*Tucd_record)(unsafe.Pointer(prop)).Fchartype] == ucp_L || X_pcre2_ucp_gentype_8[(*Tucd_record)(unsafe.Pointer(prop)).Fchartype] == ucp_N || c == Tuint32_t('\137'))
goto __420
__431:
cp = uintptr(unsafe.Pointer(&X_pcre2_ucd_caseless_sets_8)) + uintptr(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + 2)))*4
__464:
if !(c < *(*Tuint32_t)(unsafe.Pointer(cp))) {
goto __467
}
OK = DFALSE
goto __466
__467:
;
if !(c == *(*Tuint32_t)(unsafe.Pointer(libc.PostIncUintptr(&cp, 4)))) {
goto __468
}
OK = DTRUE
goto __466
__468:
;
goto __465
__465:
goto __464
goto __466
__466:
;
goto __420
__432:
OK = libc.Bool32(c == Tuint32_t('\044') || c == Tuint32_t('\100') || c == Tuint32_t('\140') || c >= Tuint32_t(0xa0) && c <= Tuint32_t(0xd7ff) || c >= Tuint32_t(0xe000))
goto __420
__433:
OK = libc.Bool32(int32((*Tucd_record)(unsafe.Pointer(uintptr(unsafe.Pointer(&X_pcre2_ucd_records_8))+uintptr(X_pcre2_ucd_stage2_8[int32(X_pcre2_ucd_stage1_8[int32(c)/DUCD_BLOCK_SIZE])*DUCD_BLOCK_SIZE+int32(c)%DUCD_BLOCK_SIZE])*12)).Fscriptx_bidiclass)>>DUCD_BIDICLASS_SHIFT == int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + 2))))
goto __420
__434:
OK = libc.Bool32(*(*Tuint32_t)(unsafe.Pointer(uintptr(unsafe.Pointer(&X_pcre2_ucd_boolprop_sets_8)) + uintptr(int32((*Tucd_record)(unsafe.Pointer(prop)).Fbprops)&DUCD_BPROPS_MASK)*4 + uintptr(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + 2)))/32)*4))&(uint32(1)<<(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + 2)))%32)) != Tuint32_t(0))
goto __420
// Should never occur, but keep compilers from grumbling.
__435:
OK = libc.Bool32(codevalue != OP_PROP)
goto __420
__420:
;
if !(OK == libc.Bool32(codevalue == OP_PROP)) {
goto __469
}
if !(libc.PostIncInt32(&new_count, 1) < wscount) {
goto __470
}
(*Tstateblock)(unsafe.Pointer(next_new_state)).Foffset = state_offset + 3
(*Tstateblock)(unsafe.Pointer(next_new_state)).Fcount = 0
next_new_state += 12
goto __471
__470:
return -43
__471:
;
__469:
;
__419:
;
goto __89
// ==========================================================================
// These opcodes likewise inspect the subject character, but have an
// argument that is not a data character. It is one of these opcodes:
// OP_ANY, OP_ALLANY, OP_DIGIT, OP_NOT_DIGIT, OP_WHITESPACE, OP_NOT_SPACE,
// OP_WORDCHAR, OP_NOT_WORDCHAR. The value is loaded into d.
__124:
__125:
__126:
count = (*Tstateblock)(unsafe.Pointer(current_state)).Fcount // Already matched
if !(count > 0) {
goto __472
}
if !(libc.PostIncInt32(&active_count, 1) < wscount) {
goto __473
}
(*Tstateblock)(unsafe.Pointer(next_active_state)).Foffset = state_offset + 2
(*Tstateblock)(unsafe.Pointer(next_active_state)).Fcount = 0
next_active_state += 12
goto __474
__473:
return -43
__474:
;
__472:
;
if !(clen > 0) {
goto __475
}
if !(d == OP_ANY && ptr+uintptr(1) >= (*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fend_subject && (*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fmoptions&DPCRE2_PARTIAL_HARD != Tuint32_t(0) && (*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fnltype == Tuint32_t(DNLTYPE_FIXED) && (*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fnllen == Tuint32_t(2) && c == Tuint32_t(*(*TPCRE2_UCHAR8)(unsafe.Pointer(mb + 128)))) {
goto __476
}
could_continue = libc.AssignInt32(&partial_newline, DTRUE)
goto __477
__476:
if !(c >= Tuint32_t(256) && d != OP_DIGIT && d != OP_WHITESPACE && d != OP_WORDCHAR || c < Tuint32_t(256) && (d != OP_ANY || !(func() int32 {
if (*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fnltype != Tuint32_t(DNLTYPE_FIXED) {
return libc.Bool32(ptr < (*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fend_subject && X_pcre2_is_newline_8(tls, ptr, (*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fnltype, (*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fend_subject, mb+120, utf) != 0)
}
return libc.Bool32(ptr <= (*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fend_subject-uintptr((*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fnllen) && int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(ptr))) == int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(mb + 128))) && ((*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fnllen == Tuint32_t(1) || int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(ptr + uintptr(1)))) == int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(mb + 128 + 1)))))
}() != 0)) && int32(*(*Tuint8_t)(unsafe.Pointer(ctypes + uintptr(c))))&int32(toptable1[d])^int32(toptable2[d]) != 0) {
goto __478
}
if !(count > 0 && codevalue == OP_TYPEPOSPLUS) {
goto __479
}
active_count-- // Remove non-match possibility
next_active_state -= 12
__479:
;
count++
if !(libc.PostIncInt32(&new_count, 1) < wscount) {
goto __480
}
(*Tstateblock)(unsafe.Pointer(next_new_state)).Foffset = state_offset
(*Tstateblock)(unsafe.Pointer(next_new_state)).Fcount = count
next_new_state += 12
goto __481
__480:
return -43
__481:
;
__478:
;
__477:
;
__475:
;
goto __89
//-----------------------------------------------------------------
__127:
__128:
__129:
if !(libc.PostIncInt32(&active_count, 1) < wscount) {
goto __482
}
(*Tstateblock)(unsafe.Pointer(next_active_state)).Foffset = state_offset + 2
(*Tstateblock)(unsafe.Pointer(next_active_state)).Fcount = 0
next_active_state += 12
goto __483
__482:
return -43
__483:
;
if !(clen > 0) {
goto __484
}
if !(d == OP_ANY && ptr+uintptr(1) >= (*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fend_subject && (*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fmoptions&DPCRE2_PARTIAL_HARD != Tuint32_t(0) && (*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fnltype == Tuint32_t(DNLTYPE_FIXED) && (*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fnllen == Tuint32_t(2) && c == Tuint32_t(*(*TPCRE2_UCHAR8)(unsafe.Pointer(mb + 128)))) {
goto __485
}
could_continue = libc.AssignInt32(&partial_newline, DTRUE)
goto __486
__485:
if !(c >= Tuint32_t(256) && d != OP_DIGIT && d != OP_WHITESPACE && d != OP_WORDCHAR || c < Tuint32_t(256) && (d != OP_ANY || !(func() int32 {
if (*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fnltype != Tuint32_t(DNLTYPE_FIXED) {
return libc.Bool32(ptr < (*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fend_subject && X_pcre2_is_newline_8(tls, ptr, (*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fnltype, (*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fend_subject, mb+120, utf) != 0)
}
return libc.Bool32(ptr <= (*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fend_subject-uintptr((*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fnllen) && int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(ptr))) == int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(mb + 128))) && ((*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fnllen == Tuint32_t(1) || int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(ptr + uintptr(1)))) == int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(mb + 128 + 1)))))
}() != 0)) && int32(*(*Tuint8_t)(unsafe.Pointer(ctypes + uintptr(c))))&int32(toptable1[d])^int32(toptable2[d]) != 0) {
goto __487
}
if !(codevalue == OP_TYPEPOSQUERY) {
goto __488
}
active_count-- // Remove non-match possibility
next_active_state -= 12
__488:
;
if !(libc.PostIncInt32(&new_count, 1) < wscount) {
goto __489
}
(*Tstateblock)(unsafe.Pointer(next_new_state)).Foffset = state_offset + 2
(*Tstateblock)(unsafe.Pointer(next_new_state)).Fcount = 0
next_new_state += 12
goto __490
__489:
return -43
__490:
;
__487:
;
__486:
;
__484:
;
goto __89
//-----------------------------------------------------------------
__130:
__131:
__132:
if !(libc.PostIncInt32(&active_count, 1) < wscount) {
goto __491
}
(*Tstateblock)(unsafe.Pointer(next_active_state)).Foffset = state_offset + 2
(*Tstateblock)(unsafe.Pointer(next_active_state)).Fcount = 0
next_active_state += 12
goto __492
__491:
return -43
__492:
;
if !(clen > 0) {
goto __493
}
if !(d == OP_ANY && ptr+uintptr(1) >= (*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fend_subject && (*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fmoptions&DPCRE2_PARTIAL_HARD != Tuint32_t(0) && (*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fnltype == Tuint32_t(DNLTYPE_FIXED) && (*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fnllen == Tuint32_t(2) && c == Tuint32_t(*(*TPCRE2_UCHAR8)(unsafe.Pointer(mb + 128)))) {
goto __494
}
could_continue = libc.AssignInt32(&partial_newline, DTRUE)
goto __495
__494:
if !(c >= Tuint32_t(256) && d != OP_DIGIT && d != OP_WHITESPACE && d != OP_WORDCHAR || c < Tuint32_t(256) && (d != OP_ANY || !(func() int32 {
if (*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fnltype != Tuint32_t(DNLTYPE_FIXED) {
return libc.Bool32(ptr < (*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fend_subject && X_pcre2_is_newline_8(tls, ptr, (*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fnltype, (*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fend_subject, mb+120, utf) != 0)
}
return libc.Bool32(ptr <= (*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fend_subject-uintptr((*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fnllen) && int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(ptr))) == int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(mb + 128))) && ((*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fnllen == Tuint32_t(1) || int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(ptr + uintptr(1)))) == int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(mb + 128 + 1)))))
}() != 0)) && int32(*(*Tuint8_t)(unsafe.Pointer(ctypes + uintptr(c))))&int32(toptable1[d])^int32(toptable2[d]) != 0) {
goto __496
}
if !(codevalue == OP_TYPEPOSSTAR) {
goto __497
}
active_count-- // Remove non-match possibility
next_active_state -= 12
__497:
;
if !(libc.PostIncInt32(&new_count, 1) < wscount) {
goto __498
}
(*Tstateblock)(unsafe.Pointer(next_new_state)).Foffset = state_offset
(*Tstateblock)(unsafe.Pointer(next_new_state)).Fcount = 0
next_new_state += 12
goto __499
__498:
return -43
__499:
;
__496:
;
__495:
;
__493:
;
goto __89
//-----------------------------------------------------------------
__133:
count = (*Tstateblock)(unsafe.Pointer(current_state)).Fcount // Number already matched
if !(clen > 0) {
goto __500
}
if !(d == OP_ANY && ptr+uintptr(1) >= (*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fend_subject && (*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fmoptions&DPCRE2_PARTIAL_HARD != Tuint32_t(0) && (*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fnltype == Tuint32_t(DNLTYPE_FIXED) && (*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fnllen == Tuint32_t(2) && c == Tuint32_t(*(*TPCRE2_UCHAR8)(unsafe.Pointer(mb + 128)))) {
goto __501
}
could_continue = libc.AssignInt32(&partial_newline, DTRUE)
goto __502
__501:
if !(c >= Tuint32_t(256) && d != OP_DIGIT && d != OP_WHITESPACE && d != OP_WORDCHAR || c < Tuint32_t(256) && (d != OP_ANY || !(func() int32 {
if (*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fnltype != Tuint32_t(DNLTYPE_FIXED) {
return libc.Bool32(ptr < (*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fend_subject && X_pcre2_is_newline_8(tls, ptr, (*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fnltype, (*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fend_subject, mb+120, utf) != 0)
}
return libc.Bool32(ptr <= (*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fend_subject-uintptr((*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fnllen) && int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(ptr))) == int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(mb + 128))) && ((*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fnllen == Tuint32_t(1) || int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(ptr + uintptr(1)))) == int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(mb + 128 + 1)))))
}() != 0)) && int32(*(*Tuint8_t)(unsafe.Pointer(ctypes + uintptr(c))))&int32(toptable1[d])^int32(toptable2[d]) != 0) {
goto __503
}
if !(libc.PreIncInt32(&count, 1) >= int32(uint32(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + 1)))<<8|int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + 2)))))) {
goto __504
}
if !(libc.PostIncInt32(&new_count, 1) < wscount) {
goto __506
}
(*Tstateblock)(unsafe.Pointer(next_new_state)).Foffset = state_offset + 1 + DIMM2_SIZE + 1
(*Tstateblock)(unsafe.Pointer(next_new_state)).Fcount = 0
next_new_state += 12
goto __507
__506:
return -43
__507:
;
goto __505
__504:
if !(libc.PostIncInt32(&new_count, 1) < wscount) {
goto __508
}
(*Tstateblock)(unsafe.Pointer(next_new_state)).Foffset = state_offset
(*Tstateblock)(unsafe.Pointer(next_new_state)).Fcount = count
next_new_state += 12
goto __509
__508:
return -43
__509:
;
__505:
;
__503:
;
__502:
;
__500:
;
goto __89
//-----------------------------------------------------------------
__134:
__135:
__136:
if !(libc.PostIncInt32(&active_count, 1) < wscount) {
goto __510
}
(*Tstateblock)(unsafe.Pointer(next_active_state)).Foffset = state_offset + 2 + DIMM2_SIZE
(*Tstateblock)(unsafe.Pointer(next_active_state)).Fcount = 0
next_active_state += 12
goto __511
__510:
return -43
__511:
;
count = (*Tstateblock)(unsafe.Pointer(current_state)).Fcount // Number already matched
if !(clen > 0) {
goto __512
}
if !(d == OP_ANY && ptr+uintptr(1) >= (*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fend_subject && (*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fmoptions&DPCRE2_PARTIAL_HARD != Tuint32_t(0) && (*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fnltype == Tuint32_t(DNLTYPE_FIXED) && (*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fnllen == Tuint32_t(2) && c == Tuint32_t(*(*TPCRE2_UCHAR8)(unsafe.Pointer(mb + 128)))) {
goto __513
}
could_continue = libc.AssignInt32(&partial_newline, DTRUE)
goto __514
__513:
if !(c >= Tuint32_t(256) && d != OP_DIGIT && d != OP_WHITESPACE && d != OP_WORDCHAR || c < Tuint32_t(256) && (d != OP_ANY || !(func() int32 {
if (*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fnltype != Tuint32_t(DNLTYPE_FIXED) {
return libc.Bool32(ptr < (*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fend_subject && X_pcre2_is_newline_8(tls, ptr, (*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fnltype, (*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fend_subject, mb+120, utf) != 0)
}
return libc.Bool32(ptr <= (*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fend_subject-uintptr((*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fnllen) && int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(ptr))) == int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(mb + 128))) && ((*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fnllen == Tuint32_t(1) || int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(ptr + uintptr(1)))) == int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(mb + 128 + 1)))))
}() != 0)) && int32(*(*Tuint8_t)(unsafe.Pointer(ctypes + uintptr(c))))&int32(toptable1[d])^int32(toptable2[d]) != 0) {
goto __515
}
if !(codevalue == OP_TYPEPOSUPTO) {
goto __516
}
active_count-- // Remove non-match possibility
next_active_state -= 12
__516:
;
if !(libc.PreIncInt32(&count, 1) >= int32(uint32(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + 1)))<<8|int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + 2)))))) {
goto __517
}
if !(libc.PostIncInt32(&new_count, 1) < wscount) {
goto __519
}
(*Tstateblock)(unsafe.Pointer(next_new_state)).Foffset = state_offset + 2 + DIMM2_SIZE
(*Tstateblock)(unsafe.Pointer(next_new_state)).Fcount = 0
next_new_state += 12
goto __520
__519:
return -43
__520:
;
goto __518
__517:
if !(libc.PostIncInt32(&new_count, 1) < wscount) {
goto __521
}
(*Tstateblock)(unsafe.Pointer(next_new_state)).Foffset = state_offset
(*Tstateblock)(unsafe.Pointer(next_new_state)).Fcount = count
next_new_state += 12
goto __522
__521:
return -43
__522:
;
__518:
;
__515:
;
__514:
;
__512:
;
goto __89
// ==========================================================================
// These are virtual opcodes that are used when something like
// OP_TYPEPLUS has OP_PROP, OP_NOTPROP, OP_ANYNL, or OP_EXTUNI as its
// argument. It keeps the code above fast for the other cases. The argument
// is in the d variable.
__137:
__138:
__139:
count = (*Tstateblock)(unsafe.Pointer(current_state)).Fcount // Already matched
if !(count > 0) {
goto __523
}
if !(libc.PostIncInt32(&active_count, 1) < wscount) {
goto __524
}
(*Tstateblock)(unsafe.Pointer(next_active_state)).Foffset = state_offset + 4
(*Tstateblock)(unsafe.Pointer(next_active_state)).Fcount = 0
next_active_state += 12
goto __525
__524:
return -43
__525:
;
__523:
;
if !(clen > 0) {
goto __526
}
prop1 = uintptr(unsafe.Pointer(&X_pcre2_ucd_records_8)) + uintptr(X_pcre2_ucd_stage2_8[int32(X_pcre2_ucd_stage1_8[int32(c)/DUCD_BLOCK_SIZE])*DUCD_BLOCK_SIZE+int32(c)%DUCD_BLOCK_SIZE])*12
switch int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + 2))) {
case DPT_ANY:
goto __528
case DPT_LAMP:
goto __529
case DPT_GC:
goto __530
case DPT_PC:
goto __531
case DPT_SC:
goto __532
case DPT_SCX:
goto __533
// These are specials for combination cases.
case DPT_ALNUM:
goto __534
// Perl space used to exclude VT, but from Perl 5.18 it is included,
// which means that Perl space and POSIX space are now identical. PCRE
// was changed at release 8.34.
case DPT_SPACE:
goto __535 // Perl space
case DPT_PXSPACE:
goto __536
case DPT_WORD:
goto __537
case DPT_CLIST:
goto __538
case DPT_UCNC:
goto __539
case DPT_BIDICL:
goto __540
case DPT_BOOL:
goto __541
// Should never occur, but keep compilers from grumbling.
default:
goto __542
}
goto __527
__528:
OK1 = DTRUE
goto __527
__529:
OK1 = libc.Bool32(int32((*Tucd_record)(unsafe.Pointer(prop1)).Fchartype) == ucp_Lu || int32((*Tucd_record)(unsafe.Pointer(prop1)).Fchartype) == ucp_Ll || int32((*Tucd_record)(unsafe.Pointer(prop1)).Fchartype) == ucp_Lt)
goto __527
__530:
OK1 = libc.Bool32(X_pcre2_ucp_gentype_8[(*Tucd_record)(unsafe.Pointer(prop1)).Fchartype] == Tuint32_t(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + 3))))
goto __527
__531:
OK1 = libc.Bool32(int32((*Tucd_record)(unsafe.Pointer(prop1)).Fchartype) == int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + 3))))
goto __527
__532:
OK1 = libc.Bool32(int32((*Tucd_record)(unsafe.Pointer(prop1)).Fscript) == int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + 3))))
goto __527
__533:
OK1 = libc.Bool32(int32((*Tucd_record)(unsafe.Pointer(prop1)).Fscript) == int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + 3))) || *(*Tuint32_t)(unsafe.Pointer(uintptr(unsafe.Pointer(&X_pcre2_ucd_script_sets_8)) + uintptr(int32((*Tucd_record)(unsafe.Pointer(prop1)).Fscriptx_bidiclass)&DUCD_SCRIPTX_MASK)*4 + uintptr(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + 3)))/32)*4))&(uint32(1)<<(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + 3)))%32)) != Tuint32_t(0))
goto __527
// These are specials for combination cases.
__534:
OK1 = libc.Bool32(X_pcre2_ucp_gentype_8[(*Tucd_record)(unsafe.Pointer(prop1)).Fchartype] == ucp_L || X_pcre2_ucp_gentype_8[(*Tucd_record)(unsafe.Pointer(prop1)).Fchartype] == ucp_N)
goto __527
// Perl space used to exclude VT, but from Perl 5.18 it is included,
// which means that Perl space and POSIX space are now identical. PCRE
// was changed at release 8.34.
__535: // Perl space
__536: // POSIX space
switch c {
case Tuint32_t('\011'):
goto __544
case Tuint32_t('\040'):
goto __545
case libc.Uint32FromUint8(libc.Uint8FromInt32(160)):
goto __546
case Tuint32_t(0x1680):
goto __547 /* OGHAM SPACE MARK */
case Tuint32_t(0x180e):
goto __548 /* MONGOLIAN VOWEL SEPARATOR */
case Tuint32_t(0x2000):
goto __549 /* EN QUAD */
case Tuint32_t(0x2001):
goto __550 /* EM QUAD */
case Tuint32_t(0x2002):
goto __551 /* EN SPACE */
case Tuint32_t(0x2003):
goto __552 /* EM SPACE */
case Tuint32_t(0x2004):
goto __553 /* THREE-PER-EM SPACE */
case Tuint32_t(0x2005):
goto __554 /* FOUR-PER-EM SPACE */
case Tuint32_t(0x2006):
goto __555 /* SIX-PER-EM SPACE */
case Tuint32_t(0x2007):
goto __556 /* FIGURE SPACE */
case Tuint32_t(0x2008):
goto __557 /* PUNCTUATION SPACE */
case Tuint32_t(0x2009):
goto __558 /* THIN SPACE */
case Tuint32_t(0x200A):
goto __559 /* HAIR SPACE */
case Tuint32_t(0x202f):
goto __560 /* NARROW NO-BREAK SPACE */
case Tuint32_t(0x205f):
goto __561 /* MEDIUM MATHEMATICAL SPACE */
case Tuint32_t(0x3000):
goto __562
case Tuint32_t('\012'):
goto __563
case Tuint32_t('\013'):
goto __564
case Tuint32_t('\014'):
goto __565
case Tuint32_t('\015'):
goto __566
case libc.Uint32FromUint8(libc.Uint8FromInt32(133)):
goto __567
case Tuint32_t(0x2028):
goto __568 /* LINE SEPARATOR */
case Tuint32_t(0x2029):
goto __569
default:
goto __570
}
goto __543
__544:
__545:
__546:
__547: /* OGHAM SPACE MARK */
__548: /* MONGOLIAN VOWEL SEPARATOR */
__549: /* EN QUAD */
__550: /* EM QUAD */
__551: /* EN SPACE */
__552: /* EM SPACE */
__553: /* THREE-PER-EM SPACE */
__554: /* FOUR-PER-EM SPACE */
__555: /* SIX-PER-EM SPACE */
__556: /* FIGURE SPACE */
__557: /* PUNCTUATION SPACE */
__558: /* THIN SPACE */
__559: /* HAIR SPACE */
__560: /* NARROW NO-BREAK SPACE */
__561: /* MEDIUM MATHEMATICAL SPACE */
__562:
__563:
__564:
__565:
__566:
__567:
__568: /* LINE SEPARATOR */
__569:
OK1 = DTRUE
goto __543
__570:
OK1 = libc.Bool32(X_pcre2_ucp_gentype_8[(*Tucd_record)(unsafe.Pointer(prop1)).Fchartype] == ucp_Z)
goto __543
__543:
;
goto __527
__537:
OK1 = libc.Bool32(X_pcre2_ucp_gentype_8[(*Tucd_record)(unsafe.Pointer(prop1)).Fchartype] == ucp_L || X_pcre2_ucp_gentype_8[(*Tucd_record)(unsafe.Pointer(prop1)).Fchartype] == ucp_N || c == Tuint32_t('\137'))
goto __527
__538:
cp1 = uintptr(unsafe.Pointer(&X_pcre2_ucd_caseless_sets_8)) + uintptr(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + 3)))*4
__571:
if !(c < *(*Tuint32_t)(unsafe.Pointer(cp1))) {
goto __574
}
OK1 = DFALSE
goto __573
__574:
;
if !(c == *(*Tuint32_t)(unsafe.Pointer(libc.PostIncUintptr(&cp1, 4)))) {
goto __575
}
OK1 = DTRUE
goto __573
__575:
;
goto __572
__572:
goto __571
goto __573
__573:
;
goto __527
__539:
OK1 = libc.Bool32(c == Tuint32_t('\044') || c == Tuint32_t('\100') || c == Tuint32_t('\140') || c >= Tuint32_t(0xa0) && c <= Tuint32_t(0xd7ff) || c >= Tuint32_t(0xe000))
goto __527
__540:
OK1 = libc.Bool32(int32((*Tucd_record)(unsafe.Pointer(uintptr(unsafe.Pointer(&X_pcre2_ucd_records_8))+uintptr(X_pcre2_ucd_stage2_8[int32(X_pcre2_ucd_stage1_8[int32(c)/DUCD_BLOCK_SIZE])*DUCD_BLOCK_SIZE+int32(c)%DUCD_BLOCK_SIZE])*12)).Fscriptx_bidiclass)>>DUCD_BIDICLASS_SHIFT == int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + 3))))
goto __527
__541:
OK1 = libc.Bool32(*(*Tuint32_t)(unsafe.Pointer(uintptr(unsafe.Pointer(&X_pcre2_ucd_boolprop_sets_8)) + uintptr(int32((*Tucd_record)(unsafe.Pointer(prop1)).Fbprops)&DUCD_BPROPS_MASK)*4 + uintptr(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + 3)))/32)*4))&(uint32(1)<<(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + 3)))%32)) != Tuint32_t(0))
goto __527
// Should never occur, but keep compilers from grumbling.
__542:
OK1 = libc.Bool32(codevalue != OP_PROP)
goto __527
__527:
;
if !(OK1 == libc.Bool32(d == OP_PROP)) {
goto __576
}
if !(count > 0 && codevalue == Tuint32_t(DOP_PROP_EXTRA+OP_TYPEPOSPLUS)) {
goto __577
}
active_count-- // Remove non-match possibility
next_active_state -= 12
__577:
;
count++
if !(libc.PostIncInt32(&new_count, 1) < wscount) {
goto __578
}
(*Tstateblock)(unsafe.Pointer(next_new_state)).Foffset = state_offset
(*Tstateblock)(unsafe.Pointer(next_new_state)).Fcount = count
next_new_state += 12
goto __579
__578:
return -43
__579:
;
__576:
;
__526:
;
goto __89
//-----------------------------------------------------------------
__140:
__141:
__142:
count = (*Tstateblock)(unsafe.Pointer(current_state)).Fcount // Already matched
if !(count > 0) {
goto __580
}
if !(libc.PostIncInt32(&active_count, 1) < wscount) {
goto __581
}
(*Tstateblock)(unsafe.Pointer(next_active_state)).Foffset = state_offset + 2
(*Tstateblock)(unsafe.Pointer(next_active_state)).Fcount = 0
next_active_state += 12
goto __582
__581:
return -43
__582:
;
__580:
;
if !(clen > 0) {
goto __583
}
*(*int32)(unsafe.Pointer(bp /* ncount */)) = 0
if !(count > 0 && codevalue == Tuint32_t(DOP_EXTUNI_EXTRA+OP_TYPEPOSPLUS)) {
goto __584
}
active_count-- // Remove non-match possibility
next_active_state -= 12
__584:
;
X_pcre2_extuni_8(tls, c, ptr+uintptr(clen), (*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fstart_subject, end_subject, utf,
bp)
count++
if !(libc.PostIncInt32(&new_count, 1) < wscount) {
goto __585
}
(*Tstateblock)(unsafe.Pointer(next_new_state)).Foffset = -state_offset
(*Tstateblock)(unsafe.Pointer(next_new_state)).Fcount = count
(*Tstateblock)(unsafe.Pointer(next_new_state)).Fdata = *(*int32)(unsafe.Pointer(bp))
next_new_state += 12
goto __586
__585:
return -43
__586:
;
__583:
;
goto __89
//-----------------------------------------------------------------
__143:
__144:
__145:
count = (*Tstateblock)(unsafe.Pointer(current_state)).Fcount // Already matched
if !(count > 0) {
goto __587
}
if !(libc.PostIncInt32(&active_count, 1) < wscount) {
goto __588
}
(*Tstateblock)(unsafe.Pointer(next_active_state)).Foffset = state_offset + 2
(*Tstateblock)(unsafe.Pointer(next_active_state)).Fcount = 0
next_active_state += 12
goto __589
__588:
return -43
__589:
;
__587:
;
if !(clen > 0) {
goto __590
}
ncount1 = 0
switch c {
case Tuint32_t('\013'):
goto __592
case Tuint32_t('\014'):
goto __593
case libc.Uint32FromUint8(libc.Uint8FromInt32(133)):
goto __594
case Tuint32_t(0x2028):
goto __595
case Tuint32_t(0x2029):
goto __596
case Tuint32_t('\015'):
goto __597
case Tuint32_t('\012'):
goto __598
default:
goto __599
}
goto __591
__592:
__593:
__594:
__595:
__596:
if !(int32((*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fbsr_convention) == DPCRE2_BSR_ANYCRLF) {
goto __600
}
goto __591
__600:
;
goto ANYNL01
__597:
if !(ptr+uintptr(1) < end_subject && int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(ptr + uintptr(1)))) == '\012') {
goto __601
}
ncount1 = 1
__601:
;
// Fall through
ANYNL01:
__598:
if !(count > 0 && codevalue == Tuint32_t(DOP_ANYNL_EXTRA+OP_TYPEPOSPLUS)) {
goto __602
}
active_count-- // Remove non-match possibility
next_active_state -= 12
__602:
;
count++
if !(libc.PostIncInt32(&new_count, 1) < wscount) {
goto __603
}
(*Tstateblock)(unsafe.Pointer(next_new_state)).Foffset = -state_offset
(*Tstateblock)(unsafe.Pointer(next_new_state)).Fcount = count
(*Tstateblock)(unsafe.Pointer(next_new_state)).Fdata = ncount1
next_new_state += 12
goto __604
__603:
return -43
__604:
;
goto __591
__599:
goto __591
__591:
;
__590:
;
goto __89
//-----------------------------------------------------------------
__146:
__147:
__148:
count = (*Tstateblock)(unsafe.Pointer(current_state)).Fcount // Already matched
if !(count > 0) {
goto __605
}
if !(libc.PostIncInt32(&active_count, 1) < wscount) {
goto __606
}
(*Tstateblock)(unsafe.Pointer(next_active_state)).Foffset = state_offset + 2
(*Tstateblock)(unsafe.Pointer(next_active_state)).Fcount = 0
next_active_state += 12
goto __607
__606:
return -43
__607:
;
__605:
;
if !(clen > 0) {
goto __608
}
switch c {
case Tuint32_t('\012'):
goto __610
case Tuint32_t('\013'):
goto __611
case Tuint32_t('\014'):
goto __612
case Tuint32_t('\015'):
goto __613
case libc.Uint32FromUint8(libc.Uint8FromInt32(133)):
goto __614
case Tuint32_t(0x2028):
goto __615 /* LINE SEPARATOR */
case Tuint32_t(0x2029):
goto __616
default:
goto __617
}
goto __609
__610:
__611:
__612:
__613:
__614:
__615: /* LINE SEPARATOR */
__616:
OK2 = DTRUE
goto __609
__617:
OK2 = DFALSE
goto __609
__609:
;
if !(OK2 == libc.Bool32(d == OP_VSPACE)) {
goto __618
}
if !(count > 0 && codevalue == Tuint32_t(DOP_VSPACE_EXTRA+OP_TYPEPOSPLUS)) {
goto __619
}
active_count-- // Remove non-match possibility
next_active_state -= 12
__619:
;
count++
if !(libc.PostIncInt32(&new_count, 1) < wscount) {
goto __620
}
(*Tstateblock)(unsafe.Pointer(next_new_state)).Foffset = -state_offset
(*Tstateblock)(unsafe.Pointer(next_new_state)).Fcount = count
(*Tstateblock)(unsafe.Pointer(next_new_state)).Fdata = 0
next_new_state += 12
goto __621
__620:
return -43
__621:
;
__618:
;
__608:
;
goto __89
//-----------------------------------------------------------------
__149:
__150:
__151:
count = (*Tstateblock)(unsafe.Pointer(current_state)).Fcount // Already matched
if !(count > 0) {
goto __622
}
if !(libc.PostIncInt32(&active_count, 1) < wscount) {
goto __623
}
(*Tstateblock)(unsafe.Pointer(next_active_state)).Foffset = state_offset + 2
(*Tstateblock)(unsafe.Pointer(next_active_state)).Fcount = 0
next_active_state += 12
goto __624
__623:
return -43
__624:
;
__622:
;
if !(clen > 0) {
goto __625
}
switch c {
case Tuint32_t('\011'):
goto __627
case Tuint32_t('\040'):
goto __628
case libc.Uint32FromUint8(libc.Uint8FromInt32(160)):
goto __629
case Tuint32_t(0x1680):
goto __630 /* OGHAM SPACE MARK */
case Tuint32_t(0x180e):
goto __631 /* MONGOLIAN VOWEL SEPARATOR */
case Tuint32_t(0x2000):
goto __632 /* EN QUAD */
case Tuint32_t(0x2001):
goto __633 /* EM QUAD */
case Tuint32_t(0x2002):
goto __634 /* EN SPACE */
case Tuint32_t(0x2003):
goto __635 /* EM SPACE */
case Tuint32_t(0x2004):
goto __636 /* THREE-PER-EM SPACE */
case Tuint32_t(0x2005):
goto __637 /* FOUR-PER-EM SPACE */
case Tuint32_t(0x2006):
goto __638 /* SIX-PER-EM SPACE */
case Tuint32_t(0x2007):
goto __639 /* FIGURE SPACE */
case Tuint32_t(0x2008):
goto __640 /* PUNCTUATION SPACE */
case Tuint32_t(0x2009):
goto __641 /* THIN SPACE */
case Tuint32_t(0x200A):
goto __642 /* HAIR SPACE */
case Tuint32_t(0x202f):
goto __643 /* NARROW NO-BREAK SPACE */
case Tuint32_t(0x205f):
goto __644 /* MEDIUM MATHEMATICAL SPACE */
case Tuint32_t(0x3000):
goto __645
default:
goto __646
}
goto __626
__627:
__628:
__629:
__630: /* OGHAM SPACE MARK */
__631: /* MONGOLIAN VOWEL SEPARATOR */
__632: /* EN QUAD */
__633: /* EM QUAD */
__634: /* EN SPACE */
__635: /* EM SPACE */
__636: /* THREE-PER-EM SPACE */
__637: /* FOUR-PER-EM SPACE */
__638: /* SIX-PER-EM SPACE */
__639: /* FIGURE SPACE */
__640: /* PUNCTUATION SPACE */
__641: /* THIN SPACE */
__642: /* HAIR SPACE */
__643: /* NARROW NO-BREAK SPACE */
__644: /* MEDIUM MATHEMATICAL SPACE */
__645:
OK3 = DTRUE
goto __626
__646:
OK3 = DFALSE
goto __626
__626:
;
if !(OK3 == libc.Bool32(d == OP_HSPACE)) {
goto __647
}
if !(count > 0 && codevalue == Tuint32_t(DOP_HSPACE_EXTRA+OP_TYPEPOSPLUS)) {
goto __648
}
active_count-- // Remove non-match possibility
next_active_state -= 12
__648:
;
count++
if !(libc.PostIncInt32(&new_count, 1) < wscount) {
goto __649
}
(*Tstateblock)(unsafe.Pointer(next_new_state)).Foffset = -state_offset
(*Tstateblock)(unsafe.Pointer(next_new_state)).Fcount = count
(*Tstateblock)(unsafe.Pointer(next_new_state)).Fdata = 0
next_new_state += 12
goto __650
__649:
return -43
__650:
;
__647:
;
__625:
;
goto __89
//-----------------------------------------------------------------
__152:
__153:
__154:
count = 4
goto QS1
__155:
__156:
__157:
count = 0
QS1:
if !(libc.PostIncInt32(&active_count, 1) < wscount) {
goto __651
}
(*Tstateblock)(unsafe.Pointer(next_active_state)).Foffset = state_offset + 4
(*Tstateblock)(unsafe.Pointer(next_active_state)).Fcount = 0
next_active_state += 12
goto __652
__651:
return -43
__652:
;
if !(clen > 0) {
goto __653
}
prop2 = uintptr(unsafe.Pointer(&X_pcre2_ucd_records_8)) + uintptr(X_pcre2_ucd_stage2_8[int32(X_pcre2_ucd_stage1_8[int32(c)/DUCD_BLOCK_SIZE])*DUCD_BLOCK_SIZE+int32(c)%DUCD_BLOCK_SIZE])*12
switch int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + 2))) {
case DPT_ANY:
goto __655
case DPT_LAMP:
goto __656
case DPT_GC:
goto __657
case DPT_PC:
goto __658
case DPT_SC:
goto __659
case DPT_SCX:
goto __660
// These are specials for combination cases.
case DPT_ALNUM:
goto __661
// Perl space used to exclude VT, but from Perl 5.18 it is included,
// which means that Perl space and POSIX space are now identical. PCRE
// was changed at release 8.34.
case DPT_SPACE:
goto __662 // Perl space
case DPT_PXSPACE:
goto __663
case DPT_WORD:
goto __664
case DPT_CLIST:
goto __665
case DPT_UCNC:
goto __666
case DPT_BIDICL:
goto __667
case DPT_BOOL:
goto __668
// Should never occur, but keep compilers from grumbling.
default:
goto __669
}
goto __654
__655:
OK4 = DTRUE
goto __654
__656:
OK4 = libc.Bool32(int32((*Tucd_record)(unsafe.Pointer(prop2)).Fchartype) == ucp_Lu || int32((*Tucd_record)(unsafe.Pointer(prop2)).Fchartype) == ucp_Ll || int32((*Tucd_record)(unsafe.Pointer(prop2)).Fchartype) == ucp_Lt)
goto __654
__657:
OK4 = libc.Bool32(X_pcre2_ucp_gentype_8[(*Tucd_record)(unsafe.Pointer(prop2)).Fchartype] == Tuint32_t(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + 3))))
goto __654
__658:
OK4 = libc.Bool32(int32((*Tucd_record)(unsafe.Pointer(prop2)).Fchartype) == int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + 3))))
goto __654
__659:
OK4 = libc.Bool32(int32((*Tucd_record)(unsafe.Pointer(prop2)).Fscript) == int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + 3))))
goto __654
__660:
OK4 = libc.Bool32(int32((*Tucd_record)(unsafe.Pointer(prop2)).Fscript) == int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + 3))) || *(*Tuint32_t)(unsafe.Pointer(uintptr(unsafe.Pointer(&X_pcre2_ucd_script_sets_8)) + uintptr(int32((*Tucd_record)(unsafe.Pointer(prop2)).Fscriptx_bidiclass)&DUCD_SCRIPTX_MASK)*4 + uintptr(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + 3)))/32)*4))&(uint32(1)<<(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + 3)))%32)) != Tuint32_t(0))
goto __654
// These are specials for combination cases.
__661:
OK4 = libc.Bool32(X_pcre2_ucp_gentype_8[(*Tucd_record)(unsafe.Pointer(prop2)).Fchartype] == ucp_L || X_pcre2_ucp_gentype_8[(*Tucd_record)(unsafe.Pointer(prop2)).Fchartype] == ucp_N)
goto __654
// Perl space used to exclude VT, but from Perl 5.18 it is included,
// which means that Perl space and POSIX space are now identical. PCRE
// was changed at release 8.34.
__662: // Perl space
__663: // POSIX space
switch c {
case Tuint32_t('\011'):
goto __671
case Tuint32_t('\040'):
goto __672
case libc.Uint32FromUint8(libc.Uint8FromInt32(160)):
goto __673
case Tuint32_t(0x1680):
goto __674 /* OGHAM SPACE MARK */
case Tuint32_t(0x180e):
goto __675 /* MONGOLIAN VOWEL SEPARATOR */
case Tuint32_t(0x2000):
goto __676 /* EN QUAD */
case Tuint32_t(0x2001):
goto __677 /* EM QUAD */
case Tuint32_t(0x2002):
goto __678 /* EN SPACE */
case Tuint32_t(0x2003):
goto __679 /* EM SPACE */
case Tuint32_t(0x2004):
goto __680 /* THREE-PER-EM SPACE */
case Tuint32_t(0x2005):
goto __681 /* FOUR-PER-EM SPACE */
case Tuint32_t(0x2006):
goto __682 /* SIX-PER-EM SPACE */
case Tuint32_t(0x2007):
goto __683 /* FIGURE SPACE */
case Tuint32_t(0x2008):
goto __684 /* PUNCTUATION SPACE */
case Tuint32_t(0x2009):
goto __685 /* THIN SPACE */
case Tuint32_t(0x200A):
goto __686 /* HAIR SPACE */
case Tuint32_t(0x202f):
goto __687 /* NARROW NO-BREAK SPACE */
case Tuint32_t(0x205f):
goto __688 /* MEDIUM MATHEMATICAL SPACE */
case Tuint32_t(0x3000):
goto __689
case Tuint32_t('\012'):
goto __690
case Tuint32_t('\013'):
goto __691
case Tuint32_t('\014'):
goto __692
case Tuint32_t('\015'):
goto __693
case libc.Uint32FromUint8(libc.Uint8FromInt32(133)):
goto __694
case Tuint32_t(0x2028):
goto __695 /* LINE SEPARATOR */
case Tuint32_t(0x2029):
goto __696
default:
goto __697
}
goto __670
__671:
__672:
__673:
__674: /* OGHAM SPACE MARK */
__675: /* MONGOLIAN VOWEL SEPARATOR */
__676: /* EN QUAD */
__677: /* EM QUAD */
__678: /* EN SPACE */
__679: /* EM SPACE */
__680: /* THREE-PER-EM SPACE */
__681: /* FOUR-PER-EM SPACE */
__682: /* SIX-PER-EM SPACE */
__683: /* FIGURE SPACE */
__684: /* PUNCTUATION SPACE */
__685: /* THIN SPACE */
__686: /* HAIR SPACE */
__687: /* NARROW NO-BREAK SPACE */
__688: /* MEDIUM MATHEMATICAL SPACE */
__689:
__690:
__691:
__692:
__693:
__694:
__695: /* LINE SEPARATOR */
__696:
OK4 = DTRUE
goto __670
__697:
OK4 = libc.Bool32(X_pcre2_ucp_gentype_8[(*Tucd_record)(unsafe.Pointer(prop2)).Fchartype] == ucp_Z)
goto __670
__670:
;
goto __654
__664:
OK4 = libc.Bool32(X_pcre2_ucp_gentype_8[(*Tucd_record)(unsafe.Pointer(prop2)).Fchartype] == ucp_L || X_pcre2_ucp_gentype_8[(*Tucd_record)(unsafe.Pointer(prop2)).Fchartype] == ucp_N || c == Tuint32_t('\137'))
goto __654
__665:
cp2 = uintptr(unsafe.Pointer(&X_pcre2_ucd_caseless_sets_8)) + uintptr(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + 3)))*4
__698:
if !(c < *(*Tuint32_t)(unsafe.Pointer(cp2))) {
goto __701
}
OK4 = DFALSE
goto __700
__701:
;
if !(c == *(*Tuint32_t)(unsafe.Pointer(libc.PostIncUintptr(&cp2, 4)))) {
goto __702
}
OK4 = DTRUE
goto __700
__702:
;
goto __699
__699:
goto __698
goto __700
__700:
;
goto __654
__666:
OK4 = libc.Bool32(c == Tuint32_t('\044') || c == Tuint32_t('\100') || c == Tuint32_t('\140') || c >= Tuint32_t(0xa0) && c <= Tuint32_t(0xd7ff) || c >= Tuint32_t(0xe000))
goto __654
__667:
OK4 = libc.Bool32(int32((*Tucd_record)(unsafe.Pointer(uintptr(unsafe.Pointer(&X_pcre2_ucd_records_8))+uintptr(X_pcre2_ucd_stage2_8[int32(X_pcre2_ucd_stage1_8[int32(c)/DUCD_BLOCK_SIZE])*DUCD_BLOCK_SIZE+int32(c)%DUCD_BLOCK_SIZE])*12)).Fscriptx_bidiclass)>>DUCD_BIDICLASS_SHIFT == int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + 3))))
goto __654
__668:
OK4 = libc.Bool32(*(*Tuint32_t)(unsafe.Pointer(uintptr(unsafe.Pointer(&X_pcre2_ucd_boolprop_sets_8)) + uintptr(int32((*Tucd_record)(unsafe.Pointer(prop2)).Fbprops)&DUCD_BPROPS_MASK)*4 + uintptr(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + 3)))/32)*4))&(uint32(1)<<(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + 3)))%32)) != Tuint32_t(0))
goto __654
// Should never occur, but keep compilers from grumbling.
__669:
OK4 = libc.Bool32(codevalue != OP_PROP)
goto __654
__654:
;
if !(OK4 == libc.Bool32(d == OP_PROP)) {
goto __703
}
if !(codevalue == Tuint32_t(DOP_PROP_EXTRA+OP_TYPEPOSSTAR) || codevalue == Tuint32_t(DOP_PROP_EXTRA+OP_TYPEPOSQUERY)) {
goto __704
}
active_count-- // Remove non-match possibility
next_active_state -= 12
__704:
;
if !(libc.PostIncInt32(&new_count, 1) < wscount) {
goto __705
}
(*Tstateblock)(unsafe.Pointer(next_new_state)).Foffset = state_offset + count
(*Tstateblock)(unsafe.Pointer(next_new_state)).Fcount = 0
next_new_state += 12
goto __706
__705:
return -43
__706:
;
__703:
;
__653:
;
goto __89
//-----------------------------------------------------------------
__158:
__159:
__160:
count = 2
goto QS2
__161:
__162:
__163:
count = 0
QS2:
if !(libc.PostIncInt32(&active_count, 1) < wscount) {
goto __707
}
(*Tstateblock)(unsafe.Pointer(next_active_state)).Foffset = state_offset + 2
(*Tstateblock)(unsafe.Pointer(next_active_state)).Fcount = 0
next_active_state += 12
goto __708
__707:
return -43
__708:
;
if !(clen > 0) {
goto __709
}
*(*int32)(unsafe.Pointer(bp + 4 /* ncount2 */)) = 0
if !(codevalue == Tuint32_t(DOP_EXTUNI_EXTRA+OP_TYPEPOSSTAR) || codevalue == Tuint32_t(DOP_EXTUNI_EXTRA+OP_TYPEPOSQUERY)) {
goto __710
}
active_count-- // Remove non-match possibility
next_active_state -= 12
__710:
;
X_pcre2_extuni_8(tls, c, ptr+uintptr(clen), (*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fstart_subject, end_subject, utf,
bp+4)
if !(libc.PostIncInt32(&new_count, 1) < wscount) {
goto __711
}
(*Tstateblock)(unsafe.Pointer(next_new_state)).Foffset = -(state_offset + count)
(*Tstateblock)(unsafe.Pointer(next_new_state)).Fcount = 0
(*Tstateblock)(unsafe.Pointer(next_new_state)).Fdata = *(*int32)(unsafe.Pointer(bp + 4))
next_new_state += 12
goto __712
__711:
return -43
__712:
;
__709:
;
goto __89
//-----------------------------------------------------------------
__164:
__165:
__166:
count = 2
goto QS3
__167:
__168:
__169:
count = 0
QS3:
if !(libc.PostIncInt32(&active_count, 1) < wscount) {
goto __713
}
(*Tstateblock)(unsafe.Pointer(next_active_state)).Foffset = state_offset + 2
(*Tstateblock)(unsafe.Pointer(next_active_state)).Fcount = 0
next_active_state += 12
goto __714
__713:
return -43
__714:
;
if !(clen > 0) {
goto __715
}
ncount3 = 0
switch c {
case Tuint32_t('\013'):
goto __717
case Tuint32_t('\014'):
goto __718
case libc.Uint32FromUint8(libc.Uint8FromInt32(133)):
goto __719
case Tuint32_t(0x2028):
goto __720
case Tuint32_t(0x2029):
goto __721
case Tuint32_t('\015'):
goto __722
case Tuint32_t('\012'):
goto __723
default:
goto __724
}
goto __716
__717:
__718:
__719:
__720:
__721:
if !(int32((*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fbsr_convention) == DPCRE2_BSR_ANYCRLF) {
goto __725
}
goto __716
__725:
;
goto ANYNL02
__722:
if !(ptr+uintptr(1) < end_subject && int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(ptr + uintptr(1)))) == '\012') {
goto __726
}
ncount3 = 1
__726:
;
// Fall through
ANYNL02:
__723:
if !(codevalue == Tuint32_t(DOP_ANYNL_EXTRA+OP_TYPEPOSSTAR) || codevalue == Tuint32_t(DOP_ANYNL_EXTRA+OP_TYPEPOSQUERY)) {
goto __727
}
active_count-- // Remove non-match possibility
next_active_state -= 12
__727:
;
if !(libc.PostIncInt32(&new_count, 1) < wscount) {
goto __728
}
(*Tstateblock)(unsafe.Pointer(next_new_state)).Foffset = -(state_offset + count)
(*Tstateblock)(unsafe.Pointer(next_new_state)).Fcount = 0
(*Tstateblock)(unsafe.Pointer(next_new_state)).Fdata = ncount3
next_new_state += 12
goto __729
__728:
return -43
__729:
;
goto __716
__724:
goto __716
__716:
;
__715:
;
goto __89
//-----------------------------------------------------------------
__170:
__171:
__172:
count = 2
goto QS4
__173:
__174:
__175:
count = 0
QS4:
if !(libc.PostIncInt32(&active_count, 1) < wscount) {
goto __730
}
(*Tstateblock)(unsafe.Pointer(next_active_state)).Foffset = state_offset + 2
(*Tstateblock)(unsafe.Pointer(next_active_state)).Fcount = 0
next_active_state += 12
goto __731
__730:
return -43
__731:
;
if !(clen > 0) {
goto __732
}
switch c {
case Tuint32_t('\012'):
goto __734
case Tuint32_t('\013'):
goto __735
case Tuint32_t('\014'):
goto __736
case Tuint32_t('\015'):
goto __737
case libc.Uint32FromUint8(libc.Uint8FromInt32(133)):
goto __738
case Tuint32_t(0x2028):
goto __739 /* LINE SEPARATOR */
case Tuint32_t(0x2029):
goto __740
default:
goto __741
}
goto __733
__734:
__735:
__736:
__737:
__738:
__739: /* LINE SEPARATOR */
__740:
OK5 = DTRUE
goto __733
__741:
OK5 = DFALSE
goto __733
__733:
;
if !(OK5 == libc.Bool32(d == OP_VSPACE)) {
goto __742
}
if !(codevalue == Tuint32_t(DOP_VSPACE_EXTRA+OP_TYPEPOSSTAR) || codevalue == Tuint32_t(DOP_VSPACE_EXTRA+OP_TYPEPOSQUERY)) {
goto __743
}
active_count-- // Remove non-match possibility
next_active_state -= 12
__743:
;
if !(libc.PostIncInt32(&new_count, 1) < wscount) {
goto __744
}
(*Tstateblock)(unsafe.Pointer(next_new_state)).Foffset = -(state_offset + count)
(*Tstateblock)(unsafe.Pointer(next_new_state)).Fcount = 0
(*Tstateblock)(unsafe.Pointer(next_new_state)).Fdata = 0
next_new_state += 12
goto __745
__744:
return -43
__745:
;
__742:
;
__732:
;
goto __89
//-----------------------------------------------------------------
__176:
__177:
__178:
count = 2
goto QS5
__179:
__180:
__181:
count = 0
QS5:
if !(libc.PostIncInt32(&active_count, 1) < wscount) {
goto __746
}
(*Tstateblock)(unsafe.Pointer(next_active_state)).Foffset = state_offset + 2
(*Tstateblock)(unsafe.Pointer(next_active_state)).Fcount = 0
next_active_state += 12
goto __747
__746:
return -43
__747:
;
if !(clen > 0) {
goto __748
}
switch c {
case Tuint32_t('\011'):
goto __750
case Tuint32_t('\040'):
goto __751
case libc.Uint32FromUint8(libc.Uint8FromInt32(160)):
goto __752
case Tuint32_t(0x1680):
goto __753 /* OGHAM SPACE MARK */
case Tuint32_t(0x180e):
goto __754 /* MONGOLIAN VOWEL SEPARATOR */
case Tuint32_t(0x2000):
goto __755 /* EN QUAD */
case Tuint32_t(0x2001):
goto __756 /* EM QUAD */
case Tuint32_t(0x2002):
goto __757 /* EN SPACE */
case Tuint32_t(0x2003):
goto __758 /* EM SPACE */
case Tuint32_t(0x2004):
goto __759 /* THREE-PER-EM SPACE */
case Tuint32_t(0x2005):
goto __760 /* FOUR-PER-EM SPACE */
case Tuint32_t(0x2006):
goto __761 /* SIX-PER-EM SPACE */
case Tuint32_t(0x2007):
goto __762 /* FIGURE SPACE */
case Tuint32_t(0x2008):
goto __763 /* PUNCTUATION SPACE */
case Tuint32_t(0x2009):
goto __764 /* THIN SPACE */
case Tuint32_t(0x200A):
goto __765 /* HAIR SPACE */
case Tuint32_t(0x202f):
goto __766 /* NARROW NO-BREAK SPACE */
case Tuint32_t(0x205f):
goto __767 /* MEDIUM MATHEMATICAL SPACE */
case Tuint32_t(0x3000):
goto __768
default:
goto __769
}
goto __749
__750:
__751:
__752:
__753: /* OGHAM SPACE MARK */
__754: /* MONGOLIAN VOWEL SEPARATOR */
__755: /* EN QUAD */
__756: /* EM QUAD */
__757: /* EN SPACE */
__758: /* EM SPACE */
__759: /* THREE-PER-EM SPACE */
__760: /* FOUR-PER-EM SPACE */
__761: /* SIX-PER-EM SPACE */
__762: /* FIGURE SPACE */
__763: /* PUNCTUATION SPACE */
__764: /* THIN SPACE */
__765: /* HAIR SPACE */
__766: /* NARROW NO-BREAK SPACE */
__767: /* MEDIUM MATHEMATICAL SPACE */
__768:
OK6 = DTRUE
goto __749
__769:
OK6 = DFALSE
goto __749
__749:
;
if !(OK6 == libc.Bool32(d == OP_HSPACE)) {
goto __770
}
if !(codevalue == Tuint32_t(DOP_HSPACE_EXTRA+OP_TYPEPOSSTAR) || codevalue == Tuint32_t(DOP_HSPACE_EXTRA+OP_TYPEPOSQUERY)) {
goto __771
}
active_count-- // Remove non-match possibility
next_active_state -= 12
__771:
;
if !(libc.PostIncInt32(&new_count, 1) < wscount) {
goto __772
}
(*Tstateblock)(unsafe.Pointer(next_new_state)).Foffset = -(state_offset + count)
(*Tstateblock)(unsafe.Pointer(next_new_state)).Fcount = 0
(*Tstateblock)(unsafe.Pointer(next_new_state)).Fdata = 0
next_new_state += 12
goto __773
__772:
return -43
__773:
;
__770:
;
__748:
;
goto __89
//-----------------------------------------------------------------
__182:
__183:
__184:
__185:
if !(codevalue != Tuint32_t(DOP_PROP_EXTRA+OP_TYPEEXACT)) {
goto __774
}
if !(libc.PostIncInt32(&active_count, 1) < wscount) {
goto __775
}
(*Tstateblock)(unsafe.Pointer(next_active_state)).Foffset = state_offset + 1 + DIMM2_SIZE + 3
(*Tstateblock)(unsafe.Pointer(next_active_state)).Fcount = 0
next_active_state += 12
goto __776
__775:
return -43
__776:
;
__774:
;
count = (*Tstateblock)(unsafe.Pointer(current_state)).Fcount // Number already matched
if !(clen > 0) {
goto __777
}
prop3 = uintptr(unsafe.Pointer(&X_pcre2_ucd_records_8)) + uintptr(X_pcre2_ucd_stage2_8[int32(X_pcre2_ucd_stage1_8[int32(c)/DUCD_BLOCK_SIZE])*DUCD_BLOCK_SIZE+int32(c)%DUCD_BLOCK_SIZE])*12
switch int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + 4))) {
case DPT_ANY:
goto __779
case DPT_LAMP:
goto __780
case DPT_GC:
goto __781
case DPT_PC:
goto __782
case DPT_SC:
goto __783
case DPT_SCX:
goto __784
// These are specials for combination cases.
case DPT_ALNUM:
goto __785
// Perl space used to exclude VT, but from Perl 5.18 it is included,
// which means that Perl space and POSIX space are now identical. PCRE
// was changed at release 8.34.
case DPT_SPACE:
goto __786 // Perl space
case DPT_PXSPACE:
goto __787
case DPT_WORD:
goto __788
case DPT_CLIST:
goto __789
case DPT_UCNC:
goto __790
case DPT_BIDICL:
goto __791
case DPT_BOOL:
goto __792
// Should never occur, but keep compilers from grumbling.
default:
goto __793
}
goto __778
__779:
OK7 = DTRUE
goto __778
__780:
OK7 = libc.Bool32(int32((*Tucd_record)(unsafe.Pointer(prop3)).Fchartype) == ucp_Lu || int32((*Tucd_record)(unsafe.Pointer(prop3)).Fchartype) == ucp_Ll || int32((*Tucd_record)(unsafe.Pointer(prop3)).Fchartype) == ucp_Lt)
goto __778
__781:
OK7 = libc.Bool32(X_pcre2_ucp_gentype_8[(*Tucd_record)(unsafe.Pointer(prop3)).Fchartype] == Tuint32_t(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + 5))))
goto __778
__782:
OK7 = libc.Bool32(int32((*Tucd_record)(unsafe.Pointer(prop3)).Fchartype) == int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + 5))))
goto __778
__783:
OK7 = libc.Bool32(int32((*Tucd_record)(unsafe.Pointer(prop3)).Fscript) == int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + 5))))
goto __778
__784:
OK7 = libc.Bool32(int32((*Tucd_record)(unsafe.Pointer(prop3)).Fscript) == int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + 5))) || *(*Tuint32_t)(unsafe.Pointer(uintptr(unsafe.Pointer(&X_pcre2_ucd_script_sets_8)) + uintptr(int32((*Tucd_record)(unsafe.Pointer(prop3)).Fscriptx_bidiclass)&DUCD_SCRIPTX_MASK)*4 + uintptr(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + 5)))/32)*4))&(uint32(1)<<(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + 5)))%32)) != Tuint32_t(0))
goto __778
// These are specials for combination cases.
__785:
OK7 = libc.Bool32(X_pcre2_ucp_gentype_8[(*Tucd_record)(unsafe.Pointer(prop3)).Fchartype] == ucp_L || X_pcre2_ucp_gentype_8[(*Tucd_record)(unsafe.Pointer(prop3)).Fchartype] == ucp_N)
goto __778
// Perl space used to exclude VT, but from Perl 5.18 it is included,
// which means that Perl space and POSIX space are now identical. PCRE
// was changed at release 8.34.
__786: // Perl space
__787: // POSIX space
switch c {
case Tuint32_t('\011'):
goto __795
case Tuint32_t('\040'):
goto __796
case libc.Uint32FromUint8(libc.Uint8FromInt32(160)):
goto __797
case Tuint32_t(0x1680):
goto __798 /* OGHAM SPACE MARK */
case Tuint32_t(0x180e):
goto __799 /* MONGOLIAN VOWEL SEPARATOR */
case Tuint32_t(0x2000):
goto __800 /* EN QUAD */
case Tuint32_t(0x2001):
goto __801 /* EM QUAD */
case Tuint32_t(0x2002):
goto __802 /* EN SPACE */
case Tuint32_t(0x2003):
goto __803 /* EM SPACE */
case Tuint32_t(0x2004):
goto __804 /* THREE-PER-EM SPACE */
case Tuint32_t(0x2005):
goto __805 /* FOUR-PER-EM SPACE */
case Tuint32_t(0x2006):
goto __806 /* SIX-PER-EM SPACE */
case Tuint32_t(0x2007):
goto __807 /* FIGURE SPACE */
case Tuint32_t(0x2008):
goto __808 /* PUNCTUATION SPACE */
case Tuint32_t(0x2009):
goto __809 /* THIN SPACE */
case Tuint32_t(0x200A):
goto __810 /* HAIR SPACE */
case Tuint32_t(0x202f):
goto __811 /* NARROW NO-BREAK SPACE */
case Tuint32_t(0x205f):
goto __812 /* MEDIUM MATHEMATICAL SPACE */
case Tuint32_t(0x3000):
goto __813
case Tuint32_t('\012'):
goto __814
case Tuint32_t('\013'):
goto __815
case Tuint32_t('\014'):
goto __816
case Tuint32_t('\015'):
goto __817
case libc.Uint32FromUint8(libc.Uint8FromInt32(133)):
goto __818
case Tuint32_t(0x2028):
goto __819 /* LINE SEPARATOR */
case Tuint32_t(0x2029):
goto __820
default:
goto __821
}
goto __794
__795:
__796:
__797:
__798: /* OGHAM SPACE MARK */
__799: /* MONGOLIAN VOWEL SEPARATOR */
__800: /* EN QUAD */
__801: /* EM QUAD */
__802: /* EN SPACE */
__803: /* EM SPACE */
__804: /* THREE-PER-EM SPACE */
__805: /* FOUR-PER-EM SPACE */
__806: /* SIX-PER-EM SPACE */
__807: /* FIGURE SPACE */
__808: /* PUNCTUATION SPACE */
__809: /* THIN SPACE */
__810: /* HAIR SPACE */
__811: /* NARROW NO-BREAK SPACE */
__812: /* MEDIUM MATHEMATICAL SPACE */
__813:
__814:
__815:
__816:
__817:
__818:
__819: /* LINE SEPARATOR */
__820:
OK7 = DTRUE
goto __794
__821:
OK7 = libc.Bool32(X_pcre2_ucp_gentype_8[(*Tucd_record)(unsafe.Pointer(prop3)).Fchartype] == ucp_Z)
goto __794
__794:
;
goto __778
__788:
OK7 = libc.Bool32(X_pcre2_ucp_gentype_8[(*Tucd_record)(unsafe.Pointer(prop3)).Fchartype] == ucp_L || X_pcre2_ucp_gentype_8[(*Tucd_record)(unsafe.Pointer(prop3)).Fchartype] == ucp_N || c == Tuint32_t('\137'))
goto __778
__789:
cp3 = uintptr(unsafe.Pointer(&X_pcre2_ucd_caseless_sets_8)) + uintptr(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + 5)))*4
__822:
if !(c < *(*Tuint32_t)(unsafe.Pointer(cp3))) {
goto __825
}
OK7 = DFALSE
goto __824
__825:
;
if !(c == *(*Tuint32_t)(unsafe.Pointer(libc.PostIncUintptr(&cp3, 4)))) {
goto __826
}
OK7 = DTRUE
goto __824
__826:
;
goto __823
__823:
goto __822
goto __824
__824:
;
goto __778
__790:
OK7 = libc.Bool32(c == Tuint32_t('\044') || c == Tuint32_t('\100') || c == Tuint32_t('\140') || c >= Tuint32_t(0xa0) && c <= Tuint32_t(0xd7ff) || c >= Tuint32_t(0xe000))
goto __778
__791:
OK7 = libc.Bool32(int32((*Tucd_record)(unsafe.Pointer(uintptr(unsafe.Pointer(&X_pcre2_ucd_records_8))+uintptr(X_pcre2_ucd_stage2_8[int32(X_pcre2_ucd_stage1_8[int32(c)/DUCD_BLOCK_SIZE])*DUCD_BLOCK_SIZE+int32(c)%DUCD_BLOCK_SIZE])*12)).Fscriptx_bidiclass)>>DUCD_BIDICLASS_SHIFT == int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + 5))))
goto __778
__792:
OK7 = libc.Bool32(*(*Tuint32_t)(unsafe.Pointer(uintptr(unsafe.Pointer(&X_pcre2_ucd_boolprop_sets_8)) + uintptr(int32((*Tucd_record)(unsafe.Pointer(prop3)).Fbprops)&DUCD_BPROPS_MASK)*4 + uintptr(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + 5)))/32)*4))&(uint32(1)<<(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + 5)))%32)) != Tuint32_t(0))
goto __778
// Should never occur, but keep compilers from grumbling.
__793:
OK7 = libc.Bool32(codevalue != OP_PROP)
goto __778
__778:
;
if !(OK7 == libc.Bool32(d == OP_PROP)) {
goto __827
}
if !(codevalue == Tuint32_t(DOP_PROP_EXTRA+OP_TYPEPOSUPTO)) {
goto __828
}
active_count-- // Remove non-match possibility
next_active_state -= 12
__828:
;
if !(libc.PreIncInt32(&count, 1) >= int32(uint32(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + 1)))<<8|int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + 2)))))) {
goto __829
}
if !(libc.PostIncInt32(&new_count, 1) < wscount) {
goto __831
}
(*Tstateblock)(unsafe.Pointer(next_new_state)).Foffset = state_offset + 1 + DIMM2_SIZE + 3
(*Tstateblock)(unsafe.Pointer(next_new_state)).Fcount = 0
next_new_state += 12
goto __832
__831:
return -43
__832:
;
goto __830
__829:
if !(libc.PostIncInt32(&new_count, 1) < wscount) {
goto __833
}
(*Tstateblock)(unsafe.Pointer(next_new_state)).Foffset = state_offset
(*Tstateblock)(unsafe.Pointer(next_new_state)).Fcount = count
next_new_state += 12
goto __834
__833:
return -43
__834:
;
__830:
;
__827:
;
__777:
;
goto __89
//-----------------------------------------------------------------
__186:
__187:
__188:
__189:
if !(codevalue != Tuint32_t(DOP_EXTUNI_EXTRA+OP_TYPEEXACT)) {
goto __835
}
if !(libc.PostIncInt32(&active_count, 1) < wscount) {
goto __836
}
(*Tstateblock)(unsafe.Pointer(next_active_state)).Foffset = state_offset + 2 + DIMM2_SIZE
(*Tstateblock)(unsafe.Pointer(next_active_state)).Fcount = 0
next_active_state += 12
goto __837
__836:
return -43
__837:
;
__835:
;
count = (*Tstateblock)(unsafe.Pointer(current_state)).Fcount // Number already matched
if !(clen > 0) {
goto __838
}
*(*int32)(unsafe.Pointer(bp + 8 /* ncount4 */)) = 0
if !(codevalue == Tuint32_t(DOP_EXTUNI_EXTRA+OP_TYPEPOSUPTO)) {
goto __839
}
active_count-- // Remove non-match possibility
next_active_state -= 12
__839:
;
nptr = X_pcre2_extuni_8(tls, c, ptr+uintptr(clen), (*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fstart_subject, end_subject, utf,
bp+8)
if !(nptr >= end_subject && (*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fmoptions&DPCRE2_PARTIAL_HARD != Tuint32_t(0)) {
goto __840
}
reset_could_continue = DTRUE
__840:
;
if !(libc.PreIncInt32(&count, 1) >= int32(uint32(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + 1)))<<8|int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + 2)))))) {
goto __841
}
if !(libc.PostIncInt32(&new_count, 1) < wscount) {
goto __843
}
(*Tstateblock)(unsafe.Pointer(next_new_state)).Foffset = -(state_offset + 2 + DIMM2_SIZE)
(*Tstateblock)(unsafe.Pointer(next_new_state)).Fcount = 0
(*Tstateblock)(unsafe.Pointer(next_new_state)).Fdata = *(*int32)(unsafe.Pointer(bp + 8))
next_new_state += 12
goto __844
__843:
return -43
__844:
;
goto __842
__841:
if !(libc.PostIncInt32(&new_count, 1) < wscount) {
goto __845
}
(*Tstateblock)(unsafe.Pointer(next_new_state)).Foffset = -state_offset
(*Tstateblock)(unsafe.Pointer(next_new_state)).Fcount = count
(*Tstateblock)(unsafe.Pointer(next_new_state)).Fdata = *(*int32)(unsafe.Pointer(bp + 8))
next_new_state += 12
goto __846
__845:
return -43
__846:
;
__842:
;
__838:
;
goto __89
//-----------------------------------------------------------------
__190:
__191:
__192:
__193:
if !(codevalue != Tuint32_t(DOP_ANYNL_EXTRA+OP_TYPEEXACT)) {
goto __847
}
if !(libc.PostIncInt32(&active_count, 1) < wscount) {
goto __848
}
(*Tstateblock)(unsafe.Pointer(next_active_state)).Foffset = state_offset + 2 + DIMM2_SIZE
(*Tstateblock)(unsafe.Pointer(next_active_state)).Fcount = 0
next_active_state += 12
goto __849
__848:
return -43
__849:
;
__847:
;
count = (*Tstateblock)(unsafe.Pointer(current_state)).Fcount // Number already matched
if !(clen > 0) {
goto __850
}
ncount5 = 0
switch c {
case Tuint32_t('\013'):
goto __852
case Tuint32_t('\014'):
goto __853
case libc.Uint32FromUint8(libc.Uint8FromInt32(133)):
goto __854
case Tuint32_t(0x2028):
goto __855
case Tuint32_t(0x2029):
goto __856
case Tuint32_t('\015'):
goto __857
case Tuint32_t('\012'):
goto __858
default:
goto __859
}
goto __851
__852:
__853:
__854:
__855:
__856:
if !(int32((*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fbsr_convention) == DPCRE2_BSR_ANYCRLF) {
goto __860
}
goto __851
__860:
;
goto ANYNL03
__857:
if !(ptr+uintptr(1) < end_subject && int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(ptr + uintptr(1)))) == '\012') {
goto __861
}
ncount5 = 1
__861:
;
// Fall through
ANYNL03:
__858:
if !(codevalue == Tuint32_t(DOP_ANYNL_EXTRA+OP_TYPEPOSUPTO)) {
goto __862
}
active_count-- // Remove non-match possibility
next_active_state -= 12
__862:
;
if !(libc.PreIncInt32(&count, 1) >= int32(uint32(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + 1)))<<8|int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + 2)))))) {
goto __863
}
if !(libc.PostIncInt32(&new_count, 1) < wscount) {
goto __865
}
(*Tstateblock)(unsafe.Pointer(next_new_state)).Foffset = -(state_offset + 2 + DIMM2_SIZE)
(*Tstateblock)(unsafe.Pointer(next_new_state)).Fcount = 0
(*Tstateblock)(unsafe.Pointer(next_new_state)).Fdata = ncount5
next_new_state += 12
goto __866
__865:
return -43
__866:
;
goto __864
__863:
if !(libc.PostIncInt32(&new_count, 1) < wscount) {
goto __867
}
(*Tstateblock)(unsafe.Pointer(next_new_state)).Foffset = -state_offset
(*Tstateblock)(unsafe.Pointer(next_new_state)).Fcount = count
(*Tstateblock)(unsafe.Pointer(next_new_state)).Fdata = ncount5
next_new_state += 12
goto __868
__867:
return -43
__868:
;
__864:
;
goto __851
__859:
goto __851
__851:
;
__850:
;
goto __89
//-----------------------------------------------------------------
__194:
__195:
__196:
__197:
if !(codevalue != Tuint32_t(DOP_VSPACE_EXTRA+OP_TYPEEXACT)) {
goto __869
}
if !(libc.PostIncInt32(&active_count, 1) < wscount) {
goto __870
}
(*Tstateblock)(unsafe.Pointer(next_active_state)).Foffset = state_offset + 2 + DIMM2_SIZE
(*Tstateblock)(unsafe.Pointer(next_active_state)).Fcount = 0
next_active_state += 12
goto __871
__870:
return -43
__871:
;
__869:
;
count = (*Tstateblock)(unsafe.Pointer(current_state)).Fcount // Number already matched
if !(clen > 0) {
goto __872
}
switch c {
case Tuint32_t('\012'):
goto __874
case Tuint32_t('\013'):
goto __875
case Tuint32_t('\014'):
goto __876
case Tuint32_t('\015'):
goto __877
case libc.Uint32FromUint8(libc.Uint8FromInt32(133)):
goto __878
case Tuint32_t(0x2028):
goto __879 /* LINE SEPARATOR */
case Tuint32_t(0x2029):
goto __880
default:
goto __881
}
goto __873
__874:
__875:
__876:
__877:
__878:
__879: /* LINE SEPARATOR */
__880:
OK8 = DTRUE
goto __873
__881:
OK8 = DFALSE
__873:
;
if !(OK8 == libc.Bool32(d == OP_VSPACE)) {
goto __882
}
if !(codevalue == Tuint32_t(DOP_VSPACE_EXTRA+OP_TYPEPOSUPTO)) {
goto __883
}
active_count-- // Remove non-match possibility
next_active_state -= 12
__883:
;
if !(libc.PreIncInt32(&count, 1) >= int32(uint32(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + 1)))<<8|int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + 2)))))) {
goto __884
}
if !(libc.PostIncInt32(&new_count, 1) < wscount) {
goto __886
}
(*Tstateblock)(unsafe.Pointer(next_new_state)).Foffset = -(state_offset + 2 + DIMM2_SIZE)
(*Tstateblock)(unsafe.Pointer(next_new_state)).Fcount = 0
(*Tstateblock)(unsafe.Pointer(next_new_state)).Fdata = 0
next_new_state += 12
goto __887
__886:
return -43
__887:
;
goto __885
__884:
if !(libc.PostIncInt32(&new_count, 1) < wscount) {
goto __888
}
(*Tstateblock)(unsafe.Pointer(next_new_state)).Foffset = -state_offset
(*Tstateblock)(unsafe.Pointer(next_new_state)).Fcount = count
(*Tstateblock)(unsafe.Pointer(next_new_state)).Fdata = 0
next_new_state += 12
goto __889
__888:
return -43
__889:
;
__885:
;
__882:
;
__872:
;
goto __89
//-----------------------------------------------------------------
__198:
__199:
__200:
__201:
if !(codevalue != Tuint32_t(DOP_HSPACE_EXTRA+OP_TYPEEXACT)) {
goto __890
}
if !(libc.PostIncInt32(&active_count, 1) < wscount) {
goto __891
}
(*Tstateblock)(unsafe.Pointer(next_active_state)).Foffset = state_offset + 2 + DIMM2_SIZE
(*Tstateblock)(unsafe.Pointer(next_active_state)).Fcount = 0
next_active_state += 12
goto __892
__891:
return -43
__892:
;
__890:
;
count = (*Tstateblock)(unsafe.Pointer(current_state)).Fcount // Number already matched
if !(clen > 0) {
goto __893
}
switch c {
case Tuint32_t('\011'):
goto __895
case Tuint32_t('\040'):
goto __896
case libc.Uint32FromUint8(libc.Uint8FromInt32(160)):
goto __897
case Tuint32_t(0x1680):
goto __898 /* OGHAM SPACE MARK */
case Tuint32_t(0x180e):
goto __899 /* MONGOLIAN VOWEL SEPARATOR */
case Tuint32_t(0x2000):
goto __900 /* EN QUAD */
case Tuint32_t(0x2001):
goto __901 /* EM QUAD */
case Tuint32_t(0x2002):
goto __902 /* EN SPACE */
case Tuint32_t(0x2003):
goto __903 /* EM SPACE */
case Tuint32_t(0x2004):
goto __904 /* THREE-PER-EM SPACE */
case Tuint32_t(0x2005):
goto __905 /* FOUR-PER-EM SPACE */
case Tuint32_t(0x2006):
goto __906 /* SIX-PER-EM SPACE */
case Tuint32_t(0x2007):
goto __907 /* FIGURE SPACE */
case Tuint32_t(0x2008):
goto __908 /* PUNCTUATION SPACE */
case Tuint32_t(0x2009):
goto __909 /* THIN SPACE */
case Tuint32_t(0x200A):
goto __910 /* HAIR SPACE */
case Tuint32_t(0x202f):
goto __911 /* NARROW NO-BREAK SPACE */
case Tuint32_t(0x205f):
goto __912 /* MEDIUM MATHEMATICAL SPACE */
case Tuint32_t(0x3000):
goto __913
default:
goto __914
}
goto __894
__895:
__896:
__897:
__898: /* OGHAM SPACE MARK */
__899: /* MONGOLIAN VOWEL SEPARATOR */
__900: /* EN QUAD */
__901: /* EM QUAD */
__902: /* EN SPACE */
__903: /* EM SPACE */
__904: /* THREE-PER-EM SPACE */
__905: /* FOUR-PER-EM SPACE */
__906: /* SIX-PER-EM SPACE */
__907: /* FIGURE SPACE */
__908: /* PUNCTUATION SPACE */
__909: /* THIN SPACE */
__910: /* HAIR SPACE */
__911: /* NARROW NO-BREAK SPACE */
__912: /* MEDIUM MATHEMATICAL SPACE */
__913:
OK9 = DTRUE
goto __894
__914:
OK9 = DFALSE
goto __894
__894:
;
if !(OK9 == libc.Bool32(d == OP_HSPACE)) {
goto __915
}
if !(codevalue == Tuint32_t(DOP_HSPACE_EXTRA+OP_TYPEPOSUPTO)) {
goto __916
}
active_count-- // Remove non-match possibility
next_active_state -= 12
__916:
;
if !(libc.PreIncInt32(&count, 1) >= int32(uint32(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + 1)))<<8|int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + 2)))))) {
goto __917
}
if !(libc.PostIncInt32(&new_count, 1) < wscount) {
goto __919
}
(*Tstateblock)(unsafe.Pointer(next_new_state)).Foffset = -(state_offset + 2 + DIMM2_SIZE)
(*Tstateblock)(unsafe.Pointer(next_new_state)).Fcount = 0
(*Tstateblock)(unsafe.Pointer(next_new_state)).Fdata = 0
next_new_state += 12
goto __920
__919:
return -43
__920:
;
goto __918
__917:
if !(libc.PostIncInt32(&new_count, 1) < wscount) {
goto __921
}
(*Tstateblock)(unsafe.Pointer(next_new_state)).Foffset = -state_offset
(*Tstateblock)(unsafe.Pointer(next_new_state)).Fcount = count
(*Tstateblock)(unsafe.Pointer(next_new_state)).Fdata = 0
next_new_state += 12
goto __922
__921:
return -43
__922:
;
__918:
;
__915:
;
__893:
;
goto __89
// ==========================================================================
// These opcodes are followed by a character that is usually compared
// to the current subject character; it is loaded into d. We still get
// here even if there is no subject character, because in some cases zero
// repetitions are permitted.
//-----------------------------------------------------------------
__202:
if !(clen > 0 && c == d) {
goto __923
}
if !(libc.PostIncInt32(&new_count, 1) < wscount) {
goto __924
}
(*Tstateblock)(unsafe.Pointer(next_new_state)).Foffset = state_offset + dlen + 1
(*Tstateblock)(unsafe.Pointer(next_new_state)).Fcount = 0
next_new_state += 12
goto __925
__924:
return -43
__925:
;
__923:
;
goto __89
//-----------------------------------------------------------------
__203:
if !(clen == 0) {
goto __926
}
goto __89
__926:
;
if !(utf_or_ucp != 0) {
goto __927
}
if !(c == d) {
goto __929
}
if !(libc.PostIncInt32(&new_count, 1) < wscount) {
goto __931
}
(*Tstateblock)(unsafe.Pointer(next_new_state)).Foffset = state_offset + dlen + 1
(*Tstateblock)(unsafe.Pointer(next_new_state)).Fcount = 0
next_new_state += 12
goto __932
__931:
return -43
__932:
;
goto __930
__929:
if !(c < Tuint32_t(128)) {
goto __933
}
othercase = uint32(*(*Tuint8_t)(unsafe.Pointer(fcc + uintptr(c))))
goto __934
__933:
othercase = Tuint32_t(int32(c) + (*Tucd_record)(unsafe.Pointer(uintptr(unsafe.Pointer(&X_pcre2_ucd_records_8))+uintptr(X_pcre2_ucd_stage2_8[int32(X_pcre2_ucd_stage1_8[int32(c)/DUCD_BLOCK_SIZE])*DUCD_BLOCK_SIZE+int32(c)%DUCD_BLOCK_SIZE])*12)).Fother_case)
__934:
;
if !(d == othercase) {
goto __935
}
if !(libc.PostIncInt32(&new_count, 1) < wscount) {
goto __936
}
(*Tstateblock)(unsafe.Pointer(next_new_state)).Foffset = state_offset + dlen + 1
(*Tstateblock)(unsafe.Pointer(next_new_state)).Fcount = 0
next_new_state += 12
goto __937
__936:
return -43
__937:
;
__935:
;
__930:
;
goto __928
__927:
/* Not UTF or UCP mode */
if !(int32(*(*Tuint8_t)(unsafe.Pointer(lcc + uintptr(c)))) == int32(*(*Tuint8_t)(unsafe.Pointer(lcc + uintptr(d))))) {
goto __938
}
if !(libc.PostIncInt32(&new_count, 1) < wscount) {
goto __939
}
(*Tstateblock)(unsafe.Pointer(next_new_state)).Foffset = state_offset + 2
(*Tstateblock)(unsafe.Pointer(next_new_state)).Fcount = 0
next_new_state += 12
goto __940
__939:
return -43
__940:
;
__938:
;
__928:
;
goto __89
//-----------------------------------------------------------------
// This is a tricky one because it can match more than one character.
// Find out how many characters to skip, and then set up a negative state
// to wait for them to pass before continuing.
__204:
if !(clen > 0) {
goto __941
}
*(*int32)(unsafe.Pointer(bp + 12 /* ncount6 */)) = 0
nptr1 = X_pcre2_extuni_8(tls, c, ptr+uintptr(clen), (*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fstart_subject,
end_subject, utf, bp+12)
if !(nptr1 >= end_subject && (*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fmoptions&DPCRE2_PARTIAL_HARD != Tuint32_t(0)) {
goto __942
}
reset_could_continue = DTRUE
__942:
;
if !(libc.PostIncInt32(&new_count, 1) < wscount) {
goto __943
}
(*Tstateblock)(unsafe.Pointer(next_new_state)).Foffset = -(state_offset + 1)
(*Tstateblock)(unsafe.Pointer(next_new_state)).Fcount = 0
(*Tstateblock)(unsafe.Pointer(next_new_state)).Fdata = *(*int32)(unsafe.Pointer(bp + 12))
next_new_state += 12
goto __944
__943:
return -43
__944:
;
__941:
;
goto __89
//-----------------------------------------------------------------
// This is a tricky like EXTUNI because it too can match more than one
// character (when CR is followed by LF). In this case, set up a negative
// state to wait for one character to pass before continuing.
__205:
if !(clen > 0) {
goto __945
}
switch c {
case Tuint32_t('\013'):
goto __947
case Tuint32_t('\014'):
goto __948
case libc.Uint32FromUint8(libc.Uint8FromInt32(133)):
goto __949
case Tuint32_t(0x2028):
goto __950
case Tuint32_t(0x2029):
goto __951
// Fall through
case Tuint32_t('\012'):
goto __952
case Tuint32_t('\015'):
goto __953
}
goto __946
__947:
__948:
__949:
__950:
__951:
if !(int32((*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fbsr_convention) == DPCRE2_BSR_ANYCRLF) {
goto __954
}
goto __946
__954:
;
// Fall through
__952:
if !(libc.PostIncInt32(&new_count, 1) < wscount) {
goto __955
}
(*Tstateblock)(unsafe.Pointer(next_new_state)).Foffset = state_offset + 1
(*Tstateblock)(unsafe.Pointer(next_new_state)).Fcount = 0
next_new_state += 12
goto __956
__955:
return -43
__956:
;
goto __946
__953:
if !(ptr+uintptr(1) >= end_subject) {
goto __957
}
if !(libc.PostIncInt32(&new_count, 1) < wscount) {
goto __959
}
(*Tstateblock)(unsafe.Pointer(next_new_state)).Foffset = state_offset + 1
(*Tstateblock)(unsafe.Pointer(next_new_state)).Fcount = 0
next_new_state += 12
goto __960
__959:
return -43
__960:
;
if !((*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fmoptions&DPCRE2_PARTIAL_HARD != Tuint32_t(0)) {
goto __961
}
reset_could_continue = DTRUE
__961:
;
goto __958
__957:
if !(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(ptr + uintptr(1)))) == '\012') {
goto __962
}
if !(libc.PostIncInt32(&new_count, 1) < wscount) {
goto __964
}
(*Tstateblock)(unsafe.Pointer(next_new_state)).Foffset = -(state_offset + 1)
(*Tstateblock)(unsafe.Pointer(next_new_state)).Fcount = 0
(*Tstateblock)(unsafe.Pointer(next_new_state)).Fdata = 1
next_new_state += 12
goto __965
__964:
return -43
__965:
;
goto __963
__962:
if !(libc.PostIncInt32(&new_count, 1) < wscount) {
goto __966
}
(*Tstateblock)(unsafe.Pointer(next_new_state)).Foffset = state_offset + 1
(*Tstateblock)(unsafe.Pointer(next_new_state)).Fcount = 0
next_new_state += 12
goto __967
__966:
return -43
__967:
;
__963:
;
__958:
;
goto __946
__946:
;
__945:
;
goto __89
//-----------------------------------------------------------------
__206:
if !(clen > 0) {
goto __968
}
switch c {
case Tuint32_t('\012'):
goto __970
case Tuint32_t('\013'):
goto __971
case Tuint32_t('\014'):
goto __972
case Tuint32_t('\015'):
goto __973
case libc.Uint32FromUint8(libc.Uint8FromInt32(133)):
goto __974
case Tuint32_t(0x2028):
goto __975 /* LINE SEPARATOR */
case Tuint32_t(0x2029):
goto __976
default:
goto __977
}
goto __969
__970:
__971:
__972:
__973:
__974:
__975: /* LINE SEPARATOR */
__976:
goto __969
__977:
if !(libc.PostIncInt32(&new_count, 1) < wscount) {
goto __978
}
(*Tstateblock)(unsafe.Pointer(next_new_state)).Foffset = state_offset + 1
(*Tstateblock)(unsafe.Pointer(next_new_state)).Fcount = 0
next_new_state += 12
goto __979
__978:
return -43
__979:
;
goto __969
__969:
;
__968:
;
goto __89
//-----------------------------------------------------------------
__207:
if !(clen > 0) {
goto __980
}
switch c {
case Tuint32_t('\012'):
goto __982
case Tuint32_t('\013'):
goto __983
case Tuint32_t('\014'):
goto __984
case Tuint32_t('\015'):
goto __985
case libc.Uint32FromUint8(libc.Uint8FromInt32(133)):
goto __986
case Tuint32_t(0x2028):
goto __987 /* LINE SEPARATOR */
case Tuint32_t(0x2029):
goto __988
default:
goto __989
}
goto __981
__982:
__983:
__984:
__985:
__986:
__987: /* LINE SEPARATOR */
__988:
if !(libc.PostIncInt32(&new_count, 1) < wscount) {
goto __990
}
(*Tstateblock)(unsafe.Pointer(next_new_state)).Foffset = state_offset + 1
(*Tstateblock)(unsafe.Pointer(next_new_state)).Fcount = 0
next_new_state += 12
goto __991
__990:
return -43
__991:
;
goto __981
__989:
goto __981
__981:
;
__980:
;
goto __89
//-----------------------------------------------------------------
__208:
if !(clen > 0) {
goto __992
}
switch c {
case Tuint32_t('\011'):
goto __994
case Tuint32_t('\040'):
goto __995
case libc.Uint32FromUint8(libc.Uint8FromInt32(160)):
goto __996
case Tuint32_t(0x1680):
goto __997 /* OGHAM SPACE MARK */
case Tuint32_t(0x180e):
goto __998 /* MONGOLIAN VOWEL SEPARATOR */
case Tuint32_t(0x2000):
goto __999 /* EN QUAD */
case Tuint32_t(0x2001):
goto __1000 /* EM QUAD */
case Tuint32_t(0x2002):
goto __1001 /* EN SPACE */
case Tuint32_t(0x2003):
goto __1002 /* EM SPACE */
case Tuint32_t(0x2004):
goto __1003 /* THREE-PER-EM SPACE */
case Tuint32_t(0x2005):
goto __1004 /* FOUR-PER-EM SPACE */
case Tuint32_t(0x2006):
goto __1005 /* SIX-PER-EM SPACE */
case Tuint32_t(0x2007):
goto __1006 /* FIGURE SPACE */
case Tuint32_t(0x2008):
goto __1007 /* PUNCTUATION SPACE */
case Tuint32_t(0x2009):
goto __1008 /* THIN SPACE */
case Tuint32_t(0x200A):
goto __1009 /* HAIR SPACE */
case Tuint32_t(0x202f):
goto __1010 /* NARROW NO-BREAK SPACE */
case Tuint32_t(0x205f):
goto __1011 /* MEDIUM MATHEMATICAL SPACE */
case Tuint32_t(0x3000):
goto __1012
default:
goto __1013
}
goto __993
__994:
__995:
__996:
__997: /* OGHAM SPACE MARK */
__998: /* MONGOLIAN VOWEL SEPARATOR */
__999: /* EN QUAD */
__1000: /* EM QUAD */
__1001: /* EN SPACE */
__1002: /* EM SPACE */
__1003: /* THREE-PER-EM SPACE */
__1004: /* FOUR-PER-EM SPACE */
__1005: /* SIX-PER-EM SPACE */
__1006: /* FIGURE SPACE */
__1007: /* PUNCTUATION SPACE */
__1008: /* THIN SPACE */
__1009: /* HAIR SPACE */
__1010: /* NARROW NO-BREAK SPACE */
__1011: /* MEDIUM MATHEMATICAL SPACE */
__1012:
goto __993
__1013:
if !(libc.PostIncInt32(&new_count, 1) < wscount) {
goto __1014
}
(*Tstateblock)(unsafe.Pointer(next_new_state)).Foffset = state_offset + 1
(*Tstateblock)(unsafe.Pointer(next_new_state)).Fcount = 0
next_new_state += 12
goto __1015
__1014:
return -43
__1015:
;
goto __993
__993:
;
__992:
;
goto __89
//-----------------------------------------------------------------
__209:
if !(clen > 0) {
goto __1016
}
switch c {
case Tuint32_t('\011'):
goto __1018
case Tuint32_t('\040'):
goto __1019
case libc.Uint32FromUint8(libc.Uint8FromInt32(160)):
goto __1020
case Tuint32_t(0x1680):
goto __1021 /* OGHAM SPACE MARK */
case Tuint32_t(0x180e):
goto __1022 /* MONGOLIAN VOWEL SEPARATOR */
case Tuint32_t(0x2000):
goto __1023 /* EN QUAD */
case Tuint32_t(0x2001):
goto __1024 /* EM QUAD */
case Tuint32_t(0x2002):
goto __1025 /* EN SPACE */
case Tuint32_t(0x2003):
goto __1026 /* EM SPACE */
case Tuint32_t(0x2004):
goto __1027 /* THREE-PER-EM SPACE */
case Tuint32_t(0x2005):
goto __1028 /* FOUR-PER-EM SPACE */
case Tuint32_t(0x2006):
goto __1029 /* SIX-PER-EM SPACE */
case Tuint32_t(0x2007):
goto __1030 /* FIGURE SPACE */
case Tuint32_t(0x2008):
goto __1031 /* PUNCTUATION SPACE */
case Tuint32_t(0x2009):
goto __1032 /* THIN SPACE */
case Tuint32_t(0x200A):
goto __1033 /* HAIR SPACE */
case Tuint32_t(0x202f):
goto __1034 /* NARROW NO-BREAK SPACE */
case Tuint32_t(0x205f):
goto __1035 /* MEDIUM MATHEMATICAL SPACE */
case Tuint32_t(0x3000):
goto __1036
default:
goto __1037
}
goto __1017
__1018:
__1019:
__1020:
__1021: /* OGHAM SPACE MARK */
__1022: /* MONGOLIAN VOWEL SEPARATOR */
__1023: /* EN QUAD */
__1024: /* EM QUAD */
__1025: /* EN SPACE */
__1026: /* EM SPACE */
__1027: /* THREE-PER-EM SPACE */
__1028: /* FOUR-PER-EM SPACE */
__1029: /* SIX-PER-EM SPACE */
__1030: /* FIGURE SPACE */
__1031: /* PUNCTUATION SPACE */
__1032: /* THIN SPACE */
__1033: /* HAIR SPACE */
__1034: /* NARROW NO-BREAK SPACE */
__1035: /* MEDIUM MATHEMATICAL SPACE */
__1036:
if !(libc.PostIncInt32(&new_count, 1) < wscount) {
goto __1038
}
(*Tstateblock)(unsafe.Pointer(next_new_state)).Foffset = state_offset + 1
(*Tstateblock)(unsafe.Pointer(next_new_state)).Fcount = 0
next_new_state += 12
goto __1039
__1038:
return -43
__1039:
;
goto __1017
__1037:
goto __1017
__1017:
;
__1016:
;
goto __89
//-----------------------------------------------------------------
// Match a negated single character casefully.
__210:
if !(clen > 0 && c != d) {
goto __1040
}
if !(libc.PostIncInt32(&new_count, 1) < wscount) {
goto __1041
}
(*Tstateblock)(unsafe.Pointer(next_new_state)).Foffset = state_offset + dlen + 1
(*Tstateblock)(unsafe.Pointer(next_new_state)).Fcount = 0
next_new_state += 12
goto __1042
__1041:
return -43
__1042:
;
__1040:
;
goto __89
//-----------------------------------------------------------------
// Match a negated single character caselessly.
__211:
if !(clen > 0) {
goto __1043
}
if !(utf_or_ucp != 0 && d >= Tuint32_t(128)) {
goto __1044
}
otherd = Tuint32_t(int32(d) + (*Tucd_record)(unsafe.Pointer(uintptr(unsafe.Pointer(&X_pcre2_ucd_records_8))+uintptr(X_pcre2_ucd_stage2_8[int32(X_pcre2_ucd_stage1_8[int32(d)/DUCD_BLOCK_SIZE])*DUCD_BLOCK_SIZE+int32(d)%DUCD_BLOCK_SIZE])*12)).Fother_case)
goto __1045
__1044:
otherd = Tuint32_t(*(*Tuint8_t)(unsafe.Pointer(fcc + uintptr(d))))
__1045:
;
if !(c != d && c != otherd) {
goto __1046
}
if !(libc.PostIncInt32(&new_count, 1) < wscount) {
goto __1047
}
(*Tstateblock)(unsafe.Pointer(next_new_state)).Foffset = state_offset + dlen + 1
(*Tstateblock)(unsafe.Pointer(next_new_state)).Fcount = 0
next_new_state += 12
goto __1048
__1047:
return -43
__1048:
;
__1046:
;
__1043:
;
goto __89
//-----------------------------------------------------------------
__212:
__213:
__214:
__215:
__216:
__217:
caseless = DTRUE
codevalue = codevalue - Tuint32_t(OP_STARI-OP_STAR)
// Fall through
__218:
__219:
__220:
__221:
__222:
__223:
count = (*Tstateblock)(unsafe.Pointer(current_state)).Fcount // Already matched
if !(count > 0) {
goto __1049
}
if !(libc.PostIncInt32(&active_count, 1) < wscount) {
goto __1050
}
(*Tstateblock)(unsafe.Pointer(next_active_state)).Foffset = state_offset + dlen + 1
(*Tstateblock)(unsafe.Pointer(next_active_state)).Fcount = 0
next_active_state += 12
goto __1051
__1050:
return -43
__1051:
;
__1049:
;
if !(clen > 0) {
goto __1052
}
otherd1 = DNOTACHAR
if !(caseless != 0) {
goto __1053
}
if !(utf_or_ucp != 0 && d >= Tuint32_t(128)) {
goto __1054
}
otherd1 = Tuint32_t(int32(d) + (*Tucd_record)(unsafe.Pointer(uintptr(unsafe.Pointer(&X_pcre2_ucd_records_8))+uintptr(X_pcre2_ucd_stage2_8[int32(X_pcre2_ucd_stage1_8[int32(d)/DUCD_BLOCK_SIZE])*DUCD_BLOCK_SIZE+int32(d)%DUCD_BLOCK_SIZE])*12)).Fother_case)
goto __1055
__1054:
otherd1 = Tuint32_t(*(*Tuint8_t)(unsafe.Pointer(fcc + uintptr(d))))
__1055:
;
__1053:
;
if !(libc.Bool32(c == d || c == otherd1) == libc.Bool32(codevalue < OP_NOTSTAR)) {
goto __1056
}
if !(count > 0 && (codevalue == OP_POSPLUS || codevalue == OP_NOTPOSPLUS)) {
goto __1057
}
active_count-- // Remove non-match possibility
next_active_state -= 12
__1057:
;
count++
if !(libc.PostIncInt32(&new_count, 1) < wscount) {
goto __1058
}
(*Tstateblock)(unsafe.Pointer(next_new_state)).Foffset = state_offset
(*Tstateblock)(unsafe.Pointer(next_new_state)).Fcount = count
next_new_state += 12
goto __1059
__1058:
return -43
__1059:
;
__1056:
;
__1052:
;
goto __89
//-----------------------------------------------------------------
__224:
__225:
__226:
__227:
__228:
__229:
caseless = DTRUE
codevalue = codevalue - Tuint32_t(OP_STARI-OP_STAR)
// Fall through
__230:
__231:
__232:
__233:
__234:
__235:
if !(libc.PostIncInt32(&active_count, 1) < wscount) {
goto __1060
}
(*Tstateblock)(unsafe.Pointer(next_active_state)).Foffset = state_offset + dlen + 1
(*Tstateblock)(unsafe.Pointer(next_active_state)).Fcount = 0
next_active_state += 12
goto __1061
__1060:
return -43
__1061:
;
if !(clen > 0) {
goto __1062
}
otherd2 = DNOTACHAR
if !(caseless != 0) {
goto __1063
}
if !(utf_or_ucp != 0 && d >= Tuint32_t(128)) {
goto __1064
}
otherd2 = Tuint32_t(int32(d) + (*Tucd_record)(unsafe.Pointer(uintptr(unsafe.Pointer(&X_pcre2_ucd_records_8))+uintptr(X_pcre2_ucd_stage2_8[int32(X_pcre2_ucd_stage1_8[int32(d)/DUCD_BLOCK_SIZE])*DUCD_BLOCK_SIZE+int32(d)%DUCD_BLOCK_SIZE])*12)).Fother_case)
goto __1065
__1064:
otherd2 = Tuint32_t(*(*Tuint8_t)(unsafe.Pointer(fcc + uintptr(d))))
__1065:
;
__1063:
;
if !(libc.Bool32(c == d || c == otherd2) == libc.Bool32(codevalue < OP_NOTSTAR)) {
goto __1066
}
if !(codevalue == OP_POSQUERY || codevalue == OP_NOTPOSQUERY) {
goto __1067
}
active_count-- // Remove non-match possibility
next_active_state -= 12
__1067:
;
if !(libc.PostIncInt32(&new_count, 1) < wscount) {
goto __1068
}
(*Tstateblock)(unsafe.Pointer(next_new_state)).Foffset = state_offset + dlen + 1
(*Tstateblock)(unsafe.Pointer(next_new_state)).Fcount = 0
next_new_state += 12
goto __1069
__1068:
return -43
__1069:
;
__1066:
;
__1062:
;
goto __89
//-----------------------------------------------------------------
__236:
__237:
__238:
__239:
__240:
__241:
caseless = DTRUE
codevalue = codevalue - Tuint32_t(OP_STARI-OP_STAR)
// Fall through
__242:
__243:
__244:
__245:
__246:
__247:
if !(libc.PostIncInt32(&active_count, 1) < wscount) {
goto __1070
}
(*Tstateblock)(unsafe.Pointer(next_active_state)).Foffset = state_offset + dlen + 1
(*Tstateblock)(unsafe.Pointer(next_active_state)).Fcount = 0
next_active_state += 12
goto __1071
__1070:
return -43
__1071:
;
if !(clen > 0) {
goto __1072
}
otherd3 = DNOTACHAR
if !(caseless != 0) {
goto __1073
}
if !(utf_or_ucp != 0 && d >= Tuint32_t(128)) {
goto __1074
}
otherd3 = Tuint32_t(int32(d) + (*Tucd_record)(unsafe.Pointer(uintptr(unsafe.Pointer(&X_pcre2_ucd_records_8))+uintptr(X_pcre2_ucd_stage2_8[int32(X_pcre2_ucd_stage1_8[int32(d)/DUCD_BLOCK_SIZE])*DUCD_BLOCK_SIZE+int32(d)%DUCD_BLOCK_SIZE])*12)).Fother_case)
goto __1075
__1074:
otherd3 = Tuint32_t(*(*Tuint8_t)(unsafe.Pointer(fcc + uintptr(d))))
__1075:
;
__1073:
;
if !(libc.Bool32(c == d || c == otherd3) == libc.Bool32(codevalue < OP_NOTSTAR)) {
goto __1076
}
if !(codevalue == OP_POSSTAR || codevalue == OP_NOTPOSSTAR) {
goto __1077
}
active_count-- // Remove non-match possibility
next_active_state -= 12
__1077:
;
if !(libc.PostIncInt32(&new_count, 1) < wscount) {
goto __1078
}
(*Tstateblock)(unsafe.Pointer(next_new_state)).Foffset = state_offset
(*Tstateblock)(unsafe.Pointer(next_new_state)).Fcount = 0
next_new_state += 12
goto __1079
__1078:
return -43
__1079:
;
__1076:
;
__1072:
;
goto __89
//-----------------------------------------------------------------
__248:
__249:
caseless = DTRUE
codevalue = codevalue - Tuint32_t(OP_STARI-OP_STAR)
// Fall through
__250:
__251:
count = (*Tstateblock)(unsafe.Pointer(current_state)).Fcount // Number already matched
if !(clen > 0) {
goto __1080
}
otherd4 = DNOTACHAR
if !(caseless != 0) {
goto __1081
}
if !(utf_or_ucp != 0 && d >= Tuint32_t(128)) {
goto __1082
}
otherd4 = Tuint32_t(int32(d) + (*Tucd_record)(unsafe.Pointer(uintptr(unsafe.Pointer(&X_pcre2_ucd_records_8))+uintptr(X_pcre2_ucd_stage2_8[int32(X_pcre2_ucd_stage1_8[int32(d)/DUCD_BLOCK_SIZE])*DUCD_BLOCK_SIZE+int32(d)%DUCD_BLOCK_SIZE])*12)).Fother_case)
goto __1083
__1082:
otherd4 = Tuint32_t(*(*Tuint8_t)(unsafe.Pointer(fcc + uintptr(d))))
__1083:
;
__1081:
;
if !(libc.Bool32(c == d || c == otherd4) == libc.Bool32(codevalue < OP_NOTSTAR)) {
goto __1084
}
if !(libc.PreIncInt32(&count, 1) >= int32(uint32(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + 1)))<<8|int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + 2)))))) {
goto __1085
}
if !(libc.PostIncInt32(&new_count, 1) < wscount) {
goto __1087
}
(*Tstateblock)(unsafe.Pointer(next_new_state)).Foffset = state_offset + dlen + 1 + DIMM2_SIZE
(*Tstateblock)(unsafe.Pointer(next_new_state)).Fcount = 0
next_new_state += 12
goto __1088
__1087:
return -43
__1088:
;
goto __1086
__1085:
if !(libc.PostIncInt32(&new_count, 1) < wscount) {
goto __1089
}
(*Tstateblock)(unsafe.Pointer(next_new_state)).Foffset = state_offset
(*Tstateblock)(unsafe.Pointer(next_new_state)).Fcount = count
next_new_state += 12
goto __1090
__1089:
return -43
__1090:
;
__1086:
;
__1084:
;
__1080:
;
goto __89
//-----------------------------------------------------------------
__252:
__253:
__254:
__255:
__256:
__257:
caseless = DTRUE
codevalue = codevalue - Tuint32_t(OP_STARI-OP_STAR)
// Fall through
__258:
__259:
__260:
__261:
__262:
__263:
if !(libc.PostIncInt32(&active_count, 1) < wscount) {
goto __1091
}
(*Tstateblock)(unsafe.Pointer(next_active_state)).Foffset = state_offset + dlen + 1 + DIMM2_SIZE
(*Tstateblock)(unsafe.Pointer(next_active_state)).Fcount = 0
next_active_state += 12
goto __1092
__1091:
return -43
__1092:
;
count = (*Tstateblock)(unsafe.Pointer(current_state)).Fcount // Number already matched
if !(clen > 0) {
goto __1093
}
otherd5 = DNOTACHAR
if !(caseless != 0) {
goto __1094
}
if !(utf_or_ucp != 0 && d >= Tuint32_t(128)) {
goto __1095
}
otherd5 = Tuint32_t(int32(d) + (*Tucd_record)(unsafe.Pointer(uintptr(unsafe.Pointer(&X_pcre2_ucd_records_8))+uintptr(X_pcre2_ucd_stage2_8[int32(X_pcre2_ucd_stage1_8[int32(d)/DUCD_BLOCK_SIZE])*DUCD_BLOCK_SIZE+int32(d)%DUCD_BLOCK_SIZE])*12)).Fother_case)
goto __1096
__1095:
otherd5 = Tuint32_t(*(*Tuint8_t)(unsafe.Pointer(fcc + uintptr(d))))
__1096:
;
__1094:
;
if !(libc.Bool32(c == d || c == otherd5) == libc.Bool32(codevalue < OP_NOTSTAR)) {
goto __1097
}
if !(codevalue == OP_POSUPTO || codevalue == OP_NOTPOSUPTO) {
goto __1098
}
active_count-- // Remove non-match possibility
next_active_state -= 12
__1098:
;
if !(libc.PreIncInt32(&count, 1) >= int32(uint32(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + 1)))<<8|int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + 2)))))) {
goto __1099
}
if !(libc.PostIncInt32(&new_count, 1) < wscount) {
goto __1101
}
(*Tstateblock)(unsafe.Pointer(next_new_state)).Foffset = state_offset + dlen + 1 + DIMM2_SIZE
(*Tstateblock)(unsafe.Pointer(next_new_state)).Fcount = 0
next_new_state += 12
goto __1102
__1101:
return -43
__1102:
;
goto __1100
__1099:
if !(libc.PostIncInt32(&new_count, 1) < wscount) {
goto __1103
}
(*Tstateblock)(unsafe.Pointer(next_new_state)).Foffset = state_offset
(*Tstateblock)(unsafe.Pointer(next_new_state)).Fcount = count
next_new_state += 12
goto __1104
__1103:
return -43
__1104:
;
__1100:
;
__1097:
;
__1093:
;
goto __89
// ==========================================================================
// These are the class-handling opcodes
__264:
__265:
__266:
isinclass = DFALSE
// For a simple class, there is always just a 32-byte table, and we
// can set isinclass from it.
if !(codevalue != OP_XCLASS) {
goto __1105
}
ecode = code + uintptr(1) + uintptr(uint64(32)/uint64(unsafe.Sizeof(TPCRE2_UCHAR8(0))))
if !(clen > 0) {
goto __1107
}
if c > Tuint32_t(255) {
isinclass = libc.Bool32(codevalue == OP_NCLASS)
} else {
isinclass = libc.Bool32(uint32(*(*Tuint8_t)(unsafe.Pointer(code + uintptr(1) + uintptr(c/Tuint32_t(8)))))&(uint32(1)<<(c&Tuint32_t(7))) != uint32(0))
}
__1107:
;
goto __1106
__1105:
ecode = code + uintptr(uint32(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + 1)))<<8|int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + 2)))))
if !(clen > 0) {
goto __1108
}
isinclass = X_pcre2_xclass_8(tls, c, code+uintptr(1)+uintptr(DLINK_SIZE), utf)
__1108:
;
__1106:
;
// At this point, isinclass is set for all kinds of class, and ecode
// points to the byte after the end of the class. If there is a
// quantifier, this is where it will be.
next_state_offset = int32((int64(ecode) - int64(start_code)) / 1)
switch int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(ecode))) {
case OP_CRSTAR:
goto __1110
case OP_CRMINSTAR:
goto __1111
case OP_CRPOSSTAR:
goto __1112
case OP_CRPLUS:
goto __1113
case OP_CRMINPLUS:
goto __1114
case OP_CRPOSPLUS:
goto __1115
case OP_CRQUERY:
goto __1116
case OP_CRMINQUERY:
goto __1117
case OP_CRPOSQUERY:
goto __1118
case OP_CRRANGE:
goto __1119
case OP_CRMINRANGE:
goto __1120
case OP_CRPOSRANGE:
goto __1121
default:
goto __1122
}
goto __1109
__1110:
__1111:
__1112:
if !(libc.PostIncInt32(&active_count, 1) < wscount) {
goto __1123
}
(*Tstateblock)(unsafe.Pointer(next_active_state)).Foffset = next_state_offset + 1
(*Tstateblock)(unsafe.Pointer(next_active_state)).Fcount = 0
next_active_state += 12
goto __1124
__1123:
return -43
__1124:
;
if !(isinclass != 0) {
goto __1125
}
if !(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(ecode))) == OP_CRPOSSTAR) {
goto __1126
}
active_count-- // Remove non-match possibility
next_active_state -= 12
__1126:
;
if !(libc.PostIncInt32(&new_count, 1) < wscount) {
goto __1127
}
(*Tstateblock)(unsafe.Pointer(next_new_state)).Foffset = state_offset
(*Tstateblock)(unsafe.Pointer(next_new_state)).Fcount = 0
next_new_state += 12
goto __1128
__1127:
return -43
__1128:
;
__1125:
;
goto __1109
__1113:
__1114:
__1115:
count = (*Tstateblock)(unsafe.Pointer(current_state)).Fcount // Already matched
if !(count > 0) {
goto __1129
}
if !(libc.PostIncInt32(&active_count, 1) < wscount) {
goto __1130
}
(*Tstateblock)(unsafe.Pointer(next_active_state)).Foffset = next_state_offset + 1
(*Tstateblock)(unsafe.Pointer(next_active_state)).Fcount = 0
next_active_state += 12
goto __1131
__1130:
return -43
__1131:
;
__1129:
;
if !(isinclass != 0) {
goto __1132
}
if !(count > 0 && int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(ecode))) == OP_CRPOSPLUS) {
goto __1133
}
active_count-- // Remove non-match possibility
next_active_state -= 12
__1133:
;
count++
if !(libc.PostIncInt32(&new_count, 1) < wscount) {
goto __1134
}
(*Tstateblock)(unsafe.Pointer(next_new_state)).Foffset = state_offset
(*Tstateblock)(unsafe.Pointer(next_new_state)).Fcount = count
next_new_state += 12
goto __1135
__1134:
return -43
__1135:
;
__1132:
;
goto __1109
__1116:
__1117:
__1118:
if !(libc.PostIncInt32(&active_count, 1) < wscount) {
goto __1136
}
(*Tstateblock)(unsafe.Pointer(next_active_state)).Foffset = next_state_offset + 1
(*Tstateblock)(unsafe.Pointer(next_active_state)).Fcount = 0
next_active_state += 12
goto __1137
__1136:
return -43
__1137:
;
if !(isinclass != 0) {
goto __1138
}
if !(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(ecode))) == OP_CRPOSQUERY) {
goto __1139
}
active_count-- // Remove non-match possibility
next_active_state -= 12
__1139:
;
if !(libc.PostIncInt32(&new_count, 1) < wscount) {
goto __1140
}
(*Tstateblock)(unsafe.Pointer(next_new_state)).Foffset = next_state_offset + 1
(*Tstateblock)(unsafe.Pointer(next_new_state)).Fcount = 0
next_new_state += 12
goto __1141
__1140:
return -43
__1141:
;
__1138:
;
goto __1109
__1119:
__1120:
__1121:
count = (*Tstateblock)(unsafe.Pointer(current_state)).Fcount // Already matched
if !(count >= int32(uint32(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(ecode + 1)))<<8|int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(ecode + 2)))))) {
goto __1142
}
if !(libc.PostIncInt32(&active_count, 1) < wscount) {
goto __1143
}
(*Tstateblock)(unsafe.Pointer(next_active_state)).Foffset = next_state_offset + 1 + 2*DIMM2_SIZE
(*Tstateblock)(unsafe.Pointer(next_active_state)).Fcount = 0
next_active_state += 12
goto __1144
__1143:
return -43
__1144:
;
__1142:
;
if !(isinclass != 0) {
goto __1145
}
max = int32(uint32(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(ecode + 3)))<<8 | int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(ecode + 4)))))
if !(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(ecode))) == OP_CRPOSRANGE && count >= int32(uint32(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(ecode + 1)))<<8|int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(ecode + 2)))))) {
goto __1146
}
active_count-- // Remove non-match possibility
next_active_state -= 12
__1146:
;
if !(libc.PreIncInt32(&count, 1) >= max && max != 0) {
goto __1147
} /* Max 0 => no limit */
if !(libc.PostIncInt32(&new_count, 1) < wscount) {
goto __1149
}
(*Tstateblock)(unsafe.Pointer(next_new_state)).Foffset = next_state_offset + 1 + 2*DIMM2_SIZE
(*Tstateblock)(unsafe.Pointer(next_new_state)).Fcount = 0
next_new_state += 12
goto __1150
__1149:
return -43
__1150:
;
goto __1148
__1147:
if !(libc.PostIncInt32(&new_count, 1) < wscount) {
goto __1151
}
(*Tstateblock)(unsafe.Pointer(next_new_state)).Foffset = state_offset
(*Tstateblock)(unsafe.Pointer(next_new_state)).Fcount = count
next_new_state += 12
goto __1152
__1151:
return -43
__1152:
;
__1148:
;
__1145:
;
goto __1109
__1122:
if !(isinclass != 0) {
goto __1153
}
if !(libc.PostIncInt32(&new_count, 1) < wscount) {
goto __1154
}
(*Tstateblock)(unsafe.Pointer(next_new_state)).Foffset = next_state_offset
(*Tstateblock)(unsafe.Pointer(next_new_state)).Fcount = 0
next_new_state += 12
goto __1155
__1154:
return -43
__1155:
;
__1153:
;
goto __1109
__1109:
;
goto __89
// ==========================================================================
// These are the opcodes for fancy brackets of various kinds. We have
// to use recursion in order to handle them. The "always failing" assertion
// (?!) is optimised to OP_FAIL when compiling, so we have to support that,
// though the other "backtracking verbs" are not supported.
__267:
forced_fail++ // Count FAILs for multiple states
goto __89
__268:
__269:
__270:
__271:
endasscode = code + uintptr(uint32(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + 1)))<<8|int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + 2)))))
*(*uintptr)(unsafe.Pointer(bp + 16 /* rws */)) = RWS
if !(uint64((*TRWS_anchor)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 16)))).Ffree) < uint64(DRWS_RSIZE)+uint64(2)*(uint64(unsafe.Sizeof(Tsize_t(0)))/uint64(unsafe.Sizeof(int32(0))))) {
goto __1156
}
rc = more_workspace(tls, bp+16, uint32(uint64(2)*(uint64(unsafe.Sizeof(Tsize_t(0)))/uint64(unsafe.Sizeof(int32(0))))), mb)
if !(rc != 0) {
goto __1157
}
return rc
__1157:
;
RWS = *(*uintptr)(unsafe.Pointer(bp + 16 /* rws */))
__1156:
;
local_offsets = RWS + uintptr((*TRWS_anchor)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 16)))).Fsize)*4 - uintptr((*TRWS_anchor)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 16)))).Ffree)*4
local_workspace = local_offsets + uintptr(uint64(2)*(uint64(unsafe.Sizeof(Tsize_t(0)))/uint64(unsafe.Sizeof(int32(0)))))*4
*(*Tuint32_t)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 16)) + 12)) -= uint32(uint64(DRWS_RSIZE) + uint64(2)*(uint64(unsafe.Sizeof(Tsize_t(0)))/uint64(unsafe.Sizeof(int32(0)))))
__1158:
if !(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(endasscode))) == OP_ALT) {
goto __1159
}
endasscode += TPCRE2_SPTR8(uint32(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(endasscode + 1)))<<8 | int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(endasscode + 2)))))
goto __1158
__1159:
;
rc = internal_dfa_match(tls,
mb, // static match data
code, // this subexpression's code
ptr, // where we currently are
Tsize_t((int64(ptr)-int64(start_subject))/1),
local_offsets, // offset vector
uint32(uint64(2)*(uint64(unsafe.Sizeof(Tsize_t(0)))/uint64(unsafe.Sizeof(int32(0))))/(uint64(unsafe.Sizeof(Tsize_t(0)))/uint64(unsafe.Sizeof(int32(0))))),
local_workspace, // workspace vector
DRWS_RSIZE, // size of same
rlevel, // function recursion level
RWS) // recursion workspace
*(*Tuint32_t)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 16)) + 12)) += uint32(uint64(DRWS_RSIZE) + uint64(2)*(uint64(unsafe.Sizeof(Tsize_t(0)))/uint64(unsafe.Sizeof(int32(0)))))
if !(rc < 0 && rc != -1) {
goto __1160
}
return rc
__1160:
;
if !(libc.Bool32(rc >= 0) == libc.Bool32(codevalue == OP_ASSERT || codevalue == OP_ASSERTBACK)) {
goto __1161
}
if !(libc.PostIncInt32(&active_count, 1) < wscount) {
goto __1162
}
(*Tstateblock)(unsafe.Pointer(next_active_state)).Foffset = int32((int64(endasscode+uintptr(DLINK_SIZE)+uintptr(1)) - int64(start_code)) / 1)
(*Tstateblock)(unsafe.Pointer(next_active_state)).Fcount = 0
next_active_state += 12
goto __1163
__1162:
return -43
__1163:
;
__1161:
;
goto __89
//-----------------------------------------------------------------
__272:
__273:
codelink = int32(uint32(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + 1)))<<8 | int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + 2)))))
// Because of the way auto-callout works during compile, a callout item
// is inserted between OP_COND and an assertion condition. This does not
// happen for the other conditions.
if !(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + 3))) == OP_CALLOUT ||
int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + 3))) == OP_CALLOUT_STR) {
goto __1164
}
rrc = do_callout(tls, code, offsets, current_subject, ptr, mb,
uint64(1+DLINK_SIZE), bp+24)
if !(rrc < 0) {
goto __1165
}
return rrc
__1165:
; // Abandon
if !(rrc > 0) {
goto __1166
}
goto __89
__1166:
; // Fail this thread
code += TPCRE2_SPTR8(*(*Tsize_t)(unsafe.Pointer(bp + 24 /* callout_length */))) // Skip callout data
__1164:
;
condcode = *(*TPCRE2_UCHAR8)(unsafe.Pointer(code + 3))
// Back reference conditions and duplicate named recursion conditions
// are not supported
if !(int32(condcode) == OP_CREF || int32(condcode) == OP_DNCREF || int32(condcode) == OP_DNRREF) {
goto __1167
}
return -40
__1167:
;
// The DEFINE condition is always false, and the assertion (?!) is
// converted to OP_FAIL.
if !(int32(condcode) == OP_FALSE || int32(condcode) == OP_FAIL) {
goto __1168
}
if !(libc.PostIncInt32(&active_count, 1) < wscount) {
goto __1170
}
(*Tstateblock)(unsafe.Pointer(next_active_state)).Foffset = state_offset + codelink + DLINK_SIZE + 1
(*Tstateblock)(unsafe.Pointer(next_active_state)).Fcount = 0
next_active_state += 12
goto __1171
__1170:
return -43
__1171:
;
goto __1169
__1168:
if !(int32(condcode) == OP_TRUE) {
goto __1172
}
if !(libc.PostIncInt32(&active_count, 1) < wscount) {
goto __1174
}
(*Tstateblock)(unsafe.Pointer(next_active_state)).Foffset = state_offset + DLINK_SIZE + 2
(*Tstateblock)(unsafe.Pointer(next_active_state)).Fcount = 0
next_active_state += 12
goto __1175
__1174:
return -43
__1175:
;
goto __1173
__1172:
if !(int32(condcode) == OP_RREF) {
goto __1176
}
value = uint32(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + 4)))<<8 | int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + 5))))
if !(value != uint32(DRREF_ANY)) {
goto __1178
}
return -40
__1178:
;
if !((*Tdfa_match_block_8)(unsafe.Pointer(mb)).Frecursive != uintptr(0)) {
goto __1179
}
if !(libc.PostIncInt32(&active_count, 1) < wscount) {
goto __1181
}
(*Tstateblock)(unsafe.Pointer(next_active_state)).Foffset = state_offset + DLINK_SIZE + 2 + DIMM2_SIZE
(*Tstateblock)(unsafe.Pointer(next_active_state)).Fcount = 0
next_active_state += 12
goto __1182
__1181:
return -43
__1182:
;
goto __1180
__1179:
if !(libc.PostIncInt32(&active_count, 1) < wscount) {
goto __1183
}
(*Tstateblock)(unsafe.Pointer(next_active_state)).Foffset = state_offset + codelink + DLINK_SIZE + 1
(*Tstateblock)(unsafe.Pointer(next_active_state)).Fcount = 0
next_active_state += 12
goto __1184
__1183:
return -43
__1184:
;
__1180:
;
goto __1177
__1176:
asscode = code + uintptr(DLINK_SIZE) + uintptr(1)
endasscode1 = asscode + uintptr(uint32(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(asscode + 1)))<<8|int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(asscode + 2)))))
*(*uintptr)(unsafe.Pointer(bp + 32 /* rws1 */)) = RWS
if !(uint64((*TRWS_anchor)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 32)))).Ffree) < uint64(DRWS_RSIZE)+uint64(2)*(uint64(unsafe.Sizeof(Tsize_t(0)))/uint64(unsafe.Sizeof(int32(0))))) {
goto __1185
}
rc1 = more_workspace(tls, bp+32, uint32(uint64(2)*(uint64(unsafe.Sizeof(Tsize_t(0)))/uint64(unsafe.Sizeof(int32(0))))), mb)
if !(rc1 != 0) {
goto __1186
}
return rc1
__1186:
;
RWS = *(*uintptr)(unsafe.Pointer(bp + 32 /* rws1 */))
__1185:
;
local_offsets1 = RWS + uintptr((*TRWS_anchor)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 32)))).Fsize)*4 - uintptr((*TRWS_anchor)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 32)))).Ffree)*4
local_workspace1 = local_offsets1 + uintptr(uint64(2)*(uint64(unsafe.Sizeof(Tsize_t(0)))/uint64(unsafe.Sizeof(int32(0)))))*4
*(*Tuint32_t)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 32)) + 12)) -= uint32(uint64(DRWS_RSIZE) + uint64(2)*(uint64(unsafe.Sizeof(Tsize_t(0)))/uint64(unsafe.Sizeof(int32(0)))))
__1187:
if !(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(endasscode1))) == OP_ALT) {
goto __1188
}
endasscode1 += TPCRE2_SPTR8(uint32(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(endasscode1 + 1)))<<8 | int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(endasscode1 + 2)))))
goto __1187
__1188:
;
rc1 = internal_dfa_match(tls,
mb, // fixed match data
asscode, // this subexpression's code
ptr, // where we currently are
Tsize_t((int64(ptr)-int64(start_subject))/1),
local_offsets1, // offset vector
uint32(uint64(2)*(uint64(unsafe.Sizeof(Tsize_t(0)))/uint64(unsafe.Sizeof(int32(0))))/(uint64(unsafe.Sizeof(Tsize_t(0)))/uint64(unsafe.Sizeof(int32(0))))),
local_workspace1, // workspace vector
DRWS_RSIZE, // size of same
rlevel, // function recursion level
RWS) // recursion workspace
*(*Tuint32_t)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 32)) + 12)) += uint32(uint64(DRWS_RSIZE) + uint64(2)*(uint64(unsafe.Sizeof(Tsize_t(0)))/uint64(unsafe.Sizeof(int32(0)))))
if !(rc1 < 0 && rc1 != -1) {
goto __1189
}
return rc1
__1189:
;
if !(libc.Bool32(rc1 >= 0) == libc.Bool32(int32(condcode) == OP_ASSERT || int32(condcode) == OP_ASSERTBACK)) {
goto __1190
}
if !(libc.PostIncInt32(&active_count, 1) < wscount) {
goto __1192
}
(*Tstateblock)(unsafe.Pointer(next_active_state)).Foffset = int32((int64(endasscode1+uintptr(DLINK_SIZE)+uintptr(1)) - int64(start_code)) / 1)
(*Tstateblock)(unsafe.Pointer(next_active_state)).Fcount = 0
next_active_state += 12
goto __1193
__1192:
return -43
__1193:
;
goto __1191
__1190:
if !(libc.PostIncInt32(&active_count, 1) < wscount) {
goto __1194
}
(*Tstateblock)(unsafe.Pointer(next_active_state)).Foffset = state_offset + codelink + DLINK_SIZE + 1
(*Tstateblock)(unsafe.Pointer(next_active_state)).Fcount = 0
next_active_state += 12
goto __1195
__1194:
return -43
__1195:
;
__1191:
;
__1177:
;
__1173:
;
__1169:
;
goto __89
//-----------------------------------------------------------------
__274:
*(*uintptr)(unsafe.Pointer(bp + 40 /* rws2 */)) = RWS
callpat = start_code + uintptr(uint32(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + 1)))<<8|int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + 2)))))
if callpat == (*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fstart_code {
recno = uint32(0)
} else {
recno = uint32(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(callpat + 3)))<<8 | int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(callpat + 4))))
}
if !(uint64((*TRWS_anchor)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 40)))).Ffree) < uint64(DRWS_RSIZE)+uint64(1000)*(uint64(unsafe.Sizeof(Tsize_t(0)))/uint64(unsafe.Sizeof(int32(0))))) {
goto __1196
}
rc2 = more_workspace(tls, bp+40, uint32(uint64(1000)*(uint64(unsafe.Sizeof(Tsize_t(0)))/uint64(unsafe.Sizeof(int32(0))))), mb)
if !(rc2 != 0) {
goto __1197
}
return rc2
__1197:
;
RWS = *(*uintptr)(unsafe.Pointer(bp + 40 /* rws2 */))
__1196:
;
local_offsets2 = RWS + uintptr((*TRWS_anchor)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 40)))).Fsize)*4 - uintptr((*TRWS_anchor)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 40)))).Ffree)*4
local_workspace2 = local_offsets2 + uintptr(uint64(1000)*(uint64(unsafe.Sizeof(Tsize_t(0)))/uint64(unsafe.Sizeof(int32(0)))))*4
*(*Tuint32_t)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 40)) + 12)) -= uint32(uint64(DRWS_RSIZE) + uint64(1000)*(uint64(unsafe.Sizeof(Tsize_t(0)))/uint64(unsafe.Sizeof(int32(0)))))
// Check for repeating a recursion without advancing the subject
// pointer. This should catch convoluted mutual recursions. (Some simple
// cases are caught at compile time.)
ri = (*Tdfa_match_block_8)(unsafe.Pointer(mb)).Frecursive
__1198:
if !(ri != uintptr(0)) {
goto __1200
}
if !(recno == (*Tdfa_recursion_info)(unsafe.Pointer(ri)).Fgroup_num && ptr == (*Tdfa_recursion_info)(unsafe.Pointer(ri)).Fsubject_position) {
goto __1201
}
return -52
__1201:
;
goto __1199
__1199:
ri = (*Tdfa_recursion_info)(unsafe.Pointer(ri)).Fprevrec
goto __1198
goto __1200
__1200:
;
// Remember this recursion and where we started it so as to
// catch infinite loops.
(*Tdfa_recursion_info)(unsafe.Pointer(bp + 48 /* &new_recursive */)).Fgroup_num = recno
(*Tdfa_recursion_info)(unsafe.Pointer(bp + 48 /* &new_recursive */)).Fsubject_position = ptr
(*Tdfa_recursion_info)(unsafe.Pointer(bp + 48 /* &new_recursive */)).Fprevrec = (*Tdfa_match_block_8)(unsafe.Pointer(mb)).Frecursive
(*Tdfa_match_block_8)(unsafe.Pointer(mb)).Frecursive = bp + 48 /* &new_recursive */
rc2 = internal_dfa_match(tls,
mb, // fixed match data
callpat, // this subexpression's code
ptr, // where we currently are
Tsize_t((int64(ptr)-int64(start_subject))/1),
local_offsets2, // offset vector
uint32(uint64(1000)*(uint64(unsafe.Sizeof(Tsize_t(0)))/uint64(unsafe.Sizeof(int32(0))))/(uint64(unsafe.Sizeof(Tsize_t(0)))/uint64(unsafe.Sizeof(int32(0))))),
local_workspace2, // workspace vector
DRWS_RSIZE, // size of same
rlevel, // function recursion level
RWS) // recursion workspace
*(*Tuint32_t)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 40)) + 12)) += uint32(uint64(DRWS_RSIZE) + uint64(1000)*(uint64(unsafe.Sizeof(Tsize_t(0)))/uint64(unsafe.Sizeof(int32(0)))))
(*Tdfa_match_block_8)(unsafe.Pointer(mb)).Frecursive = (*Tdfa_recursion_info)(unsafe.Pointer(bp + 48 /* &new_recursive */)).Fprevrec // Done this recursion
// Ran out of internal offsets
if !(rc2 == 0) {
goto __1202
}
return -39
__1202:
;
// For each successful matched substring, set up the next state with a
// count of characters to skip before trying it. Note that the count is in
// characters, not bytes.
if !(rc2 > 0) {
goto __1203
}
rc2 = rc2*2 - 2
__1205:
if !(rc2 >= 0) {
goto __1207
}
charcount = *(*Tsize_t)(unsafe.Pointer(local_offsets2 + uintptr(rc2+1)*8)) - *(*Tsize_t)(unsafe.Pointer(local_offsets2 + uintptr(rc2)*8))
if !(utf != 0) {
goto __1208
}
p = start_subject + uintptr(*(*Tsize_t)(unsafe.Pointer(local_offsets2 + uintptr(rc2)*8)))
pp = start_subject + uintptr(*(*Tsize_t)(unsafe.Pointer(local_offsets2 + uintptr(rc2+1)*8)))
__1209:
if !(p < pp) {
goto __1210
}
if !(uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&p, 1))))&0xc0 == 0x80) {
goto __1211
}
charcount--
__1211:
;
goto __1209
__1210:
;
__1208:
;
if !(charcount > uint64(0)) {
goto __1212
}
if !(libc.PostIncInt32(&new_count, 1) < wscount) {
goto __1214
}
(*Tstateblock)(unsafe.Pointer(next_new_state)).Foffset = -(state_offset + DLINK_SIZE + 1)
(*Tstateblock)(unsafe.Pointer(next_new_state)).Fcount = 0
(*Tstateblock)(unsafe.Pointer(next_new_state)).Fdata = int32(charcount - uint64(1))
next_new_state += 12
goto __1215
__1214:
return -43
__1215:
;
goto __1213
__1212:
if !(libc.PostIncInt32(&active_count, 1) < wscount) {
goto __1216
}
(*Tstateblock)(unsafe.Pointer(next_active_state)).Foffset = state_offset + DLINK_SIZE + 1
(*Tstateblock)(unsafe.Pointer(next_active_state)).Fcount = 0
next_active_state += 12
goto __1217
__1216:
return -43
__1217:
;
__1213:
;
goto __1206
__1206:
rc2 = rc2 - 2
goto __1205
goto __1207
__1207:
;
goto __1204
__1203:
if !(rc2 != -1) {
goto __1218
}
return rc2
__1218:
;
__1204:
;
goto __89
//-----------------------------------------------------------------
__275:
__276:
__277:
__278:
__279:
local_ptr = ptr
*(*uintptr)(unsafe.Pointer(bp + 72 /* rws3 */)) = RWS
if !(uint64((*TRWS_anchor)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 72)))).Ffree) < uint64(DRWS_RSIZE)+uint64(2)*(uint64(unsafe.Sizeof(Tsize_t(0)))/uint64(unsafe.Sizeof(int32(0))))) {
goto __1219
}
rc3 = more_workspace(tls, bp+72, uint32(uint64(2)*(uint64(unsafe.Sizeof(Tsize_t(0)))/uint64(unsafe.Sizeof(int32(0))))), mb)
if !(rc3 != 0) {
goto __1220
}
return rc3
__1220:
;
RWS = *(*uintptr)(unsafe.Pointer(bp + 72 /* rws3 */))
__1219:
;
local_offsets3 = RWS + uintptr((*TRWS_anchor)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 72)))).Fsize)*4 - uintptr((*TRWS_anchor)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 72)))).Ffree)*4
local_workspace3 = local_offsets3 + uintptr(uint64(2)*(uint64(unsafe.Sizeof(Tsize_t(0)))/uint64(unsafe.Sizeof(int32(0)))))*4
*(*Tuint32_t)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 72)) + 12)) -= uint32(uint64(DRWS_RSIZE) + uint64(2)*(uint64(unsafe.Sizeof(Tsize_t(0)))/uint64(unsafe.Sizeof(int32(0)))))
if !(codevalue == OP_BRAPOSZERO) {
goto __1221
}
allow_zero = DTRUE
codevalue = Tuint32_t(*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PreIncUintptr(&code, 1)))) // Codevalue will be one of above BRAs
goto __1222
__1221:
allow_zero = DFALSE
__1222:
;
// Loop to match the subpattern as many times as possible as if it were
// a complete pattern.
matched_count = uint64(0)
__1223:
;
rc3 = internal_dfa_match(tls,
mb, // fixed match data
code, // this subexpression's code
local_ptr, // where we currently are
Tsize_t((int64(ptr)-int64(start_subject))/1),
local_offsets3, // offset vector
uint32(uint64(2)*(uint64(unsafe.Sizeof(Tsize_t(0)))/uint64(unsafe.Sizeof(int32(0))))/(uint64(unsafe.Sizeof(Tsize_t(0)))/uint64(unsafe.Sizeof(int32(0))))),
local_workspace3, // workspace vector
DRWS_RSIZE, // size of same
rlevel, // function recursion level
RWS) // recursion workspace
// Failed to match
if !(rc3 < 0) {
goto __1226
}
if !(rc3 != -1) {
goto __1227
}
return rc3
__1227:
;
goto __1225
__1226:
;
// Matched: break the loop if zero characters matched.
charcount1 = *(*Tsize_t)(unsafe.Pointer(local_offsets3 + 1*8)) - *(*Tsize_t)(unsafe.Pointer(local_offsets3))
if !(charcount1 == uint64(0)) {
goto __1228
}
goto __1225
__1228:
;
local_ptr += TPCRE2_SPTR8(charcount1) // Advance temporary position ptr
goto __1224
__1224:
matched_count++
goto __1223
goto __1225
__1225:
;
*(*Tuint32_t)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 72)) + 12)) += uint32(uint64(DRWS_RSIZE) + uint64(2)*(uint64(unsafe.Sizeof(Tsize_t(0)))/uint64(unsafe.Sizeof(int32(0)))))
// At this point we have matched the subpattern matched_count
// times, and local_ptr is pointing to the character after the end of the
// last match.
if !(matched_count > uint64(0) || allow_zero != 0) {
goto __1229
}
end_subpattern = code
__1230:
end_subpattern += TPCRE2_SPTR8(uint32(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(end_subpattern + 1)))<<8 | int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(end_subpattern + 2)))))
goto __1231
__1231:
if int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(end_subpattern))) == OP_ALT {
goto __1230
}
goto __1232
__1232:
;
next_state_offset1 = int32((int64(end_subpattern)-int64(start_code))/1 + int64(DLINK_SIZE) + int64(1))
// Optimization: if there are no more active states, and there
// are no new states yet set up, then skip over the subject string
// right here, to save looping. Otherwise, set up the new state to swing
// into action when the end of the matched substring is reached.
if !(i+1 >= active_count && new_count == 0) {
goto __1233
}
ptr = local_ptr
clen = 0
if !(libc.PostIncInt32(&new_count, 1) < wscount) {
goto __1235
}
(*Tstateblock)(unsafe.Pointer(next_new_state)).Foffset = next_state_offset1
(*Tstateblock)(unsafe.Pointer(next_new_state)).Fcount = 0
next_new_state += 12
goto __1236
__1235:
return -43
__1236:
;
goto __1234
__1233:
p1 = ptr
pp1 = local_ptr
charcount1 = Tsize_t((int64(pp1) - int64(p1)) / 1)
if !(utf != 0) {
goto __1237
}
__1238:
if !(p1 < pp1) {
goto __1239
}
if !(uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&p1, 1))))&0xc0 == 0x80) {
goto __1240
}
charcount1--
__1240:
;
goto __1238
__1239:
;
__1237:
;
if !(libc.PostIncInt32(&new_count, 1) < wscount) {
goto __1241
}
(*Tstateblock)(unsafe.Pointer(next_new_state)).Foffset = -next_state_offset1
(*Tstateblock)(unsafe.Pointer(next_new_state)).Fcount = 0
(*Tstateblock)(unsafe.Pointer(next_new_state)).Fdata = int32(charcount1 - uint64(1))
next_new_state += 12
goto __1242
__1241:
return -43
__1242:
;
__1234:
;
__1229:
;
goto __89
//-----------------------------------------------------------------
__280:
*(*uintptr)(unsafe.Pointer(bp + 80 /* rws4 */)) = RWS
if !(uint64((*TRWS_anchor)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 80)))).Ffree) < uint64(DRWS_RSIZE)+uint64(2)*(uint64(unsafe.Sizeof(Tsize_t(0)))/uint64(unsafe.Sizeof(int32(0))))) {
goto __1243
}
rc4 = more_workspace(tls, bp+80, uint32(uint64(2)*(uint64(unsafe.Sizeof(Tsize_t(0)))/uint64(unsafe.Sizeof(int32(0))))), mb)
if !(rc4 != 0) {
goto __1244
}
return rc4
__1244:
;
RWS = *(*uintptr)(unsafe.Pointer(bp + 80 /* rws4 */))
__1243:
;
local_offsets4 = RWS + uintptr((*TRWS_anchor)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 80)))).Fsize)*4 - uintptr((*TRWS_anchor)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 80)))).Ffree)*4
local_workspace4 = local_offsets4 + uintptr(uint64(2)*(uint64(unsafe.Sizeof(Tsize_t(0)))/uint64(unsafe.Sizeof(int32(0)))))*4
*(*Tuint32_t)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 80)) + 12)) -= uint32(uint64(DRWS_RSIZE) + uint64(2)*(uint64(unsafe.Sizeof(Tsize_t(0)))/uint64(unsafe.Sizeof(int32(0)))))
rc4 = internal_dfa_match(tls,
mb, // fixed match data
code, // this subexpression's code
ptr, // where we currently are
Tsize_t((int64(ptr)-int64(start_subject))/1),
local_offsets4, // offset vector
uint32(uint64(2)*(uint64(unsafe.Sizeof(Tsize_t(0)))/uint64(unsafe.Sizeof(int32(0))))/(uint64(unsafe.Sizeof(Tsize_t(0)))/uint64(unsafe.Sizeof(int32(0))))),
local_workspace4, // workspace vector
DRWS_RSIZE, // size of same
rlevel, // function recursion level
RWS) // recursion workspace
*(*Tuint32_t)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 80)) + 12)) += uint32(uint64(DRWS_RSIZE) + uint64(2)*(uint64(unsafe.Sizeof(Tsize_t(0)))/uint64(unsafe.Sizeof(int32(0)))))
if !(rc4 >= 0) {
goto __1245
}
end_subpattern1 = code
charcount2 = *(*Tsize_t)(unsafe.Pointer(local_offsets4 + 1*8)) - *(*Tsize_t)(unsafe.Pointer(local_offsets4))
__1247:
end_subpattern1 += TPCRE2_SPTR8(uint32(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(end_subpattern1 + 1)))<<8 | int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(end_subpattern1 + 2)))))
goto __1248
__1248:
if int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(end_subpattern1))) == OP_ALT {
goto __1247
}
goto __1249
__1249:
;
next_state_offset2 = int32((int64(end_subpattern1)-int64(start_code))/1 + int64(DLINK_SIZE) + int64(1))
// If the end of this subpattern is KETRMAX or KETRMIN, we must
// arrange for the repeat state also to be added to the relevant list.
// Calculate the offset, or set -1 for no repeat.
if int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(end_subpattern1))) == OP_KETRMAX || int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(end_subpattern1))) == OP_KETRMIN {
repeat_state_offset = int32((int64(end_subpattern1)-int64(start_code))/1 - int64(uint32(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(end_subpattern1 + 1)))<<8|int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(end_subpattern1 + 2))))))
} else {
repeat_state_offset = -1
}
// If we have matched an empty string, add the next state at the
// current character pointer. This is important so that the duplicate
// checking kicks in, which is what breaks infinite loops that match an
// empty string.
if !(charcount2 == uint64(0)) {
goto __1250
}
if !(libc.PostIncInt32(&active_count, 1) < wscount) {
goto __1252
}
(*Tstateblock)(unsafe.Pointer(next_active_state)).Foffset = next_state_offset2
(*Tstateblock)(unsafe.Pointer(next_active_state)).Fcount = 0
next_active_state += 12
goto __1253
__1252:
return -43
__1253:
;
goto __1251
__1250:
if !(i+1 >= active_count && new_count == 0) {
goto __1254
}
ptr += TPCRE2_SPTR8(charcount2)
clen = 0
if !(libc.PostIncInt32(&new_count, 1) < wscount) {
goto __1256
}
(*Tstateblock)(unsafe.Pointer(next_new_state)).Foffset = next_state_offset2
(*Tstateblock)(unsafe.Pointer(next_new_state)).Fcount = 0
next_new_state += 12
goto __1257
__1256:
return -43
__1257:
;
// If we are adding a repeat state at the new character position,
// we must fudge things so that it is the only current state.
// Otherwise, it might be a duplicate of one we processed before, and
// that would cause it to be skipped.
if !(repeat_state_offset >= 0) {
goto __1258
}
next_active_state = active_states
active_count = 0
i = -1
if !(libc.PostIncInt32(&active_count, 1) < wscount) {
goto __1259
}
(*Tstateblock)(unsafe.Pointer(next_active_state)).Foffset = repeat_state_offset
(*Tstateblock)(unsafe.Pointer(next_active_state)).Fcount = 0
next_active_state += 12
goto __1260
__1259:
return -43
__1260:
;
__1258:
;
goto __1255
__1254:
if !(utf != 0) {
goto __1261
}
p2 = start_subject + uintptr(*(*Tsize_t)(unsafe.Pointer(local_offsets4)))
pp2 = start_subject + uintptr(*(*Tsize_t)(unsafe.Pointer(local_offsets4 + 1*8)))
__1262:
if !(p2 < pp2) {
goto __1263
}
if !(uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&p2, 1))))&0xc0 == 0x80) {
goto __1264
}
charcount2--
__1264:
;
goto __1262
__1263:
;
__1261:
;
if !(libc.PostIncInt32(&new_count, 1) < wscount) {
goto __1265
}
(*Tstateblock)(unsafe.Pointer(next_new_state)).Foffset = -next_state_offset2
(*Tstateblock)(unsafe.Pointer(next_new_state)).Fcount = 0
(*Tstateblock)(unsafe.Pointer(next_new_state)).Fdata = int32(charcount2 - uint64(1))
next_new_state += 12
goto __1266
__1265:
return -43
__1266:
;
if !(repeat_state_offset >= 0) {
goto __1267
}
if !(libc.PostIncInt32(&new_count, 1) < wscount) {
goto __1268
}
(*Tstateblock)(unsafe.Pointer(next_new_state)).Foffset = -repeat_state_offset
(*Tstateblock)(unsafe.Pointer(next_new_state)).Fcount = 0
(*Tstateblock)(unsafe.Pointer(next_new_state)).Fdata = int32(charcount2 - uint64(1))
next_new_state += 12
goto __1269
__1268:
return -43
__1269:
;
__1267:
;
__1255:
;
__1251:
;
goto __1246
__1245:
if !(rc4 != -1) {
goto __1270
}
return rc4
__1270:
;
__1246:
;
goto __89
// ==========================================================================
// Handle callouts
__281:
__282:
rrc = do_callout(tls, code, offsets, current_subject, ptr, mb, uint64(0),
bp+88)
if !(rrc < 0) {
goto __1271
}
return rrc
__1271:
; // Abandon
if !(rrc == 0) {
goto __1272
}
if !(libc.PostIncInt32(&active_count, 1) < wscount) {
goto __1273
}
(*Tstateblock)(unsafe.Pointer(next_active_state)).Foffset = state_offset + int32(*(*Tsize_t)(unsafe.Pointer(bp + 88)))
(*Tstateblock)(unsafe.Pointer(next_active_state)).Fcount = 0
next_active_state += 12
goto __1274
__1273:
return -43
__1274:
;
__1272:
;
goto __89
// ==========================================================================
__283: // Unsupported opcode
return -42
__89:
;
NEXT_ACTIVE_STATE:
goto __51
goto __51
__51:
i++
goto __50
goto __52
__52:
; // End of loop scanning active states
// We have finished the processing at the current subject character. If no
// new states have been set for the next character, we have found all the
// matches that we are going to find. If partial matching has been requested,
// check for appropriate conditions.
//
// The "forced_ fail" variable counts the number of (*F) encountered for the
// character. If it is equal to the original active_count (saved in
// workspace[1]) it means that (*F) was found on every active state. In this
// case we don't want to give a partial match.
//
// The "could_continue" variable is true if a state could have continued but
// for the fact that the end of the subject was reached.
if !(new_count <= 0) {
goto __1275
}
if !(could_continue != 0 && forced_fail != *(*int32)(unsafe.Pointer(workspace + 1*4)) && ((*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fmoptions&DPCRE2_PARTIAL_HARD != Tuint32_t(0) ||
(*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fmoptions&DPCRE2_PARTIAL_SOFT != Tuint32_t(0) && match_count < 0) && (partial_newline != 0 || ptr >= end_subject && (ptr > (*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fstart_used_ptr || (*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fallowemptypartial != 0))) {
goto __1276
}
match_count = -2
__1276:
;
goto __37 // Exit from loop along the subject string
__1275:
;
// One or more states are active for the next character.
ptr += TPCRE2_SPTR8(clen) // Advance to next subject character
goto __36
__36:
goto __35
goto __37
__37:
; // Loop to move along the subject string
// Control gets here from "break" a few lines above. If we have a match and
// PCRE2_ENDANCHORED is set, the match fails.
if !(match_count >= 0 && ((*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fmoptions|(*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fpoptions)&DPCRE2_ENDANCHORED != Tuint32_t(0) && ptr < end_subject) {
goto __1277
}
match_count = -1
__1277:
;
return match_count
}
// ************************************************
//
// Match a pattern using the DFA algorithm *
//
// This function matches a compiled pattern to a subject string, using the
// alternate matching algorithm that finds all matches at once.
//
// Arguments:
// code points to the compiled pattern
// subject subject string
// length length of subject string
// startoffset where to start matching in the subject
// options option bits
// match_data points to a match data structure
// gcontext points to a match context
// workspace pointer to workspace
// wscount size of workspace
//
// Returns: > 0 => number of match offset pairs placed in offsets
// = 0 => offsets overflowed; longest matches are present
// -1 => failed to match
// < -1 => some kind of unexpected problem
func Xpcre2_dfa_match_8(tls *libc.TLS, code uintptr, subject TPCRE2_SPTR8, length Tsize_t, start_offset Tsize_t, options Tuint32_t, match_data uintptr, mcontext uintptr, workspace uintptr, wscount Tsize_t) int32 { /* pcre2_dfa_match.c:3297:1: */
bp := tls.Alloc(31000)
defer tls.Free(31000)
var rc int32
var was_zero_terminated int32
var re uintptr
var start_match TPCRE2_SPTR8
var end_subject TPCRE2_SPTR8
var bumpalong_limit TPCRE2_SPTR8
var req_cu_ptr TPCRE2_SPTR8
var utf TBOOL
var anchored TBOOL
var startline TBOOL
var firstline TBOOL
var has_first_cu TBOOL
var has_req_cu TBOOL
var memchr_found_first_cu TPCRE2_SPTR8
var memchr_found_first_cu2 TPCRE2_SPTR8
var first_cu TPCRE2_UCHAR8
var first_cu2 TPCRE2_UCHAR8
var req_cu TPCRE2_UCHAR8
var req_cu2 TPCRE2_UCHAR8
var start_bits uintptr
// We need to have mb pointing to a match block, because the IS_NEWLINE macro
// is used below, and it expects NLBLOCK to be defined as a pointer.
// var cb Tpcre2_callout_block_8 at bp+30888, 112
// var actual_match_block Tdfa_match_block_8 at bp, 168
var mb uintptr
// Set up a starting block of memory for use during recursive calls to
// internal_dfa_match(). By putting this on the stack, it minimizes resource use
// in the case when it is not needed. If this is too small, more memory is
// obtained from the heap. At the start of each block is an anchor structure.
// var base_recursion_workspace [7680]int32 at bp+168, 30720
var rws uintptr
var i uint32
var check_subject TPCRE2_SPTR8
var t TPCRE2_SPTR8
var c TPCRE2_UCHAR8
var ok TBOOL
// In 16-bit and 32_bit modes we have to do our own search, so can
// look for both cases at once.
// In 8-bit mode, the use of memchr() gives a big speed up, even
// though we have to call it twice in order to find the earliest
// occurrence of the code unit in either of its cases. Caching is used
// to remember the positions of previously found code units. This can
// make a huge difference when the strings are very long and only one
// case is actually present.
var pp1 TPCRE2_SPTR8
var pp2 TPCRE2_SPTR8
var searchlength Tsize_t
var c1 Tuint32_t
var pp TPCRE2_SPTR8
var check_length Tsize_t
var p TPCRE2_SPTR8
var next uintptr
was_zero_terminated = 0
re = code
has_first_cu = DFALSE
has_req_cu = DFALSE
memchr_found_first_cu = uintptr(0)
memchr_found_first_cu2 = uintptr(0)
first_cu = TPCRE2_UCHAR8(0)
first_cu2 = TPCRE2_UCHAR8(0)
req_cu = TPCRE2_UCHAR8(0)
req_cu2 = TPCRE2_UCHAR8(0)
start_bits = uintptr(0)
mb = bp /* &actual_match_block */
rws = bp + 168 /* base_recursion_workspace */
(*TRWS_anchor)(unsafe.Pointer(rws)).Fnext = uintptr(0)
(*TRWS_anchor)(unsafe.Pointer(rws)).Fsize = uint32(uint64(DDFA_START_RWS_SIZE) / uint64(unsafe.Sizeof(int32(0))))
(*TRWS_anchor)(unsafe.Pointer(rws)).Ffree = uint32(uint64(DDFA_START_RWS_SIZE)/uint64(unsafe.Sizeof(int32(0))) - uint64(unsafe.Sizeof(TRWS_anchor{}))/uint64(unsafe.Sizeof(int32(0))))
// Recognize NULL, length 0 as an empty string.
if !(subject == uintptr(0) && length == uint64(0)) {
goto __1
}
subject = ts + 797 /* "" */
__1:
;
// Plausibility checks
if !(options&libc.CplUint32(DPCRE2_ANCHORED|DPCRE2_ENDANCHORED|DPCRE2_NOTBOL|DPCRE2_NOTEOL|DPCRE2_NOTEMPTY|DPCRE2_NOTEMPTY_ATSTART|DPCRE2_NO_UTF_CHECK|DPCRE2_PARTIAL_HARD|DPCRE2_PARTIAL_SOFT|DPCRE2_DFA_SHORTEST|DPCRE2_DFA_RESTART|DPCRE2_COPY_MATCHED_SUBJECT) != Tuint32_t(0)) {
goto __2
}
return -34
__2:
;
if !(re == uintptr(0) || subject == uintptr(0) || workspace == uintptr(0) || match_data == uintptr(0)) {
goto __3
}
return -51
__3:
;
if !(length == libc.CplUint64(uint64(0))) {
goto __4
}
length = X_pcre2_strlen_8(tls, subject)
was_zero_terminated = 1
__4:
;
if !(wscount < uint64(20)) {
goto __5
}
return -43
__5:
;
if !(start_offset > length) {
goto __6
}
return -33
__6:
;
// Partial matching and PCRE2_ENDANCHORED are currently not allowed at the same
// time.
if !(options&(DPCRE2_PARTIAL_HARD|DPCRE2_PARTIAL_SOFT) != Tuint32_t(0) && ((*Tpcre2_real_code_8)(unsafe.Pointer(re)).Foverall_options|options)&DPCRE2_ENDANCHORED != Tuint32_t(0)) {
goto __7
}
return -34
__7:
;
// Invalid UTF support is not available for DFA matching.
if !((*Tpcre2_real_code_8)(unsafe.Pointer(re)).Foverall_options&DPCRE2_MATCH_INVALID_UTF != Tuint32_t(0)) {
goto __8
}
return -66
__8:
;
// Check that the first field in the block is the magic number. If it is not,
// return with PCRE2_ERROR_BADMAGIC.
if !(uint64((*Tpcre2_real_code_8)(unsafe.Pointer(re)).Fmagic_number) != DMAGIC_NUMBER) {
goto __9
}
return -31
__9:
;
// Check the code unit width.
if !((*Tpcre2_real_code_8)(unsafe.Pointer(re)).Fflags&Tuint32_t(DPCRE2_MODE8|DPCRE2_MODE16|DPCRE2_MODE32) != Tuint32_t(DPCRE2_CODE_UNIT_WIDTH/8)) {
goto __10
}
return -32
__10:
;
// PCRE2_NOTEMPTY and PCRE2_NOTEMPTY_ATSTART are match-time flags in the
// options variable for this function. Users of PCRE2 who are not calling the
// function directly would like to have a way of setting these flags, in the same
// way that they can set pcre2_compile() flags like PCRE2_NO_AUTOPOSSESS with
// constructions like (*NO_AUTOPOSSESS). To enable this, (*NOTEMPTY) and
// (*NOTEMPTY_ATSTART) set bits in the pattern's "flag" function which can now be
// transferred to the options for this function. The bits are guaranteed to be
// adjacent, but do not have the same values. This bit of Boolean trickery assumes
// that the match-time bits are not more significant than the flag bits. If by
// accident this is not the case, a compile-time division by zero error will
// occur.
options = options | (*Tpcre2_real_code_8)(unsafe.Pointer(re)).Fflags&Tuint32_t(DPCRE2_NOTEMPTY_SET|DPCRE2_NE_ATST_SET)/(uint32((DPCRE2_NOTEMPTY_SET|DPCRE2_NE_ATST_SET)&(libc.CplInt32(DPCRE2_NOTEMPTY_SET|DPCRE2_NE_ATST_SET)+1))/((DPCRE2_NOTEMPTY|DPCRE2_NOTEMPTY_ATSTART)&(libc.CplUint32(DPCRE2_NOTEMPTY|DPCRE2_NOTEMPTY_ATSTART)+uint32(1))))
// If restarting after a partial match, do some sanity checks on the contents
// of the workspace.
if !(options&DPCRE2_DFA_RESTART != Tuint32_t(0)) {
goto __11
}
if !(*(*int32)(unsafe.Pointer(workspace))&-2 != 0 || *(*int32)(unsafe.Pointer(workspace + 1*4)) < 1 || *(*int32)(unsafe.Pointer(workspace + 1*4)) > int32((wscount-uint64(2))/Tsize_t(int32(uint64(unsafe.Sizeof(Tstateblock{}))/uint64(unsafe.Sizeof(int32(0))))))) {
goto __12
}
return -38
__12:
;
__11:
;
// Set some local values
utf = libc.Bool32((*Tpcre2_real_code_8)(unsafe.Pointer(re)).Foverall_options&DPCRE2_UTF != Tuint32_t(0))
start_match = subject + uintptr(start_offset)
end_subject = subject + uintptr(length)
req_cu_ptr = start_match - uintptr(1)
anchored = libc.Bool32(options&(DPCRE2_ANCHORED|DPCRE2_DFA_RESTART) != Tuint32_t(0) || (*Tpcre2_real_code_8)(unsafe.Pointer(re)).Foverall_options&DPCRE2_ANCHORED != Tuint32_t(0))
// The "must be at the start of a line" flags are used in a loop when finding
// where to start.
startline = libc.Bool32((*Tpcre2_real_code_8)(unsafe.Pointer(re)).Fflags&Tuint32_t(DPCRE2_STARTLINE) != Tuint32_t(0))
firstline = libc.Bool32((*Tpcre2_real_code_8)(unsafe.Pointer(re)).Foverall_options&DPCRE2_FIRSTLINE != Tuint32_t(0))
bumpalong_limit = end_subject
// Initialize and set up the fixed fields in the callout block, with a pointer
// in the match block.
(*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fcb = bp + 30888 /* &cb */
(*Tpcre2_callout_block_8)(unsafe.Pointer(bp + 30888 /* &cb */)).Fversion = Tuint32_t(2)
(*Tpcre2_callout_block_8)(unsafe.Pointer(bp + 30888 /* &cb */)).Fsubject = subject
(*Tpcre2_callout_block_8)(unsafe.Pointer(bp + 30888 /* &cb */)).Fsubject_length = Tsize_t((int64(end_subject) - int64(subject)) / 1)
(*Tpcre2_callout_block_8)(unsafe.Pointer(bp + 30888 /* &cb */)).Fcallout_flags = Tuint32_t(0)
(*Tpcre2_callout_block_8)(unsafe.Pointer(bp + 30888 /* &cb */)).Fcapture_top = Tuint32_t(1) // No capture support
(*Tpcre2_callout_block_8)(unsafe.Pointer(bp + 30888 /* &cb */)).Fcapture_last = Tuint32_t(0)
(*Tpcre2_callout_block_8)(unsafe.Pointer(bp + 30888 /* &cb */)).Fmark = uintptr(0) // No (*MARK) support
// Get data from the match context, if present, and fill in the remaining
// fields in the match block. It is an error to set an offset limit without
// setting the flag at compile time.
if !(mcontext == uintptr(0)) {
goto __13
}
(*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fcallout = uintptr(0)
(*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fmemctl = (*Tpcre2_real_code_8)(unsafe.Pointer(re)).Fmemctl
(*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fmatch_limit = X_pcre2_default_match_context_8.Fmatch_limit
(*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fmatch_limit_depth = X_pcre2_default_match_context_8.Fdepth_limit
(*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fheap_limit = Tsize_t(X_pcre2_default_match_context_8.Fheap_limit)
goto __14
__13:
if !((*Tpcre2_match_context_8)(unsafe.Pointer(mcontext)).Foffset_limit != libc.CplUint64(uint64(0))) {
goto __15
}
if !((*Tpcre2_real_code_8)(unsafe.Pointer(re)).Foverall_options&DPCRE2_USE_OFFSET_LIMIT == Tuint32_t(0)) {
goto __16
}
return -56
__16:
;
bumpalong_limit = subject + uintptr((*Tpcre2_match_context_8)(unsafe.Pointer(mcontext)).Foffset_limit)
__15:
;
(*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fcallout = (*Tpcre2_match_context_8)(unsafe.Pointer(mcontext)).Fcallout
(*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fcallout_data = (*Tpcre2_match_context_8)(unsafe.Pointer(mcontext)).Fcallout_data
(*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fmemctl = (*Tpcre2_match_context_8)(unsafe.Pointer(mcontext)).Fmemctl
(*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fmatch_limit = (*Tpcre2_match_context_8)(unsafe.Pointer(mcontext)).Fmatch_limit
(*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fmatch_limit_depth = (*Tpcre2_match_context_8)(unsafe.Pointer(mcontext)).Fdepth_limit
(*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fheap_limit = Tsize_t((*Tpcre2_match_context_8)(unsafe.Pointer(mcontext)).Fheap_limit)
__14:
;
if !((*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fmatch_limit > (*Tpcre2_real_code_8)(unsafe.Pointer(re)).Flimit_match) {
goto __17
}
(*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fmatch_limit = (*Tpcre2_real_code_8)(unsafe.Pointer(re)).Flimit_match
__17:
;
if !((*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fmatch_limit_depth > (*Tpcre2_real_code_8)(unsafe.Pointer(re)).Flimit_depth) {
goto __18
}
(*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fmatch_limit_depth = (*Tpcre2_real_code_8)(unsafe.Pointer(re)).Flimit_depth
__18:
;
if !((*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fheap_limit > Tsize_t((*Tpcre2_real_code_8)(unsafe.Pointer(re)).Flimit_heap)) {
goto __19
}
(*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fheap_limit = Tsize_t((*Tpcre2_real_code_8)(unsafe.Pointer(re)).Flimit_heap)
__19:
;
(*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fstart_code = re + uintptr(uint64(unsafe.Sizeof(Tpcre2_real_code_8{}))) + uintptr(int32((*Tpcre2_real_code_8)(unsafe.Pointer(re)).Fname_count)*int32((*Tpcre2_real_code_8)(unsafe.Pointer(re)).Fname_entry_size))
(*Tdfa_match_block_8)(unsafe.Pointer(mb)).Ftables = (*Tpcre2_real_code_8)(unsafe.Pointer(re)).Ftables
(*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fstart_subject = subject
(*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fend_subject = end_subject
(*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fstart_offset = start_offset
(*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fallowemptypartial = libc.Bool32(int32((*Tpcre2_real_code_8)(unsafe.Pointer(re)).Fmax_lookbehind) > 0 || (*Tpcre2_real_code_8)(unsafe.Pointer(re)).Fflags&Tuint32_t(DPCRE2_MATCH_EMPTY) != Tuint32_t(0))
(*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fmoptions = options
(*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fpoptions = (*Tpcre2_real_code_8)(unsafe.Pointer(re)).Foverall_options
(*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fmatch_call_count = Tuint32_t(0)
(*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fheap_used = uint64(0)
// Process the \R and newline settings.
(*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fbsr_convention = (*Tpcre2_real_code_8)(unsafe.Pointer(re)).Fbsr_convention
(*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fnltype = Tuint32_t(DNLTYPE_FIXED)
switch int32((*Tpcre2_real_code_8)(unsafe.Pointer(re)).Fnewline_convention) {
case DPCRE2_NEWLINE_CR:
goto __21
case DPCRE2_NEWLINE_LF:
goto __22
case DPCRE2_NEWLINE_NUL:
goto __23
case DPCRE2_NEWLINE_CRLF:
goto __24
case DPCRE2_NEWLINE_ANY:
goto __25
case DPCRE2_NEWLINE_ANYCRLF:
goto __26
default:
goto __27
}
goto __20
__21:
(*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fnllen = Tuint32_t(1)
*(*TPCRE2_UCHAR8)(unsafe.Pointer(mb + 128)) = TPCRE2_UCHAR8('\015')
goto __20
__22:
(*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fnllen = Tuint32_t(1)
*(*TPCRE2_UCHAR8)(unsafe.Pointer(mb + 128)) = TPCRE2_UCHAR8('\012')
goto __20
__23:
(*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fnllen = Tuint32_t(1)
*(*TPCRE2_UCHAR8)(unsafe.Pointer(mb + 128)) = TPCRE2_UCHAR8(0)
goto __20
__24:
(*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fnllen = Tuint32_t(2)
*(*TPCRE2_UCHAR8)(unsafe.Pointer(mb + 128)) = TPCRE2_UCHAR8('\015')
*(*TPCRE2_UCHAR8)(unsafe.Pointer(mb + 128 + 1)) = TPCRE2_UCHAR8('\012')
goto __20
__25:
(*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fnltype = Tuint32_t(DNLTYPE_ANY)
goto __20
__26:
(*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fnltype = Tuint32_t(DNLTYPE_ANYCRLF)
goto __20
__27:
return -44
__20:
;
// Check a UTF string for validity if required. For 8-bit and 16-bit strings,
// we must also check that a starting offset does not point into the middle of a
// multiunit character. We check only the portion of the subject that is going to
// be inspected during matching - from the offset minus the maximum back reference
// to the given length. This saves time when a small part of a large subject is
// being matched by the use of a starting offset. Note that the maximum lookbehind
// is a number of characters, not code units.
if !(utf != 0 && options&DPCRE2_NO_UTF_CHECK == Tuint32_t(0)) {
goto __28
}
check_subject = start_match // start_match includes offset
if !(start_offset > uint64(0)) {
goto __29
}
if !(start_match < end_subject && uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(start_match)))&0xc0 == 0x80) {
goto __30
}
return -36
__30:
;
i = uint32((*Tpcre2_real_code_8)(unsafe.Pointer(re)).Fmax_lookbehind)
__31:
if !(i > uint32(0) && check_subject > subject) {
goto __33
}
check_subject--
__34:
if !(check_subject > subject && int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(check_subject)))&0xc0 == 0x80) {
goto __35
}
check_subject--
goto __34
__35:
;
goto __32
__32:
i--
goto __31
goto __33
__33:
;
__29:
;
// Validate the relevant portion of the subject. After an error, adjust the
// offset to be an absolute offset in the whole string.
(*Tpcre2_match_data_8)(unsafe.Pointer(match_data)).Frc = X_pcre2_valid_utf_8(tls, check_subject,
length-Tsize_t((int64(check_subject)-int64(subject))/1), match_data+64)
if !((*Tpcre2_match_data_8)(unsafe.Pointer(match_data)).Frc != 0) {
goto __36
}
*(*Tsize_t)(unsafe.Pointer(match_data + 64)) += Tsize_t((int64(check_subject) - int64(subject)) / 1)
return (*Tpcre2_match_data_8)(unsafe.Pointer(match_data)).Frc
__36:
;
__28:
;
// Set up the first code unit to match, if available. If there's no first code
// unit there may be a bitmap of possible first characters.
if !((*Tpcre2_real_code_8)(unsafe.Pointer(re)).Fflags&Tuint32_t(DPCRE2_FIRSTSET) != Tuint32_t(0)) {
goto __37
}
has_first_cu = DTRUE
first_cu = libc.AssignUint8(&first_cu2, TPCRE2_UCHAR8((*Tpcre2_real_code_8)(unsafe.Pointer(re)).Ffirst_codeunit))
if !((*Tpcre2_real_code_8)(unsafe.Pointer(re)).Fflags&Tuint32_t(DPCRE2_FIRSTCASELESS) != Tuint32_t(0)) {
goto __39
}
first_cu2 = *(*Tuint8_t)(unsafe.Pointer((*Tdfa_match_block_8)(unsafe.Pointer(mb)).Ftables + uintptr(Dfcc_offset) + uintptr(first_cu)))
if !(int32(first_cu) > 127 && !(utf != 0) && (*Tpcre2_real_code_8)(unsafe.Pointer(re)).Foverall_options&DPCRE2_UCP != Tuint32_t(0)) {
goto __40
}
first_cu2 = TPCRE2_UCHAR8(Tuint32_t(int32(first_cu) + (*Tucd_record)(unsafe.Pointer(uintptr(unsafe.Pointer(&X_pcre2_ucd_records_8))+uintptr(X_pcre2_ucd_stage2_8[int32(X_pcre2_ucd_stage1_8[int32(first_cu)/DUCD_BLOCK_SIZE])*DUCD_BLOCK_SIZE+int32(first_cu)%DUCD_BLOCK_SIZE])*12)).Fother_case))
__40:
;
__39:
;
goto __38
__37:
if !(!(startline != 0) && (*Tpcre2_real_code_8)(unsafe.Pointer(re)).Fflags&Tuint32_t(DPCRE2_FIRSTMAPSET) != Tuint32_t(0)) {
goto __41
}
start_bits = re + 40 /* &.start_bitmap */
__41:
;
__38:
;
// There may be a "last known required code unit" set.
if !((*Tpcre2_real_code_8)(unsafe.Pointer(re)).Fflags&Tuint32_t(DPCRE2_LASTSET) != Tuint32_t(0)) {
goto __42
}
has_req_cu = DTRUE
req_cu = libc.AssignUint8(&req_cu2, TPCRE2_UCHAR8((*Tpcre2_real_code_8)(unsafe.Pointer(re)).Flast_codeunit))
if !((*Tpcre2_real_code_8)(unsafe.Pointer(re)).Fflags&Tuint32_t(DPCRE2_LASTCASELESS) != Tuint32_t(0)) {
goto __43
}
req_cu2 = *(*Tuint8_t)(unsafe.Pointer((*Tdfa_match_block_8)(unsafe.Pointer(mb)).Ftables + uintptr(Dfcc_offset) + uintptr(req_cu)))
if !(int32(req_cu) > 127 && !(utf != 0) && (*Tpcre2_real_code_8)(unsafe.Pointer(re)).Foverall_options&DPCRE2_UCP != Tuint32_t(0)) {
goto __44
}
req_cu2 = TPCRE2_UCHAR8(Tuint32_t(int32(req_cu) + (*Tucd_record)(unsafe.Pointer(uintptr(unsafe.Pointer(&X_pcre2_ucd_records_8))+uintptr(X_pcre2_ucd_stage2_8[int32(X_pcre2_ucd_stage1_8[int32(req_cu)/DUCD_BLOCK_SIZE])*DUCD_BLOCK_SIZE+int32(req_cu)%DUCD_BLOCK_SIZE])*12)).Fother_case))
__44:
;
__43:
;
__42:
;
// If the match data block was previously used with PCRE2_COPY_MATCHED_SUBJECT,
// free the memory that was obtained.
if !(uint32((*Tpcre2_match_data_8)(unsafe.Pointer(match_data)).Fflags)&DPCRE2_MD_COPIED_SUBJECT != uint32(0)) {
goto __45
}
(*struct {
f func(*libc.TLS, uintptr, uintptr)
})(unsafe.Pointer(&struct{ uintptr }{(*Tpcre2_match_data_8)(unsafe.Pointer(match_data)).Fmemctl.Ffree})).f(tls, (*Tpcre2_match_data_8)(unsafe.Pointer(match_data)).Fsubject,
(*Tpcre2_match_data_8)(unsafe.Pointer(match_data)).Fmemctl.Fmemory_data)
*(*Tuint8_t)(unsafe.Pointer(match_data + 73)) &= libc.Uint8FromUint32(libc.CplUint32(DPCRE2_MD_COPIED_SUBJECT))
__45:
;
// Fill in fields that are always returned in the match data.
(*Tpcre2_match_data_8)(unsafe.Pointer(match_data)).Fcode = re
(*Tpcre2_match_data_8)(unsafe.Pointer(match_data)).Fsubject = uintptr(0) // Default for no match
(*Tpcre2_match_data_8)(unsafe.Pointer(match_data)).Fmark = uintptr(0)
(*Tpcre2_match_data_8)(unsafe.Pointer(match_data)).Fmatchedby = PCRE2_MATCHEDBY_DFA_INTERPRETER
// Call the main matching function, looping for a non-anchored regex after a
// failed match. If not restarting, perform certain optimizations at the start of
// a match.
__46:
// ----------------- Start of match optimizations ----------------
// There are some optimizations that avoid running the match if a known
// starting point is not found, or if a known later code unit is not present.
// However, there is an option (settable at compile time) that disables
// these, for testing and for ensuring that all callouts do actually occur.
// The optimizations must also be avoided when restarting a DFA match.
if !((*Tpcre2_real_code_8)(unsafe.Pointer(re)).Foverall_options&DPCRE2_NO_START_OPTIMIZE == Tuint32_t(0) && options&DPCRE2_DFA_RESTART == Tuint32_t(0)) {
goto __49
}
// If firstline is TRUE, the start of the match is constrained to the first
// line of a multiline string. That is, the match must be before or at the
// first newline following the start of matching. Temporarily adjust
// end_subject so that we stop the optimization scans for a first code unit
// immediately after the first character of a newline (the first code unit can
// legitimately be a newline). If the match fails at the newline, later code
// breaks this loop.
if !(firstline != 0) {
goto __50
}
t = start_match
if !(utf != 0) {
goto __51
}
__53:
if !(t < end_subject && !(func() int32 {
if (*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fnltype != Tuint32_t(DNLTYPE_FIXED) {
return libc.Bool32(t < (*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fend_subject && X_pcre2_is_newline_8(tls, t, (*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fnltype, (*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fend_subject, mb+120, utf) != 0)
}
return libc.Bool32(t <= (*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fend_subject-uintptr((*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fnllen) && int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(t))) == int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(mb + 128))) && ((*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fnllen == Tuint32_t(1) || int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(t + uintptr(1)))) == int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(mb + 128 + 1)))))
}() != 0)) {
goto __54
}
t++
__55:
if !(t < end_subject && uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(t)))&0xc0 == 0x80) {
goto __56
}
t++
goto __55
__56:
;
goto __53
__54:
;
goto __52
__51:
__57:
if !(t < end_subject && !(func() int32 {
if (*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fnltype != Tuint32_t(DNLTYPE_FIXED) {
return libc.Bool32(t < (*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fend_subject && X_pcre2_is_newline_8(tls, t, (*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fnltype, (*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fend_subject, mb+120, utf) != 0)
}
return libc.Bool32(t <= (*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fend_subject-uintptr((*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fnllen) && int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(t))) == int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(mb + 128))) && ((*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fnllen == Tuint32_t(1) || int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(t + uintptr(1)))) == int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(mb + 128 + 1)))))
}() != 0)) {
goto __58
}
t++
goto __57
__58:
;
__52:
;
end_subject = t
__50:
;
// Anchored: check the first code unit if one is recorded. This may seem
// pointless but it can help in detecting a no match case without scanning for
// the required code unit.
if !(anchored != 0) {
goto __59
}
if !(has_first_cu != 0 || start_bits != uintptr(0)) {
goto __61
}
ok = libc.Bool32(start_match < end_subject)
if !(ok != 0) {
goto __62
}
c = *(*TPCRE2_UCHAR8)(unsafe.Pointer(start_match))
ok = libc.Bool32(has_first_cu != 0 && (int32(c) == int32(first_cu) || int32(c) == int32(first_cu2)))
if !(!(ok != 0) && start_bits != uintptr(0)) {
goto __63
}
ok = libc.Bool32(uint32(*(*Tuint8_t)(unsafe.Pointer(start_bits + uintptr(int32(c)/8))))&(uint32(1)<<(int32(c)&7)) != uint32(0))
__63:
;
__62:
;
if !!(ok != 0) {
goto __64
}
goto __48
__64:
;
__61:
;
goto __60
__59:
if !(has_first_cu != 0) {
goto __65
}
if !(int32(first_cu) != int32(first_cu2)) {
goto __67
} /* Caseless */
// In 16-bit and 32_bit modes we have to do our own search, so can
// look for both cases at once.
// In 8-bit mode, the use of memchr() gives a big speed up, even
// though we have to call it twice in order to find the earliest
// occurrence of the code unit in either of its cases. Caching is used
// to remember the positions of previously found code units. This can
// make a huge difference when the strings are very long and only one
// case is actually present.
pp1 = uintptr(0)
pp2 = uintptr(0)
searchlength = Tsize_t((int64(end_subject) - int64(start_match)) / 1)
// If we haven't got a previously found position for first_cu, or if
// the current starting position is later, we need to do a search. If
// the code unit is not found, set it to the end.
if !(memchr_found_first_cu == uintptr(0) || start_match > memchr_found_first_cu) {
goto __69
}
pp1 = libc.Xmemchr(tls, start_match, int32(first_cu), searchlength)
if pp1 == uintptr(0) {
memchr_found_first_cu = end_subject
} else {
memchr_found_first_cu = pp1
}
goto __70
__69:
if memchr_found_first_cu == end_subject {
pp1 = uintptr(0)
} else {
pp1 = memchr_found_first_cu
}
__70:
;
// Do the same thing for the other case.
if !(memchr_found_first_cu2 == uintptr(0) || start_match > memchr_found_first_cu2) {
goto __71
}
pp2 = libc.Xmemchr(tls, start_match, int32(first_cu2), searchlength)
if pp2 == uintptr(0) {
memchr_found_first_cu2 = end_subject
} else {
memchr_found_first_cu2 = pp2
}
goto __72
__71:
if memchr_found_first_cu2 == end_subject {
pp2 = uintptr(0)
} else {
pp2 = memchr_found_first_cu2
}
__72:
;
// Set the start to the end of the subject if neither case was found.
// Otherwise, use the earlier found point.
if !(pp1 == uintptr(0)) {
goto __73
}
if pp2 == uintptr(0) {
start_match = end_subject
} else {
start_match = pp2
}
goto __74
__73:
if pp2 == uintptr(0) || pp1 < pp2 {
start_match = pp1
} else {
start_match = pp2
}
__74:
;
goto __68
__67:
start_match = libc.Xmemchr(tls, start_match, int32(first_cu), uint64((int64(end_subject)-int64(start_match))/1))
if !(start_match == uintptr(0)) {
goto __75
}
start_match = end_subject
__75:
;
__68:
;
// If we can't find the required code unit, having reached the true end
// of the subject, break the bumpalong loop, to force a match failure,
// except when doing partial matching, when we let the next cycle run at
// the end of the subject. To see why, consider the pattern /(?<=abc)def/,
// which partially matches "abc", even though the string does not contain
// the starting character "d". If we have not reached the true end of the
// subject (PCRE2_FIRSTLINE caused end_subject to be temporarily modified)
// we also let the cycle run, because the matching string is legitimately
// allowed to start with the first code unit of a newline.
if !((*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fmoptions&(DPCRE2_PARTIAL_HARD|DPCRE2_PARTIAL_SOFT) == Tuint32_t(0) && start_match >= (*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fend_subject) {
goto __76
}
goto __48
__76:
;
goto __66
__65:
if !(startline != 0) {
goto __77
}
if !(start_match > (*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fstart_subject+uintptr(start_offset)) {
goto __79
}
if !(utf != 0) {
goto __80
}
__82:
if !(start_match < end_subject && !(func() int32 {
if (*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fnltype != Tuint32_t(DNLTYPE_FIXED) {
return libc.Bool32(start_match > (*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fstart_subject && X_pcre2_was_newline_8(tls, start_match, (*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fnltype, (*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fstart_subject, mb+120, utf) != 0)
}
return libc.Bool32(start_match >= (*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fstart_subject+uintptr((*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fnllen) && int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(start_match - uintptr((*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fnllen)))) == int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(mb + 128))) && ((*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fnllen == Tuint32_t(1) || int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(start_match - uintptr((*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fnllen) + uintptr(1)))) == int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(mb + 128 + 1)))))
}() != 0)) {
goto __83
}
start_match++
__84:
if !(start_match < end_subject && uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(start_match)))&0xc0 == 0x80) {
goto __85
}
start_match++
goto __84
__85:
;
goto __82
__83:
;
goto __81
__80:
__86:
if !(start_match < end_subject && !(func() int32 {
if (*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fnltype != Tuint32_t(DNLTYPE_FIXED) {
return libc.Bool32(start_match > (*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fstart_subject && X_pcre2_was_newline_8(tls, start_match, (*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fnltype, (*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fstart_subject, mb+120, utf) != 0)
}
return libc.Bool32(start_match >= (*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fstart_subject+uintptr((*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fnllen) && int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(start_match - uintptr((*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fnllen)))) == int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(mb + 128))) && ((*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fnllen == Tuint32_t(1) || int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(start_match - uintptr((*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fnllen) + uintptr(1)))) == int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(mb + 128 + 1)))))
}() != 0)) {
goto __87
}
start_match++
goto __86
__87:
;
__81:
;
// If we have just passed a CR and the newline option is ANY or
// ANYCRLF, and we are now at a LF, advance the match position by one
// more code unit.
if !(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(start_match + libc.UintptrFromInt32(-1)))) == '\015' && ((*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fnltype == Tuint32_t(DNLTYPE_ANY) || (*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fnltype == Tuint32_t(DNLTYPE_ANYCRLF)) && start_match < end_subject && int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(start_match))) == '\012') {
goto __88
}
start_match++
__88:
;
__79:
;
goto __78
__77:
if !(start_bits != uintptr(0)) {
goto __89
}
__90:
if !(start_match < end_subject) {
goto __91
}
c1 = Tuint32_t(*(*TPCRE2_UCHAR8)(unsafe.Pointer(start_match)))
if !(uint32(*(*Tuint8_t)(unsafe.Pointer(start_bits + uintptr(c1/Tuint32_t(8)))))&(uint32(1)<<(c1&Tuint32_t(7))) != uint32(0)) {
goto __92
}
goto __91
__92:
;
start_match++
goto __90
__91:
;
// See comment above in first_cu checking about the next line.
if !((*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fmoptions&(DPCRE2_PARTIAL_HARD|DPCRE2_PARTIAL_SOFT) == Tuint32_t(0) && start_match >= (*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fend_subject) {
goto __93
}
goto __48
__93:
;
__89:
;
__78:
;
__66:
;
__60:
; // End of first code unit handling
// Restore fudged end_subject
end_subject = (*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fend_subject
// The following two optimizations are disabled for partial matching.
if !((*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fmoptions&(DPCRE2_PARTIAL_HARD|DPCRE2_PARTIAL_SOFT) == Tuint32_t(0)) {
goto __94
}
// The minimum matching length is a lower bound; no actual string of that
// length may actually match the pattern. Although the value is, strictly,
// in characters, we treat it as code units to avoid spending too much time
// in this optimization.
if !((int64(end_subject)-int64(start_match))/1 < int64((*Tpcre2_real_code_8)(unsafe.Pointer(re)).Fminlength)) {
goto __95
}
goto NOMATCH_EXIT
__95:
;
// If req_cu is set, we know that that code unit must appear in the
// subject for the match to succeed. If the first code unit is set, req_cu
// must be later in the subject; otherwise the test starts at the match
// point. This optimization can save a huge amount of backtracking in
// patterns with nested unlimited repeats that aren't going to match.
// Writing separate code for cased/caseless versions makes it go faster, as
// does using an autoincrement and backing off on a match. As in the case of
// the first code unit, using memchr() in the 8-bit library gives a big
// speed up. Unlike the first_cu check above, we do not need to call
// memchr() twice in the caseless case because we only need to check for the
// presence of the character in either case, not find the first occurrence.
//
// The search can be skipped if the code unit was found later than the
// current starting point in a previous iteration of the bumpalong loop.
//
// HOWEVER: when the subject string is very, very long, searching to its end
// can take a long time, and give bad performance on quite ordinary
// patterns. This showed up when somebody was matching something like
// /^\d+C/ on a 32-megabyte string... so we don't do this when the string is
// sufficiently long, but it's worth searching a lot more for unanchored
// patterns.
p = start_match + uintptr(func() int32 {
if has_first_cu != 0 {
return 1
}
return 0
}())
if !(has_req_cu != 0 && p > req_cu_ptr) {
goto __96
}
check_length = Tsize_t((int64(end_subject) - int64(start_match)) / 1)
if !(check_length < uint64(DREQ_CU_MAX) || !(anchored != 0) && check_length < uint64(DREQ_CU_MAX*1000)) {
goto __97
}
if !(int32(req_cu) != int32(req_cu2)) {
goto __98
} /* Caseless */
pp = p
p = libc.Xmemchr(tls, pp, int32(req_cu), uint64((int64(end_subject)-int64(pp))/1))
if !(p == uintptr(0)) {
goto __100
}
p = libc.Xmemchr(tls, pp, int32(req_cu2), uint64((int64(end_subject)-int64(pp))/1))
if !(p == uintptr(0)) {
goto __101
}
p = end_subject
__101:
;
__100:
;
goto __99
__98:
p = libc.Xmemchr(tls, p, int32(req_cu), uint64((int64(end_subject)-int64(p))/1))
if !(p == uintptr(0)) {
goto __102
}
p = end_subject
__102:
;
__99:
;
// If we can't find the required code unit, break the matching loop,
// forcing a match failure.
if !(p >= end_subject) {
goto __103
}
goto __48
__103:
;
// If we have found the required code unit, save the point where we
// found it, so that we don't search again next time round the loop if
// the start hasn't passed this code unit yet.
req_cu_ptr = p
__97:
;
__96:
;
__94:
;
__49:
;
// ------------ End of start of match optimizations ------------
// Give no match if we have passed the bumpalong limit.
if !(start_match > bumpalong_limit) {
goto __104
}
goto __48
__104:
;
// OK, now we can do the business
(*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fstart_used_ptr = start_match
(*Tdfa_match_block_8)(unsafe.Pointer(mb)).Flast_used_ptr = start_match
(*Tdfa_match_block_8)(unsafe.Pointer(mb)).Frecursive = uintptr(0)
rc = internal_dfa_match(tls,
mb, // fixed match data
(*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fstart_code, // this subexpression's code
start_match, // where we currently are
start_offset, // start offset in subject
match_data+80,
Tuint32_t((*Tpcre2_match_data_8)(unsafe.Pointer(match_data)).Foveccount)*Tuint32_t(2),
workspace, // workspace vector
int32(wscount), // size of same
uint32(0), // function recurse level
bp+168) // initial workspace for recursion
// Anything other than "no match" means we are done, always; otherwise, carry
// on only if not anchored.
if !(rc != -1 || anchored != 0) {
goto __105
}
if !(rc == -2 && int32((*Tpcre2_match_data_8)(unsafe.Pointer(match_data)).Foveccount) > 0) {
goto __106
}
*(*Tsize_t)(unsafe.Pointer(match_data + 80)) = Tsize_t((int64(start_match) - int64(subject)) / 1)
*(*Tsize_t)(unsafe.Pointer(match_data + 80 + 1*8)) = Tsize_t((int64(end_subject) - int64(subject)) / 1)
__106:
;
(*Tpcre2_match_data_8)(unsafe.Pointer(match_data)).Fleftchar = Tsize_t((int64((*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fstart_used_ptr) - int64(subject)) / 1)
(*Tpcre2_match_data_8)(unsafe.Pointer(match_data)).Frightchar = Tsize_t((int64((*Tdfa_match_block_8)(unsafe.Pointer(mb)).Flast_used_ptr) - int64(subject)) / 1)
(*Tpcre2_match_data_8)(unsafe.Pointer(match_data)).Fstartchar = Tsize_t((int64(start_match) - int64(subject)) / 1)
(*Tpcre2_match_data_8)(unsafe.Pointer(match_data)).Frc = rc
if !(rc >= 0 && options&DPCRE2_COPY_MATCHED_SUBJECT != Tuint32_t(0)) {
goto __107
}
length = (length + Tsize_t(was_zero_terminated)) * uint64(DPCRE2_CODE_UNIT_WIDTH/8)
(*Tpcre2_match_data_8)(unsafe.Pointer(match_data)).Fsubject = (*struct {
f func(*libc.TLS, Tsize_t, uintptr) uintptr
})(unsafe.Pointer(&struct{ uintptr }{(*Tpcre2_match_data_8)(unsafe.Pointer(match_data)).Fmemctl.Fmalloc})).f(tls, length,
(*Tpcre2_match_data_8)(unsafe.Pointer(match_data)).Fmemctl.Fmemory_data)
if !((*Tpcre2_match_data_8)(unsafe.Pointer(match_data)).Fsubject == uintptr(0)) {
goto __109
}
return -48
__109:
;
libc.Xmemcpy(tls, (*Tpcre2_match_data_8)(unsafe.Pointer(match_data)).Fsubject, subject, length)
*(*Tuint8_t)(unsafe.Pointer(match_data + 73)) |= uint8(DPCRE2_MD_COPIED_SUBJECT)
goto __108
__107:
if !(rc >= 0 || rc == -2) {
goto __110
}
(*Tpcre2_match_data_8)(unsafe.Pointer(match_data)).Fsubject = subject
__110:
;
__108:
;
goto EXIT
__105:
;
// Advance to the next subject character unless we are at the end of a line
// and firstline is set.
if !(firstline != 0 && func() int32 {
if (*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fnltype != Tuint32_t(DNLTYPE_FIXED) {
return libc.Bool32(start_match < (*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fend_subject && X_pcre2_is_newline_8(tls, start_match, (*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fnltype, (*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fend_subject, mb+120, utf) != 0)
}
return libc.Bool32(start_match <= (*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fend_subject-uintptr((*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fnllen) && int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(start_match))) == int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(mb + 128))) && ((*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fnllen == Tuint32_t(1) || int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(start_match + uintptr(1)))) == int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(mb + 128 + 1)))))
}() != 0) {
goto __111
}
goto __48
__111:
;
start_match++
if !(utf != 0) {
goto __112
}
__113:
if !(start_match < end_subject && uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(start_match)))&0xc0 == 0x80) {
goto __114
}
start_match++
goto __113
__114:
;
__112:
;
if !(start_match > end_subject) {
goto __115
}
goto __48
__115:
;
// If we have just passed a CR and we are now at a LF, and the pattern does
// not contain any explicit matches for \r or \n, and the newline option is CRLF
// or ANY or ANYCRLF, advance the match position by one more character.
if !(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(start_match - uintptr(1)))) == '\015' && start_match < end_subject && int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(start_match))) == '\012' && (*Tpcre2_real_code_8)(unsafe.Pointer(re)).Fflags&Tuint32_t(DPCRE2_HASCRORLF) == Tuint32_t(0) && ((*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fnltype == Tuint32_t(DNLTYPE_ANY) || (*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fnltype == Tuint32_t(DNLTYPE_ANYCRLF) || (*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fnllen == Tuint32_t(2))) {
goto __116
}
start_match++
__116:
;
goto __47
__47:
goto __46
goto __48
__48:
; // "Bumpalong" loop
NOMATCH_EXIT:
rc = -1
EXIT:
__117:
if !((*TRWS_anchor)(unsafe.Pointer(rws)).Fnext != uintptr(0)) {
goto __118
}
next = (*TRWS_anchor)(unsafe.Pointer(rws)).Fnext
(*TRWS_anchor)(unsafe.Pointer(rws)).Fnext = (*TRWS_anchor)(unsafe.Pointer(next)).Fnext
(*struct {
f func(*libc.TLS, uintptr, uintptr)
})(unsafe.Pointer(&struct{ uintptr }{(*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fmemctl.Ffree})).f(tls, next, (*Tdfa_match_block_8)(unsafe.Pointer(mb)).Fmemctl.Fmemory_data)
goto __117
__118:
;
return rc
}
// End of pcre2_dfa_match.c
// This function is needed only when memmove() is not available.
// End of pcre2_internal.h
// The texts of compile-time error messages. Compile-time error numbers start
// at COMPILE_ERROR_BASE (100).
//
// This used to be a table of strings, but in order to reduce the number of
// relocations needed when a shared library is loaded dynamically, it is now one
// long string. We cannot use a table of offsets, because the lengths of inserts
// such as XSTRING(MAX_NAME_SIZE) are not known. Instead,
// pcre2_get_error_message() counts through to the one it wants - this isn't a
// performance issue because these strings are used only when there is an error.
//
// Each substring ends with \0 to insert a null character. This includes the final
// substring, so that the whole string ends with \0\0, which can be detected when
// counting through.
var compile_error_texts =
// 5
// 10
// 15
// 20
// 25
// 30
// 35
// 40
// 45
// 50
// 55
// "an argument is not allowed for (*ACCEPT), (*FAIL), or (*COMMIT)\0"
// Was the above
// 60
// 65
// 70
// 75
// 80
// 85
// 90
// 95
*(*[4381]uint8)(unsafe.Pointer(ts + 798)) /* pcre2_error.c:65:28 */
// Match-time and UTF error texts are in the same format.
var match_error_texts =
// 5
// 10
// 15
// 20
// 25
// 30
// 35
// Never returned by PCRE2 itself
// 40
// 45
// 50
// 55
// 60
// 65
*(*[2476]uint8)(unsafe.Pointer(ts + 5179)) /* pcre2_error.c:194:28 */
// ************************************************
//
// Return error message *
//
// This function copies an error message into a buffer whose units are of an
// appropriate width. Error numbers are positive for compile-time errors, and
// negative for match-time errors (except for UTF errors), but the numbers are all
// distinct.
//
// Arguments:
// enumber error number
// buffer where to put the message (zero terminated)
// size size of the buffer in code units
//
// Returns: length of message if all is well
// negative on error
func Xpcre2_get_error_message_8(tls *libc.TLS, enumber int32, buffer uintptr, size Tsize_t) int32 { /* pcre2_error.c:297:1: */
var message uintptr
var i Tsize_t
var n int32
if size == uint64(0) {
return -48
}
if enumber >= DCOMPILE_ERROR_BASE {
message = uintptr(unsafe.Pointer(&compile_error_texts))
n = enumber - DCOMPILE_ERROR_BASE
} else if enumber < 0 {
message = uintptr(unsafe.Pointer(&match_error_texts))
n = -enumber
} else {
message = ts + 7655 /* "\x00" */ // Empty message list
n = 1
}
for ; n > 0; n-- {
for int32(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&message, 1)))) != 0 {
}
if int32(*(*uint8)(unsafe.Pointer(message))) == 0 {
return -29
}
}
for i = uint64(0); int32(*(*uint8)(unsafe.Pointer(message))) != 0; i++ {
if i >= size-uint64(1) {
*(*TPCRE2_UCHAR8)(unsafe.Pointer(buffer + uintptr(i))) = TPCRE2_UCHAR8(0) // Terminate partial message
return -48
}
*(*TPCRE2_UCHAR8)(unsafe.Pointer(buffer + uintptr(i))) = *(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&message, 1)))
}
*(*TPCRE2_UCHAR8)(unsafe.Pointer(buffer + uintptr(i))) = TPCRE2_UCHAR8(0)
return int32(i)
}
// End of pcre2_error.c
// This function is needed only when memmove() is not available.
// End of pcre2_internal.h
// Dummy function
// ************************************************
//
// Match an extended grapheme sequence *
//
//
// Arguments:
// c the first character
// eptr pointer to next character
// start_subject pointer to start of subject
// end_subject pointer to end of subject
// utf TRUE if in UTF mode
// xcount pointer to count of additional characters,
// or NULL if count not needed
//
// Returns: pointer after the end of the sequence
func X_pcre2_extuni_8(tls *libc.TLS, c Tuint32_t, eptr TPCRE2_SPTR8, start_subject TPCRE2_SPTR8, end_subject TPCRE2_SPTR8, utf TBOOL, xcount uintptr) TPCRE2_SPTR8 { /* pcre2_extuni.c:92:1: */
var lgb int32 = int32((*Tucd_record)(unsafe.Pointer(uintptr(unsafe.Pointer(&X_pcre2_ucd_records_8)) + uintptr(X_pcre2_ucd_stage2_8[int32(X_pcre2_ucd_stage1_8[int32(c)/DUCD_BLOCK_SIZE])*DUCD_BLOCK_SIZE+int32(c)%DUCD_BLOCK_SIZE])*12)).Fgbprop)
for eptr < end_subject {
var rgb int32
var len int32 = 1
if !(utf != 0) {
c = Tuint32_t(*(*TPCRE2_UCHAR8)(unsafe.Pointer(eptr)))
} else {
c = Tuint32_t(*(*TPCRE2_UCHAR8)(unsafe.Pointer(eptr)))
if c >= 0xc0 {
if c&0x20 == Tuint32_t(0) {
c = c&0x1f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(eptr + 1)))&0x3f
len++
} else if c&0x10 == Tuint32_t(0) {
c = c&0x0f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(eptr + 1)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(eptr + 2)))&0x3f
len = len + 2
} else if c&0x08 == Tuint32_t(0) {
c = c&0x07<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(eptr + 1)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(eptr + 2)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(eptr + 3)))&0x3f
len = len + 3
} else if c&0x04 == Tuint32_t(0) {
c = c&0x03<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(eptr + 1)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(eptr + 2)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(eptr + 3)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(eptr + 4)))&0x3f
len = len + 4
} else {
c = c&0x01<<30 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(eptr + 1)))&0x3f<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(eptr + 2)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(eptr + 3)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(eptr + 4)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(eptr + 5)))&0x3f
len = len + 5
}
}
}
rgb = int32((*Tucd_record)(unsafe.Pointer(uintptr(unsafe.Pointer(&X_pcre2_ucd_records_8)) + uintptr(X_pcre2_ucd_stage2_8[int32(X_pcre2_ucd_stage1_8[int32(c)/DUCD_BLOCK_SIZE])*DUCD_BLOCK_SIZE+int32(c)%DUCD_BLOCK_SIZE])*12)).Fgbprop)
if X_pcre2_ucp_gbtable_8[lgb]&(uint32(1)<<rgb) == Tuint32_t(0) {
break
}
// Not breaking between Regional Indicators is allowed only if there
// are an even number of preceding RIs.
if lgb == ucp_gbRegional_Indicator && rgb == ucp_gbRegional_Indicator {
var ricount int32 = 0
var bptr TPCRE2_SPTR8 = eptr - uintptr(1)
if utf != 0 {
for uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(bptr)))&0xc0 == 0x80 {
bptr--
}
}
// bptr is pointing to the left-hand character
for bptr > start_subject {
bptr--
if utf != 0 {
for uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(bptr)))&0xc0 == 0x80 {
bptr--
}
c = Tuint32_t(*(*TPCRE2_UCHAR8)(unsafe.Pointer(bptr)))
if c >= 0xc0 {
if c&0x20 == Tuint32_t(0) {
c = c&0x1f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(bptr + 1)))&0x3f
} else if c&0x10 == Tuint32_t(0) {
c = c&0x0f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(bptr + 1)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(bptr + 2)))&0x3f
} else if c&0x08 == Tuint32_t(0) {
c = c&0x07<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(bptr + 1)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(bptr + 2)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(bptr + 3)))&0x3f
} else if c&0x04 == Tuint32_t(0) {
c = c&0x03<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(bptr + 1)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(bptr + 2)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(bptr + 3)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(bptr + 4)))&0x3f
} else {
c = c&0x01<<30 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(bptr + 1)))&0x3f<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(bptr + 2)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(bptr + 3)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(bptr + 4)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(bptr + 5)))&0x3f
}
}
} else {
c = Tuint32_t(*(*TPCRE2_UCHAR8)(unsafe.Pointer(bptr)))
}
if int32((*Tucd_record)(unsafe.Pointer(uintptr(unsafe.Pointer(&X_pcre2_ucd_records_8))+uintptr(X_pcre2_ucd_stage2_8[int32(X_pcre2_ucd_stage1_8[int32(c)/DUCD_BLOCK_SIZE])*DUCD_BLOCK_SIZE+int32(c)%DUCD_BLOCK_SIZE])*12)).Fgbprop) != ucp_gbRegional_Indicator {
break
}
ricount++
}
if ricount&1 != 0 {
break
} // Grapheme break required
}
// If Extend or ZWJ follows Extended_Pictographic, do not update lgb; this
// allows any number of them before a following Extended_Pictographic.
if rgb != ucp_gbExtend && rgb != ucp_gbZWJ || lgb != ucp_gbExtended_Pictographic {
lgb = rgb
}
eptr += TPCRE2_SPTR8(len)
if xcount != uintptr(0) {
*(*int32)(unsafe.Pointer(xcount)) += 1
}
}
return eptr
}
// End of pcre2_extuni.c
// This function is needed only when memmove() is not available.
// End of pcre2_internal.h
// ************************************************
//
// Scan compiled regex for specific bracket *
//
//
// Arguments:
// code points to start of expression
// utf TRUE in UTF mode
// number the required bracket number or negative to find a lookbehind
//
// Returns: pointer to the opcode for the bracket, or NULL if not found
func X_pcre2_find_bracket_8(tls *libc.TLS, code TPCRE2_SPTR8, utf TBOOL, number int32) TPCRE2_SPTR8 { /* pcre2_find_bracket.c:70:1: */
for {
var c TPCRE2_UCHAR8 = *(*TPCRE2_UCHAR8)(unsafe.Pointer(code))
if int32(c) == OP_END {
return uintptr(0)
}
// XCLASS is used for classes that cannot be represented just by a bit map.
// This includes negated single high-valued characters. CALLOUT_STR is used for
// callouts with string arguments. In both cases the length in the table is
// zero; the actual length is stored in the compiled code.
if int32(c) == OP_XCLASS {
code += TPCRE2_SPTR8(uint32(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + 1)))<<8 | int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + 2)))))
} else if int32(c) == OP_CALLOUT_STR {
code += TPCRE2_SPTR8(uint32(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + 5)))<<8 | int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + 6)))))
} else if int32(c) == OP_REVERSE {
if number < 0 {
return code
}
code += TPCRE2_SPTR8(X_pcre2_OP_lengths_8[c])
} else if int32(c) == OP_CBRA || int32(c) == OP_SCBRA || int32(c) == OP_CBRAPOS || int32(c) == OP_SCBRAPOS {
var n int32 = int32(uint32(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + 3)))<<8 | int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + 4)))))
if n == number {
return code
}
code += TPCRE2_SPTR8(X_pcre2_OP_lengths_8[c])
} else {
switch int32(c) {
case OP_TYPESTAR:
fallthrough
case OP_TYPEMINSTAR:
fallthrough
case OP_TYPEPLUS:
fallthrough
case OP_TYPEMINPLUS:
fallthrough
case OP_TYPEQUERY:
fallthrough
case OP_TYPEMINQUERY:
fallthrough
case OP_TYPEPOSSTAR:
fallthrough
case OP_TYPEPOSPLUS:
fallthrough
case OP_TYPEPOSQUERY:
if int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + 1))) == OP_PROP || int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + 1))) == OP_NOTPROP {
code += uintptr(2)
}
break
fallthrough
case OP_TYPEUPTO:
fallthrough
case OP_TYPEMINUPTO:
fallthrough
case OP_TYPEEXACT:
fallthrough
case OP_TYPEPOSUPTO:
if int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + 3))) == OP_PROP || int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + 3))) == OP_NOTPROP {
code += uintptr(2)
}
break
fallthrough
case OP_MARK:
fallthrough
case OP_COMMIT_ARG:
fallthrough
case OP_PRUNE_ARG:
fallthrough
case OP_SKIP_ARG:
fallthrough
case OP_THEN_ARG:
code += TPCRE2_SPTR8(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + 1)))
break
}
// Add in the fixed length from the table
code += TPCRE2_SPTR8(X_pcre2_OP_lengths_8[c])
// In UTF-8 and UTF-16 modes, opcodes that are followed by a character may be
// followed by a multi-byte character. The length in the table is a minimum, so
// we have to arrange to skip the extra bytes.
if utf != 0 {
switch int32(c) {
case OP_CHAR:
fallthrough
case OP_CHARI:
fallthrough
case OP_NOT:
fallthrough
case OP_NOTI:
fallthrough
case OP_EXACT:
fallthrough
case OP_EXACTI:
fallthrough
case OP_NOTEXACT:
fallthrough
case OP_NOTEXACTI:
fallthrough
case OP_UPTO:
fallthrough
case OP_UPTOI:
fallthrough
case OP_NOTUPTO:
fallthrough
case OP_NOTUPTOI:
fallthrough
case OP_MINUPTO:
fallthrough
case OP_MINUPTOI:
fallthrough
case OP_NOTMINUPTO:
fallthrough
case OP_NOTMINUPTOI:
fallthrough
case OP_POSUPTO:
fallthrough
case OP_POSUPTOI:
fallthrough
case OP_NOTPOSUPTO:
fallthrough
case OP_NOTPOSUPTOI:
fallthrough
case OP_STAR:
fallthrough
case OP_STARI:
fallthrough
case OP_NOTSTAR:
fallthrough
case OP_NOTSTARI:
fallthrough
case OP_MINSTAR:
fallthrough
case OP_MINSTARI:
fallthrough
case OP_NOTMINSTAR:
fallthrough
case OP_NOTMINSTARI:
fallthrough
case OP_POSSTAR:
fallthrough
case OP_POSSTARI:
fallthrough
case OP_NOTPOSSTAR:
fallthrough
case OP_NOTPOSSTARI:
fallthrough
case OP_PLUS:
fallthrough
case OP_PLUSI:
fallthrough
case OP_NOTPLUS:
fallthrough
case OP_NOTPLUSI:
fallthrough
case OP_MINPLUS:
fallthrough
case OP_MINPLUSI:
fallthrough
case OP_NOTMINPLUS:
fallthrough
case OP_NOTMINPLUSI:
fallthrough
case OP_POSPLUS:
fallthrough
case OP_POSPLUSI:
fallthrough
case OP_NOTPOSPLUS:
fallthrough
case OP_NOTPOSPLUSI:
fallthrough
case OP_QUERY:
fallthrough
case OP_QUERYI:
fallthrough
case OP_NOTQUERY:
fallthrough
case OP_NOTQUERYI:
fallthrough
case OP_MINQUERY:
fallthrough
case OP_MINQUERYI:
fallthrough
case OP_NOTMINQUERY:
fallthrough
case OP_NOTMINQUERYI:
fallthrough
case OP_POSQUERY:
fallthrough
case OP_POSQUERYI:
fallthrough
case OP_NOTPOSQUERY:
fallthrough
case OP_NOTPOSQUERYI:
if int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + libc.UintptrFromInt32(-1)))) >= 0xc0 {
code += TPCRE2_SPTR8(X_pcre2_utf8_table4[uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + libc.UintptrFromInt32(-1))))&0x3f])
}
break
}
}
}
}
return TPCRE2_SPTR8(0)
}
// End of pcre2_find_bracket.c
// This function is needed only when memmove() is not available.
// End of pcre2_internal.h
// ************************************************
//
// JIT compile a Regular Expression *
//
// This function used JIT to convert a previously-compiled pattern into machine
// code.
//
// Arguments:
// code a compiled pattern
// options JIT option bits
//
// Returns: 0: success or (*NOJIT) was used
// <0: an error code
func Xpcre2_jit_compile_8(tls *libc.TLS, code uintptr, options Tuint32_t) int32 { /* pcre2_jit_compile.c:14382:1: */
var re uintptr = code
if code == uintptr(0) {
return -51
}
if options&libc.CplUint32(DPCRE2_JIT_COMPLETE|DPCRE2_JIT_PARTIAL_SOFT|DPCRE2_JIT_PARTIAL_HARD|DPCRE2_JIT_INVALID_UTF) != Tuint32_t(0) {
return -45
}
// Support for invalid UTF was first introduced in JIT, with the option
// PCRE2_JIT_INVALID_UTF. Later, support was added to the interpreter, and the
// compile-time option PCRE2_MATCH_INVALID_UTF was created. This is now the
// preferred feature, with the earlier option deprecated. However, for backward
// compatibility, if the earlier option is set, it forces the new option so that
// if JIT matching falls back to the interpreter, there is still support for
// invalid UTF. However, if this function has already been successfully called
// without PCRE2_JIT_INVALID_UTF and without PCRE2_MATCH_INVALID_UTF (meaning that
// non-invalid-supporting JIT code was compiled), give an error.
//
// If in the future support for PCRE2_JIT_INVALID_UTF is withdrawn, the following
// actions are needed:
//
// 1. Remove the definition from pcre2.h.in and from the list in
// PUBLIC_JIT_COMPILE_OPTIONS above.
//
// 2. Replace PCRE2_JIT_INVALID_UTF with a local flag in this module.
//
// 3. Replace PCRE2_JIT_INVALID_UTF in pcre2_jit_test.c.
//
// 4. Delete the following short block of code. The setting of "re" and
// "functions" can be moved into the JIT-only block below, but if that is
// done, (void)re and (void)functions will be needed in the non-JIT case, to
// avoid compiler warnings.
if options&DPCRE2_JIT_INVALID_UTF != Tuint32_t(0) {
if (*Tpcre2_real_code_8)(unsafe.Pointer(re)).Foverall_options&DPCRE2_MATCH_INVALID_UTF == Tuint32_t(0) {
*(*Tuint32_t)(unsafe.Pointer(re + 88)) |= DPCRE2_MATCH_INVALID_UTF
}
}
// The above tests are run with and without JIT support. This means that
// PCRE2_JIT_INVALID_UTF propagates back into the regex options (ensuring
// interpreter support) even in the absence of JIT. But now, if there is no JIT
// support, give an error return.
return -45
}
// JIT compiler uses an all-in-one approach. This improves security,
// since the code generator functions are not exported.
// ************************************************
//
// Perl-Compatible Regular Expressions *
//
// PCRE is a library of functions to support regular expressions whose syntax
// and semantics are as close as possible to those of the Perl 5 language.
//
// Written by Philip Hazel
// Original API code Copyright (c) 1997-2012 University of Cambridge
// New API code Copyright (c) 2016-2018 University of Cambridge
//
// -----------------------------------------------------------------------------
// Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions are met:
//
// * Redistributions of source code must retain the above copyright notice,
// this list of conditions and the following disclaimer.
//
// * Redistributions in binary form must reproduce the above copyright
// notice, this list of conditions and the following disclaimer in the
// documentation and/or other materials provided with the distribution.
//
// * Neither the name of the University of Cambridge nor the names of its
// contributors may be used to endorse or promote products derived from
// this software without specific prior written permission.
//
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
// POSSIBILITY OF SUCH DAMAGE.
// -----------------------------------------------------------------------------
// ************************************************
//
// Do a JIT pattern match *
//
// This function runs a JIT pattern match.
//
// Arguments:
// code points to the compiled expression
// subject points to the subject string
// length length of subject string (may contain binary zeros)
// start_offset where to start in the subject string
// options option bits
// match_data points to a match_data block
// mcontext points to a match context
//
// Returns: > 0 => success; value is the number of ovector pairs filled
// = 0 => success, but ovector is not big enough
// -1 => failed to match (PCRE_ERROR_NOMATCH)
// < -1 => some kind of unexpected problem
func Xpcre2_jit_match_8(tls *libc.TLS, code uintptr, subject TPCRE2_SPTR8, length Tsize_t, start_offset Tsize_t, options Tuint32_t, match_data uintptr, mcontext uintptr) int32 { /* pcre2_jit_match.c:85:1: */
_ = code
_ = subject
_ = length
_ = start_offset
_ = options
_ = match_data
_ = mcontext
return -45
}
// End of pcre2_jit_match.c
// ************************************************
//
// Perl-Compatible Regular Expressions *
//
// PCRE is a library of functions to support regular expressions whose syntax
// and semantics are as close as possible to those of the Perl 5 language.
//
// Written by Philip Hazel
// Original API code Copyright (c) 1997-2012 University of Cambridge
// New API code Copyright (c) 2016 University of Cambridge
//
// -----------------------------------------------------------------------------
// Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions are met:
//
// * Redistributions of source code must retain the above copyright notice,
// this list of conditions and the following disclaimer.
//
// * Redistributions in binary form must reproduce the above copyright
// notice, this list of conditions and the following disclaimer in the
// documentation and/or other materials provided with the distribution.
//
// * Neither the name of the University of Cambridge nor the names of its
// contributors may be used to endorse or promote products derived from
// this software without specific prior written permission.
//
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
// POSSIBILITY OF SUCH DAMAGE.
// -----------------------------------------------------------------------------
// ************************************************
//
// Free JIT read-only data *
//
func X_pcre2_jit_free_rodata_8(tls *libc.TLS, current uintptr, allocator_data uintptr) { /* pcre2_jit_misc.c:53:1: */
_ = current
_ = allocator_data
}
// ************************************************
//
// Free JIT compiled code *
//
func X_pcre2_jit_free_8(tls *libc.TLS, executable_jit uintptr, memctl uintptr) { /* pcre2_jit_misc.c:78:1: */
_ = executable_jit
_ = memctl
}
// ************************************************
//
// Free unused JIT memory *
//
func Xpcre2_jit_free_unused_memory_8(tls *libc.TLS, gcontext uintptr) { /* pcre2_jit_misc.c:107:1: */
_ = gcontext // Suppress warning
}
// ************************************************
//
// Allocate a JIT stack *
//
func Xpcre2_jit_stack_create_8(tls *libc.TLS, startsize Tsize_t, maxsize Tsize_t, gcontext uintptr) uintptr { /* pcre2_jit_misc.c:123:32: */
_ = gcontext
_ = startsize
_ = maxsize
return uintptr(0)
}
// ************************************************
//
// Assign a JIT stack to a pattern *
//
func Xpcre2_jit_stack_assign_8(tls *libc.TLS, mcontext uintptr, callback Tpcre2_jit_callback_8, callback_data uintptr) { /* pcre2_jit_misc.c:164:1: */
_ = mcontext
_ = callback
_ = callback_data
}
// ************************************************
//
// Free a JIT stack *
//
func Xpcre2_jit_stack_free_8(tls *libc.TLS, jit_stack uintptr) { /* pcre2_jit_misc.c:186:1: */
_ = jit_stack
}
// ************************************************
//
// Get target CPU type *
//
func X_pcre2_jit_get_target_8(tls *libc.TLS) uintptr { /* pcre2_jit_misc.c:204:11: */
return ts + 7657 /* "JIT is not suppo..." */
}
// ************************************************
//
// Get size of JIT code *
//
func X_pcre2_jit_get_size_8(tls *libc.TLS, executable_jit uintptr) Tsize_t { /* pcre2_jit_misc.c:220:1: */
_ = executable_jit
return uint64(0)
}
// End of pcre2_jit_misc.c
// End of pcre2_jit_compile.c
// This function is needed only when memmove() is not available.
// End of pcre2_internal.h
// ************************************************
//
// Create PCRE2 character tables *
//
// This function builds a set of character tables for use by PCRE2 and returns
// a pointer to them. They are build using the ctype functions, and consequently
// their contents will depend upon the current locale setting. When compiled as
// part of the library, the store is obtained via a general context malloc, if
// supplied, but when PCRE2_DFTABLES is defined (when compiling the pcre2_dftables
// freestanding auxiliary program) malloc() is used, and the function has a
// different name so as not to clash with the prototype in pcre2.h.
//
// Arguments: none when PCRE2_DFTABLES is defined
// else a PCRE2 general context or NULL
// Returns: pointer to the contiguous block of data
// else NULL if memory allocation failed
func Xpcre2_maketables_8(tls *libc.TLS, gcontext uintptr) uintptr { /* pcre2_maketables.c:81:30: */
var yield uintptr = func() uintptr {
if gcontext != uintptr(0) {
return (*struct {
f func(*libc.TLS, Tsize_t, uintptr) uintptr
})(unsafe.Pointer(&struct{ uintptr }{(*Tpcre2_general_context_8)(unsafe.Pointer(gcontext)).Fmemctl.Fmalloc})).f(tls, uint64(Dcbits_offset+Dcbit_length+256), (*Tpcre2_general_context_8)(unsafe.Pointer(gcontext)).Fmemctl.Fmemory_data)
}
return libc.Xmalloc(tls, uint64(Dcbits_offset+Dcbit_length+256))
}()
var i int32
var p uintptr
if yield == uintptr(0) {
return uintptr(0)
}
p = yield
// First comes the lower casing table
for i = 0; i < 256; i++ {
*(*Tuint8_t)(unsafe.Pointer(libc.PostIncUintptr(&p, 1))) = Tuint8_t(libc.Xtolower(tls, i))
}
// Next the case-flipping table
for i = 0; i < 256; i++ {
*(*Tuint8_t)(unsafe.Pointer(libc.PostIncUintptr(&p, 1))) = func() uint8 {
if int32(*(*uint16)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(libc.X__ctype_b_loc(tls))) + uintptr(i)*2)))&int32(_ISlower) != 0 {
return uint8(libc.Xtoupper(tls, i))
}
return uint8(libc.Xtolower(tls, i))
}()
}
// Then the character class tables. Don't try to be clever and save effort on
// exclusive ones - in some locales things may be different.
//
// Note that the table for "space" includes everything "isspace" gives, including
// VT in the default locale. This makes it work for the POSIX class [:space:].
// From PCRE1 release 8.34 and for all PCRE2 releases it is also correct for Perl
// space, because Perl added VT at release 5.18.
//
// Note also that it is possible for a character to be alnum or alpha without
// being lower or upper, such as "male and female ordinals" (\xAA and \xBA) in the
// fr_FR locale (at least under Debian Linux's locales as of 12/2005). So we must
// test for alnum specially.
libc.Xmemset(tls, p, 0, uint64(Dcbit_length))
for i = 0; i < 256; i++ {
if int32(*(*uint16)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(libc.X__ctype_b_loc(tls))) + uintptr(i)*2)))&int32(_ISdigit) != 0 {
*(*Tuint8_t)(unsafe.Pointer(p + uintptr(Dcbit_digit+i/8))) |= Tuint8_t(uint32(1) << (i & 7))
}
if int32(*(*uint16)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(libc.X__ctype_b_loc(tls))) + uintptr(i)*2)))&int32(_ISupper) != 0 {
*(*Tuint8_t)(unsafe.Pointer(p + uintptr(Dcbit_upper+i/8))) |= Tuint8_t(uint32(1) << (i & 7))
}
if int32(*(*uint16)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(libc.X__ctype_b_loc(tls))) + uintptr(i)*2)))&int32(_ISlower) != 0 {
*(*Tuint8_t)(unsafe.Pointer(p + uintptr(Dcbit_lower+i/8))) |= Tuint8_t(uint32(1) << (i & 7))
}
if int32(*(*uint16)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(libc.X__ctype_b_loc(tls))) + uintptr(i)*2)))&int32(_ISalnum) != 0 {
*(*Tuint8_t)(unsafe.Pointer(p + uintptr(Dcbit_word+i/8))) |= Tuint8_t(uint32(1) << (i & 7))
}
if i == '_' {
*(*Tuint8_t)(unsafe.Pointer(p + uintptr(Dcbit_word+i/8))) |= Tuint8_t(uint32(1) << (i & 7))
}
if int32(*(*uint16)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(libc.X__ctype_b_loc(tls))) + uintptr(i)*2)))&int32(_ISspace) != 0 {
*(*Tuint8_t)(unsafe.Pointer(p + uintptr(Dcbit_space+i/8))) |= Tuint8_t(uint32(1) << (i & 7))
}
if int32(*(*uint16)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(libc.X__ctype_b_loc(tls))) + uintptr(i)*2)))&int32(_ISxdigit) != 0 {
*(*Tuint8_t)(unsafe.Pointer(p + uintptr(Dcbit_xdigit+i/8))) |= Tuint8_t(uint32(1) << (i & 7))
}
if int32(*(*uint16)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(libc.X__ctype_b_loc(tls))) + uintptr(i)*2)))&int32(_ISgraph) != 0 {
*(*Tuint8_t)(unsafe.Pointer(p + uintptr(Dcbit_graph+i/8))) |= Tuint8_t(uint32(1) << (i & 7))
}
if int32(*(*uint16)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(libc.X__ctype_b_loc(tls))) + uintptr(i)*2)))&int32(_ISprint) != 0 {
*(*Tuint8_t)(unsafe.Pointer(p + uintptr(Dcbit_print+i/8))) |= Tuint8_t(uint32(1) << (i & 7))
}
if int32(*(*uint16)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(libc.X__ctype_b_loc(tls))) + uintptr(i)*2)))&int32(_ISpunct) != 0 {
*(*Tuint8_t)(unsafe.Pointer(p + uintptr(Dcbit_punct+i/8))) |= Tuint8_t(uint32(1) << (i & 7))
}
if int32(*(*uint16)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(libc.X__ctype_b_loc(tls))) + uintptr(i)*2)))&int32(_IScntrl) != 0 {
*(*Tuint8_t)(unsafe.Pointer(p + uintptr(Dcbit_cntrl+i/8))) |= Tuint8_t(uint32(1) << (i & 7))
}
}
p += uintptr(Dcbit_length)
// Finally, the character type table. In this, we used to exclude VT from the
// white space chars, because Perl didn't recognize it as such for \s and for
// comments within regexes. However, Perl changed at release 5.18, so PCRE1
// changed at release 8.34 and it's always been this way for PCRE2.
for i = 0; i < 256; i++ {
var x int32 = 0
if int32(*(*uint16)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(libc.X__ctype_b_loc(tls))) + uintptr(i)*2)))&int32(_ISspace) != 0 {
x = x + Dctype_space
}
if int32(*(*uint16)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(libc.X__ctype_b_loc(tls))) + uintptr(i)*2)))&int32(_ISalpha) != 0 {
x = x + Dctype_letter
}
if int32(*(*uint16)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(libc.X__ctype_b_loc(tls))) + uintptr(i)*2)))&int32(_ISlower) != 0 {
x = x + Dctype_lcletter
}
if int32(*(*uint16)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(libc.X__ctype_b_loc(tls))) + uintptr(i)*2)))&int32(_ISdigit) != 0 {
x = x + Dctype_digit
}
if int32(*(*uint16)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(libc.X__ctype_b_loc(tls))) + uintptr(i)*2)))&int32(_ISalnum) != 0 || i == '_' {
x = x + Dctype_word
}
*(*Tuint8_t)(unsafe.Pointer(libc.PostIncUintptr(&p, 1))) = Tuint8_t(x)
}
return yield
}
func Xpcre2_maketables_free_8(tls *libc.TLS, gcontext uintptr, tables uintptr) { /* pcre2_maketables.c:154:1: */
if gcontext != 0 {
(*struct {
f func(*libc.TLS, uintptr, uintptr)
})(unsafe.Pointer(&struct{ uintptr }{(*Tpcre2_general_context_8)(unsafe.Pointer(gcontext)).Fmemctl.Ffree})).f(tls, tables, (*Tpcre2_general_context_8)(unsafe.Pointer(gcontext)).Fmemctl.Fmemory_data)
} else {
libc.Xfree(tls, tables)
}
}
// End of pcre2_maketables.c
// Min and max values for the common repeats; a maximum of UINT32_MAX =>
// infinity.
var rep_min = [11]Tuint32_t{
Tuint32_t(0), Tuint32_t(0), // * and *?
Tuint32_t(1), Tuint32_t(1), // + and +?
Tuint32_t(0), Tuint32_t(0), // ? and ??
Tuint32_t(0), Tuint32_t(0), // dummy placefillers for OP_CR[MIN]RANGE
Tuint32_t(0), Tuint32_t(1), Tuint32_t(0)} /* pcre2_match.c:123:23 */ // OP_CRPOS{STAR, PLUS, QUERY}
var rep_max = [11]Tuint32_t{
4294967295, 4294967295,
4294967295, 4294967295,
Tuint32_t(1), Tuint32_t(1), // ? and ??
Tuint32_t(0), Tuint32_t(0), // dummy placefillers for OP_CR[MIN]RANGE
4294967295, 4294967295, Tuint32_t(1)} /* pcre2_match.c:130:23 */ // OP_CRPOS{STAR, PLUS, QUERY}
// Repetition types - must include OP_CRPOSRANGE (not needed above)
var rep_typ = [12]Tuint32_t{
REPTYPE_MAX, REPTYPE_MIN, // * and *?
REPTYPE_MAX, REPTYPE_MIN, // + and +?
REPTYPE_MAX, REPTYPE_MIN, // ? and ??
REPTYPE_MAX, REPTYPE_MIN, // OP_CRRANGE and OP_CRMINRANGE
REPTYPE_POS, REPTYPE_POS, // OP_CRPOSSTAR, OP_CRPOSPLUS
REPTYPE_POS, REPTYPE_POS} /* pcre2_match.c:139:23 */
// Define short names for general fields in the current backtrack frame, which
// is always pointed to by the F variable. Occasional references to fields in
// other frames are written out explicitly. There are also some fields in the
// current frame whose names start with "temp" that are used for short-term,
// localised backtracking memory. These are #defined with Lxxx names at the point
// of use and undefined afterwards.
// ************************************************
//
// Process a callout *
//
// This function is called for all callouts, whether "standalone" or at the
// start of a conditional group. Feptr will be pointing to either OP_CALLOUT or
// OP_CALLOUT_STR. A callout block is allocated in pcre2_match() and initialized
// with fixed values.
//
// Arguments:
// F points to the current backtracking frame
// mb points to the match block
// lengthptr where to return the length of the callout item
//
// Returns: the return from the callout
// or 0 if no callout function exists
func do_callout1(tls *libc.TLS, F uintptr, mb uintptr, lengthptr uintptr) int32 { /* pcre2_match.c:267:1: */
var rc int32
var save0 Tsize_t
var save1 Tsize_t
var callout_ovector uintptr
var cb uintptr
*(*Tsize_t)(unsafe.Pointer(lengthptr)) = func() uint64 {
if int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode))) == OP_CALLOUT {
return uint64(X_pcre2_OP_lengths_8[OP_CALLOUT])
}
return uint64(uint32(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode + 5)))<<8 | int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode + 6)))))
}()
if (*Tmatch_block_8)(unsafe.Pointer(mb)).Fcallout == uintptr(0) {
return 0
} // No callout function provided
// The original matching code (pre 10.30) worked directly with the ovector
// passed by the user, and this was passed to callouts. Now that the working
// ovector is in the backtracking frame, it no longer needs to reserve space for
// the overall match offsets (which would waste space in the frame). For backward
// compatibility, however, we pass capture_top and offset_vector to the callout as
// if for the extended ovector, and we ensure that the first two slots are unset
// by preserving and restoring their current contents. Picky compilers complain if
// references such as Fovector[-2] are use directly, so we set up a separate
// pointer.
callout_ovector = F + 128 - uintptr(2)*8
// The cb->version, cb->subject, cb->subject_length, and cb->start_match fields
// are set externally. The first 3 never change; the last is updated for each
// bumpalong.
cb = (*Tmatch_block_8)(unsafe.Pointer(mb)).Fcb
(*Tpcre2_callout_block_8)(unsafe.Pointer(cb)).Fcapture_top = Tuint32_t((*Theapframe)(unsafe.Pointer(F)).Foffset_top)/Tuint32_t(2) + Tuint32_t(1)
(*Tpcre2_callout_block_8)(unsafe.Pointer(cb)).Fcapture_last = (*Theapframe)(unsafe.Pointer(F)).Fcapture_last
(*Tpcre2_callout_block_8)(unsafe.Pointer(cb)).Foffset_vector = callout_ovector
(*Tpcre2_callout_block_8)(unsafe.Pointer(cb)).Fmark = (*Tmatch_block_8)(unsafe.Pointer(mb)).Fnomatch_mark
(*Tpcre2_callout_block_8)(unsafe.Pointer(cb)).Fcurrent_position = Tsize_t((int64((*Theapframe)(unsafe.Pointer(F)).Feptr) - int64((*Tmatch_block_8)(unsafe.Pointer(mb)).Fstart_subject)) / 1)
(*Tpcre2_callout_block_8)(unsafe.Pointer(cb)).Fpattern_position = Tsize_t(uint32(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode + 1)))<<8 | int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode + 2)))))
(*Tpcre2_callout_block_8)(unsafe.Pointer(cb)).Fnext_item_length = Tsize_t(uint32(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode + 3)))<<8 | int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode + 4)))))
if int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode))) == OP_CALLOUT {
(*Tpcre2_callout_block_8)(unsafe.Pointer(cb)).Fcallout_number = Tuint32_t(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode + 5)))
(*Tpcre2_callout_block_8)(unsafe.Pointer(cb)).Fcallout_string_offset = uint64(0)
(*Tpcre2_callout_block_8)(unsafe.Pointer(cb)).Fcallout_string = uintptr(0)
(*Tpcre2_callout_block_8)(unsafe.Pointer(cb)).Fcallout_string_length = uint64(0)
} else {
(*Tpcre2_callout_block_8)(unsafe.Pointer(cb)).Fcallout_number = Tuint32_t(0)
(*Tpcre2_callout_block_8)(unsafe.Pointer(cb)).Fcallout_string_offset = Tsize_t(uint32(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode + 7)))<<8 | int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode + 8)))))
(*Tpcre2_callout_block_8)(unsafe.Pointer(cb)).Fcallout_string = (*Theapframe)(unsafe.Pointer(F)).Fecode + uintptr(1+4*DLINK_SIZE) + uintptr(1)
(*Tpcre2_callout_block_8)(unsafe.Pointer(cb)).Fcallout_string_length = *(*Tsize_t)(unsafe.Pointer(lengthptr)) - uint64(1+4*DLINK_SIZE) - uint64(2)
}
save0 = *(*Tsize_t)(unsafe.Pointer(callout_ovector))
save1 = *(*Tsize_t)(unsafe.Pointer(callout_ovector + 1*8))
*(*Tsize_t)(unsafe.Pointer(callout_ovector)) = libc.AssignPtrUint64(callout_ovector+1*8, libc.CplUint64(uint64(0)))
rc = (*struct {
f func(*libc.TLS, uintptr, uintptr) int32
})(unsafe.Pointer(&struct{ uintptr }{(*Tmatch_block_8)(unsafe.Pointer(mb)).Fcallout})).f(tls, cb, (*Tmatch_block_8)(unsafe.Pointer(mb)).Fcallout_data)
*(*Tsize_t)(unsafe.Pointer(callout_ovector)) = save0
*(*Tsize_t)(unsafe.Pointer(callout_ovector + 1*8)) = save1
(*Tpcre2_callout_block_8)(unsafe.Pointer(cb)).Fcallout_flags = Tuint32_t(0)
return rc
}
// ************************************************
//
// Match a back-reference *
//
// This function is called only when it is known that the offset lies within
// the offsets that have so far been used in the match. Note that in caseless
// UTF-8 mode, the number of subject bytes matched may be different to the number
// of reference bytes. (In theory this could also happen in UTF-16 mode, but it
// seems unlikely.)
//
// Arguments:
// offset index into the offset vector
// caseless TRUE if caseless
// F the current backtracking frame pointer
// mb points to match block
// lengthptr pointer for returning the length matched
//
// Returns: = 0 sucessful match; number of code units matched is set
// < 0 no match
// > 0 partial match
func match_ref(tls *libc.TLS, offset Tsize_t, caseless TBOOL, F uintptr, mb uintptr, lengthptr uintptr) int32 { /* pcre2_match.c:355:1: */
var p TPCRE2_SPTR8
var length Tsize_t
var eptr TPCRE2_SPTR8
var eptr_start TPCRE2_SPTR8
// Deal with an unset group. The default is no match, but there is an option to
// match an empty string.
if offset >= (*Theapframe)(unsafe.Pointer(F)).Foffset_top || *(*Tsize_t)(unsafe.Pointer(F + 128 + uintptr(offset)*8)) == libc.CplUint64(uint64(0)) {
if (*Tmatch_block_8)(unsafe.Pointer(mb)).Fpoptions&DPCRE2_MATCH_UNSET_BACKREF != Tuint32_t(0) {
*(*Tsize_t)(unsafe.Pointer(lengthptr)) = uint64(0)
return 0 // Match
} else {
return -1
} // No match
}
// Separate the caseless and UTF cases for speed.
eptr = libc.AssignUintptr(&eptr_start, (*Theapframe)(unsafe.Pointer(F)).Feptr)
p = (*Tmatch_block_8)(unsafe.Pointer(mb)).Fstart_subject + uintptr(*(*Tsize_t)(unsafe.Pointer(F + 128 + uintptr(offset)*8)))
length = *(*Tsize_t)(unsafe.Pointer(F + 128 + uintptr(offset+uint64(1))*8)) - *(*Tsize_t)(unsafe.Pointer(F + 128 + uintptr(offset)*8))
if caseless != 0 {
var utf TBOOL = libc.Bool32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpoptions&DPCRE2_UTF != Tuint32_t(0))
if utf != 0 || (*Tmatch_block_8)(unsafe.Pointer(mb)).Fpoptions&DPCRE2_UCP != Tuint32_t(0) {
var endptr TPCRE2_SPTR8 = p + uintptr(length)
// Match characters up to the end of the reference. NOTE: the number of
// code units matched may differ, because in UTF-8 there are some characters
// whose upper and lower case codes have different numbers of bytes. For
// example, U+023A (2 bytes in UTF-8) is the upper case version of U+2C65 (3
// bytes in UTF-8); a sequence of 3 of the former uses 6 bytes, as does a
// sequence of two of the latter. It is important, therefore, to check the
// length along the reference, not along the subject (earlier code did this
// wrong). UCP without uses Unicode properties but without UTF encoding.
for p < endptr {
var c Tuint32_t
var d Tuint32_t
var ur uintptr
if eptr >= (*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject {
return 1
} // Partial match
if utf != 0 {
c = Tuint32_t(*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&eptr, 1))))
if c >= 0xc0 {
if c&0x20 == Tuint32_t(0) {
c = c&0x1f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&eptr, 1))))&0x3f
} else if c&0x10 == Tuint32_t(0) {
c = c&0x0f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(eptr)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(eptr + 1)))&0x3f
eptr += uintptr(2)
} else if c&0x08 == Tuint32_t(0) {
c = c&0x07<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(eptr)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(eptr + 1)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(eptr + 2)))&0x3f
eptr += uintptr(3)
} else if c&0x04 == Tuint32_t(0) {
c = c&0x03<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(eptr)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(eptr + 1)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(eptr + 2)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(eptr + 3)))&0x3f
eptr += uintptr(4)
} else {
c = c&0x01<<30 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(eptr)))&0x3f<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(eptr + 1)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(eptr + 2)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(eptr + 3)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(eptr + 4)))&0x3f
eptr += uintptr(5)
}
}
d = Tuint32_t(*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&p, 1))))
if d >= 0xc0 {
if d&0x20 == Tuint32_t(0) {
d = d&0x1f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&p, 1))))&0x3f
} else if d&0x10 == Tuint32_t(0) {
d = d&0x0f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(p)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(p + 1)))&0x3f
p += uintptr(2)
} else if d&0x08 == Tuint32_t(0) {
d = d&0x07<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(p)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(p + 1)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(p + 2)))&0x3f
p += uintptr(3)
} else if d&0x04 == Tuint32_t(0) {
d = d&0x03<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(p)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(p + 1)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(p + 2)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(p + 3)))&0x3f
p += uintptr(4)
} else {
d = d&0x01<<30 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(p)))&0x3f<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(p + 1)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(p + 2)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(p + 3)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(p + 4)))&0x3f
p += uintptr(5)
}
}
} else {
c = Tuint32_t(*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&eptr, 1))))
d = Tuint32_t(*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&p, 1))))
}
ur = uintptr(unsafe.Pointer(&X_pcre2_ucd_records_8)) + uintptr(X_pcre2_ucd_stage2_8[int32(X_pcre2_ucd_stage1_8[int32(d)/DUCD_BLOCK_SIZE])*DUCD_BLOCK_SIZE+int32(d)%DUCD_BLOCK_SIZE])*12
if c != d && c != Tuint32_t(int32(d)+(*Tucd_record)(unsafe.Pointer(ur)).Fother_case) {
var pp uintptr = uintptr(unsafe.Pointer(&X_pcre2_ucd_caseless_sets_8)) + uintptr((*Tucd_record)(unsafe.Pointer(ur)).Fcaseset)*4
for {
if c < *(*Tuint32_t)(unsafe.Pointer(pp)) {
return -1
} // No match
if c == *(*Tuint32_t)(unsafe.Pointer(libc.PostIncUintptr(&pp, 4))) {
break
}
}
}
}
} else {
for ; length > uint64(0); length-- {
var cc Tuint32_t
var cp Tuint32_t
if eptr >= (*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject {
return 1
} // Partial match
cc = Tuint32_t(*(*TPCRE2_UCHAR8)(unsafe.Pointer(eptr)))
cp = Tuint32_t(*(*TPCRE2_UCHAR8)(unsafe.Pointer(p)))
if int32(*(*Tuint8_t)(unsafe.Pointer((*Tmatch_block_8)(unsafe.Pointer(mb)).Flcc + uintptr(cp)))) != int32(*(*Tuint8_t)(unsafe.Pointer((*Tmatch_block_8)(unsafe.Pointer(mb)).Flcc + uintptr(cc)))) {
return -1
} // No match
p++
eptr++
}
}
} else {
if int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) != 0 {
for ; length > uint64(0); length-- {
if eptr >= (*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject {
return 1
} // Partial match
if int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&p, 1)))) != int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&eptr, 1)))) {
return -1
} // No match
}
} else {
if Tsize_t((int64((*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject)-int64(eptr))/1) < length {
return 1
} // Partial
if libc.Xmemcmp(tls, p, eptr, length*uint64(DPCRE2_CODE_UNIT_WIDTH/8)) != 0 {
return -1
} // No match
eptr += TPCRE2_SPTR8(length)
}
}
*(*Tsize_t)(unsafe.Pointer(lengthptr)) = Tsize_t((int64(eptr) - int64(eptr_start)) / 1)
return 0 // Match
}
//*****************************************************************************
//
// "Recursion" in the match() function
//
// The original match() function was highly recursive, but this proved to be the
// source of a number of problems over the years, mostly because of the relatively
// small system stacks that are commonly found. As new features were added to
// patterns, various kludges were invented to reduce the amount of stack used,
// making the code hard to understand in places.
//
// A version did exist that used individual frames on the heap instead of calling
// match() recursively, but this ran substantially slower. The current version is
// a refactoring that uses a vector of frames to remember backtracking points.
// This runs no slower, and possibly even a bit faster than the original recursive
// implementation. An initial vector of size START_FRAMES_SIZE (enough for maybe
// 50 frames) is allocated on the system stack. If this is not big enough, the
// heap is used for a larger vector.
//
// *******************************************************************************
// *****************************************************************************
// ************************************************
//
// Macros for the match() function *
//
// These macros pack up tests that are used for partial matching several times
// in the code. The second one is used when we already know we are past the end of
// the subject. We set the "hit end" flag if the pointer is at the end of the
// subject and either (a) the pointer is past the earliest inspected character
// (i.e. something has been matched, even if not part of the actual matched
// string), or (b) the pattern contains a lookbehind. These are the conditions for
// which adding more characters may allow the current match to continue.
//
// For hard partial matching, we immediately return a partial match. Otherwise,
// carrying on means that a complete match on the current subject will be sought.
// A partial match is returned only if no complete match can be found.
// These macros are used to implement backtracking. They simulate a recursive
// call to the match() function by means of a local vector of frames which
// remember the backtracking points.
// ************************************************
//
// Match from current position *
//
// This function is called to run one match attempt at a single starting point
// in the subject.
//
// Performance note: It might be tempting to extract commonly used fields from the
// mb structure (e.g. end_subject) into individual variables to improve
// performance. Tests using gcc on a SPARC disproved this; in the first case, it
// made performance worse.
//
// Arguments:
// start_eptr starting character in subject
// start_ecode starting position in compiled code
// ovector pointer to the final output vector
// oveccount number of pairs in ovector
// top_bracket number of capturing parentheses in the pattern
// frame_size size of each backtracking frame
// mb pointer to "static" variables block
//
// Returns: MATCH_MATCH if matched ) these values are >= 0
// MATCH_NOMATCH if failed to match )
// negative MATCH_xxx value for PRUNE, SKIP, etc
// negative PCRE2_ERROR_xxx value if aborted by an error condition
// (e.g. stopped by repeated call or depth limit)
func match(tls *libc.TLS, start_eptr TPCRE2_SPTR8, start_ecode TPCRE2_SPTR8, ovector uintptr, oveccount Tuint16_t, top_bracket Tuint16_t, frame_size Tsize_t, mb uintptr) int32 { /* pcre2_match.c:583:1: */
bp := tls.Alloc(40)
defer tls.Free(40)
// Frame-handling variables
var F uintptr // Current frame pointer
var N uintptr // Temporary frame pointers
var P uintptr
var assert_accept_frame uintptr // For passing back a frame with captures
var frame_copy_size Tsize_t // Amount to copy when creating a new frame
// Local variables that do not need to be preserved over calls to RRMATCH().
var bracode TPCRE2_SPTR8 // Temp pointer to start of group
var offset Tsize_t // Used for group offsets
// var length Tsize_t at bp, 8
// Used for various length calculations
var rrc int32 // Return from functions & backtracking "recursions"
var proptype int32 // Type of character property
var i Tuint32_t // Used for local loops
var fc Tuint32_t // Character values
var number Tuint32_t // Used for group and other numbers
var reptype Tuint32_t // Type of repetition (0 to avoid compiler warning)
var group_frame_type Tuint32_t // Specifies type for new group frames
var condition TBOOL // Used in conditional groups
var cur_is_word TBOOL // Used in "word" tests
var prev_is_word TBOOL // Used in "word" tests
// UTF and UCP flags
var utf TBOOL
var ucp TBOOL
var maxsize Tsize_t
var newsize Tsize_t
var new uintptr
var cc Tuint32_t
var dc Tuint32_t
var cc1 Tuint32_t
var ch Tuint32_t
var ch1 Tuint32_t
var ch2 Tuint32_t
var othercase Tuint32_t
var cc2 Tuint32_t
var cc3 Tuint32_t
var cc4 Tuint32_t
var d Tuint32_t
var d1 Tuint32_t
var len int32
var d2 Tuint32_t
var d3 Tuint32_t
var d4 Tuint32_t
var len1 int32
var d5 Tuint32_t
var len2 int32
var len3 int32
var ok TBOOL
var ok1 TBOOL
var cp uintptr
var prop uintptr
var notmatch TBOOL
var chartype int32
var ok2 TBOOL
var prop1 uintptr
var category int32
var category1 int32
var cp1 uintptr
var ok3 TBOOL
var prop2 uintptr
var notmatch1 TBOOL
var cc5 Tuint32_t
var cc6 Tuint32_t
var cc7 Tuint32_t
var cc8 Tuint32_t
var cc9 Tuint32_t
var chartype1 int32
var ok4 TBOOL
var prop3 uintptr
var category2 int32
var category3 int32
var cp2 uintptr
var ok5 TBOOL
var prop4 uintptr
var len4 int32
var chartype2 int32
var len5 int32
var len6 int32
var len7 int32
var len8 int32
var ok6 TBOOL
var prop5 uintptr
var len9 int32
var category4 int32
var len10 int32
var len11 int32
var category5 int32
var len12 int32
var cp3 uintptr
var len13 int32
var len14 int32
var len15 int32
var ok7 TBOOL
var prop6 uintptr
var len16 int32
var notmatch2 TBOOL
var lgb int32
var rgb int32
var fptr TPCRE2_SPTR8
var len17 int32
var gotspace TBOOL
var len18 int32
var gotspace1 TBOOL
var len19 int32
var len20 int32
var len21 int32
var len22 int32
var len23 int32
var len24 int32
var len25 int32
var count int32
var slot TPCRE2_SPTR8
// var slength Tsize_t at bp+8, 8
// var slength1 Tsize_t at bp+16, 8
// var slength2 Tsize_t at bp+24, 8
// var slength3 Tsize_t at bp+32, 8
var samelengths TBOOL
var next_ecode TPCRE2_SPTR8
var next_ecode1 TPCRE2_SPTR8
var next_ecode2 TPCRE2_SPTR8
var count1 int32
var slot1 TPCRE2_SPTR8
var count2 int32
var slot2 TPCRE2_SPTR8
var y Tuint32_t
var cat int32
var lastptr TPCRE2_SPTR8
var cat1 int32
var nextptr TPCRE2_SPTR8
N = uintptr(0)
P = uintptr(0)
assert_accept_frame = uintptr(0)
reptype = Tuint32_t(0)
utf = libc.Bool32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpoptions&DPCRE2_UTF != Tuint32_t(0))
ucp = libc.Bool32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpoptions&DPCRE2_UCP != Tuint32_t(0))
// This is the length of the last part of a backtracking frame that must be
// copied when a new frame is created.
frame_copy_size = frame_size - Tsize_t(uintptr(0)+80)
// Set up the first current frame at the start of the vector, and initialize
// fields that are not reset for new frames.
F = (*Tmatch_block_8)(unsafe.Pointer(mb)).Fmatch_frames
(*Theapframe)(unsafe.Pointer(F)).Frdepth = Tuint32_t(0) // "Recursion" depth
(*Theapframe)(unsafe.Pointer(F)).Fcapture_last = Tuint32_t(0) // Number of most recent capture
(*Theapframe)(unsafe.Pointer(F)).Fcurrent_recurse = DRECURSE_UNSET // Not pattern recursing.
(*Theapframe)(unsafe.Pointer(F)).Fstart_match = libc.AssignPtrUintptr(F+80, start_eptr) // Current data pointer and start match
(*Theapframe)(unsafe.Pointer(F)).Fmark = uintptr(0) // Most recent mark
(*Theapframe)(unsafe.Pointer(F)).Foffset_top = uint64(0) // End of captures within the frame
(*Theapframe)(unsafe.Pointer(F)).Flast_group_offset = libc.CplUint64(uint64(0)) // Saved frame of most recent group
group_frame_type = Tuint32_t(0) // Not a start of group frame
goto NEW_FRAME // Start processing with this frame
// Come back here when we want to create a new frame for remembering a
// backtracking point.
MATCH_RECURSE:
// Set up a new backtracking frame. If the vector is full, get a new one
// on the heap, doubling the size, but constrained by the heap limit.
N = F + uintptr(frame_size)
if !(N >= (*Tmatch_block_8)(unsafe.Pointer(mb)).Fmatch_frames_top) {
goto __1
}
newsize = (*Tmatch_block_8)(unsafe.Pointer(mb)).Fframe_vector_size * uint64(2)
if !(newsize/uint64(1024) > (*Tmatch_block_8)(unsafe.Pointer(mb)).Fheap_limit) {
goto __2
}
maxsize = (*Tmatch_block_8)(unsafe.Pointer(mb)).Fheap_limit * uint64(1024) / frame_size * frame_size
if !((*Tmatch_block_8)(unsafe.Pointer(mb)).Fframe_vector_size >= maxsize) {
goto __3
}
return -63
__3:
;
newsize = maxsize
__2:
;
new = (*struct {
f func(*libc.TLS, Tsize_t, uintptr) uintptr
})(unsafe.Pointer(&struct{ uintptr }{(*Tmatch_block_8)(unsafe.Pointer(mb)).Fmemctl.Fmalloc})).f(tls, newsize, (*Tmatch_block_8)(unsafe.Pointer(mb)).Fmemctl.Fmemory_data)
if !(new == uintptr(0)) {
goto __4
}
return -48
__4:
;
libc.Xmemcpy(tls, new, (*Tmatch_block_8)(unsafe.Pointer(mb)).Fmatch_frames, (*Tmatch_block_8)(unsafe.Pointer(mb)).Fframe_vector_size)
F = new + uintptr((int64(F)-int64((*Tmatch_block_8)(unsafe.Pointer(mb)).Fmatch_frames))/1)
N = F + uintptr(frame_size)
if !((*Tmatch_block_8)(unsafe.Pointer(mb)).Fmatch_frames != (*Tmatch_block_8)(unsafe.Pointer(mb)).Fstack_frames) {
goto __5
}
(*struct {
f func(*libc.TLS, uintptr, uintptr)
})(unsafe.Pointer(&struct{ uintptr }{(*Tmatch_block_8)(unsafe.Pointer(mb)).Fmemctl.Ffree})).f(tls, (*Tmatch_block_8)(unsafe.Pointer(mb)).Fmatch_frames, (*Tmatch_block_8)(unsafe.Pointer(mb)).Fmemctl.Fmemory_data)
__5:
;
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fmatch_frames = new
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fmatch_frames_top = (*Tmatch_block_8)(unsafe.Pointer(mb)).Fmatch_frames + uintptr(newsize)
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fframe_vector_size = newsize
__1:
;
// Copy those fields that must be copied into the new frame, increase the
// "recursion" depth (i.e. the new frame's index) and then make the new frame
// current.
libc.Xmemcpy(tls, N+uintptr(uint64(uintptr(0)+80)),
F+uintptr(uint64(uintptr(0)+80)),
frame_copy_size)
(*Theapframe)(unsafe.Pointer(N)).Frdepth = (*Theapframe)(unsafe.Pointer(F)).Frdepth + Tuint32_t(1)
F = N
// Carry on processing with a new frame.
NEW_FRAME:
(*Theapframe)(unsafe.Pointer(F)).Fgroup_frame_type = group_frame_type
(*Theapframe)(unsafe.Pointer(F)).Fecode = start_ecode // Starting code pointer
(*Theapframe)(unsafe.Pointer(F)).Fback_frame = frame_size // Default is go back one frame
// If this is a special type of group frame, remember its offset for quick
// access at the end of the group. If this is a recursion, set a new current
// recursion value.
if !(group_frame_type != Tuint32_t(0)) {
goto __6
}
(*Theapframe)(unsafe.Pointer(F)).Flast_group_offset = Tsize_t((int64(F) - int64((*Tmatch_block_8)(unsafe.Pointer(mb)).Fmatch_frames)) / 1)
if !(group_frame_type&0xffff0000 == DGF_RECURSE) {
goto __7
}
(*Theapframe)(unsafe.Pointer(F)).Fcurrent_recurse = group_frame_type & 0x0000ffff
__7:
;
group_frame_type = Tuint32_t(0)
__6:
;
// =========================================================================
// This is the main processing loop. First check that we haven't recorded too
// many backtracks (search tree is too large), or that we haven't exceeded the
// recursive depth limit (used too many backtracking frames). If not, process the
// opcodes.
if !(libc.PostIncUint32(&(*Tmatch_block_8)(unsafe.Pointer(mb)).Fmatch_call_count, 1) >= (*Tmatch_block_8)(unsafe.Pointer(mb)).Fmatch_limit) {
goto __8
}
return -47
__8:
;
if !((*Theapframe)(unsafe.Pointer(F)).Frdepth >= (*Tmatch_block_8)(unsafe.Pointer(mb)).Fmatch_limit_depth) {
goto __9
}
return -53
__9:
;
__10:
(*Theapframe)(unsafe.Pointer(F)).Fop = *(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode)) // Cast needed for 16-bit and 32-bit modes
switch int32((*Theapframe)(unsafe.Pointer(F)).Fop) {
// =====================================================================
// Before OP_ACCEPT there may be any number of OP_CLOSE opcodes, to close
// any currently open capturing brackets. Unlike reaching the end of a group,
// where we know the starting frame is at the top of the chained frames, in
// this case we have to search back for the relevant frame in case other types
// of group that use chained frames have intervened. Multiple OP_CLOSEs always
// come innermost first, which matches the chain order. We can ignore this in
// a recursion, because captures are not passed out of recursions.
case OP_CLOSE:
goto __14
// =====================================================================
// Real or forced end of the pattern, assertion, or recursion. In an
// assertion ACCEPT, update the last used pointer and remember the current
// frame so that the captures and mark can be fished out of it.
case OP_ASSERT_ACCEPT:
goto __15
// If recursing, we have to find the most recent recursion.
case OP_ACCEPT:
goto __16
case OP_END:
goto __17 // Note: NOT RRETURN
//=====================================================================
// Match any single character type except newline; have to take care with
// CRLF newlines and partial matching.
case OP_ANY:
goto __18
// Fall through
// Match any single character whatsoever.
case OP_ALLANY:
goto __19
// =====================================================================
// Match a single code unit, even in UTF mode. This opcode really does
// match any code unit, even newline. (It really should be called ANYCODEUNIT,
// of course - the byte name is from pre-16 bit days.)
case OP_ANYBYTE:
goto __20
// =====================================================================
// Match a single character, casefully
case OP_CHAR:
goto __21
// =====================================================================
// Match a single character, caselessly. If we are at the end of the
// subject, give up immediately. We get here only when the pattern character
// has at most one other case. Characters with more than two cases are coded
// as OP_PROP with the pseudo-property PT_CLIST.
case OP_CHARI:
goto __22
// =====================================================================
// Match not a single character.
case OP_NOT:
goto __23
case OP_NOTI:
goto __24
// =====================================================================
// Match a single character repeatedly.
case OP_EXACT:
goto __25
case OP_EXACTI:
goto __26
case OP_POSUPTO:
goto __27
case OP_POSUPTOI:
goto __28
case OP_UPTO:
goto __29
case OP_UPTOI:
goto __30
case OP_MINUPTO:
goto __31
case OP_MINUPTOI:
goto __32
case OP_POSSTAR:
goto __33
case OP_POSSTARI:
goto __34
case OP_POSPLUS:
goto __35
case OP_POSPLUSI:
goto __36
case OP_POSQUERY:
goto __37
case OP_POSQUERYI:
goto __38
case OP_STAR:
goto __39
case OP_STARI:
goto __40
case OP_MINSTAR:
goto __41
case OP_MINSTARI:
goto __42
case OP_PLUS:
goto __43
case OP_PLUSI:
goto __44
case OP_MINPLUS:
goto __45
case OP_MINPLUSI:
goto __46
case OP_QUERY:
goto __47
case OP_QUERYI:
goto __48
case OP_MINQUERY:
goto __49
case OP_MINQUERYI:
goto __50
// =====================================================================
// Match a negated single one-byte character repeatedly. This is almost a
// repeat of the code for a repeated single character, but I haven't found a
// nice way of commoning these up that doesn't require a test of the
// positive/negative option for each character match. Maybe that wouldn't add
// very much to the time taken, but character matching *is* what this is all
// about...
case OP_NOTEXACT:
goto __51
case OP_NOTEXACTI:
goto __52
case OP_NOTUPTO:
goto __53
case OP_NOTUPTOI:
goto __54
case OP_NOTMINUPTO:
goto __55
case OP_NOTMINUPTOI:
goto __56
case OP_NOTPOSSTAR:
goto __57
case OP_NOTPOSSTARI:
goto __58
case OP_NOTPOSPLUS:
goto __59
case OP_NOTPOSPLUSI:
goto __60
case OP_NOTPOSQUERY:
goto __61
case OP_NOTPOSQUERYI:
goto __62
case OP_NOTPOSUPTO:
goto __63
case OP_NOTPOSUPTOI:
goto __64
case OP_NOTSTAR:
goto __65
case OP_NOTSTARI:
goto __66
case OP_NOTMINSTAR:
goto __67
case OP_NOTMINSTARI:
goto __68
case OP_NOTPLUS:
goto __69
case OP_NOTPLUSI:
goto __70
case OP_NOTMINPLUS:
goto __71
case OP_NOTMINPLUSI:
goto __72
case OP_NOTQUERY:
goto __73
case OP_NOTQUERYI:
goto __74
case OP_NOTMINQUERY:
goto __75
case OP_NOTMINQUERYI:
goto __76
// =====================================================================
// Match a bit-mapped character class, possibly repeatedly. These opcodes
// are used when all the characters in the class have values in the range
// 0-255, and either the matching is caseful, or the characters are in the
// range 0-127 when UTF processing is enabled. The only difference between
// OP_CLASS and OP_NCLASS occurs when a data character outside the range is
// encountered.
case OP_NCLASS:
goto __77
case OP_CLASS:
goto __78
// Control never gets here
// =====================================================================
// Match an extended character class. In the 8-bit library, this opcode is
// encountered only when UTF-8 mode mode is supported. In the 16-bit and
// 32-bit libraries, codepoints greater than 255 may be encountered even when
// UTF is not supported.
case OP_XCLASS:
goto __79
// =====================================================================
// Match various character types when PCRE2_UCP is not set. These opcodes
// are not generated when PCRE2_UCP is set - instead appropriate property
// tests are compiled.
case OP_NOT_DIGIT:
goto __80
case OP_DIGIT:
goto __81
case OP_NOT_WHITESPACE:
goto __82
case OP_WHITESPACE:
goto __83
case OP_NOT_WORDCHAR:
goto __84
case OP_WORDCHAR:
goto __85
case OP_ANYNL:
goto __86
case OP_NOT_HSPACE:
goto __87
case OP_HSPACE:
goto __88
case OP_NOT_VSPACE:
goto __89
case OP_VSPACE:
goto __90
// =====================================================================
// Check the next character by Unicode property. We will get here only
// if the support is in the binary; otherwise a compile-time error occurs.
case OP_PROP:
goto __91
case OP_NOTPROP:
goto __92
// =====================================================================
// Match an extended Unicode sequence. We will get here only if the support
// is in the binary; otherwise a compile-time error occurs.
case OP_EXTUNI:
goto __93
// =====================================================================
// Match a single character type repeatedly. Note that the property type
// does not need to be in a stack frame as it is not used within an RMATCH()
// loop.
case OP_TYPEEXACT:
goto __94
case OP_TYPEUPTO:
goto __95
case OP_TYPEMINUPTO:
goto __96
case OP_TYPEPOSSTAR:
goto __97
case OP_TYPEPOSPLUS:
goto __98
case OP_TYPEPOSQUERY:
goto __99
case OP_TYPEPOSUPTO:
goto __100
case OP_TYPESTAR:
goto __101
case OP_TYPEMINSTAR:
goto __102
case OP_TYPEPLUS:
goto __103
case OP_TYPEMINPLUS:
goto __104
case OP_TYPEQUERY:
goto __105
case OP_TYPEMINQUERY:
goto __106 // End of repeat character type processing
// =====================================================================
// Match a back reference, possibly repeatedly. Look past the end of the
// item to see if there is repeat information following. The OP_REF and
// OP_REFI opcodes are used for a reference to a numbered group or to a
// non-duplicated named group. For a duplicated named group, OP_DNREF and
// OP_DNREFI are used. In this case we must scan the list of groups to which
// the name refers, and use the first one that is set.
case OP_DNREF:
goto __107
case OP_DNREFI:
goto __108
case OP_REF:
goto __109
case OP_REFI:
goto __110
// Control never gets here
// =========================================================================
// Opcodes for the start of various parenthesized items
// =========================================================================
// In all cases, if the result of RMATCH() is MATCH_THEN, check whether the
// (*THEN) is within the current branch by comparing the address of OP_THEN
// that is passed back with the end of the branch. If (*THEN) is within the
// current branch, and the branch is one of two or more alternatives (it
// either starts or ends with OP_ALT), we have reached the limit of THEN's
// action, so convert the return code to NOMATCH, which will cause normal
// backtracking to happen from now on. Otherwise, THEN is passed back to an
// outer alternative. This implements Perl's treatment of parenthesized
// groups, where a group not containing | does not affect the current
// alternative, that is, (X) is NOT the same as (X|(*F)).
// =====================================================================
// BRAZERO, BRAMINZERO and SKIPZERO occur just before a non-possessive
// bracket group, indicating that it may occur zero times. It may repeat
// infinitely, or not at all - i.e. it could be ()* or ()? or even (){0} in
// the pattern. Brackets with fixed upper repeat limits are compiled as a
// number of copies, with the optional ones preceded by BRAZERO or BRAMINZERO.
// Possessive groups with possible zero repeats are preceded by BRAPOSZERO.
case OP_BRAZERO:
goto __111
case OP_BRAMINZERO:
goto __112
case OP_SKIPZERO:
goto __113
// =====================================================================
// Handle possessive brackets with an unlimited repeat. The end of these
// brackets will always be OP_KETRPOS, which returns MATCH_KETRPOS without
// going further in the pattern.
case OP_BRAPOSZERO:
goto __114
case OP_BRAPOS:
goto __115
case OP_SBRAPOS:
goto __116
case OP_CBRAPOS:
goto __117
case OP_SCBRAPOS:
goto __118
// =====================================================================
// Handle non-capturing brackets that cannot match an empty string. When we
// get to the final alternative within the brackets, as long as there are no
// THEN's in the pattern, we can optimize by not recording a new backtracking
// point. (Ideally we should test for a THEN within this group, but we don't
// have that information.) Don't do this if we are at the very top level,
// however, because that would make handling assertions and once-only brackets
// messier when there is nothing to go back to.
case OP_BRA:
goto __119
// =====================================================================
// Handle a capturing bracket, other than those that are possessive with an
// unlimited repeat.
case OP_CBRA:
goto __120
case OP_SCBRA:
goto __121
// =====================================================================
// Atomic groups and non-capturing brackets that can match an empty string
// must record a backtracking point and also set up a chained frame.
case OP_ONCE:
goto __122
case OP_SCRIPT_RUN:
goto __123
case OP_SBRA:
goto __124
// Control never reaches here.
// =====================================================================
// Recursion either matches the current regex, or some subexpression. The
// offset data is the offset to the starting bracket from the start of the
// whole pattern. (This is so that it works from duplicated subpatterns.)
case OP_RECURSE:
goto __125
// Control never reaches here.
// =====================================================================
// Positive assertions are like other groups except that PCRE doesn't allow
// the effect of (*THEN) to escape beyond an assertion; it is therefore
// treated as NOMATCH. (*ACCEPT) is treated as successful assertion, with its
// captures and mark retained. Any other return is an error.
case OP_ASSERT:
goto __126
case OP_ASSERTBACK:
goto __127
case OP_ASSERT_NA:
goto __128
case OP_ASSERTBACK_NA:
goto __129
// =====================================================================
// Handle negative assertions. Loop for each non-matching branch as for
// positive assertions.
case OP_ASSERT_NOT:
goto __130
case OP_ASSERTBACK_NOT:
goto __131
// =====================================================================
// The callout item calls an external function, if one is provided, passing
// details of the match so far. This is mainly for debugging, though the
// function is able to force a failure.
case OP_CALLOUT:
goto __132
case OP_CALLOUT_STR:
goto __133
// =====================================================================
// Conditional group: compilation checked that there are no more than two
// branches. If the condition is false, skipping the first branch takes us
// past the end of the item if there is only one branch, but that's exactly
// what we want.
case OP_COND:
goto __134
case OP_SCOND:
goto __135
// =========================================================================
// End of start of parenthesis opcodes
// =========================================================================
// =====================================================================
// Move the subject pointer back. This occurs only at the start of each
// branch of a lookbehind assertion. If we are too close to the start to move
// back, fail. When working with UTF-8 we move back a number of characters,
// not bytes.
case OP_REVERSE:
goto __136
// =====================================================================
// An alternation is the end of a branch; scan along to find the end of the
// bracketed group.
case OP_ALT:
goto __137
// =====================================================================
// The end of a parenthesized group. For all but OP_BRA and OP_COND, the
// starting frame was added to the chained frames in order to remember the
// starting subject position for the group.
case OP_KET:
goto __138
case OP_KETRMIN:
goto __139
case OP_KETRMAX:
goto __140
case OP_KETRPOS:
goto __141
// =====================================================================
// Start and end of line assertions, not multiline mode.
case OP_CIRC:
goto __142
case OP_SOD:
goto __143
// When PCRE2_NOTEOL is unset, assert before the subject end, or a
// terminating newline unless PCRE2_DOLLAR_ENDONLY is set.
case OP_DOLL:
goto __144
// Fall through
// Unconditional end of subject assertion (\z)
case OP_EOD:
goto __145
// End of subject or ending \n assertion (\Z)
case OP_EODN:
goto __146
// =====================================================================
// Start and end of line assertions, multiline mode.
// Start of subject unless notbol, or after any newline except for one at
// the very end, unless PCRE2_ALT_CIRCUMFLEX is set.
case OP_CIRCM:
goto __147
// Assert before any newline, or before end of subject unless noteol is
// set.
case OP_DOLLM:
goto __148
// =====================================================================
// Start of match assertion
case OP_SOM:
goto __149
// =====================================================================
// Reset the start of match point
case OP_SET_SOM:
goto __150
// =====================================================================
// Word boundary assertions. Find out if the previous and current
// characters are "word" characters. It takes a bit more work in UTF mode.
// Characters > 255 are assumed to be "non-word" characters when PCRE2_UCP is
// not set. When it is set, use Unicode properties if available, even when not
// in UTF mode. Remember the earliest and latest consulted characters.
case OP_NOT_WORD_BOUNDARY:
goto __151
case OP_WORD_BOUNDARY:
goto __152
// =====================================================================
// Backtracking (*VERB)s, with and without arguments. Note that if the
// pattern is successfully matched, we do not come back from RMATCH.
case OP_MARK:
goto __153
case OP_FAIL:
goto __154
// Record the current recursing group number in mb->verb_current_recurse
// when a backtracking return such as MATCH_COMMIT is given. This enables the
// recurse processing to catch verbs from within the recursion.
case OP_COMMIT:
goto __155
case OP_COMMIT_ARG:
goto __156
case OP_PRUNE:
goto __157
case OP_PRUNE_ARG:
goto __158
case OP_SKIP:
goto __159
// Note that, for Perl compatibility, SKIP with an argument does NOT set
// nomatch_mark. When a pattern match ends with a SKIP_ARG for which there was
// not a matching mark, we have to re-run the match, ignoring the SKIP_ARG
// that failed and any that precede it (either they also failed, or were not
// triggered). To do this, we maintain a count of executed SKIP_ARGs. If a
// SKIP_ARG gets to top level, the match is re-run with mb->ignore_skip_arg
// set to the count of the one that failed.
case OP_SKIP_ARG:
goto __160
// For THEN (and THEN_ARG) we pass back the address of the opcode, so that
// the branch in which it occurs can be determined.
case OP_THEN:
goto __161
case OP_THEN_ARG:
goto __162
// =====================================================================
// There's been some horrible disaster. Arrival here can only mean there is
// something seriously wrong in the code above or the OP_xxx definitions.
default:
goto __163
}
goto __13
// =====================================================================
// Before OP_ACCEPT there may be any number of OP_CLOSE opcodes, to close
// any currently open capturing brackets. Unlike reaching the end of a group,
// where we know the starting frame is at the top of the chained frames, in
// this case we have to search back for the relevant frame in case other types
// of group that use chained frames have intervened. Multiple OP_CLOSEs always
// come innermost first, which matches the chain order. We can ignore this in
// a recursion, because captures are not passed out of recursions.
__14:
if !((*Theapframe)(unsafe.Pointer(F)).Fcurrent_recurse == DRECURSE_UNSET) {
goto __164
}
number = uint32(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode + 1)))<<8 | int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode + 2))))
offset = (*Theapframe)(unsafe.Pointer(F)).Flast_group_offset
__165:
if !(offset == libc.CplUint64(uint64(0))) {
goto __168
}
return -44
__168:
;
N = (*Tmatch_block_8)(unsafe.Pointer(mb)).Fmatch_frames + uintptr(offset)
P = N - uintptr(frame_size)
if !((*Theapframe)(unsafe.Pointer(N)).Fgroup_frame_type == DGF_CAPTURE|number) {
goto __169
}
goto __167
__169:
;
offset = (*Theapframe)(unsafe.Pointer(P)).Flast_group_offset
goto __166
__166:
goto __165
goto __167
__167:
;
offset = Tsize_t(number<<1 - Tuint32_t(2))
(*Theapframe)(unsafe.Pointer(F)).Fcapture_last = number
*(*Tsize_t)(unsafe.Pointer(F + 128 + uintptr(offset)*8)) = Tsize_t((int64((*Theapframe)(unsafe.Pointer(P)).Feptr) - int64((*Tmatch_block_8)(unsafe.Pointer(mb)).Fstart_subject)) / 1)
*(*Tsize_t)(unsafe.Pointer(F + 128 + uintptr(offset+uint64(1))*8)) = Tsize_t((int64((*Theapframe)(unsafe.Pointer(F)).Feptr) - int64((*Tmatch_block_8)(unsafe.Pointer(mb)).Fstart_subject)) / 1)
if !(offset >= (*Theapframe)(unsafe.Pointer(F)).Foffset_top) {
goto __170
}
(*Theapframe)(unsafe.Pointer(F)).Foffset_top = offset + uint64(2)
__170:
;
__164:
;
*(*TPCRE2_SPTR8)(unsafe.Pointer(F)) += TPCRE2_SPTR8(X_pcre2_OP_lengths_8[*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode))])
goto __13
// =====================================================================
// Real or forced end of the pattern, assertion, or recursion. In an
// assertion ACCEPT, update the last used pointer and remember the current
// frame so that the captures and mark can be fished out of it.
__15:
if !((*Theapframe)(unsafe.Pointer(F)).Feptr > (*Tmatch_block_8)(unsafe.Pointer(mb)).Flast_used_ptr) {
goto __171
}
(*Tmatch_block_8)(unsafe.Pointer(mb)).Flast_used_ptr = (*Theapframe)(unsafe.Pointer(F)).Feptr
__171:
;
assert_accept_frame = F
rrc = -999
goto RETURN_SWITCH
// If recursing, we have to find the most recent recursion.
__16:
__17:
// Handle end of a recursion.
if !((*Theapframe)(unsafe.Pointer(F)).Fcurrent_recurse != DRECURSE_UNSET) {
goto __172
}
offset = (*Theapframe)(unsafe.Pointer(F)).Flast_group_offset
__173:
if !(offset == libc.CplUint64(uint64(0))) {
goto __176
}
return -44
__176:
;
N = (*Tmatch_block_8)(unsafe.Pointer(mb)).Fmatch_frames + uintptr(offset)
P = N - uintptr(frame_size)
if !((*Theapframe)(unsafe.Pointer(N)).Fgroup_frame_type&0xffff0000 == DGF_RECURSE) {
goto __177
}
goto __175
__177:
;
offset = (*Theapframe)(unsafe.Pointer(P)).Flast_group_offset
goto __174
__174:
goto __173
goto __175
__175:
;
// N is now the frame of the recursion; the previous frame is at the
// OP_RECURSE position. Go back there, copying the current subject position
// and mark, and the start_match position (\K might have changed it), and
// then move on past the OP_RECURSE.
(*Theapframe)(unsafe.Pointer(P)).Feptr = (*Theapframe)(unsafe.Pointer(F)).Feptr
(*Theapframe)(unsafe.Pointer(P)).Fmark = (*Theapframe)(unsafe.Pointer(F)).Fmark
(*Theapframe)(unsafe.Pointer(P)).Fstart_match = (*Theapframe)(unsafe.Pointer(F)).Fstart_match
F = P
*(*TPCRE2_SPTR8)(unsafe.Pointer(F)) += TPCRE2_SPTR8(1 + DLINK_SIZE)
goto __11
__172:
;
// Not a recursion. Fail for an empty string match if either PCRE2_NOTEMPTY
// is set, or if PCRE2_NOTEMPTY_ATSTART is set and we have matched at the
// start of the subject. In both cases, backtracking will then try other
// alternatives, if any.
if !((*Theapframe)(unsafe.Pointer(F)).Feptr == (*Theapframe)(unsafe.Pointer(F)).Fstart_match && ((*Tmatch_block_8)(unsafe.Pointer(mb)).Fmoptions&DPCRE2_NOTEMPTY != Tuint32_t(0) || (*Tmatch_block_8)(unsafe.Pointer(mb)).Fmoptions&DPCRE2_NOTEMPTY_ATSTART != Tuint32_t(0) && (*Theapframe)(unsafe.Pointer(F)).Fstart_match == (*Tmatch_block_8)(unsafe.Pointer(mb)).Fstart_subject+uintptr((*Tmatch_block_8)(unsafe.Pointer(mb)).Fstart_offset))) {
goto __178
}
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__178:
;
// Also fail if PCRE2_ENDANCHORED is set and the end of the match is not
// the end of the subject. After (*ACCEPT) we fail the entire match (at this
// position) but backtrack on reaching the end of the pattern.
if !((*Theapframe)(unsafe.Pointer(F)).Feptr < (*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject && ((*Tmatch_block_8)(unsafe.Pointer(mb)).Fmoptions|(*Tmatch_block_8)(unsafe.Pointer(mb)).Fpoptions)&DPCRE2_ENDANCHORED != Tuint32_t(0)) {
goto __179
}
if !(int32((*Theapframe)(unsafe.Pointer(F)).Fop) == OP_END) {
goto __180
}
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__180:
;
return DMATCH_NOMATCH
__179:
;
// We have a successful match of the whole pattern. Record the result and
// then do a direct return from the function. If there is space in the offset
// vector, set any pairs that follow the highest-numbered captured string but
// are less than the number of capturing groups in the pattern to PCRE2_UNSET.
// It is documented that this happens. "Gaps" are set to PCRE2_UNSET
// dynamically. It is only those at the end that need setting here.
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_match_ptr = (*Theapframe)(unsafe.Pointer(F)).Feptr // Record where we ended
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_offset_top = (*Theapframe)(unsafe.Pointer(F)).Foffset_top // and how many extracts were taken
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fmark = (*Theapframe)(unsafe.Pointer(F)).Fmark // and the last success mark
if !((*Theapframe)(unsafe.Pointer(F)).Feptr > (*Tmatch_block_8)(unsafe.Pointer(mb)).Flast_used_ptr) {
goto __181
}
(*Tmatch_block_8)(unsafe.Pointer(mb)).Flast_used_ptr = (*Theapframe)(unsafe.Pointer(F)).Feptr
__181:
;
*(*Tsize_t)(unsafe.Pointer(ovector)) = Tsize_t((int64((*Theapframe)(unsafe.Pointer(F)).Fstart_match) - int64((*Tmatch_block_8)(unsafe.Pointer(mb)).Fstart_subject)) / 1)
*(*Tsize_t)(unsafe.Pointer(ovector + 1*8)) = Tsize_t((int64((*Theapframe)(unsafe.Pointer(F)).Feptr) - int64((*Tmatch_block_8)(unsafe.Pointer(mb)).Fstart_subject)) / 1)
// Set i to the smaller of the sizes of the external and frame ovectors.
i = Tuint32_t(2 * func() int32 {
if int32(top_bracket)+1 > int32(oveccount) {
return int32(oveccount)
}
return int32(top_bracket) + 1
}())
libc.Xmemcpy(tls, ovector+uintptr(2)*8, F+128, uint64(i-Tuint32_t(2))*uint64(unsafe.Sizeof(Tsize_t(0))))
__182:
if !(Tsize_t(libc.PreDecUint32(&i, 1)) >= (*Theapframe)(unsafe.Pointer(F)).Foffset_top+uint64(2)) {
goto __183
}
*(*Tsize_t)(unsafe.Pointer(ovector + uintptr(i)*8)) = libc.CplUint64(uint64(0))
goto __182
__183:
;
return DMATCH_MATCH // Note: NOT RRETURN
//=====================================================================
// Match any single character type except newline; have to take care with
// CRLF newlines and partial matching.
__18:
if !(func() int32 {
if (*Tmatch_block_8)(unsafe.Pointer(mb)).Fnltype != Tuint32_t(DNLTYPE_FIXED) {
return libc.Bool32((*Theapframe)(unsafe.Pointer(F)).Feptr < (*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject && X_pcre2_is_newline_8(tls, (*Theapframe)(unsafe.Pointer(F)).Feptr, (*Tmatch_block_8)(unsafe.Pointer(mb)).Fnltype, (*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject, mb+256, utf) != 0)
}
return libc.Bool32((*Theapframe)(unsafe.Pointer(F)).Feptr <= (*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject-uintptr((*Tmatch_block_8)(unsafe.Pointer(mb)).Fnllen) && int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr))) == int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(mb + 260))) && ((*Tmatch_block_8)(unsafe.Pointer(mb)).Fnllen == Tuint32_t(1) || int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + uintptr(1)))) == int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(mb + 260 + 1)))))
}() != 0) {
goto __184
}
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__184:
;
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) != 0 && (*Theapframe)(unsafe.Pointer(F)).Feptr == (*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject-uintptr(1) && (*Tmatch_block_8)(unsafe.Pointer(mb)).Fnltype == Tuint32_t(DNLTYPE_FIXED) && (*Tmatch_block_8)(unsafe.Pointer(mb)).Fnllen == Tuint32_t(2) && int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr))) == int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(mb + 260)))) {
goto __185
}
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fhitend = DTRUE
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) > 1) {
goto __186
}
return -2
__186:
;
__185:
;
// Fall through
// Match any single character whatsoever.
__19:
if !((*Theapframe)(unsafe.Pointer(F)).Feptr >= (*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject) {
goto __187
} /* DO NOT merge the Feptr++ here; it must */
// not be updated before SCHECK_PARTIAL.
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) != 0 && ((*Theapframe)(unsafe.Pointer(F)).Feptr > (*Tmatch_block_8)(unsafe.Pointer(mb)).Fstart_used_ptr || (*Tmatch_block_8)(unsafe.Pointer(mb)).Fallowemptypartial != 0)) {
goto __188
}
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fhitend = DTRUE
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) > 1) {
goto __189
}
return -2
__189:
;
__188:
;
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__187:
;
(*Theapframe)(unsafe.Pointer(F)).Feptr++
if !(utf != 0) {
goto __190
}
__191:
if !((*Theapframe)(unsafe.Pointer(F)).Feptr < (*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject && uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0xc0 == 0x80) {
goto __192
}
(*Theapframe)(unsafe.Pointer(F)).Feptr++
goto __191
__192:
;
__190:
;
(*Theapframe)(unsafe.Pointer(F)).Fecode++
goto __13
// =====================================================================
// Match a single code unit, even in UTF mode. This opcode really does
// match any code unit, even newline. (It really should be called ANYCODEUNIT,
// of course - the byte name is from pre-16 bit days.)
__20:
if !((*Theapframe)(unsafe.Pointer(F)).Feptr >= (*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject) {
goto __193
} /* DO NOT merge the Feptr++ here; it must */
// not be updated before SCHECK_PARTIAL.
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) != 0 && ((*Theapframe)(unsafe.Pointer(F)).Feptr > (*Tmatch_block_8)(unsafe.Pointer(mb)).Fstart_used_ptr || (*Tmatch_block_8)(unsafe.Pointer(mb)).Fallowemptypartial != 0)) {
goto __194
}
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fhitend = DTRUE
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) > 1) {
goto __195
}
return -2
__195:
;
__194:
;
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__193:
;
(*Theapframe)(unsafe.Pointer(F)).Feptr++
(*Theapframe)(unsafe.Pointer(F)).Fecode++
goto __13
// =====================================================================
// Match a single character, casefully
__21:
if !(utf != 0) {
goto __196
}
(*Theapframe)(unsafe.Pointer(F)).Flength = uint64(1)
(*Theapframe)(unsafe.Pointer(F)).Fecode++
fc = Tuint32_t(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode)))
if !(fc >= 0xc0) {
goto __198
}
if !(fc&0x20 == Tuint32_t(0)) {
goto __199
}
fc = fc&0x1f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode + 1)))&0x3f
(*Theapframe)(unsafe.Pointer(F)).Flength++
goto __200
__199:
if !(fc&0x10 == Tuint32_t(0)) {
goto __201
}
fc = fc&0x0f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode + 1)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode + 2)))&0x3f
*(*Tsize_t)(unsafe.Pointer(F + 24)) += uint64(2)
goto __202
__201:
if !(fc&0x08 == Tuint32_t(0)) {
goto __203
}
fc = fc&0x07<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode + 1)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode + 2)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode + 3)))&0x3f
*(*Tsize_t)(unsafe.Pointer(F + 24)) += uint64(3)
goto __204
__203:
if !(fc&0x04 == Tuint32_t(0)) {
goto __205
}
fc = fc&0x03<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode + 1)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode + 2)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode + 3)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode + 4)))&0x3f
*(*Tsize_t)(unsafe.Pointer(F + 24)) += uint64(4)
goto __206
__205:
fc = fc&0x01<<30 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode + 1)))&0x3f<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode + 2)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode + 3)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode + 4)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode + 5)))&0x3f
*(*Tsize_t)(unsafe.Pointer(F + 24)) += uint64(5)
__206:
;
__204:
;
__202:
;
__200:
;
__198:
;
if !((*Theapframe)(unsafe.Pointer(F)).Flength > Tsize_t((int64((*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject)-int64((*Theapframe)(unsafe.Pointer(F)).Feptr))/1)) {
goto __207
}
if !((*Theapframe)(unsafe.Pointer(F)).Feptr >= (*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject) {
goto __208
}
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) != 0 && ((*Theapframe)(unsafe.Pointer(F)).Feptr > (*Tmatch_block_8)(unsafe.Pointer(mb)).Fstart_used_ptr || (*Tmatch_block_8)(unsafe.Pointer(mb)).Fallowemptypartial != 0)) {
goto __209
}
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fhitend = DTRUE
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) > 1) {
goto __210
}
return -2
__210:
;
__209:
;
__208:
;
/* Not SCHECK_PARTIAL() */
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__207:
;
__211:
if !((*Theapframe)(unsafe.Pointer(F)).Flength > uint64(0)) {
goto __213
}
if !(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&(*Theapframe)(unsafe.Pointer(F)).Fecode, 1)))) != int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&(*Theapframe)(unsafe.Pointer(F)).Feptr, 1))))) {
goto __214
}
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__214:
;
goto __212
__212:
(*Theapframe)(unsafe.Pointer(F)).Flength--
goto __211
goto __213
__213:
;
goto __197
__196:
/* Not UTF mode */
if !((int64((*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject)-int64((*Theapframe)(unsafe.Pointer(F)).Feptr))/1 < int64(1)) {
goto __215
}
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) != 0 && ((*Theapframe)(unsafe.Pointer(F)).Feptr > (*Tmatch_block_8)(unsafe.Pointer(mb)).Fstart_used_ptr || (*Tmatch_block_8)(unsafe.Pointer(mb)).Fallowemptypartial != 0)) {
goto __216
}
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fhitend = DTRUE
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) > 1) {
goto __217
}
return -2
__217:
;
__216:
;
/* This one can use SCHECK_PARTIAL() */
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__215:
;
if !(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode + 1))) != int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&(*Theapframe)(unsafe.Pointer(F)).Feptr, 1))))) {
goto __218
}
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__218:
;
*(*TPCRE2_SPTR8)(unsafe.Pointer(F)) += uintptr(2)
__197:
;
goto __13
// =====================================================================
// Match a single character, caselessly. If we are at the end of the
// subject, give up immediately. We get here only when the pattern character
// has at most one other case. Characters with more than two cases are coded
// as OP_PROP with the pseudo-property PT_CLIST.
__22:
if !((*Theapframe)(unsafe.Pointer(F)).Feptr >= (*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject) {
goto __219
}
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) != 0 && ((*Theapframe)(unsafe.Pointer(F)).Feptr > (*Tmatch_block_8)(unsafe.Pointer(mb)).Fstart_used_ptr || (*Tmatch_block_8)(unsafe.Pointer(mb)).Fallowemptypartial != 0)) {
goto __220
}
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fhitend = DTRUE
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) > 1) {
goto __221
}
return -2
__221:
;
__220:
;
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__219:
;
if !(utf != 0) {
goto __222
}
(*Theapframe)(unsafe.Pointer(F)).Flength = uint64(1)
(*Theapframe)(unsafe.Pointer(F)).Fecode++
fc = Tuint32_t(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode)))
if !(fc >= 0xc0) {
goto __224
}
if !(fc&0x20 == Tuint32_t(0)) {
goto __225
}
fc = fc&0x1f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode + 1)))&0x3f
(*Theapframe)(unsafe.Pointer(F)).Flength++
goto __226
__225:
if !(fc&0x10 == Tuint32_t(0)) {
goto __227
}
fc = fc&0x0f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode + 1)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode + 2)))&0x3f
*(*Tsize_t)(unsafe.Pointer(F + 24)) += uint64(2)
goto __228
__227:
if !(fc&0x08 == Tuint32_t(0)) {
goto __229
}
fc = fc&0x07<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode + 1)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode + 2)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode + 3)))&0x3f
*(*Tsize_t)(unsafe.Pointer(F + 24)) += uint64(3)
goto __230
__229:
if !(fc&0x04 == Tuint32_t(0)) {
goto __231
}
fc = fc&0x03<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode + 1)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode + 2)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode + 3)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode + 4)))&0x3f
*(*Tsize_t)(unsafe.Pointer(F + 24)) += uint64(4)
goto __232
__231:
fc = fc&0x01<<30 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode + 1)))&0x3f<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode + 2)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode + 3)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode + 4)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode + 5)))&0x3f
*(*Tsize_t)(unsafe.Pointer(F + 24)) += uint64(5)
__232:
;
__230:
;
__228:
;
__226:
;
__224:
;
// If the pattern character's value is < 128, we know that its other case
// (if any) is also < 128 (and therefore only one code unit long in all
// code-unit widths), so we can use the fast lookup table. We checked above
// that there is at least one character left in the subject.
if !(fc < Tuint32_t(128)) {
goto __233
}
cc = Tuint32_t(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))
if !(int32(*(*Tuint8_t)(unsafe.Pointer((*Tmatch_block_8)(unsafe.Pointer(mb)).Flcc + uintptr(fc)))) != int32(*(*Tuint8_t)(unsafe.Pointer((*Tmatch_block_8)(unsafe.Pointer(mb)).Flcc + uintptr(cc))))) {
goto __235
}
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__235:
;
(*Theapframe)(unsafe.Pointer(F)).Fecode++
(*Theapframe)(unsafe.Pointer(F)).Feptr++
goto __234
__233:
dc = Tuint32_t(*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&(*Theapframe)(unsafe.Pointer(F)).Feptr, 1))))
if !(dc >= 0xc0) {
goto __236
}
if !(dc&0x20 == Tuint32_t(0)) {
goto __237
}
dc = dc&0x1f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&(*Theapframe)(unsafe.Pointer(F)).Feptr, 1))))&0x3f
goto __238
__237:
if !(dc&0x10 == Tuint32_t(0)) {
goto __239
}
dc = dc&0x0f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += uintptr(2)
goto __240
__239:
if !(dc&0x08 == Tuint32_t(0)) {
goto __241
}
dc = dc&0x07<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += uintptr(3)
goto __242
__241:
if !(dc&0x04 == Tuint32_t(0)) {
goto __243
}
dc = dc&0x03<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 3)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += uintptr(4)
goto __244
__243:
dc = dc&0x01<<30 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0x3f<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 3)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 4)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += uintptr(5)
__244:
;
__242:
;
__240:
;
__238:
;
__236:
;
*(*TPCRE2_SPTR8)(unsafe.Pointer(F)) += TPCRE2_SPTR8((*Theapframe)(unsafe.Pointer(F)).Flength)
if !(dc != fc && dc != Tuint32_t(int32(fc)+(*Tucd_record)(unsafe.Pointer(uintptr(unsafe.Pointer(&X_pcre2_ucd_records_8))+uintptr(X_pcre2_ucd_stage2_8[int32(X_pcre2_ucd_stage1_8[int32(fc)/DUCD_BLOCK_SIZE])*DUCD_BLOCK_SIZE+int32(fc)%DUCD_BLOCK_SIZE])*12)).Fother_case)) {
goto __245
}
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__245:
;
__234:
;
goto __223
__222:
if !(ucp != 0) {
goto __246
}
cc1 = Tuint32_t(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))
fc = Tuint32_t(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode + 1)))
if !(fc < Tuint32_t(128)) {
goto __248
}
if !(int32(*(*Tuint8_t)(unsafe.Pointer((*Tmatch_block_8)(unsafe.Pointer(mb)).Flcc + uintptr(fc)))) != int32(*(*Tuint8_t)(unsafe.Pointer((*Tmatch_block_8)(unsafe.Pointer(mb)).Flcc + uintptr(cc1))))) {
goto __250
}
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__250:
;
goto __249
__248:
if !(cc1 != fc && cc1 != Tuint32_t(int32(fc)+(*Tucd_record)(unsafe.Pointer(uintptr(unsafe.Pointer(&X_pcre2_ucd_records_8))+uintptr(X_pcre2_ucd_stage2_8[int32(X_pcre2_ucd_stage1_8[int32(fc)/DUCD_BLOCK_SIZE])*DUCD_BLOCK_SIZE+int32(fc)%DUCD_BLOCK_SIZE])*12)).Fother_case)) {
goto __251
}
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__251:
;
__249:
;
(*Theapframe)(unsafe.Pointer(F)).Feptr++
*(*TPCRE2_SPTR8)(unsafe.Pointer(F)) += uintptr(2)
goto __247
__246:
/* Not UTF or UCP mode; use the table for characters < 256. */
if !(int32(*(*Tuint8_t)(unsafe.Pointer((*Tmatch_block_8)(unsafe.Pointer(mb)).Flcc + uintptr(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode + 1)))))) !=
int32(*(*Tuint8_t)(unsafe.Pointer((*Tmatch_block_8)(unsafe.Pointer(mb)).Flcc + uintptr(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr))))))) {
goto __252
}
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__252:
;
(*Theapframe)(unsafe.Pointer(F)).Feptr++
*(*TPCRE2_SPTR8)(unsafe.Pointer(F)) += uintptr(2)
__247:
;
__223:
;
goto __13
// =====================================================================
// Match not a single character.
__23:
__24:
if !((*Theapframe)(unsafe.Pointer(F)).Feptr >= (*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject) {
goto __253
}
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) != 0 && ((*Theapframe)(unsafe.Pointer(F)).Feptr > (*Tmatch_block_8)(unsafe.Pointer(mb)).Fstart_used_ptr || (*Tmatch_block_8)(unsafe.Pointer(mb)).Fallowemptypartial != 0)) {
goto __254
}
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fhitend = DTRUE
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) > 1) {
goto __255
}
return -2
__255:
;
__254:
;
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__253:
;
if !(utf != 0) {
goto __256
}
(*Theapframe)(unsafe.Pointer(F)).Fecode++
ch = Tuint32_t(*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&(*Theapframe)(unsafe.Pointer(F)).Fecode, 1))))
if !(ch >= 0xc0) {
goto __258
}
if !(ch&0x20 == Tuint32_t(0)) {
goto __259
}
ch = ch&0x1f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&(*Theapframe)(unsafe.Pointer(F)).Fecode, 1))))&0x3f
goto __260
__259:
if !(ch&0x10 == Tuint32_t(0)) {
goto __261
}
ch = ch&0x0f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode + 1)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(F)) += uintptr(2)
goto __262
__261:
if !(ch&0x08 == Tuint32_t(0)) {
goto __263
}
ch = ch&0x07<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode + 1)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode + 2)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(F)) += uintptr(3)
goto __264
__263:
if !(ch&0x04 == Tuint32_t(0)) {
goto __265
}
ch = ch&0x03<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode + 1)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode + 2)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode + 3)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(F)) += uintptr(4)
goto __266
__265:
ch = ch&0x01<<30 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode)))&0x3f<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode + 1)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode + 2)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode + 3)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode + 4)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(F)) += uintptr(5)
__266:
;
__264:
;
__262:
;
__260:
;
__258:
;
fc = Tuint32_t(*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&(*Theapframe)(unsafe.Pointer(F)).Feptr, 1))))
if !(fc >= 0xc0) {
goto __267
}
if !(fc&0x20 == Tuint32_t(0)) {
goto __268
}
fc = fc&0x1f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&(*Theapframe)(unsafe.Pointer(F)).Feptr, 1))))&0x3f
goto __269
__268:
if !(fc&0x10 == Tuint32_t(0)) {
goto __270
}
fc = fc&0x0f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += uintptr(2)
goto __271
__270:
if !(fc&0x08 == Tuint32_t(0)) {
goto __272
}
fc = fc&0x07<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += uintptr(3)
goto __273
__272:
if !(fc&0x04 == Tuint32_t(0)) {
goto __274
}
fc = fc&0x03<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 3)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += uintptr(4)
goto __275
__274:
fc = fc&0x01<<30 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0x3f<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 3)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 4)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += uintptr(5)
__275:
;
__273:
;
__271:
;
__269:
;
__267:
;
if !(ch == fc) {
goto __276
}
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
// Caseful match
goto __277
__276:
if !(int32((*Theapframe)(unsafe.Pointer(F)).Fop) == OP_NOTI) {
goto __278
} /* If caseless */
if !(ch > Tuint32_t(127)) {
goto __279
}
ch = Tuint32_t(int32(ch) + (*Tucd_record)(unsafe.Pointer(uintptr(unsafe.Pointer(&X_pcre2_ucd_records_8))+uintptr(X_pcre2_ucd_stage2_8[int32(X_pcre2_ucd_stage1_8[int32(ch)/DUCD_BLOCK_SIZE])*DUCD_BLOCK_SIZE+int32(ch)%DUCD_BLOCK_SIZE])*12)).Fother_case)
goto __280
__279:
ch = Tuint32_t(*(*Tuint8_t)(unsafe.Pointer((*Tmatch_block_8)(unsafe.Pointer(mb)).Ffcc + uintptr(ch))))
__280:
;
if !(ch == fc) {
goto __281
}
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__281:
;
__278:
;
__277:
;
goto __257
__256:
if !(ucp != 0) {
goto __282
}
fc = Tuint32_t(*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&(*Theapframe)(unsafe.Pointer(F)).Feptr, 1))))
ch1 = Tuint32_t(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode + 1)))
*(*TPCRE2_SPTR8)(unsafe.Pointer(F)) += uintptr(2)
if !(ch1 == fc) {
goto __284
}
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
// Caseful match
goto __285
__284:
if !(int32((*Theapframe)(unsafe.Pointer(F)).Fop) == OP_NOTI) {
goto __286
} /* If caseless */
if !(ch1 > Tuint32_t(127)) {
goto __287
}
ch1 = Tuint32_t(int32(ch1) + (*Tucd_record)(unsafe.Pointer(uintptr(unsafe.Pointer(&X_pcre2_ucd_records_8))+uintptr(X_pcre2_ucd_stage2_8[int32(X_pcre2_ucd_stage1_8[int32(ch1)/DUCD_BLOCK_SIZE])*DUCD_BLOCK_SIZE+int32(ch1)%DUCD_BLOCK_SIZE])*12)).Fother_case)
goto __288
__287:
ch1 = Tuint32_t(*(*Tuint8_t)(unsafe.Pointer((*Tmatch_block_8)(unsafe.Pointer(mb)).Ffcc + uintptr(ch1))))
__288:
;
if !(ch1 == fc) {
goto __289
}
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__289:
;
__286:
;
__285:
;
goto __283
__282:
/* Neither UTF nor UCP is set */
ch2 = Tuint32_t(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode + 1)))
fc = Tuint32_t(*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&(*Theapframe)(unsafe.Pointer(F)).Feptr, 1))))
if !(ch2 == fc || int32((*Theapframe)(unsafe.Pointer(F)).Fop) == OP_NOTI && Tuint32_t(*(*Tuint8_t)(unsafe.Pointer((*Tmatch_block_8)(unsafe.Pointer(mb)).Ffcc + uintptr(ch2)))) == fc) {
goto __290
}
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__290:
;
*(*TPCRE2_SPTR8)(unsafe.Pointer(F)) += uintptr(2)
__283:
;
__257:
;
goto __13
// =====================================================================
// Match a single character repeatedly.
__25:
__26:
*(*Tuint32_t)(unsafe.Pointer(F + 56)) = libc.AssignPtrUint32(F+56+1*4, uint32(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode + 1)))<<8|int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode + 2)))))
*(*TPCRE2_SPTR8)(unsafe.Pointer(F)) += TPCRE2_SPTR8(1 + DIMM2_SIZE)
goto REPEATCHAR
__27:
__28:
reptype = REPTYPE_POS
*(*Tuint32_t)(unsafe.Pointer(F + 56)) = Tuint32_t(0)
*(*Tuint32_t)(unsafe.Pointer(F + 56 + 1*4)) = uint32(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode + 1)))<<8 | int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode + 2))))
*(*TPCRE2_SPTR8)(unsafe.Pointer(F)) += TPCRE2_SPTR8(1 + DIMM2_SIZE)
goto REPEATCHAR
__29:
__30:
reptype = REPTYPE_MAX
*(*Tuint32_t)(unsafe.Pointer(F + 56)) = Tuint32_t(0)
*(*Tuint32_t)(unsafe.Pointer(F + 56 + 1*4)) = uint32(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode + 1)))<<8 | int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode + 2))))
*(*TPCRE2_SPTR8)(unsafe.Pointer(F)) += TPCRE2_SPTR8(1 + DIMM2_SIZE)
goto REPEATCHAR
__31:
__32:
reptype = REPTYPE_MIN
*(*Tuint32_t)(unsafe.Pointer(F + 56)) = Tuint32_t(0)
*(*Tuint32_t)(unsafe.Pointer(F + 56 + 1*4)) = uint32(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode + 1)))<<8 | int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode + 2))))
*(*TPCRE2_SPTR8)(unsafe.Pointer(F)) += TPCRE2_SPTR8(1 + DIMM2_SIZE)
goto REPEATCHAR
__33:
__34:
reptype = REPTYPE_POS
*(*Tuint32_t)(unsafe.Pointer(F + 56)) = Tuint32_t(0)
*(*Tuint32_t)(unsafe.Pointer(F + 56 + 1*4)) = 4294967295
(*Theapframe)(unsafe.Pointer(F)).Fecode++
goto REPEATCHAR
__35:
__36:
reptype = REPTYPE_POS
*(*Tuint32_t)(unsafe.Pointer(F + 56)) = Tuint32_t(1)
*(*Tuint32_t)(unsafe.Pointer(F + 56 + 1*4)) = 4294967295
(*Theapframe)(unsafe.Pointer(F)).Fecode++
goto REPEATCHAR
__37:
__38:
reptype = REPTYPE_POS
*(*Tuint32_t)(unsafe.Pointer(F + 56)) = Tuint32_t(0)
*(*Tuint32_t)(unsafe.Pointer(F + 56 + 1*4)) = Tuint32_t(1)
(*Theapframe)(unsafe.Pointer(F)).Fecode++
goto REPEATCHAR
__39:
__40:
__41:
__42:
__43:
__44:
__45:
__46:
__47:
__48:
__49:
__50:
fc = Tuint32_t(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&(*Theapframe)(unsafe.Pointer(F)).Fecode, 1)))) - func() int32 {
if int32((*Theapframe)(unsafe.Pointer(F)).Fop) < OP_STARI {
return OP_STAR
}
return OP_STARI
}())
*(*Tuint32_t)(unsafe.Pointer(F + 56)) = rep_min[fc]
*(*Tuint32_t)(unsafe.Pointer(F + 56 + 1*4)) = rep_max[fc]
reptype = rep_typ[fc]
// Common code for all repeated single-character matches. We first check
// for the minimum number of characters. If the minimum equals the maximum, we
// are done. Otherwise, if minimizing, check the rest of the pattern for a
// match; if there isn't one, advance up to the maximum, one character at a
// time.
//
// If maximizing, advance up to the maximum number of matching characters,
// until Feptr is past the end of the maximum run. If possessive, we are
// then done (no backing up). Otherwise, match at this position; anything
// other than no match is immediately returned. For nomatch, back up one
// character, unless we are matching \R and the last thing matched was
// \r\n, in which case, back up two code units until we reach the first
// optional character position.
//
// The various UTF/non-UTF and caseful/caseless cases are handled separately,
// for speed.
REPEATCHAR:
if !(utf != 0) {
goto __291
}
(*Theapframe)(unsafe.Pointer(F)).Flength = uint64(1)
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 8 + 1*8)) = (*Theapframe)(unsafe.Pointer(F)).Fecode
fc = Tuint32_t(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode)))
if !(fc >= 0xc0) {
goto __293
}
if !(fc&0x20 == Tuint32_t(0)) {
goto __294
}
fc = fc&0x1f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode + 1)))&0x3f
(*Theapframe)(unsafe.Pointer(F)).Flength++
goto __295
__294:
if !(fc&0x10 == Tuint32_t(0)) {
goto __296
}
fc = fc&0x0f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode + 1)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode + 2)))&0x3f
*(*Tsize_t)(unsafe.Pointer(F + 24)) += uint64(2)
goto __297
__296:
if !(fc&0x08 == Tuint32_t(0)) {
goto __298
}
fc = fc&0x07<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode + 1)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode + 2)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode + 3)))&0x3f
*(*Tsize_t)(unsafe.Pointer(F + 24)) += uint64(3)
goto __299
__298:
if !(fc&0x04 == Tuint32_t(0)) {
goto __300
}
fc = fc&0x03<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode + 1)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode + 2)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode + 3)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode + 4)))&0x3f
*(*Tsize_t)(unsafe.Pointer(F + 24)) += uint64(4)
goto __301
__300:
fc = fc&0x01<<30 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode + 1)))&0x3f<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode + 2)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode + 3)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode + 4)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode + 5)))&0x3f
*(*Tsize_t)(unsafe.Pointer(F + 24)) += uint64(5)
__301:
;
__299:
;
__297:
;
__295:
;
__293:
;
*(*TPCRE2_SPTR8)(unsafe.Pointer(F)) += TPCRE2_SPTR8((*Theapframe)(unsafe.Pointer(F)).Flength)
// Handle multi-code-unit character matching, caseful and caseless.
if !((*Theapframe)(unsafe.Pointer(F)).Flength > uint64(1)) {
goto __302
}
if !(int32((*Theapframe)(unsafe.Pointer(F)).Fop) >= OP_STARI && libc.AssignUint32(&othercase, Tuint32_t(int32(fc)+(*Tucd_record)(unsafe.Pointer(uintptr(unsafe.Pointer(&X_pcre2_ucd_records_8))+uintptr(X_pcre2_ucd_stage2_8[int32(X_pcre2_ucd_stage1_8[int32(fc)/DUCD_BLOCK_SIZE])*DUCD_BLOCK_SIZE+int32(fc)%DUCD_BLOCK_SIZE])*12)).Fother_case)) != fc) {
goto __303
}
(*Theapframe)(unsafe.Pointer(F)).Ftemp_size = Tsize_t(X_pcre2_ord2utf_8(tls, othercase, F+74))
goto __304
__303:
(*Theapframe)(unsafe.Pointer(F)).Ftemp_size = uint64(0)
__304:
;
i = Tuint32_t(1)
__305:
if !(i <= *(*Tuint32_t)(unsafe.Pointer(F + 56))) {
goto __307
}
if !((*Theapframe)(unsafe.Pointer(F)).Feptr <= (*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject-uintptr((*Theapframe)(unsafe.Pointer(F)).Flength) && libc.Xmemcmp(tls, (*Theapframe)(unsafe.Pointer(F)).Feptr, *(*TPCRE2_SPTR8)(unsafe.Pointer(F + 8 + 1*8)), (*Theapframe)(unsafe.Pointer(F)).Flength*uint64(DPCRE2_CODE_UNIT_WIDTH/8)) == 0) {
goto __308
}
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += TPCRE2_SPTR8((*Theapframe)(unsafe.Pointer(F)).Flength)
goto __309
__308:
if !((*Theapframe)(unsafe.Pointer(F)).Ftemp_size > uint64(0) && (*Theapframe)(unsafe.Pointer(F)).Feptr <= (*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject-uintptr((*Theapframe)(unsafe.Pointer(F)).Ftemp_size) && libc.Xmemcmp(tls, (*Theapframe)(unsafe.Pointer(F)).Feptr, F+74, (*Theapframe)(unsafe.Pointer(F)).Ftemp_size*uint64(DPCRE2_CODE_UNIT_WIDTH/8)) == 0) {
goto __310
}
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += TPCRE2_SPTR8((*Theapframe)(unsafe.Pointer(F)).Ftemp_size)
goto __311
__310:
if !((*Theapframe)(unsafe.Pointer(F)).Feptr >= (*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject) {
goto __312
}
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) != 0 && ((*Theapframe)(unsafe.Pointer(F)).Feptr > (*Tmatch_block_8)(unsafe.Pointer(mb)).Fstart_used_ptr || (*Tmatch_block_8)(unsafe.Pointer(mb)).Fallowemptypartial != 0)) {
goto __313
}
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fhitend = DTRUE
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) > 1) {
goto __314
}
return -2
__314:
;
__313:
;
__312:
;
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__311:
;
__309:
;
goto __306
__306:
i++
goto __305
goto __307
__307:
;
if !(*(*Tuint32_t)(unsafe.Pointer(F + 56)) == *(*Tuint32_t)(unsafe.Pointer(F + 56 + 1*4))) {
goto __315
}
goto __11
__315:
;
if !(reptype == REPTYPE_MIN) {
goto __316
}
__318:
start_ecode = (*Theapframe)(unsafe.Pointer(F)).Fecode
(*Theapframe)(unsafe.Pointer(F)).Freturn_id = RM202
goto MATCH_RECURSE
L_RM202:
;
if !(rrc != DMATCH_NOMATCH) {
goto __321
}
rrc = rrc
goto RETURN_SWITCH
__321:
;
if !(libc.PostIncUint32(&*(*Tuint32_t)(unsafe.Pointer(F + 56)), 1) >= *(*Tuint32_t)(unsafe.Pointer(F + 56 + 1*4))) {
goto __322
}
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__322:
;
if !((*Theapframe)(unsafe.Pointer(F)).Feptr <= (*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject-uintptr((*Theapframe)(unsafe.Pointer(F)).Flength) && libc.Xmemcmp(tls, (*Theapframe)(unsafe.Pointer(F)).Feptr, *(*TPCRE2_SPTR8)(unsafe.Pointer(F + 8 + 1*8)), (*Theapframe)(unsafe.Pointer(F)).Flength*uint64(DPCRE2_CODE_UNIT_WIDTH/8)) == 0) {
goto __323
}
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += TPCRE2_SPTR8((*Theapframe)(unsafe.Pointer(F)).Flength)
goto __324
__323:
if !((*Theapframe)(unsafe.Pointer(F)).Ftemp_size > uint64(0) && (*Theapframe)(unsafe.Pointer(F)).Feptr <= (*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject-uintptr((*Theapframe)(unsafe.Pointer(F)).Ftemp_size) && libc.Xmemcmp(tls, (*Theapframe)(unsafe.Pointer(F)).Feptr, F+74, (*Theapframe)(unsafe.Pointer(F)).Ftemp_size*uint64(DPCRE2_CODE_UNIT_WIDTH/8)) == 0) {
goto __325
}
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += TPCRE2_SPTR8((*Theapframe)(unsafe.Pointer(F)).Ftemp_size)
goto __326
__325:
if !((*Theapframe)(unsafe.Pointer(F)).Feptr >= (*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject) {
goto __327
}
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) != 0 && ((*Theapframe)(unsafe.Pointer(F)).Feptr > (*Tmatch_block_8)(unsafe.Pointer(mb)).Fstart_used_ptr || (*Tmatch_block_8)(unsafe.Pointer(mb)).Fallowemptypartial != 0)) {
goto __328
}
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fhitend = DTRUE
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) > 1) {
goto __329
}
return -2
__329:
;
__328:
;
__327:
;
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__326:
;
__324:
;
goto __319
__319:
goto __318
goto __320
__320:
;
// Control never gets here
goto __317
__316: /* Maximize */
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 8)) = (*Theapframe)(unsafe.Pointer(F)).Feptr
i = *(*Tuint32_t)(unsafe.Pointer(F + 56))
__330:
if !(i < *(*Tuint32_t)(unsafe.Pointer(F + 56 + 1*4))) {
goto __332
}
if !((*Theapframe)(unsafe.Pointer(F)).Feptr <= (*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject-uintptr((*Theapframe)(unsafe.Pointer(F)).Flength) && libc.Xmemcmp(tls, (*Theapframe)(unsafe.Pointer(F)).Feptr, *(*TPCRE2_SPTR8)(unsafe.Pointer(F + 8 + 1*8)), (*Theapframe)(unsafe.Pointer(F)).Flength*uint64(DPCRE2_CODE_UNIT_WIDTH/8)) == 0) {
goto __333
}
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += TPCRE2_SPTR8((*Theapframe)(unsafe.Pointer(F)).Flength)
goto __334
__333:
if !((*Theapframe)(unsafe.Pointer(F)).Ftemp_size > uint64(0) && (*Theapframe)(unsafe.Pointer(F)).Feptr <= (*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject-uintptr((*Theapframe)(unsafe.Pointer(F)).Ftemp_size) && libc.Xmemcmp(tls, (*Theapframe)(unsafe.Pointer(F)).Feptr, F+74, (*Theapframe)(unsafe.Pointer(F)).Ftemp_size*uint64(DPCRE2_CODE_UNIT_WIDTH/8)) == 0) {
goto __335
}
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += TPCRE2_SPTR8((*Theapframe)(unsafe.Pointer(F)).Ftemp_size)
goto __336
__335:
if !((*Theapframe)(unsafe.Pointer(F)).Feptr >= (*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject) {
goto __337
}
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) != 0 && ((*Theapframe)(unsafe.Pointer(F)).Feptr > (*Tmatch_block_8)(unsafe.Pointer(mb)).Fstart_used_ptr || (*Tmatch_block_8)(unsafe.Pointer(mb)).Fallowemptypartial != 0)) {
goto __338
}
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fhitend = DTRUE
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) > 1) {
goto __339
}
return -2
__339:
;
__338:
;
__337:
;
goto __332
__336:
;
__334:
;
goto __331
__331:
i++
goto __330
goto __332
__332:
;
// After \C in UTF mode, Lstart_eptr might be in the middle of a
// Unicode character. Use <= Lstart_eptr to ensure backtracking doesn't
// go too far.
if !(reptype != REPTYPE_POS) {
goto __340
}
__341:
if !((*Theapframe)(unsafe.Pointer(F)).Feptr <= *(*TPCRE2_SPTR8)(unsafe.Pointer(F + 8))) {
goto __344
}
goto __343
__344:
;
start_ecode = (*Theapframe)(unsafe.Pointer(F)).Fecode
(*Theapframe)(unsafe.Pointer(F)).Freturn_id = RM203
goto MATCH_RECURSE
L_RM203:
;
if !(rrc != DMATCH_NOMATCH) {
goto __345
}
rrc = rrc
goto RETURN_SWITCH
__345:
;
(*Theapframe)(unsafe.Pointer(F)).Feptr--
__346:
if !(uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0xc0 == 0x80) {
goto __347
}
(*Theapframe)(unsafe.Pointer(F)).Feptr--
goto __346
__347:
;
goto __342
__342:
goto __341
goto __343
__343:
;
__340:
;
__317:
;
goto __13 // End of repeated wide character handling
__302:
;
// Length of UTF character is 1. Put it into the preserved variable and
// fall through to the non-UTF code.
*(*Tuint32_t)(unsafe.Pointer(F + 56 + 2*4)) = fc
goto __292
__291:
// When not in UTF mode, load a single-code-unit character. Then proceed as
// above, using Unicode casing if either UTF or UCP is set.
*(*Tuint32_t)(unsafe.Pointer(F + 56 + 2*4)) = Tuint32_t(*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&(*Theapframe)(unsafe.Pointer(F)).Fecode, 1))))
__292:
;
// Caseless comparison
if !(int32((*Theapframe)(unsafe.Pointer(F)).Fop) >= OP_STARI) {
goto __348
}
if !(ucp != 0 && !(utf != 0) && *(*Tuint32_t)(unsafe.Pointer(F + 56 + 2*4)) > Tuint32_t(127)) {
goto __350
}
*(*Tuint32_t)(unsafe.Pointer(F + 56 + 3*4)) = Tuint32_t(int32(*(*Tuint32_t)(unsafe.Pointer(F + 56 + 2*4))) + (*Tucd_record)(unsafe.Pointer(uintptr(unsafe.Pointer(&X_pcre2_ucd_records_8))+uintptr(X_pcre2_ucd_stage2_8[int32(X_pcre2_ucd_stage1_8[int32(*(*Tuint32_t)(unsafe.Pointer(F + 56 + 2*4)))/DUCD_BLOCK_SIZE])*DUCD_BLOCK_SIZE+int32(*(*Tuint32_t)(unsafe.Pointer(F + 56 + 2*4)))%DUCD_BLOCK_SIZE])*12)).Fother_case)
goto __351
__350:
// Lc will be < 128 in UTF-8 mode.
*(*Tuint32_t)(unsafe.Pointer(F + 56 + 3*4)) = Tuint32_t(*(*Tuint8_t)(unsafe.Pointer((*Tmatch_block_8)(unsafe.Pointer(mb)).Ffcc + uintptr(*(*Tuint32_t)(unsafe.Pointer(F + 56 + 2*4))))))
__351:
;
i = Tuint32_t(1)
__352:
if !(i <= *(*Tuint32_t)(unsafe.Pointer(F + 56))) {
goto __354
}
// Faster than PCRE2_UCHAR
if !((*Theapframe)(unsafe.Pointer(F)).Feptr >= (*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject) {
goto __355
}
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) != 0 && ((*Theapframe)(unsafe.Pointer(F)).Feptr > (*Tmatch_block_8)(unsafe.Pointer(mb)).Fstart_used_ptr || (*Tmatch_block_8)(unsafe.Pointer(mb)).Fallowemptypartial != 0)) {
goto __356
}
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fhitend = DTRUE
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) > 1) {
goto __357
}
return -2
__357:
;
__356:
;
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__355:
;
cc2 = Tuint32_t(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))
if !(*(*Tuint32_t)(unsafe.Pointer(F + 56 + 2*4)) != cc2 && *(*Tuint32_t)(unsafe.Pointer(F + 56 + 3*4)) != cc2) {
goto __358
}
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__358:
;
(*Theapframe)(unsafe.Pointer(F)).Feptr++
goto __353
__353:
i++
goto __352
goto __354
__354:
;
if !(*(*Tuint32_t)(unsafe.Pointer(F + 56)) == *(*Tuint32_t)(unsafe.Pointer(F + 56 + 1*4))) {
goto __359
}
goto __11
__359:
;
if !(reptype == REPTYPE_MIN) {
goto __360
}
__362:
/* Faster than PCRE2_UCHAR */
start_ecode = (*Theapframe)(unsafe.Pointer(F)).Fecode
(*Theapframe)(unsafe.Pointer(F)).Freturn_id = RM25
goto MATCH_RECURSE
L_RM25:
;
if !(rrc != DMATCH_NOMATCH) {
goto __365
}
rrc = rrc
goto RETURN_SWITCH
__365:
;
if !(libc.PostIncUint32(&*(*Tuint32_t)(unsafe.Pointer(F + 56)), 1) >= *(*Tuint32_t)(unsafe.Pointer(F + 56 + 1*4))) {
goto __366
}
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__366:
;
if !((*Theapframe)(unsafe.Pointer(F)).Feptr >= (*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject) {
goto __367
}
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) != 0 && ((*Theapframe)(unsafe.Pointer(F)).Feptr > (*Tmatch_block_8)(unsafe.Pointer(mb)).Fstart_used_ptr || (*Tmatch_block_8)(unsafe.Pointer(mb)).Fallowemptypartial != 0)) {
goto __368
}
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fhitend = DTRUE
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) > 1) {
goto __369
}
return -2
__369:
;
__368:
;
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__367:
;
cc3 = Tuint32_t(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))
if !(*(*Tuint32_t)(unsafe.Pointer(F + 56 + 2*4)) != cc3 && *(*Tuint32_t)(unsafe.Pointer(F + 56 + 3*4)) != cc3) {
goto __370
}
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__370:
;
(*Theapframe)(unsafe.Pointer(F)).Feptr++
goto __363
__363:
goto __362
goto __364
__364:
;
// Control never gets here
goto __361
__360: /* Maximize */
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 8)) = (*Theapframe)(unsafe.Pointer(F)).Feptr
i = *(*Tuint32_t)(unsafe.Pointer(F + 56))
__371:
if !(i < *(*Tuint32_t)(unsafe.Pointer(F + 56 + 1*4))) {
goto __373
}
// Faster than PCRE2_UCHAR
if !((*Theapframe)(unsafe.Pointer(F)).Feptr >= (*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject) {
goto __374
}
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) != 0 && ((*Theapframe)(unsafe.Pointer(F)).Feptr > (*Tmatch_block_8)(unsafe.Pointer(mb)).Fstart_used_ptr || (*Tmatch_block_8)(unsafe.Pointer(mb)).Fallowemptypartial != 0)) {
goto __375
}
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fhitend = DTRUE
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) > 1) {
goto __376
}
return -2
__376:
;
__375:
;
goto __373
__374:
;
cc4 = Tuint32_t(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))
if !(*(*Tuint32_t)(unsafe.Pointer(F + 56 + 2*4)) != cc4 && *(*Tuint32_t)(unsafe.Pointer(F + 56 + 3*4)) != cc4) {
goto __377
}
goto __373
__377:
;
(*Theapframe)(unsafe.Pointer(F)).Feptr++
goto __372
__372:
i++
goto __371
goto __373
__373:
;
if !(reptype != REPTYPE_POS) {
goto __378
}
__379:
if !((*Theapframe)(unsafe.Pointer(F)).Feptr == *(*TPCRE2_SPTR8)(unsafe.Pointer(F + 8))) {
goto __382
}
goto __381
__382:
;
start_ecode = (*Theapframe)(unsafe.Pointer(F)).Fecode
(*Theapframe)(unsafe.Pointer(F)).Freturn_id = RM26
goto MATCH_RECURSE
L_RM26:
;
(*Theapframe)(unsafe.Pointer(F)).Feptr--
if !(rrc != DMATCH_NOMATCH) {
goto __383
}
rrc = rrc
goto RETURN_SWITCH
__383:
;
goto __380
__380:
goto __379
goto __381
__381:
;
__378:
;
__361:
;
goto __349
__348:
i = Tuint32_t(1)
__384:
if !(i <= *(*Tuint32_t)(unsafe.Pointer(F + 56))) {
goto __386
}
if !((*Theapframe)(unsafe.Pointer(F)).Feptr >= (*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject) {
goto __387
}
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) != 0 && ((*Theapframe)(unsafe.Pointer(F)).Feptr > (*Tmatch_block_8)(unsafe.Pointer(mb)).Fstart_used_ptr || (*Tmatch_block_8)(unsafe.Pointer(mb)).Fallowemptypartial != 0)) {
goto __388
}
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fhitend = DTRUE
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) > 1) {
goto __389
}
return -2
__389:
;
__388:
;
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__387:
;
if !(*(*Tuint32_t)(unsafe.Pointer(F + 56 + 2*4)) != Tuint32_t(*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&(*Theapframe)(unsafe.Pointer(F)).Feptr, 1))))) {
goto __390
}
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__390:
;
goto __385
__385:
i++
goto __384
goto __386
__386:
;
if !(*(*Tuint32_t)(unsafe.Pointer(F + 56)) == *(*Tuint32_t)(unsafe.Pointer(F + 56 + 1*4))) {
goto __391
}
goto __11
__391:
;
if !(reptype == REPTYPE_MIN) {
goto __392
}
__394:
start_ecode = (*Theapframe)(unsafe.Pointer(F)).Fecode
(*Theapframe)(unsafe.Pointer(F)).Freturn_id = RM27
goto MATCH_RECURSE
L_RM27:
;
if !(rrc != DMATCH_NOMATCH) {
goto __397
}
rrc = rrc
goto RETURN_SWITCH
__397:
;
if !(libc.PostIncUint32(&*(*Tuint32_t)(unsafe.Pointer(F + 56)), 1) >= *(*Tuint32_t)(unsafe.Pointer(F + 56 + 1*4))) {
goto __398
}
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__398:
;
if !((*Theapframe)(unsafe.Pointer(F)).Feptr >= (*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject) {
goto __399
}
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) != 0 && ((*Theapframe)(unsafe.Pointer(F)).Feptr > (*Tmatch_block_8)(unsafe.Pointer(mb)).Fstart_used_ptr || (*Tmatch_block_8)(unsafe.Pointer(mb)).Fallowemptypartial != 0)) {
goto __400
}
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fhitend = DTRUE
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) > 1) {
goto __401
}
return -2
__401:
;
__400:
;
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__399:
;
if !(*(*Tuint32_t)(unsafe.Pointer(F + 56 + 2*4)) != Tuint32_t(*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&(*Theapframe)(unsafe.Pointer(F)).Feptr, 1))))) {
goto __402
}
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__402:
;
goto __395
__395:
goto __394
goto __396
__396:
;
// Control never gets here
goto __393
__392: /* Maximize */
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 8)) = (*Theapframe)(unsafe.Pointer(F)).Feptr
i = *(*Tuint32_t)(unsafe.Pointer(F + 56))
__403:
if !(i < *(*Tuint32_t)(unsafe.Pointer(F + 56 + 1*4))) {
goto __405
}
if !((*Theapframe)(unsafe.Pointer(F)).Feptr >= (*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject) {
goto __406
}
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) != 0 && ((*Theapframe)(unsafe.Pointer(F)).Feptr > (*Tmatch_block_8)(unsafe.Pointer(mb)).Fstart_used_ptr || (*Tmatch_block_8)(unsafe.Pointer(mb)).Fallowemptypartial != 0)) {
goto __407
}
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fhitend = DTRUE
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) > 1) {
goto __408
}
return -2
__408:
;
__407:
;
goto __405
__406:
;
if !(*(*Tuint32_t)(unsafe.Pointer(F + 56 + 2*4)) != Tuint32_t(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))) {
goto __409
}
goto __405
__409:
;
(*Theapframe)(unsafe.Pointer(F)).Feptr++
goto __404
__404:
i++
goto __403
goto __405
__405:
;
if !(reptype != REPTYPE_POS) {
goto __410
}
__411:
if !((*Theapframe)(unsafe.Pointer(F)).Feptr <= *(*TPCRE2_SPTR8)(unsafe.Pointer(F + 8))) {
goto __414
}
goto __413
__414:
;
start_ecode = (*Theapframe)(unsafe.Pointer(F)).Fecode
(*Theapframe)(unsafe.Pointer(F)).Freturn_id = RM28
goto MATCH_RECURSE
L_RM28:
;
(*Theapframe)(unsafe.Pointer(F)).Feptr--
if !(rrc != DMATCH_NOMATCH) {
goto __415
}
rrc = rrc
goto RETURN_SWITCH
__415:
;
goto __412
__412:
goto __411
goto __413
__413:
;
__410:
;
__393:
;
__349:
;
goto __13
// =====================================================================
// Match a negated single one-byte character repeatedly. This is almost a
// repeat of the code for a repeated single character, but I haven't found a
// nice way of commoning these up that doesn't require a test of the
// positive/negative option for each character match. Maybe that wouldn't add
// very much to the time taken, but character matching *is* what this is all
// about...
__51:
__52:
*(*Tuint32_t)(unsafe.Pointer(F + 56)) = libc.AssignPtrUint32(F+56+1*4, uint32(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode + 1)))<<8|int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode + 2)))))
*(*TPCRE2_SPTR8)(unsafe.Pointer(F)) += TPCRE2_SPTR8(1 + DIMM2_SIZE)
goto REPEATNOTCHAR
__53:
__54:
*(*Tuint32_t)(unsafe.Pointer(F + 56)) = Tuint32_t(0)
*(*Tuint32_t)(unsafe.Pointer(F + 56 + 1*4)) = uint32(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode + 1)))<<8 | int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode + 2))))
reptype = REPTYPE_MAX
*(*TPCRE2_SPTR8)(unsafe.Pointer(F)) += TPCRE2_SPTR8(1 + DIMM2_SIZE)
goto REPEATNOTCHAR
__55:
__56:
*(*Tuint32_t)(unsafe.Pointer(F + 56)) = Tuint32_t(0)
*(*Tuint32_t)(unsafe.Pointer(F + 56 + 1*4)) = uint32(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode + 1)))<<8 | int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode + 2))))
reptype = REPTYPE_MIN
*(*TPCRE2_SPTR8)(unsafe.Pointer(F)) += TPCRE2_SPTR8(1 + DIMM2_SIZE)
goto REPEATNOTCHAR
__57:
__58:
reptype = REPTYPE_POS
*(*Tuint32_t)(unsafe.Pointer(F + 56)) = Tuint32_t(0)
*(*Tuint32_t)(unsafe.Pointer(F + 56 + 1*4)) = 4294967295
(*Theapframe)(unsafe.Pointer(F)).Fecode++
goto REPEATNOTCHAR
__59:
__60:
reptype = REPTYPE_POS
*(*Tuint32_t)(unsafe.Pointer(F + 56)) = Tuint32_t(1)
*(*Tuint32_t)(unsafe.Pointer(F + 56 + 1*4)) = 4294967295
(*Theapframe)(unsafe.Pointer(F)).Fecode++
goto REPEATNOTCHAR
__61:
__62:
reptype = REPTYPE_POS
*(*Tuint32_t)(unsafe.Pointer(F + 56)) = Tuint32_t(0)
*(*Tuint32_t)(unsafe.Pointer(F + 56 + 1*4)) = Tuint32_t(1)
(*Theapframe)(unsafe.Pointer(F)).Fecode++
goto REPEATNOTCHAR
__63:
__64:
reptype = REPTYPE_POS
*(*Tuint32_t)(unsafe.Pointer(F + 56)) = Tuint32_t(0)
*(*Tuint32_t)(unsafe.Pointer(F + 56 + 1*4)) = uint32(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode + 1)))<<8 | int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode + 2))))
*(*TPCRE2_SPTR8)(unsafe.Pointer(F)) += TPCRE2_SPTR8(1 + DIMM2_SIZE)
goto REPEATNOTCHAR
__65:
__66:
__67:
__68:
__69:
__70:
__71:
__72:
__73:
__74:
__75:
__76:
fc = Tuint32_t(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&(*Theapframe)(unsafe.Pointer(F)).Fecode, 1)))) - func() int32 {
if int32((*Theapframe)(unsafe.Pointer(F)).Fop) >= OP_NOTSTARI {
return OP_NOTSTARI
}
return OP_NOTSTAR
}())
*(*Tuint32_t)(unsafe.Pointer(F + 56)) = rep_min[fc]
*(*Tuint32_t)(unsafe.Pointer(F + 56 + 1*4)) = rep_max[fc]
reptype = rep_typ[fc]
// Common code for all repeated single-character non-matches.
REPEATNOTCHAR:
*(*Tuint32_t)(unsafe.Pointer(F + 56 + 2*4)) = Tuint32_t(*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&(*Theapframe)(unsafe.Pointer(F)).Fecode, 1))))
if !(utf != 0 && *(*Tuint32_t)(unsafe.Pointer(F + 56 + 2*4)) >= 0xc0) {
goto __416
}
if !(*(*Tuint32_t)(unsafe.Pointer(F + 56 + 2*4))&0x20 == Tuint32_t(0)) {
goto __417
}
*(*Tuint32_t)(unsafe.Pointer(F + 56 + 2*4)) = *(*Tuint32_t)(unsafe.Pointer(F + 56 + 2*4))&0x1f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&(*Theapframe)(unsafe.Pointer(F)).Fecode, 1))))&0x3f
goto __418
__417:
if !(*(*Tuint32_t)(unsafe.Pointer(F + 56 + 2*4))&0x10 == Tuint32_t(0)) {
goto __419
}
*(*Tuint32_t)(unsafe.Pointer(F + 56 + 2*4)) = *(*Tuint32_t)(unsafe.Pointer(F + 56 + 2*4))&0x0f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode + 1)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(F)) += uintptr(2)
goto __420
__419:
if !(*(*Tuint32_t)(unsafe.Pointer(F + 56 + 2*4))&0x08 == Tuint32_t(0)) {
goto __421
}
*(*Tuint32_t)(unsafe.Pointer(F + 56 + 2*4)) = *(*Tuint32_t)(unsafe.Pointer(F + 56 + 2*4))&0x07<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode + 1)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode + 2)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(F)) += uintptr(3)
goto __422
__421:
if !(*(*Tuint32_t)(unsafe.Pointer(F + 56 + 2*4))&0x04 == Tuint32_t(0)) {
goto __423
}
*(*Tuint32_t)(unsafe.Pointer(F + 56 + 2*4)) = *(*Tuint32_t)(unsafe.Pointer(F + 56 + 2*4))&0x03<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode + 1)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode + 2)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode + 3)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(F)) += uintptr(4)
goto __424
__423:
*(*Tuint32_t)(unsafe.Pointer(F + 56 + 2*4)) = *(*Tuint32_t)(unsafe.Pointer(F + 56 + 2*4))&0x01<<30 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode)))&0x3f<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode + 1)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode + 2)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode + 3)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode + 4)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(F)) += uintptr(5)
__424:
;
__422:
;
__420:
;
__418:
;
__416:
;
// The code is duplicated for the caseless and caseful cases, for speed,
// since matching characters is likely to be quite common. First, ensure the
// minimum number of matches are present. If Lmin = Lmax, we are done.
// Otherwise, if minimizing, keep trying the rest of the expression and
// advancing one matching character if failing, up to the maximum.
// Alternatively, if maximizing, find the maximum number of characters and
// work backwards.
if !(int32((*Theapframe)(unsafe.Pointer(F)).Fop) >= OP_NOTSTARI) {
goto __425
} /* Caseless */
if !((utf != 0 || ucp != 0) && *(*Tuint32_t)(unsafe.Pointer(F + 56 + 2*4)) > Tuint32_t(127)) {
goto __427
}
*(*Tuint32_t)(unsafe.Pointer(F + 56 + 3*4)) = Tuint32_t(int32(*(*Tuint32_t)(unsafe.Pointer(F + 56 + 2*4))) + (*Tucd_record)(unsafe.Pointer(uintptr(unsafe.Pointer(&X_pcre2_ucd_records_8))+uintptr(X_pcre2_ucd_stage2_8[int32(X_pcre2_ucd_stage1_8[int32(*(*Tuint32_t)(unsafe.Pointer(F + 56 + 2*4)))/DUCD_BLOCK_SIZE])*DUCD_BLOCK_SIZE+int32(*(*Tuint32_t)(unsafe.Pointer(F + 56 + 2*4)))%DUCD_BLOCK_SIZE])*12)).Fother_case)
goto __428
__427:
*(*Tuint32_t)(unsafe.Pointer(F + 56 + 3*4)) = Tuint32_t(*(*Tuint8_t)(unsafe.Pointer((*Tmatch_block_8)(unsafe.Pointer(mb)).Ffcc + uintptr(*(*Tuint32_t)(unsafe.Pointer(F + 56 + 2*4))))))
__428:
; // Other case from table
if !(utf != 0) {
goto __429
}
i = Tuint32_t(1)
__431:
if !(i <= *(*Tuint32_t)(unsafe.Pointer(F + 56))) {
goto __433
}
if !((*Theapframe)(unsafe.Pointer(F)).Feptr >= (*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject) {
goto __434
}
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) != 0 && ((*Theapframe)(unsafe.Pointer(F)).Feptr > (*Tmatch_block_8)(unsafe.Pointer(mb)).Fstart_used_ptr || (*Tmatch_block_8)(unsafe.Pointer(mb)).Fallowemptypartial != 0)) {
goto __435
}
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fhitend = DTRUE
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) > 1) {
goto __436
}
return -2
__436:
;
__435:
;
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__434:
;
d = Tuint32_t(*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&(*Theapframe)(unsafe.Pointer(F)).Feptr, 1))))
if !(d >= 0xc0) {
goto __437
}
if !(d&0x20 == Tuint32_t(0)) {
goto __438
}
d = d&0x1f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&(*Theapframe)(unsafe.Pointer(F)).Feptr, 1))))&0x3f
goto __439
__438:
if !(d&0x10 == Tuint32_t(0)) {
goto __440
}
d = d&0x0f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += uintptr(2)
goto __441
__440:
if !(d&0x08 == Tuint32_t(0)) {
goto __442
}
d = d&0x07<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += uintptr(3)
goto __443
__442:
if !(d&0x04 == Tuint32_t(0)) {
goto __444
}
d = d&0x03<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 3)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += uintptr(4)
goto __445
__444:
d = d&0x01<<30 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0x3f<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 3)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 4)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += uintptr(5)
__445:
;
__443:
;
__441:
;
__439:
;
__437:
;
if !(*(*Tuint32_t)(unsafe.Pointer(F + 56 + 2*4)) == d || *(*Tuint32_t)(unsafe.Pointer(F + 56 + 3*4)) == d) {
goto __446
}
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__446:
;
goto __432
__432:
i++
goto __431
goto __433
__433:
;
goto __430
__429:
/* Not UTF mode */
i = Tuint32_t(1)
__447:
if !(i <= *(*Tuint32_t)(unsafe.Pointer(F + 56))) {
goto __449
}
if !((*Theapframe)(unsafe.Pointer(F)).Feptr >= (*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject) {
goto __450
}
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) != 0 && ((*Theapframe)(unsafe.Pointer(F)).Feptr > (*Tmatch_block_8)(unsafe.Pointer(mb)).Fstart_used_ptr || (*Tmatch_block_8)(unsafe.Pointer(mb)).Fallowemptypartial != 0)) {
goto __451
}
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fhitend = DTRUE
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) > 1) {
goto __452
}
return -2
__452:
;
__451:
;
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__450:
;
if !(*(*Tuint32_t)(unsafe.Pointer(F + 56 + 2*4)) == Tuint32_t(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr))) || *(*Tuint32_t)(unsafe.Pointer(F + 56 + 3*4)) == Tuint32_t(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))) {
goto __453
}
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__453:
;
(*Theapframe)(unsafe.Pointer(F)).Feptr++
goto __448
__448:
i++
goto __447
goto __449
__449:
;
__430:
;
if !(*(*Tuint32_t)(unsafe.Pointer(F + 56)) == *(*Tuint32_t)(unsafe.Pointer(F + 56 + 1*4))) {
goto __454
}
goto __11
__454:
; // Finished for exact count
if !(reptype == REPTYPE_MIN) {
goto __455
}
if !(utf != 0) {
goto __457
}
__459:
start_ecode = (*Theapframe)(unsafe.Pointer(F)).Fecode
(*Theapframe)(unsafe.Pointer(F)).Freturn_id = RM204
goto MATCH_RECURSE
L_RM204:
;
if !(rrc != DMATCH_NOMATCH) {
goto __462
}
rrc = rrc
goto RETURN_SWITCH
__462:
;
if !(libc.PostIncUint32(&*(*Tuint32_t)(unsafe.Pointer(F + 56)), 1) >= *(*Tuint32_t)(unsafe.Pointer(F + 56 + 1*4))) {
goto __463
}
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__463:
;
if !((*Theapframe)(unsafe.Pointer(F)).Feptr >= (*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject) {
goto __464
}
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) != 0 && ((*Theapframe)(unsafe.Pointer(F)).Feptr > (*Tmatch_block_8)(unsafe.Pointer(mb)).Fstart_used_ptr || (*Tmatch_block_8)(unsafe.Pointer(mb)).Fallowemptypartial != 0)) {
goto __465
}
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fhitend = DTRUE
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) > 1) {
goto __466
}
return -2
__466:
;
__465:
;
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__464:
;
d1 = Tuint32_t(*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&(*Theapframe)(unsafe.Pointer(F)).Feptr, 1))))
if !(d1 >= 0xc0) {
goto __467
}
if !(d1&0x20 == Tuint32_t(0)) {
goto __468
}
d1 = d1&0x1f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&(*Theapframe)(unsafe.Pointer(F)).Feptr, 1))))&0x3f
goto __469
__468:
if !(d1&0x10 == Tuint32_t(0)) {
goto __470
}
d1 = d1&0x0f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += uintptr(2)
goto __471
__470:
if !(d1&0x08 == Tuint32_t(0)) {
goto __472
}
d1 = d1&0x07<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += uintptr(3)
goto __473
__472:
if !(d1&0x04 == Tuint32_t(0)) {
goto __474
}
d1 = d1&0x03<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 3)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += uintptr(4)
goto __475
__474:
d1 = d1&0x01<<30 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0x3f<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 3)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 4)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += uintptr(5)
__475:
;
__473:
;
__471:
;
__469:
;
__467:
;
if !(*(*Tuint32_t)(unsafe.Pointer(F + 56 + 2*4)) == d1 || *(*Tuint32_t)(unsafe.Pointer(F + 56 + 3*4)) == d1) {
goto __476
}
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__476:
;
goto __460
__460:
goto __459
goto __461
__461:
;
goto __458
__457:
/* Not UTF mode */
__477:
start_ecode = (*Theapframe)(unsafe.Pointer(F)).Fecode
(*Theapframe)(unsafe.Pointer(F)).Freturn_id = RM29
goto MATCH_RECURSE
L_RM29:
;
if !(rrc != DMATCH_NOMATCH) {
goto __480
}
rrc = rrc
goto RETURN_SWITCH
__480:
;
if !(libc.PostIncUint32(&*(*Tuint32_t)(unsafe.Pointer(F + 56)), 1) >= *(*Tuint32_t)(unsafe.Pointer(F + 56 + 1*4))) {
goto __481
}
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__481:
;
if !((*Theapframe)(unsafe.Pointer(F)).Feptr >= (*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject) {
goto __482
}
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) != 0 && ((*Theapframe)(unsafe.Pointer(F)).Feptr > (*Tmatch_block_8)(unsafe.Pointer(mb)).Fstart_used_ptr || (*Tmatch_block_8)(unsafe.Pointer(mb)).Fallowemptypartial != 0)) {
goto __483
}
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fhitend = DTRUE
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) > 1) {
goto __484
}
return -2
__484:
;
__483:
;
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__482:
;
if !(*(*Tuint32_t)(unsafe.Pointer(F + 56 + 2*4)) == Tuint32_t(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr))) || *(*Tuint32_t)(unsafe.Pointer(F + 56 + 3*4)) == Tuint32_t(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))) {
goto __485
}
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__485:
;
(*Theapframe)(unsafe.Pointer(F)).Feptr++
goto __478
__478:
goto __477
goto __479
__479:
;
__458:
;
// Control never gets here
goto __456
__455:
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 8)) = (*Theapframe)(unsafe.Pointer(F)).Feptr
if !(utf != 0) {
goto __486
}
i = *(*Tuint32_t)(unsafe.Pointer(F + 56))
__488:
if !(i < *(*Tuint32_t)(unsafe.Pointer(F + 56 + 1*4))) {
goto __490
}
len = 1
if !((*Theapframe)(unsafe.Pointer(F)).Feptr >= (*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject) {
goto __491
}
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) != 0 && ((*Theapframe)(unsafe.Pointer(F)).Feptr > (*Tmatch_block_8)(unsafe.Pointer(mb)).Fstart_used_ptr || (*Tmatch_block_8)(unsafe.Pointer(mb)).Fallowemptypartial != 0)) {
goto __492
}
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fhitend = DTRUE
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) > 1) {
goto __493
}
return -2
__493:
;
__492:
;
goto __490
__491:
;
d2 = Tuint32_t(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))
if !(d2 >= 0xc0) {
goto __494
}
if !(d2&0x20 == Tuint32_t(0)) {
goto __495
}
d2 = d2&0x1f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f
len++
goto __496
__495:
if !(d2&0x10 == Tuint32_t(0)) {
goto __497
}
d2 = d2&0x0f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f
len = len + 2
goto __498
__497:
if !(d2&0x08 == Tuint32_t(0)) {
goto __499
}
d2 = d2&0x07<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 3)))&0x3f
len = len + 3
goto __500
__499:
if !(d2&0x04 == Tuint32_t(0)) {
goto __501
}
d2 = d2&0x03<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 3)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 4)))&0x3f
len = len + 4
goto __502
__501:
d2 = d2&0x01<<30 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 3)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 4)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 5)))&0x3f
len = len + 5
__502:
;
__500:
;
__498:
;
__496:
;
__494:
;
if !(*(*Tuint32_t)(unsafe.Pointer(F + 56 + 2*4)) == d2 || *(*Tuint32_t)(unsafe.Pointer(F + 56 + 3*4)) == d2) {
goto __503
}
goto __490
__503:
;
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += TPCRE2_SPTR8(len)
goto __489
__489:
i++
goto __488
goto __490
__490:
;
// After \C in UTF mode, Lstart_eptr might be in the middle of a
// Unicode character. Use <= Lstart_eptr to ensure backtracking doesn't
// go too far.
if !(reptype != REPTYPE_POS) {
goto __504
}
__505:
if !((*Theapframe)(unsafe.Pointer(F)).Feptr <= *(*TPCRE2_SPTR8)(unsafe.Pointer(F + 8))) {
goto __508
}
goto __507
__508:
;
start_ecode = (*Theapframe)(unsafe.Pointer(F)).Fecode
(*Theapframe)(unsafe.Pointer(F)).Freturn_id = RM205
goto MATCH_RECURSE
L_RM205:
;
if !(rrc != DMATCH_NOMATCH) {
goto __509
}
rrc = rrc
goto RETURN_SWITCH
__509:
;
(*Theapframe)(unsafe.Pointer(F)).Feptr--
__510:
if !(uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0xc0 == 0x80) {
goto __511
}
(*Theapframe)(unsafe.Pointer(F)).Feptr--
goto __510
__511:
;
goto __506
__506:
goto __505
goto __507
__507:
;
__504:
;
goto __487
__486:
/* Not UTF mode */
i = *(*Tuint32_t)(unsafe.Pointer(F + 56))
__512:
if !(i < *(*Tuint32_t)(unsafe.Pointer(F + 56 + 1*4))) {
goto __514
}
if !((*Theapframe)(unsafe.Pointer(F)).Feptr >= (*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject) {
goto __515
}
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) != 0 && ((*Theapframe)(unsafe.Pointer(F)).Feptr > (*Tmatch_block_8)(unsafe.Pointer(mb)).Fstart_used_ptr || (*Tmatch_block_8)(unsafe.Pointer(mb)).Fallowemptypartial != 0)) {
goto __516
}
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fhitend = DTRUE
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) > 1) {
goto __517
}
return -2
__517:
;
__516:
;
goto __514
__515:
;
if !(*(*Tuint32_t)(unsafe.Pointer(F + 56 + 2*4)) == Tuint32_t(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr))) || *(*Tuint32_t)(unsafe.Pointer(F + 56 + 3*4)) == Tuint32_t(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))) {
goto __518
}
goto __514
__518:
;
(*Theapframe)(unsafe.Pointer(F)).Feptr++
goto __513
__513:
i++
goto __512
goto __514
__514:
;
if !(reptype != REPTYPE_POS) {
goto __519
}
__520:
if !((*Theapframe)(unsafe.Pointer(F)).Feptr == *(*TPCRE2_SPTR8)(unsafe.Pointer(F + 8))) {
goto __523
}
goto __522
__523:
;
start_ecode = (*Theapframe)(unsafe.Pointer(F)).Fecode
(*Theapframe)(unsafe.Pointer(F)).Freturn_id = RM30
goto MATCH_RECURSE
L_RM30:
;
if !(rrc != DMATCH_NOMATCH) {
goto __524
}
rrc = rrc
goto RETURN_SWITCH
__524:
;
(*Theapframe)(unsafe.Pointer(F)).Feptr--
goto __521
__521:
goto __520
goto __522
__522:
;
__519:
;
__487:
;
__456:
;
goto __426
__425:
if !(utf != 0) {
goto __525
}
i = Tuint32_t(1)
__527:
if !(i <= *(*Tuint32_t)(unsafe.Pointer(F + 56))) {
goto __529
}
if !((*Theapframe)(unsafe.Pointer(F)).Feptr >= (*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject) {
goto __530
}
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) != 0 && ((*Theapframe)(unsafe.Pointer(F)).Feptr > (*Tmatch_block_8)(unsafe.Pointer(mb)).Fstart_used_ptr || (*Tmatch_block_8)(unsafe.Pointer(mb)).Fallowemptypartial != 0)) {
goto __531
}
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fhitend = DTRUE
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) > 1) {
goto __532
}
return -2
__532:
;
__531:
;
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__530:
;
d3 = Tuint32_t(*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&(*Theapframe)(unsafe.Pointer(F)).Feptr, 1))))
if !(d3 >= 0xc0) {
goto __533
}
if !(d3&0x20 == Tuint32_t(0)) {
goto __534
}
d3 = d3&0x1f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&(*Theapframe)(unsafe.Pointer(F)).Feptr, 1))))&0x3f
goto __535
__534:
if !(d3&0x10 == Tuint32_t(0)) {
goto __536
}
d3 = d3&0x0f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += uintptr(2)
goto __537
__536:
if !(d3&0x08 == Tuint32_t(0)) {
goto __538
}
d3 = d3&0x07<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += uintptr(3)
goto __539
__538:
if !(d3&0x04 == Tuint32_t(0)) {
goto __540
}
d3 = d3&0x03<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 3)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += uintptr(4)
goto __541
__540:
d3 = d3&0x01<<30 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0x3f<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 3)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 4)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += uintptr(5)
__541:
;
__539:
;
__537:
;
__535:
;
__533:
;
if !(*(*Tuint32_t)(unsafe.Pointer(F + 56 + 2*4)) == d3) {
goto __542
}
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__542:
;
goto __528
__528:
i++
goto __527
goto __529
__529:
;
goto __526
__525:
/* Not UTF mode */
i = Tuint32_t(1)
__543:
if !(i <= *(*Tuint32_t)(unsafe.Pointer(F + 56))) {
goto __545
}
if !((*Theapframe)(unsafe.Pointer(F)).Feptr >= (*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject) {
goto __546
}
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) != 0 && ((*Theapframe)(unsafe.Pointer(F)).Feptr > (*Tmatch_block_8)(unsafe.Pointer(mb)).Fstart_used_ptr || (*Tmatch_block_8)(unsafe.Pointer(mb)).Fallowemptypartial != 0)) {
goto __547
}
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fhitend = DTRUE
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) > 1) {
goto __548
}
return -2
__548:
;
__547:
;
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__546:
;
if !(*(*Tuint32_t)(unsafe.Pointer(F + 56 + 2*4)) == Tuint32_t(*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&(*Theapframe)(unsafe.Pointer(F)).Feptr, 1))))) {
goto __549
}
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__549:
;
goto __544
__544:
i++
goto __543
goto __545
__545:
;
__526:
;
if !(*(*Tuint32_t)(unsafe.Pointer(F + 56)) == *(*Tuint32_t)(unsafe.Pointer(F + 56 + 1*4))) {
goto __550
}
goto __11
__550:
;
if !(reptype == REPTYPE_MIN) {
goto __551
}
if !(utf != 0) {
goto __553
}
__555:
start_ecode = (*Theapframe)(unsafe.Pointer(F)).Fecode
(*Theapframe)(unsafe.Pointer(F)).Freturn_id = RM206
goto MATCH_RECURSE
L_RM206:
;
if !(rrc != DMATCH_NOMATCH) {
goto __558
}
rrc = rrc
goto RETURN_SWITCH
__558:
;
if !(libc.PostIncUint32(&*(*Tuint32_t)(unsafe.Pointer(F + 56)), 1) >= *(*Tuint32_t)(unsafe.Pointer(F + 56 + 1*4))) {
goto __559
}
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__559:
;
if !((*Theapframe)(unsafe.Pointer(F)).Feptr >= (*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject) {
goto __560
}
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) != 0 && ((*Theapframe)(unsafe.Pointer(F)).Feptr > (*Tmatch_block_8)(unsafe.Pointer(mb)).Fstart_used_ptr || (*Tmatch_block_8)(unsafe.Pointer(mb)).Fallowemptypartial != 0)) {
goto __561
}
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fhitend = DTRUE
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) > 1) {
goto __562
}
return -2
__562:
;
__561:
;
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__560:
;
d4 = Tuint32_t(*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&(*Theapframe)(unsafe.Pointer(F)).Feptr, 1))))
if !(d4 >= 0xc0) {
goto __563
}
if !(d4&0x20 == Tuint32_t(0)) {
goto __564
}
d4 = d4&0x1f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&(*Theapframe)(unsafe.Pointer(F)).Feptr, 1))))&0x3f
goto __565
__564:
if !(d4&0x10 == Tuint32_t(0)) {
goto __566
}
d4 = d4&0x0f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += uintptr(2)
goto __567
__566:
if !(d4&0x08 == Tuint32_t(0)) {
goto __568
}
d4 = d4&0x07<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += uintptr(3)
goto __569
__568:
if !(d4&0x04 == Tuint32_t(0)) {
goto __570
}
d4 = d4&0x03<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 3)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += uintptr(4)
goto __571
__570:
d4 = d4&0x01<<30 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0x3f<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 3)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 4)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += uintptr(5)
__571:
;
__569:
;
__567:
;
__565:
;
__563:
;
if !(*(*Tuint32_t)(unsafe.Pointer(F + 56 + 2*4)) == d4) {
goto __572
}
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__572:
;
goto __556
__556:
goto __555
goto __557
__557:
;
goto __554
__553:
/* Not UTF mode */
__573:
start_ecode = (*Theapframe)(unsafe.Pointer(F)).Fecode
(*Theapframe)(unsafe.Pointer(F)).Freturn_id = RM31
goto MATCH_RECURSE
L_RM31:
;
if !(rrc != DMATCH_NOMATCH) {
goto __576
}
rrc = rrc
goto RETURN_SWITCH
__576:
;
if !(libc.PostIncUint32(&*(*Tuint32_t)(unsafe.Pointer(F + 56)), 1) >= *(*Tuint32_t)(unsafe.Pointer(F + 56 + 1*4))) {
goto __577
}
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__577:
;
if !((*Theapframe)(unsafe.Pointer(F)).Feptr >= (*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject) {
goto __578
}
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) != 0 && ((*Theapframe)(unsafe.Pointer(F)).Feptr > (*Tmatch_block_8)(unsafe.Pointer(mb)).Fstart_used_ptr || (*Tmatch_block_8)(unsafe.Pointer(mb)).Fallowemptypartial != 0)) {
goto __579
}
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fhitend = DTRUE
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) > 1) {
goto __580
}
return -2
__580:
;
__579:
;
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__578:
;
if !(*(*Tuint32_t)(unsafe.Pointer(F + 56 + 2*4)) == Tuint32_t(*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&(*Theapframe)(unsafe.Pointer(F)).Feptr, 1))))) {
goto __581
}
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__581:
;
goto __574
__574:
goto __573
goto __575
__575:
;
__554:
;
// Control never gets here
goto __552
__551:
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 8)) = (*Theapframe)(unsafe.Pointer(F)).Feptr
if !(utf != 0) {
goto __582
}
i = *(*Tuint32_t)(unsafe.Pointer(F + 56))
__584:
if !(i < *(*Tuint32_t)(unsafe.Pointer(F + 56 + 1*4))) {
goto __586
}
len1 = 1
if !((*Theapframe)(unsafe.Pointer(F)).Feptr >= (*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject) {
goto __587
}
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) != 0 && ((*Theapframe)(unsafe.Pointer(F)).Feptr > (*Tmatch_block_8)(unsafe.Pointer(mb)).Fstart_used_ptr || (*Tmatch_block_8)(unsafe.Pointer(mb)).Fallowemptypartial != 0)) {
goto __588
}
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fhitend = DTRUE
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) > 1) {
goto __589
}
return -2
__589:
;
__588:
;
goto __586
__587:
;
d5 = Tuint32_t(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))
if !(d5 >= 0xc0) {
goto __590
}
if !(d5&0x20 == Tuint32_t(0)) {
goto __591
}
d5 = d5&0x1f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f
len1++
goto __592
__591:
if !(d5&0x10 == Tuint32_t(0)) {
goto __593
}
d5 = d5&0x0f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f
len1 = len1 + 2
goto __594
__593:
if !(d5&0x08 == Tuint32_t(0)) {
goto __595
}
d5 = d5&0x07<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 3)))&0x3f
len1 = len1 + 3
goto __596
__595:
if !(d5&0x04 == Tuint32_t(0)) {
goto __597
}
d5 = d5&0x03<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 3)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 4)))&0x3f
len1 = len1 + 4
goto __598
__597:
d5 = d5&0x01<<30 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 3)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 4)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 5)))&0x3f
len1 = len1 + 5
__598:
;
__596:
;
__594:
;
__592:
;
__590:
;
if !(*(*Tuint32_t)(unsafe.Pointer(F + 56 + 2*4)) == d5) {
goto __599
}
goto __586
__599:
;
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += TPCRE2_SPTR8(len1)
goto __585
__585:
i++
goto __584
goto __586
__586:
;
// After \C in UTF mode, Lstart_eptr might be in the middle of a
// Unicode character. Use <= Lstart_eptr to ensure backtracking doesn't
// go too far.
if !(reptype != REPTYPE_POS) {
goto __600
}
__601:
if !((*Theapframe)(unsafe.Pointer(F)).Feptr <= *(*TPCRE2_SPTR8)(unsafe.Pointer(F + 8))) {
goto __604
}
goto __603
__604:
;
start_ecode = (*Theapframe)(unsafe.Pointer(F)).Fecode
(*Theapframe)(unsafe.Pointer(F)).Freturn_id = RM207
goto MATCH_RECURSE
L_RM207:
;
if !(rrc != DMATCH_NOMATCH) {
goto __605
}
rrc = rrc
goto RETURN_SWITCH
__605:
;
(*Theapframe)(unsafe.Pointer(F)).Feptr--
__606:
if !(uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0xc0 == 0x80) {
goto __607
}
(*Theapframe)(unsafe.Pointer(F)).Feptr--
goto __606
__607:
;
goto __602
__602:
goto __601
goto __603
__603:
;
__600:
;
goto __583
__582:
/* Not UTF mode */
i = *(*Tuint32_t)(unsafe.Pointer(F + 56))
__608:
if !(i < *(*Tuint32_t)(unsafe.Pointer(F + 56 + 1*4))) {
goto __610
}
if !((*Theapframe)(unsafe.Pointer(F)).Feptr >= (*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject) {
goto __611
}
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) != 0 && ((*Theapframe)(unsafe.Pointer(F)).Feptr > (*Tmatch_block_8)(unsafe.Pointer(mb)).Fstart_used_ptr || (*Tmatch_block_8)(unsafe.Pointer(mb)).Fallowemptypartial != 0)) {
goto __612
}
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fhitend = DTRUE
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) > 1) {
goto __613
}
return -2
__613:
;
__612:
;
goto __610
__611:
;
if !(*(*Tuint32_t)(unsafe.Pointer(F + 56 + 2*4)) == Tuint32_t(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))) {
goto __614
}
goto __610
__614:
;
(*Theapframe)(unsafe.Pointer(F)).Feptr++
goto __609
__609:
i++
goto __608
goto __610
__610:
;
if !(reptype != REPTYPE_POS) {
goto __615
}
__616:
if !((*Theapframe)(unsafe.Pointer(F)).Feptr == *(*TPCRE2_SPTR8)(unsafe.Pointer(F + 8))) {
goto __619
}
goto __618
__619:
;
start_ecode = (*Theapframe)(unsafe.Pointer(F)).Fecode
(*Theapframe)(unsafe.Pointer(F)).Freturn_id = RM32
goto MATCH_RECURSE
L_RM32:
;
if !(rrc != DMATCH_NOMATCH) {
goto __620
}
rrc = rrc
goto RETURN_SWITCH
__620:
;
(*Theapframe)(unsafe.Pointer(F)).Feptr--
goto __617
__617:
goto __616
goto __618
__618:
;
__615:
;
__583:
;
__552:
;
__426:
;
goto __13
// =====================================================================
// Match a bit-mapped character class, possibly repeatedly. These opcodes
// are used when all the characters in the class have values in the range
// 0-255, and either the matching is caseful, or the characters are in the
// range 0-127 when UTF processing is enabled. The only difference between
// OP_CLASS and OP_NCLASS occurs when a data character outside the range is
// encountered.
__77:
__78:
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 8 + 1*8)) = (*Theapframe)(unsafe.Pointer(F)).Fecode + uintptr(1) // Save for matching
*(*TPCRE2_SPTR8)(unsafe.Pointer(F)) += TPCRE2_SPTR8(uint64(1) + uint64(32)/uint64(unsafe.Sizeof(TPCRE2_UCHAR8(0)))) // Advance past the item
// Look past the end of the item to see if there is repeat information
// following. Then obey similar code to character type repeats.
switch int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode))) {
case OP_CRSTAR:
goto __622
case OP_CRMINSTAR:
goto __623
case OP_CRPLUS:
goto __624
case OP_CRMINPLUS:
goto __625
case OP_CRQUERY:
goto __626
case OP_CRMINQUERY:
goto __627
case OP_CRPOSSTAR:
goto __628
case OP_CRPOSPLUS:
goto __629
case OP_CRPOSQUERY:
goto __630
case OP_CRRANGE:
goto __631
case OP_CRMINRANGE:
goto __632
case OP_CRPOSRANGE:
goto __633
default:
goto __634
}
goto __621
__622:
__623:
__624:
__625:
__626:
__627:
__628:
__629:
__630:
fc = Tuint32_t(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&(*Theapframe)(unsafe.Pointer(F)).Fecode, 1)))) - OP_CRSTAR)
*(*Tuint32_t)(unsafe.Pointer(F + 56)) = rep_min[fc]
*(*Tuint32_t)(unsafe.Pointer(F + 56 + 1*4)) = rep_max[fc]
reptype = rep_typ[fc]
goto __621
__631:
__632:
__633:
*(*Tuint32_t)(unsafe.Pointer(F + 56)) = uint32(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode + 1)))<<8 | int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode + 2))))
*(*Tuint32_t)(unsafe.Pointer(F + 56 + 1*4)) = uint32(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode + 3)))<<8 | int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode + 4))))
if !(*(*Tuint32_t)(unsafe.Pointer(F + 56 + 1*4)) == Tuint32_t(0)) {
goto __635
}
*(*Tuint32_t)(unsafe.Pointer(F + 56 + 1*4)) = 4294967295
__635:
; // Max 0 => infinity
reptype = rep_typ[int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode)))-OP_CRSTAR]
*(*TPCRE2_SPTR8)(unsafe.Pointer(F)) += TPCRE2_SPTR8(1 + 2*DIMM2_SIZE)
goto __621
__634: // No repeat follows
*(*Tuint32_t)(unsafe.Pointer(F + 56)) = libc.AssignPtrUint32(F+56+1*4, Tuint32_t(1))
goto __621
__621:
;
// First, ensure the minimum number of matches are present.
if !(utf != 0) {
goto __636
}
i = Tuint32_t(1)
__638:
if !(i <= *(*Tuint32_t)(unsafe.Pointer(F + 56))) {
goto __640
}
if !((*Theapframe)(unsafe.Pointer(F)).Feptr >= (*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject) {
goto __641
}
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) != 0 && ((*Theapframe)(unsafe.Pointer(F)).Feptr > (*Tmatch_block_8)(unsafe.Pointer(mb)).Fstart_used_ptr || (*Tmatch_block_8)(unsafe.Pointer(mb)).Fallowemptypartial != 0)) {
goto __642
}
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fhitend = DTRUE
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) > 1) {
goto __643
}
return -2
__643:
;
__642:
;
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__641:
;
fc = Tuint32_t(*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&(*Theapframe)(unsafe.Pointer(F)).Feptr, 1))))
if !(fc >= 0xc0) {
goto __644
}
if !(fc&0x20 == Tuint32_t(0)) {
goto __645
}
fc = fc&0x1f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&(*Theapframe)(unsafe.Pointer(F)).Feptr, 1))))&0x3f
goto __646
__645:
if !(fc&0x10 == Tuint32_t(0)) {
goto __647
}
fc = fc&0x0f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += uintptr(2)
goto __648
__647:
if !(fc&0x08 == Tuint32_t(0)) {
goto __649
}
fc = fc&0x07<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += uintptr(3)
goto __650
__649:
if !(fc&0x04 == Tuint32_t(0)) {
goto __651
}
fc = fc&0x03<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 3)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += uintptr(4)
goto __652
__651:
fc = fc&0x01<<30 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0x3f<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 3)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 4)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += uintptr(5)
__652:
;
__650:
;
__648:
;
__646:
;
__644:
;
if !(fc > Tuint32_t(255)) {
goto __653
}
if !(int32((*Theapframe)(unsafe.Pointer(F)).Fop) == OP_CLASS) {
goto __655
}
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__655:
;
goto __654
__653:
if !(uint32(*(*uint8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 8 + 1*8)) + uintptr(fc/Tuint32_t(8)))))&(uint32(1)<<(fc&Tuint32_t(7))) == uint32(0)) {
goto __656
}
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__656:
;
__654:
;
goto __639
__639:
i++
goto __638
goto __640
__640:
;
goto __637
__636:
/* Not UTF mode */
i = Tuint32_t(1)
__657:
if !(i <= *(*Tuint32_t)(unsafe.Pointer(F + 56))) {
goto __659
}
if !((*Theapframe)(unsafe.Pointer(F)).Feptr >= (*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject) {
goto __660
}
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) != 0 && ((*Theapframe)(unsafe.Pointer(F)).Feptr > (*Tmatch_block_8)(unsafe.Pointer(mb)).Fstart_used_ptr || (*Tmatch_block_8)(unsafe.Pointer(mb)).Fallowemptypartial != 0)) {
goto __661
}
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fhitend = DTRUE
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) > 1) {
goto __662
}
return -2
__662:
;
__661:
;
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__660:
;
fc = Tuint32_t(*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&(*Theapframe)(unsafe.Pointer(F)).Feptr, 1))))
if !(uint32(*(*uint8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 8 + 1*8)) + uintptr(fc/Tuint32_t(8)))))&(uint32(1)<<(fc&Tuint32_t(7))) == uint32(0)) {
goto __663
}
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__663:
;
goto __658
__658:
i++
goto __657
goto __659
__659:
;
__637:
;
// If Lmax == Lmin we are done. Continue with main loop.
if !(*(*Tuint32_t)(unsafe.Pointer(F + 56)) == *(*Tuint32_t)(unsafe.Pointer(F + 56 + 1*4))) {
goto __664
}
goto __11
__664:
;
// If minimizing, keep testing the rest of the expression and advancing
// the pointer while it matches the class.
if !(reptype == REPTYPE_MIN) {
goto __665
}
if !(utf != 0) {
goto __667
}
__669:
start_ecode = (*Theapframe)(unsafe.Pointer(F)).Fecode
(*Theapframe)(unsafe.Pointer(F)).Freturn_id = RM200
goto MATCH_RECURSE
L_RM200:
;
if !(rrc != DMATCH_NOMATCH) {
goto __672
}
rrc = rrc
goto RETURN_SWITCH
__672:
;
if !(libc.PostIncUint32(&*(*Tuint32_t)(unsafe.Pointer(F + 56)), 1) >= *(*Tuint32_t)(unsafe.Pointer(F + 56 + 1*4))) {
goto __673
}
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__673:
;
if !((*Theapframe)(unsafe.Pointer(F)).Feptr >= (*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject) {
goto __674
}
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) != 0 && ((*Theapframe)(unsafe.Pointer(F)).Feptr > (*Tmatch_block_8)(unsafe.Pointer(mb)).Fstart_used_ptr || (*Tmatch_block_8)(unsafe.Pointer(mb)).Fallowemptypartial != 0)) {
goto __675
}
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fhitend = DTRUE
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) > 1) {
goto __676
}
return -2
__676:
;
__675:
;
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__674:
;
fc = Tuint32_t(*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&(*Theapframe)(unsafe.Pointer(F)).Feptr, 1))))
if !(fc >= 0xc0) {
goto __677
}
if !(fc&0x20 == Tuint32_t(0)) {
goto __678
}
fc = fc&0x1f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&(*Theapframe)(unsafe.Pointer(F)).Feptr, 1))))&0x3f
goto __679
__678:
if !(fc&0x10 == Tuint32_t(0)) {
goto __680
}
fc = fc&0x0f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += uintptr(2)
goto __681
__680:
if !(fc&0x08 == Tuint32_t(0)) {
goto __682
}
fc = fc&0x07<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += uintptr(3)
goto __683
__682:
if !(fc&0x04 == Tuint32_t(0)) {
goto __684
}
fc = fc&0x03<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 3)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += uintptr(4)
goto __685
__684:
fc = fc&0x01<<30 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0x3f<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 3)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 4)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += uintptr(5)
__685:
;
__683:
;
__681:
;
__679:
;
__677:
;
if !(fc > Tuint32_t(255)) {
goto __686
}
if !(int32((*Theapframe)(unsafe.Pointer(F)).Fop) == OP_CLASS) {
goto __688
}
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__688:
;
goto __687
__686:
if !(uint32(*(*uint8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 8 + 1*8)) + uintptr(fc/Tuint32_t(8)))))&(uint32(1)<<(fc&Tuint32_t(7))) == uint32(0)) {
goto __689
}
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__689:
;
__687:
;
goto __670
__670:
goto __669
goto __671
__671:
;
goto __668
__667:
/* Not UTF mode */
__690:
start_ecode = (*Theapframe)(unsafe.Pointer(F)).Fecode
(*Theapframe)(unsafe.Pointer(F)).Freturn_id = RM23
goto MATCH_RECURSE
L_RM23:
;
if !(rrc != DMATCH_NOMATCH) {
goto __693
}
rrc = rrc
goto RETURN_SWITCH
__693:
;
if !(libc.PostIncUint32(&*(*Tuint32_t)(unsafe.Pointer(F + 56)), 1) >= *(*Tuint32_t)(unsafe.Pointer(F + 56 + 1*4))) {
goto __694
}
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__694:
;
if !((*Theapframe)(unsafe.Pointer(F)).Feptr >= (*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject) {
goto __695
}
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) != 0 && ((*Theapframe)(unsafe.Pointer(F)).Feptr > (*Tmatch_block_8)(unsafe.Pointer(mb)).Fstart_used_ptr || (*Tmatch_block_8)(unsafe.Pointer(mb)).Fallowemptypartial != 0)) {
goto __696
}
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fhitend = DTRUE
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) > 1) {
goto __697
}
return -2
__697:
;
__696:
;
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__695:
;
fc = Tuint32_t(*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&(*Theapframe)(unsafe.Pointer(F)).Feptr, 1))))
if !(uint32(*(*uint8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 8 + 1*8)) + uintptr(fc/Tuint32_t(8)))))&(uint32(1)<<(fc&Tuint32_t(7))) == uint32(0)) {
goto __698
}
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__698:
;
goto __691
__691:
goto __690
goto __692
__692:
;
__668:
;
// Control never gets here
goto __666
__665:
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 8)) = (*Theapframe)(unsafe.Pointer(F)).Feptr
if !(utf != 0) {
goto __699
}
i = *(*Tuint32_t)(unsafe.Pointer(F + 56))
__701:
if !(i < *(*Tuint32_t)(unsafe.Pointer(F + 56 + 1*4))) {
goto __703
}
len2 = 1
if !((*Theapframe)(unsafe.Pointer(F)).Feptr >= (*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject) {
goto __704
}
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) != 0 && ((*Theapframe)(unsafe.Pointer(F)).Feptr > (*Tmatch_block_8)(unsafe.Pointer(mb)).Fstart_used_ptr || (*Tmatch_block_8)(unsafe.Pointer(mb)).Fallowemptypartial != 0)) {
goto __705
}
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fhitend = DTRUE
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) > 1) {
goto __706
}
return -2
__706:
;
__705:
;
goto __703
__704:
;
fc = Tuint32_t(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))
if !(fc >= 0xc0) {
goto __707
}
if !(fc&0x20 == Tuint32_t(0)) {
goto __708
}
fc = fc&0x1f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f
len2++
goto __709
__708:
if !(fc&0x10 == Tuint32_t(0)) {
goto __710
}
fc = fc&0x0f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f
len2 = len2 + 2
goto __711
__710:
if !(fc&0x08 == Tuint32_t(0)) {
goto __712
}
fc = fc&0x07<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 3)))&0x3f
len2 = len2 + 3
goto __713
__712:
if !(fc&0x04 == Tuint32_t(0)) {
goto __714
}
fc = fc&0x03<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 3)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 4)))&0x3f
len2 = len2 + 4
goto __715
__714:
fc = fc&0x01<<30 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 3)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 4)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 5)))&0x3f
len2 = len2 + 5
__715:
;
__713:
;
__711:
;
__709:
;
__707:
;
if !(fc > Tuint32_t(255)) {
goto __716
}
if !(int32((*Theapframe)(unsafe.Pointer(F)).Fop) == OP_CLASS) {
goto __718
}
goto __703
__718:
;
goto __717
__716:
if !(uint32(*(*uint8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 8 + 1*8)) + uintptr(fc/Tuint32_t(8)))))&(uint32(1)<<(fc&Tuint32_t(7))) == uint32(0)) {
goto __719
}
goto __703
__719:
;
__717:
;
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += TPCRE2_SPTR8(len2)
goto __702
__702:
i++
goto __701
goto __703
__703:
;
if !(reptype == REPTYPE_POS) {
goto __720
}
goto __11
__720:
; // No backtracking
// After \C in UTF mode, Lstart_eptr might be in the middle of a
// Unicode character. Use <= Lstart_eptr to ensure backtracking doesn't
// go too far.
__721:
start_ecode = (*Theapframe)(unsafe.Pointer(F)).Fecode
(*Theapframe)(unsafe.Pointer(F)).Freturn_id = RM201
goto MATCH_RECURSE
L_RM201:
;
if !(rrc != DMATCH_NOMATCH) {
goto __724
}
rrc = rrc
goto RETURN_SWITCH
__724:
;
if !(libc.PostDecUintptr(&(*Theapframe)(unsafe.Pointer(F)).Feptr, 1) <= *(*TPCRE2_SPTR8)(unsafe.Pointer(F + 8))) {
goto __725
}
goto __723
__725:
; // Tried at original position
__726:
if !(uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0xc0 == 0x80) {
goto __727
}
(*Theapframe)(unsafe.Pointer(F)).Feptr--
goto __726
__727:
;
goto __722
__722:
goto __721
goto __723
__723:
;
goto __700
__699:
/* Not UTF mode */
i = *(*Tuint32_t)(unsafe.Pointer(F + 56))
__728:
if !(i < *(*Tuint32_t)(unsafe.Pointer(F + 56 + 1*4))) {
goto __730
}
if !((*Theapframe)(unsafe.Pointer(F)).Feptr >= (*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject) {
goto __731
}
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) != 0 && ((*Theapframe)(unsafe.Pointer(F)).Feptr > (*Tmatch_block_8)(unsafe.Pointer(mb)).Fstart_used_ptr || (*Tmatch_block_8)(unsafe.Pointer(mb)).Fallowemptypartial != 0)) {
goto __732
}
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fhitend = DTRUE
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) > 1) {
goto __733
}
return -2
__733:
;
__732:
;
goto __730
__731:
;
fc = Tuint32_t(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))
if !(uint32(*(*uint8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 8 + 1*8)) + uintptr(fc/Tuint32_t(8)))))&(uint32(1)<<(fc&Tuint32_t(7))) == uint32(0)) {
goto __734
}
goto __730
__734:
;
(*Theapframe)(unsafe.Pointer(F)).Feptr++
goto __729
__729:
i++
goto __728
goto __730
__730:
;
if !(reptype == REPTYPE_POS) {
goto __735
}
goto __11
__735:
; // No backtracking
__736:
if !((*Theapframe)(unsafe.Pointer(F)).Feptr >= *(*TPCRE2_SPTR8)(unsafe.Pointer(F + 8))) {
goto __737
}
start_ecode = (*Theapframe)(unsafe.Pointer(F)).Fecode
(*Theapframe)(unsafe.Pointer(F)).Freturn_id = RM24
goto MATCH_RECURSE
L_RM24:
;
if !(rrc != DMATCH_NOMATCH) {
goto __738
}
rrc = rrc
goto RETURN_SWITCH
__738:
;
(*Theapframe)(unsafe.Pointer(F)).Feptr--
goto __736
__737:
;
__700:
;
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__666:
;
// Control never gets here
// =====================================================================
// Match an extended character class. In the 8-bit library, this opcode is
// encountered only when UTF-8 mode mode is supported. In the 16-bit and
// 32-bit libraries, codepoints greater than 255 may be encountered even when
// UTF is not supported.
__79:
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 8 + 1*8)) = (*Theapframe)(unsafe.Pointer(F)).Fecode + uintptr(1) + uintptr(DLINK_SIZE) // Save for matching
*(*TPCRE2_SPTR8)(unsafe.Pointer(F)) += TPCRE2_SPTR8(uint32(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode + 1)))<<8 | int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode + 2))))) // Advance past the item
switch int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode))) {
case OP_CRSTAR:
goto __740
case OP_CRMINSTAR:
goto __741
case OP_CRPLUS:
goto __742
case OP_CRMINPLUS:
goto __743
case OP_CRQUERY:
goto __744
case OP_CRMINQUERY:
goto __745
case OP_CRPOSSTAR:
goto __746
case OP_CRPOSPLUS:
goto __747
case OP_CRPOSQUERY:
goto __748
case OP_CRRANGE:
goto __749
case OP_CRMINRANGE:
goto __750
case OP_CRPOSRANGE:
goto __751
default:
goto __752
}
goto __739
__740:
__741:
__742:
__743:
__744:
__745:
__746:
__747:
__748:
fc = Tuint32_t(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&(*Theapframe)(unsafe.Pointer(F)).Fecode, 1)))) - OP_CRSTAR)
*(*Tuint32_t)(unsafe.Pointer(F + 56)) = rep_min[fc]
*(*Tuint32_t)(unsafe.Pointer(F + 56 + 1*4)) = rep_max[fc]
reptype = rep_typ[fc]
goto __739
__749:
__750:
__751:
*(*Tuint32_t)(unsafe.Pointer(F + 56)) = uint32(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode + 1)))<<8 | int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode + 2))))
*(*Tuint32_t)(unsafe.Pointer(F + 56 + 1*4)) = uint32(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode + 3)))<<8 | int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode + 4))))
if !(*(*Tuint32_t)(unsafe.Pointer(F + 56 + 1*4)) == Tuint32_t(0)) {
goto __753
}
*(*Tuint32_t)(unsafe.Pointer(F + 56 + 1*4)) = 4294967295
__753:
; // Max 0 => infinity
reptype = rep_typ[int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode)))-OP_CRSTAR]
*(*TPCRE2_SPTR8)(unsafe.Pointer(F)) += TPCRE2_SPTR8(1 + 2*DIMM2_SIZE)
goto __739
__752: // No repeat follows
*(*Tuint32_t)(unsafe.Pointer(F + 56)) = libc.AssignPtrUint32(F+56+1*4, Tuint32_t(1))
goto __739
__739:
;
// First, ensure the minimum number of matches are present.
i = Tuint32_t(1)
__754:
if !(i <= *(*Tuint32_t)(unsafe.Pointer(F + 56))) {
goto __756
}
if !((*Theapframe)(unsafe.Pointer(F)).Feptr >= (*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject) {
goto __757
}
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) != 0 && ((*Theapframe)(unsafe.Pointer(F)).Feptr > (*Tmatch_block_8)(unsafe.Pointer(mb)).Fstart_used_ptr || (*Tmatch_block_8)(unsafe.Pointer(mb)).Fallowemptypartial != 0)) {
goto __758
}
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fhitend = DTRUE
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) > 1) {
goto __759
}
return -2
__759:
;
__758:
;
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__757:
;
fc = Tuint32_t(*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&(*Theapframe)(unsafe.Pointer(F)).Feptr, 1))))
if !(utf != 0 && fc >= 0xc0) {
goto __760
}
if !(fc&0x20 == Tuint32_t(0)) {
goto __761
}
fc = fc&0x1f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&(*Theapframe)(unsafe.Pointer(F)).Feptr, 1))))&0x3f
goto __762
__761:
if !(fc&0x10 == Tuint32_t(0)) {
goto __763
}
fc = fc&0x0f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += uintptr(2)
goto __764
__763:
if !(fc&0x08 == Tuint32_t(0)) {
goto __765
}
fc = fc&0x07<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += uintptr(3)
goto __766
__765:
if !(fc&0x04 == Tuint32_t(0)) {
goto __767
}
fc = fc&0x03<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 3)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += uintptr(4)
goto __768
__767:
fc = fc&0x01<<30 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0x3f<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 3)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 4)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += uintptr(5)
__768:
;
__766:
;
__764:
;
__762:
;
__760:
;
if !!(X_pcre2_xclass_8(tls, fc, *(*TPCRE2_SPTR8)(unsafe.Pointer(F + 8 + 1*8)), utf) != 0) {
goto __769
}
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__769:
;
goto __755
__755:
i++
goto __754
goto __756
__756:
;
// If Lmax == Lmin we can just continue with the main loop.
if !(*(*Tuint32_t)(unsafe.Pointer(F + 56)) == *(*Tuint32_t)(unsafe.Pointer(F + 56 + 1*4))) {
goto __770
}
goto __11
__770:
;
// If minimizing, keep testing the rest of the expression and advancing
// the pointer while it matches the class.
if !(reptype == REPTYPE_MIN) {
goto __771
}
__773:
start_ecode = (*Theapframe)(unsafe.Pointer(F)).Fecode
(*Theapframe)(unsafe.Pointer(F)).Freturn_id = RM100
goto MATCH_RECURSE
L_RM100:
;
if !(rrc != DMATCH_NOMATCH) {
goto __776
}
rrc = rrc
goto RETURN_SWITCH
__776:
;
if !(libc.PostIncUint32(&*(*Tuint32_t)(unsafe.Pointer(F + 56)), 1) >= *(*Tuint32_t)(unsafe.Pointer(F + 56 + 1*4))) {
goto __777
}
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__777:
;
if !((*Theapframe)(unsafe.Pointer(F)).Feptr >= (*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject) {
goto __778
}
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) != 0 && ((*Theapframe)(unsafe.Pointer(F)).Feptr > (*Tmatch_block_8)(unsafe.Pointer(mb)).Fstart_used_ptr || (*Tmatch_block_8)(unsafe.Pointer(mb)).Fallowemptypartial != 0)) {
goto __779
}
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fhitend = DTRUE
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) > 1) {
goto __780
}
return -2
__780:
;
__779:
;
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__778:
;
fc = Tuint32_t(*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&(*Theapframe)(unsafe.Pointer(F)).Feptr, 1))))
if !(utf != 0 && fc >= 0xc0) {
goto __781
}
if !(fc&0x20 == Tuint32_t(0)) {
goto __782
}
fc = fc&0x1f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&(*Theapframe)(unsafe.Pointer(F)).Feptr, 1))))&0x3f
goto __783
__782:
if !(fc&0x10 == Tuint32_t(0)) {
goto __784
}
fc = fc&0x0f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += uintptr(2)
goto __785
__784:
if !(fc&0x08 == Tuint32_t(0)) {
goto __786
}
fc = fc&0x07<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += uintptr(3)
goto __787
__786:
if !(fc&0x04 == Tuint32_t(0)) {
goto __788
}
fc = fc&0x03<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 3)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += uintptr(4)
goto __789
__788:
fc = fc&0x01<<30 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0x3f<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 3)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 4)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += uintptr(5)
__789:
;
__787:
;
__785:
;
__783:
;
__781:
;
if !!(X_pcre2_xclass_8(tls, fc, *(*TPCRE2_SPTR8)(unsafe.Pointer(F + 8 + 1*8)), utf) != 0) {
goto __790
}
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__790:
;
goto __774
__774:
goto __773
goto __775
__775:
;
// Control never gets here
goto __772
__771:
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 8)) = (*Theapframe)(unsafe.Pointer(F)).Feptr
i = *(*Tuint32_t)(unsafe.Pointer(F + 56))
__791:
if !(i < *(*Tuint32_t)(unsafe.Pointer(F + 56 + 1*4))) {
goto __793
}
len3 = 1
if !((*Theapframe)(unsafe.Pointer(F)).Feptr >= (*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject) {
goto __794
}
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) != 0 && ((*Theapframe)(unsafe.Pointer(F)).Feptr > (*Tmatch_block_8)(unsafe.Pointer(mb)).Fstart_used_ptr || (*Tmatch_block_8)(unsafe.Pointer(mb)).Fallowemptypartial != 0)) {
goto __795
}
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fhitend = DTRUE
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) > 1) {
goto __796
}
return -2
__796:
;
__795:
;
goto __793
__794:
;
fc = Tuint32_t(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))
if !(utf != 0 && fc >= 0xc0) {
goto __797
}
if !(fc&0x20 == Tuint32_t(0)) {
goto __798
}
fc = fc&0x1f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f
len3++
goto __799
__798:
if !(fc&0x10 == Tuint32_t(0)) {
goto __800
}
fc = fc&0x0f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f
len3 = len3 + 2
goto __801
__800:
if !(fc&0x08 == Tuint32_t(0)) {
goto __802
}
fc = fc&0x07<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 3)))&0x3f
len3 = len3 + 3
goto __803
__802:
if !(fc&0x04 == Tuint32_t(0)) {
goto __804
}
fc = fc&0x03<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 3)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 4)))&0x3f
len3 = len3 + 4
goto __805
__804:
fc = fc&0x01<<30 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 3)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 4)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 5)))&0x3f
len3 = len3 + 5
__805:
;
__803:
;
__801:
;
__799:
;
__797:
;
if !!(X_pcre2_xclass_8(tls, fc, *(*TPCRE2_SPTR8)(unsafe.Pointer(F + 8 + 1*8)), utf) != 0) {
goto __806
}
goto __793
__806:
;
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += TPCRE2_SPTR8(len3)
goto __792
__792:
i++
goto __791
goto __793
__793:
;
if !(reptype == REPTYPE_POS) {
goto __807
}
goto __11
__807:
; // No backtracking
// After \C in UTF mode, Lstart_eptr might be in the middle of a
// Unicode character. Use <= Lstart_eptr to ensure backtracking doesn't
// go too far.
__808:
start_ecode = (*Theapframe)(unsafe.Pointer(F)).Fecode
(*Theapframe)(unsafe.Pointer(F)).Freturn_id = RM101
goto MATCH_RECURSE
L_RM101:
;
if !(rrc != DMATCH_NOMATCH) {
goto __811
}
rrc = rrc
goto RETURN_SWITCH
__811:
;
if !(libc.PostDecUintptr(&(*Theapframe)(unsafe.Pointer(F)).Feptr, 1) <= *(*TPCRE2_SPTR8)(unsafe.Pointer(F + 8))) {
goto __812
}
goto __810
__812:
; // Tried at original position
if !(utf != 0) {
goto __813
}
__814:
if !(uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0xc0 == 0x80) {
goto __815
}
(*Theapframe)(unsafe.Pointer(F)).Feptr--
goto __814
__815:
;
__813:
;
goto __809
__809:
goto __808
goto __810
__810:
;
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__772:
;
// Control never gets here
// =====================================================================
// Match various character types when PCRE2_UCP is not set. These opcodes
// are not generated when PCRE2_UCP is set - instead appropriate property
// tests are compiled.
__80:
if !((*Theapframe)(unsafe.Pointer(F)).Feptr >= (*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject) {
goto __816
}
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) != 0 && ((*Theapframe)(unsafe.Pointer(F)).Feptr > (*Tmatch_block_8)(unsafe.Pointer(mb)).Fstart_used_ptr || (*Tmatch_block_8)(unsafe.Pointer(mb)).Fallowemptypartial != 0)) {
goto __817
}
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fhitend = DTRUE
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) > 1) {
goto __818
}
return -2
__818:
;
__817:
;
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__816:
;
fc = Tuint32_t(*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&(*Theapframe)(unsafe.Pointer(F)).Feptr, 1))))
if !(utf != 0 && fc >= 0xc0) {
goto __819
}
if !(fc&0x20 == Tuint32_t(0)) {
goto __820
}
fc = fc&0x1f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&(*Theapframe)(unsafe.Pointer(F)).Feptr, 1))))&0x3f
goto __821
__820:
if !(fc&0x10 == Tuint32_t(0)) {
goto __822
}
fc = fc&0x0f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += uintptr(2)
goto __823
__822:
if !(fc&0x08 == Tuint32_t(0)) {
goto __824
}
fc = fc&0x07<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += uintptr(3)
goto __825
__824:
if !(fc&0x04 == Tuint32_t(0)) {
goto __826
}
fc = fc&0x03<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 3)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += uintptr(4)
goto __827
__826:
fc = fc&0x01<<30 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0x3f<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 3)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 4)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += uintptr(5)
__827:
;
__825:
;
__823:
;
__821:
;
__819:
;
if !(fc <= 255 && int32(*(*Tuint8_t)(unsafe.Pointer((*Tmatch_block_8)(unsafe.Pointer(mb)).Fctypes + uintptr(fc))))&Dctype_digit != 0) {
goto __828
}
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__828:
;
(*Theapframe)(unsafe.Pointer(F)).Fecode++
goto __13
__81:
if !((*Theapframe)(unsafe.Pointer(F)).Feptr >= (*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject) {
goto __829
}
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) != 0 && ((*Theapframe)(unsafe.Pointer(F)).Feptr > (*Tmatch_block_8)(unsafe.Pointer(mb)).Fstart_used_ptr || (*Tmatch_block_8)(unsafe.Pointer(mb)).Fallowemptypartial != 0)) {
goto __830
}
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fhitend = DTRUE
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) > 1) {
goto __831
}
return -2
__831:
;
__830:
;
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__829:
;
fc = Tuint32_t(*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&(*Theapframe)(unsafe.Pointer(F)).Feptr, 1))))
if !(utf != 0 && fc >= 0xc0) {
goto __832
}
if !(fc&0x20 == Tuint32_t(0)) {
goto __833
}
fc = fc&0x1f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&(*Theapframe)(unsafe.Pointer(F)).Feptr, 1))))&0x3f
goto __834
__833:
if !(fc&0x10 == Tuint32_t(0)) {
goto __835
}
fc = fc&0x0f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += uintptr(2)
goto __836
__835:
if !(fc&0x08 == Tuint32_t(0)) {
goto __837
}
fc = fc&0x07<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += uintptr(3)
goto __838
__837:
if !(fc&0x04 == Tuint32_t(0)) {
goto __839
}
fc = fc&0x03<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 3)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += uintptr(4)
goto __840
__839:
fc = fc&0x01<<30 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0x3f<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 3)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 4)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += uintptr(5)
__840:
;
__838:
;
__836:
;
__834:
;
__832:
;
if !(!(fc <= 255) || int32(*(*Tuint8_t)(unsafe.Pointer((*Tmatch_block_8)(unsafe.Pointer(mb)).Fctypes + uintptr(fc))))&Dctype_digit == 0) {
goto __841
}
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__841:
;
(*Theapframe)(unsafe.Pointer(F)).Fecode++
goto __13
__82:
if !((*Theapframe)(unsafe.Pointer(F)).Feptr >= (*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject) {
goto __842
}
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) != 0 && ((*Theapframe)(unsafe.Pointer(F)).Feptr > (*Tmatch_block_8)(unsafe.Pointer(mb)).Fstart_used_ptr || (*Tmatch_block_8)(unsafe.Pointer(mb)).Fallowemptypartial != 0)) {
goto __843
}
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fhitend = DTRUE
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) > 1) {
goto __844
}
return -2
__844:
;
__843:
;
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__842:
;
fc = Tuint32_t(*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&(*Theapframe)(unsafe.Pointer(F)).Feptr, 1))))
if !(utf != 0 && fc >= 0xc0) {
goto __845
}
if !(fc&0x20 == Tuint32_t(0)) {
goto __846
}
fc = fc&0x1f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&(*Theapframe)(unsafe.Pointer(F)).Feptr, 1))))&0x3f
goto __847
__846:
if !(fc&0x10 == Tuint32_t(0)) {
goto __848
}
fc = fc&0x0f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += uintptr(2)
goto __849
__848:
if !(fc&0x08 == Tuint32_t(0)) {
goto __850
}
fc = fc&0x07<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += uintptr(3)
goto __851
__850:
if !(fc&0x04 == Tuint32_t(0)) {
goto __852
}
fc = fc&0x03<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 3)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += uintptr(4)
goto __853
__852:
fc = fc&0x01<<30 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0x3f<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 3)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 4)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += uintptr(5)
__853:
;
__851:
;
__849:
;
__847:
;
__845:
;
if !(fc <= 255 && int32(*(*Tuint8_t)(unsafe.Pointer((*Tmatch_block_8)(unsafe.Pointer(mb)).Fctypes + uintptr(fc))))&Dctype_space != 0) {
goto __854
}
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__854:
;
(*Theapframe)(unsafe.Pointer(F)).Fecode++
goto __13
__83:
if !((*Theapframe)(unsafe.Pointer(F)).Feptr >= (*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject) {
goto __855
}
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) != 0 && ((*Theapframe)(unsafe.Pointer(F)).Feptr > (*Tmatch_block_8)(unsafe.Pointer(mb)).Fstart_used_ptr || (*Tmatch_block_8)(unsafe.Pointer(mb)).Fallowemptypartial != 0)) {
goto __856
}
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fhitend = DTRUE
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) > 1) {
goto __857
}
return -2
__857:
;
__856:
;
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__855:
;
fc = Tuint32_t(*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&(*Theapframe)(unsafe.Pointer(F)).Feptr, 1))))
if !(utf != 0 && fc >= 0xc0) {
goto __858
}
if !(fc&0x20 == Tuint32_t(0)) {
goto __859
}
fc = fc&0x1f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&(*Theapframe)(unsafe.Pointer(F)).Feptr, 1))))&0x3f
goto __860
__859:
if !(fc&0x10 == Tuint32_t(0)) {
goto __861
}
fc = fc&0x0f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += uintptr(2)
goto __862
__861:
if !(fc&0x08 == Tuint32_t(0)) {
goto __863
}
fc = fc&0x07<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += uintptr(3)
goto __864
__863:
if !(fc&0x04 == Tuint32_t(0)) {
goto __865
}
fc = fc&0x03<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 3)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += uintptr(4)
goto __866
__865:
fc = fc&0x01<<30 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0x3f<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 3)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 4)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += uintptr(5)
__866:
;
__864:
;
__862:
;
__860:
;
__858:
;
if !(!(fc <= 255) || int32(*(*Tuint8_t)(unsafe.Pointer((*Tmatch_block_8)(unsafe.Pointer(mb)).Fctypes + uintptr(fc))))&Dctype_space == 0) {
goto __867
}
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__867:
;
(*Theapframe)(unsafe.Pointer(F)).Fecode++
goto __13
__84:
if !((*Theapframe)(unsafe.Pointer(F)).Feptr >= (*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject) {
goto __868
}
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) != 0 && ((*Theapframe)(unsafe.Pointer(F)).Feptr > (*Tmatch_block_8)(unsafe.Pointer(mb)).Fstart_used_ptr || (*Tmatch_block_8)(unsafe.Pointer(mb)).Fallowemptypartial != 0)) {
goto __869
}
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fhitend = DTRUE
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) > 1) {
goto __870
}
return -2
__870:
;
__869:
;
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__868:
;
fc = Tuint32_t(*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&(*Theapframe)(unsafe.Pointer(F)).Feptr, 1))))
if !(utf != 0 && fc >= 0xc0) {
goto __871
}
if !(fc&0x20 == Tuint32_t(0)) {
goto __872
}
fc = fc&0x1f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&(*Theapframe)(unsafe.Pointer(F)).Feptr, 1))))&0x3f
goto __873
__872:
if !(fc&0x10 == Tuint32_t(0)) {
goto __874
}
fc = fc&0x0f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += uintptr(2)
goto __875
__874:
if !(fc&0x08 == Tuint32_t(0)) {
goto __876
}
fc = fc&0x07<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += uintptr(3)
goto __877
__876:
if !(fc&0x04 == Tuint32_t(0)) {
goto __878
}
fc = fc&0x03<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 3)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += uintptr(4)
goto __879
__878:
fc = fc&0x01<<30 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0x3f<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 3)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 4)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += uintptr(5)
__879:
;
__877:
;
__875:
;
__873:
;
__871:
;
if !(fc <= 255 && int32(*(*Tuint8_t)(unsafe.Pointer((*Tmatch_block_8)(unsafe.Pointer(mb)).Fctypes + uintptr(fc))))&Dctype_word != 0) {
goto __880
}
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__880:
;
(*Theapframe)(unsafe.Pointer(F)).Fecode++
goto __13
__85:
if !((*Theapframe)(unsafe.Pointer(F)).Feptr >= (*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject) {
goto __881
}
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) != 0 && ((*Theapframe)(unsafe.Pointer(F)).Feptr > (*Tmatch_block_8)(unsafe.Pointer(mb)).Fstart_used_ptr || (*Tmatch_block_8)(unsafe.Pointer(mb)).Fallowemptypartial != 0)) {
goto __882
}
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fhitend = DTRUE
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) > 1) {
goto __883
}
return -2
__883:
;
__882:
;
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__881:
;
fc = Tuint32_t(*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&(*Theapframe)(unsafe.Pointer(F)).Feptr, 1))))
if !(utf != 0 && fc >= 0xc0) {
goto __884
}
if !(fc&0x20 == Tuint32_t(0)) {
goto __885
}
fc = fc&0x1f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&(*Theapframe)(unsafe.Pointer(F)).Feptr, 1))))&0x3f
goto __886
__885:
if !(fc&0x10 == Tuint32_t(0)) {
goto __887
}
fc = fc&0x0f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += uintptr(2)
goto __888
__887:
if !(fc&0x08 == Tuint32_t(0)) {
goto __889
}
fc = fc&0x07<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += uintptr(3)
goto __890
__889:
if !(fc&0x04 == Tuint32_t(0)) {
goto __891
}
fc = fc&0x03<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 3)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += uintptr(4)
goto __892
__891:
fc = fc&0x01<<30 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0x3f<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 3)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 4)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += uintptr(5)
__892:
;
__890:
;
__888:
;
__886:
;
__884:
;
if !(!(fc <= 255) || int32(*(*Tuint8_t)(unsafe.Pointer((*Tmatch_block_8)(unsafe.Pointer(mb)).Fctypes + uintptr(fc))))&Dctype_word == 0) {
goto __893
}
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__893:
;
(*Theapframe)(unsafe.Pointer(F)).Fecode++
goto __13
__86:
if !((*Theapframe)(unsafe.Pointer(F)).Feptr >= (*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject) {
goto __894
}
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) != 0 && ((*Theapframe)(unsafe.Pointer(F)).Feptr > (*Tmatch_block_8)(unsafe.Pointer(mb)).Fstart_used_ptr || (*Tmatch_block_8)(unsafe.Pointer(mb)).Fallowemptypartial != 0)) {
goto __895
}
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fhitend = DTRUE
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) > 1) {
goto __896
}
return -2
__896:
;
__895:
;
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__894:
;
fc = Tuint32_t(*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&(*Theapframe)(unsafe.Pointer(F)).Feptr, 1))))
if !(utf != 0 && fc >= 0xc0) {
goto __897
}
if !(fc&0x20 == Tuint32_t(0)) {
goto __898
}
fc = fc&0x1f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&(*Theapframe)(unsafe.Pointer(F)).Feptr, 1))))&0x3f
goto __899
__898:
if !(fc&0x10 == Tuint32_t(0)) {
goto __900
}
fc = fc&0x0f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += uintptr(2)
goto __901
__900:
if !(fc&0x08 == Tuint32_t(0)) {
goto __902
}
fc = fc&0x07<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += uintptr(3)
goto __903
__902:
if !(fc&0x04 == Tuint32_t(0)) {
goto __904
}
fc = fc&0x03<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 3)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += uintptr(4)
goto __905
__904:
fc = fc&0x01<<30 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0x3f<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 3)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 4)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += uintptr(5)
__905:
;
__903:
;
__901:
;
__899:
;
__897:
;
switch fc {
default:
goto __907
case Tuint32_t('\015'):
goto __908
case Tuint32_t('\012'):
goto __909
case Tuint32_t('\013'):
goto __910
case Tuint32_t('\014'):
goto __911
case libc.Uint32FromUint8(libc.Uint8FromInt32(133)):
goto __912
case Tuint32_t(0x2028):
goto __913
case Tuint32_t(0x2029):
goto __914
}
goto __906
__907:
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__908:
if !((*Theapframe)(unsafe.Pointer(F)).Feptr >= (*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject) {
goto __915
}
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) != 0 && ((*Theapframe)(unsafe.Pointer(F)).Feptr > (*Tmatch_block_8)(unsafe.Pointer(mb)).Fstart_used_ptr || (*Tmatch_block_8)(unsafe.Pointer(mb)).Fallowemptypartial != 0)) {
goto __917
}
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fhitend = DTRUE
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) > 1) {
goto __918
}
return -2
__918:
;
__917:
;
goto __916
__915:
if !(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr))) == '\012') {
goto __919
}
(*Theapframe)(unsafe.Pointer(F)).Feptr++
__919:
;
__916:
;
goto __906
__909:
goto __906
__910:
__911:
__912:
__913:
__914:
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fbsr_convention) == DPCRE2_BSR_ANYCRLF) {
goto __920
}
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__920:
;
goto __906
__906:
;
(*Theapframe)(unsafe.Pointer(F)).Fecode++
goto __13
__87:
if !((*Theapframe)(unsafe.Pointer(F)).Feptr >= (*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject) {
goto __921
}
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) != 0 && ((*Theapframe)(unsafe.Pointer(F)).Feptr > (*Tmatch_block_8)(unsafe.Pointer(mb)).Fstart_used_ptr || (*Tmatch_block_8)(unsafe.Pointer(mb)).Fallowemptypartial != 0)) {
goto __922
}
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fhitend = DTRUE
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) > 1) {
goto __923
}
return -2
__923:
;
__922:
;
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__921:
;
fc = Tuint32_t(*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&(*Theapframe)(unsafe.Pointer(F)).Feptr, 1))))
if !(utf != 0 && fc >= 0xc0) {
goto __924
}
if !(fc&0x20 == Tuint32_t(0)) {
goto __925
}
fc = fc&0x1f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&(*Theapframe)(unsafe.Pointer(F)).Feptr, 1))))&0x3f
goto __926
__925:
if !(fc&0x10 == Tuint32_t(0)) {
goto __927
}
fc = fc&0x0f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += uintptr(2)
goto __928
__927:
if !(fc&0x08 == Tuint32_t(0)) {
goto __929
}
fc = fc&0x07<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += uintptr(3)
goto __930
__929:
if !(fc&0x04 == Tuint32_t(0)) {
goto __931
}
fc = fc&0x03<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 3)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += uintptr(4)
goto __932
__931:
fc = fc&0x01<<30 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0x3f<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 3)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 4)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += uintptr(5)
__932:
;
__930:
;
__928:
;
__926:
;
__924:
;
switch fc {
case Tuint32_t('\011'):
goto __934
case Tuint32_t('\040'):
goto __935
case libc.Uint32FromUint8(libc.Uint8FromInt32(160)):
goto __936
case Tuint32_t(0x1680):
goto __937 /* OGHAM SPACE MARK */
case Tuint32_t(0x180e):
goto __938 /* MONGOLIAN VOWEL SEPARATOR */
case Tuint32_t(0x2000):
goto __939 /* EN QUAD */
case Tuint32_t(0x2001):
goto __940 /* EM QUAD */
case Tuint32_t(0x2002):
goto __941 /* EN SPACE */
case Tuint32_t(0x2003):
goto __942 /* EM SPACE */
case Tuint32_t(0x2004):
goto __943 /* THREE-PER-EM SPACE */
case Tuint32_t(0x2005):
goto __944 /* FOUR-PER-EM SPACE */
case Tuint32_t(0x2006):
goto __945 /* SIX-PER-EM SPACE */
case Tuint32_t(0x2007):
goto __946 /* FIGURE SPACE */
case Tuint32_t(0x2008):
goto __947 /* PUNCTUATION SPACE */
case Tuint32_t(0x2009):
goto __948 /* THIN SPACE */
case Tuint32_t(0x200A):
goto __949 /* HAIR SPACE */
case Tuint32_t(0x202f):
goto __950 /* NARROW NO-BREAK SPACE */
case Tuint32_t(0x205f):
goto __951 /* MEDIUM MATHEMATICAL SPACE */
case Tuint32_t(0x3000):
goto __952 // Byte and multibyte cases
default:
goto __953
}
goto __933
__934:
__935:
__936:
__937: /* OGHAM SPACE MARK */
__938: /* MONGOLIAN VOWEL SEPARATOR */
__939: /* EN QUAD */
__940: /* EM QUAD */
__941: /* EN SPACE */
__942: /* EM SPACE */
__943: /* THREE-PER-EM SPACE */
__944: /* FOUR-PER-EM SPACE */
__945: /* SIX-PER-EM SPACE */
__946: /* FIGURE SPACE */
__947: /* PUNCTUATION SPACE */
__948: /* THIN SPACE */
__949: /* HAIR SPACE */
__950: /* NARROW NO-BREAK SPACE */
__951: /* MEDIUM MATHEMATICAL SPACE */
__952:
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
// Byte and multibyte cases
__953:
goto __933
__933:
;
(*Theapframe)(unsafe.Pointer(F)).Fecode++
goto __13
__88:
if !((*Theapframe)(unsafe.Pointer(F)).Feptr >= (*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject) {
goto __954
}
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) != 0 && ((*Theapframe)(unsafe.Pointer(F)).Feptr > (*Tmatch_block_8)(unsafe.Pointer(mb)).Fstart_used_ptr || (*Tmatch_block_8)(unsafe.Pointer(mb)).Fallowemptypartial != 0)) {
goto __955
}
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fhitend = DTRUE
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) > 1) {
goto __956
}
return -2
__956:
;
__955:
;
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__954:
;
fc = Tuint32_t(*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&(*Theapframe)(unsafe.Pointer(F)).Feptr, 1))))
if !(utf != 0 && fc >= 0xc0) {
goto __957
}
if !(fc&0x20 == Tuint32_t(0)) {
goto __958
}
fc = fc&0x1f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&(*Theapframe)(unsafe.Pointer(F)).Feptr, 1))))&0x3f
goto __959
__958:
if !(fc&0x10 == Tuint32_t(0)) {
goto __960
}
fc = fc&0x0f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += uintptr(2)
goto __961
__960:
if !(fc&0x08 == Tuint32_t(0)) {
goto __962
}
fc = fc&0x07<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += uintptr(3)
goto __963
__962:
if !(fc&0x04 == Tuint32_t(0)) {
goto __964
}
fc = fc&0x03<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 3)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += uintptr(4)
goto __965
__964:
fc = fc&0x01<<30 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0x3f<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 3)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 4)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += uintptr(5)
__965:
;
__963:
;
__961:
;
__959:
;
__957:
;
switch fc {
case Tuint32_t('\011'):
goto __967
case Tuint32_t('\040'):
goto __968
case libc.Uint32FromUint8(libc.Uint8FromInt32(160)):
goto __969
case Tuint32_t(0x1680):
goto __970 /* OGHAM SPACE MARK */
case Tuint32_t(0x180e):
goto __971 /* MONGOLIAN VOWEL SEPARATOR */
case Tuint32_t(0x2000):
goto __972 /* EN QUAD */
case Tuint32_t(0x2001):
goto __973 /* EM QUAD */
case Tuint32_t(0x2002):
goto __974 /* EN SPACE */
case Tuint32_t(0x2003):
goto __975 /* EM SPACE */
case Tuint32_t(0x2004):
goto __976 /* THREE-PER-EM SPACE */
case Tuint32_t(0x2005):
goto __977 /* FOUR-PER-EM SPACE */
case Tuint32_t(0x2006):
goto __978 /* SIX-PER-EM SPACE */
case Tuint32_t(0x2007):
goto __979 /* FIGURE SPACE */
case Tuint32_t(0x2008):
goto __980 /* PUNCTUATION SPACE */
case Tuint32_t(0x2009):
goto __981 /* THIN SPACE */
case Tuint32_t(0x200A):
goto __982 /* HAIR SPACE */
case Tuint32_t(0x202f):
goto __983 /* NARROW NO-BREAK SPACE */
case Tuint32_t(0x205f):
goto __984 /* MEDIUM MATHEMATICAL SPACE */
case Tuint32_t(0x3000):
goto __985 // Byte and multibyte cases
default:
goto __986
}
goto __966
__967:
__968:
__969:
__970: /* OGHAM SPACE MARK */
__971: /* MONGOLIAN VOWEL SEPARATOR */
__972: /* EN QUAD */
__973: /* EM QUAD */
__974: /* EN SPACE */
__975: /* EM SPACE */
__976: /* THREE-PER-EM SPACE */
__977: /* FOUR-PER-EM SPACE */
__978: /* SIX-PER-EM SPACE */
__979: /* FIGURE SPACE */
__980: /* PUNCTUATION SPACE */
__981: /* THIN SPACE */
__982: /* HAIR SPACE */
__983: /* NARROW NO-BREAK SPACE */
__984: /* MEDIUM MATHEMATICAL SPACE */
__985:
goto __966 // Byte and multibyte cases
__986:
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__966:
;
(*Theapframe)(unsafe.Pointer(F)).Fecode++
goto __13
__89:
if !((*Theapframe)(unsafe.Pointer(F)).Feptr >= (*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject) {
goto __987
}
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) != 0 && ((*Theapframe)(unsafe.Pointer(F)).Feptr > (*Tmatch_block_8)(unsafe.Pointer(mb)).Fstart_used_ptr || (*Tmatch_block_8)(unsafe.Pointer(mb)).Fallowemptypartial != 0)) {
goto __988
}
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fhitend = DTRUE
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) > 1) {
goto __989
}
return -2
__989:
;
__988:
;
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__987:
;
fc = Tuint32_t(*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&(*Theapframe)(unsafe.Pointer(F)).Feptr, 1))))
if !(utf != 0 && fc >= 0xc0) {
goto __990
}
if !(fc&0x20 == Tuint32_t(0)) {
goto __991
}
fc = fc&0x1f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&(*Theapframe)(unsafe.Pointer(F)).Feptr, 1))))&0x3f
goto __992
__991:
if !(fc&0x10 == Tuint32_t(0)) {
goto __993
}
fc = fc&0x0f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += uintptr(2)
goto __994
__993:
if !(fc&0x08 == Tuint32_t(0)) {
goto __995
}
fc = fc&0x07<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += uintptr(3)
goto __996
__995:
if !(fc&0x04 == Tuint32_t(0)) {
goto __997
}
fc = fc&0x03<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 3)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += uintptr(4)
goto __998
__997:
fc = fc&0x01<<30 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0x3f<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 3)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 4)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += uintptr(5)
__998:
;
__996:
;
__994:
;
__992:
;
__990:
;
switch fc {
case Tuint32_t('\012'):
goto __1000
case Tuint32_t('\013'):
goto __1001
case Tuint32_t('\014'):
goto __1002
case Tuint32_t('\015'):
goto __1003
case libc.Uint32FromUint8(libc.Uint8FromInt32(133)):
goto __1004
case Tuint32_t(0x2028):
goto __1005 /* LINE SEPARATOR */
case Tuint32_t(0x2029):
goto __1006
default:
goto __1007
}
goto __999
__1000:
__1001:
__1002:
__1003:
__1004:
__1005: /* LINE SEPARATOR */
__1006:
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__1007:
goto __999
__999:
;
(*Theapframe)(unsafe.Pointer(F)).Fecode++
goto __13
__90:
if !((*Theapframe)(unsafe.Pointer(F)).Feptr >= (*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject) {
goto __1008
}
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) != 0 && ((*Theapframe)(unsafe.Pointer(F)).Feptr > (*Tmatch_block_8)(unsafe.Pointer(mb)).Fstart_used_ptr || (*Tmatch_block_8)(unsafe.Pointer(mb)).Fallowemptypartial != 0)) {
goto __1009
}
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fhitend = DTRUE
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) > 1) {
goto __1010
}
return -2
__1010:
;
__1009:
;
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__1008:
;
fc = Tuint32_t(*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&(*Theapframe)(unsafe.Pointer(F)).Feptr, 1))))
if !(utf != 0 && fc >= 0xc0) {
goto __1011
}
if !(fc&0x20 == Tuint32_t(0)) {
goto __1012
}
fc = fc&0x1f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&(*Theapframe)(unsafe.Pointer(F)).Feptr, 1))))&0x3f
goto __1013
__1012:
if !(fc&0x10 == Tuint32_t(0)) {
goto __1014
}
fc = fc&0x0f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += uintptr(2)
goto __1015
__1014:
if !(fc&0x08 == Tuint32_t(0)) {
goto __1016
}
fc = fc&0x07<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += uintptr(3)
goto __1017
__1016:
if !(fc&0x04 == Tuint32_t(0)) {
goto __1018
}
fc = fc&0x03<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 3)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += uintptr(4)
goto __1019
__1018:
fc = fc&0x01<<30 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0x3f<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 3)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 4)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += uintptr(5)
__1019:
;
__1017:
;
__1015:
;
__1013:
;
__1011:
;
switch fc {
case Tuint32_t('\012'):
goto __1021
case Tuint32_t('\013'):
goto __1022
case Tuint32_t('\014'):
goto __1023
case Tuint32_t('\015'):
goto __1024
case libc.Uint32FromUint8(libc.Uint8FromInt32(133)):
goto __1025
case Tuint32_t(0x2028):
goto __1026 /* LINE SEPARATOR */
case Tuint32_t(0x2029):
goto __1027
default:
goto __1028
}
goto __1020
__1021:
__1022:
__1023:
__1024:
__1025:
__1026: /* LINE SEPARATOR */
__1027:
goto __1020
__1028:
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__1020:
;
(*Theapframe)(unsafe.Pointer(F)).Fecode++
goto __13
// =====================================================================
// Check the next character by Unicode property. We will get here only
// if the support is in the binary; otherwise a compile-time error occurs.
__91:
__92:
if !((*Theapframe)(unsafe.Pointer(F)).Feptr >= (*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject) {
goto __1029
}
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) != 0 && ((*Theapframe)(unsafe.Pointer(F)).Feptr > (*Tmatch_block_8)(unsafe.Pointer(mb)).Fstart_used_ptr || (*Tmatch_block_8)(unsafe.Pointer(mb)).Fallowemptypartial != 0)) {
goto __1030
}
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fhitend = DTRUE
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) > 1) {
goto __1031
}
return -2
__1031:
;
__1030:
;
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__1029:
;
fc = Tuint32_t(*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&(*Theapframe)(unsafe.Pointer(F)).Feptr, 1))))
if !(utf != 0 && fc >= 0xc0) {
goto __1032
}
if !(fc&0x20 == Tuint32_t(0)) {
goto __1033
}
fc = fc&0x1f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&(*Theapframe)(unsafe.Pointer(F)).Feptr, 1))))&0x3f
goto __1034
__1033:
if !(fc&0x10 == Tuint32_t(0)) {
goto __1035
}
fc = fc&0x0f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += uintptr(2)
goto __1036
__1035:
if !(fc&0x08 == Tuint32_t(0)) {
goto __1037
}
fc = fc&0x07<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += uintptr(3)
goto __1038
__1037:
if !(fc&0x04 == Tuint32_t(0)) {
goto __1039
}
fc = fc&0x03<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 3)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += uintptr(4)
goto __1040
__1039:
fc = fc&0x01<<30 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0x3f<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 3)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 4)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += uintptr(5)
__1040:
;
__1038:
;
__1036:
;
__1034:
;
__1032:
;
prop = uintptr(unsafe.Pointer(&X_pcre2_ucd_records_8)) + uintptr(X_pcre2_ucd_stage2_8[int32(X_pcre2_ucd_stage1_8[int32(fc)/DUCD_BLOCK_SIZE])*DUCD_BLOCK_SIZE+int32(fc)%DUCD_BLOCK_SIZE])*12
notmatch = libc.Bool32(int32((*Theapframe)(unsafe.Pointer(F)).Fop) == OP_NOTPROP)
switch int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode + 1))) {
case DPT_ANY:
goto __1042
case DPT_LAMP:
goto __1043
case DPT_GC:
goto __1044
case DPT_PC:
goto __1045
case DPT_SC:
goto __1046
case DPT_SCX:
goto __1047
// These are specials
case DPT_ALNUM:
goto __1048
// Perl space used to exclude VT, but from Perl 5.18 it is included,
// which means that Perl space and POSIX space are now identical. PCRE
// was changed at release 8.34.
case DPT_SPACE:
goto __1049 // Perl space
case DPT_PXSPACE:
goto __1050
case DPT_WORD:
goto __1051
case DPT_CLIST:
goto __1052
case DPT_UCNC:
goto __1053
case DPT_BIDICL:
goto __1054
case DPT_BOOL:
goto __1055
// This should never occur
default:
goto __1056
}
goto __1041
__1042:
if !(notmatch != 0) {
goto __1057
}
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__1057:
;
goto __1041
__1043:
if !(libc.Bool32(int32((*Tucd_record)(unsafe.Pointer(prop)).Fchartype) == ucp_Lu || int32((*Tucd_record)(unsafe.Pointer(prop)).Fchartype) == ucp_Ll || int32((*Tucd_record)(unsafe.Pointer(prop)).Fchartype) == ucp_Lt) == notmatch) {
goto __1058
}
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__1058:
;
goto __1041
__1044:
if !(libc.Bool32(Tuint32_t(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode + 2))) == X_pcre2_ucp_gentype_8[(*Tucd_record)(unsafe.Pointer(prop)).Fchartype]) == notmatch) {
goto __1059
}
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__1059:
;
goto __1041
__1045:
if !(libc.Bool32(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode + 2))) == int32((*Tucd_record)(unsafe.Pointer(prop)).Fchartype)) == notmatch) {
goto __1060
}
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__1060:
;
goto __1041
__1046:
if !(libc.Bool32(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode + 2))) == int32((*Tucd_record)(unsafe.Pointer(prop)).Fscript)) == notmatch) {
goto __1061
}
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__1061:
;
goto __1041
__1047:
ok = libc.Bool32(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode + 2))) == int32((*Tucd_record)(unsafe.Pointer(prop)).Fscript) || *(*Tuint32_t)(unsafe.Pointer(uintptr(unsafe.Pointer(&X_pcre2_ucd_script_sets_8)) + uintptr(int32((*Tucd_record)(unsafe.Pointer(prop)).Fscriptx_bidiclass)&DUCD_SCRIPTX_MASK)*4 + uintptr(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode + 2)))/32)*4))&(uint32(1)<<(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode + 2)))%32)) != Tuint32_t(0))
if !(ok == notmatch) {
goto __1062
}
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__1062:
;
goto __1041
// These are specials
__1048:
if !(libc.Bool32(X_pcre2_ucp_gentype_8[(*Tucd_record)(unsafe.Pointer(prop)).Fchartype] == ucp_L || X_pcre2_ucp_gentype_8[(*Tucd_record)(unsafe.Pointer(prop)).Fchartype] == ucp_N) == notmatch) {
goto __1063
}
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__1063:
;
goto __1041
// Perl space used to exclude VT, but from Perl 5.18 it is included,
// which means that Perl space and POSIX space are now identical. PCRE
// was changed at release 8.34.
__1049: // Perl space
__1050: // POSIX space
switch fc {
case Tuint32_t('\011'):
goto __1065
case Tuint32_t('\040'):
goto __1066
case libc.Uint32FromUint8(libc.Uint8FromInt32(160)):
goto __1067
case Tuint32_t(0x1680):
goto __1068 /* OGHAM SPACE MARK */
case Tuint32_t(0x180e):
goto __1069 /* MONGOLIAN VOWEL SEPARATOR */
case Tuint32_t(0x2000):
goto __1070 /* EN QUAD */
case Tuint32_t(0x2001):
goto __1071 /* EM QUAD */
case Tuint32_t(0x2002):
goto __1072 /* EN SPACE */
case Tuint32_t(0x2003):
goto __1073 /* EM SPACE */
case Tuint32_t(0x2004):
goto __1074 /* THREE-PER-EM SPACE */
case Tuint32_t(0x2005):
goto __1075 /* FOUR-PER-EM SPACE */
case Tuint32_t(0x2006):
goto __1076 /* SIX-PER-EM SPACE */
case Tuint32_t(0x2007):
goto __1077 /* FIGURE SPACE */
case Tuint32_t(0x2008):
goto __1078 /* PUNCTUATION SPACE */
case Tuint32_t(0x2009):
goto __1079 /* THIN SPACE */
case Tuint32_t(0x200A):
goto __1080 /* HAIR SPACE */
case Tuint32_t(0x202f):
goto __1081 /* NARROW NO-BREAK SPACE */
case Tuint32_t(0x205f):
goto __1082 /* MEDIUM MATHEMATICAL SPACE */
case Tuint32_t(0x3000):
goto __1083
case Tuint32_t('\012'):
goto __1084
case Tuint32_t('\013'):
goto __1085
case Tuint32_t('\014'):
goto __1086
case Tuint32_t('\015'):
goto __1087
case libc.Uint32FromUint8(libc.Uint8FromInt32(133)):
goto __1088
case Tuint32_t(0x2028):
goto __1089 /* LINE SEPARATOR */
case Tuint32_t(0x2029):
goto __1090
default:
goto __1091
}
goto __1064
__1065:
__1066:
__1067:
__1068: /* OGHAM SPACE MARK */
__1069: /* MONGOLIAN VOWEL SEPARATOR */
__1070: /* EN QUAD */
__1071: /* EM QUAD */
__1072: /* EN SPACE */
__1073: /* EM SPACE */
__1074: /* THREE-PER-EM SPACE */
__1075: /* FOUR-PER-EM SPACE */
__1076: /* SIX-PER-EM SPACE */
__1077: /* FIGURE SPACE */
__1078: /* PUNCTUATION SPACE */
__1079: /* THIN SPACE */
__1080: /* HAIR SPACE */
__1081: /* NARROW NO-BREAK SPACE */
__1082: /* MEDIUM MATHEMATICAL SPACE */
__1083:
__1084:
__1085:
__1086:
__1087:
__1088:
__1089: /* LINE SEPARATOR */
__1090:
if !(notmatch != 0) {
goto __1092
}
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__1092:
;
goto __1064
__1091:
if !(libc.Bool32(X_pcre2_ucp_gentype_8[(*Tucd_record)(unsafe.Pointer(prop)).Fchartype] == ucp_Z) == notmatch) {
goto __1093
}
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__1093:
;
goto __1064
__1064:
;
goto __1041
__1051:
if !(libc.Bool32(X_pcre2_ucp_gentype_8[(*Tucd_record)(unsafe.Pointer(prop)).Fchartype] == ucp_L || X_pcre2_ucp_gentype_8[(*Tucd_record)(unsafe.Pointer(prop)).Fchartype] == ucp_N || fc == Tuint32_t('\137')) == notmatch) {
goto __1094
}
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__1094:
;
goto __1041
__1052:
cp = uintptr(unsafe.Pointer(&X_pcre2_ucd_caseless_sets_8)) + uintptr(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode + 2)))*4
__1095:
if !(fc < *(*Tuint32_t)(unsafe.Pointer(cp))) {
goto __1098
}
if !(notmatch != 0) {
goto __1099
}
goto __1097
goto __1100
__1099:
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__1100:
;
__1098:
;
if !(fc == *(*Tuint32_t)(unsafe.Pointer(libc.PostIncUintptr(&cp, 4)))) {
goto __1101
}
if !(notmatch != 0) {
goto __1102
}
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
goto __1103
__1102:
goto __1097
__1103:
;
__1101:
;
goto __1096
__1096:
goto __1095
goto __1097
__1097:
;
goto __1041
__1053:
if !(libc.Bool32(fc == Tuint32_t('\044') || fc == Tuint32_t('\100') || fc == Tuint32_t('\140') || fc >= Tuint32_t(0xa0) && fc <= Tuint32_t(0xd7ff) || fc >= Tuint32_t(0xe000)) == notmatch) {
goto __1104
}
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__1104:
;
goto __1041
__1054:
if !(libc.Bool32(int32((*Tucd_record)(unsafe.Pointer(prop)).Fscriptx_bidiclass)>>DUCD_BIDICLASS_SHIFT == int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode + 2)))) == notmatch) {
goto __1105
}
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__1105:
;
goto __1041
__1055:
ok1 = libc.Bool32(*(*Tuint32_t)(unsafe.Pointer(uintptr(unsafe.Pointer(&X_pcre2_ucd_boolprop_sets_8)) + uintptr(int32((*Tucd_record)(unsafe.Pointer(prop)).Fbprops)&DUCD_BPROPS_MASK)*4 + uintptr(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode + 2)))/32)*4))&(uint32(1)<<(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode + 2)))%32)) != Tuint32_t(0))
if !(ok1 == notmatch) {
goto __1106
}
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__1106:
;
goto __1041
// This should never occur
__1056:
return -44
__1041:
;
*(*TPCRE2_SPTR8)(unsafe.Pointer(F)) += uintptr(3)
goto __13
// =====================================================================
// Match an extended Unicode sequence. We will get here only if the support
// is in the binary; otherwise a compile-time error occurs.
__93:
if !((*Theapframe)(unsafe.Pointer(F)).Feptr >= (*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject) {
goto __1107
}
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) != 0 && ((*Theapframe)(unsafe.Pointer(F)).Feptr > (*Tmatch_block_8)(unsafe.Pointer(mb)).Fstart_used_ptr || (*Tmatch_block_8)(unsafe.Pointer(mb)).Fallowemptypartial != 0)) {
goto __1109
}
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fhitend = DTRUE
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) > 1) {
goto __1110
}
return -2
__1110:
;
__1109:
;
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
goto __1108
__1107:
fc = Tuint32_t(*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&(*Theapframe)(unsafe.Pointer(F)).Feptr, 1))))
if !(utf != 0 && fc >= 0xc0) {
goto __1111
}
if !(fc&0x20 == Tuint32_t(0)) {
goto __1112
}
fc = fc&0x1f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&(*Theapframe)(unsafe.Pointer(F)).Feptr, 1))))&0x3f
goto __1113
__1112:
if !(fc&0x10 == Tuint32_t(0)) {
goto __1114
}
fc = fc&0x0f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += uintptr(2)
goto __1115
__1114:
if !(fc&0x08 == Tuint32_t(0)) {
goto __1116
}
fc = fc&0x07<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += uintptr(3)
goto __1117
__1116:
if !(fc&0x04 == Tuint32_t(0)) {
goto __1118
}
fc = fc&0x03<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 3)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += uintptr(4)
goto __1119
__1118:
fc = fc&0x01<<30 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0x3f<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 3)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 4)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += uintptr(5)
__1119:
;
__1117:
;
__1115:
;
__1113:
;
__1111:
;
(*Theapframe)(unsafe.Pointer(F)).Feptr = X_pcre2_extuni_8(tls, fc, (*Theapframe)(unsafe.Pointer(F)).Feptr, (*Tmatch_block_8)(unsafe.Pointer(mb)).Fstart_subject, (*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject, utf,
uintptr(0))
__1108:
;
if !((*Theapframe)(unsafe.Pointer(F)).Feptr >= (*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject) {
goto __1120
}
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) != 0 && ((*Theapframe)(unsafe.Pointer(F)).Feptr > (*Tmatch_block_8)(unsafe.Pointer(mb)).Fstart_used_ptr || (*Tmatch_block_8)(unsafe.Pointer(mb)).Fallowemptypartial != 0)) {
goto __1121
}
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fhitend = DTRUE
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) > 1) {
goto __1122
}
return -2
__1122:
;
__1121:
;
__1120:
;
(*Theapframe)(unsafe.Pointer(F)).Fecode++
goto __13
// =====================================================================
// Match a single character type repeatedly. Note that the property type
// does not need to be in a stack frame as it is not used within an RMATCH()
// loop.
__94:
*(*Tuint32_t)(unsafe.Pointer(F + 56)) = libc.AssignPtrUint32(F+56+1*4, uint32(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode + 1)))<<8|int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode + 2)))))
*(*TPCRE2_SPTR8)(unsafe.Pointer(F)) += TPCRE2_SPTR8(1 + DIMM2_SIZE)
goto REPEATTYPE
__95:
__96:
*(*Tuint32_t)(unsafe.Pointer(F + 56)) = Tuint32_t(0)
*(*Tuint32_t)(unsafe.Pointer(F + 56 + 1*4)) = uint32(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode + 1)))<<8 | int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode + 2))))
if int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode))) == OP_TYPEMINUPTO {
reptype = REPTYPE_MIN
} else {
reptype = REPTYPE_MAX
}
*(*TPCRE2_SPTR8)(unsafe.Pointer(F)) += TPCRE2_SPTR8(1 + DIMM2_SIZE)
goto REPEATTYPE
__97:
reptype = REPTYPE_POS
*(*Tuint32_t)(unsafe.Pointer(F + 56)) = Tuint32_t(0)
*(*Tuint32_t)(unsafe.Pointer(F + 56 + 1*4)) = 4294967295
(*Theapframe)(unsafe.Pointer(F)).Fecode++
goto REPEATTYPE
__98:
reptype = REPTYPE_POS
*(*Tuint32_t)(unsafe.Pointer(F + 56)) = Tuint32_t(1)
*(*Tuint32_t)(unsafe.Pointer(F + 56 + 1*4)) = 4294967295
(*Theapframe)(unsafe.Pointer(F)).Fecode++
goto REPEATTYPE
__99:
reptype = REPTYPE_POS
*(*Tuint32_t)(unsafe.Pointer(F + 56)) = Tuint32_t(0)
*(*Tuint32_t)(unsafe.Pointer(F + 56 + 1*4)) = Tuint32_t(1)
(*Theapframe)(unsafe.Pointer(F)).Fecode++
goto REPEATTYPE
__100:
reptype = REPTYPE_POS
*(*Tuint32_t)(unsafe.Pointer(F + 56)) = Tuint32_t(0)
*(*Tuint32_t)(unsafe.Pointer(F + 56 + 1*4)) = uint32(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode + 1)))<<8 | int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode + 2))))
*(*TPCRE2_SPTR8)(unsafe.Pointer(F)) += TPCRE2_SPTR8(1 + DIMM2_SIZE)
goto REPEATTYPE
__101:
__102:
__103:
__104:
__105:
__106:
fc = Tuint32_t(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&(*Theapframe)(unsafe.Pointer(F)).Fecode, 1)))) - OP_TYPESTAR)
*(*Tuint32_t)(unsafe.Pointer(F + 56)) = rep_min[fc]
*(*Tuint32_t)(unsafe.Pointer(F + 56 + 1*4)) = rep_max[fc]
reptype = rep_typ[fc]
// Common code for all repeated character type matches.
REPEATTYPE:
*(*Tuint32_t)(unsafe.Pointer(F + 56 + 2*4)) = Tuint32_t(*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&(*Theapframe)(unsafe.Pointer(F)).Fecode, 1)))) // Code for the character type
if !(*(*Tuint32_t)(unsafe.Pointer(F + 56 + 2*4)) == OP_PROP || *(*Tuint32_t)(unsafe.Pointer(F + 56 + 2*4)) == OP_NOTPROP) {
goto __1123
}
proptype = int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&(*Theapframe)(unsafe.Pointer(F)).Fecode, 1))))
*(*Tuint32_t)(unsafe.Pointer(F + 56 + 3*4)) = Tuint32_t(*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&(*Theapframe)(unsafe.Pointer(F)).Fecode, 1))))
goto __1124
__1123:
proptype = -1
__1124:
;
// First, ensure the minimum number of matches are present. Use inline
// code for maximizing the speed, and do the type test once at the start
// (i.e. keep it out of the loops). As there are no calls to RMATCH in the
// loops, we can use an ordinary variable for "notmatch". The code for UTF
// mode is separated out for tidiness, except for Unicode property tests.
if !(*(*Tuint32_t)(unsafe.Pointer(F + 56)) > Tuint32_t(0)) {
goto __1125
}
if !(proptype >= 0) {
goto __1126
} /* Property tests in all modes */
notmatch1 = libc.Bool32(*(*Tuint32_t)(unsafe.Pointer(F + 56 + 2*4)) == OP_NOTPROP)
switch proptype {
case DPT_ANY:
goto __1129
case DPT_LAMP:
goto __1130
case DPT_GC:
goto __1131
case DPT_PC:
goto __1132
case DPT_SC:
goto __1133
case DPT_SCX:
goto __1134
case DPT_ALNUM:
goto __1135
// Perl space used to exclude VT, but from Perl 5.18 it is included,
// which means that Perl space and POSIX space are now identical. PCRE
// was changed at release 8.34.
case DPT_SPACE:
goto __1136 // Perl space
case DPT_PXSPACE:
goto __1137
case DPT_WORD:
goto __1138
case DPT_CLIST:
goto __1139
case DPT_UCNC:
goto __1140
case DPT_BIDICL:
goto __1141
case DPT_BOOL:
goto __1142
// This should not occur
default:
goto __1143
}
goto __1128
__1129:
if !(notmatch1 != 0) {
goto __1144
}
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__1144:
;
i = Tuint32_t(1)
__1145:
if !(i <= *(*Tuint32_t)(unsafe.Pointer(F + 56))) {
goto __1147
}
if !((*Theapframe)(unsafe.Pointer(F)).Feptr >= (*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject) {
goto __1148
}
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) != 0 && ((*Theapframe)(unsafe.Pointer(F)).Feptr > (*Tmatch_block_8)(unsafe.Pointer(mb)).Fstart_used_ptr || (*Tmatch_block_8)(unsafe.Pointer(mb)).Fallowemptypartial != 0)) {
goto __1149
}
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fhitend = DTRUE
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) > 1) {
goto __1150
}
return -2
__1150:
;
__1149:
;
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__1148:
;
fc = Tuint32_t(*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&(*Theapframe)(unsafe.Pointer(F)).Feptr, 1))))
if !(utf != 0 && fc >= 0xc0) {
goto __1151
}
if !(fc&0x20 == Tuint32_t(0)) {
goto __1152
}
fc = fc&0x1f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&(*Theapframe)(unsafe.Pointer(F)).Feptr, 1))))&0x3f
goto __1153
__1152:
if !(fc&0x10 == Tuint32_t(0)) {
goto __1154
}
fc = fc&0x0f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += uintptr(2)
goto __1155
__1154:
if !(fc&0x08 == Tuint32_t(0)) {
goto __1156
}
fc = fc&0x07<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += uintptr(3)
goto __1157
__1156:
if !(fc&0x04 == Tuint32_t(0)) {
goto __1158
}
fc = fc&0x03<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 3)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += uintptr(4)
goto __1159
__1158:
fc = fc&0x01<<30 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0x3f<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 3)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 4)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += uintptr(5)
__1159:
;
__1157:
;
__1155:
;
__1153:
;
__1151:
;
goto __1146
__1146:
i++
goto __1145
goto __1147
__1147:
;
goto __1128
__1130:
i = Tuint32_t(1)
__1160:
if !(i <= *(*Tuint32_t)(unsafe.Pointer(F + 56))) {
goto __1162
}
if !((*Theapframe)(unsafe.Pointer(F)).Feptr >= (*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject) {
goto __1163
}
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) != 0 && ((*Theapframe)(unsafe.Pointer(F)).Feptr > (*Tmatch_block_8)(unsafe.Pointer(mb)).Fstart_used_ptr || (*Tmatch_block_8)(unsafe.Pointer(mb)).Fallowemptypartial != 0)) {
goto __1164
}
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fhitend = DTRUE
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) > 1) {
goto __1165
}
return -2
__1165:
;
__1164:
;
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__1163:
;
fc = Tuint32_t(*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&(*Theapframe)(unsafe.Pointer(F)).Feptr, 1))))
if !(utf != 0 && fc >= 0xc0) {
goto __1166
}
if !(fc&0x20 == Tuint32_t(0)) {
goto __1167
}
fc = fc&0x1f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&(*Theapframe)(unsafe.Pointer(F)).Feptr, 1))))&0x3f
goto __1168
__1167:
if !(fc&0x10 == Tuint32_t(0)) {
goto __1169
}
fc = fc&0x0f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += uintptr(2)
goto __1170
__1169:
if !(fc&0x08 == Tuint32_t(0)) {
goto __1171
}
fc = fc&0x07<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += uintptr(3)
goto __1172
__1171:
if !(fc&0x04 == Tuint32_t(0)) {
goto __1173
}
fc = fc&0x03<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 3)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += uintptr(4)
goto __1174
__1173:
fc = fc&0x01<<30 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0x3f<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 3)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 4)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += uintptr(5)
__1174:
;
__1172:
;
__1170:
;
__1168:
;
__1166:
;
chartype = int32((*Tucd_record)(unsafe.Pointer(uintptr(unsafe.Pointer(&X_pcre2_ucd_records_8)) + uintptr(X_pcre2_ucd_stage2_8[int32(X_pcre2_ucd_stage1_8[int32(fc)/DUCD_BLOCK_SIZE])*DUCD_BLOCK_SIZE+int32(fc)%DUCD_BLOCK_SIZE])*12)).Fchartype)
if !(libc.Bool32(chartype == ucp_Lu || chartype == ucp_Ll || chartype == ucp_Lt) == notmatch1) {
goto __1175
}
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__1175:
;
goto __1161
__1161:
i++
goto __1160
goto __1162
__1162:
;
goto __1128
__1131:
i = Tuint32_t(1)
__1176:
if !(i <= *(*Tuint32_t)(unsafe.Pointer(F + 56))) {
goto __1178
}
if !((*Theapframe)(unsafe.Pointer(F)).Feptr >= (*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject) {
goto __1179
}
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) != 0 && ((*Theapframe)(unsafe.Pointer(F)).Feptr > (*Tmatch_block_8)(unsafe.Pointer(mb)).Fstart_used_ptr || (*Tmatch_block_8)(unsafe.Pointer(mb)).Fallowemptypartial != 0)) {
goto __1180
}
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fhitend = DTRUE
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) > 1) {
goto __1181
}
return -2
__1181:
;
__1180:
;
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__1179:
;
fc = Tuint32_t(*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&(*Theapframe)(unsafe.Pointer(F)).Feptr, 1))))
if !(utf != 0 && fc >= 0xc0) {
goto __1182
}
if !(fc&0x20 == Tuint32_t(0)) {
goto __1183
}
fc = fc&0x1f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&(*Theapframe)(unsafe.Pointer(F)).Feptr, 1))))&0x3f
goto __1184
__1183:
if !(fc&0x10 == Tuint32_t(0)) {
goto __1185
}
fc = fc&0x0f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += uintptr(2)
goto __1186
__1185:
if !(fc&0x08 == Tuint32_t(0)) {
goto __1187
}
fc = fc&0x07<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += uintptr(3)
goto __1188
__1187:
if !(fc&0x04 == Tuint32_t(0)) {
goto __1189
}
fc = fc&0x03<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 3)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += uintptr(4)
goto __1190
__1189:
fc = fc&0x01<<30 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0x3f<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 3)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 4)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += uintptr(5)
__1190:
;
__1188:
;
__1186:
;
__1184:
;
__1182:
;
if !(libc.Bool32(X_pcre2_ucp_gentype_8[(*Tucd_record)(unsafe.Pointer(uintptr(unsafe.Pointer(&X_pcre2_ucd_records_8))+uintptr(X_pcre2_ucd_stage2_8[int32(X_pcre2_ucd_stage1_8[int32(fc)/DUCD_BLOCK_SIZE])*DUCD_BLOCK_SIZE+int32(fc)%DUCD_BLOCK_SIZE])*12)).Fchartype] == *(*Tuint32_t)(unsafe.Pointer(F + 56 + 3*4))) == notmatch1) {
goto __1191
}
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__1191:
;
goto __1177
__1177:
i++
goto __1176
goto __1178
__1178:
;
goto __1128
__1132:
i = Tuint32_t(1)
__1192:
if !(i <= *(*Tuint32_t)(unsafe.Pointer(F + 56))) {
goto __1194
}
if !((*Theapframe)(unsafe.Pointer(F)).Feptr >= (*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject) {
goto __1195
}
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) != 0 && ((*Theapframe)(unsafe.Pointer(F)).Feptr > (*Tmatch_block_8)(unsafe.Pointer(mb)).Fstart_used_ptr || (*Tmatch_block_8)(unsafe.Pointer(mb)).Fallowemptypartial != 0)) {
goto __1196
}
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fhitend = DTRUE
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) > 1) {
goto __1197
}
return -2
__1197:
;
__1196:
;
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__1195:
;
fc = Tuint32_t(*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&(*Theapframe)(unsafe.Pointer(F)).Feptr, 1))))
if !(utf != 0 && fc >= 0xc0) {
goto __1198
}
if !(fc&0x20 == Tuint32_t(0)) {
goto __1199
}
fc = fc&0x1f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&(*Theapframe)(unsafe.Pointer(F)).Feptr, 1))))&0x3f
goto __1200
__1199:
if !(fc&0x10 == Tuint32_t(0)) {
goto __1201
}
fc = fc&0x0f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += uintptr(2)
goto __1202
__1201:
if !(fc&0x08 == Tuint32_t(0)) {
goto __1203
}
fc = fc&0x07<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += uintptr(3)
goto __1204
__1203:
if !(fc&0x04 == Tuint32_t(0)) {
goto __1205
}
fc = fc&0x03<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 3)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += uintptr(4)
goto __1206
__1205:
fc = fc&0x01<<30 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0x3f<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 3)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 4)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += uintptr(5)
__1206:
;
__1204:
;
__1202:
;
__1200:
;
__1198:
;
if !(libc.Bool32(Tuint32_t((*Tucd_record)(unsafe.Pointer(uintptr(unsafe.Pointer(&X_pcre2_ucd_records_8))+uintptr(X_pcre2_ucd_stage2_8[int32(X_pcre2_ucd_stage1_8[int32(fc)/DUCD_BLOCK_SIZE])*DUCD_BLOCK_SIZE+int32(fc)%DUCD_BLOCK_SIZE])*12)).Fchartype) == *(*Tuint32_t)(unsafe.Pointer(F + 56 + 3*4))) == notmatch1) {
goto __1207
}
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__1207:
;
goto __1193
__1193:
i++
goto __1192
goto __1194
__1194:
;
goto __1128
__1133:
i = Tuint32_t(1)
__1208:
if !(i <= *(*Tuint32_t)(unsafe.Pointer(F + 56))) {
goto __1210
}
if !((*Theapframe)(unsafe.Pointer(F)).Feptr >= (*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject) {
goto __1211
}
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) != 0 && ((*Theapframe)(unsafe.Pointer(F)).Feptr > (*Tmatch_block_8)(unsafe.Pointer(mb)).Fstart_used_ptr || (*Tmatch_block_8)(unsafe.Pointer(mb)).Fallowemptypartial != 0)) {
goto __1212
}
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fhitend = DTRUE
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) > 1) {
goto __1213
}
return -2
__1213:
;
__1212:
;
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__1211:
;
fc = Tuint32_t(*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&(*Theapframe)(unsafe.Pointer(F)).Feptr, 1))))
if !(utf != 0 && fc >= 0xc0) {
goto __1214
}
if !(fc&0x20 == Tuint32_t(0)) {
goto __1215
}
fc = fc&0x1f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&(*Theapframe)(unsafe.Pointer(F)).Feptr, 1))))&0x3f
goto __1216
__1215:
if !(fc&0x10 == Tuint32_t(0)) {
goto __1217
}
fc = fc&0x0f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += uintptr(2)
goto __1218
__1217:
if !(fc&0x08 == Tuint32_t(0)) {
goto __1219
}
fc = fc&0x07<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += uintptr(3)
goto __1220
__1219:
if !(fc&0x04 == Tuint32_t(0)) {
goto __1221
}
fc = fc&0x03<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 3)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += uintptr(4)
goto __1222
__1221:
fc = fc&0x01<<30 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0x3f<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 3)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 4)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += uintptr(5)
__1222:
;
__1220:
;
__1218:
;
__1216:
;
__1214:
;
if !(libc.Bool32(Tuint32_t((*Tucd_record)(unsafe.Pointer(uintptr(unsafe.Pointer(&X_pcre2_ucd_records_8))+uintptr(X_pcre2_ucd_stage2_8[int32(X_pcre2_ucd_stage1_8[int32(fc)/DUCD_BLOCK_SIZE])*DUCD_BLOCK_SIZE+int32(fc)%DUCD_BLOCK_SIZE])*12)).Fscript) == *(*Tuint32_t)(unsafe.Pointer(F + 56 + 3*4))) == notmatch1) {
goto __1223
}
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__1223:
;
goto __1209
__1209:
i++
goto __1208
goto __1210
__1210:
;
goto __1128
__1134:
i = Tuint32_t(1)
__1224:
if !(i <= *(*Tuint32_t)(unsafe.Pointer(F + 56))) {
goto __1226
}
if !((*Theapframe)(unsafe.Pointer(F)).Feptr >= (*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject) {
goto __1227
}
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) != 0 && ((*Theapframe)(unsafe.Pointer(F)).Feptr > (*Tmatch_block_8)(unsafe.Pointer(mb)).Fstart_used_ptr || (*Tmatch_block_8)(unsafe.Pointer(mb)).Fallowemptypartial != 0)) {
goto __1228
}
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fhitend = DTRUE
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) > 1) {
goto __1229
}
return -2
__1229:
;
__1228:
;
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__1227:
;
fc = Tuint32_t(*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&(*Theapframe)(unsafe.Pointer(F)).Feptr, 1))))
if !(utf != 0 && fc >= 0xc0) {
goto __1230
}
if !(fc&0x20 == Tuint32_t(0)) {
goto __1231
}
fc = fc&0x1f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&(*Theapframe)(unsafe.Pointer(F)).Feptr, 1))))&0x3f
goto __1232
__1231:
if !(fc&0x10 == Tuint32_t(0)) {
goto __1233
}
fc = fc&0x0f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += uintptr(2)
goto __1234
__1233:
if !(fc&0x08 == Tuint32_t(0)) {
goto __1235
}
fc = fc&0x07<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += uintptr(3)
goto __1236
__1235:
if !(fc&0x04 == Tuint32_t(0)) {
goto __1237
}
fc = fc&0x03<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 3)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += uintptr(4)
goto __1238
__1237:
fc = fc&0x01<<30 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0x3f<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 3)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 4)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += uintptr(5)
__1238:
;
__1236:
;
__1234:
;
__1232:
;
__1230:
;
prop1 = uintptr(unsafe.Pointer(&X_pcre2_ucd_records_8)) + uintptr(X_pcre2_ucd_stage2_8[int32(X_pcre2_ucd_stage1_8[int32(fc)/DUCD_BLOCK_SIZE])*DUCD_BLOCK_SIZE+int32(fc)%DUCD_BLOCK_SIZE])*12
ok2 = libc.Bool32(Tuint32_t((*Tucd_record)(unsafe.Pointer(prop1)).Fscript) == *(*Tuint32_t)(unsafe.Pointer(F + 56 + 3*4)) || *(*Tuint32_t)(unsafe.Pointer(uintptr(unsafe.Pointer(&X_pcre2_ucd_script_sets_8)) + uintptr(int32((*Tucd_record)(unsafe.Pointer(prop1)).Fscriptx_bidiclass)&DUCD_SCRIPTX_MASK)*4 + uintptr(*(*Tuint32_t)(unsafe.Pointer(F + 56 + 3*4))/Tuint32_t(32))*4))&(uint32(1)<<(*(*Tuint32_t)(unsafe.Pointer(F + 56 + 3*4))%Tuint32_t(32))) != Tuint32_t(0))
if !(ok2 == notmatch1) {
goto __1239
}
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__1239:
;
goto __1225
__1225:
i++
goto __1224
goto __1226
__1226:
;
goto __1128
__1135:
i = Tuint32_t(1)
__1240:
if !(i <= *(*Tuint32_t)(unsafe.Pointer(F + 56))) {
goto __1242
}
if !((*Theapframe)(unsafe.Pointer(F)).Feptr >= (*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject) {
goto __1243
}
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) != 0 && ((*Theapframe)(unsafe.Pointer(F)).Feptr > (*Tmatch_block_8)(unsafe.Pointer(mb)).Fstart_used_ptr || (*Tmatch_block_8)(unsafe.Pointer(mb)).Fallowemptypartial != 0)) {
goto __1244
}
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fhitend = DTRUE
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) > 1) {
goto __1245
}
return -2
__1245:
;
__1244:
;
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__1243:
;
fc = Tuint32_t(*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&(*Theapframe)(unsafe.Pointer(F)).Feptr, 1))))
if !(utf != 0 && fc >= 0xc0) {
goto __1246
}
if !(fc&0x20 == Tuint32_t(0)) {
goto __1247
}
fc = fc&0x1f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&(*Theapframe)(unsafe.Pointer(F)).Feptr, 1))))&0x3f
goto __1248
__1247:
if !(fc&0x10 == Tuint32_t(0)) {
goto __1249
}
fc = fc&0x0f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += uintptr(2)
goto __1250
__1249:
if !(fc&0x08 == Tuint32_t(0)) {
goto __1251
}
fc = fc&0x07<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += uintptr(3)
goto __1252
__1251:
if !(fc&0x04 == Tuint32_t(0)) {
goto __1253
}
fc = fc&0x03<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 3)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += uintptr(4)
goto __1254
__1253:
fc = fc&0x01<<30 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0x3f<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 3)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 4)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += uintptr(5)
__1254:
;
__1252:
;
__1250:
;
__1248:
;
__1246:
;
category = int32(X_pcre2_ucp_gentype_8[(*Tucd_record)(unsafe.Pointer(uintptr(unsafe.Pointer(&X_pcre2_ucd_records_8))+uintptr(X_pcre2_ucd_stage2_8[int32(X_pcre2_ucd_stage1_8[int32(fc)/DUCD_BLOCK_SIZE])*DUCD_BLOCK_SIZE+int32(fc)%DUCD_BLOCK_SIZE])*12)).Fchartype])
if !(libc.Bool32(category == ucp_L || category == ucp_N) == notmatch1) {
goto __1255
}
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__1255:
;
goto __1241
__1241:
i++
goto __1240
goto __1242
__1242:
;
goto __1128
// Perl space used to exclude VT, but from Perl 5.18 it is included,
// which means that Perl space and POSIX space are now identical. PCRE
// was changed at release 8.34.
__1136: // Perl space
__1137: // POSIX space
i = Tuint32_t(1)
__1256:
if !(i <= *(*Tuint32_t)(unsafe.Pointer(F + 56))) {
goto __1258
}
if !((*Theapframe)(unsafe.Pointer(F)).Feptr >= (*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject) {
goto __1259
}
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) != 0 && ((*Theapframe)(unsafe.Pointer(F)).Feptr > (*Tmatch_block_8)(unsafe.Pointer(mb)).Fstart_used_ptr || (*Tmatch_block_8)(unsafe.Pointer(mb)).Fallowemptypartial != 0)) {
goto __1260
}
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fhitend = DTRUE
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) > 1) {
goto __1261
}
return -2
__1261:
;
__1260:
;
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__1259:
;
fc = Tuint32_t(*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&(*Theapframe)(unsafe.Pointer(F)).Feptr, 1))))
if !(utf != 0 && fc >= 0xc0) {
goto __1262
}
if !(fc&0x20 == Tuint32_t(0)) {
goto __1263
}
fc = fc&0x1f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&(*Theapframe)(unsafe.Pointer(F)).Feptr, 1))))&0x3f
goto __1264
__1263:
if !(fc&0x10 == Tuint32_t(0)) {
goto __1265
}
fc = fc&0x0f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += uintptr(2)
goto __1266
__1265:
if !(fc&0x08 == Tuint32_t(0)) {
goto __1267
}
fc = fc&0x07<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += uintptr(3)
goto __1268
__1267:
if !(fc&0x04 == Tuint32_t(0)) {
goto __1269
}
fc = fc&0x03<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 3)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += uintptr(4)
goto __1270
__1269:
fc = fc&0x01<<30 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0x3f<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 3)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 4)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += uintptr(5)
__1270:
;
__1268:
;
__1266:
;
__1264:
;
__1262:
;
switch fc {
case Tuint32_t('\011'):
goto __1272
case Tuint32_t('\040'):
goto __1273
case libc.Uint32FromUint8(libc.Uint8FromInt32(160)):
goto __1274
case Tuint32_t(0x1680):
goto __1275 /* OGHAM SPACE MARK */
case Tuint32_t(0x180e):
goto __1276 /* MONGOLIAN VOWEL SEPARATOR */
case Tuint32_t(0x2000):
goto __1277 /* EN QUAD */
case Tuint32_t(0x2001):
goto __1278 /* EM QUAD */
case Tuint32_t(0x2002):
goto __1279 /* EN SPACE */
case Tuint32_t(0x2003):
goto __1280 /* EM SPACE */
case Tuint32_t(0x2004):
goto __1281 /* THREE-PER-EM SPACE */
case Tuint32_t(0x2005):
goto __1282 /* FOUR-PER-EM SPACE */
case Tuint32_t(0x2006):
goto __1283 /* SIX-PER-EM SPACE */
case Tuint32_t(0x2007):
goto __1284 /* FIGURE SPACE */
case Tuint32_t(0x2008):
goto __1285 /* PUNCTUATION SPACE */
case Tuint32_t(0x2009):
goto __1286 /* THIN SPACE */
case Tuint32_t(0x200A):
goto __1287 /* HAIR SPACE */
case Tuint32_t(0x202f):
goto __1288 /* NARROW NO-BREAK SPACE */
case Tuint32_t(0x205f):
goto __1289 /* MEDIUM MATHEMATICAL SPACE */
case Tuint32_t(0x3000):
goto __1290
case Tuint32_t('\012'):
goto __1291
case Tuint32_t('\013'):
goto __1292
case Tuint32_t('\014'):
goto __1293
case Tuint32_t('\015'):
goto __1294
case libc.Uint32FromUint8(libc.Uint8FromInt32(133)):
goto __1295
case Tuint32_t(0x2028):
goto __1296 /* LINE SEPARATOR */
case Tuint32_t(0x2029):
goto __1297
default:
goto __1298
}
goto __1271
__1272:
__1273:
__1274:
__1275: /* OGHAM SPACE MARK */
__1276: /* MONGOLIAN VOWEL SEPARATOR */
__1277: /* EN QUAD */
__1278: /* EM QUAD */
__1279: /* EN SPACE */
__1280: /* EM SPACE */
__1281: /* THREE-PER-EM SPACE */
__1282: /* FOUR-PER-EM SPACE */
__1283: /* SIX-PER-EM SPACE */
__1284: /* FIGURE SPACE */
__1285: /* PUNCTUATION SPACE */
__1286: /* THIN SPACE */
__1287: /* HAIR SPACE */
__1288: /* NARROW NO-BREAK SPACE */
__1289: /* MEDIUM MATHEMATICAL SPACE */
__1290:
__1291:
__1292:
__1293:
__1294:
__1295:
__1296: /* LINE SEPARATOR */
__1297:
if !(notmatch1 != 0) {
goto __1299
}
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__1299:
;
goto __1271
__1298:
if !(libc.Bool32(X_pcre2_ucp_gentype_8[(*Tucd_record)(unsafe.Pointer(uintptr(unsafe.Pointer(&X_pcre2_ucd_records_8))+uintptr(X_pcre2_ucd_stage2_8[int32(X_pcre2_ucd_stage1_8[int32(fc)/DUCD_BLOCK_SIZE])*DUCD_BLOCK_SIZE+int32(fc)%DUCD_BLOCK_SIZE])*12)).Fchartype] == ucp_Z) == notmatch1) {
goto __1300
}
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__1300:
;
goto __1271
__1271:
;
goto __1257
__1257:
i++
goto __1256
goto __1258
__1258:
;
goto __1128
__1138:
i = Tuint32_t(1)
__1301:
if !(i <= *(*Tuint32_t)(unsafe.Pointer(F + 56))) {
goto __1303
}
if !((*Theapframe)(unsafe.Pointer(F)).Feptr >= (*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject) {
goto __1304
}
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) != 0 && ((*Theapframe)(unsafe.Pointer(F)).Feptr > (*Tmatch_block_8)(unsafe.Pointer(mb)).Fstart_used_ptr || (*Tmatch_block_8)(unsafe.Pointer(mb)).Fallowemptypartial != 0)) {
goto __1305
}
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fhitend = DTRUE
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) > 1) {
goto __1306
}
return -2
__1306:
;
__1305:
;
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__1304:
;
fc = Tuint32_t(*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&(*Theapframe)(unsafe.Pointer(F)).Feptr, 1))))
if !(utf != 0 && fc >= 0xc0) {
goto __1307
}
if !(fc&0x20 == Tuint32_t(0)) {
goto __1308
}
fc = fc&0x1f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&(*Theapframe)(unsafe.Pointer(F)).Feptr, 1))))&0x3f
goto __1309
__1308:
if !(fc&0x10 == Tuint32_t(0)) {
goto __1310
}
fc = fc&0x0f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += uintptr(2)
goto __1311
__1310:
if !(fc&0x08 == Tuint32_t(0)) {
goto __1312
}
fc = fc&0x07<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += uintptr(3)
goto __1313
__1312:
if !(fc&0x04 == Tuint32_t(0)) {
goto __1314
}
fc = fc&0x03<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 3)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += uintptr(4)
goto __1315
__1314:
fc = fc&0x01<<30 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0x3f<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 3)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 4)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += uintptr(5)
__1315:
;
__1313:
;
__1311:
;
__1309:
;
__1307:
;
category1 = int32(X_pcre2_ucp_gentype_8[(*Tucd_record)(unsafe.Pointer(uintptr(unsafe.Pointer(&X_pcre2_ucd_records_8))+uintptr(X_pcre2_ucd_stage2_8[int32(X_pcre2_ucd_stage1_8[int32(fc)/DUCD_BLOCK_SIZE])*DUCD_BLOCK_SIZE+int32(fc)%DUCD_BLOCK_SIZE])*12)).Fchartype])
if !(libc.Bool32(category1 == ucp_L || category1 == ucp_N || fc == Tuint32_t('\137')) == notmatch1) {
goto __1316
}
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__1316:
;
goto __1302
__1302:
i++
goto __1301
goto __1303
__1303:
;
goto __1128
__1139:
i = Tuint32_t(1)
__1317:
if !(i <= *(*Tuint32_t)(unsafe.Pointer(F + 56))) {
goto __1319
}
if !((*Theapframe)(unsafe.Pointer(F)).Feptr >= (*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject) {
goto __1320
}
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) != 0 && ((*Theapframe)(unsafe.Pointer(F)).Feptr > (*Tmatch_block_8)(unsafe.Pointer(mb)).Fstart_used_ptr || (*Tmatch_block_8)(unsafe.Pointer(mb)).Fallowemptypartial != 0)) {
goto __1321
}
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fhitend = DTRUE
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) > 1) {
goto __1322
}
return -2
__1322:
;
__1321:
;
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__1320:
;
fc = Tuint32_t(*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&(*Theapframe)(unsafe.Pointer(F)).Feptr, 1))))
if !(utf != 0 && fc >= 0xc0) {
goto __1323
}
if !(fc&0x20 == Tuint32_t(0)) {
goto __1324
}
fc = fc&0x1f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&(*Theapframe)(unsafe.Pointer(F)).Feptr, 1))))&0x3f
goto __1325
__1324:
if !(fc&0x10 == Tuint32_t(0)) {
goto __1326
}
fc = fc&0x0f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += uintptr(2)
goto __1327
__1326:
if !(fc&0x08 == Tuint32_t(0)) {
goto __1328
}
fc = fc&0x07<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += uintptr(3)
goto __1329
__1328:
if !(fc&0x04 == Tuint32_t(0)) {
goto __1330
}
fc = fc&0x03<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 3)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += uintptr(4)
goto __1331
__1330:
fc = fc&0x01<<30 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0x3f<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 3)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 4)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += uintptr(5)
__1331:
;
__1329:
;
__1327:
;
__1325:
;
__1323:
;
cp1 = uintptr(unsafe.Pointer(&X_pcre2_ucd_caseless_sets_8)) + uintptr(*(*Tuint32_t)(unsafe.Pointer(F + 56 + 3*4)))*4
__1332:
if !(fc < *(*Tuint32_t)(unsafe.Pointer(cp1))) {
goto __1335
}
if !(notmatch1 != 0) {
goto __1336
}
goto __1334
__1336:
;
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__1335:
;
if !(fc == *(*Tuint32_t)(unsafe.Pointer(libc.PostIncUintptr(&cp1, 4)))) {
goto __1337
}
if !(notmatch1 != 0) {
goto __1338
}
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__1338:
;
goto __1334
__1337:
;
goto __1333
__1333:
goto __1332
goto __1334
__1334:
;
goto __1318
__1318:
i++
goto __1317
goto __1319
__1319:
;
goto __1128
__1140:
i = Tuint32_t(1)
__1339:
if !(i <= *(*Tuint32_t)(unsafe.Pointer(F + 56))) {
goto __1341
}
if !((*Theapframe)(unsafe.Pointer(F)).Feptr >= (*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject) {
goto __1342
}
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) != 0 && ((*Theapframe)(unsafe.Pointer(F)).Feptr > (*Tmatch_block_8)(unsafe.Pointer(mb)).Fstart_used_ptr || (*Tmatch_block_8)(unsafe.Pointer(mb)).Fallowemptypartial != 0)) {
goto __1343
}
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fhitend = DTRUE
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) > 1) {
goto __1344
}
return -2
__1344:
;
__1343:
;
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__1342:
;
fc = Tuint32_t(*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&(*Theapframe)(unsafe.Pointer(F)).Feptr, 1))))
if !(utf != 0 && fc >= 0xc0) {
goto __1345
}
if !(fc&0x20 == Tuint32_t(0)) {
goto __1346
}
fc = fc&0x1f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&(*Theapframe)(unsafe.Pointer(F)).Feptr, 1))))&0x3f
goto __1347
__1346:
if !(fc&0x10 == Tuint32_t(0)) {
goto __1348
}
fc = fc&0x0f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += uintptr(2)
goto __1349
__1348:
if !(fc&0x08 == Tuint32_t(0)) {
goto __1350
}
fc = fc&0x07<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += uintptr(3)
goto __1351
__1350:
if !(fc&0x04 == Tuint32_t(0)) {
goto __1352
}
fc = fc&0x03<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 3)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += uintptr(4)
goto __1353
__1352:
fc = fc&0x01<<30 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0x3f<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 3)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 4)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += uintptr(5)
__1353:
;
__1351:
;
__1349:
;
__1347:
;
__1345:
;
if !(libc.Bool32(fc == Tuint32_t('\044') || fc == Tuint32_t('\100') || fc == Tuint32_t('\140') || fc >= Tuint32_t(0xa0) && fc <= Tuint32_t(0xd7ff) || fc >= Tuint32_t(0xe000)) == notmatch1) {
goto __1354
}
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__1354:
;
goto __1340
__1340:
i++
goto __1339
goto __1341
__1341:
;
goto __1128
__1141:
i = Tuint32_t(1)
__1355:
if !(i <= *(*Tuint32_t)(unsafe.Pointer(F + 56))) {
goto __1357
}
if !((*Theapframe)(unsafe.Pointer(F)).Feptr >= (*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject) {
goto __1358
}
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) != 0 && ((*Theapframe)(unsafe.Pointer(F)).Feptr > (*Tmatch_block_8)(unsafe.Pointer(mb)).Fstart_used_ptr || (*Tmatch_block_8)(unsafe.Pointer(mb)).Fallowemptypartial != 0)) {
goto __1359
}
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fhitend = DTRUE
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) > 1) {
goto __1360
}
return -2
__1360:
;
__1359:
;
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__1358:
;
fc = Tuint32_t(*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&(*Theapframe)(unsafe.Pointer(F)).Feptr, 1))))
if !(utf != 0 && fc >= 0xc0) {
goto __1361
}
if !(fc&0x20 == Tuint32_t(0)) {
goto __1362
}
fc = fc&0x1f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&(*Theapframe)(unsafe.Pointer(F)).Feptr, 1))))&0x3f
goto __1363
__1362:
if !(fc&0x10 == Tuint32_t(0)) {
goto __1364
}
fc = fc&0x0f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += uintptr(2)
goto __1365
__1364:
if !(fc&0x08 == Tuint32_t(0)) {
goto __1366
}
fc = fc&0x07<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += uintptr(3)
goto __1367
__1366:
if !(fc&0x04 == Tuint32_t(0)) {
goto __1368
}
fc = fc&0x03<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 3)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += uintptr(4)
goto __1369
__1368:
fc = fc&0x01<<30 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0x3f<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 3)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 4)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += uintptr(5)
__1369:
;
__1367:
;
__1365:
;
__1363:
;
__1361:
;
if !(libc.Bool32(Tuint32_t(int32((*Tucd_record)(unsafe.Pointer(uintptr(unsafe.Pointer(&X_pcre2_ucd_records_8))+uintptr(X_pcre2_ucd_stage2_8[int32(X_pcre2_ucd_stage1_8[int32(fc)/DUCD_BLOCK_SIZE])*DUCD_BLOCK_SIZE+int32(fc)%DUCD_BLOCK_SIZE])*12)).Fscriptx_bidiclass)>>DUCD_BIDICLASS_SHIFT) == *(*Tuint32_t)(unsafe.Pointer(F + 56 + 3*4))) == notmatch1) {
goto __1370
}
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__1370:
;
goto __1356
__1356:
i++
goto __1355
goto __1357
__1357:
;
goto __1128
__1142:
i = Tuint32_t(1)
__1371:
if !(i <= *(*Tuint32_t)(unsafe.Pointer(F + 56))) {
goto __1373
}
if !((*Theapframe)(unsafe.Pointer(F)).Feptr >= (*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject) {
goto __1374
}
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) != 0 && ((*Theapframe)(unsafe.Pointer(F)).Feptr > (*Tmatch_block_8)(unsafe.Pointer(mb)).Fstart_used_ptr || (*Tmatch_block_8)(unsafe.Pointer(mb)).Fallowemptypartial != 0)) {
goto __1375
}
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fhitend = DTRUE
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) > 1) {
goto __1376
}
return -2
__1376:
;
__1375:
;
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__1374:
;
fc = Tuint32_t(*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&(*Theapframe)(unsafe.Pointer(F)).Feptr, 1))))
if !(utf != 0 && fc >= 0xc0) {
goto __1377
}
if !(fc&0x20 == Tuint32_t(0)) {
goto __1378
}
fc = fc&0x1f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&(*Theapframe)(unsafe.Pointer(F)).Feptr, 1))))&0x3f
goto __1379
__1378:
if !(fc&0x10 == Tuint32_t(0)) {
goto __1380
}
fc = fc&0x0f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += uintptr(2)
goto __1381
__1380:
if !(fc&0x08 == Tuint32_t(0)) {
goto __1382
}
fc = fc&0x07<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += uintptr(3)
goto __1383
__1382:
if !(fc&0x04 == Tuint32_t(0)) {
goto __1384
}
fc = fc&0x03<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 3)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += uintptr(4)
goto __1385
__1384:
fc = fc&0x01<<30 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0x3f<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 3)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 4)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += uintptr(5)
__1385:
;
__1383:
;
__1381:
;
__1379:
;
__1377:
;
prop2 = uintptr(unsafe.Pointer(&X_pcre2_ucd_records_8)) + uintptr(X_pcre2_ucd_stage2_8[int32(X_pcre2_ucd_stage1_8[int32(fc)/DUCD_BLOCK_SIZE])*DUCD_BLOCK_SIZE+int32(fc)%DUCD_BLOCK_SIZE])*12
ok3 = libc.Bool32(*(*Tuint32_t)(unsafe.Pointer(uintptr(unsafe.Pointer(&X_pcre2_ucd_boolprop_sets_8)) + uintptr(int32((*Tucd_record)(unsafe.Pointer(prop2)).Fbprops)&DUCD_BPROPS_MASK)*4 + uintptr(*(*Tuint32_t)(unsafe.Pointer(F + 56 + 3*4))/Tuint32_t(32))*4))&(uint32(1)<<(*(*Tuint32_t)(unsafe.Pointer(F + 56 + 3*4))%Tuint32_t(32))) != Tuint32_t(0))
if !(ok3 == notmatch1) {
goto __1386
}
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__1386:
;
goto __1372
__1372:
i++
goto __1371
goto __1373
__1373:
;
goto __1128
// This should not occur
__1143:
return -44
__1128:
;
goto __1127
__1126:
if !(*(*Tuint32_t)(unsafe.Pointer(F + 56 + 2*4)) == OP_EXTUNI) {
goto __1387
}
i = Tuint32_t(1)
__1389:
if !(i <= *(*Tuint32_t)(unsafe.Pointer(F + 56))) {
goto __1391
}
if !((*Theapframe)(unsafe.Pointer(F)).Feptr >= (*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject) {
goto __1392
}
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) != 0 && ((*Theapframe)(unsafe.Pointer(F)).Feptr > (*Tmatch_block_8)(unsafe.Pointer(mb)).Fstart_used_ptr || (*Tmatch_block_8)(unsafe.Pointer(mb)).Fallowemptypartial != 0)) {
goto __1394
}
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fhitend = DTRUE
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) > 1) {
goto __1395
}
return -2
__1395:
;
__1394:
;
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
goto __1393
__1392:
fc = Tuint32_t(*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&(*Theapframe)(unsafe.Pointer(F)).Feptr, 1))))
if !(utf != 0 && fc >= 0xc0) {
goto __1396
}
if !(fc&0x20 == Tuint32_t(0)) {
goto __1397
}
fc = fc&0x1f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&(*Theapframe)(unsafe.Pointer(F)).Feptr, 1))))&0x3f
goto __1398
__1397:
if !(fc&0x10 == Tuint32_t(0)) {
goto __1399
}
fc = fc&0x0f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += uintptr(2)
goto __1400
__1399:
if !(fc&0x08 == Tuint32_t(0)) {
goto __1401
}
fc = fc&0x07<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += uintptr(3)
goto __1402
__1401:
if !(fc&0x04 == Tuint32_t(0)) {
goto __1403
}
fc = fc&0x03<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 3)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += uintptr(4)
goto __1404
__1403:
fc = fc&0x01<<30 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0x3f<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 3)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 4)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += uintptr(5)
__1404:
;
__1402:
;
__1400:
;
__1398:
;
__1396:
;
(*Theapframe)(unsafe.Pointer(F)).Feptr = X_pcre2_extuni_8(tls, fc, (*Theapframe)(unsafe.Pointer(F)).Feptr, (*Tmatch_block_8)(unsafe.Pointer(mb)).Fstart_subject,
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject, utf, uintptr(0))
__1393:
;
if !((*Theapframe)(unsafe.Pointer(F)).Feptr >= (*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject) {
goto __1405
}
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) != 0 && ((*Theapframe)(unsafe.Pointer(F)).Feptr > (*Tmatch_block_8)(unsafe.Pointer(mb)).Fstart_used_ptr || (*Tmatch_block_8)(unsafe.Pointer(mb)).Fallowemptypartial != 0)) {
goto __1406
}
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fhitend = DTRUE
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) > 1) {
goto __1407
}
return -2
__1407:
;
__1406:
;
__1405:
;
goto __1390
__1390:
i++
goto __1389
goto __1391
__1391:
;
goto __1388
__1387:
// Handle all other cases in UTF mode
if !(utf != 0) {
goto __1408
}
switch *(*Tuint32_t)(unsafe.Pointer(F + 56 + 2*4)) {
case OP_ANY:
goto __1411
case OP_ALLANY:
goto __1412
case OP_ANYBYTE:
goto __1413
case OP_ANYNL:
goto __1414
case OP_NOT_HSPACE:
goto __1415
case OP_HSPACE:
goto __1416
case OP_NOT_VSPACE:
goto __1417
case OP_VSPACE:
goto __1418
case OP_NOT_DIGIT:
goto __1419
case OP_DIGIT:
goto __1420
case OP_NOT_WHITESPACE:
goto __1421
case OP_WHITESPACE:
goto __1422
case OP_NOT_WORDCHAR:
goto __1423
case OP_WORDCHAR:
goto __1424
default:
goto __1425
}
goto __1410
__1411:
i = Tuint32_t(1)
__1426:
if !(i <= *(*Tuint32_t)(unsafe.Pointer(F + 56))) {
goto __1428
}
if !((*Theapframe)(unsafe.Pointer(F)).Feptr >= (*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject) {
goto __1429
}
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) != 0 && ((*Theapframe)(unsafe.Pointer(F)).Feptr > (*Tmatch_block_8)(unsafe.Pointer(mb)).Fstart_used_ptr || (*Tmatch_block_8)(unsafe.Pointer(mb)).Fallowemptypartial != 0)) {
goto __1430
}
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fhitend = DTRUE
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) > 1) {
goto __1431
}
return -2
__1431:
;
__1430:
;
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__1429:
;
if !(func() int32 {
if (*Tmatch_block_8)(unsafe.Pointer(mb)).Fnltype != Tuint32_t(DNLTYPE_FIXED) {
return libc.Bool32((*Theapframe)(unsafe.Pointer(F)).Feptr < (*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject && X_pcre2_is_newline_8(tls, (*Theapframe)(unsafe.Pointer(F)).Feptr, (*Tmatch_block_8)(unsafe.Pointer(mb)).Fnltype, (*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject, mb+256, utf) != 0)
}
return libc.Bool32((*Theapframe)(unsafe.Pointer(F)).Feptr <= (*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject-uintptr((*Tmatch_block_8)(unsafe.Pointer(mb)).Fnllen) && int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr))) == int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(mb + 260))) && ((*Tmatch_block_8)(unsafe.Pointer(mb)).Fnllen == Tuint32_t(1) || int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + uintptr(1)))) == int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(mb + 260 + 1)))))
}() != 0) {
goto __1432
}
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__1432:
;
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) != 0 && (*Theapframe)(unsafe.Pointer(F)).Feptr+uintptr(1) >= (*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject && (*Tmatch_block_8)(unsafe.Pointer(mb)).Fnltype == Tuint32_t(DNLTYPE_FIXED) && (*Tmatch_block_8)(unsafe.Pointer(mb)).Fnllen == Tuint32_t(2) && int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr))) == int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(mb + 260)))) {
goto __1433
}
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fhitend = DTRUE
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) > 1) {
goto __1434
}
return -2
__1434:
;
__1433:
;
(*Theapframe)(unsafe.Pointer(F)).Feptr++
__1435:
if !((*Theapframe)(unsafe.Pointer(F)).Feptr < (*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject && uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0xc0 == 0x80) {
goto __1436
}
(*Theapframe)(unsafe.Pointer(F)).Feptr++
goto __1435
__1436:
;
goto __1427
__1427:
i++
goto __1426
goto __1428
__1428:
;
goto __1410
__1412:
i = Tuint32_t(1)
__1437:
if !(i <= *(*Tuint32_t)(unsafe.Pointer(F + 56))) {
goto __1439
}
if !((*Theapframe)(unsafe.Pointer(F)).Feptr >= (*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject) {
goto __1440
}
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) != 0 && ((*Theapframe)(unsafe.Pointer(F)).Feptr > (*Tmatch_block_8)(unsafe.Pointer(mb)).Fstart_used_ptr || (*Tmatch_block_8)(unsafe.Pointer(mb)).Fallowemptypartial != 0)) {
goto __1441
}
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fhitend = DTRUE
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) > 1) {
goto __1442
}
return -2
__1442:
;
__1441:
;
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__1440:
;
(*Theapframe)(unsafe.Pointer(F)).Feptr++
__1443:
if !((*Theapframe)(unsafe.Pointer(F)).Feptr < (*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject && uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0xc0 == 0x80) {
goto __1444
}
(*Theapframe)(unsafe.Pointer(F)).Feptr++
goto __1443
__1444:
;
goto __1438
__1438:
i++
goto __1437
goto __1439
__1439:
;
goto __1410
__1413:
if !((*Theapframe)(unsafe.Pointer(F)).Feptr > (*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject-uintptr(*(*Tuint32_t)(unsafe.Pointer(F + 56)))) {
goto __1445
}
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__1445:
;
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += TPCRE2_SPTR8(*(*Tuint32_t)(unsafe.Pointer(F + 56)))
goto __1410
__1414:
i = Tuint32_t(1)
__1446:
if !(i <= *(*Tuint32_t)(unsafe.Pointer(F + 56))) {
goto __1448
}
if !((*Theapframe)(unsafe.Pointer(F)).Feptr >= (*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject) {
goto __1449
}
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) != 0 && ((*Theapframe)(unsafe.Pointer(F)).Feptr > (*Tmatch_block_8)(unsafe.Pointer(mb)).Fstart_used_ptr || (*Tmatch_block_8)(unsafe.Pointer(mb)).Fallowemptypartial != 0)) {
goto __1450
}
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fhitend = DTRUE
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) > 1) {
goto __1451
}
return -2
__1451:
;
__1450:
;
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__1449:
;
fc = Tuint32_t(*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&(*Theapframe)(unsafe.Pointer(F)).Feptr, 1))))
if !(fc >= 0xc0) {
goto __1452
}
if !(fc&0x20 == Tuint32_t(0)) {
goto __1453
}
fc = fc&0x1f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&(*Theapframe)(unsafe.Pointer(F)).Feptr, 1))))&0x3f
goto __1454
__1453:
if !(fc&0x10 == Tuint32_t(0)) {
goto __1455
}
fc = fc&0x0f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += uintptr(2)
goto __1456
__1455:
if !(fc&0x08 == Tuint32_t(0)) {
goto __1457
}
fc = fc&0x07<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += uintptr(3)
goto __1458
__1457:
if !(fc&0x04 == Tuint32_t(0)) {
goto __1459
}
fc = fc&0x03<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 3)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += uintptr(4)
goto __1460
__1459:
fc = fc&0x01<<30 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0x3f<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 3)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 4)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += uintptr(5)
__1460:
;
__1458:
;
__1456:
;
__1454:
;
__1452:
;
switch fc {
default:
goto __1462
case Tuint32_t('\015'):
goto __1463
case Tuint32_t('\012'):
goto __1464
case Tuint32_t('\013'):
goto __1465
case Tuint32_t('\014'):
goto __1466
case libc.Uint32FromUint8(libc.Uint8FromInt32(133)):
goto __1467
case Tuint32_t(0x2028):
goto __1468
case Tuint32_t(0x2029):
goto __1469
}
goto __1461
__1462:
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__1463:
if !((*Theapframe)(unsafe.Pointer(F)).Feptr < (*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject && int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr))) == '\012') {
goto __1470
}
(*Theapframe)(unsafe.Pointer(F)).Feptr++
__1470:
;
goto __1461
__1464:
goto __1461
__1465:
__1466:
__1467:
__1468:
__1469:
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fbsr_convention) == DPCRE2_BSR_ANYCRLF) {
goto __1471
}
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__1471:
;
goto __1461
__1461:
;
goto __1447
__1447:
i++
goto __1446
goto __1448
__1448:
;
goto __1410
__1415:
i = Tuint32_t(1)
__1472:
if !(i <= *(*Tuint32_t)(unsafe.Pointer(F + 56))) {
goto __1474
}
if !((*Theapframe)(unsafe.Pointer(F)).Feptr >= (*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject) {
goto __1475
}
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) != 0 && ((*Theapframe)(unsafe.Pointer(F)).Feptr > (*Tmatch_block_8)(unsafe.Pointer(mb)).Fstart_used_ptr || (*Tmatch_block_8)(unsafe.Pointer(mb)).Fallowemptypartial != 0)) {
goto __1476
}
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fhitend = DTRUE
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) > 1) {
goto __1477
}
return -2
__1477:
;
__1476:
;
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__1475:
;
fc = Tuint32_t(*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&(*Theapframe)(unsafe.Pointer(F)).Feptr, 1))))
if !(fc >= 0xc0) {
goto __1478
}
if !(fc&0x20 == Tuint32_t(0)) {
goto __1479
}
fc = fc&0x1f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&(*Theapframe)(unsafe.Pointer(F)).Feptr, 1))))&0x3f
goto __1480
__1479:
if !(fc&0x10 == Tuint32_t(0)) {
goto __1481
}
fc = fc&0x0f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += uintptr(2)
goto __1482
__1481:
if !(fc&0x08 == Tuint32_t(0)) {
goto __1483
}
fc = fc&0x07<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += uintptr(3)
goto __1484
__1483:
if !(fc&0x04 == Tuint32_t(0)) {
goto __1485
}
fc = fc&0x03<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 3)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += uintptr(4)
goto __1486
__1485:
fc = fc&0x01<<30 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0x3f<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 3)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 4)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += uintptr(5)
__1486:
;
__1484:
;
__1482:
;
__1480:
;
__1478:
;
switch fc {
case Tuint32_t('\011'):
goto __1488
case Tuint32_t('\040'):
goto __1489
case libc.Uint32FromUint8(libc.Uint8FromInt32(160)):
goto __1490
case Tuint32_t(0x1680):
goto __1491 /* OGHAM SPACE MARK */
case Tuint32_t(0x180e):
goto __1492 /* MONGOLIAN VOWEL SEPARATOR */
case Tuint32_t(0x2000):
goto __1493 /* EN QUAD */
case Tuint32_t(0x2001):
goto __1494 /* EM QUAD */
case Tuint32_t(0x2002):
goto __1495 /* EN SPACE */
case Tuint32_t(0x2003):
goto __1496 /* EM SPACE */
case Tuint32_t(0x2004):
goto __1497 /* THREE-PER-EM SPACE */
case Tuint32_t(0x2005):
goto __1498 /* FOUR-PER-EM SPACE */
case Tuint32_t(0x2006):
goto __1499 /* SIX-PER-EM SPACE */
case Tuint32_t(0x2007):
goto __1500 /* FIGURE SPACE */
case Tuint32_t(0x2008):
goto __1501 /* PUNCTUATION SPACE */
case Tuint32_t(0x2009):
goto __1502 /* THIN SPACE */
case Tuint32_t(0x200A):
goto __1503 /* HAIR SPACE */
case Tuint32_t(0x202f):
goto __1504 /* NARROW NO-BREAK SPACE */
case Tuint32_t(0x205f):
goto __1505 /* MEDIUM MATHEMATICAL SPACE */
case Tuint32_t(0x3000):
goto __1506
default:
goto __1507
}
goto __1487
__1488:
__1489:
__1490:
__1491: /* OGHAM SPACE MARK */
__1492: /* MONGOLIAN VOWEL SEPARATOR */
__1493: /* EN QUAD */
__1494: /* EM QUAD */
__1495: /* EN SPACE */
__1496: /* EM SPACE */
__1497: /* THREE-PER-EM SPACE */
__1498: /* FOUR-PER-EM SPACE */
__1499: /* SIX-PER-EM SPACE */
__1500: /* FIGURE SPACE */
__1501: /* PUNCTUATION SPACE */
__1502: /* THIN SPACE */
__1503: /* HAIR SPACE */
__1504: /* NARROW NO-BREAK SPACE */
__1505: /* MEDIUM MATHEMATICAL SPACE */
__1506:
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__1507:
goto __1487
__1487:
;
goto __1473
__1473:
i++
goto __1472
goto __1474
__1474:
;
goto __1410
__1416:
i = Tuint32_t(1)
__1508:
if !(i <= *(*Tuint32_t)(unsafe.Pointer(F + 56))) {
goto __1510
}
if !((*Theapframe)(unsafe.Pointer(F)).Feptr >= (*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject) {
goto __1511
}
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) != 0 && ((*Theapframe)(unsafe.Pointer(F)).Feptr > (*Tmatch_block_8)(unsafe.Pointer(mb)).Fstart_used_ptr || (*Tmatch_block_8)(unsafe.Pointer(mb)).Fallowemptypartial != 0)) {
goto __1512
}
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fhitend = DTRUE
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) > 1) {
goto __1513
}
return -2
__1513:
;
__1512:
;
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__1511:
;
fc = Tuint32_t(*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&(*Theapframe)(unsafe.Pointer(F)).Feptr, 1))))
if !(fc >= 0xc0) {
goto __1514
}
if !(fc&0x20 == Tuint32_t(0)) {
goto __1515
}
fc = fc&0x1f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&(*Theapframe)(unsafe.Pointer(F)).Feptr, 1))))&0x3f
goto __1516
__1515:
if !(fc&0x10 == Tuint32_t(0)) {
goto __1517
}
fc = fc&0x0f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += uintptr(2)
goto __1518
__1517:
if !(fc&0x08 == Tuint32_t(0)) {
goto __1519
}
fc = fc&0x07<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += uintptr(3)
goto __1520
__1519:
if !(fc&0x04 == Tuint32_t(0)) {
goto __1521
}
fc = fc&0x03<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 3)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += uintptr(4)
goto __1522
__1521:
fc = fc&0x01<<30 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0x3f<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 3)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 4)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += uintptr(5)
__1522:
;
__1520:
;
__1518:
;
__1516:
;
__1514:
;
switch fc {
case Tuint32_t('\011'):
goto __1524
case Tuint32_t('\040'):
goto __1525
case libc.Uint32FromUint8(libc.Uint8FromInt32(160)):
goto __1526
case Tuint32_t(0x1680):
goto __1527 /* OGHAM SPACE MARK */
case Tuint32_t(0x180e):
goto __1528 /* MONGOLIAN VOWEL SEPARATOR */
case Tuint32_t(0x2000):
goto __1529 /* EN QUAD */
case Tuint32_t(0x2001):
goto __1530 /* EM QUAD */
case Tuint32_t(0x2002):
goto __1531 /* EN SPACE */
case Tuint32_t(0x2003):
goto __1532 /* EM SPACE */
case Tuint32_t(0x2004):
goto __1533 /* THREE-PER-EM SPACE */
case Tuint32_t(0x2005):
goto __1534 /* FOUR-PER-EM SPACE */
case Tuint32_t(0x2006):
goto __1535 /* SIX-PER-EM SPACE */
case Tuint32_t(0x2007):
goto __1536 /* FIGURE SPACE */
case Tuint32_t(0x2008):
goto __1537 /* PUNCTUATION SPACE */
case Tuint32_t(0x2009):
goto __1538 /* THIN SPACE */
case Tuint32_t(0x200A):
goto __1539 /* HAIR SPACE */
case Tuint32_t(0x202f):
goto __1540 /* NARROW NO-BREAK SPACE */
case Tuint32_t(0x205f):
goto __1541 /* MEDIUM MATHEMATICAL SPACE */
case Tuint32_t(0x3000):
goto __1542
default:
goto __1543
}
goto __1523
__1524:
__1525:
__1526:
__1527: /* OGHAM SPACE MARK */
__1528: /* MONGOLIAN VOWEL SEPARATOR */
__1529: /* EN QUAD */
__1530: /* EM QUAD */
__1531: /* EN SPACE */
__1532: /* EM SPACE */
__1533: /* THREE-PER-EM SPACE */
__1534: /* FOUR-PER-EM SPACE */
__1535: /* SIX-PER-EM SPACE */
__1536: /* FIGURE SPACE */
__1537: /* PUNCTUATION SPACE */
__1538: /* THIN SPACE */
__1539: /* HAIR SPACE */
__1540: /* NARROW NO-BREAK SPACE */
__1541: /* MEDIUM MATHEMATICAL SPACE */
__1542:
goto __1523
__1543:
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__1523:
;
goto __1509
__1509:
i++
goto __1508
goto __1510
__1510:
;
goto __1410
__1417:
i = Tuint32_t(1)
__1544:
if !(i <= *(*Tuint32_t)(unsafe.Pointer(F + 56))) {
goto __1546
}
if !((*Theapframe)(unsafe.Pointer(F)).Feptr >= (*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject) {
goto __1547
}
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) != 0 && ((*Theapframe)(unsafe.Pointer(F)).Feptr > (*Tmatch_block_8)(unsafe.Pointer(mb)).Fstart_used_ptr || (*Tmatch_block_8)(unsafe.Pointer(mb)).Fallowemptypartial != 0)) {
goto __1548
}
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fhitend = DTRUE
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) > 1) {
goto __1549
}
return -2
__1549:
;
__1548:
;
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__1547:
;
fc = Tuint32_t(*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&(*Theapframe)(unsafe.Pointer(F)).Feptr, 1))))
if !(fc >= 0xc0) {
goto __1550
}
if !(fc&0x20 == Tuint32_t(0)) {
goto __1551
}
fc = fc&0x1f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&(*Theapframe)(unsafe.Pointer(F)).Feptr, 1))))&0x3f
goto __1552
__1551:
if !(fc&0x10 == Tuint32_t(0)) {
goto __1553
}
fc = fc&0x0f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += uintptr(2)
goto __1554
__1553:
if !(fc&0x08 == Tuint32_t(0)) {
goto __1555
}
fc = fc&0x07<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += uintptr(3)
goto __1556
__1555:
if !(fc&0x04 == Tuint32_t(0)) {
goto __1557
}
fc = fc&0x03<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 3)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += uintptr(4)
goto __1558
__1557:
fc = fc&0x01<<30 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0x3f<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 3)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 4)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += uintptr(5)
__1558:
;
__1556:
;
__1554:
;
__1552:
;
__1550:
;
switch fc {
case Tuint32_t('\012'):
goto __1560
case Tuint32_t('\013'):
goto __1561
case Tuint32_t('\014'):
goto __1562
case Tuint32_t('\015'):
goto __1563
case libc.Uint32FromUint8(libc.Uint8FromInt32(133)):
goto __1564
case Tuint32_t(0x2028):
goto __1565 /* LINE SEPARATOR */
case Tuint32_t(0x2029):
goto __1566
default:
goto __1567
}
goto __1559
__1560:
__1561:
__1562:
__1563:
__1564:
__1565: /* LINE SEPARATOR */
__1566:
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__1567:
goto __1559
__1559:
;
goto __1545
__1545:
i++
goto __1544
goto __1546
__1546:
;
goto __1410
__1418:
i = Tuint32_t(1)
__1568:
if !(i <= *(*Tuint32_t)(unsafe.Pointer(F + 56))) {
goto __1570
}
if !((*Theapframe)(unsafe.Pointer(F)).Feptr >= (*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject) {
goto __1571
}
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) != 0 && ((*Theapframe)(unsafe.Pointer(F)).Feptr > (*Tmatch_block_8)(unsafe.Pointer(mb)).Fstart_used_ptr || (*Tmatch_block_8)(unsafe.Pointer(mb)).Fallowemptypartial != 0)) {
goto __1572
}
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fhitend = DTRUE
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) > 1) {
goto __1573
}
return -2
__1573:
;
__1572:
;
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__1571:
;
fc = Tuint32_t(*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&(*Theapframe)(unsafe.Pointer(F)).Feptr, 1))))
if !(fc >= 0xc0) {
goto __1574
}
if !(fc&0x20 == Tuint32_t(0)) {
goto __1575
}
fc = fc&0x1f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&(*Theapframe)(unsafe.Pointer(F)).Feptr, 1))))&0x3f
goto __1576
__1575:
if !(fc&0x10 == Tuint32_t(0)) {
goto __1577
}
fc = fc&0x0f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += uintptr(2)
goto __1578
__1577:
if !(fc&0x08 == Tuint32_t(0)) {
goto __1579
}
fc = fc&0x07<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += uintptr(3)
goto __1580
__1579:
if !(fc&0x04 == Tuint32_t(0)) {
goto __1581
}
fc = fc&0x03<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 3)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += uintptr(4)
goto __1582
__1581:
fc = fc&0x01<<30 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0x3f<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 3)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 4)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += uintptr(5)
__1582:
;
__1580:
;
__1578:
;
__1576:
;
__1574:
;
switch fc {
case Tuint32_t('\012'):
goto __1584
case Tuint32_t('\013'):
goto __1585
case Tuint32_t('\014'):
goto __1586
case Tuint32_t('\015'):
goto __1587
case libc.Uint32FromUint8(libc.Uint8FromInt32(133)):
goto __1588
case Tuint32_t(0x2028):
goto __1589 /* LINE SEPARATOR */
case Tuint32_t(0x2029):
goto __1590
default:
goto __1591
}
goto __1583
__1584:
__1585:
__1586:
__1587:
__1588:
__1589: /* LINE SEPARATOR */
__1590:
goto __1583
__1591:
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__1583:
;
goto __1569
__1569:
i++
goto __1568
goto __1570
__1570:
;
goto __1410
__1419:
i = Tuint32_t(1)
__1592:
if !(i <= *(*Tuint32_t)(unsafe.Pointer(F + 56))) {
goto __1594
}
if !((*Theapframe)(unsafe.Pointer(F)).Feptr >= (*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject) {
goto __1595
}
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) != 0 && ((*Theapframe)(unsafe.Pointer(F)).Feptr > (*Tmatch_block_8)(unsafe.Pointer(mb)).Fstart_used_ptr || (*Tmatch_block_8)(unsafe.Pointer(mb)).Fallowemptypartial != 0)) {
goto __1596
}
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fhitend = DTRUE
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) > 1) {
goto __1597
}
return -2
__1597:
;
__1596:
;
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__1595:
;
fc = Tuint32_t(*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&(*Theapframe)(unsafe.Pointer(F)).Feptr, 1))))
if !(fc >= 0xc0) {
goto __1598
}
if !(fc&0x20 == Tuint32_t(0)) {
goto __1599
}
fc = fc&0x1f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&(*Theapframe)(unsafe.Pointer(F)).Feptr, 1))))&0x3f
goto __1600
__1599:
if !(fc&0x10 == Tuint32_t(0)) {
goto __1601
}
fc = fc&0x0f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += uintptr(2)
goto __1602
__1601:
if !(fc&0x08 == Tuint32_t(0)) {
goto __1603
}
fc = fc&0x07<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += uintptr(3)
goto __1604
__1603:
if !(fc&0x04 == Tuint32_t(0)) {
goto __1605
}
fc = fc&0x03<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 3)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += uintptr(4)
goto __1606
__1605:
fc = fc&0x01<<30 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0x3f<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 3)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 4)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += uintptr(5)
__1606:
;
__1604:
;
__1602:
;
__1600:
;
__1598:
;
if !(fc < Tuint32_t(128) && int32(*(*Tuint8_t)(unsafe.Pointer((*Tmatch_block_8)(unsafe.Pointer(mb)).Fctypes + uintptr(fc))))&Dctype_digit != 0) {
goto __1607
}
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__1607:
;
goto __1593
__1593:
i++
goto __1592
goto __1594
__1594:
;
goto __1410
__1420:
i = Tuint32_t(1)
__1608:
if !(i <= *(*Tuint32_t)(unsafe.Pointer(F + 56))) {
goto __1610
}
if !((*Theapframe)(unsafe.Pointer(F)).Feptr >= (*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject) {
goto __1611
}
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) != 0 && ((*Theapframe)(unsafe.Pointer(F)).Feptr > (*Tmatch_block_8)(unsafe.Pointer(mb)).Fstart_used_ptr || (*Tmatch_block_8)(unsafe.Pointer(mb)).Fallowemptypartial != 0)) {
goto __1612
}
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fhitend = DTRUE
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) > 1) {
goto __1613
}
return -2
__1613:
;
__1612:
;
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__1611:
;
cc5 = Tuint32_t(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))
if !(cc5 >= Tuint32_t(128) || int32(*(*Tuint8_t)(unsafe.Pointer((*Tmatch_block_8)(unsafe.Pointer(mb)).Fctypes + uintptr(cc5))))&Dctype_digit == 0) {
goto __1614
}
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__1614:
;
(*Theapframe)(unsafe.Pointer(F)).Feptr++
// No need to skip more code units - we know it has only one.
goto __1609
__1609:
i++
goto __1608
goto __1610
__1610:
;
goto __1410
__1421:
i = Tuint32_t(1)
__1615:
if !(i <= *(*Tuint32_t)(unsafe.Pointer(F + 56))) {
goto __1617
}
if !((*Theapframe)(unsafe.Pointer(F)).Feptr >= (*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject) {
goto __1618
}
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) != 0 && ((*Theapframe)(unsafe.Pointer(F)).Feptr > (*Tmatch_block_8)(unsafe.Pointer(mb)).Fstart_used_ptr || (*Tmatch_block_8)(unsafe.Pointer(mb)).Fallowemptypartial != 0)) {
goto __1619
}
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fhitend = DTRUE
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) > 1) {
goto __1620
}
return -2
__1620:
;
__1619:
;
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__1618:
;
cc6 = Tuint32_t(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))
if !(cc6 < Tuint32_t(128) && int32(*(*Tuint8_t)(unsafe.Pointer((*Tmatch_block_8)(unsafe.Pointer(mb)).Fctypes + uintptr(cc6))))&Dctype_space != 0) {
goto __1621
}
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__1621:
;
(*Theapframe)(unsafe.Pointer(F)).Feptr++
__1622:
if !((*Theapframe)(unsafe.Pointer(F)).Feptr < (*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject && uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0xc0 == 0x80) {
goto __1623
}
(*Theapframe)(unsafe.Pointer(F)).Feptr++
goto __1622
__1623:
;
goto __1616
__1616:
i++
goto __1615
goto __1617
__1617:
;
goto __1410
__1422:
i = Tuint32_t(1)
__1624:
if !(i <= *(*Tuint32_t)(unsafe.Pointer(F + 56))) {
goto __1626
}
if !((*Theapframe)(unsafe.Pointer(F)).Feptr >= (*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject) {
goto __1627
}
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) != 0 && ((*Theapframe)(unsafe.Pointer(F)).Feptr > (*Tmatch_block_8)(unsafe.Pointer(mb)).Fstart_used_ptr || (*Tmatch_block_8)(unsafe.Pointer(mb)).Fallowemptypartial != 0)) {
goto __1628
}
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fhitend = DTRUE
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) > 1) {
goto __1629
}
return -2
__1629:
;
__1628:
;
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__1627:
;
cc7 = Tuint32_t(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))
if !(cc7 >= Tuint32_t(128) || int32(*(*Tuint8_t)(unsafe.Pointer((*Tmatch_block_8)(unsafe.Pointer(mb)).Fctypes + uintptr(cc7))))&Dctype_space == 0) {
goto __1630
}
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__1630:
;
(*Theapframe)(unsafe.Pointer(F)).Feptr++
// No need to skip more code units - we know it has only one.
goto __1625
__1625:
i++
goto __1624
goto __1626
__1626:
;
goto __1410
__1423:
i = Tuint32_t(1)
__1631:
if !(i <= *(*Tuint32_t)(unsafe.Pointer(F + 56))) {
goto __1633
}
if !((*Theapframe)(unsafe.Pointer(F)).Feptr >= (*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject) {
goto __1634
}
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) != 0 && ((*Theapframe)(unsafe.Pointer(F)).Feptr > (*Tmatch_block_8)(unsafe.Pointer(mb)).Fstart_used_ptr || (*Tmatch_block_8)(unsafe.Pointer(mb)).Fallowemptypartial != 0)) {
goto __1635
}
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fhitend = DTRUE
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) > 1) {
goto __1636
}
return -2
__1636:
;
__1635:
;
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__1634:
;
cc8 = Tuint32_t(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))
if !(cc8 < Tuint32_t(128) && int32(*(*Tuint8_t)(unsafe.Pointer((*Tmatch_block_8)(unsafe.Pointer(mb)).Fctypes + uintptr(cc8))))&Dctype_word != 0) {
goto __1637
}
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__1637:
;
(*Theapframe)(unsafe.Pointer(F)).Feptr++
__1638:
if !((*Theapframe)(unsafe.Pointer(F)).Feptr < (*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject && uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0xc0 == 0x80) {
goto __1639
}
(*Theapframe)(unsafe.Pointer(F)).Feptr++
goto __1638
__1639:
;
goto __1632
__1632:
i++
goto __1631
goto __1633
__1633:
;
goto __1410
__1424:
i = Tuint32_t(1)
__1640:
if !(i <= *(*Tuint32_t)(unsafe.Pointer(F + 56))) {
goto __1642
}
if !((*Theapframe)(unsafe.Pointer(F)).Feptr >= (*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject) {
goto __1643
}
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) != 0 && ((*Theapframe)(unsafe.Pointer(F)).Feptr > (*Tmatch_block_8)(unsafe.Pointer(mb)).Fstart_used_ptr || (*Tmatch_block_8)(unsafe.Pointer(mb)).Fallowemptypartial != 0)) {
goto __1644
}
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fhitend = DTRUE
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) > 1) {
goto __1645
}
return -2
__1645:
;
__1644:
;
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__1643:
;
cc9 = Tuint32_t(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))
if !(cc9 >= Tuint32_t(128) || int32(*(*Tuint8_t)(unsafe.Pointer((*Tmatch_block_8)(unsafe.Pointer(mb)).Fctypes + uintptr(cc9))))&Dctype_word == 0) {
goto __1646
}
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__1646:
;
(*Theapframe)(unsafe.Pointer(F)).Feptr++
// No need to skip more code units - we know it has only one.
goto __1641
__1641:
i++
goto __1640
goto __1642
__1642:
;
goto __1410
__1425:
return -44
__1410:
;
goto __1409
__1408:
// Code for the non-UTF case for minimum matching of operators other
// than OP_PROP and OP_NOTPROP.
switch *(*Tuint32_t)(unsafe.Pointer(F + 56 + 2*4)) {
case OP_ANY:
goto __1648
case OP_ALLANY:
goto __1649
// This OP_ANYBYTE case will never be reached because \C gets turned
// into OP_ALLANY in non-UTF mode. Cut out the code so that coverage
// reports don't complain about it's never being used.
// case OP_ANYBYTE:
// if (Feptr > mb->end_subject - Lmin)
// {
// SCHECK_PARTIAL();
// RRETURN(MATCH_NOMATCH);
// }
// Feptr += Lmin;
// break;
case OP_ANYNL:
goto __1650
case OP_NOT_HSPACE:
goto __1651
case OP_HSPACE:
goto __1652
case OP_NOT_VSPACE:
goto __1653
case OP_VSPACE:
goto __1654
case OP_NOT_DIGIT:
goto __1655
case OP_DIGIT:
goto __1656
case OP_NOT_WHITESPACE:
goto __1657
case OP_WHITESPACE:
goto __1658
case OP_NOT_WORDCHAR:
goto __1659
case OP_WORDCHAR:
goto __1660
default:
goto __1661
}
goto __1647
__1648:
i = Tuint32_t(1)
__1662:
if !(i <= *(*Tuint32_t)(unsafe.Pointer(F + 56))) {
goto __1664
}
if !((*Theapframe)(unsafe.Pointer(F)).Feptr >= (*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject) {
goto __1665
}
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) != 0 && ((*Theapframe)(unsafe.Pointer(F)).Feptr > (*Tmatch_block_8)(unsafe.Pointer(mb)).Fstart_used_ptr || (*Tmatch_block_8)(unsafe.Pointer(mb)).Fallowemptypartial != 0)) {
goto __1666
}
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fhitend = DTRUE
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) > 1) {
goto __1667
}
return -2
__1667:
;
__1666:
;
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__1665:
;
if !(func() int32 {
if (*Tmatch_block_8)(unsafe.Pointer(mb)).Fnltype != Tuint32_t(DNLTYPE_FIXED) {
return libc.Bool32((*Theapframe)(unsafe.Pointer(F)).Feptr < (*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject && X_pcre2_is_newline_8(tls, (*Theapframe)(unsafe.Pointer(F)).Feptr, (*Tmatch_block_8)(unsafe.Pointer(mb)).Fnltype, (*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject, mb+256, utf) != 0)
}
return libc.Bool32((*Theapframe)(unsafe.Pointer(F)).Feptr <= (*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject-uintptr((*Tmatch_block_8)(unsafe.Pointer(mb)).Fnllen) && int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr))) == int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(mb + 260))) && ((*Tmatch_block_8)(unsafe.Pointer(mb)).Fnllen == Tuint32_t(1) || int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + uintptr(1)))) == int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(mb + 260 + 1)))))
}() != 0) {
goto __1668
}
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__1668:
;
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) != 0 && (*Theapframe)(unsafe.Pointer(F)).Feptr+uintptr(1) >= (*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject && (*Tmatch_block_8)(unsafe.Pointer(mb)).Fnltype == Tuint32_t(DNLTYPE_FIXED) && (*Tmatch_block_8)(unsafe.Pointer(mb)).Fnllen == Tuint32_t(2) && int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr))) == int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(mb + 260)))) {
goto __1669
}
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fhitend = DTRUE
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) > 1) {
goto __1670
}
return -2
__1670:
;
__1669:
;
(*Theapframe)(unsafe.Pointer(F)).Feptr++
goto __1663
__1663:
i++
goto __1662
goto __1664
__1664:
;
goto __1647
__1649:
if !((*Theapframe)(unsafe.Pointer(F)).Feptr > (*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject-uintptr(*(*Tuint32_t)(unsafe.Pointer(F + 56)))) {
goto __1671
}
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) != 0 && ((*Theapframe)(unsafe.Pointer(F)).Feptr > (*Tmatch_block_8)(unsafe.Pointer(mb)).Fstart_used_ptr || (*Tmatch_block_8)(unsafe.Pointer(mb)).Fallowemptypartial != 0)) {
goto __1672
}
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fhitend = DTRUE
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) > 1) {
goto __1673
}
return -2
__1673:
;
__1672:
;
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__1671:
;
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += TPCRE2_SPTR8(*(*Tuint32_t)(unsafe.Pointer(F + 56)))
goto __1647
// This OP_ANYBYTE case will never be reached because \C gets turned
// into OP_ALLANY in non-UTF mode. Cut out the code so that coverage
// reports don't complain about it's never being used.
// case OP_ANYBYTE:
// if (Feptr > mb->end_subject - Lmin)
// {
// SCHECK_PARTIAL();
// RRETURN(MATCH_NOMATCH);
// }
// Feptr += Lmin;
// break;
__1650:
i = Tuint32_t(1)
__1674:
if !(i <= *(*Tuint32_t)(unsafe.Pointer(F + 56))) {
goto __1676
}
if !((*Theapframe)(unsafe.Pointer(F)).Feptr >= (*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject) {
goto __1677
}
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) != 0 && ((*Theapframe)(unsafe.Pointer(F)).Feptr > (*Tmatch_block_8)(unsafe.Pointer(mb)).Fstart_used_ptr || (*Tmatch_block_8)(unsafe.Pointer(mb)).Fallowemptypartial != 0)) {
goto __1678
}
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fhitend = DTRUE
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) > 1) {
goto __1679
}
return -2
__1679:
;
__1678:
;
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__1677:
;
switch int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&(*Theapframe)(unsafe.Pointer(F)).Feptr, 1)))) {
default:
goto __1681
case '\015':
goto __1682
case '\012':
goto __1683
case '\013':
goto __1684
case '\014':
goto __1685
case int32(libc.Uint8FromInt32(133)):
goto __1686
}
goto __1680
__1681:
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__1682:
if !((*Theapframe)(unsafe.Pointer(F)).Feptr < (*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject && int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr))) == '\012') {
goto __1687
}
(*Theapframe)(unsafe.Pointer(F)).Feptr++
__1687:
;
goto __1680
__1683:
goto __1680
__1684:
__1685:
__1686:
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fbsr_convention) == DPCRE2_BSR_ANYCRLF) {
goto __1688
}
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__1688:
;
goto __1680
__1680:
;
goto __1675
__1675:
i++
goto __1674
goto __1676
__1676:
;
goto __1647
__1651:
i = Tuint32_t(1)
__1689:
if !(i <= *(*Tuint32_t)(unsafe.Pointer(F + 56))) {
goto __1691
}
if !((*Theapframe)(unsafe.Pointer(F)).Feptr >= (*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject) {
goto __1692
}
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) != 0 && ((*Theapframe)(unsafe.Pointer(F)).Feptr > (*Tmatch_block_8)(unsafe.Pointer(mb)).Fstart_used_ptr || (*Tmatch_block_8)(unsafe.Pointer(mb)).Fallowemptypartial != 0)) {
goto __1693
}
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fhitend = DTRUE
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) > 1) {
goto __1694
}
return -2
__1694:
;
__1693:
;
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__1692:
;
switch int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&(*Theapframe)(unsafe.Pointer(F)).Feptr, 1)))) {
default:
goto __1696
case '\011':
goto __1697
case '\040':
goto __1698
case int32(libc.Uint8FromInt32(160)):
goto __1699
}
goto __1695
__1696:
goto __1695
__1697:
__1698:
__1699:
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__1695:
;
goto __1690
__1690:
i++
goto __1689
goto __1691
__1691:
;
goto __1647
__1652:
i = Tuint32_t(1)
__1700:
if !(i <= *(*Tuint32_t)(unsafe.Pointer(F + 56))) {
goto __1702
}
if !((*Theapframe)(unsafe.Pointer(F)).Feptr >= (*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject) {
goto __1703
}
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) != 0 && ((*Theapframe)(unsafe.Pointer(F)).Feptr > (*Tmatch_block_8)(unsafe.Pointer(mb)).Fstart_used_ptr || (*Tmatch_block_8)(unsafe.Pointer(mb)).Fallowemptypartial != 0)) {
goto __1704
}
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fhitend = DTRUE
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) > 1) {
goto __1705
}
return -2
__1705:
;
__1704:
;
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__1703:
;
switch int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&(*Theapframe)(unsafe.Pointer(F)).Feptr, 1)))) {
default:
goto __1707
case '\011':
goto __1708
case '\040':
goto __1709
case int32(libc.Uint8FromInt32(160)):
goto __1710
}
goto __1706
__1707:
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__1708:
__1709:
__1710:
goto __1706
__1706:
;
goto __1701
__1701:
i++
goto __1700
goto __1702
__1702:
;
goto __1647
__1653:
i = Tuint32_t(1)
__1711:
if !(i <= *(*Tuint32_t)(unsafe.Pointer(F + 56))) {
goto __1713
}
if !((*Theapframe)(unsafe.Pointer(F)).Feptr >= (*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject) {
goto __1714
}
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) != 0 && ((*Theapframe)(unsafe.Pointer(F)).Feptr > (*Tmatch_block_8)(unsafe.Pointer(mb)).Fstart_used_ptr || (*Tmatch_block_8)(unsafe.Pointer(mb)).Fallowemptypartial != 0)) {
goto __1715
}
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fhitend = DTRUE
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) > 1) {
goto __1716
}
return -2
__1716:
;
__1715:
;
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__1714:
;
switch int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&(*Theapframe)(unsafe.Pointer(F)).Feptr, 1)))) {
case '\012':
goto __1718
case '\013':
goto __1719
case '\014':
goto __1720
case '\015':
goto __1721
case int32(libc.Uint8FromInt32(133)):
goto __1722
default:
goto __1723
}
goto __1717
__1718:
__1719:
__1720:
__1721:
__1722:
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__1723:
goto __1717
__1717:
;
goto __1712
__1712:
i++
goto __1711
goto __1713
__1713:
;
goto __1647
__1654:
i = Tuint32_t(1)
__1724:
if !(i <= *(*Tuint32_t)(unsafe.Pointer(F + 56))) {
goto __1726
}
if !((*Theapframe)(unsafe.Pointer(F)).Feptr >= (*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject) {
goto __1727
}
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) != 0 && ((*Theapframe)(unsafe.Pointer(F)).Feptr > (*Tmatch_block_8)(unsafe.Pointer(mb)).Fstart_used_ptr || (*Tmatch_block_8)(unsafe.Pointer(mb)).Fallowemptypartial != 0)) {
goto __1728
}
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fhitend = DTRUE
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) > 1) {
goto __1729
}
return -2
__1729:
;
__1728:
;
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__1727:
;
switch int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&(*Theapframe)(unsafe.Pointer(F)).Feptr, 1)))) {
default:
goto __1731
case '\012':
goto __1732
case '\013':
goto __1733
case '\014':
goto __1734
case '\015':
goto __1735
case int32(libc.Uint8FromInt32(133)):
goto __1736
}
goto __1730
__1731:
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__1732:
__1733:
__1734:
__1735:
__1736:
goto __1730
__1730:
;
goto __1725
__1725:
i++
goto __1724
goto __1726
__1726:
;
goto __1647
__1655:
i = Tuint32_t(1)
__1737:
if !(i <= *(*Tuint32_t)(unsafe.Pointer(F + 56))) {
goto __1739
}
if !((*Theapframe)(unsafe.Pointer(F)).Feptr >= (*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject) {
goto __1740
}
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) != 0 && ((*Theapframe)(unsafe.Pointer(F)).Feptr > (*Tmatch_block_8)(unsafe.Pointer(mb)).Fstart_used_ptr || (*Tmatch_block_8)(unsafe.Pointer(mb)).Fallowemptypartial != 0)) {
goto __1741
}
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fhitend = DTRUE
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) > 1) {
goto __1742
}
return -2
__1742:
;
__1741:
;
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__1740:
;
if !(1 != 0 && int32(*(*Tuint8_t)(unsafe.Pointer((*Tmatch_block_8)(unsafe.Pointer(mb)).Fctypes + uintptr(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr))))))&Dctype_digit != 0) {
goto __1743
}
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__1743:
;
(*Theapframe)(unsafe.Pointer(F)).Feptr++
goto __1738
__1738:
i++
goto __1737
goto __1739
__1739:
;
goto __1647
__1656:
i = Tuint32_t(1)
__1744:
if !(i <= *(*Tuint32_t)(unsafe.Pointer(F + 56))) {
goto __1746
}
if !((*Theapframe)(unsafe.Pointer(F)).Feptr >= (*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject) {
goto __1747
}
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) != 0 && ((*Theapframe)(unsafe.Pointer(F)).Feptr > (*Tmatch_block_8)(unsafe.Pointer(mb)).Fstart_used_ptr || (*Tmatch_block_8)(unsafe.Pointer(mb)).Fallowemptypartial != 0)) {
goto __1748
}
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fhitend = DTRUE
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) > 1) {
goto __1749
}
return -2
__1749:
;
__1748:
;
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__1747:
;
if !(!(1 != 0) || int32(*(*Tuint8_t)(unsafe.Pointer((*Tmatch_block_8)(unsafe.Pointer(mb)).Fctypes + uintptr(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr))))))&Dctype_digit == 0) {
goto __1750
}
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__1750:
;
(*Theapframe)(unsafe.Pointer(F)).Feptr++
goto __1745
__1745:
i++
goto __1744
goto __1746
__1746:
;
goto __1647
__1657:
i = Tuint32_t(1)
__1751:
if !(i <= *(*Tuint32_t)(unsafe.Pointer(F + 56))) {
goto __1753
}
if !((*Theapframe)(unsafe.Pointer(F)).Feptr >= (*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject) {
goto __1754
}
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) != 0 && ((*Theapframe)(unsafe.Pointer(F)).Feptr > (*Tmatch_block_8)(unsafe.Pointer(mb)).Fstart_used_ptr || (*Tmatch_block_8)(unsafe.Pointer(mb)).Fallowemptypartial != 0)) {
goto __1755
}
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fhitend = DTRUE
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) > 1) {
goto __1756
}
return -2
__1756:
;
__1755:
;
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__1754:
;
if !(1 != 0 && int32(*(*Tuint8_t)(unsafe.Pointer((*Tmatch_block_8)(unsafe.Pointer(mb)).Fctypes + uintptr(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr))))))&Dctype_space != 0) {
goto __1757
}
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__1757:
;
(*Theapframe)(unsafe.Pointer(F)).Feptr++
goto __1752
__1752:
i++
goto __1751
goto __1753
__1753:
;
goto __1647
__1658:
i = Tuint32_t(1)
__1758:
if !(i <= *(*Tuint32_t)(unsafe.Pointer(F + 56))) {
goto __1760
}
if !((*Theapframe)(unsafe.Pointer(F)).Feptr >= (*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject) {
goto __1761
}
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) != 0 && ((*Theapframe)(unsafe.Pointer(F)).Feptr > (*Tmatch_block_8)(unsafe.Pointer(mb)).Fstart_used_ptr || (*Tmatch_block_8)(unsafe.Pointer(mb)).Fallowemptypartial != 0)) {
goto __1762
}
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fhitend = DTRUE
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) > 1) {
goto __1763
}
return -2
__1763:
;
__1762:
;
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__1761:
;
if !(!(1 != 0) || int32(*(*Tuint8_t)(unsafe.Pointer((*Tmatch_block_8)(unsafe.Pointer(mb)).Fctypes + uintptr(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr))))))&Dctype_space == 0) {
goto __1764
}
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__1764:
;
(*Theapframe)(unsafe.Pointer(F)).Feptr++
goto __1759
__1759:
i++
goto __1758
goto __1760
__1760:
;
goto __1647
__1659:
i = Tuint32_t(1)
__1765:
if !(i <= *(*Tuint32_t)(unsafe.Pointer(F + 56))) {
goto __1767
}
if !((*Theapframe)(unsafe.Pointer(F)).Feptr >= (*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject) {
goto __1768
}
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) != 0 && ((*Theapframe)(unsafe.Pointer(F)).Feptr > (*Tmatch_block_8)(unsafe.Pointer(mb)).Fstart_used_ptr || (*Tmatch_block_8)(unsafe.Pointer(mb)).Fallowemptypartial != 0)) {
goto __1769
}
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fhitend = DTRUE
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) > 1) {
goto __1770
}
return -2
__1770:
;
__1769:
;
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__1768:
;
if !(1 != 0 && int32(*(*Tuint8_t)(unsafe.Pointer((*Tmatch_block_8)(unsafe.Pointer(mb)).Fctypes + uintptr(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr))))))&Dctype_word != 0) {
goto __1771
}
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__1771:
;
(*Theapframe)(unsafe.Pointer(F)).Feptr++
goto __1766
__1766:
i++
goto __1765
goto __1767
__1767:
;
goto __1647
__1660:
i = Tuint32_t(1)
__1772:
if !(i <= *(*Tuint32_t)(unsafe.Pointer(F + 56))) {
goto __1774
}
if !((*Theapframe)(unsafe.Pointer(F)).Feptr >= (*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject) {
goto __1775
}
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) != 0 && ((*Theapframe)(unsafe.Pointer(F)).Feptr > (*Tmatch_block_8)(unsafe.Pointer(mb)).Fstart_used_ptr || (*Tmatch_block_8)(unsafe.Pointer(mb)).Fallowemptypartial != 0)) {
goto __1776
}
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fhitend = DTRUE
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) > 1) {
goto __1777
}
return -2
__1777:
;
__1776:
;
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__1775:
;
if !(!(1 != 0) || int32(*(*Tuint8_t)(unsafe.Pointer((*Tmatch_block_8)(unsafe.Pointer(mb)).Fctypes + uintptr(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr))))))&Dctype_word == 0) {
goto __1778
}
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__1778:
;
(*Theapframe)(unsafe.Pointer(F)).Feptr++
goto __1773
__1773:
i++
goto __1772
goto __1774
__1774:
;
goto __1647
__1661:
return -44
__1647:
;
__1409:
;
__1388:
;
__1127:
;
__1125:
;
// If Lmin = Lmax we are done. Continue with the main loop.
if !(*(*Tuint32_t)(unsafe.Pointer(F + 56)) == *(*Tuint32_t)(unsafe.Pointer(F + 56 + 1*4))) {
goto __1779
}
goto __11
__1779:
;
// If minimizing, we have to test the rest of the pattern before each
// subsequent match. This means we cannot use a local "notmatch" variable as
// in the other cases. As all 4 temporary 32-bit values in the frame are
// already in use, just test the type each time.
if !(reptype == REPTYPE_MIN) {
goto __1780
}
if !(proptype >= 0) {
goto __1782
}
switch proptype {
case DPT_ANY:
goto __1785
// Control never gets here
case DPT_LAMP:
goto __1786
// Control never gets here
case DPT_GC:
goto __1787
// Control never gets here
case DPT_PC:
goto __1788
// Control never gets here
case DPT_SC:
goto __1789
// Control never gets here
case DPT_SCX:
goto __1790
// Control never gets here
case DPT_ALNUM:
goto __1791
// Control never gets here
// Perl space used to exclude VT, but from Perl 5.18 it is included,
// which means that Perl space and POSIX space are now identical. PCRE
// was changed at release 8.34.
case DPT_SPACE:
goto __1792 // Perl space
case DPT_PXSPACE:
goto __1793
// Control never gets here
case DPT_WORD:
goto __1794
// Control never gets here
case DPT_CLIST:
goto __1795
// Control never gets here
case DPT_UCNC:
goto __1796
// Control never gets here
case DPT_BIDICL:
goto __1797
// Control never gets here
case DPT_BOOL:
goto __1798
// Control never gets here
// This should never occur
default:
goto __1799
}
goto __1784
__1785:
__1800:
start_ecode = (*Theapframe)(unsafe.Pointer(F)).Fecode
(*Theapframe)(unsafe.Pointer(F)).Freturn_id = RM208
goto MATCH_RECURSE
L_RM208:
;
if !(rrc != DMATCH_NOMATCH) {
goto __1803
}
rrc = rrc
goto RETURN_SWITCH
__1803:
;
if !(libc.PostIncUint32(&*(*Tuint32_t)(unsafe.Pointer(F + 56)), 1) >= *(*Tuint32_t)(unsafe.Pointer(F + 56 + 1*4))) {
goto __1804
}
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__1804:
;
if !((*Theapframe)(unsafe.Pointer(F)).Feptr >= (*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject) {
goto __1805
}
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) != 0 && ((*Theapframe)(unsafe.Pointer(F)).Feptr > (*Tmatch_block_8)(unsafe.Pointer(mb)).Fstart_used_ptr || (*Tmatch_block_8)(unsafe.Pointer(mb)).Fallowemptypartial != 0)) {
goto __1806
}
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fhitend = DTRUE
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) > 1) {
goto __1807
}
return -2
__1807:
;
__1806:
;
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__1805:
;
fc = Tuint32_t(*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&(*Theapframe)(unsafe.Pointer(F)).Feptr, 1))))
if !(utf != 0 && fc >= 0xc0) {
goto __1808
}
if !(fc&0x20 == Tuint32_t(0)) {
goto __1809
}
fc = fc&0x1f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&(*Theapframe)(unsafe.Pointer(F)).Feptr, 1))))&0x3f
goto __1810
__1809:
if !(fc&0x10 == Tuint32_t(0)) {
goto __1811
}
fc = fc&0x0f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += uintptr(2)
goto __1812
__1811:
if !(fc&0x08 == Tuint32_t(0)) {
goto __1813
}
fc = fc&0x07<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += uintptr(3)
goto __1814
__1813:
if !(fc&0x04 == Tuint32_t(0)) {
goto __1815
}
fc = fc&0x03<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 3)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += uintptr(4)
goto __1816
__1815:
fc = fc&0x01<<30 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0x3f<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 3)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 4)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += uintptr(5)
__1816:
;
__1814:
;
__1812:
;
__1810:
;
__1808:
;
if !(*(*Tuint32_t)(unsafe.Pointer(F + 56 + 2*4)) == OP_NOTPROP) {
goto __1817
}
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__1817:
;
goto __1801
__1801:
goto __1800
goto __1802
__1802:
;
// Control never gets here
__1786:
__1818:
start_ecode = (*Theapframe)(unsafe.Pointer(F)).Fecode
(*Theapframe)(unsafe.Pointer(F)).Freturn_id = RM209
goto MATCH_RECURSE
L_RM209:
;
if !(rrc != DMATCH_NOMATCH) {
goto __1821
}
rrc = rrc
goto RETURN_SWITCH
__1821:
;
if !(libc.PostIncUint32(&*(*Tuint32_t)(unsafe.Pointer(F + 56)), 1) >= *(*Tuint32_t)(unsafe.Pointer(F + 56 + 1*4))) {
goto __1822
}
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__1822:
;
if !((*Theapframe)(unsafe.Pointer(F)).Feptr >= (*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject) {
goto __1823
}
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) != 0 && ((*Theapframe)(unsafe.Pointer(F)).Feptr > (*Tmatch_block_8)(unsafe.Pointer(mb)).Fstart_used_ptr || (*Tmatch_block_8)(unsafe.Pointer(mb)).Fallowemptypartial != 0)) {
goto __1824
}
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fhitend = DTRUE
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) > 1) {
goto __1825
}
return -2
__1825:
;
__1824:
;
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__1823:
;
fc = Tuint32_t(*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&(*Theapframe)(unsafe.Pointer(F)).Feptr, 1))))
if !(utf != 0 && fc >= 0xc0) {
goto __1826
}
if !(fc&0x20 == Tuint32_t(0)) {
goto __1827
}
fc = fc&0x1f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&(*Theapframe)(unsafe.Pointer(F)).Feptr, 1))))&0x3f
goto __1828
__1827:
if !(fc&0x10 == Tuint32_t(0)) {
goto __1829
}
fc = fc&0x0f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += uintptr(2)
goto __1830
__1829:
if !(fc&0x08 == Tuint32_t(0)) {
goto __1831
}
fc = fc&0x07<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += uintptr(3)
goto __1832
__1831:
if !(fc&0x04 == Tuint32_t(0)) {
goto __1833
}
fc = fc&0x03<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 3)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += uintptr(4)
goto __1834
__1833:
fc = fc&0x01<<30 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0x3f<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 3)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 4)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += uintptr(5)
__1834:
;
__1832:
;
__1830:
;
__1828:
;
__1826:
;
chartype1 = int32((*Tucd_record)(unsafe.Pointer(uintptr(unsafe.Pointer(&X_pcre2_ucd_records_8)) + uintptr(X_pcre2_ucd_stage2_8[int32(X_pcre2_ucd_stage1_8[int32(fc)/DUCD_BLOCK_SIZE])*DUCD_BLOCK_SIZE+int32(fc)%DUCD_BLOCK_SIZE])*12)).Fchartype)
if !(libc.Bool32(chartype1 == ucp_Lu || chartype1 == ucp_Ll || chartype1 == ucp_Lt) == libc.Bool32(*(*Tuint32_t)(unsafe.Pointer(F + 56 + 2*4)) == OP_NOTPROP)) {
goto __1835
}
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__1835:
;
goto __1819
__1819:
goto __1818
goto __1820
__1820:
;
// Control never gets here
__1787:
__1836:
start_ecode = (*Theapframe)(unsafe.Pointer(F)).Fecode
(*Theapframe)(unsafe.Pointer(F)).Freturn_id = RM210
goto MATCH_RECURSE
L_RM210:
;
if !(rrc != DMATCH_NOMATCH) {
goto __1839
}
rrc = rrc
goto RETURN_SWITCH
__1839:
;
if !(libc.PostIncUint32(&*(*Tuint32_t)(unsafe.Pointer(F + 56)), 1) >= *(*Tuint32_t)(unsafe.Pointer(F + 56 + 1*4))) {
goto __1840
}
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__1840:
;
if !((*Theapframe)(unsafe.Pointer(F)).Feptr >= (*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject) {
goto __1841
}
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) != 0 && ((*Theapframe)(unsafe.Pointer(F)).Feptr > (*Tmatch_block_8)(unsafe.Pointer(mb)).Fstart_used_ptr || (*Tmatch_block_8)(unsafe.Pointer(mb)).Fallowemptypartial != 0)) {
goto __1842
}
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fhitend = DTRUE
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) > 1) {
goto __1843
}
return -2
__1843:
;
__1842:
;
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__1841:
;
fc = Tuint32_t(*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&(*Theapframe)(unsafe.Pointer(F)).Feptr, 1))))
if !(utf != 0 && fc >= 0xc0) {
goto __1844
}
if !(fc&0x20 == Tuint32_t(0)) {
goto __1845
}
fc = fc&0x1f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&(*Theapframe)(unsafe.Pointer(F)).Feptr, 1))))&0x3f
goto __1846
__1845:
if !(fc&0x10 == Tuint32_t(0)) {
goto __1847
}
fc = fc&0x0f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += uintptr(2)
goto __1848
__1847:
if !(fc&0x08 == Tuint32_t(0)) {
goto __1849
}
fc = fc&0x07<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += uintptr(3)
goto __1850
__1849:
if !(fc&0x04 == Tuint32_t(0)) {
goto __1851
}
fc = fc&0x03<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 3)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += uintptr(4)
goto __1852
__1851:
fc = fc&0x01<<30 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0x3f<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 3)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 4)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += uintptr(5)
__1852:
;
__1850:
;
__1848:
;
__1846:
;
__1844:
;
if !(libc.Bool32(X_pcre2_ucp_gentype_8[(*Tucd_record)(unsafe.Pointer(uintptr(unsafe.Pointer(&X_pcre2_ucd_records_8))+uintptr(X_pcre2_ucd_stage2_8[int32(X_pcre2_ucd_stage1_8[int32(fc)/DUCD_BLOCK_SIZE])*DUCD_BLOCK_SIZE+int32(fc)%DUCD_BLOCK_SIZE])*12)).Fchartype] == *(*Tuint32_t)(unsafe.Pointer(F + 56 + 3*4))) == libc.Bool32(*(*Tuint32_t)(unsafe.Pointer(F + 56 + 2*4)) == OP_NOTPROP)) {
goto __1853
}
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__1853:
;
goto __1837
__1837:
goto __1836
goto __1838
__1838:
;
// Control never gets here
__1788:
__1854:
start_ecode = (*Theapframe)(unsafe.Pointer(F)).Fecode
(*Theapframe)(unsafe.Pointer(F)).Freturn_id = RM211
goto MATCH_RECURSE
L_RM211:
;
if !(rrc != DMATCH_NOMATCH) {
goto __1857
}
rrc = rrc
goto RETURN_SWITCH
__1857:
;
if !(libc.PostIncUint32(&*(*Tuint32_t)(unsafe.Pointer(F + 56)), 1) >= *(*Tuint32_t)(unsafe.Pointer(F + 56 + 1*4))) {
goto __1858
}
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__1858:
;
if !((*Theapframe)(unsafe.Pointer(F)).Feptr >= (*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject) {
goto __1859
}
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) != 0 && ((*Theapframe)(unsafe.Pointer(F)).Feptr > (*Tmatch_block_8)(unsafe.Pointer(mb)).Fstart_used_ptr || (*Tmatch_block_8)(unsafe.Pointer(mb)).Fallowemptypartial != 0)) {
goto __1860
}
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fhitend = DTRUE
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) > 1) {
goto __1861
}
return -2
__1861:
;
__1860:
;
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__1859:
;
fc = Tuint32_t(*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&(*Theapframe)(unsafe.Pointer(F)).Feptr, 1))))
if !(utf != 0 && fc >= 0xc0) {
goto __1862
}
if !(fc&0x20 == Tuint32_t(0)) {
goto __1863
}
fc = fc&0x1f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&(*Theapframe)(unsafe.Pointer(F)).Feptr, 1))))&0x3f
goto __1864
__1863:
if !(fc&0x10 == Tuint32_t(0)) {
goto __1865
}
fc = fc&0x0f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += uintptr(2)
goto __1866
__1865:
if !(fc&0x08 == Tuint32_t(0)) {
goto __1867
}
fc = fc&0x07<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += uintptr(3)
goto __1868
__1867:
if !(fc&0x04 == Tuint32_t(0)) {
goto __1869
}
fc = fc&0x03<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 3)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += uintptr(4)
goto __1870
__1869:
fc = fc&0x01<<30 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0x3f<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 3)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 4)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += uintptr(5)
__1870:
;
__1868:
;
__1866:
;
__1864:
;
__1862:
;
if !(libc.Bool32(Tuint32_t((*Tucd_record)(unsafe.Pointer(uintptr(unsafe.Pointer(&X_pcre2_ucd_records_8))+uintptr(X_pcre2_ucd_stage2_8[int32(X_pcre2_ucd_stage1_8[int32(fc)/DUCD_BLOCK_SIZE])*DUCD_BLOCK_SIZE+int32(fc)%DUCD_BLOCK_SIZE])*12)).Fchartype) == *(*Tuint32_t)(unsafe.Pointer(F + 56 + 3*4))) == libc.Bool32(*(*Tuint32_t)(unsafe.Pointer(F + 56 + 2*4)) == OP_NOTPROP)) {
goto __1871
}
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__1871:
;
goto __1855
__1855:
goto __1854
goto __1856
__1856:
;
// Control never gets here
__1789:
__1872:
start_ecode = (*Theapframe)(unsafe.Pointer(F)).Fecode
(*Theapframe)(unsafe.Pointer(F)).Freturn_id = RM212
goto MATCH_RECURSE
L_RM212:
;
if !(rrc != DMATCH_NOMATCH) {
goto __1875
}
rrc = rrc
goto RETURN_SWITCH
__1875:
;
if !(libc.PostIncUint32(&*(*Tuint32_t)(unsafe.Pointer(F + 56)), 1) >= *(*Tuint32_t)(unsafe.Pointer(F + 56 + 1*4))) {
goto __1876
}
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__1876:
;
if !((*Theapframe)(unsafe.Pointer(F)).Feptr >= (*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject) {
goto __1877
}
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) != 0 && ((*Theapframe)(unsafe.Pointer(F)).Feptr > (*Tmatch_block_8)(unsafe.Pointer(mb)).Fstart_used_ptr || (*Tmatch_block_8)(unsafe.Pointer(mb)).Fallowemptypartial != 0)) {
goto __1878
}
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fhitend = DTRUE
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) > 1) {
goto __1879
}
return -2
__1879:
;
__1878:
;
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__1877:
;
fc = Tuint32_t(*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&(*Theapframe)(unsafe.Pointer(F)).Feptr, 1))))
if !(utf != 0 && fc >= 0xc0) {
goto __1880
}
if !(fc&0x20 == Tuint32_t(0)) {
goto __1881
}
fc = fc&0x1f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&(*Theapframe)(unsafe.Pointer(F)).Feptr, 1))))&0x3f
goto __1882
__1881:
if !(fc&0x10 == Tuint32_t(0)) {
goto __1883
}
fc = fc&0x0f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += uintptr(2)
goto __1884
__1883:
if !(fc&0x08 == Tuint32_t(0)) {
goto __1885
}
fc = fc&0x07<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += uintptr(3)
goto __1886
__1885:
if !(fc&0x04 == Tuint32_t(0)) {
goto __1887
}
fc = fc&0x03<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 3)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += uintptr(4)
goto __1888
__1887:
fc = fc&0x01<<30 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0x3f<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 3)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 4)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += uintptr(5)
__1888:
;
__1886:
;
__1884:
;
__1882:
;
__1880:
;
if !(libc.Bool32(Tuint32_t((*Tucd_record)(unsafe.Pointer(uintptr(unsafe.Pointer(&X_pcre2_ucd_records_8))+uintptr(X_pcre2_ucd_stage2_8[int32(X_pcre2_ucd_stage1_8[int32(fc)/DUCD_BLOCK_SIZE])*DUCD_BLOCK_SIZE+int32(fc)%DUCD_BLOCK_SIZE])*12)).Fscript) == *(*Tuint32_t)(unsafe.Pointer(F + 56 + 3*4))) == libc.Bool32(*(*Tuint32_t)(unsafe.Pointer(F + 56 + 2*4)) == OP_NOTPROP)) {
goto __1889
}
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__1889:
;
goto __1873
__1873:
goto __1872
goto __1874
__1874:
;
// Control never gets here
__1790:
__1890:
start_ecode = (*Theapframe)(unsafe.Pointer(F)).Fecode
(*Theapframe)(unsafe.Pointer(F)).Freturn_id = RM225
goto MATCH_RECURSE
L_RM225:
;
if !(rrc != DMATCH_NOMATCH) {
goto __1893
}
rrc = rrc
goto RETURN_SWITCH
__1893:
;
if !(libc.PostIncUint32(&*(*Tuint32_t)(unsafe.Pointer(F + 56)), 1) >= *(*Tuint32_t)(unsafe.Pointer(F + 56 + 1*4))) {
goto __1894
}
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__1894:
;
if !((*Theapframe)(unsafe.Pointer(F)).Feptr >= (*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject) {
goto __1895
}
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) != 0 && ((*Theapframe)(unsafe.Pointer(F)).Feptr > (*Tmatch_block_8)(unsafe.Pointer(mb)).Fstart_used_ptr || (*Tmatch_block_8)(unsafe.Pointer(mb)).Fallowemptypartial != 0)) {
goto __1896
}
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fhitend = DTRUE
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) > 1) {
goto __1897
}
return -2
__1897:
;
__1896:
;
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__1895:
;
fc = Tuint32_t(*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&(*Theapframe)(unsafe.Pointer(F)).Feptr, 1))))
if !(utf != 0 && fc >= 0xc0) {
goto __1898
}
if !(fc&0x20 == Tuint32_t(0)) {
goto __1899
}
fc = fc&0x1f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&(*Theapframe)(unsafe.Pointer(F)).Feptr, 1))))&0x3f
goto __1900
__1899:
if !(fc&0x10 == Tuint32_t(0)) {
goto __1901
}
fc = fc&0x0f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += uintptr(2)
goto __1902
__1901:
if !(fc&0x08 == Tuint32_t(0)) {
goto __1903
}
fc = fc&0x07<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += uintptr(3)
goto __1904
__1903:
if !(fc&0x04 == Tuint32_t(0)) {
goto __1905
}
fc = fc&0x03<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 3)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += uintptr(4)
goto __1906
__1905:
fc = fc&0x01<<30 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0x3f<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 3)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 4)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += uintptr(5)
__1906:
;
__1904:
;
__1902:
;
__1900:
;
__1898:
;
prop3 = uintptr(unsafe.Pointer(&X_pcre2_ucd_records_8)) + uintptr(X_pcre2_ucd_stage2_8[int32(X_pcre2_ucd_stage1_8[int32(fc)/DUCD_BLOCK_SIZE])*DUCD_BLOCK_SIZE+int32(fc)%DUCD_BLOCK_SIZE])*12
ok4 = libc.Bool32(Tuint32_t((*Tucd_record)(unsafe.Pointer(prop3)).Fscript) == *(*Tuint32_t)(unsafe.Pointer(F + 56 + 3*4)) ||
*(*Tuint32_t)(unsafe.Pointer(uintptr(unsafe.Pointer(&X_pcre2_ucd_script_sets_8)) + uintptr(int32((*Tucd_record)(unsafe.Pointer(prop3)).Fscriptx_bidiclass)&DUCD_SCRIPTX_MASK)*4 + uintptr(*(*Tuint32_t)(unsafe.Pointer(F + 56 + 3*4))/Tuint32_t(32))*4))&(uint32(1)<<(*(*Tuint32_t)(unsafe.Pointer(F + 56 + 3*4))%Tuint32_t(32))) != Tuint32_t(0))
if !(ok4 == libc.Bool32(*(*Tuint32_t)(unsafe.Pointer(F + 56 + 2*4)) == OP_NOTPROP)) {
goto __1907
}
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__1907:
;
goto __1891
__1891:
goto __1890
goto __1892
__1892:
;
// Control never gets here
__1791:
__1908:
start_ecode = (*Theapframe)(unsafe.Pointer(F)).Fecode
(*Theapframe)(unsafe.Pointer(F)).Freturn_id = RM213
goto MATCH_RECURSE
L_RM213:
;
if !(rrc != DMATCH_NOMATCH) {
goto __1911
}
rrc = rrc
goto RETURN_SWITCH
__1911:
;
if !(libc.PostIncUint32(&*(*Tuint32_t)(unsafe.Pointer(F + 56)), 1) >= *(*Tuint32_t)(unsafe.Pointer(F + 56 + 1*4))) {
goto __1912
}
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__1912:
;
if !((*Theapframe)(unsafe.Pointer(F)).Feptr >= (*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject) {
goto __1913
}
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) != 0 && ((*Theapframe)(unsafe.Pointer(F)).Feptr > (*Tmatch_block_8)(unsafe.Pointer(mb)).Fstart_used_ptr || (*Tmatch_block_8)(unsafe.Pointer(mb)).Fallowemptypartial != 0)) {
goto __1914
}
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fhitend = DTRUE
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) > 1) {
goto __1915
}
return -2
__1915:
;
__1914:
;
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__1913:
;
fc = Tuint32_t(*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&(*Theapframe)(unsafe.Pointer(F)).Feptr, 1))))
if !(utf != 0 && fc >= 0xc0) {
goto __1916
}
if !(fc&0x20 == Tuint32_t(0)) {
goto __1917
}
fc = fc&0x1f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&(*Theapframe)(unsafe.Pointer(F)).Feptr, 1))))&0x3f
goto __1918
__1917:
if !(fc&0x10 == Tuint32_t(0)) {
goto __1919
}
fc = fc&0x0f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += uintptr(2)
goto __1920
__1919:
if !(fc&0x08 == Tuint32_t(0)) {
goto __1921
}
fc = fc&0x07<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += uintptr(3)
goto __1922
__1921:
if !(fc&0x04 == Tuint32_t(0)) {
goto __1923
}
fc = fc&0x03<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 3)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += uintptr(4)
goto __1924
__1923:
fc = fc&0x01<<30 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0x3f<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 3)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 4)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += uintptr(5)
__1924:
;
__1922:
;
__1920:
;
__1918:
;
__1916:
;
category2 = int32(X_pcre2_ucp_gentype_8[(*Tucd_record)(unsafe.Pointer(uintptr(unsafe.Pointer(&X_pcre2_ucd_records_8))+uintptr(X_pcre2_ucd_stage2_8[int32(X_pcre2_ucd_stage1_8[int32(fc)/DUCD_BLOCK_SIZE])*DUCD_BLOCK_SIZE+int32(fc)%DUCD_BLOCK_SIZE])*12)).Fchartype])
if !(libc.Bool32(category2 == ucp_L || category2 == ucp_N) == libc.Bool32(*(*Tuint32_t)(unsafe.Pointer(F + 56 + 2*4)) == OP_NOTPROP)) {
goto __1925
}
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__1925:
;
goto __1909
__1909:
goto __1908
goto __1910
__1910:
;
// Control never gets here
// Perl space used to exclude VT, but from Perl 5.18 it is included,
// which means that Perl space and POSIX space are now identical. PCRE
// was changed at release 8.34.
__1792: // Perl space
__1793: // POSIX space
__1926:
start_ecode = (*Theapframe)(unsafe.Pointer(F)).Fecode
(*Theapframe)(unsafe.Pointer(F)).Freturn_id = RM214
goto MATCH_RECURSE
L_RM214:
;
if !(rrc != DMATCH_NOMATCH) {
goto __1929
}
rrc = rrc
goto RETURN_SWITCH
__1929:
;
if !(libc.PostIncUint32(&*(*Tuint32_t)(unsafe.Pointer(F + 56)), 1) >= *(*Tuint32_t)(unsafe.Pointer(F + 56 + 1*4))) {
goto __1930
}
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__1930:
;
if !((*Theapframe)(unsafe.Pointer(F)).Feptr >= (*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject) {
goto __1931
}
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) != 0 && ((*Theapframe)(unsafe.Pointer(F)).Feptr > (*Tmatch_block_8)(unsafe.Pointer(mb)).Fstart_used_ptr || (*Tmatch_block_8)(unsafe.Pointer(mb)).Fallowemptypartial != 0)) {
goto __1932
}
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fhitend = DTRUE
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) > 1) {
goto __1933
}
return -2
__1933:
;
__1932:
;
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__1931:
;
fc = Tuint32_t(*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&(*Theapframe)(unsafe.Pointer(F)).Feptr, 1))))
if !(utf != 0 && fc >= 0xc0) {
goto __1934
}
if !(fc&0x20 == Tuint32_t(0)) {
goto __1935
}
fc = fc&0x1f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&(*Theapframe)(unsafe.Pointer(F)).Feptr, 1))))&0x3f
goto __1936
__1935:
if !(fc&0x10 == Tuint32_t(0)) {
goto __1937
}
fc = fc&0x0f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += uintptr(2)
goto __1938
__1937:
if !(fc&0x08 == Tuint32_t(0)) {
goto __1939
}
fc = fc&0x07<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += uintptr(3)
goto __1940
__1939:
if !(fc&0x04 == Tuint32_t(0)) {
goto __1941
}
fc = fc&0x03<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 3)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += uintptr(4)
goto __1942
__1941:
fc = fc&0x01<<30 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0x3f<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 3)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 4)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += uintptr(5)
__1942:
;
__1940:
;
__1938:
;
__1936:
;
__1934:
;
switch fc {
case Tuint32_t('\011'):
goto __1944
case Tuint32_t('\040'):
goto __1945
case libc.Uint32FromUint8(libc.Uint8FromInt32(160)):
goto __1946
case Tuint32_t(0x1680):
goto __1947 /* OGHAM SPACE MARK */
case Tuint32_t(0x180e):
goto __1948 /* MONGOLIAN VOWEL SEPARATOR */
case Tuint32_t(0x2000):
goto __1949 /* EN QUAD */
case Tuint32_t(0x2001):
goto __1950 /* EM QUAD */
case Tuint32_t(0x2002):
goto __1951 /* EN SPACE */
case Tuint32_t(0x2003):
goto __1952 /* EM SPACE */
case Tuint32_t(0x2004):
goto __1953 /* THREE-PER-EM SPACE */
case Tuint32_t(0x2005):
goto __1954 /* FOUR-PER-EM SPACE */
case Tuint32_t(0x2006):
goto __1955 /* SIX-PER-EM SPACE */
case Tuint32_t(0x2007):
goto __1956 /* FIGURE SPACE */
case Tuint32_t(0x2008):
goto __1957 /* PUNCTUATION SPACE */
case Tuint32_t(0x2009):
goto __1958 /* THIN SPACE */
case Tuint32_t(0x200A):
goto __1959 /* HAIR SPACE */
case Tuint32_t(0x202f):
goto __1960 /* NARROW NO-BREAK SPACE */
case Tuint32_t(0x205f):
goto __1961 /* MEDIUM MATHEMATICAL SPACE */
case Tuint32_t(0x3000):
goto __1962
case Tuint32_t('\012'):
goto __1963
case Tuint32_t('\013'):
goto __1964
case Tuint32_t('\014'):
goto __1965
case Tuint32_t('\015'):
goto __1966
case libc.Uint32FromUint8(libc.Uint8FromInt32(133)):
goto __1967
case Tuint32_t(0x2028):
goto __1968 /* LINE SEPARATOR */
case Tuint32_t(0x2029):
goto __1969
default:
goto __1970
}
goto __1943
__1944:
__1945:
__1946:
__1947: /* OGHAM SPACE MARK */
__1948: /* MONGOLIAN VOWEL SEPARATOR */
__1949: /* EN QUAD */
__1950: /* EM QUAD */
__1951: /* EN SPACE */
__1952: /* EM SPACE */
__1953: /* THREE-PER-EM SPACE */
__1954: /* FOUR-PER-EM SPACE */
__1955: /* SIX-PER-EM SPACE */
__1956: /* FIGURE SPACE */
__1957: /* PUNCTUATION SPACE */
__1958: /* THIN SPACE */
__1959: /* HAIR SPACE */
__1960: /* NARROW NO-BREAK SPACE */
__1961: /* MEDIUM MATHEMATICAL SPACE */
__1962:
__1963:
__1964:
__1965:
__1966:
__1967:
__1968: /* LINE SEPARATOR */
__1969:
if !(*(*Tuint32_t)(unsafe.Pointer(F + 56 + 2*4)) == OP_NOTPROP) {
goto __1971
}
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__1971:
;
goto __1943
__1970:
if !(libc.Bool32(X_pcre2_ucp_gentype_8[(*Tucd_record)(unsafe.Pointer(uintptr(unsafe.Pointer(&X_pcre2_ucd_records_8))+uintptr(X_pcre2_ucd_stage2_8[int32(X_pcre2_ucd_stage1_8[int32(fc)/DUCD_BLOCK_SIZE])*DUCD_BLOCK_SIZE+int32(fc)%DUCD_BLOCK_SIZE])*12)).Fchartype] == ucp_Z) == libc.Bool32(*(*Tuint32_t)(unsafe.Pointer(F + 56 + 2*4)) == OP_NOTPROP)) {
goto __1972
}
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__1972:
;
goto __1943
__1943:
;
goto __1927
__1927:
goto __1926
goto __1928
__1928:
;
// Control never gets here
__1794:
__1973:
start_ecode = (*Theapframe)(unsafe.Pointer(F)).Fecode
(*Theapframe)(unsafe.Pointer(F)).Freturn_id = RM215
goto MATCH_RECURSE
L_RM215:
;
if !(rrc != DMATCH_NOMATCH) {
goto __1976
}
rrc = rrc
goto RETURN_SWITCH
__1976:
;
if !(libc.PostIncUint32(&*(*Tuint32_t)(unsafe.Pointer(F + 56)), 1) >= *(*Tuint32_t)(unsafe.Pointer(F + 56 + 1*4))) {
goto __1977
}
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__1977:
;
if !((*Theapframe)(unsafe.Pointer(F)).Feptr >= (*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject) {
goto __1978
}
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) != 0 && ((*Theapframe)(unsafe.Pointer(F)).Feptr > (*Tmatch_block_8)(unsafe.Pointer(mb)).Fstart_used_ptr || (*Tmatch_block_8)(unsafe.Pointer(mb)).Fallowemptypartial != 0)) {
goto __1979
}
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fhitend = DTRUE
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) > 1) {
goto __1980
}
return -2
__1980:
;
__1979:
;
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__1978:
;
fc = Tuint32_t(*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&(*Theapframe)(unsafe.Pointer(F)).Feptr, 1))))
if !(utf != 0 && fc >= 0xc0) {
goto __1981
}
if !(fc&0x20 == Tuint32_t(0)) {
goto __1982
}
fc = fc&0x1f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&(*Theapframe)(unsafe.Pointer(F)).Feptr, 1))))&0x3f
goto __1983
__1982:
if !(fc&0x10 == Tuint32_t(0)) {
goto __1984
}
fc = fc&0x0f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += uintptr(2)
goto __1985
__1984:
if !(fc&0x08 == Tuint32_t(0)) {
goto __1986
}
fc = fc&0x07<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += uintptr(3)
goto __1987
__1986:
if !(fc&0x04 == Tuint32_t(0)) {
goto __1988
}
fc = fc&0x03<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 3)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += uintptr(4)
goto __1989
__1988:
fc = fc&0x01<<30 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0x3f<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 3)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 4)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += uintptr(5)
__1989:
;
__1987:
;
__1985:
;
__1983:
;
__1981:
;
category3 = int32(X_pcre2_ucp_gentype_8[(*Tucd_record)(unsafe.Pointer(uintptr(unsafe.Pointer(&X_pcre2_ucd_records_8))+uintptr(X_pcre2_ucd_stage2_8[int32(X_pcre2_ucd_stage1_8[int32(fc)/DUCD_BLOCK_SIZE])*DUCD_BLOCK_SIZE+int32(fc)%DUCD_BLOCK_SIZE])*12)).Fchartype])
if !(libc.Bool32(category3 == ucp_L || category3 == ucp_N || fc == Tuint32_t('\137')) == libc.Bool32(*(*Tuint32_t)(unsafe.Pointer(F + 56 + 2*4)) == OP_NOTPROP)) {
goto __1990
}
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__1990:
;
goto __1974
__1974:
goto __1973
goto __1975
__1975:
;
// Control never gets here
__1795:
__1991:
start_ecode = (*Theapframe)(unsafe.Pointer(F)).Fecode
(*Theapframe)(unsafe.Pointer(F)).Freturn_id = RM216
goto MATCH_RECURSE
L_RM216:
;
if !(rrc != DMATCH_NOMATCH) {
goto __1994
}
rrc = rrc
goto RETURN_SWITCH
__1994:
;
if !(libc.PostIncUint32(&*(*Tuint32_t)(unsafe.Pointer(F + 56)), 1) >= *(*Tuint32_t)(unsafe.Pointer(F + 56 + 1*4))) {
goto __1995
}
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__1995:
;
if !((*Theapframe)(unsafe.Pointer(F)).Feptr >= (*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject) {
goto __1996
}
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) != 0 && ((*Theapframe)(unsafe.Pointer(F)).Feptr > (*Tmatch_block_8)(unsafe.Pointer(mb)).Fstart_used_ptr || (*Tmatch_block_8)(unsafe.Pointer(mb)).Fallowemptypartial != 0)) {
goto __1997
}
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fhitend = DTRUE
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) > 1) {
goto __1998
}
return -2
__1998:
;
__1997:
;
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__1996:
;
fc = Tuint32_t(*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&(*Theapframe)(unsafe.Pointer(F)).Feptr, 1))))
if !(utf != 0 && fc >= 0xc0) {
goto __1999
}
if !(fc&0x20 == Tuint32_t(0)) {
goto __2000
}
fc = fc&0x1f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&(*Theapframe)(unsafe.Pointer(F)).Feptr, 1))))&0x3f
goto __2001
__2000:
if !(fc&0x10 == Tuint32_t(0)) {
goto __2002
}
fc = fc&0x0f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += uintptr(2)
goto __2003
__2002:
if !(fc&0x08 == Tuint32_t(0)) {
goto __2004
}
fc = fc&0x07<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += uintptr(3)
goto __2005
__2004:
if !(fc&0x04 == Tuint32_t(0)) {
goto __2006
}
fc = fc&0x03<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 3)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += uintptr(4)
goto __2007
__2006:
fc = fc&0x01<<30 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0x3f<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 3)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 4)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += uintptr(5)
__2007:
;
__2005:
;
__2003:
;
__2001:
;
__1999:
;
cp2 = uintptr(unsafe.Pointer(&X_pcre2_ucd_caseless_sets_8)) + uintptr(*(*Tuint32_t)(unsafe.Pointer(F + 56 + 3*4)))*4
__2008:
if !(fc < *(*Tuint32_t)(unsafe.Pointer(cp2))) {
goto __2011
}
if !(*(*Tuint32_t)(unsafe.Pointer(F + 56 + 2*4)) == OP_NOTPROP) {
goto __2012
}
goto __2010
__2012:
;
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__2011:
;
if !(fc == *(*Tuint32_t)(unsafe.Pointer(libc.PostIncUintptr(&cp2, 4)))) {
goto __2013
}
if !(*(*Tuint32_t)(unsafe.Pointer(F + 56 + 2*4)) == OP_NOTPROP) {
goto __2014
}
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__2014:
;
goto __2010
__2013:
;
goto __2009
__2009:
goto __2008
goto __2010
__2010:
;
goto __1992
__1992:
goto __1991
goto __1993
__1993:
;
// Control never gets here
__1796:
__2015:
start_ecode = (*Theapframe)(unsafe.Pointer(F)).Fecode
(*Theapframe)(unsafe.Pointer(F)).Freturn_id = RM217
goto MATCH_RECURSE
L_RM217:
;
if !(rrc != DMATCH_NOMATCH) {
goto __2018
}
rrc = rrc
goto RETURN_SWITCH
__2018:
;
if !(libc.PostIncUint32(&*(*Tuint32_t)(unsafe.Pointer(F + 56)), 1) >= *(*Tuint32_t)(unsafe.Pointer(F + 56 + 1*4))) {
goto __2019
}
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__2019:
;
if !((*Theapframe)(unsafe.Pointer(F)).Feptr >= (*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject) {
goto __2020
}
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) != 0 && ((*Theapframe)(unsafe.Pointer(F)).Feptr > (*Tmatch_block_8)(unsafe.Pointer(mb)).Fstart_used_ptr || (*Tmatch_block_8)(unsafe.Pointer(mb)).Fallowemptypartial != 0)) {
goto __2021
}
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fhitend = DTRUE
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) > 1) {
goto __2022
}
return -2
__2022:
;
__2021:
;
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__2020:
;
fc = Tuint32_t(*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&(*Theapframe)(unsafe.Pointer(F)).Feptr, 1))))
if !(utf != 0 && fc >= 0xc0) {
goto __2023
}
if !(fc&0x20 == Tuint32_t(0)) {
goto __2024
}
fc = fc&0x1f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&(*Theapframe)(unsafe.Pointer(F)).Feptr, 1))))&0x3f
goto __2025
__2024:
if !(fc&0x10 == Tuint32_t(0)) {
goto __2026
}
fc = fc&0x0f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += uintptr(2)
goto __2027
__2026:
if !(fc&0x08 == Tuint32_t(0)) {
goto __2028
}
fc = fc&0x07<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += uintptr(3)
goto __2029
__2028:
if !(fc&0x04 == Tuint32_t(0)) {
goto __2030
}
fc = fc&0x03<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 3)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += uintptr(4)
goto __2031
__2030:
fc = fc&0x01<<30 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0x3f<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 3)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 4)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += uintptr(5)
__2031:
;
__2029:
;
__2027:
;
__2025:
;
__2023:
;
if !(libc.Bool32(fc == Tuint32_t('\044') || fc == Tuint32_t('\100') || fc == Tuint32_t('\140') || fc >= Tuint32_t(0xa0) && fc <= Tuint32_t(0xd7ff) || fc >= Tuint32_t(0xe000)) == libc.Bool32(*(*Tuint32_t)(unsafe.Pointer(F + 56 + 2*4)) == OP_NOTPROP)) {
goto __2032
}
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__2032:
;
goto __2016
__2016:
goto __2015
goto __2017
__2017:
;
// Control never gets here
__1797:
__2033:
start_ecode = (*Theapframe)(unsafe.Pointer(F)).Fecode
(*Theapframe)(unsafe.Pointer(F)).Freturn_id = RM224
goto MATCH_RECURSE
L_RM224:
;
if !(rrc != DMATCH_NOMATCH) {
goto __2036
}
rrc = rrc
goto RETURN_SWITCH
__2036:
;
if !(libc.PostIncUint32(&*(*Tuint32_t)(unsafe.Pointer(F + 56)), 1) >= *(*Tuint32_t)(unsafe.Pointer(F + 56 + 1*4))) {
goto __2037
}
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__2037:
;
if !((*Theapframe)(unsafe.Pointer(F)).Feptr >= (*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject) {
goto __2038
}
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) != 0 && ((*Theapframe)(unsafe.Pointer(F)).Feptr > (*Tmatch_block_8)(unsafe.Pointer(mb)).Fstart_used_ptr || (*Tmatch_block_8)(unsafe.Pointer(mb)).Fallowemptypartial != 0)) {
goto __2039
}
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fhitend = DTRUE
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) > 1) {
goto __2040
}
return -2
__2040:
;
__2039:
;
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__2038:
;
fc = Tuint32_t(*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&(*Theapframe)(unsafe.Pointer(F)).Feptr, 1))))
if !(utf != 0 && fc >= 0xc0) {
goto __2041
}
if !(fc&0x20 == Tuint32_t(0)) {
goto __2042
}
fc = fc&0x1f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&(*Theapframe)(unsafe.Pointer(F)).Feptr, 1))))&0x3f
goto __2043
__2042:
if !(fc&0x10 == Tuint32_t(0)) {
goto __2044
}
fc = fc&0x0f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += uintptr(2)
goto __2045
__2044:
if !(fc&0x08 == Tuint32_t(0)) {
goto __2046
}
fc = fc&0x07<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += uintptr(3)
goto __2047
__2046:
if !(fc&0x04 == Tuint32_t(0)) {
goto __2048
}
fc = fc&0x03<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 3)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += uintptr(4)
goto __2049
__2048:
fc = fc&0x01<<30 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0x3f<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 3)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 4)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += uintptr(5)
__2049:
;
__2047:
;
__2045:
;
__2043:
;
__2041:
;
if !(libc.Bool32(Tuint32_t(int32((*Tucd_record)(unsafe.Pointer(uintptr(unsafe.Pointer(&X_pcre2_ucd_records_8))+uintptr(X_pcre2_ucd_stage2_8[int32(X_pcre2_ucd_stage1_8[int32(fc)/DUCD_BLOCK_SIZE])*DUCD_BLOCK_SIZE+int32(fc)%DUCD_BLOCK_SIZE])*12)).Fscriptx_bidiclass)>>DUCD_BIDICLASS_SHIFT) == *(*Tuint32_t)(unsafe.Pointer(F + 56 + 3*4))) == libc.Bool32(*(*Tuint32_t)(unsafe.Pointer(F + 56 + 2*4)) == OP_NOTPROP)) {
goto __2050
}
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__2050:
;
goto __2034
__2034:
goto __2033
goto __2035
__2035:
;
// Control never gets here
__1798:
__2051:
start_ecode = (*Theapframe)(unsafe.Pointer(F)).Fecode
(*Theapframe)(unsafe.Pointer(F)).Freturn_id = RM223
goto MATCH_RECURSE
L_RM223:
;
if !(rrc != DMATCH_NOMATCH) {
goto __2054
}
rrc = rrc
goto RETURN_SWITCH
__2054:
;
if !(libc.PostIncUint32(&*(*Tuint32_t)(unsafe.Pointer(F + 56)), 1) >= *(*Tuint32_t)(unsafe.Pointer(F + 56 + 1*4))) {
goto __2055
}
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__2055:
;
if !((*Theapframe)(unsafe.Pointer(F)).Feptr >= (*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject) {
goto __2056
}
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) != 0 && ((*Theapframe)(unsafe.Pointer(F)).Feptr > (*Tmatch_block_8)(unsafe.Pointer(mb)).Fstart_used_ptr || (*Tmatch_block_8)(unsafe.Pointer(mb)).Fallowemptypartial != 0)) {
goto __2057
}
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fhitend = DTRUE
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) > 1) {
goto __2058
}
return -2
__2058:
;
__2057:
;
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__2056:
;
fc = Tuint32_t(*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&(*Theapframe)(unsafe.Pointer(F)).Feptr, 1))))
if !(utf != 0 && fc >= 0xc0) {
goto __2059
}
if !(fc&0x20 == Tuint32_t(0)) {
goto __2060
}
fc = fc&0x1f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&(*Theapframe)(unsafe.Pointer(F)).Feptr, 1))))&0x3f
goto __2061
__2060:
if !(fc&0x10 == Tuint32_t(0)) {
goto __2062
}
fc = fc&0x0f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += uintptr(2)
goto __2063
__2062:
if !(fc&0x08 == Tuint32_t(0)) {
goto __2064
}
fc = fc&0x07<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += uintptr(3)
goto __2065
__2064:
if !(fc&0x04 == Tuint32_t(0)) {
goto __2066
}
fc = fc&0x03<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 3)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += uintptr(4)
goto __2067
__2066:
fc = fc&0x01<<30 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0x3f<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 3)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 4)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += uintptr(5)
__2067:
;
__2065:
;
__2063:
;
__2061:
;
__2059:
;
prop4 = uintptr(unsafe.Pointer(&X_pcre2_ucd_records_8)) + uintptr(X_pcre2_ucd_stage2_8[int32(X_pcre2_ucd_stage1_8[int32(fc)/DUCD_BLOCK_SIZE])*DUCD_BLOCK_SIZE+int32(fc)%DUCD_BLOCK_SIZE])*12
ok5 = libc.Bool32(*(*Tuint32_t)(unsafe.Pointer(uintptr(unsafe.Pointer(&X_pcre2_ucd_boolprop_sets_8)) + uintptr(int32((*Tucd_record)(unsafe.Pointer(prop4)).Fbprops)&DUCD_BPROPS_MASK)*4 + uintptr(*(*Tuint32_t)(unsafe.Pointer(F + 56 + 3*4))/Tuint32_t(32))*4))&(uint32(1)<<(*(*Tuint32_t)(unsafe.Pointer(F + 56 + 3*4))%Tuint32_t(32))) != Tuint32_t(0))
if !(ok5 == libc.Bool32(*(*Tuint32_t)(unsafe.Pointer(F + 56 + 2*4)) == OP_NOTPROP)) {
goto __2068
}
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__2068:
;
goto __2052
__2052:
goto __2051
goto __2053
__2053:
;
// Control never gets here
// This should never occur
__1799:
return -44
__1784:
;
goto __1783
__1782:
if !(*(*Tuint32_t)(unsafe.Pointer(F + 56 + 2*4)) == OP_EXTUNI) {
goto __2069
}
__2071:
start_ecode = (*Theapframe)(unsafe.Pointer(F)).Fecode
(*Theapframe)(unsafe.Pointer(F)).Freturn_id = RM218
goto MATCH_RECURSE
L_RM218:
;
if !(rrc != DMATCH_NOMATCH) {
goto __2074
}
rrc = rrc
goto RETURN_SWITCH
__2074:
;
if !(libc.PostIncUint32(&*(*Tuint32_t)(unsafe.Pointer(F + 56)), 1) >= *(*Tuint32_t)(unsafe.Pointer(F + 56 + 1*4))) {
goto __2075
}
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__2075:
;
if !((*Theapframe)(unsafe.Pointer(F)).Feptr >= (*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject) {
goto __2076
}
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) != 0 && ((*Theapframe)(unsafe.Pointer(F)).Feptr > (*Tmatch_block_8)(unsafe.Pointer(mb)).Fstart_used_ptr || (*Tmatch_block_8)(unsafe.Pointer(mb)).Fallowemptypartial != 0)) {
goto __2078
}
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fhitend = DTRUE
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) > 1) {
goto __2079
}
return -2
__2079:
;
__2078:
;
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
goto __2077
__2076:
fc = Tuint32_t(*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&(*Theapframe)(unsafe.Pointer(F)).Feptr, 1))))
if !(utf != 0 && fc >= 0xc0) {
goto __2080
}
if !(fc&0x20 == Tuint32_t(0)) {
goto __2081
}
fc = fc&0x1f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&(*Theapframe)(unsafe.Pointer(F)).Feptr, 1))))&0x3f
goto __2082
__2081:
if !(fc&0x10 == Tuint32_t(0)) {
goto __2083
}
fc = fc&0x0f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += uintptr(2)
goto __2084
__2083:
if !(fc&0x08 == Tuint32_t(0)) {
goto __2085
}
fc = fc&0x07<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += uintptr(3)
goto __2086
__2085:
if !(fc&0x04 == Tuint32_t(0)) {
goto __2087
}
fc = fc&0x03<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 3)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += uintptr(4)
goto __2088
__2087:
fc = fc&0x01<<30 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0x3f<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 3)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 4)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += uintptr(5)
__2088:
;
__2086:
;
__2084:
;
__2082:
;
__2080:
;
(*Theapframe)(unsafe.Pointer(F)).Feptr = X_pcre2_extuni_8(tls, fc, (*Theapframe)(unsafe.Pointer(F)).Feptr, (*Tmatch_block_8)(unsafe.Pointer(mb)).Fstart_subject, (*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject,
utf, uintptr(0))
__2077:
;
if !((*Theapframe)(unsafe.Pointer(F)).Feptr >= (*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject) {
goto __2089
}
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) != 0 && ((*Theapframe)(unsafe.Pointer(F)).Feptr > (*Tmatch_block_8)(unsafe.Pointer(mb)).Fstart_used_ptr || (*Tmatch_block_8)(unsafe.Pointer(mb)).Fallowemptypartial != 0)) {
goto __2090
}
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fhitend = DTRUE
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) > 1) {
goto __2091
}
return -2
__2091:
;
__2090:
;
__2089:
;
goto __2072
__2072:
goto __2071
goto __2073
__2073:
;
goto __2070
__2069:
// UTF mode for non-property testing character types.
if !(utf != 0) {
goto __2092
}
__2094:
start_ecode = (*Theapframe)(unsafe.Pointer(F)).Fecode
(*Theapframe)(unsafe.Pointer(F)).Freturn_id = RM219
goto MATCH_RECURSE
L_RM219:
;
if !(rrc != DMATCH_NOMATCH) {
goto __2097
}
rrc = rrc
goto RETURN_SWITCH
__2097:
;
if !(libc.PostIncUint32(&*(*Tuint32_t)(unsafe.Pointer(F + 56)), 1) >= *(*Tuint32_t)(unsafe.Pointer(F + 56 + 1*4))) {
goto __2098
}
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__2098:
;
if !((*Theapframe)(unsafe.Pointer(F)).Feptr >= (*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject) {
goto __2099
}
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) != 0 && ((*Theapframe)(unsafe.Pointer(F)).Feptr > (*Tmatch_block_8)(unsafe.Pointer(mb)).Fstart_used_ptr || (*Tmatch_block_8)(unsafe.Pointer(mb)).Fallowemptypartial != 0)) {
goto __2100
}
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fhitend = DTRUE
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) > 1) {
goto __2101
}
return -2
__2101:
;
__2100:
;
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__2099:
;
if !(*(*Tuint32_t)(unsafe.Pointer(F + 56 + 2*4)) == OP_ANY && func() int32 {
if (*Tmatch_block_8)(unsafe.Pointer(mb)).Fnltype != Tuint32_t(DNLTYPE_FIXED) {
return libc.Bool32((*Theapframe)(unsafe.Pointer(F)).Feptr < (*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject && X_pcre2_is_newline_8(tls, (*Theapframe)(unsafe.Pointer(F)).Feptr, (*Tmatch_block_8)(unsafe.Pointer(mb)).Fnltype, (*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject, mb+256, utf) != 0)
}
return libc.Bool32((*Theapframe)(unsafe.Pointer(F)).Feptr <= (*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject-uintptr((*Tmatch_block_8)(unsafe.Pointer(mb)).Fnllen) && int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr))) == int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(mb + 260))) && ((*Tmatch_block_8)(unsafe.Pointer(mb)).Fnllen == Tuint32_t(1) || int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + uintptr(1)))) == int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(mb + 260 + 1)))))
}() != 0) {
goto __2102
}
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__2102:
;
fc = Tuint32_t(*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&(*Theapframe)(unsafe.Pointer(F)).Feptr, 1))))
if !(fc >= 0xc0) {
goto __2103
}
if !(fc&0x20 == Tuint32_t(0)) {
goto __2104
}
fc = fc&0x1f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&(*Theapframe)(unsafe.Pointer(F)).Feptr, 1))))&0x3f
goto __2105
__2104:
if !(fc&0x10 == Tuint32_t(0)) {
goto __2106
}
fc = fc&0x0f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += uintptr(2)
goto __2107
__2106:
if !(fc&0x08 == Tuint32_t(0)) {
goto __2108
}
fc = fc&0x07<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += uintptr(3)
goto __2109
__2108:
if !(fc&0x04 == Tuint32_t(0)) {
goto __2110
}
fc = fc&0x03<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 3)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += uintptr(4)
goto __2111
__2110:
fc = fc&0x01<<30 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0x3f<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 3)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 4)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += uintptr(5)
__2111:
;
__2109:
;
__2107:
;
__2105:
;
__2103:
;
switch *(*Tuint32_t)(unsafe.Pointer(F + 56 + 2*4)) {
case OP_ANY:
goto __2113
case OP_ALLANY:
goto __2114
case OP_ANYBYTE:
goto __2115
case OP_ANYNL:
goto __2116
case OP_NOT_HSPACE:
goto __2117
case OP_HSPACE:
goto __2118
case OP_NOT_VSPACE:
goto __2119
case OP_VSPACE:
goto __2120
case OP_NOT_DIGIT:
goto __2121
case OP_DIGIT:
goto __2122
case OP_NOT_WHITESPACE:
goto __2123
case OP_WHITESPACE:
goto __2124
case OP_NOT_WORDCHAR:
goto __2125
case OP_WORDCHAR:
goto __2126
default:
goto __2127
}
goto __2112
__2113: // This is the non-NL case
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) != 0 && (*Theapframe)(unsafe.Pointer(F)).Feptr >= (*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject && (*Tmatch_block_8)(unsafe.Pointer(mb)).Fnltype == Tuint32_t(DNLTYPE_FIXED) && (*Tmatch_block_8)(unsafe.Pointer(mb)).Fnllen == Tuint32_t(2) && fc == Tuint32_t(*(*TPCRE2_UCHAR8)(unsafe.Pointer(mb + 260)))) {
goto __2128
}
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fhitend = DTRUE
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) > 1) {
goto __2129
}
return -2
__2129:
;
__2128:
;
goto __2112
__2114:
__2115:
goto __2112
__2116:
switch fc {
default:
goto __2131
case Tuint32_t('\015'):
goto __2132
case Tuint32_t('\012'):
goto __2133
case Tuint32_t('\013'):
goto __2134
case Tuint32_t('\014'):
goto __2135
case libc.Uint32FromUint8(libc.Uint8FromInt32(133)):
goto __2136
case Tuint32_t(0x2028):
goto __2137
case Tuint32_t(0x2029):
goto __2138
}
goto __2130
__2131:
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__2132:
if !((*Theapframe)(unsafe.Pointer(F)).Feptr < (*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject && int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr))) == '\012') {
goto __2139
}
(*Theapframe)(unsafe.Pointer(F)).Feptr++
__2139:
;
goto __2130
__2133:
goto __2130
__2134:
__2135:
__2136:
__2137:
__2138:
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fbsr_convention) == DPCRE2_BSR_ANYCRLF) {
goto __2140
}
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__2140:
;
goto __2130
__2130:
;
goto __2112
__2117:
switch fc {
case Tuint32_t('\011'):
goto __2142
case Tuint32_t('\040'):
goto __2143
case libc.Uint32FromUint8(libc.Uint8FromInt32(160)):
goto __2144
case Tuint32_t(0x1680):
goto __2145 /* OGHAM SPACE MARK */
case Tuint32_t(0x180e):
goto __2146 /* MONGOLIAN VOWEL SEPARATOR */
case Tuint32_t(0x2000):
goto __2147 /* EN QUAD */
case Tuint32_t(0x2001):
goto __2148 /* EM QUAD */
case Tuint32_t(0x2002):
goto __2149 /* EN SPACE */
case Tuint32_t(0x2003):
goto __2150 /* EM SPACE */
case Tuint32_t(0x2004):
goto __2151 /* THREE-PER-EM SPACE */
case Tuint32_t(0x2005):
goto __2152 /* FOUR-PER-EM SPACE */
case Tuint32_t(0x2006):
goto __2153 /* SIX-PER-EM SPACE */
case Tuint32_t(0x2007):
goto __2154 /* FIGURE SPACE */
case Tuint32_t(0x2008):
goto __2155 /* PUNCTUATION SPACE */
case Tuint32_t(0x2009):
goto __2156 /* THIN SPACE */
case Tuint32_t(0x200A):
goto __2157 /* HAIR SPACE */
case Tuint32_t(0x202f):
goto __2158 /* NARROW NO-BREAK SPACE */
case Tuint32_t(0x205f):
goto __2159 /* MEDIUM MATHEMATICAL SPACE */
case Tuint32_t(0x3000):
goto __2160
default:
goto __2161
}
goto __2141
__2142:
__2143:
__2144:
__2145: /* OGHAM SPACE MARK */
__2146: /* MONGOLIAN VOWEL SEPARATOR */
__2147: /* EN QUAD */
__2148: /* EM QUAD */
__2149: /* EN SPACE */
__2150: /* EM SPACE */
__2151: /* THREE-PER-EM SPACE */
__2152: /* FOUR-PER-EM SPACE */
__2153: /* SIX-PER-EM SPACE */
__2154: /* FIGURE SPACE */
__2155: /* PUNCTUATION SPACE */
__2156: /* THIN SPACE */
__2157: /* HAIR SPACE */
__2158: /* NARROW NO-BREAK SPACE */
__2159: /* MEDIUM MATHEMATICAL SPACE */
__2160:
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__2161:
goto __2141
__2141:
;
goto __2112
__2118:
switch fc {
case Tuint32_t('\011'):
goto __2163
case Tuint32_t('\040'):
goto __2164
case libc.Uint32FromUint8(libc.Uint8FromInt32(160)):
goto __2165
case Tuint32_t(0x1680):
goto __2166 /* OGHAM SPACE MARK */
case Tuint32_t(0x180e):
goto __2167 /* MONGOLIAN VOWEL SEPARATOR */
case Tuint32_t(0x2000):
goto __2168 /* EN QUAD */
case Tuint32_t(0x2001):
goto __2169 /* EM QUAD */
case Tuint32_t(0x2002):
goto __2170 /* EN SPACE */
case Tuint32_t(0x2003):
goto __2171 /* EM SPACE */
case Tuint32_t(0x2004):
goto __2172 /* THREE-PER-EM SPACE */
case Tuint32_t(0x2005):
goto __2173 /* FOUR-PER-EM SPACE */
case Tuint32_t(0x2006):
goto __2174 /* SIX-PER-EM SPACE */
case Tuint32_t(0x2007):
goto __2175 /* FIGURE SPACE */
case Tuint32_t(0x2008):
goto __2176 /* PUNCTUATION SPACE */
case Tuint32_t(0x2009):
goto __2177 /* THIN SPACE */
case Tuint32_t(0x200A):
goto __2178 /* HAIR SPACE */
case Tuint32_t(0x202f):
goto __2179 /* NARROW NO-BREAK SPACE */
case Tuint32_t(0x205f):
goto __2180 /* MEDIUM MATHEMATICAL SPACE */
case Tuint32_t(0x3000):
goto __2181
default:
goto __2182
}
goto __2162
__2163:
__2164:
__2165:
__2166: /* OGHAM SPACE MARK */
__2167: /* MONGOLIAN VOWEL SEPARATOR */
__2168: /* EN QUAD */
__2169: /* EM QUAD */
__2170: /* EN SPACE */
__2171: /* EM SPACE */
__2172: /* THREE-PER-EM SPACE */
__2173: /* FOUR-PER-EM SPACE */
__2174: /* SIX-PER-EM SPACE */
__2175: /* FIGURE SPACE */
__2176: /* PUNCTUATION SPACE */
__2177: /* THIN SPACE */
__2178: /* HAIR SPACE */
__2179: /* NARROW NO-BREAK SPACE */
__2180: /* MEDIUM MATHEMATICAL SPACE */
__2181:
goto __2162
__2182:
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__2162:
;
goto __2112
__2119:
switch fc {
case Tuint32_t('\012'):
goto __2184
case Tuint32_t('\013'):
goto __2185
case Tuint32_t('\014'):
goto __2186
case Tuint32_t('\015'):
goto __2187
case libc.Uint32FromUint8(libc.Uint8FromInt32(133)):
goto __2188
case Tuint32_t(0x2028):
goto __2189 /* LINE SEPARATOR */
case Tuint32_t(0x2029):
goto __2190
default:
goto __2191
}
goto __2183
__2184:
__2185:
__2186:
__2187:
__2188:
__2189: /* LINE SEPARATOR */
__2190:
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__2191:
goto __2183
__2183:
;
goto __2112
__2120:
switch fc {
case Tuint32_t('\012'):
goto __2193
case Tuint32_t('\013'):
goto __2194
case Tuint32_t('\014'):
goto __2195
case Tuint32_t('\015'):
goto __2196
case libc.Uint32FromUint8(libc.Uint8FromInt32(133)):
goto __2197
case Tuint32_t(0x2028):
goto __2198 /* LINE SEPARATOR */
case Tuint32_t(0x2029):
goto __2199
default:
goto __2200
}
goto __2192
__2193:
__2194:
__2195:
__2196:
__2197:
__2198: /* LINE SEPARATOR */
__2199:
goto __2192
__2200:
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__2192:
;
goto __2112
__2121:
if !(fc < Tuint32_t(256) && int32(*(*Tuint8_t)(unsafe.Pointer((*Tmatch_block_8)(unsafe.Pointer(mb)).Fctypes + uintptr(fc))))&Dctype_digit != 0) {
goto __2201
}
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__2201:
;
goto __2112
__2122:
if !(fc >= Tuint32_t(256) || int32(*(*Tuint8_t)(unsafe.Pointer((*Tmatch_block_8)(unsafe.Pointer(mb)).Fctypes + uintptr(fc))))&Dctype_digit == 0) {
goto __2202
}
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__2202:
;
goto __2112
__2123:
if !(fc < Tuint32_t(256) && int32(*(*Tuint8_t)(unsafe.Pointer((*Tmatch_block_8)(unsafe.Pointer(mb)).Fctypes + uintptr(fc))))&Dctype_space != 0) {
goto __2203
}
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__2203:
;
goto __2112
__2124:
if !(fc >= Tuint32_t(256) || int32(*(*Tuint8_t)(unsafe.Pointer((*Tmatch_block_8)(unsafe.Pointer(mb)).Fctypes + uintptr(fc))))&Dctype_space == 0) {
goto __2204
}
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__2204:
;
goto __2112
__2125:
if !(fc < Tuint32_t(256) && int32(*(*Tuint8_t)(unsafe.Pointer((*Tmatch_block_8)(unsafe.Pointer(mb)).Fctypes + uintptr(fc))))&Dctype_word != 0) {
goto __2205
}
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__2205:
;
goto __2112
__2126:
if !(fc >= Tuint32_t(256) || int32(*(*Tuint8_t)(unsafe.Pointer((*Tmatch_block_8)(unsafe.Pointer(mb)).Fctypes + uintptr(fc))))&Dctype_word == 0) {
goto __2206
}
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__2206:
;
goto __2112
__2127:
return -44
__2112:
;
goto __2095
__2095:
goto __2094
goto __2096
__2096:
;
goto __2093
__2092:
/* Not UTF mode */
__2207:
start_ecode = (*Theapframe)(unsafe.Pointer(F)).Fecode
(*Theapframe)(unsafe.Pointer(F)).Freturn_id = RM33
goto MATCH_RECURSE
L_RM33:
;
if !(rrc != DMATCH_NOMATCH) {
goto __2210
}
rrc = rrc
goto RETURN_SWITCH
__2210:
;
if !(libc.PostIncUint32(&*(*Tuint32_t)(unsafe.Pointer(F + 56)), 1) >= *(*Tuint32_t)(unsafe.Pointer(F + 56 + 1*4))) {
goto __2211
}
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__2211:
;
if !((*Theapframe)(unsafe.Pointer(F)).Feptr >= (*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject) {
goto __2212
}
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) != 0 && ((*Theapframe)(unsafe.Pointer(F)).Feptr > (*Tmatch_block_8)(unsafe.Pointer(mb)).Fstart_used_ptr || (*Tmatch_block_8)(unsafe.Pointer(mb)).Fallowemptypartial != 0)) {
goto __2213
}
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fhitend = DTRUE
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) > 1) {
goto __2214
}
return -2
__2214:
;
__2213:
;
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__2212:
;
if !(*(*Tuint32_t)(unsafe.Pointer(F + 56 + 2*4)) == OP_ANY && func() int32 {
if (*Tmatch_block_8)(unsafe.Pointer(mb)).Fnltype != Tuint32_t(DNLTYPE_FIXED) {
return libc.Bool32((*Theapframe)(unsafe.Pointer(F)).Feptr < (*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject && X_pcre2_is_newline_8(tls, (*Theapframe)(unsafe.Pointer(F)).Feptr, (*Tmatch_block_8)(unsafe.Pointer(mb)).Fnltype, (*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject, mb+256, utf) != 0)
}
return libc.Bool32((*Theapframe)(unsafe.Pointer(F)).Feptr <= (*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject-uintptr((*Tmatch_block_8)(unsafe.Pointer(mb)).Fnllen) && int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr))) == int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(mb + 260))) && ((*Tmatch_block_8)(unsafe.Pointer(mb)).Fnllen == Tuint32_t(1) || int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + uintptr(1)))) == int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(mb + 260 + 1)))))
}() != 0) {
goto __2215
}
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__2215:
;
fc = Tuint32_t(*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&(*Theapframe)(unsafe.Pointer(F)).Feptr, 1))))
switch *(*Tuint32_t)(unsafe.Pointer(F + 56 + 2*4)) {
case OP_ANY:
goto __2217
case OP_ALLANY:
goto __2218
case OP_ANYBYTE:
goto __2219
case OP_ANYNL:
goto __2220
case OP_NOT_HSPACE:
goto __2221
case OP_HSPACE:
goto __2222
case OP_NOT_VSPACE:
goto __2223
case OP_VSPACE:
goto __2224
case OP_NOT_DIGIT:
goto __2225
case OP_DIGIT:
goto __2226
case OP_NOT_WHITESPACE:
goto __2227
case OP_WHITESPACE:
goto __2228
case OP_NOT_WORDCHAR:
goto __2229
case OP_WORDCHAR:
goto __2230
default:
goto __2231
}
goto __2216
__2217: // This is the non-NL case
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) != 0 && (*Theapframe)(unsafe.Pointer(F)).Feptr >= (*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject && (*Tmatch_block_8)(unsafe.Pointer(mb)).Fnltype == Tuint32_t(DNLTYPE_FIXED) && (*Tmatch_block_8)(unsafe.Pointer(mb)).Fnllen == Tuint32_t(2) && fc == Tuint32_t(*(*TPCRE2_UCHAR8)(unsafe.Pointer(mb + 260)))) {
goto __2232
}
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fhitend = DTRUE
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) > 1) {
goto __2233
}
return -2
__2233:
;
__2232:
;
goto __2216
__2218:
__2219:
goto __2216
__2220:
switch fc {
default:
goto __2235
case Tuint32_t('\015'):
goto __2236
case Tuint32_t('\012'):
goto __2237
case Tuint32_t('\013'):
goto __2238
case Tuint32_t('\014'):
goto __2239
case libc.Uint32FromUint8(libc.Uint8FromInt32(133)):
goto __2240
}
goto __2234
__2235:
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__2236:
if !((*Theapframe)(unsafe.Pointer(F)).Feptr < (*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject && int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr))) == '\012') {
goto __2241
}
(*Theapframe)(unsafe.Pointer(F)).Feptr++
__2241:
;
goto __2234
__2237:
goto __2234
__2238:
__2239:
__2240:
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fbsr_convention) == DPCRE2_BSR_ANYCRLF) {
goto __2242
}
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__2242:
;
goto __2234
__2234:
;
goto __2216
__2221:
switch fc {
default:
goto __2244
case Tuint32_t('\011'):
goto __2245
case Tuint32_t('\040'):
goto __2246
case libc.Uint32FromUint8(libc.Uint8FromInt32(160)):
goto __2247
}
goto __2243
__2244:
goto __2243
__2245:
__2246:
__2247:
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__2243:
;
goto __2216
__2222:
switch fc {
default:
goto __2249
case Tuint32_t('\011'):
goto __2250
case Tuint32_t('\040'):
goto __2251
case libc.Uint32FromUint8(libc.Uint8FromInt32(160)):
goto __2252
}
goto __2248
__2249:
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__2250:
__2251:
__2252:
goto __2248
__2248:
;
goto __2216
__2223:
switch fc {
default:
goto __2254
case Tuint32_t('\012'):
goto __2255
case Tuint32_t('\013'):
goto __2256
case Tuint32_t('\014'):
goto __2257
case Tuint32_t('\015'):
goto __2258
case libc.Uint32FromUint8(libc.Uint8FromInt32(133)):
goto __2259
}
goto __2253
__2254:
goto __2253
__2255:
__2256:
__2257:
__2258:
__2259:
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__2253:
;
goto __2216
__2224:
switch fc {
default:
goto __2261
case Tuint32_t('\012'):
goto __2262
case Tuint32_t('\013'):
goto __2263
case Tuint32_t('\014'):
goto __2264
case Tuint32_t('\015'):
goto __2265
case libc.Uint32FromUint8(libc.Uint8FromInt32(133)):
goto __2266
}
goto __2260
__2261:
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__2262:
__2263:
__2264:
__2265:
__2266:
goto __2260
__2260:
;
goto __2216
__2225:
if !(1 != 0 && int32(*(*Tuint8_t)(unsafe.Pointer((*Tmatch_block_8)(unsafe.Pointer(mb)).Fctypes + uintptr(fc))))&Dctype_digit != 0) {
goto __2267
}
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__2267:
;
goto __2216
__2226:
if !(!(1 != 0) || int32(*(*Tuint8_t)(unsafe.Pointer((*Tmatch_block_8)(unsafe.Pointer(mb)).Fctypes + uintptr(fc))))&Dctype_digit == 0) {
goto __2268
}
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__2268:
;
goto __2216
__2227:
if !(1 != 0 && int32(*(*Tuint8_t)(unsafe.Pointer((*Tmatch_block_8)(unsafe.Pointer(mb)).Fctypes + uintptr(fc))))&Dctype_space != 0) {
goto __2269
}
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__2269:
;
goto __2216
__2228:
if !(!(1 != 0) || int32(*(*Tuint8_t)(unsafe.Pointer((*Tmatch_block_8)(unsafe.Pointer(mb)).Fctypes + uintptr(fc))))&Dctype_space == 0) {
goto __2270
}
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__2270:
;
goto __2216
__2229:
if !(1 != 0 && int32(*(*Tuint8_t)(unsafe.Pointer((*Tmatch_block_8)(unsafe.Pointer(mb)).Fctypes + uintptr(fc))))&Dctype_word != 0) {
goto __2271
}
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__2271:
;
goto __2216
__2230:
if !(!(1 != 0) || int32(*(*Tuint8_t)(unsafe.Pointer((*Tmatch_block_8)(unsafe.Pointer(mb)).Fctypes + uintptr(fc))))&Dctype_word == 0) {
goto __2272
}
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__2272:
;
goto __2216
__2231:
return -44
__2216:
;
goto __2208
__2208:
goto __2207
goto __2209
__2209:
;
__2093:
;
__2070:
;
__1783:
;
// Control never gets here
goto __1781
__1780:
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 8)) = (*Theapframe)(unsafe.Pointer(F)).Feptr // Remember where we started
if !(proptype >= 0) {
goto __2273
}
notmatch2 = libc.Bool32(*(*Tuint32_t)(unsafe.Pointer(F + 56 + 2*4)) == OP_NOTPROP)
switch proptype {
case DPT_ANY:
goto __2276
case DPT_LAMP:
goto __2277
case DPT_GC:
goto __2278
case DPT_PC:
goto __2279
case DPT_SC:
goto __2280
case DPT_SCX:
goto __2281
case DPT_ALNUM:
goto __2282
// Perl space used to exclude VT, but from Perl 5.18 it is included,
// which means that Perl space and POSIX space are now identical. PCRE
// was changed at release 8.34.
case DPT_SPACE:
goto __2283 // Perl space
case DPT_PXSPACE:
goto __2284
case DPT_WORD:
goto __2285
case DPT_CLIST:
goto __2286
case DPT_UCNC:
goto __2287
case DPT_BIDICL:
goto __2288
case DPT_BOOL:
goto __2289
default:
goto __2290
}
goto __2275
__2276:
i = *(*Tuint32_t)(unsafe.Pointer(F + 56))
__2291:
if !(i < *(*Tuint32_t)(unsafe.Pointer(F + 56 + 1*4))) {
goto __2293
}
len4 = 1
if !((*Theapframe)(unsafe.Pointer(F)).Feptr >= (*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject) {
goto __2294
}
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) != 0 && ((*Theapframe)(unsafe.Pointer(F)).Feptr > (*Tmatch_block_8)(unsafe.Pointer(mb)).Fstart_used_ptr || (*Tmatch_block_8)(unsafe.Pointer(mb)).Fallowemptypartial != 0)) {
goto __2295
}
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fhitend = DTRUE
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) > 1) {
goto __2296
}
return -2
__2296:
;
__2295:
;
goto __2293
__2294:
;
fc = Tuint32_t(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))
if !(utf != 0 && fc >= 0xc0) {
goto __2297
}
if !(fc&0x20 == Tuint32_t(0)) {
goto __2298
}
fc = fc&0x1f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f
len4++
goto __2299
__2298:
if !(fc&0x10 == Tuint32_t(0)) {
goto __2300
}
fc = fc&0x0f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f
len4 = len4 + 2
goto __2301
__2300:
if !(fc&0x08 == Tuint32_t(0)) {
goto __2302
}
fc = fc&0x07<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 3)))&0x3f
len4 = len4 + 3
goto __2303
__2302:
if !(fc&0x04 == Tuint32_t(0)) {
goto __2304
}
fc = fc&0x03<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 3)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 4)))&0x3f
len4 = len4 + 4
goto __2305
__2304:
fc = fc&0x01<<30 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 3)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 4)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 5)))&0x3f
len4 = len4 + 5
__2305:
;
__2303:
;
__2301:
;
__2299:
;
__2297:
;
if !(notmatch2 != 0) {
goto __2306
}
goto __2293
__2306:
;
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += TPCRE2_SPTR8(len4)
goto __2292
__2292:
i++
goto __2291
goto __2293
__2293:
;
goto __2275
__2277:
i = *(*Tuint32_t)(unsafe.Pointer(F + 56))
__2307:
if !(i < *(*Tuint32_t)(unsafe.Pointer(F + 56 + 1*4))) {
goto __2309
}
len5 = 1
if !((*Theapframe)(unsafe.Pointer(F)).Feptr >= (*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject) {
goto __2310
}
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) != 0 && ((*Theapframe)(unsafe.Pointer(F)).Feptr > (*Tmatch_block_8)(unsafe.Pointer(mb)).Fstart_used_ptr || (*Tmatch_block_8)(unsafe.Pointer(mb)).Fallowemptypartial != 0)) {
goto __2311
}
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fhitend = DTRUE
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) > 1) {
goto __2312
}
return -2
__2312:
;
__2311:
;
goto __2309
__2310:
;
fc = Tuint32_t(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))
if !(utf != 0 && fc >= 0xc0) {
goto __2313
}
if !(fc&0x20 == Tuint32_t(0)) {
goto __2314
}
fc = fc&0x1f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f
len5++
goto __2315
__2314:
if !(fc&0x10 == Tuint32_t(0)) {
goto __2316
}
fc = fc&0x0f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f
len5 = len5 + 2
goto __2317
__2316:
if !(fc&0x08 == Tuint32_t(0)) {
goto __2318
}
fc = fc&0x07<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 3)))&0x3f
len5 = len5 + 3
goto __2319
__2318:
if !(fc&0x04 == Tuint32_t(0)) {
goto __2320
}
fc = fc&0x03<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 3)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 4)))&0x3f
len5 = len5 + 4
goto __2321
__2320:
fc = fc&0x01<<30 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 3)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 4)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 5)))&0x3f
len5 = len5 + 5
__2321:
;
__2319:
;
__2317:
;
__2315:
;
__2313:
;
chartype2 = int32((*Tucd_record)(unsafe.Pointer(uintptr(unsafe.Pointer(&X_pcre2_ucd_records_8)) + uintptr(X_pcre2_ucd_stage2_8[int32(X_pcre2_ucd_stage1_8[int32(fc)/DUCD_BLOCK_SIZE])*DUCD_BLOCK_SIZE+int32(fc)%DUCD_BLOCK_SIZE])*12)).Fchartype)
if !(libc.Bool32(chartype2 == ucp_Lu || chartype2 == ucp_Ll || chartype2 == ucp_Lt) == notmatch2) {
goto __2322
}
goto __2309
__2322:
;
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += TPCRE2_SPTR8(len5)
goto __2308
__2308:
i++
goto __2307
goto __2309
__2309:
;
goto __2275
__2278:
i = *(*Tuint32_t)(unsafe.Pointer(F + 56))
__2323:
if !(i < *(*Tuint32_t)(unsafe.Pointer(F + 56 + 1*4))) {
goto __2325
}
len6 = 1
if !((*Theapframe)(unsafe.Pointer(F)).Feptr >= (*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject) {
goto __2326
}
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) != 0 && ((*Theapframe)(unsafe.Pointer(F)).Feptr > (*Tmatch_block_8)(unsafe.Pointer(mb)).Fstart_used_ptr || (*Tmatch_block_8)(unsafe.Pointer(mb)).Fallowemptypartial != 0)) {
goto __2327
}
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fhitend = DTRUE
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) > 1) {
goto __2328
}
return -2
__2328:
;
__2327:
;
goto __2325
__2326:
;
fc = Tuint32_t(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))
if !(utf != 0 && fc >= 0xc0) {
goto __2329
}
if !(fc&0x20 == Tuint32_t(0)) {
goto __2330
}
fc = fc&0x1f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f
len6++
goto __2331
__2330:
if !(fc&0x10 == Tuint32_t(0)) {
goto __2332
}
fc = fc&0x0f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f
len6 = len6 + 2
goto __2333
__2332:
if !(fc&0x08 == Tuint32_t(0)) {
goto __2334
}
fc = fc&0x07<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 3)))&0x3f
len6 = len6 + 3
goto __2335
__2334:
if !(fc&0x04 == Tuint32_t(0)) {
goto __2336
}
fc = fc&0x03<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 3)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 4)))&0x3f
len6 = len6 + 4
goto __2337
__2336:
fc = fc&0x01<<30 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 3)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 4)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 5)))&0x3f
len6 = len6 + 5
__2337:
;
__2335:
;
__2333:
;
__2331:
;
__2329:
;
if !(libc.Bool32(X_pcre2_ucp_gentype_8[(*Tucd_record)(unsafe.Pointer(uintptr(unsafe.Pointer(&X_pcre2_ucd_records_8))+uintptr(X_pcre2_ucd_stage2_8[int32(X_pcre2_ucd_stage1_8[int32(fc)/DUCD_BLOCK_SIZE])*DUCD_BLOCK_SIZE+int32(fc)%DUCD_BLOCK_SIZE])*12)).Fchartype] == *(*Tuint32_t)(unsafe.Pointer(F + 56 + 3*4))) == notmatch2) {
goto __2338
}
goto __2325
__2338:
;
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += TPCRE2_SPTR8(len6)
goto __2324
__2324:
i++
goto __2323
goto __2325
__2325:
;
goto __2275
__2279:
i = *(*Tuint32_t)(unsafe.Pointer(F + 56))
__2339:
if !(i < *(*Tuint32_t)(unsafe.Pointer(F + 56 + 1*4))) {
goto __2341
}
len7 = 1
if !((*Theapframe)(unsafe.Pointer(F)).Feptr >= (*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject) {
goto __2342
}
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) != 0 && ((*Theapframe)(unsafe.Pointer(F)).Feptr > (*Tmatch_block_8)(unsafe.Pointer(mb)).Fstart_used_ptr || (*Tmatch_block_8)(unsafe.Pointer(mb)).Fallowemptypartial != 0)) {
goto __2343
}
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fhitend = DTRUE
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) > 1) {
goto __2344
}
return -2
__2344:
;
__2343:
;
goto __2341
__2342:
;
fc = Tuint32_t(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))
if !(utf != 0 && fc >= 0xc0) {
goto __2345
}
if !(fc&0x20 == Tuint32_t(0)) {
goto __2346
}
fc = fc&0x1f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f
len7++
goto __2347
__2346:
if !(fc&0x10 == Tuint32_t(0)) {
goto __2348
}
fc = fc&0x0f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f
len7 = len7 + 2
goto __2349
__2348:
if !(fc&0x08 == Tuint32_t(0)) {
goto __2350
}
fc = fc&0x07<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 3)))&0x3f
len7 = len7 + 3
goto __2351
__2350:
if !(fc&0x04 == Tuint32_t(0)) {
goto __2352
}
fc = fc&0x03<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 3)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 4)))&0x3f
len7 = len7 + 4
goto __2353
__2352:
fc = fc&0x01<<30 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 3)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 4)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 5)))&0x3f
len7 = len7 + 5
__2353:
;
__2351:
;
__2349:
;
__2347:
;
__2345:
;
if !(libc.Bool32(Tuint32_t((*Tucd_record)(unsafe.Pointer(uintptr(unsafe.Pointer(&X_pcre2_ucd_records_8))+uintptr(X_pcre2_ucd_stage2_8[int32(X_pcre2_ucd_stage1_8[int32(fc)/DUCD_BLOCK_SIZE])*DUCD_BLOCK_SIZE+int32(fc)%DUCD_BLOCK_SIZE])*12)).Fchartype) == *(*Tuint32_t)(unsafe.Pointer(F + 56 + 3*4))) == notmatch2) {
goto __2354
}
goto __2341
__2354:
;
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += TPCRE2_SPTR8(len7)
goto __2340
__2340:
i++
goto __2339
goto __2341
__2341:
;
goto __2275
__2280:
i = *(*Tuint32_t)(unsafe.Pointer(F + 56))
__2355:
if !(i < *(*Tuint32_t)(unsafe.Pointer(F + 56 + 1*4))) {
goto __2357
}
len8 = 1
if !((*Theapframe)(unsafe.Pointer(F)).Feptr >= (*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject) {
goto __2358
}
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) != 0 && ((*Theapframe)(unsafe.Pointer(F)).Feptr > (*Tmatch_block_8)(unsafe.Pointer(mb)).Fstart_used_ptr || (*Tmatch_block_8)(unsafe.Pointer(mb)).Fallowemptypartial != 0)) {
goto __2359
}
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fhitend = DTRUE
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) > 1) {
goto __2360
}
return -2
__2360:
;
__2359:
;
goto __2357
__2358:
;
fc = Tuint32_t(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))
if !(utf != 0 && fc >= 0xc0) {
goto __2361
}
if !(fc&0x20 == Tuint32_t(0)) {
goto __2362
}
fc = fc&0x1f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f
len8++
goto __2363
__2362:
if !(fc&0x10 == Tuint32_t(0)) {
goto __2364
}
fc = fc&0x0f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f
len8 = len8 + 2
goto __2365
__2364:
if !(fc&0x08 == Tuint32_t(0)) {
goto __2366
}
fc = fc&0x07<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 3)))&0x3f
len8 = len8 + 3
goto __2367
__2366:
if !(fc&0x04 == Tuint32_t(0)) {
goto __2368
}
fc = fc&0x03<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 3)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 4)))&0x3f
len8 = len8 + 4
goto __2369
__2368:
fc = fc&0x01<<30 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 3)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 4)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 5)))&0x3f
len8 = len8 + 5
__2369:
;
__2367:
;
__2365:
;
__2363:
;
__2361:
;
if !(libc.Bool32(Tuint32_t((*Tucd_record)(unsafe.Pointer(uintptr(unsafe.Pointer(&X_pcre2_ucd_records_8))+uintptr(X_pcre2_ucd_stage2_8[int32(X_pcre2_ucd_stage1_8[int32(fc)/DUCD_BLOCK_SIZE])*DUCD_BLOCK_SIZE+int32(fc)%DUCD_BLOCK_SIZE])*12)).Fscript) == *(*Tuint32_t)(unsafe.Pointer(F + 56 + 3*4))) == notmatch2) {
goto __2370
}
goto __2357
__2370:
;
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += TPCRE2_SPTR8(len8)
goto __2356
__2356:
i++
goto __2355
goto __2357
__2357:
;
goto __2275
__2281:
i = *(*Tuint32_t)(unsafe.Pointer(F + 56))
__2371:
if !(i < *(*Tuint32_t)(unsafe.Pointer(F + 56 + 1*4))) {
goto __2373
}
len9 = 1
if !((*Theapframe)(unsafe.Pointer(F)).Feptr >= (*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject) {
goto __2374
}
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) != 0 && ((*Theapframe)(unsafe.Pointer(F)).Feptr > (*Tmatch_block_8)(unsafe.Pointer(mb)).Fstart_used_ptr || (*Tmatch_block_8)(unsafe.Pointer(mb)).Fallowemptypartial != 0)) {
goto __2375
}
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fhitend = DTRUE
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) > 1) {
goto __2376
}
return -2
__2376:
;
__2375:
;
goto __2373
__2374:
;
fc = Tuint32_t(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))
if !(utf != 0 && fc >= 0xc0) {
goto __2377
}
if !(fc&0x20 == Tuint32_t(0)) {
goto __2378
}
fc = fc&0x1f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f
len9++
goto __2379
__2378:
if !(fc&0x10 == Tuint32_t(0)) {
goto __2380
}
fc = fc&0x0f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f
len9 = len9 + 2
goto __2381
__2380:
if !(fc&0x08 == Tuint32_t(0)) {
goto __2382
}
fc = fc&0x07<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 3)))&0x3f
len9 = len9 + 3
goto __2383
__2382:
if !(fc&0x04 == Tuint32_t(0)) {
goto __2384
}
fc = fc&0x03<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 3)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 4)))&0x3f
len9 = len9 + 4
goto __2385
__2384:
fc = fc&0x01<<30 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 3)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 4)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 5)))&0x3f
len9 = len9 + 5
__2385:
;
__2383:
;
__2381:
;
__2379:
;
__2377:
;
prop5 = uintptr(unsafe.Pointer(&X_pcre2_ucd_records_8)) + uintptr(X_pcre2_ucd_stage2_8[int32(X_pcre2_ucd_stage1_8[int32(fc)/DUCD_BLOCK_SIZE])*DUCD_BLOCK_SIZE+int32(fc)%DUCD_BLOCK_SIZE])*12
ok6 = libc.Bool32(Tuint32_t((*Tucd_record)(unsafe.Pointer(prop5)).Fscript) == *(*Tuint32_t)(unsafe.Pointer(F + 56 + 3*4)) || *(*Tuint32_t)(unsafe.Pointer(uintptr(unsafe.Pointer(&X_pcre2_ucd_script_sets_8)) + uintptr(int32((*Tucd_record)(unsafe.Pointer(prop5)).Fscriptx_bidiclass)&DUCD_SCRIPTX_MASK)*4 + uintptr(*(*Tuint32_t)(unsafe.Pointer(F + 56 + 3*4))/Tuint32_t(32))*4))&(uint32(1)<<(*(*Tuint32_t)(unsafe.Pointer(F + 56 + 3*4))%Tuint32_t(32))) != Tuint32_t(0))
if !(ok6 == notmatch2) {
goto __2386
}
goto __2373
__2386:
;
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += TPCRE2_SPTR8(len9)
goto __2372
__2372:
i++
goto __2371
goto __2373
__2373:
;
goto __2275
__2282:
i = *(*Tuint32_t)(unsafe.Pointer(F + 56))
__2387:
if !(i < *(*Tuint32_t)(unsafe.Pointer(F + 56 + 1*4))) {
goto __2389
}
len10 = 1
if !((*Theapframe)(unsafe.Pointer(F)).Feptr >= (*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject) {
goto __2390
}
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) != 0 && ((*Theapframe)(unsafe.Pointer(F)).Feptr > (*Tmatch_block_8)(unsafe.Pointer(mb)).Fstart_used_ptr || (*Tmatch_block_8)(unsafe.Pointer(mb)).Fallowemptypartial != 0)) {
goto __2391
}
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fhitend = DTRUE
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) > 1) {
goto __2392
}
return -2
__2392:
;
__2391:
;
goto __2389
__2390:
;
fc = Tuint32_t(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))
if !(utf != 0 && fc >= 0xc0) {
goto __2393
}
if !(fc&0x20 == Tuint32_t(0)) {
goto __2394
}
fc = fc&0x1f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f
len10++
goto __2395
__2394:
if !(fc&0x10 == Tuint32_t(0)) {
goto __2396
}
fc = fc&0x0f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f
len10 = len10 + 2
goto __2397
__2396:
if !(fc&0x08 == Tuint32_t(0)) {
goto __2398
}
fc = fc&0x07<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 3)))&0x3f
len10 = len10 + 3
goto __2399
__2398:
if !(fc&0x04 == Tuint32_t(0)) {
goto __2400
}
fc = fc&0x03<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 3)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 4)))&0x3f
len10 = len10 + 4
goto __2401
__2400:
fc = fc&0x01<<30 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 3)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 4)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 5)))&0x3f
len10 = len10 + 5
__2401:
;
__2399:
;
__2397:
;
__2395:
;
__2393:
;
category4 = int32(X_pcre2_ucp_gentype_8[(*Tucd_record)(unsafe.Pointer(uintptr(unsafe.Pointer(&X_pcre2_ucd_records_8))+uintptr(X_pcre2_ucd_stage2_8[int32(X_pcre2_ucd_stage1_8[int32(fc)/DUCD_BLOCK_SIZE])*DUCD_BLOCK_SIZE+int32(fc)%DUCD_BLOCK_SIZE])*12)).Fchartype])
if !(libc.Bool32(category4 == ucp_L || category4 == ucp_N) == notmatch2) {
goto __2402
}
goto __2389
__2402:
;
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += TPCRE2_SPTR8(len10)
goto __2388
__2388:
i++
goto __2387
goto __2389
__2389:
;
goto __2275
// Perl space used to exclude VT, but from Perl 5.18 it is included,
// which means that Perl space and POSIX space are now identical. PCRE
// was changed at release 8.34.
__2283: // Perl space
__2284: // POSIX space
i = *(*Tuint32_t)(unsafe.Pointer(F + 56))
__2403:
if !(i < *(*Tuint32_t)(unsafe.Pointer(F + 56 + 1*4))) {
goto __2405
}
len11 = 1
if !((*Theapframe)(unsafe.Pointer(F)).Feptr >= (*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject) {
goto __2406
}
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) != 0 && ((*Theapframe)(unsafe.Pointer(F)).Feptr > (*Tmatch_block_8)(unsafe.Pointer(mb)).Fstart_used_ptr || (*Tmatch_block_8)(unsafe.Pointer(mb)).Fallowemptypartial != 0)) {
goto __2407
}
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fhitend = DTRUE
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) > 1) {
goto __2408
}
return -2
__2408:
;
__2407:
;
goto __2405
__2406:
;
fc = Tuint32_t(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))
if !(utf != 0 && fc >= 0xc0) {
goto __2409
}
if !(fc&0x20 == Tuint32_t(0)) {
goto __2410
}
fc = fc&0x1f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f
len11++
goto __2411
__2410:
if !(fc&0x10 == Tuint32_t(0)) {
goto __2412
}
fc = fc&0x0f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f
len11 = len11 + 2
goto __2413
__2412:
if !(fc&0x08 == Tuint32_t(0)) {
goto __2414
}
fc = fc&0x07<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 3)))&0x3f
len11 = len11 + 3
goto __2415
__2414:
if !(fc&0x04 == Tuint32_t(0)) {
goto __2416
}
fc = fc&0x03<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 3)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 4)))&0x3f
len11 = len11 + 4
goto __2417
__2416:
fc = fc&0x01<<30 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 3)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 4)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 5)))&0x3f
len11 = len11 + 5
__2417:
;
__2415:
;
__2413:
;
__2411:
;
__2409:
;
switch fc {
case Tuint32_t('\011'):
goto __2419
case Tuint32_t('\040'):
goto __2420
case libc.Uint32FromUint8(libc.Uint8FromInt32(160)):
goto __2421
case Tuint32_t(0x1680):
goto __2422 /* OGHAM SPACE MARK */
case Tuint32_t(0x180e):
goto __2423 /* MONGOLIAN VOWEL SEPARATOR */
case Tuint32_t(0x2000):
goto __2424 /* EN QUAD */
case Tuint32_t(0x2001):
goto __2425 /* EM QUAD */
case Tuint32_t(0x2002):
goto __2426 /* EN SPACE */
case Tuint32_t(0x2003):
goto __2427 /* EM SPACE */
case Tuint32_t(0x2004):
goto __2428 /* THREE-PER-EM SPACE */
case Tuint32_t(0x2005):
goto __2429 /* FOUR-PER-EM SPACE */
case Tuint32_t(0x2006):
goto __2430 /* SIX-PER-EM SPACE */
case Tuint32_t(0x2007):
goto __2431 /* FIGURE SPACE */
case Tuint32_t(0x2008):
goto __2432 /* PUNCTUATION SPACE */
case Tuint32_t(0x2009):
goto __2433 /* THIN SPACE */
case Tuint32_t(0x200A):
goto __2434 /* HAIR SPACE */
case Tuint32_t(0x202f):
goto __2435 /* NARROW NO-BREAK SPACE */
case Tuint32_t(0x205f):
goto __2436 /* MEDIUM MATHEMATICAL SPACE */
case Tuint32_t(0x3000):
goto __2437
case Tuint32_t('\012'):
goto __2438
case Tuint32_t('\013'):
goto __2439
case Tuint32_t('\014'):
goto __2440
case Tuint32_t('\015'):
goto __2441
case libc.Uint32FromUint8(libc.Uint8FromInt32(133)):
goto __2442
case Tuint32_t(0x2028):
goto __2443 /* LINE SEPARATOR */
case Tuint32_t(0x2029):
goto __2444
default:
goto __2445
}
goto __2418
__2419:
__2420:
__2421:
__2422: /* OGHAM SPACE MARK */
__2423: /* MONGOLIAN VOWEL SEPARATOR */
__2424: /* EN QUAD */
__2425: /* EM QUAD */
__2426: /* EN SPACE */
__2427: /* EM SPACE */
__2428: /* THREE-PER-EM SPACE */
__2429: /* FOUR-PER-EM SPACE */
__2430: /* SIX-PER-EM SPACE */
__2431: /* FIGURE SPACE */
__2432: /* PUNCTUATION SPACE */
__2433: /* THIN SPACE */
__2434: /* HAIR SPACE */
__2435: /* NARROW NO-BREAK SPACE */
__2436: /* MEDIUM MATHEMATICAL SPACE */
__2437:
__2438:
__2439:
__2440:
__2441:
__2442:
__2443: /* LINE SEPARATOR */
__2444:
if !(notmatch2 != 0) {
goto __2446
}
goto ENDLOOP99
__2446:
; // Break the loop
goto __2418
__2445:
if !(libc.Bool32(X_pcre2_ucp_gentype_8[(*Tucd_record)(unsafe.Pointer(uintptr(unsafe.Pointer(&X_pcre2_ucd_records_8))+uintptr(X_pcre2_ucd_stage2_8[int32(X_pcre2_ucd_stage1_8[int32(fc)/DUCD_BLOCK_SIZE])*DUCD_BLOCK_SIZE+int32(fc)%DUCD_BLOCK_SIZE])*12)).Fchartype] == ucp_Z) == notmatch2) {
goto __2447
}
goto ENDLOOP99
__2447:
; // Break the loop
goto __2418
__2418:
;
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += TPCRE2_SPTR8(len11)
goto __2404
__2404:
i++
goto __2403
goto __2405
__2405:
;
ENDLOOP99:
goto __2275
__2285:
i = *(*Tuint32_t)(unsafe.Pointer(F + 56))
__2448:
if !(i < *(*Tuint32_t)(unsafe.Pointer(F + 56 + 1*4))) {
goto __2450
}
len12 = 1
if !((*Theapframe)(unsafe.Pointer(F)).Feptr >= (*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject) {
goto __2451
}
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) != 0 && ((*Theapframe)(unsafe.Pointer(F)).Feptr > (*Tmatch_block_8)(unsafe.Pointer(mb)).Fstart_used_ptr || (*Tmatch_block_8)(unsafe.Pointer(mb)).Fallowemptypartial != 0)) {
goto __2452
}
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fhitend = DTRUE
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) > 1) {
goto __2453
}
return -2
__2453:
;
__2452:
;
goto __2450
__2451:
;
fc = Tuint32_t(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))
if !(utf != 0 && fc >= 0xc0) {
goto __2454
}
if !(fc&0x20 == Tuint32_t(0)) {
goto __2455
}
fc = fc&0x1f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f
len12++
goto __2456
__2455:
if !(fc&0x10 == Tuint32_t(0)) {
goto __2457
}
fc = fc&0x0f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f
len12 = len12 + 2
goto __2458
__2457:
if !(fc&0x08 == Tuint32_t(0)) {
goto __2459
}
fc = fc&0x07<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 3)))&0x3f
len12 = len12 + 3
goto __2460
__2459:
if !(fc&0x04 == Tuint32_t(0)) {
goto __2461
}
fc = fc&0x03<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 3)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 4)))&0x3f
len12 = len12 + 4
goto __2462
__2461:
fc = fc&0x01<<30 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 3)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 4)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 5)))&0x3f
len12 = len12 + 5
__2462:
;
__2460:
;
__2458:
;
__2456:
;
__2454:
;
category5 = int32(X_pcre2_ucp_gentype_8[(*Tucd_record)(unsafe.Pointer(uintptr(unsafe.Pointer(&X_pcre2_ucd_records_8))+uintptr(X_pcre2_ucd_stage2_8[int32(X_pcre2_ucd_stage1_8[int32(fc)/DUCD_BLOCK_SIZE])*DUCD_BLOCK_SIZE+int32(fc)%DUCD_BLOCK_SIZE])*12)).Fchartype])
if !(libc.Bool32(category5 == ucp_L || category5 == ucp_N || fc == Tuint32_t('\137')) == notmatch2) {
goto __2463
}
goto __2450
__2463:
;
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += TPCRE2_SPTR8(len12)
goto __2449
__2449:
i++
goto __2448
goto __2450
__2450:
;
goto __2275
__2286:
i = *(*Tuint32_t)(unsafe.Pointer(F + 56))
__2464:
if !(i < *(*Tuint32_t)(unsafe.Pointer(F + 56 + 1*4))) {
goto __2466
}
len13 = 1
if !((*Theapframe)(unsafe.Pointer(F)).Feptr >= (*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject) {
goto __2467
}
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) != 0 && ((*Theapframe)(unsafe.Pointer(F)).Feptr > (*Tmatch_block_8)(unsafe.Pointer(mb)).Fstart_used_ptr || (*Tmatch_block_8)(unsafe.Pointer(mb)).Fallowemptypartial != 0)) {
goto __2468
}
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fhitend = DTRUE
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) > 1) {
goto __2469
}
return -2
__2469:
;
__2468:
;
goto __2466
__2467:
;
fc = Tuint32_t(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))
if !(utf != 0 && fc >= 0xc0) {
goto __2470
}
if !(fc&0x20 == Tuint32_t(0)) {
goto __2471
}
fc = fc&0x1f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f
len13++
goto __2472
__2471:
if !(fc&0x10 == Tuint32_t(0)) {
goto __2473
}
fc = fc&0x0f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f
len13 = len13 + 2
goto __2474
__2473:
if !(fc&0x08 == Tuint32_t(0)) {
goto __2475
}
fc = fc&0x07<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 3)))&0x3f
len13 = len13 + 3
goto __2476
__2475:
if !(fc&0x04 == Tuint32_t(0)) {
goto __2477
}
fc = fc&0x03<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 3)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 4)))&0x3f
len13 = len13 + 4
goto __2478
__2477:
fc = fc&0x01<<30 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 3)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 4)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 5)))&0x3f
len13 = len13 + 5
__2478:
;
__2476:
;
__2474:
;
__2472:
;
__2470:
;
cp3 = uintptr(unsafe.Pointer(&X_pcre2_ucd_caseless_sets_8)) + uintptr(*(*Tuint32_t)(unsafe.Pointer(F + 56 + 3*4)))*4
__2479:
if !(fc < *(*Tuint32_t)(unsafe.Pointer(cp3))) {
goto __2482
}
if !(notmatch2 != 0) {
goto __2483
}
goto __2481
goto __2484
__2483:
goto GOT_MAX
__2484:
;
__2482:
;
if !(fc == *(*Tuint32_t)(unsafe.Pointer(libc.PostIncUintptr(&cp3, 4)))) {
goto __2485
}
if !(notmatch2 != 0) {
goto __2486
}
goto GOT_MAX
goto __2487
__2486:
goto __2481
__2487:
;
__2485:
;
goto __2480
__2480:
goto __2479
goto __2481
__2481:
;
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += TPCRE2_SPTR8(len13)
goto __2465
__2465:
i++
goto __2464
goto __2466
__2466:
;
GOT_MAX:
goto __2275
__2287:
i = *(*Tuint32_t)(unsafe.Pointer(F + 56))
__2488:
if !(i < *(*Tuint32_t)(unsafe.Pointer(F + 56 + 1*4))) {
goto __2490
}
len14 = 1
if !((*Theapframe)(unsafe.Pointer(F)).Feptr >= (*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject) {
goto __2491
}
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) != 0 && ((*Theapframe)(unsafe.Pointer(F)).Feptr > (*Tmatch_block_8)(unsafe.Pointer(mb)).Fstart_used_ptr || (*Tmatch_block_8)(unsafe.Pointer(mb)).Fallowemptypartial != 0)) {
goto __2492
}
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fhitend = DTRUE
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) > 1) {
goto __2493
}
return -2
__2493:
;
__2492:
;
goto __2490
__2491:
;
fc = Tuint32_t(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))
if !(utf != 0 && fc >= 0xc0) {
goto __2494
}
if !(fc&0x20 == Tuint32_t(0)) {
goto __2495
}
fc = fc&0x1f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f
len14++
goto __2496
__2495:
if !(fc&0x10 == Tuint32_t(0)) {
goto __2497
}
fc = fc&0x0f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f
len14 = len14 + 2
goto __2498
__2497:
if !(fc&0x08 == Tuint32_t(0)) {
goto __2499
}
fc = fc&0x07<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 3)))&0x3f
len14 = len14 + 3
goto __2500
__2499:
if !(fc&0x04 == Tuint32_t(0)) {
goto __2501
}
fc = fc&0x03<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 3)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 4)))&0x3f
len14 = len14 + 4
goto __2502
__2501:
fc = fc&0x01<<30 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 3)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 4)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 5)))&0x3f
len14 = len14 + 5
__2502:
;
__2500:
;
__2498:
;
__2496:
;
__2494:
;
if !(libc.Bool32(fc == Tuint32_t('\044') || fc == Tuint32_t('\100') || fc == Tuint32_t('\140') || fc >= Tuint32_t(0xa0) && fc <= Tuint32_t(0xd7ff) || fc >= Tuint32_t(0xe000)) == notmatch2) {
goto __2503
}
goto __2490
__2503:
;
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += TPCRE2_SPTR8(len14)
goto __2489
__2489:
i++
goto __2488
goto __2490
__2490:
;
goto __2275
__2288:
i = *(*Tuint32_t)(unsafe.Pointer(F + 56))
__2504:
if !(i < *(*Tuint32_t)(unsafe.Pointer(F + 56 + 1*4))) {
goto __2506
}
len15 = 1
if !((*Theapframe)(unsafe.Pointer(F)).Feptr >= (*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject) {
goto __2507
}
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) != 0 && ((*Theapframe)(unsafe.Pointer(F)).Feptr > (*Tmatch_block_8)(unsafe.Pointer(mb)).Fstart_used_ptr || (*Tmatch_block_8)(unsafe.Pointer(mb)).Fallowemptypartial != 0)) {
goto __2508
}
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fhitend = DTRUE
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) > 1) {
goto __2509
}
return -2
__2509:
;
__2508:
;
goto __2506
__2507:
;
fc = Tuint32_t(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))
if !(utf != 0 && fc >= 0xc0) {
goto __2510
}
if !(fc&0x20 == Tuint32_t(0)) {
goto __2511
}
fc = fc&0x1f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f
len15++
goto __2512
__2511:
if !(fc&0x10 == Tuint32_t(0)) {
goto __2513
}
fc = fc&0x0f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f
len15 = len15 + 2
goto __2514
__2513:
if !(fc&0x08 == Tuint32_t(0)) {
goto __2515
}
fc = fc&0x07<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 3)))&0x3f
len15 = len15 + 3
goto __2516
__2515:
if !(fc&0x04 == Tuint32_t(0)) {
goto __2517
}
fc = fc&0x03<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 3)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 4)))&0x3f
len15 = len15 + 4
goto __2518
__2517:
fc = fc&0x01<<30 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 3)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 4)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 5)))&0x3f
len15 = len15 + 5
__2518:
;
__2516:
;
__2514:
;
__2512:
;
__2510:
;
if !(libc.Bool32(Tuint32_t(int32((*Tucd_record)(unsafe.Pointer(uintptr(unsafe.Pointer(&X_pcre2_ucd_records_8))+uintptr(X_pcre2_ucd_stage2_8[int32(X_pcre2_ucd_stage1_8[int32(fc)/DUCD_BLOCK_SIZE])*DUCD_BLOCK_SIZE+int32(fc)%DUCD_BLOCK_SIZE])*12)).Fscriptx_bidiclass)>>DUCD_BIDICLASS_SHIFT) == *(*Tuint32_t)(unsafe.Pointer(F + 56 + 3*4))) == notmatch2) {
goto __2519
}
goto __2506
__2519:
;
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += TPCRE2_SPTR8(len15)
goto __2505
__2505:
i++
goto __2504
goto __2506
__2506:
;
goto __2275
__2289:
i = *(*Tuint32_t)(unsafe.Pointer(F + 56))
__2520:
if !(i < *(*Tuint32_t)(unsafe.Pointer(F + 56 + 1*4))) {
goto __2522
}
len16 = 1
if !((*Theapframe)(unsafe.Pointer(F)).Feptr >= (*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject) {
goto __2523
}
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) != 0 && ((*Theapframe)(unsafe.Pointer(F)).Feptr > (*Tmatch_block_8)(unsafe.Pointer(mb)).Fstart_used_ptr || (*Tmatch_block_8)(unsafe.Pointer(mb)).Fallowemptypartial != 0)) {
goto __2524
}
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fhitend = DTRUE
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) > 1) {
goto __2525
}
return -2
__2525:
;
__2524:
;
goto __2522
__2523:
;
fc = Tuint32_t(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))
if !(utf != 0 && fc >= 0xc0) {
goto __2526
}
if !(fc&0x20 == Tuint32_t(0)) {
goto __2527
}
fc = fc&0x1f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f
len16++
goto __2528
__2527:
if !(fc&0x10 == Tuint32_t(0)) {
goto __2529
}
fc = fc&0x0f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f
len16 = len16 + 2
goto __2530
__2529:
if !(fc&0x08 == Tuint32_t(0)) {
goto __2531
}
fc = fc&0x07<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 3)))&0x3f
len16 = len16 + 3
goto __2532
__2531:
if !(fc&0x04 == Tuint32_t(0)) {
goto __2533
}
fc = fc&0x03<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 3)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 4)))&0x3f
len16 = len16 + 4
goto __2534
__2533:
fc = fc&0x01<<30 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 3)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 4)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 5)))&0x3f
len16 = len16 + 5
__2534:
;
__2532:
;
__2530:
;
__2528:
;
__2526:
;
prop6 = uintptr(unsafe.Pointer(&X_pcre2_ucd_records_8)) + uintptr(X_pcre2_ucd_stage2_8[int32(X_pcre2_ucd_stage1_8[int32(fc)/DUCD_BLOCK_SIZE])*DUCD_BLOCK_SIZE+int32(fc)%DUCD_BLOCK_SIZE])*12
ok7 = libc.Bool32(*(*Tuint32_t)(unsafe.Pointer(uintptr(unsafe.Pointer(&X_pcre2_ucd_boolprop_sets_8)) + uintptr(int32((*Tucd_record)(unsafe.Pointer(prop6)).Fbprops)&DUCD_BPROPS_MASK)*4 + uintptr(*(*Tuint32_t)(unsafe.Pointer(F + 56 + 3*4))/Tuint32_t(32))*4))&(uint32(1)<<(*(*Tuint32_t)(unsafe.Pointer(F + 56 + 3*4))%Tuint32_t(32))) != Tuint32_t(0))
if !(ok7 == notmatch2) {
goto __2535
}
goto __2522
__2535:
;
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += TPCRE2_SPTR8(len16)
goto __2521
__2521:
i++
goto __2520
goto __2522
__2522:
;
goto __2275
__2290:
return -44
__2275:
;
// Feptr is now past the end of the maximum run
if !(reptype == REPTYPE_POS) {
goto __2536
}
goto __11
__2536:
; // No backtracking
// After \C in UTF mode, Lstart_eptr might be in the middle of a
// Unicode character. Use <= Lstart_eptr to ensure backtracking doesn't
// go too far.
__2537:
if !((*Theapframe)(unsafe.Pointer(F)).Feptr <= *(*TPCRE2_SPTR8)(unsafe.Pointer(F + 8))) {
goto __2540
}
goto __2539
__2540:
;
start_ecode = (*Theapframe)(unsafe.Pointer(F)).Fecode
(*Theapframe)(unsafe.Pointer(F)).Freturn_id = RM222
goto MATCH_RECURSE
L_RM222:
;
if !(rrc != DMATCH_NOMATCH) {
goto __2541
}
rrc = rrc
goto RETURN_SWITCH
__2541:
;
(*Theapframe)(unsafe.Pointer(F)).Feptr--
if !(utf != 0) {
goto __2542
}
__2543:
if !(uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0xc0 == 0x80) {
goto __2544
}
(*Theapframe)(unsafe.Pointer(F)).Feptr--
goto __2543
__2544:
;
__2542:
;
goto __2538
__2538:
goto __2537
goto __2539
__2539:
;
goto __2274
__2273:
if !(*(*Tuint32_t)(unsafe.Pointer(F + 56 + 2*4)) == OP_EXTUNI) {
goto __2545
}
i = *(*Tuint32_t)(unsafe.Pointer(F + 56))
__2547:
if !(i < *(*Tuint32_t)(unsafe.Pointer(F + 56 + 1*4))) {
goto __2549
}
if !((*Theapframe)(unsafe.Pointer(F)).Feptr >= (*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject) {
goto __2550
}
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) != 0 && ((*Theapframe)(unsafe.Pointer(F)).Feptr > (*Tmatch_block_8)(unsafe.Pointer(mb)).Fstart_used_ptr || (*Tmatch_block_8)(unsafe.Pointer(mb)).Fallowemptypartial != 0)) {
goto __2552
}
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fhitend = DTRUE
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) > 1) {
goto __2553
}
return -2
__2553:
;
__2552:
;
goto __2549
goto __2551
__2550:
fc = Tuint32_t(*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&(*Theapframe)(unsafe.Pointer(F)).Feptr, 1))))
if !(utf != 0 && fc >= 0xc0) {
goto __2554
}
if !(fc&0x20 == Tuint32_t(0)) {
goto __2555
}
fc = fc&0x1f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&(*Theapframe)(unsafe.Pointer(F)).Feptr, 1))))&0x3f
goto __2556
__2555:
if !(fc&0x10 == Tuint32_t(0)) {
goto __2557
}
fc = fc&0x0f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += uintptr(2)
goto __2558
__2557:
if !(fc&0x08 == Tuint32_t(0)) {
goto __2559
}
fc = fc&0x07<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += uintptr(3)
goto __2560
__2559:
if !(fc&0x04 == Tuint32_t(0)) {
goto __2561
}
fc = fc&0x03<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 3)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += uintptr(4)
goto __2562
__2561:
fc = fc&0x01<<30 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0x3f<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 3)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 4)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += uintptr(5)
__2562:
;
__2560:
;
__2558:
;
__2556:
;
__2554:
;
(*Theapframe)(unsafe.Pointer(F)).Feptr = X_pcre2_extuni_8(tls, fc, (*Theapframe)(unsafe.Pointer(F)).Feptr, (*Tmatch_block_8)(unsafe.Pointer(mb)).Fstart_subject, (*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject,
utf, uintptr(0))
__2551:
;
if !((*Theapframe)(unsafe.Pointer(F)).Feptr >= (*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject) {
goto __2563
}
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) != 0 && ((*Theapframe)(unsafe.Pointer(F)).Feptr > (*Tmatch_block_8)(unsafe.Pointer(mb)).Fstart_used_ptr || (*Tmatch_block_8)(unsafe.Pointer(mb)).Fallowemptypartial != 0)) {
goto __2564
}
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fhitend = DTRUE
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) > 1) {
goto __2565
}
return -2
__2565:
;
__2564:
;
__2563:
;
goto __2548
__2548:
i++
goto __2547
goto __2549
__2549:
;
// Feptr is now past the end of the maximum run
if !(reptype == REPTYPE_POS) {
goto __2566
}
goto __11
__2566:
; // No backtracking
// We use <= Lstart_eptr rather than == Lstart_eptr to detect the start
// of the run while backtracking because the use of \C in UTF mode can
// cause BACKCHAR to move back past Lstart_eptr. This is just palliative;
// the use of \C in UTF mode is fraught with danger.
__2567:
if !((*Theapframe)(unsafe.Pointer(F)).Feptr <= *(*TPCRE2_SPTR8)(unsafe.Pointer(F + 8))) {
goto __2570
}
goto __2569
__2570:
; /* At start of char run */
start_ecode = (*Theapframe)(unsafe.Pointer(F)).Fecode
(*Theapframe)(unsafe.Pointer(F)).Freturn_id = RM220
goto MATCH_RECURSE
L_RM220:
;
if !(rrc != DMATCH_NOMATCH) {
goto __2571
}
rrc = rrc
goto RETURN_SWITCH
__2571:
;
// Backtracking over an extended grapheme cluster involves inspecting
// the previous two characters (if present) to see if a break is
// permitted between them.
(*Theapframe)(unsafe.Pointer(F)).Feptr--
if !!(utf != 0) {
goto __2572
}
fc = Tuint32_t(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))
goto __2573
__2572:
__2574:
if !(uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0xc0 == 0x80) {
goto __2575
}
(*Theapframe)(unsafe.Pointer(F)).Feptr--
goto __2574
__2575:
;
fc = Tuint32_t(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))
if !(fc >= 0xc0) {
goto __2576
}
if !(fc&0x20 == Tuint32_t(0)) {
goto __2577
}
fc = fc&0x1f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f
goto __2578
__2577:
if !(fc&0x10 == Tuint32_t(0)) {
goto __2579
}
fc = fc&0x0f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f
goto __2580
__2579:
if !(fc&0x08 == Tuint32_t(0)) {
goto __2581
}
fc = fc&0x07<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 3)))&0x3f
goto __2582
__2581:
if !(fc&0x04 == Tuint32_t(0)) {
goto __2583
}
fc = fc&0x03<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 3)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 4)))&0x3f
goto __2584
__2583:
fc = fc&0x01<<30 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 3)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 4)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 5)))&0x3f
__2584:
;
__2582:
;
__2580:
;
__2578:
;
__2576:
;
__2573:
;
rgb = int32((*Tucd_record)(unsafe.Pointer(uintptr(unsafe.Pointer(&X_pcre2_ucd_records_8)) + uintptr(X_pcre2_ucd_stage2_8[int32(X_pcre2_ucd_stage1_8[int32(fc)/DUCD_BLOCK_SIZE])*DUCD_BLOCK_SIZE+int32(fc)%DUCD_BLOCK_SIZE])*12)).Fgbprop)
__2585:
if !((*Theapframe)(unsafe.Pointer(F)).Feptr <= *(*TPCRE2_SPTR8)(unsafe.Pointer(F + 8))) {
goto __2588
}
goto __2587
__2588:
; // At start of char run
fptr = (*Theapframe)(unsafe.Pointer(F)).Feptr - uintptr(1)
if !!(utf != 0) {
goto __2589
}
fc = Tuint32_t(*(*TPCRE2_UCHAR8)(unsafe.Pointer(fptr)))
goto __2590
__2589:
__2591:
if !(uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(fptr)))&0xc0 == 0x80) {
goto __2592
}
fptr--
goto __2591
__2592:
;
fc = Tuint32_t(*(*TPCRE2_UCHAR8)(unsafe.Pointer(fptr)))
if !(fc >= 0xc0) {
goto __2593
}
if !(fc&0x20 == Tuint32_t(0)) {
goto __2594
}
fc = fc&0x1f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(fptr + 1)))&0x3f
goto __2595
__2594:
if !(fc&0x10 == Tuint32_t(0)) {
goto __2596
}
fc = fc&0x0f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(fptr + 1)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(fptr + 2)))&0x3f
goto __2597
__2596:
if !(fc&0x08 == Tuint32_t(0)) {
goto __2598
}
fc = fc&0x07<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(fptr + 1)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(fptr + 2)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(fptr + 3)))&0x3f
goto __2599
__2598:
if !(fc&0x04 == Tuint32_t(0)) {
goto __2600
}
fc = fc&0x03<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(fptr + 1)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(fptr + 2)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(fptr + 3)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(fptr + 4)))&0x3f
goto __2601
__2600:
fc = fc&0x01<<30 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(fptr + 1)))&0x3f<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(fptr + 2)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(fptr + 3)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(fptr + 4)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(fptr + 5)))&0x3f
__2601:
;
__2599:
;
__2597:
;
__2595:
;
__2593:
;
__2590:
;
lgb = int32((*Tucd_record)(unsafe.Pointer(uintptr(unsafe.Pointer(&X_pcre2_ucd_records_8)) + uintptr(X_pcre2_ucd_stage2_8[int32(X_pcre2_ucd_stage1_8[int32(fc)/DUCD_BLOCK_SIZE])*DUCD_BLOCK_SIZE+int32(fc)%DUCD_BLOCK_SIZE])*12)).Fgbprop)
if !(X_pcre2_ucp_gbtable_8[lgb]&(uint32(1)<<rgb) == Tuint32_t(0)) {
goto __2602
}
goto __2587
__2602:
;
(*Theapframe)(unsafe.Pointer(F)).Feptr = fptr
rgb = lgb
goto __2586
__2586:
goto __2585
goto __2587
__2587:
;
goto __2568
__2568:
goto __2567
goto __2569
__2569:
;
goto __2546
__2545:
if !(utf != 0) {
goto __2603
}
switch *(*Tuint32_t)(unsafe.Pointer(F + 56 + 2*4)) {
case OP_ANY:
goto __2606
case OP_ALLANY:
goto __2607
// The "byte" (i.e. "code unit") case is the same as non-UTF
case OP_ANYBYTE:
goto __2608
case OP_ANYNL:
goto __2609
case OP_NOT_HSPACE:
goto __2610
case OP_HSPACE:
goto __2611
case OP_NOT_VSPACE:
goto __2612
case OP_VSPACE:
goto __2613
case OP_NOT_DIGIT:
goto __2614
case OP_DIGIT:
goto __2615
case OP_NOT_WHITESPACE:
goto __2616
case OP_WHITESPACE:
goto __2617
case OP_NOT_WORDCHAR:
goto __2618
case OP_WORDCHAR:
goto __2619
default:
goto __2620
}
goto __2605
__2606:
i = *(*Tuint32_t)(unsafe.Pointer(F + 56))
__2621:
if !(i < *(*Tuint32_t)(unsafe.Pointer(F + 56 + 1*4))) {
goto __2623
}
if !((*Theapframe)(unsafe.Pointer(F)).Feptr >= (*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject) {
goto __2624
}
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) != 0 && ((*Theapframe)(unsafe.Pointer(F)).Feptr > (*Tmatch_block_8)(unsafe.Pointer(mb)).Fstart_used_ptr || (*Tmatch_block_8)(unsafe.Pointer(mb)).Fallowemptypartial != 0)) {
goto __2625
}
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fhitend = DTRUE
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) > 1) {
goto __2626
}
return -2
__2626:
;
__2625:
;
goto __2623
__2624:
;
if !(func() int32 {
if (*Tmatch_block_8)(unsafe.Pointer(mb)).Fnltype != Tuint32_t(DNLTYPE_FIXED) {
return libc.Bool32((*Theapframe)(unsafe.Pointer(F)).Feptr < (*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject && X_pcre2_is_newline_8(tls, (*Theapframe)(unsafe.Pointer(F)).Feptr, (*Tmatch_block_8)(unsafe.Pointer(mb)).Fnltype, (*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject, mb+256, utf) != 0)
}
return libc.Bool32((*Theapframe)(unsafe.Pointer(F)).Feptr <= (*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject-uintptr((*Tmatch_block_8)(unsafe.Pointer(mb)).Fnllen) && int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr))) == int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(mb + 260))) && ((*Tmatch_block_8)(unsafe.Pointer(mb)).Fnllen == Tuint32_t(1) || int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + uintptr(1)))) == int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(mb + 260 + 1)))))
}() != 0) {
goto __2627
}
goto __2623
__2627:
;
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) != 0 && (*Theapframe)(unsafe.Pointer(F)).Feptr+uintptr(1) >= (*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject && (*Tmatch_block_8)(unsafe.Pointer(mb)).Fnltype == Tuint32_t(DNLTYPE_FIXED) && (*Tmatch_block_8)(unsafe.Pointer(mb)).Fnllen == Tuint32_t(2) && int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr))) == int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(mb + 260)))) {
goto __2628
}
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fhitend = DTRUE
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) > 1) {
goto __2629
}
return -2
__2629:
;
__2628:
;
(*Theapframe)(unsafe.Pointer(F)).Feptr++
__2630:
if !((*Theapframe)(unsafe.Pointer(F)).Feptr < (*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject && uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0xc0 == 0x80) {
goto __2631
}
(*Theapframe)(unsafe.Pointer(F)).Feptr++
goto __2630
__2631:
;
goto __2622
__2622:
i++
goto __2621
goto __2623
__2623:
;
goto __2605
__2607:
if !(*(*Tuint32_t)(unsafe.Pointer(F + 56 + 1*4)) < 4294967295) {
goto __2632
}
i = *(*Tuint32_t)(unsafe.Pointer(F + 56))
__2634:
if !(i < *(*Tuint32_t)(unsafe.Pointer(F + 56 + 1*4))) {
goto __2636
}
if !((*Theapframe)(unsafe.Pointer(F)).Feptr >= (*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject) {
goto __2637
}
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) != 0 && ((*Theapframe)(unsafe.Pointer(F)).Feptr > (*Tmatch_block_8)(unsafe.Pointer(mb)).Fstart_used_ptr || (*Tmatch_block_8)(unsafe.Pointer(mb)).Fallowemptypartial != 0)) {
goto __2638
}
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fhitend = DTRUE
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) > 1) {
goto __2639
}
return -2
__2639:
;
__2638:
;
goto __2636
__2637:
;
(*Theapframe)(unsafe.Pointer(F)).Feptr++
__2640:
if !((*Theapframe)(unsafe.Pointer(F)).Feptr < (*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject && uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0xc0 == 0x80) {
goto __2641
}
(*Theapframe)(unsafe.Pointer(F)).Feptr++
goto __2640
__2641:
;
goto __2635
__2635:
i++
goto __2634
goto __2636
__2636:
;
goto __2633
__2632:
(*Theapframe)(unsafe.Pointer(F)).Feptr = (*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject // Unlimited UTF-8 repeat
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) != 0 && ((*Theapframe)(unsafe.Pointer(F)).Feptr > (*Tmatch_block_8)(unsafe.Pointer(mb)).Fstart_used_ptr || (*Tmatch_block_8)(unsafe.Pointer(mb)).Fallowemptypartial != 0)) {
goto __2642
}
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fhitend = DTRUE
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) > 1) {
goto __2643
}
return -2
__2643:
;
__2642:
;
__2633:
;
goto __2605
// The "byte" (i.e. "code unit") case is the same as non-UTF
__2608:
fc = *(*Tuint32_t)(unsafe.Pointer(F + 56 + 1*4)) - *(*Tuint32_t)(unsafe.Pointer(F + 56))
if !(fc > Tuint32_t((int64((*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject)-int64((*Theapframe)(unsafe.Pointer(F)).Feptr))/1)) {
goto __2644
}
(*Theapframe)(unsafe.Pointer(F)).Feptr = (*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) != 0 && ((*Theapframe)(unsafe.Pointer(F)).Feptr > (*Tmatch_block_8)(unsafe.Pointer(mb)).Fstart_used_ptr || (*Tmatch_block_8)(unsafe.Pointer(mb)).Fallowemptypartial != 0)) {
goto __2646
}
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fhitend = DTRUE
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) > 1) {
goto __2647
}
return -2
__2647:
;
__2646:
;
goto __2645
__2644:
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += TPCRE2_SPTR8(fc)
__2645:
;
goto __2605
__2609:
i = *(*Tuint32_t)(unsafe.Pointer(F + 56))
__2648:
if !(i < *(*Tuint32_t)(unsafe.Pointer(F + 56 + 1*4))) {
goto __2650
}
len17 = 1
if !((*Theapframe)(unsafe.Pointer(F)).Feptr >= (*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject) {
goto __2651
}
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) != 0 && ((*Theapframe)(unsafe.Pointer(F)).Feptr > (*Tmatch_block_8)(unsafe.Pointer(mb)).Fstart_used_ptr || (*Tmatch_block_8)(unsafe.Pointer(mb)).Fallowemptypartial != 0)) {
goto __2652
}
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fhitend = DTRUE
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) > 1) {
goto __2653
}
return -2
__2653:
;
__2652:
;
goto __2650
__2651:
;
fc = Tuint32_t(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))
if !(fc >= 0xc0) {
goto __2654
}
if !(fc&0x20 == Tuint32_t(0)) {
goto __2655
}
fc = fc&0x1f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f
len17++
goto __2656
__2655:
if !(fc&0x10 == Tuint32_t(0)) {
goto __2657
}
fc = fc&0x0f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f
len17 = len17 + 2
goto __2658
__2657:
if !(fc&0x08 == Tuint32_t(0)) {
goto __2659
}
fc = fc&0x07<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 3)))&0x3f
len17 = len17 + 3
goto __2660
__2659:
if !(fc&0x04 == Tuint32_t(0)) {
goto __2661
}
fc = fc&0x03<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 3)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 4)))&0x3f
len17 = len17 + 4
goto __2662
__2661:
fc = fc&0x01<<30 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 3)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 4)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 5)))&0x3f
len17 = len17 + 5
__2662:
;
__2660:
;
__2658:
;
__2656:
;
__2654:
;
if !(fc == Tuint32_t('\015')) {
goto __2663
}
if !(libc.PreIncUintptr(&(*Theapframe)(unsafe.Pointer(F)).Feptr, 1) >= (*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject) {
goto __2665
}
goto __2650
__2665:
;
if !(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr))) == '\012') {
goto __2666
}
(*Theapframe)(unsafe.Pointer(F)).Feptr++
__2666:
;
goto __2664
__2663:
if !(fc != Tuint32_t('\012') && (int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fbsr_convention) == DPCRE2_BSR_ANYCRLF || fc != Tuint32_t('\013') && fc != Tuint32_t('\014') && fc != libc.Uint32FromUint8(libc.Uint8FromInt32(133)) &&
fc != Tuint32_t(0x2028) && fc != Tuint32_t(0x2029))) {
goto __2667
}
goto __2650
__2667:
;
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += TPCRE2_SPTR8(len17)
__2664:
;
goto __2649
__2649:
i++
goto __2648
goto __2650
__2650:
;
goto __2605
__2610:
__2611:
i = *(*Tuint32_t)(unsafe.Pointer(F + 56))
__2668:
if !(i < *(*Tuint32_t)(unsafe.Pointer(F + 56 + 1*4))) {
goto __2670
}
len18 = 1
if !((*Theapframe)(unsafe.Pointer(F)).Feptr >= (*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject) {
goto __2671
}
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) != 0 && ((*Theapframe)(unsafe.Pointer(F)).Feptr > (*Tmatch_block_8)(unsafe.Pointer(mb)).Fstart_used_ptr || (*Tmatch_block_8)(unsafe.Pointer(mb)).Fallowemptypartial != 0)) {
goto __2672
}
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fhitend = DTRUE
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) > 1) {
goto __2673
}
return -2
__2673:
;
__2672:
;
goto __2670
__2671:
;
fc = Tuint32_t(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))
if !(fc >= 0xc0) {
goto __2674
}
if !(fc&0x20 == Tuint32_t(0)) {
goto __2675
}
fc = fc&0x1f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f
len18++
goto __2676
__2675:
if !(fc&0x10 == Tuint32_t(0)) {
goto __2677
}
fc = fc&0x0f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f
len18 = len18 + 2
goto __2678
__2677:
if !(fc&0x08 == Tuint32_t(0)) {
goto __2679
}
fc = fc&0x07<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 3)))&0x3f
len18 = len18 + 3
goto __2680
__2679:
if !(fc&0x04 == Tuint32_t(0)) {
goto __2681
}
fc = fc&0x03<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 3)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 4)))&0x3f
len18 = len18 + 4
goto __2682
__2681:
fc = fc&0x01<<30 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 3)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 4)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 5)))&0x3f
len18 = len18 + 5
__2682:
;
__2680:
;
__2678:
;
__2676:
;
__2674:
;
switch fc {
case Tuint32_t('\011'):
goto __2684
case Tuint32_t('\040'):
goto __2685
case libc.Uint32FromUint8(libc.Uint8FromInt32(160)):
goto __2686
case Tuint32_t(0x1680):
goto __2687 /* OGHAM SPACE MARK */
case Tuint32_t(0x180e):
goto __2688 /* MONGOLIAN VOWEL SEPARATOR */
case Tuint32_t(0x2000):
goto __2689 /* EN QUAD */
case Tuint32_t(0x2001):
goto __2690 /* EM QUAD */
case Tuint32_t(0x2002):
goto __2691 /* EN SPACE */
case Tuint32_t(0x2003):
goto __2692 /* EM SPACE */
case Tuint32_t(0x2004):
goto __2693 /* THREE-PER-EM SPACE */
case Tuint32_t(0x2005):
goto __2694 /* FOUR-PER-EM SPACE */
case Tuint32_t(0x2006):
goto __2695 /* SIX-PER-EM SPACE */
case Tuint32_t(0x2007):
goto __2696 /* FIGURE SPACE */
case Tuint32_t(0x2008):
goto __2697 /* PUNCTUATION SPACE */
case Tuint32_t(0x2009):
goto __2698 /* THIN SPACE */
case Tuint32_t(0x200A):
goto __2699 /* HAIR SPACE */
case Tuint32_t(0x202f):
goto __2700 /* NARROW NO-BREAK SPACE */
case Tuint32_t(0x205f):
goto __2701 /* MEDIUM MATHEMATICAL SPACE */
case Tuint32_t(0x3000):
goto __2702
default:
goto __2703
}
goto __2683
__2684:
__2685:
__2686:
__2687: /* OGHAM SPACE MARK */
__2688: /* MONGOLIAN VOWEL SEPARATOR */
__2689: /* EN QUAD */
__2690: /* EM QUAD */
__2691: /* EN SPACE */
__2692: /* EM SPACE */
__2693: /* THREE-PER-EM SPACE */
__2694: /* FOUR-PER-EM SPACE */
__2695: /* SIX-PER-EM SPACE */
__2696: /* FIGURE SPACE */
__2697: /* PUNCTUATION SPACE */
__2698: /* THIN SPACE */
__2699: /* HAIR SPACE */
__2700: /* NARROW NO-BREAK SPACE */
__2701: /* MEDIUM MATHEMATICAL SPACE */
__2702:
gotspace = DTRUE
goto __2683
__2703:
gotspace = DFALSE
goto __2683
__2683:
;
if !(gotspace == libc.Bool32(*(*Tuint32_t)(unsafe.Pointer(F + 56 + 2*4)) == OP_NOT_HSPACE)) {
goto __2704
}
goto __2670
__2704:
;
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += TPCRE2_SPTR8(len18)
goto __2669
__2669:
i++
goto __2668
goto __2670
__2670:
;
goto __2605
__2612:
__2613:
i = *(*Tuint32_t)(unsafe.Pointer(F + 56))
__2705:
if !(i < *(*Tuint32_t)(unsafe.Pointer(F + 56 + 1*4))) {
goto __2707
}
len19 = 1
if !((*Theapframe)(unsafe.Pointer(F)).Feptr >= (*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject) {
goto __2708
}
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) != 0 && ((*Theapframe)(unsafe.Pointer(F)).Feptr > (*Tmatch_block_8)(unsafe.Pointer(mb)).Fstart_used_ptr || (*Tmatch_block_8)(unsafe.Pointer(mb)).Fallowemptypartial != 0)) {
goto __2709
}
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fhitend = DTRUE
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) > 1) {
goto __2710
}
return -2
__2710:
;
__2709:
;
goto __2707
__2708:
;
fc = Tuint32_t(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))
if !(fc >= 0xc0) {
goto __2711
}
if !(fc&0x20 == Tuint32_t(0)) {
goto __2712
}
fc = fc&0x1f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f
len19++
goto __2713
__2712:
if !(fc&0x10 == Tuint32_t(0)) {
goto __2714
}
fc = fc&0x0f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f
len19 = len19 + 2
goto __2715
__2714:
if !(fc&0x08 == Tuint32_t(0)) {
goto __2716
}
fc = fc&0x07<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 3)))&0x3f
len19 = len19 + 3
goto __2717
__2716:
if !(fc&0x04 == Tuint32_t(0)) {
goto __2718
}
fc = fc&0x03<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 3)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 4)))&0x3f
len19 = len19 + 4
goto __2719
__2718:
fc = fc&0x01<<30 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 3)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 4)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 5)))&0x3f
len19 = len19 + 5
__2719:
;
__2717:
;
__2715:
;
__2713:
;
__2711:
;
switch fc {
case Tuint32_t('\012'):
goto __2721
case Tuint32_t('\013'):
goto __2722
case Tuint32_t('\014'):
goto __2723
case Tuint32_t('\015'):
goto __2724
case libc.Uint32FromUint8(libc.Uint8FromInt32(133)):
goto __2725
case Tuint32_t(0x2028):
goto __2726 /* LINE SEPARATOR */
case Tuint32_t(0x2029):
goto __2727
default:
goto __2728
}
goto __2720
__2721:
__2722:
__2723:
__2724:
__2725:
__2726: /* LINE SEPARATOR */
__2727:
gotspace1 = DTRUE
goto __2720
__2728:
gotspace1 = DFALSE
goto __2720
__2720:
;
if !(gotspace1 == libc.Bool32(*(*Tuint32_t)(unsafe.Pointer(F + 56 + 2*4)) == OP_NOT_VSPACE)) {
goto __2729
}
goto __2707
__2729:
;
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += TPCRE2_SPTR8(len19)
goto __2706
__2706:
i++
goto __2705
goto __2707
__2707:
;
goto __2605
__2614:
i = *(*Tuint32_t)(unsafe.Pointer(F + 56))
__2730:
if !(i < *(*Tuint32_t)(unsafe.Pointer(F + 56 + 1*4))) {
goto __2732
}
len20 = 1
if !((*Theapframe)(unsafe.Pointer(F)).Feptr >= (*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject) {
goto __2733
}
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) != 0 && ((*Theapframe)(unsafe.Pointer(F)).Feptr > (*Tmatch_block_8)(unsafe.Pointer(mb)).Fstart_used_ptr || (*Tmatch_block_8)(unsafe.Pointer(mb)).Fallowemptypartial != 0)) {
goto __2734
}
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fhitend = DTRUE
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) > 1) {
goto __2735
}
return -2
__2735:
;
__2734:
;
goto __2732
__2733:
;
fc = Tuint32_t(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))
if !(fc >= 0xc0) {
goto __2736
}
if !(fc&0x20 == Tuint32_t(0)) {
goto __2737
}
fc = fc&0x1f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f
len20++
goto __2738
__2737:
if !(fc&0x10 == Tuint32_t(0)) {
goto __2739
}
fc = fc&0x0f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f
len20 = len20 + 2
goto __2740
__2739:
if !(fc&0x08 == Tuint32_t(0)) {
goto __2741
}
fc = fc&0x07<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 3)))&0x3f
len20 = len20 + 3
goto __2742
__2741:
if !(fc&0x04 == Tuint32_t(0)) {
goto __2743
}
fc = fc&0x03<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 3)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 4)))&0x3f
len20 = len20 + 4
goto __2744
__2743:
fc = fc&0x01<<30 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 3)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 4)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 5)))&0x3f
len20 = len20 + 5
__2744:
;
__2742:
;
__2740:
;
__2738:
;
__2736:
;
if !(fc < Tuint32_t(256) && int32(*(*Tuint8_t)(unsafe.Pointer((*Tmatch_block_8)(unsafe.Pointer(mb)).Fctypes + uintptr(fc))))&Dctype_digit != 0) {
goto __2745
}
goto __2732
__2745:
;
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += TPCRE2_SPTR8(len20)
goto __2731
__2731:
i++
goto __2730
goto __2732
__2732:
;
goto __2605
__2615:
i = *(*Tuint32_t)(unsafe.Pointer(F + 56))
__2746:
if !(i < *(*Tuint32_t)(unsafe.Pointer(F + 56 + 1*4))) {
goto __2748
}
len21 = 1
if !((*Theapframe)(unsafe.Pointer(F)).Feptr >= (*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject) {
goto __2749
}
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) != 0 && ((*Theapframe)(unsafe.Pointer(F)).Feptr > (*Tmatch_block_8)(unsafe.Pointer(mb)).Fstart_used_ptr || (*Tmatch_block_8)(unsafe.Pointer(mb)).Fallowemptypartial != 0)) {
goto __2750
}
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fhitend = DTRUE
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) > 1) {
goto __2751
}
return -2
__2751:
;
__2750:
;
goto __2748
__2749:
;
fc = Tuint32_t(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))
if !(fc >= 0xc0) {
goto __2752
}
if !(fc&0x20 == Tuint32_t(0)) {
goto __2753
}
fc = fc&0x1f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f
len21++
goto __2754
__2753:
if !(fc&0x10 == Tuint32_t(0)) {
goto __2755
}
fc = fc&0x0f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f
len21 = len21 + 2
goto __2756
__2755:
if !(fc&0x08 == Tuint32_t(0)) {
goto __2757
}
fc = fc&0x07<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 3)))&0x3f
len21 = len21 + 3
goto __2758
__2757:
if !(fc&0x04 == Tuint32_t(0)) {
goto __2759
}
fc = fc&0x03<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 3)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 4)))&0x3f
len21 = len21 + 4
goto __2760
__2759:
fc = fc&0x01<<30 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 3)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 4)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 5)))&0x3f
len21 = len21 + 5
__2760:
;
__2758:
;
__2756:
;
__2754:
;
__2752:
;
if !(fc >= Tuint32_t(256) || int32(*(*Tuint8_t)(unsafe.Pointer((*Tmatch_block_8)(unsafe.Pointer(mb)).Fctypes + uintptr(fc))))&Dctype_digit == 0) {
goto __2761
}
goto __2748
__2761:
;
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += TPCRE2_SPTR8(len21)
goto __2747
__2747:
i++
goto __2746
goto __2748
__2748:
;
goto __2605
__2616:
i = *(*Tuint32_t)(unsafe.Pointer(F + 56))
__2762:
if !(i < *(*Tuint32_t)(unsafe.Pointer(F + 56 + 1*4))) {
goto __2764
}
len22 = 1
if !((*Theapframe)(unsafe.Pointer(F)).Feptr >= (*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject) {
goto __2765
}
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) != 0 && ((*Theapframe)(unsafe.Pointer(F)).Feptr > (*Tmatch_block_8)(unsafe.Pointer(mb)).Fstart_used_ptr || (*Tmatch_block_8)(unsafe.Pointer(mb)).Fallowemptypartial != 0)) {
goto __2766
}
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fhitend = DTRUE
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) > 1) {
goto __2767
}
return -2
__2767:
;
__2766:
;
goto __2764
__2765:
;
fc = Tuint32_t(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))
if !(fc >= 0xc0) {
goto __2768
}
if !(fc&0x20 == Tuint32_t(0)) {
goto __2769
}
fc = fc&0x1f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f
len22++
goto __2770
__2769:
if !(fc&0x10 == Tuint32_t(0)) {
goto __2771
}
fc = fc&0x0f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f
len22 = len22 + 2
goto __2772
__2771:
if !(fc&0x08 == Tuint32_t(0)) {
goto __2773
}
fc = fc&0x07<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 3)))&0x3f
len22 = len22 + 3
goto __2774
__2773:
if !(fc&0x04 == Tuint32_t(0)) {
goto __2775
}
fc = fc&0x03<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 3)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 4)))&0x3f
len22 = len22 + 4
goto __2776
__2775:
fc = fc&0x01<<30 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 3)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 4)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 5)))&0x3f
len22 = len22 + 5
__2776:
;
__2774:
;
__2772:
;
__2770:
;
__2768:
;
if !(fc < Tuint32_t(256) && int32(*(*Tuint8_t)(unsafe.Pointer((*Tmatch_block_8)(unsafe.Pointer(mb)).Fctypes + uintptr(fc))))&Dctype_space != 0) {
goto __2777
}
goto __2764
__2777:
;
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += TPCRE2_SPTR8(len22)
goto __2763
__2763:
i++
goto __2762
goto __2764
__2764:
;
goto __2605
__2617:
i = *(*Tuint32_t)(unsafe.Pointer(F + 56))
__2778:
if !(i < *(*Tuint32_t)(unsafe.Pointer(F + 56 + 1*4))) {
goto __2780
}
len23 = 1
if !((*Theapframe)(unsafe.Pointer(F)).Feptr >= (*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject) {
goto __2781
}
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) != 0 && ((*Theapframe)(unsafe.Pointer(F)).Feptr > (*Tmatch_block_8)(unsafe.Pointer(mb)).Fstart_used_ptr || (*Tmatch_block_8)(unsafe.Pointer(mb)).Fallowemptypartial != 0)) {
goto __2782
}
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fhitend = DTRUE
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) > 1) {
goto __2783
}
return -2
__2783:
;
__2782:
;
goto __2780
__2781:
;
fc = Tuint32_t(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))
if !(fc >= 0xc0) {
goto __2784
}
if !(fc&0x20 == Tuint32_t(0)) {
goto __2785
}
fc = fc&0x1f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f
len23++
goto __2786
__2785:
if !(fc&0x10 == Tuint32_t(0)) {
goto __2787
}
fc = fc&0x0f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f
len23 = len23 + 2
goto __2788
__2787:
if !(fc&0x08 == Tuint32_t(0)) {
goto __2789
}
fc = fc&0x07<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 3)))&0x3f
len23 = len23 + 3
goto __2790
__2789:
if !(fc&0x04 == Tuint32_t(0)) {
goto __2791
}
fc = fc&0x03<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 3)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 4)))&0x3f
len23 = len23 + 4
goto __2792
__2791:
fc = fc&0x01<<30 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 3)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 4)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 5)))&0x3f
len23 = len23 + 5
__2792:
;
__2790:
;
__2788:
;
__2786:
;
__2784:
;
if !(fc >= Tuint32_t(256) || int32(*(*Tuint8_t)(unsafe.Pointer((*Tmatch_block_8)(unsafe.Pointer(mb)).Fctypes + uintptr(fc))))&Dctype_space == 0) {
goto __2793
}
goto __2780
__2793:
;
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += TPCRE2_SPTR8(len23)
goto __2779
__2779:
i++
goto __2778
goto __2780
__2780:
;
goto __2605
__2618:
i = *(*Tuint32_t)(unsafe.Pointer(F + 56))
__2794:
if !(i < *(*Tuint32_t)(unsafe.Pointer(F + 56 + 1*4))) {
goto __2796
}
len24 = 1
if !((*Theapframe)(unsafe.Pointer(F)).Feptr >= (*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject) {
goto __2797
}
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) != 0 && ((*Theapframe)(unsafe.Pointer(F)).Feptr > (*Tmatch_block_8)(unsafe.Pointer(mb)).Fstart_used_ptr || (*Tmatch_block_8)(unsafe.Pointer(mb)).Fallowemptypartial != 0)) {
goto __2798
}
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fhitend = DTRUE
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) > 1) {
goto __2799
}
return -2
__2799:
;
__2798:
;
goto __2796
__2797:
;
fc = Tuint32_t(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))
if !(fc >= 0xc0) {
goto __2800
}
if !(fc&0x20 == Tuint32_t(0)) {
goto __2801
}
fc = fc&0x1f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f
len24++
goto __2802
__2801:
if !(fc&0x10 == Tuint32_t(0)) {
goto __2803
}
fc = fc&0x0f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f
len24 = len24 + 2
goto __2804
__2803:
if !(fc&0x08 == Tuint32_t(0)) {
goto __2805
}
fc = fc&0x07<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 3)))&0x3f
len24 = len24 + 3
goto __2806
__2805:
if !(fc&0x04 == Tuint32_t(0)) {
goto __2807
}
fc = fc&0x03<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 3)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 4)))&0x3f
len24 = len24 + 4
goto __2808
__2807:
fc = fc&0x01<<30 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 3)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 4)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 5)))&0x3f
len24 = len24 + 5
__2808:
;
__2806:
;
__2804:
;
__2802:
;
__2800:
;
if !(fc < Tuint32_t(256) && int32(*(*Tuint8_t)(unsafe.Pointer((*Tmatch_block_8)(unsafe.Pointer(mb)).Fctypes + uintptr(fc))))&Dctype_word != 0) {
goto __2809
}
goto __2796
__2809:
;
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += TPCRE2_SPTR8(len24)
goto __2795
__2795:
i++
goto __2794
goto __2796
__2796:
;
goto __2605
__2619:
i = *(*Tuint32_t)(unsafe.Pointer(F + 56))
__2810:
if !(i < *(*Tuint32_t)(unsafe.Pointer(F + 56 + 1*4))) {
goto __2812
}
len25 = 1
if !((*Theapframe)(unsafe.Pointer(F)).Feptr >= (*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject) {
goto __2813
}
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) != 0 && ((*Theapframe)(unsafe.Pointer(F)).Feptr > (*Tmatch_block_8)(unsafe.Pointer(mb)).Fstart_used_ptr || (*Tmatch_block_8)(unsafe.Pointer(mb)).Fallowemptypartial != 0)) {
goto __2814
}
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fhitend = DTRUE
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) > 1) {
goto __2815
}
return -2
__2815:
;
__2814:
;
goto __2812
__2813:
;
fc = Tuint32_t(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))
if !(fc >= 0xc0) {
goto __2816
}
if !(fc&0x20 == Tuint32_t(0)) {
goto __2817
}
fc = fc&0x1f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f
len25++
goto __2818
__2817:
if !(fc&0x10 == Tuint32_t(0)) {
goto __2819
}
fc = fc&0x0f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f
len25 = len25 + 2
goto __2820
__2819:
if !(fc&0x08 == Tuint32_t(0)) {
goto __2821
}
fc = fc&0x07<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 3)))&0x3f
len25 = len25 + 3
goto __2822
__2821:
if !(fc&0x04 == Tuint32_t(0)) {
goto __2823
}
fc = fc&0x03<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 3)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 4)))&0x3f
len25 = len25 + 4
goto __2824
__2823:
fc = fc&0x01<<30 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 3)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 4)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 5)))&0x3f
len25 = len25 + 5
__2824:
;
__2822:
;
__2820:
;
__2818:
;
__2816:
;
if !(fc >= Tuint32_t(256) || int32(*(*Tuint8_t)(unsafe.Pointer((*Tmatch_block_8)(unsafe.Pointer(mb)).Fctypes + uintptr(fc))))&Dctype_word == 0) {
goto __2825
}
goto __2812
__2825:
;
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += TPCRE2_SPTR8(len25)
goto __2811
__2811:
i++
goto __2810
goto __2812
__2812:
;
goto __2605
__2620:
return -44
__2605:
;
if !(reptype == REPTYPE_POS) {
goto __2826
}
goto __11
__2826:
; // No backtracking
// After \C in UTF mode, Lstart_eptr might be in the middle of a
// Unicode character. Use <= Lstart_eptr to ensure backtracking doesn't go
// too far.
__2827:
if !((*Theapframe)(unsafe.Pointer(F)).Feptr <= *(*TPCRE2_SPTR8)(unsafe.Pointer(F + 8))) {
goto __2830
}
goto __2829
__2830:
;
start_ecode = (*Theapframe)(unsafe.Pointer(F)).Fecode
(*Theapframe)(unsafe.Pointer(F)).Freturn_id = RM221
goto MATCH_RECURSE
L_RM221:
;
if !(rrc != DMATCH_NOMATCH) {
goto __2831
}
rrc = rrc
goto RETURN_SWITCH
__2831:
;
(*Theapframe)(unsafe.Pointer(F)).Feptr--
__2832:
if !(uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0xc0 == 0x80) {
goto __2833
}
(*Theapframe)(unsafe.Pointer(F)).Feptr--
goto __2832
__2833:
;
if !(*(*Tuint32_t)(unsafe.Pointer(F + 56 + 2*4)) == OP_ANYNL && (*Theapframe)(unsafe.Pointer(F)).Feptr > *(*TPCRE2_SPTR8)(unsafe.Pointer(F + 8)) && int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr))) == '\012' && int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr - uintptr(1)))) == '\015') {
goto __2834
}
(*Theapframe)(unsafe.Pointer(F)).Feptr--
__2834:
;
goto __2828
__2828:
goto __2827
goto __2829
__2829:
;
goto __2604
__2603:
/* Not UTF mode */
switch *(*Tuint32_t)(unsafe.Pointer(F + 56 + 2*4)) {
case OP_ANY:
goto __2836
case OP_ALLANY:
goto __2837
case OP_ANYBYTE:
goto __2838
case OP_ANYNL:
goto __2839
case OP_NOT_HSPACE:
goto __2840
case OP_HSPACE:
goto __2841
case OP_NOT_VSPACE:
goto __2842
case OP_VSPACE:
goto __2843
case OP_NOT_DIGIT:
goto __2844
case OP_DIGIT:
goto __2845
case OP_NOT_WHITESPACE:
goto __2846
case OP_WHITESPACE:
goto __2847
case OP_NOT_WORDCHAR:
goto __2848
case OP_WORDCHAR:
goto __2849
default:
goto __2850
}
goto __2835
__2836:
i = *(*Tuint32_t)(unsafe.Pointer(F + 56))
__2851:
if !(i < *(*Tuint32_t)(unsafe.Pointer(F + 56 + 1*4))) {
goto __2853
}
if !((*Theapframe)(unsafe.Pointer(F)).Feptr >= (*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject) {
goto __2854
}
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) != 0 && ((*Theapframe)(unsafe.Pointer(F)).Feptr > (*Tmatch_block_8)(unsafe.Pointer(mb)).Fstart_used_ptr || (*Tmatch_block_8)(unsafe.Pointer(mb)).Fallowemptypartial != 0)) {
goto __2855
}
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fhitend = DTRUE
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) > 1) {
goto __2856
}
return -2
__2856:
;
__2855:
;
goto __2853
__2854:
;
if !(func() int32 {
if (*Tmatch_block_8)(unsafe.Pointer(mb)).Fnltype != Tuint32_t(DNLTYPE_FIXED) {
return libc.Bool32((*Theapframe)(unsafe.Pointer(F)).Feptr < (*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject && X_pcre2_is_newline_8(tls, (*Theapframe)(unsafe.Pointer(F)).Feptr, (*Tmatch_block_8)(unsafe.Pointer(mb)).Fnltype, (*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject, mb+256, utf) != 0)
}
return libc.Bool32((*Theapframe)(unsafe.Pointer(F)).Feptr <= (*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject-uintptr((*Tmatch_block_8)(unsafe.Pointer(mb)).Fnllen) && int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr))) == int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(mb + 260))) && ((*Tmatch_block_8)(unsafe.Pointer(mb)).Fnllen == Tuint32_t(1) || int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + uintptr(1)))) == int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(mb + 260 + 1)))))
}() != 0) {
goto __2857
}
goto __2853
__2857:
;
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) != 0 && (*Theapframe)(unsafe.Pointer(F)).Feptr+uintptr(1) >= (*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject && (*Tmatch_block_8)(unsafe.Pointer(mb)).Fnltype == Tuint32_t(DNLTYPE_FIXED) && (*Tmatch_block_8)(unsafe.Pointer(mb)).Fnllen == Tuint32_t(2) && int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr))) == int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(mb + 260)))) {
goto __2858
}
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fhitend = DTRUE
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) > 1) {
goto __2859
}
return -2
__2859:
;
__2858:
;
(*Theapframe)(unsafe.Pointer(F)).Feptr++
goto __2852
__2852:
i++
goto __2851
goto __2853
__2853:
;
goto __2835
__2837:
__2838:
fc = *(*Tuint32_t)(unsafe.Pointer(F + 56 + 1*4)) - *(*Tuint32_t)(unsafe.Pointer(F + 56))
if !(fc > Tuint32_t((int64((*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject)-int64((*Theapframe)(unsafe.Pointer(F)).Feptr))/1)) {
goto __2860
}
(*Theapframe)(unsafe.Pointer(F)).Feptr = (*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) != 0 && ((*Theapframe)(unsafe.Pointer(F)).Feptr > (*Tmatch_block_8)(unsafe.Pointer(mb)).Fstart_used_ptr || (*Tmatch_block_8)(unsafe.Pointer(mb)).Fallowemptypartial != 0)) {
goto __2862
}
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fhitend = DTRUE
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) > 1) {
goto __2863
}
return -2
__2863:
;
__2862:
;
goto __2861
__2860:
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += TPCRE2_SPTR8(fc)
__2861:
;
goto __2835
__2839:
i = *(*Tuint32_t)(unsafe.Pointer(F + 56))
__2864:
if !(i < *(*Tuint32_t)(unsafe.Pointer(F + 56 + 1*4))) {
goto __2866
}
if !((*Theapframe)(unsafe.Pointer(F)).Feptr >= (*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject) {
goto __2867
}
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) != 0 && ((*Theapframe)(unsafe.Pointer(F)).Feptr > (*Tmatch_block_8)(unsafe.Pointer(mb)).Fstart_used_ptr || (*Tmatch_block_8)(unsafe.Pointer(mb)).Fallowemptypartial != 0)) {
goto __2868
}
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fhitend = DTRUE
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) > 1) {
goto __2869
}
return -2
__2869:
;
__2868:
;
goto __2866
__2867:
;
fc = Tuint32_t(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))
if !(fc == Tuint32_t('\015')) {
goto __2870
}
if !(libc.PreIncUintptr(&(*Theapframe)(unsafe.Pointer(F)).Feptr, 1) >= (*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject) {
goto __2872
}
goto __2866
__2872:
;
if !(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr))) == '\012') {
goto __2873
}
(*Theapframe)(unsafe.Pointer(F)).Feptr++
__2873:
;
goto __2871
__2870:
if !(fc != Tuint32_t('\012') && (int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fbsr_convention) == DPCRE2_BSR_ANYCRLF || fc != Tuint32_t('\013') && fc != Tuint32_t('\014') && fc != libc.Uint32FromUint8(libc.Uint8FromInt32(133)))) {
goto __2874
}
goto __2866
__2874:
;
(*Theapframe)(unsafe.Pointer(F)).Feptr++
__2871:
;
goto __2865
__2865:
i++
goto __2864
goto __2866
__2866:
;
goto __2835
__2840:
i = *(*Tuint32_t)(unsafe.Pointer(F + 56))
__2875:
if !(i < *(*Tuint32_t)(unsafe.Pointer(F + 56 + 1*4))) {
goto __2877
}
if !((*Theapframe)(unsafe.Pointer(F)).Feptr >= (*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject) {
goto __2878
}
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) != 0 && ((*Theapframe)(unsafe.Pointer(F)).Feptr > (*Tmatch_block_8)(unsafe.Pointer(mb)).Fstart_used_ptr || (*Tmatch_block_8)(unsafe.Pointer(mb)).Fallowemptypartial != 0)) {
goto __2879
}
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fhitend = DTRUE
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) > 1) {
goto __2880
}
return -2
__2880:
;
__2879:
;
goto __2877
__2878:
;
switch int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr))) {
default:
goto __2882
case '\011':
goto __2883
case '\040':
goto __2884
case int32(libc.Uint8FromInt32(160)):
goto __2885
}
goto __2881
__2882:
(*Theapframe)(unsafe.Pointer(F)).Feptr++
goto __2881
__2883:
__2884:
__2885:
goto ENDLOOP00
__2881:
;
goto __2876
__2876:
i++
goto __2875
goto __2877
__2877:
;
ENDLOOP00:
goto __2835
__2841:
i = *(*Tuint32_t)(unsafe.Pointer(F + 56))
__2886:
if !(i < *(*Tuint32_t)(unsafe.Pointer(F + 56 + 1*4))) {
goto __2888
}
if !((*Theapframe)(unsafe.Pointer(F)).Feptr >= (*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject) {
goto __2889
}
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) != 0 && ((*Theapframe)(unsafe.Pointer(F)).Feptr > (*Tmatch_block_8)(unsafe.Pointer(mb)).Fstart_used_ptr || (*Tmatch_block_8)(unsafe.Pointer(mb)).Fallowemptypartial != 0)) {
goto __2890
}
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fhitend = DTRUE
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) > 1) {
goto __2891
}
return -2
__2891:
;
__2890:
;
goto __2888
__2889:
;
switch int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr))) {
default:
goto __2893
case '\011':
goto __2894
case '\040':
goto __2895
case int32(libc.Uint8FromInt32(160)):
goto __2896
}
goto __2892
__2893:
goto ENDLOOP01
__2894:
__2895:
__2896:
(*Theapframe)(unsafe.Pointer(F)).Feptr++
goto __2892
__2892:
;
goto __2887
__2887:
i++
goto __2886
goto __2888
__2888:
;
ENDLOOP01:
goto __2835
__2842:
i = *(*Tuint32_t)(unsafe.Pointer(F + 56))
__2897:
if !(i < *(*Tuint32_t)(unsafe.Pointer(F + 56 + 1*4))) {
goto __2899
}
if !((*Theapframe)(unsafe.Pointer(F)).Feptr >= (*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject) {
goto __2900
}
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) != 0 && ((*Theapframe)(unsafe.Pointer(F)).Feptr > (*Tmatch_block_8)(unsafe.Pointer(mb)).Fstart_used_ptr || (*Tmatch_block_8)(unsafe.Pointer(mb)).Fallowemptypartial != 0)) {
goto __2901
}
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fhitend = DTRUE
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) > 1) {
goto __2902
}
return -2
__2902:
;
__2901:
;
goto __2899
__2900:
;
switch int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr))) {
default:
goto __2904
case '\012':
goto __2905
case '\013':
goto __2906
case '\014':
goto __2907
case '\015':
goto __2908
case int32(libc.Uint8FromInt32(133)):
goto __2909
}
goto __2903
__2904:
(*Theapframe)(unsafe.Pointer(F)).Feptr++
goto __2903
__2905:
__2906:
__2907:
__2908:
__2909:
goto ENDLOOP02
__2903:
;
goto __2898
__2898:
i++
goto __2897
goto __2899
__2899:
;
ENDLOOP02:
goto __2835
__2843:
i = *(*Tuint32_t)(unsafe.Pointer(F + 56))
__2910:
if !(i < *(*Tuint32_t)(unsafe.Pointer(F + 56 + 1*4))) {
goto __2912
}
if !((*Theapframe)(unsafe.Pointer(F)).Feptr >= (*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject) {
goto __2913
}
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) != 0 && ((*Theapframe)(unsafe.Pointer(F)).Feptr > (*Tmatch_block_8)(unsafe.Pointer(mb)).Fstart_used_ptr || (*Tmatch_block_8)(unsafe.Pointer(mb)).Fallowemptypartial != 0)) {
goto __2914
}
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fhitend = DTRUE
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) > 1) {
goto __2915
}
return -2
__2915:
;
__2914:
;
goto __2912
__2913:
;
switch int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr))) {
default:
goto __2917
case '\012':
goto __2918
case '\013':
goto __2919
case '\014':
goto __2920
case '\015':
goto __2921
case int32(libc.Uint8FromInt32(133)):
goto __2922
}
goto __2916
__2917:
goto ENDLOOP03
__2918:
__2919:
__2920:
__2921:
__2922:
(*Theapframe)(unsafe.Pointer(F)).Feptr++
goto __2916
__2916:
;
goto __2911
__2911:
i++
goto __2910
goto __2912
__2912:
;
ENDLOOP03:
goto __2835
__2844:
i = *(*Tuint32_t)(unsafe.Pointer(F + 56))
__2923:
if !(i < *(*Tuint32_t)(unsafe.Pointer(F + 56 + 1*4))) {
goto __2925
}
if !((*Theapframe)(unsafe.Pointer(F)).Feptr >= (*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject) {
goto __2926
}
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) != 0 && ((*Theapframe)(unsafe.Pointer(F)).Feptr > (*Tmatch_block_8)(unsafe.Pointer(mb)).Fstart_used_ptr || (*Tmatch_block_8)(unsafe.Pointer(mb)).Fallowemptypartial != 0)) {
goto __2927
}
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fhitend = DTRUE
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) > 1) {
goto __2928
}
return -2
__2928:
;
__2927:
;
goto __2925
__2926:
;
if !(1 != 0 && int32(*(*Tuint8_t)(unsafe.Pointer((*Tmatch_block_8)(unsafe.Pointer(mb)).Fctypes + uintptr(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr))))))&Dctype_digit != 0) {
goto __2929
}
goto __2925
__2929:
;
(*Theapframe)(unsafe.Pointer(F)).Feptr++
goto __2924
__2924:
i++
goto __2923
goto __2925
__2925:
;
goto __2835
__2845:
i = *(*Tuint32_t)(unsafe.Pointer(F + 56))
__2930:
if !(i < *(*Tuint32_t)(unsafe.Pointer(F + 56 + 1*4))) {
goto __2932
}
if !((*Theapframe)(unsafe.Pointer(F)).Feptr >= (*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject) {
goto __2933
}
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) != 0 && ((*Theapframe)(unsafe.Pointer(F)).Feptr > (*Tmatch_block_8)(unsafe.Pointer(mb)).Fstart_used_ptr || (*Tmatch_block_8)(unsafe.Pointer(mb)).Fallowemptypartial != 0)) {
goto __2934
}
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fhitend = DTRUE
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) > 1) {
goto __2935
}
return -2
__2935:
;
__2934:
;
goto __2932
__2933:
;
if !(!(1 != 0) || int32(*(*Tuint8_t)(unsafe.Pointer((*Tmatch_block_8)(unsafe.Pointer(mb)).Fctypes + uintptr(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr))))))&Dctype_digit == 0) {
goto __2936
}
goto __2932
__2936:
;
(*Theapframe)(unsafe.Pointer(F)).Feptr++
goto __2931
__2931:
i++
goto __2930
goto __2932
__2932:
;
goto __2835
__2846:
i = *(*Tuint32_t)(unsafe.Pointer(F + 56))
__2937:
if !(i < *(*Tuint32_t)(unsafe.Pointer(F + 56 + 1*4))) {
goto __2939
}
if !((*Theapframe)(unsafe.Pointer(F)).Feptr >= (*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject) {
goto __2940
}
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) != 0 && ((*Theapframe)(unsafe.Pointer(F)).Feptr > (*Tmatch_block_8)(unsafe.Pointer(mb)).Fstart_used_ptr || (*Tmatch_block_8)(unsafe.Pointer(mb)).Fallowemptypartial != 0)) {
goto __2941
}
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fhitend = DTRUE
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) > 1) {
goto __2942
}
return -2
__2942:
;
__2941:
;
goto __2939
__2940:
;
if !(1 != 0 && int32(*(*Tuint8_t)(unsafe.Pointer((*Tmatch_block_8)(unsafe.Pointer(mb)).Fctypes + uintptr(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr))))))&Dctype_space != 0) {
goto __2943
}
goto __2939
__2943:
;
(*Theapframe)(unsafe.Pointer(F)).Feptr++
goto __2938
__2938:
i++
goto __2937
goto __2939
__2939:
;
goto __2835
__2847:
i = *(*Tuint32_t)(unsafe.Pointer(F + 56))
__2944:
if !(i < *(*Tuint32_t)(unsafe.Pointer(F + 56 + 1*4))) {
goto __2946
}
if !((*Theapframe)(unsafe.Pointer(F)).Feptr >= (*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject) {
goto __2947
}
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) != 0 && ((*Theapframe)(unsafe.Pointer(F)).Feptr > (*Tmatch_block_8)(unsafe.Pointer(mb)).Fstart_used_ptr || (*Tmatch_block_8)(unsafe.Pointer(mb)).Fallowemptypartial != 0)) {
goto __2948
}
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fhitend = DTRUE
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) > 1) {
goto __2949
}
return -2
__2949:
;
__2948:
;
goto __2946
__2947:
;
if !(!(1 != 0) || int32(*(*Tuint8_t)(unsafe.Pointer((*Tmatch_block_8)(unsafe.Pointer(mb)).Fctypes + uintptr(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr))))))&Dctype_space == 0) {
goto __2950
}
goto __2946
__2950:
;
(*Theapframe)(unsafe.Pointer(F)).Feptr++
goto __2945
__2945:
i++
goto __2944
goto __2946
__2946:
;
goto __2835
__2848:
i = *(*Tuint32_t)(unsafe.Pointer(F + 56))
__2951:
if !(i < *(*Tuint32_t)(unsafe.Pointer(F + 56 + 1*4))) {
goto __2953
}
if !((*Theapframe)(unsafe.Pointer(F)).Feptr >= (*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject) {
goto __2954
}
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) != 0 && ((*Theapframe)(unsafe.Pointer(F)).Feptr > (*Tmatch_block_8)(unsafe.Pointer(mb)).Fstart_used_ptr || (*Tmatch_block_8)(unsafe.Pointer(mb)).Fallowemptypartial != 0)) {
goto __2955
}
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fhitend = DTRUE
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) > 1) {
goto __2956
}
return -2
__2956:
;
__2955:
;
goto __2953
__2954:
;
if !(1 != 0 && int32(*(*Tuint8_t)(unsafe.Pointer((*Tmatch_block_8)(unsafe.Pointer(mb)).Fctypes + uintptr(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr))))))&Dctype_word != 0) {
goto __2957
}
goto __2953
__2957:
;
(*Theapframe)(unsafe.Pointer(F)).Feptr++
goto __2952
__2952:
i++
goto __2951
goto __2953
__2953:
;
goto __2835
__2849:
i = *(*Tuint32_t)(unsafe.Pointer(F + 56))
__2958:
if !(i < *(*Tuint32_t)(unsafe.Pointer(F + 56 + 1*4))) {
goto __2960
}
if !((*Theapframe)(unsafe.Pointer(F)).Feptr >= (*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject) {
goto __2961
}
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) != 0 && ((*Theapframe)(unsafe.Pointer(F)).Feptr > (*Tmatch_block_8)(unsafe.Pointer(mb)).Fstart_used_ptr || (*Tmatch_block_8)(unsafe.Pointer(mb)).Fallowemptypartial != 0)) {
goto __2962
}
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fhitend = DTRUE
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) > 1) {
goto __2963
}
return -2
__2963:
;
__2962:
;
goto __2960
__2961:
;
if !(!(1 != 0) || int32(*(*Tuint8_t)(unsafe.Pointer((*Tmatch_block_8)(unsafe.Pointer(mb)).Fctypes + uintptr(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr))))))&Dctype_word == 0) {
goto __2964
}
goto __2960
__2964:
;
(*Theapframe)(unsafe.Pointer(F)).Feptr++
goto __2959
__2959:
i++
goto __2958
goto __2960
__2960:
;
goto __2835
__2850:
return -44
__2835:
;
if !(reptype == REPTYPE_POS) {
goto __2965
}
goto __11
__2965:
; // No backtracking
__2966:
if !((*Theapframe)(unsafe.Pointer(F)).Feptr == *(*TPCRE2_SPTR8)(unsafe.Pointer(F + 8))) {
goto __2969
}
goto __2968
__2969:
;
start_ecode = (*Theapframe)(unsafe.Pointer(F)).Fecode
(*Theapframe)(unsafe.Pointer(F)).Freturn_id = RM34
goto MATCH_RECURSE
L_RM34:
;
if !(rrc != DMATCH_NOMATCH) {
goto __2970
}
rrc = rrc
goto RETURN_SWITCH
__2970:
;
(*Theapframe)(unsafe.Pointer(F)).Feptr--
if !(*(*Tuint32_t)(unsafe.Pointer(F + 56 + 2*4)) == OP_ANYNL && (*Theapframe)(unsafe.Pointer(F)).Feptr > *(*TPCRE2_SPTR8)(unsafe.Pointer(F + 8)) && int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr))) == '\012' && int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + libc.UintptrFromInt32(-1)))) == '\015') {
goto __2971
}
(*Theapframe)(unsafe.Pointer(F)).Feptr--
__2971:
;
goto __2967
__2967:
goto __2966
goto __2968
__2968:
;
__2604:
;
__2546:
;
__2274:
;
__1781:
;
goto __13 // End of repeat character type processing
// =====================================================================
// Match a back reference, possibly repeatedly. Look past the end of the
// item to see if there is repeat information following. The OP_REF and
// OP_REFI opcodes are used for a reference to a numbered group or to a
// non-duplicated named group. For a duplicated named group, OP_DNREF and
// OP_DNREFI are used. In this case we must scan the list of groups to which
// the name refers, and use the first one that is set.
__107:
__108:
*(*Tuint32_t)(unsafe.Pointer(F + 56 + 2*4)) = Tuint32_t(libc.Bool32(int32((*Theapframe)(unsafe.Pointer(F)).Fop) == OP_DNREFI))
count = int32(uint32(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode + 3)))<<8 | int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode + 4)))))
slot = (*Tmatch_block_8)(unsafe.Pointer(mb)).Fname_table + uintptr(uint32(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode + 1)))<<8|int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode + 2))))*uint32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fname_entry_size))
*(*TPCRE2_SPTR8)(unsafe.Pointer(F)) += TPCRE2_SPTR8(1 + 2*DIMM2_SIZE)
__2972:
if !(libc.PostDecInt32(&count, 1) > 0) {
goto __2973
}
(*Theapframe)(unsafe.Pointer(F)).Ftemp_size = Tsize_t(uint32(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(slot)))<<8|int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(slot + 1))))<<1 - uint32(2))
if !((*Theapframe)(unsafe.Pointer(F)).Ftemp_size < (*Theapframe)(unsafe.Pointer(F)).Foffset_top && *(*Tsize_t)(unsafe.Pointer(F + 128 + uintptr((*Theapframe)(unsafe.Pointer(F)).Ftemp_size)*8)) != libc.CplUint64(uint64(0))) {
goto __2974
}
goto __2973
__2974:
;
slot += TPCRE2_SPTR8((*Tmatch_block_8)(unsafe.Pointer(mb)).Fname_entry_size)
goto __2972
__2973:
;
goto REF_REPEAT
__109:
__110:
*(*Tuint32_t)(unsafe.Pointer(F + 56 + 2*4)) = Tuint32_t(libc.Bool32(int32((*Theapframe)(unsafe.Pointer(F)).Fop) == OP_REFI))
(*Theapframe)(unsafe.Pointer(F)).Ftemp_size = Tsize_t(uint32(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode + 1)))<<8|int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode + 2))))<<1 - uint32(2))
*(*TPCRE2_SPTR8)(unsafe.Pointer(F)) += TPCRE2_SPTR8(1 + DIMM2_SIZE)
// Set up for repetition, or handle the non-repeated case. The maximum and
// minimum must be in the heap frame, but as they are short-term values, we
// use temporary fields.
REF_REPEAT:
switch int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode))) {
case OP_CRSTAR:
goto __2976
case OP_CRMINSTAR:
goto __2977
case OP_CRPLUS:
goto __2978
case OP_CRMINPLUS:
goto __2979
case OP_CRQUERY:
goto __2980
case OP_CRMINQUERY:
goto __2981
case OP_CRRANGE:
goto __2982
case OP_CRMINRANGE:
goto __2983
default:
goto __2984
}
goto __2975
__2976:
__2977:
__2978:
__2979:
__2980:
__2981:
fc = Tuint32_t(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&(*Theapframe)(unsafe.Pointer(F)).Fecode, 1)))) - OP_CRSTAR)
*(*Tuint32_t)(unsafe.Pointer(F + 56)) = rep_min[fc]
*(*Tuint32_t)(unsafe.Pointer(F + 56 + 1*4)) = rep_max[fc]
reptype = rep_typ[fc]
goto __2975
__2982:
__2983:
*(*Tuint32_t)(unsafe.Pointer(F + 56)) = uint32(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode + 1)))<<8 | int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode + 2))))
*(*Tuint32_t)(unsafe.Pointer(F + 56 + 1*4)) = uint32(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode + 3)))<<8 | int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode + 4))))
reptype = rep_typ[int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode)))-OP_CRSTAR]
if !(*(*Tuint32_t)(unsafe.Pointer(F + 56 + 1*4)) == Tuint32_t(0)) {
goto __2985
}
*(*Tuint32_t)(unsafe.Pointer(F + 56 + 1*4)) = 4294967295
__2985:
; // Max 0 => infinity
*(*TPCRE2_SPTR8)(unsafe.Pointer(F)) += TPCRE2_SPTR8(1 + 2*DIMM2_SIZE)
goto __2975
__2984: /* No repeat follows */
rrc = match_ref(tls, (*Theapframe)(unsafe.Pointer(F)).Ftemp_size, int32(*(*Tuint32_t)(unsafe.Pointer(F + 56 + 2*4))), F, mb, bp)
if !(rrc != 0) {
goto __2986
}
if !(rrc > 0) {
goto __2987
}
(*Theapframe)(unsafe.Pointer(F)).Feptr = (*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject
__2987:
; // Partial match
if !((*Theapframe)(unsafe.Pointer(F)).Feptr >= (*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject) {
goto __2988
}
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) != 0 && ((*Theapframe)(unsafe.Pointer(F)).Feptr > (*Tmatch_block_8)(unsafe.Pointer(mb)).Fstart_used_ptr || (*Tmatch_block_8)(unsafe.Pointer(mb)).Fallowemptypartial != 0)) {
goto __2989
}
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fhitend = DTRUE
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) > 1) {
goto __2990
}
return -2
__2990:
;
__2989:
;
__2988:
;
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__2986:
;
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += TPCRE2_SPTR8(*(*Tsize_t)(unsafe.Pointer(bp)))
goto __11 // With the main loop
__2975:
;
// Handle repeated back references. If a set group has length zero, just
// continue with the main loop, because it matches however many times. For an
// unset reference, if the minimum is zero, we can also just continue. We can
// also continue if PCRE2_MATCH_UNSET_BACKREF is set, because this makes unset
// group behave as a zero-length group. For any other unset cases, carrying
// on will result in NOMATCH.
if !((*Theapframe)(unsafe.Pointer(F)).Ftemp_size < (*Theapframe)(unsafe.Pointer(F)).Foffset_top && *(*Tsize_t)(unsafe.Pointer(F + 128 + uintptr((*Theapframe)(unsafe.Pointer(F)).Ftemp_size)*8)) != libc.CplUint64(uint64(0))) {
goto __2991
}
if !(*(*Tsize_t)(unsafe.Pointer(F + 128 + uintptr((*Theapframe)(unsafe.Pointer(F)).Ftemp_size)*8)) == *(*Tsize_t)(unsafe.Pointer(F + 128 + uintptr((*Theapframe)(unsafe.Pointer(F)).Ftemp_size+uint64(1))*8))) {
goto __2993
}
goto __11
__2993:
;
goto __2992
__2991: /* Group is not set */
if !(*(*Tuint32_t)(unsafe.Pointer(F + 56)) == Tuint32_t(0) || (*Tmatch_block_8)(unsafe.Pointer(mb)).Fpoptions&DPCRE2_MATCH_UNSET_BACKREF != Tuint32_t(0)) {
goto __2994
}
goto __11
__2994:
;
__2992:
;
// First, ensure the minimum number of matches are present.
i = Tuint32_t(1)
__2995:
if !(i <= *(*Tuint32_t)(unsafe.Pointer(F + 56))) {
goto __2997
}
rrc = match_ref(tls, (*Theapframe)(unsafe.Pointer(F)).Ftemp_size, int32(*(*Tuint32_t)(unsafe.Pointer(F + 56 + 2*4))), F, mb, bp+8)
if !(rrc != 0) {
goto __2998
}
if !(rrc > 0) {
goto __2999
}
(*Theapframe)(unsafe.Pointer(F)).Feptr = (*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject
__2999:
; // Partial match
if !((*Theapframe)(unsafe.Pointer(F)).Feptr >= (*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject) {
goto __3000
}
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) != 0 && ((*Theapframe)(unsafe.Pointer(F)).Feptr > (*Tmatch_block_8)(unsafe.Pointer(mb)).Fstart_used_ptr || (*Tmatch_block_8)(unsafe.Pointer(mb)).Fallowemptypartial != 0)) {
goto __3001
}
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fhitend = DTRUE
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) > 1) {
goto __3002
}
return -2
__3002:
;
__3001:
;
__3000:
;
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__2998:
;
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += TPCRE2_SPTR8(*(*Tsize_t)(unsafe.Pointer(bp + 8)))
goto __2996
__2996:
i++
goto __2995
goto __2997
__2997:
;
// If min = max, we are done. They are not both allowed to be zero.
if !(*(*Tuint32_t)(unsafe.Pointer(F + 56)) == *(*Tuint32_t)(unsafe.Pointer(F + 56 + 1*4))) {
goto __3003
}
goto __11
__3003:
;
// If minimizing, keep trying and advancing the pointer.
if !(reptype == REPTYPE_MIN) {
goto __3004
}
__3006:
start_ecode = (*Theapframe)(unsafe.Pointer(F)).Fecode
(*Theapframe)(unsafe.Pointer(F)).Freturn_id = RM20
goto MATCH_RECURSE
L_RM20:
;
if !(rrc != DMATCH_NOMATCH) {
goto __3009
}
rrc = rrc
goto RETURN_SWITCH
__3009:
;
if !(libc.PostIncUint32(&*(*Tuint32_t)(unsafe.Pointer(F + 56)), 1) >= *(*Tuint32_t)(unsafe.Pointer(F + 56 + 1*4))) {
goto __3010
}
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__3010:
;
rrc = match_ref(tls, (*Theapframe)(unsafe.Pointer(F)).Ftemp_size, int32(*(*Tuint32_t)(unsafe.Pointer(F + 56 + 2*4))), F, mb, bp+16)
if !(rrc != 0) {
goto __3011
}
if !(rrc > 0) {
goto __3012
}
(*Theapframe)(unsafe.Pointer(F)).Feptr = (*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject
__3012:
; // Partial match
if !((*Theapframe)(unsafe.Pointer(F)).Feptr >= (*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject) {
goto __3013
}
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) != 0 && ((*Theapframe)(unsafe.Pointer(F)).Feptr > (*Tmatch_block_8)(unsafe.Pointer(mb)).Fstart_used_ptr || (*Tmatch_block_8)(unsafe.Pointer(mb)).Fallowemptypartial != 0)) {
goto __3014
}
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fhitend = DTRUE
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) > 1) {
goto __3015
}
return -2
__3015:
;
__3014:
;
__3013:
;
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__3011:
;
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += TPCRE2_SPTR8(*(*Tsize_t)(unsafe.Pointer(bp + 16)))
goto __3007
__3007:
goto __3006
goto __3008
__3008:
;
// Control never gets here
goto __3005
__3004:
samelengths = DTRUE
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 8)) = (*Theapframe)(unsafe.Pointer(F)).Feptr // Starting position
(*Theapframe)(unsafe.Pointer(F)).Flength = *(*Tsize_t)(unsafe.Pointer(F + 128 + uintptr((*Theapframe)(unsafe.Pointer(F)).Ftemp_size+uint64(1))*8)) - *(*Tsize_t)(unsafe.Pointer(F + 128 + uintptr((*Theapframe)(unsafe.Pointer(F)).Ftemp_size)*8))
i = *(*Tuint32_t)(unsafe.Pointer(F + 56))
__3016:
if !(i < *(*Tuint32_t)(unsafe.Pointer(F + 56 + 1*4))) {
goto __3018
}
rrc = match_ref(tls, (*Theapframe)(unsafe.Pointer(F)).Ftemp_size, int32(*(*Tuint32_t)(unsafe.Pointer(F + 56 + 2*4))), F, mb, bp+24)
if !(rrc != 0) {
goto __3019
}
// Can't use CHECK_PARTIAL because we don't want to update Feptr in
// the soft partial matching case.
if !(rrc > 0 && int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) != 0 && (*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject > (*Tmatch_block_8)(unsafe.Pointer(mb)).Fstart_used_ptr) {
goto __3020
}
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fhitend = DTRUE
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) > 1) {
goto __3021
}
return -2
__3021:
;
__3020:
;
goto __3018
__3019:
;
if !(*(*Tsize_t)(unsafe.Pointer(bp + 24)) != (*Theapframe)(unsafe.Pointer(F)).Flength) {
goto __3022
}
samelengths = DFALSE
__3022:
;
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += TPCRE2_SPTR8(*(*Tsize_t)(unsafe.Pointer(bp + 24)))
goto __3017
__3017:
i++
goto __3016
goto __3018
__3018:
;
// If the length matched for each repetition is the same as the length of
// the captured group, we can easily work backwards. This is the normal
// case. However, in caseless UTF-8 mode there are pairs of case-equivalent
// characters whose lengths (in terms of code units) differ. However, this
// is very rare, so we handle it by re-matching fewer and fewer times.
if !(samelengths != 0) {
goto __3023
}
__3025:
if !((*Theapframe)(unsafe.Pointer(F)).Feptr >= *(*TPCRE2_SPTR8)(unsafe.Pointer(F + 8))) {
goto __3026
}
start_ecode = (*Theapframe)(unsafe.Pointer(F)).Fecode
(*Theapframe)(unsafe.Pointer(F)).Freturn_id = RM21
goto MATCH_RECURSE
L_RM21:
;
if !(rrc != DMATCH_NOMATCH) {
goto __3027
}
rrc = rrc
goto RETURN_SWITCH
__3027:
;
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) -= TPCRE2_SPTR8((*Theapframe)(unsafe.Pointer(F)).Flength)
goto __3025
__3026:
;
goto __3024
__3023:
*(*Tuint32_t)(unsafe.Pointer(F + 56 + 1*4)) = i
__3028:
start_ecode = (*Theapframe)(unsafe.Pointer(F)).Fecode
(*Theapframe)(unsafe.Pointer(F)).Freturn_id = RM22
goto MATCH_RECURSE
L_RM22:
;
if !(rrc != DMATCH_NOMATCH) {
goto __3031
}
rrc = rrc
goto RETURN_SWITCH
__3031:
;
if !((*Theapframe)(unsafe.Pointer(F)).Feptr == *(*TPCRE2_SPTR8)(unsafe.Pointer(F + 8))) {
goto __3032
}
goto __3030
__3032:
; // Failed after minimal repetition
(*Theapframe)(unsafe.Pointer(F)).Feptr = *(*TPCRE2_SPTR8)(unsafe.Pointer(F + 8))
*(*Tuint32_t)(unsafe.Pointer(F + 56 + 1*4))--
i = *(*Tuint32_t)(unsafe.Pointer(F + 56))
__3033:
if !(i < *(*Tuint32_t)(unsafe.Pointer(F + 56 + 1*4))) {
goto __3035
}
match_ref(tls, (*Theapframe)(unsafe.Pointer(F)).Ftemp_size, int32(*(*Tuint32_t)(unsafe.Pointer(F + 56 + 2*4))), F, mb, bp+32)
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) += TPCRE2_SPTR8(*(*Tsize_t)(unsafe.Pointer(bp + 32)))
goto __3034
__3034:
i++
goto __3033
goto __3035
__3035:
;
goto __3029
__3029:
goto __3028
goto __3030
__3030:
;
__3024:
;
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__3005:
;
// Control never gets here
// =========================================================================
// Opcodes for the start of various parenthesized items
// =========================================================================
// In all cases, if the result of RMATCH() is MATCH_THEN, check whether the
// (*THEN) is within the current branch by comparing the address of OP_THEN
// that is passed back with the end of the branch. If (*THEN) is within the
// current branch, and the branch is one of two or more alternatives (it
// either starts or ends with OP_ALT), we have reached the limit of THEN's
// action, so convert the return code to NOMATCH, which will cause normal
// backtracking to happen from now on. Otherwise, THEN is passed back to an
// outer alternative. This implements Perl's treatment of parenthesized
// groups, where a group not containing | does not affect the current
// alternative, that is, (X) is NOT the same as (X|(*F)).
// =====================================================================
// BRAZERO, BRAMINZERO and SKIPZERO occur just before a non-possessive
// bracket group, indicating that it may occur zero times. It may repeat
// infinitely, or not at all - i.e. it could be ()* or ()? or even (){0} in
// the pattern. Brackets with fixed upper repeat limits are compiled as a
// number of copies, with the optional ones preceded by BRAZERO or BRAMINZERO.
// Possessive groups with possible zero repeats are preceded by BRAPOSZERO.
__111:
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 8)) = (*Theapframe)(unsafe.Pointer(F)).Fecode + uintptr(1)
start_ecode = *(*TPCRE2_SPTR8)(unsafe.Pointer(F + 8))
(*Theapframe)(unsafe.Pointer(F)).Freturn_id = RM9
goto MATCH_RECURSE
L_RM9:
;
if !(rrc != DMATCH_NOMATCH) {
goto __3036
}
rrc = rrc
goto RETURN_SWITCH
__3036:
;
__3037:
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 8)) += TPCRE2_SPTR8(uint32(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 8)) + 1)))<<8 | int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 8)) + 2)))))
goto __3038
__3038:
if int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 8))))) == OP_ALT {
goto __3037
}
goto __3039
__3039:
;
(*Theapframe)(unsafe.Pointer(F)).Fecode = *(*TPCRE2_SPTR8)(unsafe.Pointer(F + 8)) + uintptr(1) + uintptr(DLINK_SIZE)
goto __13
__112:
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 8)) = (*Theapframe)(unsafe.Pointer(F)).Fecode + uintptr(1)
__3040:
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 8)) += TPCRE2_SPTR8(uint32(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 8)) + 1)))<<8 | int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 8)) + 2)))))
goto __3041
__3041:
if int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 8))))) == OP_ALT {
goto __3040
}
goto __3042
__3042:
;
start_ecode = *(*TPCRE2_SPTR8)(unsafe.Pointer(F + 8)) + uintptr(1) + uintptr(DLINK_SIZE)
(*Theapframe)(unsafe.Pointer(F)).Freturn_id = RM10
goto MATCH_RECURSE
L_RM10:
;
if !(rrc != DMATCH_NOMATCH) {
goto __3043
}
rrc = rrc
goto RETURN_SWITCH
__3043:
;
(*Theapframe)(unsafe.Pointer(F)).Fecode++
goto __13
__113:
(*Theapframe)(unsafe.Pointer(F)).Fecode++
__3044:
*(*TPCRE2_SPTR8)(unsafe.Pointer(F)) += TPCRE2_SPTR8(uint32(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode + 1)))<<8 | int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode + 2)))))
goto __3045
__3045:
if int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode))) == OP_ALT {
goto __3044
}
goto __3046
__3046:
;
*(*TPCRE2_SPTR8)(unsafe.Pointer(F)) += TPCRE2_SPTR8(1 + DLINK_SIZE)
goto __13
// =====================================================================
// Handle possessive brackets with an unlimited repeat. The end of these
// brackets will always be OP_KETRPOS, which returns MATCH_KETRPOS without
// going further in the pattern.
__114:
*(*Tuint32_t)(unsafe.Pointer(F + 56 + 2*4)) = Tuint32_t(DTRUE) // Zero repeat is allowed
*(*TPCRE2_SPTR8)(unsafe.Pointer(F)) += uintptr(1)
if !(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode))) == OP_CBRAPOS || int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode))) == OP_SCBRAPOS) {
goto __3047
}
goto POSSESSIVE_CAPTURE
__3047:
;
goto POSSESSIVE_NON_CAPTURE
__115:
__116:
*(*Tuint32_t)(unsafe.Pointer(F + 56 + 2*4)) = Tuint32_t(DFALSE) // Zero repeat not allowed
POSSESSIVE_NON_CAPTURE:
*(*Tuint32_t)(unsafe.Pointer(F + 56)) = DGF_NOCAPTURE // Remembered frame type
goto POSSESSIVE_GROUP
__117:
__118:
*(*Tuint32_t)(unsafe.Pointer(F + 56 + 2*4)) = Tuint32_t(DFALSE) // Zero repeat not allowed
POSSESSIVE_CAPTURE:
number = uint32(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode + 3)))<<8 | int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode + 4))))
*(*Tuint32_t)(unsafe.Pointer(F + 56)) = DGF_CAPTURE | number // Remembered frame type
POSSESSIVE_GROUP:
*(*Tuint32_t)(unsafe.Pointer(F + 56 + 1*4)) = Tuint32_t(DFALSE) // Never matched
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 8 + 1*8)) = (*Theapframe)(unsafe.Pointer(F)).Fecode // Start of this group
__3048:
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 8)) = (*Theapframe)(unsafe.Pointer(F)).Feptr // Position at group start
group_frame_type = *(*Tuint32_t)(unsafe.Pointer(F + 56))
start_ecode = (*Theapframe)(unsafe.Pointer(F)).Fecode + uintptr(X_pcre2_OP_lengths_8[*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode))])
(*Theapframe)(unsafe.Pointer(F)).Freturn_id = RM8
goto MATCH_RECURSE
L_RM8:
;
if !(rrc == -998) {
goto __3051
}
*(*Tuint32_t)(unsafe.Pointer(F + 56 + 1*4)) = Tuint32_t(DTRUE) // Matched at least once
if !((*Theapframe)(unsafe.Pointer(F)).Feptr == *(*TPCRE2_SPTR8)(unsafe.Pointer(F + 8))) {
goto __3052
} /* Empty match; skip to end */
__3053:
*(*TPCRE2_SPTR8)(unsafe.Pointer(F)) += TPCRE2_SPTR8(uint32(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode + 1)))<<8 | int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode + 2)))))
goto __3054
__3054:
if int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode))) == OP_ALT {
goto __3053
}
goto __3055
__3055:
;
goto __3050
__3052:
;
(*Theapframe)(unsafe.Pointer(F)).Fecode = *(*TPCRE2_SPTR8)(unsafe.Pointer(F + 8 + 1*8))
goto __3049
__3051:
;
// See comment above about handling THEN.
if !(rrc == -993) {
goto __3056
}
next_ecode = (*Theapframe)(unsafe.Pointer(F)).Fecode + uintptr(uint32(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode + 1)))<<8|int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode + 2)))))
if !((*Tmatch_block_8)(unsafe.Pointer(mb)).Fverb_ecode_ptr < next_ecode && (int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode))) == OP_ALT || int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(next_ecode))) == OP_ALT)) {
goto __3057
}
rrc = DMATCH_NOMATCH
__3057:
;
__3056:
;
if !(rrc != DMATCH_NOMATCH) {
goto __3058
}
rrc = rrc
goto RETURN_SWITCH
__3058:
;
*(*TPCRE2_SPTR8)(unsafe.Pointer(F)) += TPCRE2_SPTR8(uint32(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode + 1)))<<8 | int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode + 2)))))
if !(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode))) != OP_ALT) {
goto __3059
}
goto __3050
__3059:
;
goto __3049
__3049:
goto __3048
goto __3050
__3050:
;
// Success if matched something or zero repeat allowed
if !(*(*Tuint32_t)(unsafe.Pointer(F + 56 + 1*4)) != 0 || *(*Tuint32_t)(unsafe.Pointer(F + 56 + 2*4)) != 0) {
goto __3060
}
*(*TPCRE2_SPTR8)(unsafe.Pointer(F)) += TPCRE2_SPTR8(1 + DLINK_SIZE)
goto __13
__3060:
;
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
// =====================================================================
// Handle non-capturing brackets that cannot match an empty string. When we
// get to the final alternative within the brackets, as long as there are no
// THEN's in the pattern, we can optimize by not recording a new backtracking
// point. (Ideally we should test for a THEN within this group, but we don't
// have that information.) Don't do this if we are at the very top level,
// however, because that would make handling assertions and once-only brackets
// messier when there is nothing to go back to.
__119:
if !((*Tmatch_block_8)(unsafe.Pointer(mb)).Fhasthen != 0 || (*Theapframe)(unsafe.Pointer(F)).Frdepth == Tuint32_t(0)) {
goto __3061
}
*(*Tuint32_t)(unsafe.Pointer(F + 56)) = Tuint32_t(0)
goto GROUPLOOP
__3061:
;
__3062:
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 8)) = (*Theapframe)(unsafe.Pointer(F)).Fecode + uintptr(uint32(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode + 1)))<<8|int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode + 2)))))
if !(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 8))))) != OP_ALT) {
goto __3065
}
goto __3064
__3065:
;
/* This is never the final branch. We do not need to test for MATCH_THEN
here because this code is not used when there is a THEN in the pattern. */
start_ecode = (*Theapframe)(unsafe.Pointer(F)).Fecode + uintptr(X_pcre2_OP_lengths_8[*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode))])
(*Theapframe)(unsafe.Pointer(F)).Freturn_id = RM1
goto MATCH_RECURSE
L_RM1:
;
if !(rrc != DMATCH_NOMATCH) {
goto __3066
}
rrc = rrc
goto RETURN_SWITCH
__3066:
;
(*Theapframe)(unsafe.Pointer(F)).Fecode = *(*TPCRE2_SPTR8)(unsafe.Pointer(F + 8))
goto __3063
__3063:
goto __3062
goto __3064
__3064:
;
// Hit the start of the final branch. Continue at this level.
*(*TPCRE2_SPTR8)(unsafe.Pointer(F)) += TPCRE2_SPTR8(X_pcre2_OP_lengths_8[*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode))])
goto __13
// =====================================================================
// Handle a capturing bracket, other than those that are possessive with an
// unlimited repeat.
__120:
__121:
*(*Tuint32_t)(unsafe.Pointer(F + 56)) = DGF_CAPTURE | uint32(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode + 3)))<<8|int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode + 4))))
goto GROUPLOOP
// =====================================================================
// Atomic groups and non-capturing brackets that can match an empty string
// must record a backtracking point and also set up a chained frame.
__122:
__123:
__124:
*(*Tuint32_t)(unsafe.Pointer(F + 56)) = DGF_NOCAPTURE | uint32((*Theapframe)(unsafe.Pointer(F)).Fop)
GROUPLOOP:
__3067:
group_frame_type = *(*Tuint32_t)(unsafe.Pointer(F + 56))
start_ecode = (*Theapframe)(unsafe.Pointer(F)).Fecode + uintptr(X_pcre2_OP_lengths_8[*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode))])
(*Theapframe)(unsafe.Pointer(F)).Freturn_id = RM2
goto MATCH_RECURSE
L_RM2:
;
if !(rrc == -993) {
goto __3070
}
next_ecode1 = (*Theapframe)(unsafe.Pointer(F)).Fecode + uintptr(uint32(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode + 1)))<<8|int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode + 2)))))
if !((*Tmatch_block_8)(unsafe.Pointer(mb)).Fverb_ecode_ptr < next_ecode1 && (int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode))) == OP_ALT || int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(next_ecode1))) == OP_ALT)) {
goto __3071
}
rrc = DMATCH_NOMATCH
__3071:
;
__3070:
;
if !(rrc != DMATCH_NOMATCH) {
goto __3072
}
rrc = rrc
goto RETURN_SWITCH
__3072:
;
*(*TPCRE2_SPTR8)(unsafe.Pointer(F)) += TPCRE2_SPTR8(uint32(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode + 1)))<<8 | int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode + 2)))))
if !(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode))) != OP_ALT) {
goto __3073
}
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__3073:
;
goto __3068
__3068:
goto __3067
goto __3069
__3069:
;
// Control never reaches here.
// =====================================================================
// Recursion either matches the current regex, or some subexpression. The
// offset data is the offset to the starting bracket from the start of the
// whole pattern. (This is so that it works from duplicated subpatterns.)
__125:
bracode = (*Tmatch_block_8)(unsafe.Pointer(mb)).Fstart_code + uintptr(uint32(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode + 1)))<<8|int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode + 2)))))
if bracode == (*Tmatch_block_8)(unsafe.Pointer(mb)).Fstart_code {
number = uint32(0)
} else {
number = uint32(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(bracode + 3)))<<8 | int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(bracode + 4))))
}
// If we are already in a recursion, check for repeating the same one
// without advancing the subject pointer. This should catch convoluted mutual
// recursions. (Some simple cases are caught at compile time.)
if !((*Theapframe)(unsafe.Pointer(F)).Fcurrent_recurse != DRECURSE_UNSET) {
goto __3074
}
offset = (*Theapframe)(unsafe.Pointer(F)).Flast_group_offset
__3075:
if !(offset != libc.CplUint64(uint64(0))) {
goto __3076
}
N = (*Tmatch_block_8)(unsafe.Pointer(mb)).Fmatch_frames + uintptr(offset)
P = N - uintptr(frame_size)
if !((*Theapframe)(unsafe.Pointer(N)).Fgroup_frame_type == DGF_RECURSE|number) {
goto __3077
}
if !((*Theapframe)(unsafe.Pointer(F)).Feptr == (*Theapframe)(unsafe.Pointer(P)).Feptr) {
goto __3078
}
return -52
__3078:
;
goto __3076
__3077:
;
offset = (*Theapframe)(unsafe.Pointer(P)).Flast_group_offset
goto __3075
__3076:
;
__3074:
;
// Now run the recursion, branch by branch.
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 8)) = bracode
*(*Tuint32_t)(unsafe.Pointer(F + 56)) = DGF_RECURSE | number
__3079:
group_frame_type = *(*Tuint32_t)(unsafe.Pointer(F + 56))
start_ecode = *(*TPCRE2_SPTR8)(unsafe.Pointer(F + 8)) + uintptr(X_pcre2_OP_lengths_8[*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 8))))])
(*Theapframe)(unsafe.Pointer(F)).Freturn_id = RM11
goto MATCH_RECURSE
L_RM11:
;
next_ecode2 = *(*TPCRE2_SPTR8)(unsafe.Pointer(F + 8)) + uintptr(uint32(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 8)) + 1)))<<8|int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 8)) + 2)))))
// Handle backtracking verbs, which are defined in a range that can
// easily be tested for. PCRE does not allow THEN, SKIP, PRUNE or COMMIT to
// escape beyond a recursion; they cause a NOMATCH for the entire recursion.
//
// When one of these verbs triggers, the current recursion group number is
// recorded. If it matches the recursion we are processing, the verb
// happened within the recursion and we must deal with it. Otherwise it must
// have happened after the recursion completed, and so has to be passed
// back. See comment above about handling THEN.
if !(rrc >= -997 && rrc <= -993 && (*Tmatch_block_8)(unsafe.Pointer(mb)).Fverb_current_recurse == *(*Tuint32_t)(unsafe.Pointer(F + 56))^DGF_RECURSE) {
goto __3082
}
if !(rrc == -993 && (*Tmatch_block_8)(unsafe.Pointer(mb)).Fverb_ecode_ptr < next_ecode2 && (int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 8))))) == OP_ALT || int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(next_ecode2))) == OP_ALT)) {
goto __3083
}
rrc = DMATCH_NOMATCH
goto __3084
__3083:
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__3084:
;
__3082:
;
// Note that carrying on after (*ACCEPT) in a recursion is handled in the
// OP_ACCEPT code. Nothing needs to be done here.
if !(rrc != DMATCH_NOMATCH) {
goto __3085
}
rrc = rrc
goto RETURN_SWITCH
__3085:
;
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 8)) = next_ecode2
if !(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 8))))) != OP_ALT) {
goto __3086
}
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__3086:
;
goto __3080
__3080:
goto __3079
goto __3081
__3081:
;
// Control never reaches here.
// =====================================================================
// Positive assertions are like other groups except that PCRE doesn't allow
// the effect of (*THEN) to escape beyond an assertion; it is therefore
// treated as NOMATCH. (*ACCEPT) is treated as successful assertion, with its
// captures and mark retained. Any other return is an error.
__126:
__127:
__128:
__129:
*(*Tuint32_t)(unsafe.Pointer(F + 56)) = DGF_NOCAPTURE | uint32((*Theapframe)(unsafe.Pointer(F)).Fop)
__3087:
group_frame_type = *(*Tuint32_t)(unsafe.Pointer(F + 56))
start_ecode = (*Theapframe)(unsafe.Pointer(F)).Fecode + uintptr(X_pcre2_OP_lengths_8[*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode))])
(*Theapframe)(unsafe.Pointer(F)).Freturn_id = RM3
goto MATCH_RECURSE
L_RM3:
;
if !(rrc == -999) {
goto __3090
}
libc.Xmemcpy(tls, F+128,
assert_accept_frame+uintptr(uint64(uintptr(0)+128)),
(*Theapframe)(unsafe.Pointer(assert_accept_frame)).Foffset_top*Tsize_t(unsafe.Sizeof(Tsize_t(0))))
(*Theapframe)(unsafe.Pointer(F)).Foffset_top = (*Theapframe)(unsafe.Pointer(assert_accept_frame)).Foffset_top
(*Theapframe)(unsafe.Pointer(F)).Fmark = (*Theapframe)(unsafe.Pointer(assert_accept_frame)).Fmark
goto __3089
__3090:
;
if !(rrc != DMATCH_NOMATCH && rrc != -993) {
goto __3091
}
rrc = rrc
goto RETURN_SWITCH
__3091:
;
*(*TPCRE2_SPTR8)(unsafe.Pointer(F)) += TPCRE2_SPTR8(uint32(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode + 1)))<<8 | int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode + 2)))))
if !(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode))) != OP_ALT) {
goto __3092
}
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__3092:
;
goto __3088
__3088:
goto __3087
goto __3089
__3089:
;
__3093:
*(*TPCRE2_SPTR8)(unsafe.Pointer(F)) += TPCRE2_SPTR8(uint32(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode + 1)))<<8 | int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode + 2)))))
goto __3094
__3094:
if int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode))) == OP_ALT {
goto __3093
}
goto __3095
__3095:
;
*(*TPCRE2_SPTR8)(unsafe.Pointer(F)) += TPCRE2_SPTR8(1 + DLINK_SIZE)
goto __13
// =====================================================================
// Handle negative assertions. Loop for each non-matching branch as for
// positive assertions.
__130:
__131:
*(*Tuint32_t)(unsafe.Pointer(F + 56)) = DGF_NOCAPTURE | uint32((*Theapframe)(unsafe.Pointer(F)).Fop)
__3096:
group_frame_type = *(*Tuint32_t)(unsafe.Pointer(F + 56))
start_ecode = (*Theapframe)(unsafe.Pointer(F)).Fecode + uintptr(X_pcre2_OP_lengths_8[*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode))])
(*Theapframe)(unsafe.Pointer(F)).Freturn_id = RM4
goto MATCH_RECURSE
L_RM4:
;
switch rrc {
case -999:
goto __3100 // Assertion matched, therefore it fails.
case DMATCH_MATCH:
goto __3101
case DMATCH_NOMATCH:
goto __3102 // Branch failed, try next if present.
case -993:
goto __3103
case -997:
goto __3104 // Assertion forced to fail, therefore continue.
case -995:
goto __3105
case -996:
goto __3106
default:
goto __3107
}
goto __3099
__3100: // Assertion matched, therefore it fails.
__3101:
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__3102: // Branch failed, try next if present.
__3103:
*(*TPCRE2_SPTR8)(unsafe.Pointer(F)) += TPCRE2_SPTR8(uint32(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode + 1)))<<8 | int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode + 2)))))
if !(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode))) != OP_ALT) {
goto __3108
}
goto ASSERT_NOT_FAILED
__3108:
;
goto __3099
__3104: // Assertion forced to fail, therefore continue.
__3105:
__3106:
__3109:
*(*TPCRE2_SPTR8)(unsafe.Pointer(F)) += TPCRE2_SPTR8(uint32(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode + 1)))<<8 | int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode + 2)))))
goto __3110
__3110:
if int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode))) == OP_ALT {
goto __3109
}
goto __3111
__3111:
;
goto ASSERT_NOT_FAILED
__3107: /* Pass back any other return */
rrc = rrc
goto RETURN_SWITCH
__3099:
;
goto __3097
__3097:
goto __3096
goto __3098
__3098:
;
// None of the branches have matched or there was a backtrack to (*COMMIT),
// (*SKIP), (*PRUNE), or (*THEN) in the last branch. This is success for a
// negative assertion, so carry on.
ASSERT_NOT_FAILED:
*(*TPCRE2_SPTR8)(unsafe.Pointer(F)) += TPCRE2_SPTR8(1 + DLINK_SIZE)
goto __13
// =====================================================================
// The callout item calls an external function, if one is provided, passing
// details of the match so far. This is mainly for debugging, though the
// function is able to force a failure.
__132:
__133:
rrc = do_callout1(tls, F, mb, bp)
if !(rrc > 0) {
goto __3112
}
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__3112:
;
if !(rrc < 0) {
goto __3113
}
rrc = rrc
goto RETURN_SWITCH
__3113:
;
*(*TPCRE2_SPTR8)(unsafe.Pointer(F)) += TPCRE2_SPTR8(*(*Tsize_t)(unsafe.Pointer(bp)))
goto __13
// =====================================================================
// Conditional group: compilation checked that there are no more than two
// branches. If the condition is false, skipping the first branch takes us
// past the end of the item if there is only one branch, but that's exactly
// what we want.
__134:
__135:
// The variable Flength will be added to Fecode when the condition is
// false, to get to the second branch. Setting it to the offset to the ALT or
// KET, then incrementing Fecode achieves this effect. However, if the second
// branch is non-existent, we must point to the KET so that the end of the
// group is correctly processed. We now have Fecode pointing to the condition
// or callout.
(*Theapframe)(unsafe.Pointer(F)).Flength = Tsize_t(uint32(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode + 1)))<<8 | int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode + 2))))) // Offset to the second branch
if !(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode + uintptr((*Theapframe)(unsafe.Pointer(F)).Flength)))) != OP_ALT) {
goto __3114
}
*(*Tsize_t)(unsafe.Pointer(F + 24)) -= uint64(1 + DLINK_SIZE)
__3114:
;
*(*TPCRE2_SPTR8)(unsafe.Pointer(F)) += TPCRE2_SPTR8(1 + DLINK_SIZE) // From this opcode
// Because of the way auto-callout works during compile, a callout item is
// inserted between OP_COND and an assertion condition. Such a callout can
// also be inserted manually.
if !(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode))) == OP_CALLOUT || int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode))) == OP_CALLOUT_STR) {
goto __3115
}
rrc = do_callout1(tls, F, mb, bp)
if !(rrc > 0) {
goto __3116
}
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__3116:
;
if !(rrc < 0) {
goto __3117
}
rrc = rrc
goto RETURN_SWITCH
__3117:
;
// Advance Fecode past the callout, so it now points to the condition. We
// must adjust Flength so that the value of Fecode+Flength is unchanged.
*(*TPCRE2_SPTR8)(unsafe.Pointer(F)) += TPCRE2_SPTR8(*(*Tsize_t)(unsafe.Pointer(bp)))
*(*Tsize_t)(unsafe.Pointer(F + 24)) -= *(*Tsize_t)(unsafe.Pointer(bp))
__3115:
;
// Test the various possible conditions
condition = DFALSE
switch int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode))) {
case OP_RREF:
goto __3119
case OP_DNRREF:
goto __3120
case OP_CREF:
goto __3121
case OP_DNCREF:
goto __3122
case OP_FALSE:
goto __3123
case OP_FAIL:
goto __3124
case OP_TRUE:
goto __3125
// The condition is an assertion. Run code similar to the assertion code
// above.
default:
goto __3126
}
goto __3118
__3119: // Group recursion test
if !((*Theapframe)(unsafe.Pointer(F)).Fcurrent_recurse != DRECURSE_UNSET) {
goto __3127
}
number = uint32(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode + 1)))<<8 | int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode + 2))))
condition = libc.Bool32(number == Tuint32_t(DRREF_ANY) || number == (*Theapframe)(unsafe.Pointer(F)).Fcurrent_recurse)
__3127:
;
goto __3118
__3120: // Duplicate named group recursion test
if !((*Theapframe)(unsafe.Pointer(F)).Fcurrent_recurse != DRECURSE_UNSET) {
goto __3128
}
count1 = int32(uint32(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode + 3)))<<8 | int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode + 4)))))
slot1 = (*Tmatch_block_8)(unsafe.Pointer(mb)).Fname_table + uintptr(uint32(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode + 1)))<<8|int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode + 2))))*uint32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fname_entry_size))
__3129:
if !(libc.PostDecInt32(&count1, 1) > 0) {
goto __3130
}
number = uint32(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(slot1)))<<8 | int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(slot1 + 1))))
condition = libc.Bool32(number == (*Theapframe)(unsafe.Pointer(F)).Fcurrent_recurse)
if !(condition != 0) {
goto __3131
}
goto __3130
__3131:
;
slot1 += TPCRE2_SPTR8((*Tmatch_block_8)(unsafe.Pointer(mb)).Fname_entry_size)
goto __3129
__3130:
;
__3128:
;
goto __3118
__3121: // Numbered group used test
offset = Tsize_t(uint32(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode + 1)))<<8|int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode + 2))))<<1 - uint32(2)) // Doubled ref number
condition = libc.Bool32(offset < (*Theapframe)(unsafe.Pointer(F)).Foffset_top && *(*Tsize_t)(unsafe.Pointer(F + 128 + uintptr(offset)*8)) != libc.CplUint64(uint64(0)))
goto __3118
__3122: /* Duplicate named group used test */
count2 = int32(uint32(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode + 3)))<<8 | int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode + 4)))))
slot2 = (*Tmatch_block_8)(unsafe.Pointer(mb)).Fname_table + uintptr(uint32(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode + 1)))<<8|int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode + 2))))*uint32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fname_entry_size))
__3132:
if !(libc.PostDecInt32(&count2, 1) > 0) {
goto __3133
}
offset = Tsize_t(uint32(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(slot2)))<<8|int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(slot2 + 1))))<<1 - uint32(2))
condition = libc.Bool32(offset < (*Theapframe)(unsafe.Pointer(F)).Foffset_top && *(*Tsize_t)(unsafe.Pointer(F + 128 + uintptr(offset)*8)) != libc.CplUint64(uint64(0)))
if !(condition != 0) {
goto __3134
}
goto __3133
__3134:
;
slot2 += TPCRE2_SPTR8((*Tmatch_block_8)(unsafe.Pointer(mb)).Fname_entry_size)
goto __3132
__3133:
;
goto __3118
__3123:
__3124: // The assertion (?!) becomes OP_FAIL
goto __3118
__3125:
condition = DTRUE
goto __3118
// The condition is an assertion. Run code similar to the assertion code
// above.
__3126:
*(*Tuint32_t)(unsafe.Pointer(F + 56)) = Tuint32_t(libc.Bool32(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode))) == OP_ASSERT || int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode))) == OP_ASSERTBACK))
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 8)) = (*Theapframe)(unsafe.Pointer(F)).Fecode
__3135:
group_frame_type = DGF_CONDASSERT | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode)))
start_ecode = *(*TPCRE2_SPTR8)(unsafe.Pointer(F + 8)) + uintptr(X_pcre2_OP_lengths_8[*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 8))))])
(*Theapframe)(unsafe.Pointer(F)).Freturn_id = RM5
goto MATCH_RECURSE
L_RM5:
;
switch rrc {
case -999:
goto __3139
// Fall through
// In the case of a match, the captures have already been put into
// the current frame.
case DMATCH_MATCH:
goto __3140
// PCRE doesn't allow the effect of (*THEN) to escape beyond an
// assertion; it is therefore always treated as NOMATCH.
case DMATCH_NOMATCH:
goto __3141
case -993:
goto __3142
// These force no match without checking other branches.
case -997:
goto __3143
case -995:
goto __3144
case -996:
goto __3145
default:
goto __3146
}
goto __3138
__3139: // Save captures
libc.Xmemcpy(tls, F+128,
assert_accept_frame+uintptr(uint64(uintptr(0)+128)),
(*Theapframe)(unsafe.Pointer(assert_accept_frame)).Foffset_top*Tsize_t(unsafe.Sizeof(Tsize_t(0))))
(*Theapframe)(unsafe.Pointer(F)).Foffset_top = (*Theapframe)(unsafe.Pointer(assert_accept_frame)).Foffset_top
// Fall through
// In the case of a match, the captures have already been put into
// the current frame.
__3140:
condition = TBOOL(*(*Tuint32_t)(unsafe.Pointer(F + 56))) // TRUE for positive assertion
goto __3138
// PCRE doesn't allow the effect of (*THEN) to escape beyond an
// assertion; it is therefore always treated as NOMATCH.
__3141:
__3142:
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 8)) += TPCRE2_SPTR8(uint32(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 8)) + 1)))<<8 | int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 8)) + 2)))))
if !(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 8))))) == OP_ALT) {
goto __3147
}
goto __3136
__3147:
; // Try next branch
condition = libc.BoolInt32(!(*(*Tuint32_t)(unsafe.Pointer(F + 56)) != 0)) // TRUE for negative assertion
goto __3138
// These force no match without checking other branches.
__3143:
__3144:
__3145:
condition = libc.BoolInt32(!(*(*Tuint32_t)(unsafe.Pointer(F + 56)) != 0))
goto __3138
__3146:
rrc = rrc
goto RETURN_SWITCH
__3138:
;
goto __3137 // Out of the branch loop
goto __3136
__3136:
goto __3135
goto __3137
__3137:
;
// If the condition is true, find the end of the assertion so that
// advancing past it gets us to the start of the first branch.
if !(condition != 0) {
goto __3148
}
__3149:
*(*TPCRE2_SPTR8)(unsafe.Pointer(F)) += TPCRE2_SPTR8(uint32(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode + 1)))<<8 | int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode + 2)))))
goto __3150
__3150:
if int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode))) == OP_ALT {
goto __3149
}
goto __3151
__3151:
;
__3148:
;
goto __3118 // End of assertion condition
__3118:
;
// Choose branch according to the condition.
*(*TPCRE2_SPTR8)(unsafe.Pointer(F)) += func() uintptr {
if condition != 0 {
return uintptr(X_pcre2_OP_lengths_8[*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode))])
}
return uintptr((*Theapframe)(unsafe.Pointer(F)).Flength)
}()
// If the opcode is OP_SCOND it means we are at a repeated conditional
// group that might match an empty string. We must therefore descend a level
// so that the start is remembered for checking. For OP_COND we can just
// continue at this level.
if !(int32((*Theapframe)(unsafe.Pointer(F)).Fop) == OP_SCOND) {
goto __3152
}
group_frame_type = DGF_NOCAPTURE | uint32((*Theapframe)(unsafe.Pointer(F)).Fop)
start_ecode = (*Theapframe)(unsafe.Pointer(F)).Fecode
(*Theapframe)(unsafe.Pointer(F)).Freturn_id = RM35
goto MATCH_RECURSE
L_RM35:
;
rrc = rrc
goto RETURN_SWITCH
__3152:
;
goto __13
// =========================================================================
// End of start of parenthesis opcodes
// =========================================================================
// =====================================================================
// Move the subject pointer back. This occurs only at the start of each
// branch of a lookbehind assertion. If we are too close to the start to move
// back, fail. When working with UTF-8 we move back a number of characters,
// not bytes.
__136:
number = uint32(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode + 1)))<<8 | int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode + 2))))
if !(utf != 0) {
goto __3153
}
__3155:
if !(libc.PostDecUint32(&number, 1) > Tuint32_t(0)) {
goto __3156
}
if !((*Theapframe)(unsafe.Pointer(F)).Feptr <= (*Tmatch_block_8)(unsafe.Pointer(mb)).Fcheck_subject) {
goto __3157
}
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__3157:
;
(*Theapframe)(unsafe.Pointer(F)).Feptr--
__3158:
if !(uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))&0xc0 == 0x80) {
goto __3159
}
(*Theapframe)(unsafe.Pointer(F)).Feptr--
goto __3158
__3159:
;
goto __3155
__3156:
;
goto __3154
__3153:
/* No UTF-8 support, or not in UTF-8 mode: count is code unit count */
if !(Tptrdiff_t(number) > (int64((*Theapframe)(unsafe.Pointer(F)).Feptr)-int64((*Tmatch_block_8)(unsafe.Pointer(mb)).Fstart_subject))/1) {
goto __3160
}
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__3160:
;
*(*TPCRE2_SPTR8)(unsafe.Pointer(F + 80)) -= TPCRE2_SPTR8(number)
__3154:
;
// Save the earliest consulted character, then skip to next opcode
if !((*Theapframe)(unsafe.Pointer(F)).Feptr < (*Tmatch_block_8)(unsafe.Pointer(mb)).Fstart_used_ptr) {
goto __3161
}
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fstart_used_ptr = (*Theapframe)(unsafe.Pointer(F)).Feptr
__3161:
;
*(*TPCRE2_SPTR8)(unsafe.Pointer(F)) += TPCRE2_SPTR8(1 + DLINK_SIZE)
goto __13
// =====================================================================
// An alternation is the end of a branch; scan along to find the end of the
// bracketed group.
__137:
__3162:
*(*TPCRE2_SPTR8)(unsafe.Pointer(F)) += TPCRE2_SPTR8(uint32(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode + 1)))<<8 | int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode + 2)))))
goto __3163
__3163:
if int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode))) == OP_ALT {
goto __3162
}
goto __3164
__3164:
;
goto __13
// =====================================================================
// The end of a parenthesized group. For all but OP_BRA and OP_COND, the
// starting frame was added to the chained frames in order to remember the
// starting subject position for the group.
__138:
__139:
__140:
__141:
bracode = (*Theapframe)(unsafe.Pointer(F)).Fecode - uintptr(uint32(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode + 1)))<<8|int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode + 2)))))
// Point N to the frame at the start of the most recent group.
// Remember the subject pointer at the start of the group.
if !(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(bracode))) != OP_BRA && int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(bracode))) != OP_COND) {
goto __3165
}
N = (*Tmatch_block_8)(unsafe.Pointer(mb)).Fmatch_frames + uintptr((*Theapframe)(unsafe.Pointer(F)).Flast_group_offset)
P = N - uintptr(frame_size)
(*Theapframe)(unsafe.Pointer(F)).Flast_group_offset = (*Theapframe)(unsafe.Pointer(P)).Flast_group_offset
// If we are at the end of an assertion that is a condition, return a
// match, discarding any intermediate backtracking points. Copy back the
// mark setting and the captures into the frame before N so that they are
// set on return. Doing this for all assertions, both positive and negative,
// seems to match what Perl does.
if !((*Theapframe)(unsafe.Pointer(N)).Fgroup_frame_type&0xffff0000 == DGF_CONDASSERT) {
goto __3167
}
libc.Xmemcpy(tls, P+uintptr(uint64(uintptr(0)+128)), F+128,
(*Theapframe)(unsafe.Pointer(F)).Foffset_top*Tsize_t(unsafe.Sizeof(Tsize_t(0))))
(*Theapframe)(unsafe.Pointer(P)).Foffset_top = (*Theapframe)(unsafe.Pointer(F)).Foffset_top
(*Theapframe)(unsafe.Pointer(P)).Fmark = (*Theapframe)(unsafe.Pointer(F)).Fmark
(*Theapframe)(unsafe.Pointer(F)).Fback_frame = Tsize_t((int64(F) - int64(P)) / 1)
rrc = DMATCH_MATCH
goto RETURN_SWITCH
__3167:
;
goto __3166
__3165:
P = uintptr(0)
__3166:
; // Indicates starting frame not recorded
// The group was not a conditional assertion.
switch int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(bracode))) {
case OP_BRA:
goto __3169 // No need to do anything for these
case OP_COND:
goto __3170
case OP_SCOND:
goto __3171
// Non-atomic positive assertions are like OP_BRA, except that the
// subject pointer must be put back to where it was at the start of the
// assertion.
case OP_ASSERT_NA:
goto __3172
case OP_ASSERTBACK_NA:
goto __3173
// Atomic positive assertions are like OP_ONCE, except that in addition
// the subject pointer must be put back to where it was at the start of the
// assertion.
case OP_ASSERT:
goto __3174
case OP_ASSERTBACK:
goto __3175
// Fall through
// For an atomic group, discard internal backtracking points. We must
// also ensure that any remaining branches within the top-level of the group
// are not tried. Do this by adjusting the code pointer within the backtrack
// frame so that it points to the final branch.
case OP_ONCE:
goto __3176
// A matching negative assertion returns MATCH, which is turned into
// NOMATCH at the assertion level.
case OP_ASSERT_NOT:
goto __3177
case OP_ASSERTBACK_NOT:
goto __3178
// At the end of a script run, apply the script-checking rules. This code
// will never by exercised if Unicode support it not compiled, because in
// that environment script runs cause an error at compile time.
case OP_SCRIPT_RUN:
goto __3179
// Whole-pattern recursion is coded as a recurse into group 0, so it
// won't be picked up here. Instead, we catch it when the OP_END is reached.
// Other recursion is handled here.
case OP_CBRA:
goto __3180
case OP_CBRAPOS:
goto __3181
case OP_SCBRA:
goto __3182
case OP_SCBRAPOS:
goto __3183
}
goto __3168
__3169: // No need to do anything for these
__3170:
__3171:
goto __3168
// Non-atomic positive assertions are like OP_BRA, except that the
// subject pointer must be put back to where it was at the start of the
// assertion.
__3172:
__3173:
if !((*Theapframe)(unsafe.Pointer(F)).Feptr > (*Tmatch_block_8)(unsafe.Pointer(mb)).Flast_used_ptr) {
goto __3184
}
(*Tmatch_block_8)(unsafe.Pointer(mb)).Flast_used_ptr = (*Theapframe)(unsafe.Pointer(F)).Feptr
__3184:
;
(*Theapframe)(unsafe.Pointer(F)).Feptr = (*Theapframe)(unsafe.Pointer(P)).Feptr
goto __3168
// Atomic positive assertions are like OP_ONCE, except that in addition
// the subject pointer must be put back to where it was at the start of the
// assertion.
__3174:
__3175:
if !((*Theapframe)(unsafe.Pointer(F)).Feptr > (*Tmatch_block_8)(unsafe.Pointer(mb)).Flast_used_ptr) {
goto __3185
}
(*Tmatch_block_8)(unsafe.Pointer(mb)).Flast_used_ptr = (*Theapframe)(unsafe.Pointer(F)).Feptr
__3185:
;
(*Theapframe)(unsafe.Pointer(F)).Feptr = (*Theapframe)(unsafe.Pointer(P)).Feptr
// Fall through
// For an atomic group, discard internal backtracking points. We must
// also ensure that any remaining branches within the top-level of the group
// are not tried. Do this by adjusting the code pointer within the backtrack
// frame so that it points to the final branch.
__3176:
(*Theapframe)(unsafe.Pointer(F)).Fback_frame = Tsize_t((int64(F) - int64(P)) / 1)
__3186:
y = uint32(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(P)).Fecode + 1)))<<8 | int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(P)).Fecode + 2))))
if !(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(P)).Fecode + uintptr(y)))) != OP_ALT) {
goto __3189
}
goto __3188
__3189:
;
*(*TPCRE2_SPTR8)(unsafe.Pointer(P)) += TPCRE2_SPTR8(y)
goto __3187
__3187:
goto __3186
goto __3188
__3188:
;
goto __3168
// A matching negative assertion returns MATCH, which is turned into
// NOMATCH at the assertion level.
__3177:
__3178:
rrc = DMATCH_MATCH
goto RETURN_SWITCH
// At the end of a script run, apply the script-checking rules. This code
// will never by exercised if Unicode support it not compiled, because in
// that environment script runs cause an error at compile time.
__3179:
if !!(X_pcre2_script_run_8(tls, (*Theapframe)(unsafe.Pointer(P)).Feptr, (*Theapframe)(unsafe.Pointer(F)).Feptr, utf) != 0) {
goto __3190
}
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__3190:
;
goto __3168
// Whole-pattern recursion is coded as a recurse into group 0, so it
// won't be picked up here. Instead, we catch it when the OP_END is reached.
// Other recursion is handled here.
__3180:
__3181:
__3182:
__3183:
number = uint32(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(bracode + 3)))<<8 | int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(bracode + 4))))
// Handle a recursively called group. We reinstate the previous set of
// captures and then carry on after the recursion call.
if !((*Theapframe)(unsafe.Pointer(F)).Fcurrent_recurse == number) {
goto __3191
}
P = N - uintptr(frame_size)
libc.Xmemcpy(tls, F+uintptr(uint64(uintptr(0)+128)), P+128,
(*Theapframe)(unsafe.Pointer(P)).Foffset_top*Tsize_t(unsafe.Sizeof(Tsize_t(0))))
(*Theapframe)(unsafe.Pointer(F)).Foffset_top = (*Theapframe)(unsafe.Pointer(P)).Foffset_top
(*Theapframe)(unsafe.Pointer(F)).Fcapture_last = (*Theapframe)(unsafe.Pointer(P)).Fcapture_last
(*Theapframe)(unsafe.Pointer(F)).Fcurrent_recurse = (*Theapframe)(unsafe.Pointer(P)).Fcurrent_recurse
(*Theapframe)(unsafe.Pointer(F)).Fecode = (*Theapframe)(unsafe.Pointer(P)).Fecode + uintptr(1) + uintptr(DLINK_SIZE)
goto __11 // With next opcode
__3191:
;
// Deal with actual capturing.
offset = Tsize_t(number<<1 - Tuint32_t(2))
(*Theapframe)(unsafe.Pointer(F)).Fcapture_last = number
*(*Tsize_t)(unsafe.Pointer(F + 128 + uintptr(offset)*8)) = Tsize_t((int64((*Theapframe)(unsafe.Pointer(P)).Feptr) - int64((*Tmatch_block_8)(unsafe.Pointer(mb)).Fstart_subject)) / 1)
*(*Tsize_t)(unsafe.Pointer(F + 128 + uintptr(offset+uint64(1))*8)) = Tsize_t((int64((*Theapframe)(unsafe.Pointer(F)).Feptr) - int64((*Tmatch_block_8)(unsafe.Pointer(mb)).Fstart_subject)) / 1)
if !(offset >= (*Theapframe)(unsafe.Pointer(F)).Foffset_top) {
goto __3192
}
(*Theapframe)(unsafe.Pointer(F)).Foffset_top = offset + uint64(2)
__3192:
;
goto __3168
__3168:
; // End actions relating to the starting opcode
// OP_KETRPOS is a possessive repeating ket. Remember the current position,
// and return the MATCH_KETRPOS. This makes it possible to do the repeats one
// at a time from the outer level. This must precede the empty string test -
// in this case that test is done at the outer level.
if !(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode))) == OP_KETRPOS) {
goto __3193
}
libc.Xmemcpy(tls, P+uintptr(uint64(uintptr(0)+80)),
F+uintptr(uint64(uintptr(0)+80)),
frame_copy_size)
rrc = -998
goto RETURN_SWITCH
__3193:
;
// Handle the different kinds of closing brackets. A non-repeating ket
// needs no special action, just continuing at this level. This also happens
// for the repeating kets if the group matched no characters, in order to
// forcibly break infinite loops. Otherwise, the repeating kets try the rest
// of the pattern or restart from the preceding bracket, in the appropriate
// order.
if !(int32((*Theapframe)(unsafe.Pointer(F)).Fop) != OP_KET && (P == uintptr(0) || (*Theapframe)(unsafe.Pointer(F)).Feptr != (*Theapframe)(unsafe.Pointer(P)).Feptr)) {
goto __3194
}
if !(int32((*Theapframe)(unsafe.Pointer(F)).Fop) == OP_KETRMIN) {
goto __3195
}
start_ecode = (*Theapframe)(unsafe.Pointer(F)).Fecode + uintptr(1) + uintptr(DLINK_SIZE)
(*Theapframe)(unsafe.Pointer(F)).Freturn_id = RM6
goto MATCH_RECURSE
L_RM6:
;
if !(rrc != DMATCH_NOMATCH) {
goto __3196
}
rrc = rrc
goto RETURN_SWITCH
__3196:
;
*(*TPCRE2_SPTR8)(unsafe.Pointer(F)) -= TPCRE2_SPTR8(uint32(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode + 1)))<<8 | int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode + 2)))))
goto __13 // End of ket processing
__3195:
;
/* Repeat the maximum number of times (KETRMAX) */
start_ecode = bracode
(*Theapframe)(unsafe.Pointer(F)).Freturn_id = RM7
goto MATCH_RECURSE
L_RM7:
;
if !(rrc != DMATCH_NOMATCH) {
goto __3197
}
rrc = rrc
goto RETURN_SWITCH
__3197:
;
__3194:
;
// Carry on at this level for a non-repeating ket, or after matching an
// empty string, or after repeating for a maximum number of times.
*(*TPCRE2_SPTR8)(unsafe.Pointer(F)) += TPCRE2_SPTR8(1 + DLINK_SIZE)
goto __13
// =====================================================================
// Start and end of line assertions, not multiline mode.
__142: // Start of line, unless PCRE2_NOTBOL is set.
if !((*Theapframe)(unsafe.Pointer(F)).Feptr != (*Tmatch_block_8)(unsafe.Pointer(mb)).Fstart_subject || (*Tmatch_block_8)(unsafe.Pointer(mb)).Fmoptions&DPCRE2_NOTBOL != Tuint32_t(0)) {
goto __3198
}
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__3198:
;
(*Theapframe)(unsafe.Pointer(F)).Fecode++
goto __13
__143: // Unconditional start of subject
if !((*Theapframe)(unsafe.Pointer(F)).Feptr != (*Tmatch_block_8)(unsafe.Pointer(mb)).Fstart_subject) {
goto __3199
}
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__3199:
;
(*Theapframe)(unsafe.Pointer(F)).Fecode++
goto __13
// When PCRE2_NOTEOL is unset, assert before the subject end, or a
// terminating newline unless PCRE2_DOLLAR_ENDONLY is set.
__144:
if !((*Tmatch_block_8)(unsafe.Pointer(mb)).Fmoptions&DPCRE2_NOTEOL != Tuint32_t(0)) {
goto __3200
}
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__3200:
;
if !((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpoptions&DPCRE2_DOLLAR_ENDONLY == Tuint32_t(0)) {
goto __3201
}
goto ASSERT_NL_OR_EOS
__3201:
;
// Fall through
// Unconditional end of subject assertion (\z)
__145:
if !((*Theapframe)(unsafe.Pointer(F)).Feptr < (*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject) {
goto __3202
}
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__3202:
;
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) != 0) {
goto __3203
}
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fhitend = DTRUE
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) > 1) {
goto __3204
}
return -2
__3204:
;
__3203:
;
(*Theapframe)(unsafe.Pointer(F)).Fecode++
goto __13
// End of subject or ending \n assertion (\Z)
__146:
ASSERT_NL_OR_EOS:
if !((*Theapframe)(unsafe.Pointer(F)).Feptr < (*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject && (!(func() int32 {
if (*Tmatch_block_8)(unsafe.Pointer(mb)).Fnltype != Tuint32_t(DNLTYPE_FIXED) {
return libc.Bool32((*Theapframe)(unsafe.Pointer(F)).Feptr < (*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject && X_pcre2_is_newline_8(tls, (*Theapframe)(unsafe.Pointer(F)).Feptr, (*Tmatch_block_8)(unsafe.Pointer(mb)).Fnltype, (*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject, mb+256, utf) != 0)
}
return libc.Bool32((*Theapframe)(unsafe.Pointer(F)).Feptr <= (*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject-uintptr((*Tmatch_block_8)(unsafe.Pointer(mb)).Fnllen) && int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr))) == int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(mb + 260))) && ((*Tmatch_block_8)(unsafe.Pointer(mb)).Fnllen == Tuint32_t(1) || int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + uintptr(1)))) == int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(mb + 260 + 1)))))
}() != 0) || (*Theapframe)(unsafe.Pointer(F)).Feptr != (*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject-uintptr((*Tmatch_block_8)(unsafe.Pointer(mb)).Fnllen))) {
goto __3205
}
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) != 0 && (*Theapframe)(unsafe.Pointer(F)).Feptr+uintptr(1) >= (*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject && (*Tmatch_block_8)(unsafe.Pointer(mb)).Fnltype == Tuint32_t(DNLTYPE_FIXED) && (*Tmatch_block_8)(unsafe.Pointer(mb)).Fnllen == Tuint32_t(2) && int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr))) == int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(mb + 260)))) {
goto __3206
}
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fhitend = DTRUE
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) > 1) {
goto __3207
}
return -2
__3207:
;
__3206:
;
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__3205:
;
// Either at end of string or \n before end.
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) != 0) {
goto __3208
}
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fhitend = DTRUE
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) > 1) {
goto __3209
}
return -2
__3209:
;
__3208:
;
(*Theapframe)(unsafe.Pointer(F)).Fecode++
goto __13
// =====================================================================
// Start and end of line assertions, multiline mode.
// Start of subject unless notbol, or after any newline except for one at
// the very end, unless PCRE2_ALT_CIRCUMFLEX is set.
__147:
if !((*Tmatch_block_8)(unsafe.Pointer(mb)).Fmoptions&DPCRE2_NOTBOL != Tuint32_t(0) && (*Theapframe)(unsafe.Pointer(F)).Feptr == (*Tmatch_block_8)(unsafe.Pointer(mb)).Fstart_subject) {
goto __3210
}
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__3210:
;
if !((*Theapframe)(unsafe.Pointer(F)).Feptr != (*Tmatch_block_8)(unsafe.Pointer(mb)).Fstart_subject && ((*Theapframe)(unsafe.Pointer(F)).Feptr == (*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject && (*Tmatch_block_8)(unsafe.Pointer(mb)).Fpoptions&DPCRE2_ALT_CIRCUMFLEX == Tuint32_t(0) || !(func() int32 {
if (*Tmatch_block_8)(unsafe.Pointer(mb)).Fnltype != Tuint32_t(DNLTYPE_FIXED) {
return libc.Bool32((*Theapframe)(unsafe.Pointer(F)).Feptr > (*Tmatch_block_8)(unsafe.Pointer(mb)).Fstart_subject && X_pcre2_was_newline_8(tls, (*Theapframe)(unsafe.Pointer(F)).Feptr, (*Tmatch_block_8)(unsafe.Pointer(mb)).Fnltype, (*Tmatch_block_8)(unsafe.Pointer(mb)).Fstart_subject, mb+256, utf) != 0)
}
return libc.Bool32((*Theapframe)(unsafe.Pointer(F)).Feptr >= (*Tmatch_block_8)(unsafe.Pointer(mb)).Fstart_subject+uintptr((*Tmatch_block_8)(unsafe.Pointer(mb)).Fnllen) && int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr - uintptr((*Tmatch_block_8)(unsafe.Pointer(mb)).Fnllen)))) == int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(mb + 260))) && ((*Tmatch_block_8)(unsafe.Pointer(mb)).Fnllen == Tuint32_t(1) || int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr - uintptr((*Tmatch_block_8)(unsafe.Pointer(mb)).Fnllen) + uintptr(1)))) == int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(mb + 260 + 1)))))
}() != 0))) {
goto __3211
}
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__3211:
;
(*Theapframe)(unsafe.Pointer(F)).Fecode++
goto __13
// Assert before any newline, or before end of subject unless noteol is
// set.
__148:
if !((*Theapframe)(unsafe.Pointer(F)).Feptr < (*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject) {
goto __3212
}
if !!(func() int32 {
if (*Tmatch_block_8)(unsafe.Pointer(mb)).Fnltype != Tuint32_t(DNLTYPE_FIXED) {
return libc.Bool32((*Theapframe)(unsafe.Pointer(F)).Feptr < (*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject && X_pcre2_is_newline_8(tls, (*Theapframe)(unsafe.Pointer(F)).Feptr, (*Tmatch_block_8)(unsafe.Pointer(mb)).Fnltype, (*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject, mb+256, utf) != 0)
}
return libc.Bool32((*Theapframe)(unsafe.Pointer(F)).Feptr <= (*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject-uintptr((*Tmatch_block_8)(unsafe.Pointer(mb)).Fnllen) && int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr))) == int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(mb + 260))) && ((*Tmatch_block_8)(unsafe.Pointer(mb)).Fnllen == Tuint32_t(1) || int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + uintptr(1)))) == int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(mb + 260 + 1)))))
}() != 0) {
goto __3214
}
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) != 0 && (*Theapframe)(unsafe.Pointer(F)).Feptr+uintptr(1) >= (*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject && (*Tmatch_block_8)(unsafe.Pointer(mb)).Fnltype == Tuint32_t(DNLTYPE_FIXED) && (*Tmatch_block_8)(unsafe.Pointer(mb)).Fnllen == Tuint32_t(2) && int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr))) == int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(mb + 260)))) {
goto __3215
}
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fhitend = DTRUE
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) > 1) {
goto __3216
}
return -2
__3216:
;
__3215:
;
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__3214:
;
goto __3213
__3212:
if !((*Tmatch_block_8)(unsafe.Pointer(mb)).Fmoptions&DPCRE2_NOTEOL != Tuint32_t(0)) {
goto __3217
}
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__3217:
;
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) != 0 && ((*Theapframe)(unsafe.Pointer(F)).Feptr > (*Tmatch_block_8)(unsafe.Pointer(mb)).Fstart_used_ptr || (*Tmatch_block_8)(unsafe.Pointer(mb)).Fallowemptypartial != 0)) {
goto __3218
}
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fhitend = DTRUE
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) > 1) {
goto __3219
}
return -2
__3219:
;
__3218:
;
__3213:
;
(*Theapframe)(unsafe.Pointer(F)).Fecode++
goto __13
// =====================================================================
// Start of match assertion
__149:
if !((*Theapframe)(unsafe.Pointer(F)).Feptr != (*Tmatch_block_8)(unsafe.Pointer(mb)).Fstart_subject+uintptr((*Tmatch_block_8)(unsafe.Pointer(mb)).Fstart_offset)) {
goto __3220
}
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__3220:
;
(*Theapframe)(unsafe.Pointer(F)).Fecode++
goto __13
// =====================================================================
// Reset the start of match point
__150:
(*Theapframe)(unsafe.Pointer(F)).Fstart_match = (*Theapframe)(unsafe.Pointer(F)).Feptr
(*Theapframe)(unsafe.Pointer(F)).Fecode++
goto __13
// =====================================================================
// Word boundary assertions. Find out if the previous and current
// characters are "word" characters. It takes a bit more work in UTF mode.
// Characters > 255 are assumed to be "non-word" characters when PCRE2_UCP is
// not set. When it is set, use Unicode properties if available, even when not
// in UTF mode. Remember the earliest and latest consulted characters.
__151:
__152:
if !((*Theapframe)(unsafe.Pointer(F)).Feptr == (*Tmatch_block_8)(unsafe.Pointer(mb)).Fcheck_subject) {
goto __3221
}
prev_is_word = DFALSE
goto __3222
__3221:
lastptr = (*Theapframe)(unsafe.Pointer(F)).Feptr - uintptr(1)
if !(utf != 0) {
goto __3223
}
__3225:
if !(uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(lastptr)))&0xc0 == 0x80) {
goto __3226
}
lastptr--
goto __3225
__3226:
;
fc = Tuint32_t(*(*TPCRE2_UCHAR8)(unsafe.Pointer(lastptr)))
if !(fc >= 0xc0) {
goto __3227
}
if !(fc&0x20 == Tuint32_t(0)) {
goto __3228
}
fc = fc&0x1f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(lastptr + 1)))&0x3f
goto __3229
__3228:
if !(fc&0x10 == Tuint32_t(0)) {
goto __3230
}
fc = fc&0x0f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(lastptr + 1)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(lastptr + 2)))&0x3f
goto __3231
__3230:
if !(fc&0x08 == Tuint32_t(0)) {
goto __3232
}
fc = fc&0x07<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(lastptr + 1)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(lastptr + 2)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(lastptr + 3)))&0x3f
goto __3233
__3232:
if !(fc&0x04 == Tuint32_t(0)) {
goto __3234
}
fc = fc&0x03<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(lastptr + 1)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(lastptr + 2)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(lastptr + 3)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(lastptr + 4)))&0x3f
goto __3235
__3234:
fc = fc&0x01<<30 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(lastptr + 1)))&0x3f<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(lastptr + 2)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(lastptr + 3)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(lastptr + 4)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(lastptr + 5)))&0x3f
__3235:
;
__3233:
;
__3231:
;
__3229:
;
__3227:
;
goto __3224
__3223:
fc = Tuint32_t(*(*TPCRE2_UCHAR8)(unsafe.Pointer(lastptr)))
__3224:
;
if !(lastptr < (*Tmatch_block_8)(unsafe.Pointer(mb)).Fstart_used_ptr) {
goto __3236
}
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fstart_used_ptr = lastptr
__3236:
;
if !((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpoptions&DPCRE2_UCP != Tuint32_t(0)) {
goto __3237
}
if !(fc == Tuint32_t('_')) {
goto __3239
}
prev_is_word = DTRUE
goto __3240
__3239:
cat = int32(X_pcre2_ucp_gentype_8[(*Tucd_record)(unsafe.Pointer(uintptr(unsafe.Pointer(&X_pcre2_ucd_records_8))+uintptr(X_pcre2_ucd_stage2_8[int32(X_pcre2_ucd_stage1_8[int32(fc)/DUCD_BLOCK_SIZE])*DUCD_BLOCK_SIZE+int32(fc)%DUCD_BLOCK_SIZE])*12)).Fchartype])
prev_is_word = libc.Bool32(cat == ucp_L || cat == ucp_N)
__3240:
;
goto __3238
__3237:
prev_is_word = libc.Bool32(fc <= 255 && int32(*(*Tuint8_t)(unsafe.Pointer((*Tmatch_block_8)(unsafe.Pointer(mb)).Fctypes + uintptr(fc))))&Dctype_word != 0)
__3238:
;
__3222:
;
// Get status of next character
if !((*Theapframe)(unsafe.Pointer(F)).Feptr >= (*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject) {
goto __3241
}
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) != 0 && ((*Theapframe)(unsafe.Pointer(F)).Feptr > (*Tmatch_block_8)(unsafe.Pointer(mb)).Fstart_used_ptr || (*Tmatch_block_8)(unsafe.Pointer(mb)).Fallowemptypartial != 0)) {
goto __3243
}
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fhitend = DTRUE
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) > 1) {
goto __3244
}
return -2
__3244:
;
__3243:
;
cur_is_word = DFALSE
goto __3242
__3241:
nextptr = (*Theapframe)(unsafe.Pointer(F)).Feptr + uintptr(1)
if !(utf != 0) {
goto __3245
}
__3247:
if !(nextptr < (*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject && uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(nextptr)))&0xc0 == 0x80) {
goto __3248
}
nextptr++
goto __3247
__3248:
;
fc = Tuint32_t(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))
if !(fc >= 0xc0) {
goto __3249
}
if !(fc&0x20 == Tuint32_t(0)) {
goto __3250
}
fc = fc&0x1f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f
goto __3251
__3250:
if !(fc&0x10 == Tuint32_t(0)) {
goto __3252
}
fc = fc&0x0f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f
goto __3253
__3252:
if !(fc&0x08 == Tuint32_t(0)) {
goto __3254
}
fc = fc&0x07<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 3)))&0x3f
goto __3255
__3254:
if !(fc&0x04 == Tuint32_t(0)) {
goto __3256
}
fc = fc&0x03<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 3)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 4)))&0x3f
goto __3257
__3256:
fc = fc&0x01<<30 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 1)))&0x3f<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 2)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 3)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 4)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr + 5)))&0x3f
__3257:
;
__3255:
;
__3253:
;
__3251:
;
__3249:
;
goto __3246
__3245:
fc = Tuint32_t(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Feptr)))
__3246:
;
if !(nextptr > (*Tmatch_block_8)(unsafe.Pointer(mb)).Flast_used_ptr) {
goto __3258
}
(*Tmatch_block_8)(unsafe.Pointer(mb)).Flast_used_ptr = nextptr
__3258:
;
if !((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpoptions&DPCRE2_UCP != Tuint32_t(0)) {
goto __3259
}
if !(fc == Tuint32_t('_')) {
goto __3261
}
cur_is_word = DTRUE
goto __3262
__3261:
cat1 = int32(X_pcre2_ucp_gentype_8[(*Tucd_record)(unsafe.Pointer(uintptr(unsafe.Pointer(&X_pcre2_ucd_records_8))+uintptr(X_pcre2_ucd_stage2_8[int32(X_pcre2_ucd_stage1_8[int32(fc)/DUCD_BLOCK_SIZE])*DUCD_BLOCK_SIZE+int32(fc)%DUCD_BLOCK_SIZE])*12)).Fchartype])
cur_is_word = libc.Bool32(cat1 == ucp_L || cat1 == ucp_N)
__3262:
;
goto __3260
__3259:
cur_is_word = libc.Bool32(fc <= 255 && int32(*(*Tuint8_t)(unsafe.Pointer((*Tmatch_block_8)(unsafe.Pointer(mb)).Fctypes + uintptr(fc))))&Dctype_word != 0)
__3260:
;
__3242:
;
// Now see if the situation is what we want
if !(func() int32 {
if int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&(*Theapframe)(unsafe.Pointer(F)).Fecode, 1)))) == OP_WORD_BOUNDARY {
return libc.Bool32(cur_is_word == prev_is_word)
}
return libc.Bool32(cur_is_word != prev_is_word)
}() != 0) {
goto __3263
}
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
__3263:
;
goto __13
// =====================================================================
// Backtracking (*VERB)s, with and without arguments. Note that if the
// pattern is successfully matched, we do not come back from RMATCH.
__153:
(*Theapframe)(unsafe.Pointer(F)).Fmark = libc.AssignPtrUintptr(mb+208, (*Theapframe)(unsafe.Pointer(F)).Fecode+uintptr(2))
start_ecode = (*Theapframe)(unsafe.Pointer(F)).Fecode + uintptr(X_pcre2_OP_lengths_8[*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode))]) + uintptr(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode + 1)))
(*Theapframe)(unsafe.Pointer(F)).Freturn_id = RM12
goto MATCH_RECURSE
L_RM12:
;
// A return of MATCH_SKIP_ARG means that matching failed at SKIP with an
// argument, and we must check whether that argument matches this MARK's
// argument. It is passed back in mb->verb_skip_ptr. If it does match, we
// return MATCH_SKIP with mb->verb_skip_ptr now pointing to the subject
// position that corresponds to this mark. Otherwise, pass back the return
// code unaltered.
if !(rrc == -994 && X_pcre2_strcmp_8(tls, (*Theapframe)(unsafe.Pointer(F)).Fecode+uintptr(2), (*Tmatch_block_8)(unsafe.Pointer(mb)).Fverb_skip_ptr) == 0) {
goto __3264
}
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fverb_skip_ptr = (*Theapframe)(unsafe.Pointer(F)).Feptr /* Pass back current position */
rrc = -995
goto RETURN_SWITCH
__3264:
;
rrc = rrc
goto RETURN_SWITCH
__154:
rrc = DMATCH_NOMATCH
goto RETURN_SWITCH
// Record the current recursing group number in mb->verb_current_recurse
// when a backtracking return such as MATCH_COMMIT is given. This enables the
// recurse processing to catch verbs from within the recursion.
__155:
start_ecode = (*Theapframe)(unsafe.Pointer(F)).Fecode + uintptr(X_pcre2_OP_lengths_8[*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode))])
(*Theapframe)(unsafe.Pointer(F)).Freturn_id = RM13
goto MATCH_RECURSE
L_RM13:
;
if !(rrc != DMATCH_NOMATCH) {
goto __3265
}
rrc = rrc
goto RETURN_SWITCH
__3265:
;
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fverb_current_recurse = (*Theapframe)(unsafe.Pointer(F)).Fcurrent_recurse
rrc = -997
goto RETURN_SWITCH
__156:
(*Theapframe)(unsafe.Pointer(F)).Fmark = libc.AssignPtrUintptr(mb+208, (*Theapframe)(unsafe.Pointer(F)).Fecode+uintptr(2))
start_ecode = (*Theapframe)(unsafe.Pointer(F)).Fecode + uintptr(X_pcre2_OP_lengths_8[*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode))]) + uintptr(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode + 1)))
(*Theapframe)(unsafe.Pointer(F)).Freturn_id = RM36
goto MATCH_RECURSE
L_RM36:
;
if !(rrc != DMATCH_NOMATCH) {
goto __3266
}
rrc = rrc
goto RETURN_SWITCH
__3266:
;
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fverb_current_recurse = (*Theapframe)(unsafe.Pointer(F)).Fcurrent_recurse
rrc = -997
goto RETURN_SWITCH
__157:
start_ecode = (*Theapframe)(unsafe.Pointer(F)).Fecode + uintptr(X_pcre2_OP_lengths_8[*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode))])
(*Theapframe)(unsafe.Pointer(F)).Freturn_id = RM14
goto MATCH_RECURSE
L_RM14:
;
if !(rrc != DMATCH_NOMATCH) {
goto __3267
}
rrc = rrc
goto RETURN_SWITCH
__3267:
;
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fverb_current_recurse = (*Theapframe)(unsafe.Pointer(F)).Fcurrent_recurse
rrc = -996
goto RETURN_SWITCH
__158:
(*Theapframe)(unsafe.Pointer(F)).Fmark = libc.AssignPtrUintptr(mb+208, (*Theapframe)(unsafe.Pointer(F)).Fecode+uintptr(2))
start_ecode = (*Theapframe)(unsafe.Pointer(F)).Fecode + uintptr(X_pcre2_OP_lengths_8[*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode))]) + uintptr(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode + 1)))
(*Theapframe)(unsafe.Pointer(F)).Freturn_id = RM15
goto MATCH_RECURSE
L_RM15:
;
if !(rrc != DMATCH_NOMATCH) {
goto __3268
}
rrc = rrc
goto RETURN_SWITCH
__3268:
;
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fverb_current_recurse = (*Theapframe)(unsafe.Pointer(F)).Fcurrent_recurse
rrc = -996
goto RETURN_SWITCH
__159:
start_ecode = (*Theapframe)(unsafe.Pointer(F)).Fecode + uintptr(X_pcre2_OP_lengths_8[*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode))])
(*Theapframe)(unsafe.Pointer(F)).Freturn_id = RM16
goto MATCH_RECURSE
L_RM16:
;
if !(rrc != DMATCH_NOMATCH) {
goto __3269
}
rrc = rrc
goto RETURN_SWITCH
__3269:
;
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fverb_skip_ptr = (*Theapframe)(unsafe.Pointer(F)).Feptr // Pass back current position
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fverb_current_recurse = (*Theapframe)(unsafe.Pointer(F)).Fcurrent_recurse
rrc = -995
goto RETURN_SWITCH
// Note that, for Perl compatibility, SKIP with an argument does NOT set
// nomatch_mark. When a pattern match ends with a SKIP_ARG for which there was
// not a matching mark, we have to re-run the match, ignoring the SKIP_ARG
// that failed and any that precede it (either they also failed, or were not
// triggered). To do this, we maintain a count of executed SKIP_ARGs. If a
// SKIP_ARG gets to top level, the match is re-run with mb->ignore_skip_arg
// set to the count of the one that failed.
__160:
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fskip_arg_count++
if !((*Tmatch_block_8)(unsafe.Pointer(mb)).Fskip_arg_count <= (*Tmatch_block_8)(unsafe.Pointer(mb)).Fignore_skip_arg) {
goto __3270
}
*(*TPCRE2_SPTR8)(unsafe.Pointer(F)) += TPCRE2_SPTR8(int32(X_pcre2_OP_lengths_8[*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode))]) + int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode + 1))))
goto __13
__3270:
;
start_ecode = (*Theapframe)(unsafe.Pointer(F)).Fecode + uintptr(X_pcre2_OP_lengths_8[*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode))]) + uintptr(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode + 1)))
(*Theapframe)(unsafe.Pointer(F)).Freturn_id = RM17
goto MATCH_RECURSE
L_RM17:
;
if !(rrc != DMATCH_NOMATCH) {
goto __3271
}
rrc = rrc
goto RETURN_SWITCH
__3271:
;
// Pass back the current skip name and return the special MATCH_SKIP_ARG
// return code. This will either be caught by a matching MARK, or get to the
// top, where it causes a rematch with mb->ignore_skip_arg set to the value of
// mb->skip_arg_count.
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fverb_skip_ptr = (*Theapframe)(unsafe.Pointer(F)).Fecode + uintptr(2)
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fverb_current_recurse = (*Theapframe)(unsafe.Pointer(F)).Fcurrent_recurse
rrc = -994
goto RETURN_SWITCH
// For THEN (and THEN_ARG) we pass back the address of the opcode, so that
// the branch in which it occurs can be determined.
__161:
start_ecode = (*Theapframe)(unsafe.Pointer(F)).Fecode + uintptr(X_pcre2_OP_lengths_8[*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode))])
(*Theapframe)(unsafe.Pointer(F)).Freturn_id = RM18
goto MATCH_RECURSE
L_RM18:
;
if !(rrc != DMATCH_NOMATCH) {
goto __3272
}
rrc = rrc
goto RETURN_SWITCH
__3272:
;
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fverb_ecode_ptr = (*Theapframe)(unsafe.Pointer(F)).Fecode
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fverb_current_recurse = (*Theapframe)(unsafe.Pointer(F)).Fcurrent_recurse
rrc = -993
goto RETURN_SWITCH
__162:
(*Theapframe)(unsafe.Pointer(F)).Fmark = libc.AssignPtrUintptr(mb+208, (*Theapframe)(unsafe.Pointer(F)).Fecode+uintptr(2))
start_ecode = (*Theapframe)(unsafe.Pointer(F)).Fecode + uintptr(X_pcre2_OP_lengths_8[*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode))]) + uintptr(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Theapframe)(unsafe.Pointer(F)).Fecode + 1)))
(*Theapframe)(unsafe.Pointer(F)).Freturn_id = RM19
goto MATCH_RECURSE
L_RM19:
;
if !(rrc != DMATCH_NOMATCH) {
goto __3273
}
rrc = rrc
goto RETURN_SWITCH
__3273:
;
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fverb_ecode_ptr = (*Theapframe)(unsafe.Pointer(F)).Fecode
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fverb_current_recurse = (*Theapframe)(unsafe.Pointer(F)).Fcurrent_recurse
rrc = -993
goto RETURN_SWITCH
// =====================================================================
// There's been some horrible disaster. Arrival here can only mean there is
// something seriously wrong in the code above or the OP_xxx definitions.
__163:
return -44
__13:
;
// Do not insert any code in here without much thought; it is assumed
// that "continue" in the code above comes out to here to repeat the main
// loop.
goto __11
__11:
goto __10
goto __12
__12:
; // End of main loop
// Control never reaches here
// =========================================================================
// The RRETURN() macro jumps here. The number that is saved in Freturn_id
// indicates which label we actually want to return to. The value in Frdepth is
// the index number of the frame in the vector. The return value has been placed
// in rrc.
RETURN_SWITCH:
if !((*Theapframe)(unsafe.Pointer(F)).Feptr > (*Tmatch_block_8)(unsafe.Pointer(mb)).Flast_used_ptr) {
goto __3274
}
(*Tmatch_block_8)(unsafe.Pointer(mb)).Flast_used_ptr = (*Theapframe)(unsafe.Pointer(F)).Feptr
__3274:
;
if !((*Theapframe)(unsafe.Pointer(F)).Frdepth == Tuint32_t(0)) {
goto __3275
}
return rrc
__3275:
; // Exit from the top level
F = F - uintptr((*Theapframe)(unsafe.Pointer(F)).Fback_frame) // Backtrack
*(*Tuint32_t)(unsafe.Pointer((*Tmatch_block_8)(unsafe.Pointer(mb)).Fcb + 104)) |= DPCRE2_CALLOUT_BACKTRACK // Note for callouts
switch int32((*Theapframe)(unsafe.Pointer(F)).Freturn_id) {
case 1:
goto __3277
case 2:
goto __3278
case 3:
goto __3279
case 4:
goto __3280
case 5:
goto __3281
case 6:
goto __3282
case 7:
goto __3283
case 8:
goto __3284
case 9:
goto __3285
case 10:
goto __3286
case 11:
goto __3287
case 12:
goto __3288
case 13:
goto __3289
case 14:
goto __3290
case 15:
goto __3291
case 16:
goto __3292
case 17:
goto __3293
case 18:
goto __3294
case 19:
goto __3295
case 20:
goto __3296
case 21:
goto __3297
case 22:
goto __3298
case 23:
goto __3299
case 24:
goto __3300
case 25:
goto __3301
case 26:
goto __3302
case 27:
goto __3303
case 28:
goto __3304
case 29:
goto __3305
case 30:
goto __3306
case 31:
goto __3307
case 32:
goto __3308
case 33:
goto __3309
case 34:
goto __3310
case 35:
goto __3311
case 36:
goto __3312
case 100:
goto __3313
case 101:
goto __3314
case 200:
goto __3315
case 201:
goto __3316
case 202:
goto __3317
case 203:
goto __3318
case 204:
goto __3319
case 205:
goto __3320
case 206:
goto __3321
case 207:
goto __3322
case 208:
goto __3323
case 209:
goto __3324
case 210:
goto __3325
case 211:
goto __3326
case 212:
goto __3327
case 213:
goto __3328
case 214:
goto __3329
case 215:
goto __3330
case 216:
goto __3331
case 217:
goto __3332
case 218:
goto __3333
case 219:
goto __3334
case 220:
goto __3335
case 221:
goto __3336
case 222:
goto __3337
case 223:
goto __3338
case 224:
goto __3339
case 225:
goto __3340
default:
goto __3341
}
goto __3276
__3277:
goto L_RM1
__3278:
goto L_RM2
__3279:
goto L_RM3
__3280:
goto L_RM4
__3281:
goto L_RM5
__3282:
goto L_RM6
__3283:
goto L_RM7
__3284:
goto L_RM8
__3285:
goto L_RM9
__3286:
goto L_RM10
__3287:
goto L_RM11
__3288:
goto L_RM12
__3289:
goto L_RM13
__3290:
goto L_RM14
__3291:
goto L_RM15
__3292:
goto L_RM16
__3293:
goto L_RM17
__3294:
goto L_RM18
__3295:
goto L_RM19
__3296:
goto L_RM20
__3297:
goto L_RM21
__3298:
goto L_RM22
__3299:
goto L_RM23
__3300:
goto L_RM24
__3301:
goto L_RM25
__3302:
goto L_RM26
__3303:
goto L_RM27
__3304:
goto L_RM28
__3305:
goto L_RM29
__3306:
goto L_RM30
__3307:
goto L_RM31
__3308:
goto L_RM32
__3309:
goto L_RM33
__3310:
goto L_RM34
__3311:
goto L_RM35
__3312:
goto L_RM36
__3313:
goto L_RM100
__3314:
goto L_RM101
__3315:
goto L_RM200
__3316:
goto L_RM201
__3317:
goto L_RM202
__3318:
goto L_RM203
__3319:
goto L_RM204
__3320:
goto L_RM205
__3321:
goto L_RM206
__3322:
goto L_RM207
__3323:
goto L_RM208
__3324:
goto L_RM209
__3325:
goto L_RM210
__3326:
goto L_RM211
__3327:
goto L_RM212
__3328:
goto L_RM213
__3329:
goto L_RM214
__3330:
goto L_RM215
__3331:
goto L_RM216
__3332:
goto L_RM217
__3333:
goto L_RM218
__3334:
goto L_RM219
__3335:
goto L_RM220
__3336:
goto L_RM221
__3337:
goto L_RM222
__3338:
goto L_RM223
__3339:
goto L_RM224
__3340:
goto L_RM225
__3341:
return -44
__3276:
;
return int32(0)
}
// ************************************************
//
// Match a Regular Expression *
//
// This function applies a compiled pattern to a subject string and picks out
// portions of the string if it matches. Two elements in the vector are set for
// each substring: the offsets to the start and end of the substring.
//
// Arguments:
// code points to the compiled expression
// subject points to the subject string
// length length of subject string (may contain binary zeros)
// start_offset where to start in the subject string
// options option bits
// match_data points to a match_data block
// mcontext points a PCRE2 context
//
// Returns: > 0 => success; value is the number of ovector pairs filled
// = 0 => success, but ovector is not big enough
// = -1 => failed to match (PCRE2_ERROR_NOMATCH)
// = -2 => partial match (PCRE2_ERROR_PARTIAL)
// < -2 => some kind of unexpected problem
func Xpcre2_match_8(tls *libc.TLS, code uintptr, subject TPCRE2_SPTR8, length Tsize_t, start_offset Tsize_t, options Tuint32_t, match_data uintptr, mcontext uintptr) int32 { /* pcre2_match.c:6297:1: */
bp := tls.Alloc(20880)
defer tls.Free(20880)
var rc int32
var was_zero_terminated int32
var start_bits uintptr
var re uintptr
var anchored TBOOL
var firstline TBOOL
var has_first_cu TBOOL
var has_req_cu TBOOL
var startline TBOOL
var memchr_found_first_cu TPCRE2_SPTR8
var memchr_found_first_cu2 TPCRE2_SPTR8
var first_cu TPCRE2_UCHAR8
var first_cu2 TPCRE2_UCHAR8
var req_cu TPCRE2_UCHAR8
var req_cu2 TPCRE2_UCHAR8
var bumpalong_limit TPCRE2_SPTR8
var end_subject TPCRE2_SPTR8
var true_end_subject TPCRE2_SPTR8
var start_match TPCRE2_SPTR8
var req_cu_ptr TPCRE2_SPTR8
var start_partial TPCRE2_SPTR8
var match_partial TPCRE2_SPTR8
// This flag is needed even when Unicode is not supported for convenience
// (it is used by the IS_NEWLINE macro).
var utf TBOOL
var ucp TBOOL
var allow_invalid TBOOL
var fragment_options Tuint32_t
var frame_size Tsize_t
// We need to have mb as a pointer to a match block, because the IS_NEWLINE
// macro is used below, and it expects NLBLOCK to be defined as a pointer.
// var cb Tpcre2_callout_block_8 at bp+20768, 112
// var actual_match_block Tmatch_block_8 at bp, 288
var mb uintptr
// Allocate an initial vector of backtracking frames on the stack. If this
// proves to be too small, it is replaced by a larger one on the heap. To get a
// vector of the size required that is aligned for pointers, allocate it as a
// vector of pointers.
// var stack_frames_vector [2560]TPCRE2_SPTR8 at bp+288, 20480
var i uint32
var skipped_bad_start TBOOL
var t TPCRE2_SPTR8
var c TPCRE2_UCHAR8
var ok TBOOL
// In 16-bit and 32_bit modes we have to do our own search, so can
// look for both cases at once.
// In 8-bit mode, the use of memchr() gives a big speed up, even
// though we have to call it twice in order to find the earliest
// occurrence of the code unit in either of its cases. Caching is used
// to remember the positions of previously found code units. This can
// make a huge difference when the strings are very long and only one
// case is actually present.
var pp1 TPCRE2_SPTR8
var pp2 TPCRE2_SPTR8
var searchlength Tsize_t
var c1 Tuint32_t
var pp TPCRE2_SPTR8
var check_length Tsize_t
var p TPCRE2_SPTR8
var new_start_match TPCRE2_SPTR8
was_zero_terminated = 0
start_bits = uintptr(0)
re = code
has_first_cu = DFALSE
has_req_cu = DFALSE
first_cu = TPCRE2_UCHAR8(0)
first_cu2 = TPCRE2_UCHAR8(0)
req_cu = TPCRE2_UCHAR8(0)
req_cu2 = TPCRE2_UCHAR8(0)
utf = DFALSE
ucp = DFALSE
fragment_options = Tuint32_t(0)
mb = bp /* &actual_match_block */
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fstack_frames = bp + 288 /* stack_frames_vector */
// Recognize NULL, length 0 as an empty string.
if !(subject == uintptr(0) && length == uint64(0)) {
goto __1
}
subject = ts + 797 /* "" */
__1:
;
// Plausibility checks
if !(options&libc.CplUint32(DPCRE2_ANCHORED|DPCRE2_ENDANCHORED|DPCRE2_NOTBOL|DPCRE2_NOTEOL|DPCRE2_NOTEMPTY|DPCRE2_NOTEMPTY_ATSTART|DPCRE2_NO_UTF_CHECK|DPCRE2_PARTIAL_HARD|DPCRE2_PARTIAL_SOFT|DPCRE2_NO_JIT|DPCRE2_COPY_MATCHED_SUBJECT) != Tuint32_t(0)) {
goto __2
}
return -34
__2:
;
if !(code == uintptr(0) || subject == uintptr(0) || match_data == uintptr(0)) {
goto __3
}
return -51
__3:
;
start_match = subject + uintptr(start_offset)
req_cu_ptr = start_match - uintptr(1)
if !(length == libc.CplUint64(uint64(0))) {
goto __4
}
length = X_pcre2_strlen_8(tls, subject)
was_zero_terminated = 1
__4:
;
true_end_subject = libc.AssignUintptr(&end_subject, subject+uintptr(length))
if !(start_offset > length) {
goto __5
}
return -33
__5:
;
// Check that the first field in the block is the magic number.
if !(uint64((*Tpcre2_real_code_8)(unsafe.Pointer(re)).Fmagic_number) != DMAGIC_NUMBER) {
goto __6
}
return -31
__6:
;
// Check the code unit width.
if !((*Tpcre2_real_code_8)(unsafe.Pointer(re)).Fflags&Tuint32_t(DPCRE2_MODE8|DPCRE2_MODE16|DPCRE2_MODE32) != Tuint32_t(DPCRE2_CODE_UNIT_WIDTH/8)) {
goto __7
}
return -32
__7:
;
// PCRE2_NOTEMPTY and PCRE2_NOTEMPTY_ATSTART are match-time flags in the
// options variable for this function. Users of PCRE2 who are not calling the
// function directly would like to have a way of setting these flags, in the same
// way that they can set pcre2_compile() flags like PCRE2_NO_AUTOPOSSESS with
// constructions like (*NO_AUTOPOSSESS). To enable this, (*NOTEMPTY) and
// (*NOTEMPTY_ATSTART) set bits in the pattern's "flag" function which we now
// transfer to the options for this function. The bits are guaranteed to be
// adjacent, but do not have the same values. This bit of Boolean trickery assumes
// that the match-time bits are not more significant than the flag bits. If by
// accident this is not the case, a compile-time division by zero error will
// occur.
options = options | (*Tpcre2_real_code_8)(unsafe.Pointer(re)).Fflags&Tuint32_t(DPCRE2_NOTEMPTY_SET|DPCRE2_NE_ATST_SET)/(uint32((DPCRE2_NOTEMPTY_SET|DPCRE2_NE_ATST_SET)&(libc.CplInt32(DPCRE2_NOTEMPTY_SET|DPCRE2_NE_ATST_SET)+1))/((DPCRE2_NOTEMPTY|DPCRE2_NOTEMPTY_ATSTART)&(libc.CplUint32(DPCRE2_NOTEMPTY|DPCRE2_NOTEMPTY_ATSTART)+uint32(1))))
// If the pattern was successfully studied with JIT support, we will run the
// JIT executable instead of the rest of this function. Most options must be set
// at compile time for the JIT code to be usable.
// Initialize UTF/UCP parameters.
utf = libc.Bool32((*Tpcre2_real_code_8)(unsafe.Pointer(re)).Foverall_options&DPCRE2_UTF != Tuint32_t(0))
allow_invalid = libc.Bool32((*Tpcre2_real_code_8)(unsafe.Pointer(re)).Foverall_options&DPCRE2_MATCH_INVALID_UTF != Tuint32_t(0))
ucp = libc.Bool32((*Tpcre2_real_code_8)(unsafe.Pointer(re)).Foverall_options&DPCRE2_UCP != Tuint32_t(0))
// Convert the partial matching flags into an integer.
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial = func() uint16 {
if options&DPCRE2_PARTIAL_HARD != Tuint32_t(0) {
return uint16(2)
}
return func() uint16 {
if options&DPCRE2_PARTIAL_SOFT != Tuint32_t(0) {
return uint16(1)
}
return uint16(0)
}()
}()
// Partial matching and PCRE2_ENDANCHORED are currently not allowed at the same
// time.
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) != 0 && ((*Tpcre2_real_code_8)(unsafe.Pointer(re)).Foverall_options|options)&DPCRE2_ENDANCHORED != Tuint32_t(0)) {
goto __8
}
return -34
__8:
;
// It is an error to set an offset limit without setting the flag at compile
// time.
if !(mcontext != uintptr(0) && (*Tpcre2_match_context_8)(unsafe.Pointer(mcontext)).Foffset_limit != libc.CplUint64(uint64(0)) && (*Tpcre2_real_code_8)(unsafe.Pointer(re)).Foverall_options&DPCRE2_USE_OFFSET_LIMIT == Tuint32_t(0)) {
goto __9
}
return -56
__9:
;
// If the match data block was previously used with PCRE2_COPY_MATCHED_SUBJECT,
// free the memory that was obtained. Set the field to NULL for no match cases.
if !(uint32((*Tpcre2_match_data_8)(unsafe.Pointer(match_data)).Fflags)&DPCRE2_MD_COPIED_SUBJECT != uint32(0)) {
goto __10
}
(*struct {
f func(*libc.TLS, uintptr, uintptr)
})(unsafe.Pointer(&struct{ uintptr }{(*Tpcre2_match_data_8)(unsafe.Pointer(match_data)).Fmemctl.Ffree})).f(tls, (*Tpcre2_match_data_8)(unsafe.Pointer(match_data)).Fsubject,
(*Tpcre2_match_data_8)(unsafe.Pointer(match_data)).Fmemctl.Fmemory_data)
*(*Tuint8_t)(unsafe.Pointer(match_data + 73)) &= libc.Uint8FromUint32(libc.CplUint32(DPCRE2_MD_COPIED_SUBJECT))
__10:
;
(*Tpcre2_match_data_8)(unsafe.Pointer(match_data)).Fsubject = uintptr(0)
// Zero the error offset in case the first code unit is invalid UTF.
(*Tpcre2_match_data_8)(unsafe.Pointer(match_data)).Fstartchar = uint64(0)
// ============================= JIT matching ==============================
// Prepare for JIT matching. Check a UTF string for validity unless no check is
// requested or invalid UTF can be handled. We check only the portion of the
// subject that might be be inspected during matching - from the offset minus the
// maximum lookbehind to the given length. This saves time when a small part of a
// large subject is being matched by the use of a starting offset. Note that the
// maximum lookbehind is a number of characters, not code units.
// ========================= End of JIT matching ==========================
// Proceed with non-JIT matching. The default is to allow lookbehinds to the
// start of the subject. A UTF check when there is a non-zero offset may change
// this.
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fcheck_subject = subject
// If a UTF subject string was not checked for validity in the JIT code above,
// check it here, and handle support for invalid UTF strings. The check above
// happens only when invalid UTF is not supported and PCRE2_NO_CHECK_UTF is unset.
// If we get here in those circumstances, it means the subject string is valid,
// but for some reason JIT matching was not successful. There is no need to check
// the subject again.
//
// We check only the portion of the subject that might be be inspected during
// matching - from the offset minus the maximum lookbehind to the given length.
// This saves time when a small part of a large subject is being matched by the
// use of a starting offset. Note that the maximum lookbehind is a number of
// characters, not code units.
//
// Note also that support for invalid UTF forces a check, overriding the setting
// of PCRE2_NO_CHECK_UTF.
if !(utf != 0 && (options&DPCRE2_NO_UTF_CHECK == Tuint32_t(0) || allow_invalid != 0)) {
goto __11
}
skipped_bad_start = DFALSE
// For 8-bit and 16-bit UTF, check that the first code unit is a valid
// character start. If we are handling invalid UTF, just skip over such code
// units. Otherwise, give an appropriate error.
if !(allow_invalid != 0) {
goto __12
}
__14:
if !(start_match < end_subject && uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(start_match)))&0xc0 == 0x80) {
goto __15
}
start_match++
skipped_bad_start = DTRUE
goto __14
__15:
;
goto __13
__12:
if !(start_match < end_subject && uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(start_match)))&0xc0 == 0x80) {
goto __16
}
if !(start_offset > uint64(0)) {
goto __17
}
return -36
__17:
;
return -22 // Isolated 0x80 byte
__16:
;
__13:
;
// The mb->check_subject field points to the start of UTF checking;
// lookbehinds can go back no further than this.
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fcheck_subject = start_match
// Move back by the maximum lookbehind, just in case it happens at the very
// start of matching, but don't do this if we skipped bad 8-bit or 16-bit code
// units above.
if !!(skipped_bad_start != 0) {
goto __18
}
i = uint32((*Tpcre2_real_code_8)(unsafe.Pointer(re)).Fmax_lookbehind)
__19:
if !(i > uint32(0) && (*Tmatch_block_8)(unsafe.Pointer(mb)).Fcheck_subject > subject) {
goto __21
}
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fcheck_subject--
__22:
if !((*Tmatch_block_8)(unsafe.Pointer(mb)).Fcheck_subject > subject && int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Tmatch_block_8)(unsafe.Pointer(mb)).Fcheck_subject)))&0xc0 == 0x80) {
goto __23
}
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fcheck_subject--
goto __22
__23:
;
goto __20
__20:
i--
goto __19
goto __21
__21:
;
__18:
;
// Validate the relevant portion of the subject. There's a loop in case we
// encounter bad UTF in the characters preceding start_match which we are
// scanning because of a lookbehind.
__24:
(*Tpcre2_match_data_8)(unsafe.Pointer(match_data)).Frc = X_pcre2_valid_utf_8(tls, (*Tmatch_block_8)(unsafe.Pointer(mb)).Fcheck_subject,
length-Tsize_t((int64((*Tmatch_block_8)(unsafe.Pointer(mb)).Fcheck_subject)-int64(subject))/1), match_data+64)
if !((*Tpcre2_match_data_8)(unsafe.Pointer(match_data)).Frc == 0) {
goto __27
}
goto __26
__27:
; // Valid UTF string
// Invalid UTF string. Adjust the offset to be an absolute offset in the
// whole string. If we are handling invalid UTF strings, set end_subject to
// stop before the bad code unit, and set the options to "not end of line".
// Otherwise return the error.
*(*Tsize_t)(unsafe.Pointer(match_data + 64)) += Tsize_t((int64((*Tmatch_block_8)(unsafe.Pointer(mb)).Fcheck_subject) - int64(subject)) / 1)
if !(!(allow_invalid != 0) || (*Tpcre2_match_data_8)(unsafe.Pointer(match_data)).Frc > 0) {
goto __28
}
return (*Tpcre2_match_data_8)(unsafe.Pointer(match_data)).Frc
__28:
;
end_subject = subject + uintptr((*Tpcre2_match_data_8)(unsafe.Pointer(match_data)).Fstartchar)
// If the end precedes start_match, it means there is invalid UTF in the
// extra code units we reversed over because of a lookbehind. Advance past the
// first bad code unit, and then skip invalid character starting code units in
// 8-bit and 16-bit modes, and try again with the original end point.
if !(end_subject < start_match) {
goto __29
}
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fcheck_subject = end_subject + uintptr(1)
__31:
if !((*Tmatch_block_8)(unsafe.Pointer(mb)).Fcheck_subject < start_match && uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer((*Tmatch_block_8)(unsafe.Pointer(mb)).Fcheck_subject)))&0xc0 == 0x80) {
goto __32
}
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fcheck_subject++
goto __31
__32:
;
end_subject = true_end_subject
goto __30
__29:
fragment_options = DPCRE2_NOTEOL
goto __26
__30:
;
goto __25
__25:
goto __24
goto __26
__26:
;
__11:
;
// A NULL match context means "use a default context", but we take the memory
// control functions from the pattern.
if !(mcontext == uintptr(0)) {
goto __33
}
mcontext = uintptr(unsafe.Pointer(&X_pcre2_default_match_context_8))
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fmemctl = (*Tpcre2_real_code_8)(unsafe.Pointer(re)).Fmemctl
goto __34
__33:
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fmemctl = (*Tpcre2_match_context_8)(unsafe.Pointer(mcontext)).Fmemctl
__34:
;
anchored = libc.Bool32(((*Tpcre2_real_code_8)(unsafe.Pointer(re)).Foverall_options|options)&DPCRE2_ANCHORED != Tuint32_t(0))
firstline = libc.Bool32((*Tpcre2_real_code_8)(unsafe.Pointer(re)).Foverall_options&DPCRE2_FIRSTLINE != Tuint32_t(0))
startline = libc.Bool32((*Tpcre2_real_code_8)(unsafe.Pointer(re)).Fflags&Tuint32_t(DPCRE2_STARTLINE) != Tuint32_t(0))
if (*Tpcre2_match_context_8)(unsafe.Pointer(mcontext)).Foffset_limit == libc.CplUint64(uint64(0)) {
bumpalong_limit = true_end_subject
} else {
bumpalong_limit = subject + uintptr((*Tpcre2_match_context_8)(unsafe.Pointer(mcontext)).Foffset_limit)
}
// Initialize and set up the fixed fields in the callout block, with a pointer
// in the match block.
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fcb = bp + 20768 /* &cb */
(*Tpcre2_callout_block_8)(unsafe.Pointer(bp + 20768 /* &cb */)).Fversion = Tuint32_t(2)
(*Tpcre2_callout_block_8)(unsafe.Pointer(bp + 20768 /* &cb */)).Fsubject = subject
(*Tpcre2_callout_block_8)(unsafe.Pointer(bp + 20768 /* &cb */)).Fsubject_length = Tsize_t((int64(end_subject) - int64(subject)) / 1)
(*Tpcre2_callout_block_8)(unsafe.Pointer(bp + 20768 /* &cb */)).Fcallout_flags = Tuint32_t(0)
// Fill in the remaining fields in the match block, except for moptions, which
// gets set later.
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fcallout = (*Tpcre2_match_context_8)(unsafe.Pointer(mcontext)).Fcallout
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fcallout_data = (*Tpcre2_match_context_8)(unsafe.Pointer(mcontext)).Fcallout_data
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fstart_subject = subject
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fstart_offset = start_offset
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject = end_subject
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fhasthen = libc.Bool32((*Tpcre2_real_code_8)(unsafe.Pointer(re)).Fflags&Tuint32_t(DPCRE2_HASTHEN) != Tuint32_t(0))
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fallowemptypartial = libc.Bool32(int32((*Tpcre2_real_code_8)(unsafe.Pointer(re)).Fmax_lookbehind) > 0 || (*Tpcre2_real_code_8)(unsafe.Pointer(re)).Fflags&Tuint32_t(DPCRE2_MATCH_EMPTY) != Tuint32_t(0))
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fpoptions = (*Tpcre2_real_code_8)(unsafe.Pointer(re)).Foverall_options // Pattern options
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fignore_skip_arg = Tuint32_t(0)
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fmark = libc.AssignPtrUintptr(mb+208, uintptr(0)) // In case never set
// The name table is needed for finding all the numbers associated with a
// given name, for condition testing. The code follows the name table.
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fname_table = re + uintptr(uint64(unsafe.Sizeof(Tpcre2_real_code_8{})))
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fname_count = (*Tpcre2_real_code_8)(unsafe.Pointer(re)).Fname_count
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fname_entry_size = (*Tpcre2_real_code_8)(unsafe.Pointer(re)).Fname_entry_size
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fstart_code = (*Tmatch_block_8)(unsafe.Pointer(mb)).Fname_table + uintptr(int32((*Tpcre2_real_code_8)(unsafe.Pointer(re)).Fname_count)*int32((*Tpcre2_real_code_8)(unsafe.Pointer(re)).Fname_entry_size))
// Process the \R and newline settings.
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fbsr_convention = (*Tpcre2_real_code_8)(unsafe.Pointer(re)).Fbsr_convention
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fnltype = Tuint32_t(DNLTYPE_FIXED)
switch int32((*Tpcre2_real_code_8)(unsafe.Pointer(re)).Fnewline_convention) {
case DPCRE2_NEWLINE_CR:
goto __36
case DPCRE2_NEWLINE_LF:
goto __37
case DPCRE2_NEWLINE_NUL:
goto __38
case DPCRE2_NEWLINE_CRLF:
goto __39
case DPCRE2_NEWLINE_ANY:
goto __40
case DPCRE2_NEWLINE_ANYCRLF:
goto __41
default:
goto __42
}
goto __35
__36:
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fnllen = Tuint32_t(1)
*(*TPCRE2_UCHAR8)(unsafe.Pointer(mb + 260)) = TPCRE2_UCHAR8('\015')
goto __35
__37:
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fnllen = Tuint32_t(1)
*(*TPCRE2_UCHAR8)(unsafe.Pointer(mb + 260)) = TPCRE2_UCHAR8('\012')
goto __35
__38:
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fnllen = Tuint32_t(1)
*(*TPCRE2_UCHAR8)(unsafe.Pointer(mb + 260)) = TPCRE2_UCHAR8(0)
goto __35
__39:
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fnllen = Tuint32_t(2)
*(*TPCRE2_UCHAR8)(unsafe.Pointer(mb + 260)) = TPCRE2_UCHAR8('\015')
*(*TPCRE2_UCHAR8)(unsafe.Pointer(mb + 260 + 1)) = TPCRE2_UCHAR8('\012')
goto __35
__40:
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fnltype = Tuint32_t(DNLTYPE_ANY)
goto __35
__41:
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fnltype = Tuint32_t(DNLTYPE_ANYCRLF)
goto __35
__42:
return -44
__35:
;
// The backtracking frames have fixed data at the front, and a PCRE2_SIZE
// vector at the end, whose size depends on the number of capturing parentheses in
// the pattern. It is not used at all if there are no capturing parentheses.
//
// frame_size is the total size of each frame
// mb->frame_vector_size is the total usable size of the vector (rounded down
// to a whole number of frames)
//
// The last of these is changed within the match() function if the frame vector
// has to be expanded. We therefore put it into the match block so that it is
// correct when calling match() more than once for non-anchored patterns.
//
// We must also pad frame_size for alignment to ensure subsequent frames are as
// aligned as heapframe. Whilst ovector is word-aligned due to being a PCRE2_SIZE
// array, that does not guarantee it is suitably aligned for pointers, as some
// architectures have pointers that are larger than a size_t.
frame_size = (uint64(uintptr(0)+128) + uint64(int32((*Tpcre2_real_code_8)(unsafe.Pointer(re)).Ftop_bracket)*2)*uint64(unsafe.Sizeof(Tsize_t(0))) + uint64(uintptr(0)+8) - uint64(1)) & libc.CplUint64(uint64(uintptr(0)+8)-uint64(1))
// Limits set in the pattern override the match context only if they are
// smaller.
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fheap_limit = func() uint64 {
if (*Tpcre2_match_context_8)(unsafe.Pointer(mcontext)).Fheap_limit < (*Tpcre2_real_code_8)(unsafe.Pointer(re)).Flimit_heap {
return uint64((*Tpcre2_match_context_8)(unsafe.Pointer(mcontext)).Fheap_limit)
}
return uint64((*Tpcre2_real_code_8)(unsafe.Pointer(re)).Flimit_heap)
}()
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fmatch_limit = func() uint32 {
if (*Tpcre2_match_context_8)(unsafe.Pointer(mcontext)).Fmatch_limit < (*Tpcre2_real_code_8)(unsafe.Pointer(re)).Flimit_match {
return (*Tpcre2_match_context_8)(unsafe.Pointer(mcontext)).Fmatch_limit
}
return (*Tpcre2_real_code_8)(unsafe.Pointer(re)).Flimit_match
}()
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fmatch_limit_depth = func() uint32 {
if (*Tpcre2_match_context_8)(unsafe.Pointer(mcontext)).Fdepth_limit < (*Tpcre2_real_code_8)(unsafe.Pointer(re)).Flimit_depth {
return (*Tpcre2_match_context_8)(unsafe.Pointer(mcontext)).Fdepth_limit
}
return (*Tpcre2_real_code_8)(unsafe.Pointer(re)).Flimit_depth
}()
// If a pattern has very many capturing parentheses, the frame size may be very
// large. Ensure that there are at least 10 available frames by getting an initial
// vector on the heap if necessary, except when the heap limit prevents this. Get
// fewer if possible. (The heap limit is in kibibytes.)
if !(frame_size <= uint64(DSTART_FRAMES_SIZE/10)) {
goto __43
}
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fmatch_frames = (*Tmatch_block_8)(unsafe.Pointer(mb)).Fstack_frames // Initial frame vector on the stack
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fframe_vector_size = uint64(DSTART_FRAMES_SIZE) / frame_size * frame_size
goto __44
__43:
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fframe_vector_size = frame_size * uint64(10)
if !((*Tmatch_block_8)(unsafe.Pointer(mb)).Fframe_vector_size/uint64(1024) > (*Tmatch_block_8)(unsafe.Pointer(mb)).Fheap_limit) {
goto __45
}
if !(frame_size > (*Tmatch_block_8)(unsafe.Pointer(mb)).Fheap_limit*uint64(1024)) {
goto __46
}
return -63
__46:
;
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fframe_vector_size = (*Tmatch_block_8)(unsafe.Pointer(mb)).Fheap_limit * uint64(1024) / frame_size * frame_size
__45:
;
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fmatch_frames = (*struct {
f func(*libc.TLS, Tsize_t, uintptr) uintptr
})(unsafe.Pointer(&struct{ uintptr }{(*Tmatch_block_8)(unsafe.Pointer(mb)).Fmemctl.Fmalloc})).f(tls, (*Tmatch_block_8)(unsafe.Pointer(mb)).Fframe_vector_size,
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fmemctl.Fmemory_data)
if !((*Tmatch_block_8)(unsafe.Pointer(mb)).Fmatch_frames == uintptr(0)) {
goto __47
}
return -48
__47:
;
__44:
;
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fmatch_frames_top = (*Tmatch_block_8)(unsafe.Pointer(mb)).Fmatch_frames + uintptr((*Tmatch_block_8)(unsafe.Pointer(mb)).Fframe_vector_size)
// Write to the ovector within the first frame to mark every capture unset and
// to avoid uninitialized memory read errors when it is copied to a new frame.
libc.Xmemset(tls, (*Tmatch_block_8)(unsafe.Pointer(mb)).Fmatch_frames+uintptr(uint64(uintptr(0)+128)), 0xff,
frame_size-Tsize_t(uintptr(0)+128))
// Pointers to the individual character tables
(*Tmatch_block_8)(unsafe.Pointer(mb)).Flcc = (*Tpcre2_real_code_8)(unsafe.Pointer(re)).Ftables + uintptr(Dlcc_offset)
(*Tmatch_block_8)(unsafe.Pointer(mb)).Ffcc = (*Tpcre2_real_code_8)(unsafe.Pointer(re)).Ftables + uintptr(Dfcc_offset)
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fctypes = (*Tpcre2_real_code_8)(unsafe.Pointer(re)).Ftables + uintptr(Dcbits_offset+Dcbit_length)
// Set up the first code unit to match, if available. If there's no first code
// unit there may be a bitmap of possible first characters.
if !((*Tpcre2_real_code_8)(unsafe.Pointer(re)).Fflags&Tuint32_t(DPCRE2_FIRSTSET) != Tuint32_t(0)) {
goto __48
}
has_first_cu = DTRUE
first_cu = libc.AssignUint8(&first_cu2, TPCRE2_UCHAR8((*Tpcre2_real_code_8)(unsafe.Pointer(re)).Ffirst_codeunit))
if !((*Tpcre2_real_code_8)(unsafe.Pointer(re)).Fflags&Tuint32_t(DPCRE2_FIRSTCASELESS) != Tuint32_t(0)) {
goto __50
}
first_cu2 = *(*Tuint8_t)(unsafe.Pointer((*Tmatch_block_8)(unsafe.Pointer(mb)).Ffcc + uintptr(first_cu)))
if !(int32(first_cu) > 127 && ucp != 0 && !(utf != 0)) {
goto __51
}
first_cu2 = TPCRE2_UCHAR8(Tuint32_t(int32(first_cu) + (*Tucd_record)(unsafe.Pointer(uintptr(unsafe.Pointer(&X_pcre2_ucd_records_8))+uintptr(X_pcre2_ucd_stage2_8[int32(X_pcre2_ucd_stage1_8[int32(first_cu)/DUCD_BLOCK_SIZE])*DUCD_BLOCK_SIZE+int32(first_cu)%DUCD_BLOCK_SIZE])*12)).Fother_case))
__51:
;
__50:
;
goto __49
__48:
if !(!(startline != 0) && (*Tpcre2_real_code_8)(unsafe.Pointer(re)).Fflags&Tuint32_t(DPCRE2_FIRSTMAPSET) != Tuint32_t(0)) {
goto __52
}
start_bits = re + 40 /* &.start_bitmap */
__52:
;
__49:
;
// There may also be a "last known required character" set.
if !((*Tpcre2_real_code_8)(unsafe.Pointer(re)).Fflags&Tuint32_t(DPCRE2_LASTSET) != Tuint32_t(0)) {
goto __53
}
has_req_cu = DTRUE
req_cu = libc.AssignUint8(&req_cu2, TPCRE2_UCHAR8((*Tpcre2_real_code_8)(unsafe.Pointer(re)).Flast_codeunit))
if !((*Tpcre2_real_code_8)(unsafe.Pointer(re)).Fflags&Tuint32_t(DPCRE2_LASTCASELESS) != Tuint32_t(0)) {
goto __54
}
req_cu2 = *(*Tuint8_t)(unsafe.Pointer((*Tmatch_block_8)(unsafe.Pointer(mb)).Ffcc + uintptr(req_cu)))
if !(int32(req_cu) > 127 && ucp != 0 && !(utf != 0)) {
goto __55
}
req_cu2 = TPCRE2_UCHAR8(Tuint32_t(int32(req_cu) + (*Tucd_record)(unsafe.Pointer(uintptr(unsafe.Pointer(&X_pcre2_ucd_records_8))+uintptr(X_pcre2_ucd_stage2_8[int32(X_pcre2_ucd_stage1_8[int32(req_cu)/DUCD_BLOCK_SIZE])*DUCD_BLOCK_SIZE+int32(req_cu)%DUCD_BLOCK_SIZE])*12)).Fother_case))
__55:
;
__54:
;
__53:
;
// ==========================================================================
// Loop for handling unanchored repeated matching attempts; for anchored regexs
// the loop runs just once.
FRAGMENT_RESTART:
start_partial = libc.AssignUintptr(&match_partial, uintptr(0))
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fhitend = DFALSE
memchr_found_first_cu = uintptr(0)
memchr_found_first_cu2 = uintptr(0)
__56:
// ----------------- Start of match optimizations ----------------
// There are some optimizations that avoid running the match if a known
// starting point is not found, or if a known later code unit is not present.
// However, there is an option (settable at compile time) that disables these,
// for testing and for ensuring that all callouts do actually occur.
if !((*Tpcre2_real_code_8)(unsafe.Pointer(re)).Foverall_options&DPCRE2_NO_START_OPTIMIZE == Tuint32_t(0)) {
goto __59
}
// If firstline is TRUE, the start of the match is constrained to the first
// line of a multiline string. That is, the match must be before or at the
// first newline following the start of matching. Temporarily adjust
// end_subject so that we stop the scans for a first code unit at a newline.
// If the match fails at the newline, later code breaks the loop.
if !(firstline != 0) {
goto __60
}
t = start_match
if !(utf != 0) {
goto __61
}
__63:
if !(t < end_subject && !(func() int32 {
if (*Tmatch_block_8)(unsafe.Pointer(mb)).Fnltype != Tuint32_t(DNLTYPE_FIXED) {
return libc.Bool32(t < (*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject && X_pcre2_is_newline_8(tls, t, (*Tmatch_block_8)(unsafe.Pointer(mb)).Fnltype, (*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject, mb+256, utf) != 0)
}
return libc.Bool32(t <= (*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject-uintptr((*Tmatch_block_8)(unsafe.Pointer(mb)).Fnllen) && int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(t))) == int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(mb + 260))) && ((*Tmatch_block_8)(unsafe.Pointer(mb)).Fnllen == Tuint32_t(1) || int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(t + uintptr(1)))) == int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(mb + 260 + 1)))))
}() != 0)) {
goto __64
}
t++
__65:
if !(t < end_subject && uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(t)))&0xc0 == 0x80) {
goto __66
}
t++
goto __65
__66:
;
goto __63
__64:
;
goto __62
__61:
__67:
if !(t < end_subject && !(func() int32 {
if (*Tmatch_block_8)(unsafe.Pointer(mb)).Fnltype != Tuint32_t(DNLTYPE_FIXED) {
return libc.Bool32(t < (*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject && X_pcre2_is_newline_8(tls, t, (*Tmatch_block_8)(unsafe.Pointer(mb)).Fnltype, (*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject, mb+256, utf) != 0)
}
return libc.Bool32(t <= (*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject-uintptr((*Tmatch_block_8)(unsafe.Pointer(mb)).Fnllen) && int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(t))) == int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(mb + 260))) && ((*Tmatch_block_8)(unsafe.Pointer(mb)).Fnllen == Tuint32_t(1) || int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(t + uintptr(1)))) == int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(mb + 260 + 1)))))
}() != 0)) {
goto __68
}
t++
goto __67
__68:
;
__62:
;
end_subject = t
__60:
;
// Anchored: check the first code unit if one is recorded. This may seem
// pointless but it can help in detecting a no match case without scanning for
// the required code unit.
if !(anchored != 0) {
goto __69
}
if !(has_first_cu != 0 || start_bits != uintptr(0)) {
goto __71
}
ok = libc.Bool32(start_match < end_subject)
if !(ok != 0) {
goto __72
}
c = *(*TPCRE2_UCHAR8)(unsafe.Pointer(start_match))
ok = libc.Bool32(has_first_cu != 0 && (int32(c) == int32(first_cu) || int32(c) == int32(first_cu2)))
if !(!(ok != 0) && start_bits != uintptr(0)) {
goto __73
}
ok = libc.Bool32(uint32(*(*Tuint8_t)(unsafe.Pointer(start_bits + uintptr(int32(c)/8))))&(uint32(1)<<(int32(c)&7)) != uint32(0))
__73:
;
__72:
;
if !!(ok != 0) {
goto __74
}
rc = DMATCH_NOMATCH
goto __58
__74:
;
__71:
;
goto __70
__69:
if !(has_first_cu != 0) {
goto __75
}
if !(int32(first_cu) != int32(first_cu2)) {
goto __77
} /* Caseless */
// In 16-bit and 32_bit modes we have to do our own search, so can
// look for both cases at once.
// In 8-bit mode, the use of memchr() gives a big speed up, even
// though we have to call it twice in order to find the earliest
// occurrence of the code unit in either of its cases. Caching is used
// to remember the positions of previously found code units. This can
// make a huge difference when the strings are very long and only one
// case is actually present.
pp1 = uintptr(0)
pp2 = uintptr(0)
searchlength = Tsize_t((int64(end_subject) - int64(start_match)) / 1)
// If we haven't got a previously found position for first_cu, or if
// the current starting position is later, we need to do a search. If
// the code unit is not found, set it to the end.
if !(memchr_found_first_cu == uintptr(0) || start_match > memchr_found_first_cu) {
goto __79
}
pp1 = libc.Xmemchr(tls, start_match, int32(first_cu), searchlength)
if pp1 == uintptr(0) {
memchr_found_first_cu = end_subject
} else {
memchr_found_first_cu = pp1
}
goto __80
__79:
if memchr_found_first_cu == end_subject {
pp1 = uintptr(0)
} else {
pp1 = memchr_found_first_cu
}
__80:
;
// Do the same thing for the other case.
if !(memchr_found_first_cu2 == uintptr(0) || start_match > memchr_found_first_cu2) {
goto __81
}
pp2 = libc.Xmemchr(tls, start_match, int32(first_cu2), searchlength)
if pp2 == uintptr(0) {
memchr_found_first_cu2 = end_subject
} else {
memchr_found_first_cu2 = pp2
}
goto __82
__81:
if memchr_found_first_cu2 == end_subject {
pp2 = uintptr(0)
} else {
pp2 = memchr_found_first_cu2
}
__82:
;
// Set the start to the end of the subject if neither case was found.
// Otherwise, use the earlier found point.
if !(pp1 == uintptr(0)) {
goto __83
}
if pp2 == uintptr(0) {
start_match = end_subject
} else {
start_match = pp2
}
goto __84
__83:
if pp2 == uintptr(0) || pp1 < pp2 {
start_match = pp1
} else {
start_match = pp2
}
__84:
;
goto __78
__77:
start_match = libc.Xmemchr(tls, start_match, int32(first_cu), uint64((int64(end_subject)-int64(start_match))/1))
if !(start_match == uintptr(0)) {
goto __85
}
start_match = end_subject
__85:
;
__78:
;
// If we can't find the required first code unit, having reached the
// true end of the subject, break the bumpalong loop, to force a match
// failure, except when doing partial matching, when we let the next cycle
// run at the end of the subject. To see why, consider the pattern
// /(?<=abc)def/, which partially matches "abc", even though the string
// does not contain the starting character "d". If we have not reached the
// true end of the subject (PCRE2_FIRSTLINE caused end_subject to be
// temporarily modified) we also let the cycle run, because the matching
// string is legitimately allowed to start with the first code unit of a
// newline.
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) == 0 && start_match >= (*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject) {
goto __86
}
rc = DMATCH_NOMATCH
goto __58
__86:
;
goto __76
__75:
if !(startline != 0) {
goto __87
}
if !(start_match > (*Tmatch_block_8)(unsafe.Pointer(mb)).Fstart_subject+uintptr(start_offset)) {
goto __89
}
if !(utf != 0) {
goto __90
}
__92:
if !(start_match < end_subject && !(func() int32 {
if (*Tmatch_block_8)(unsafe.Pointer(mb)).Fnltype != Tuint32_t(DNLTYPE_FIXED) {
return libc.Bool32(start_match > (*Tmatch_block_8)(unsafe.Pointer(mb)).Fstart_subject && X_pcre2_was_newline_8(tls, start_match, (*Tmatch_block_8)(unsafe.Pointer(mb)).Fnltype, (*Tmatch_block_8)(unsafe.Pointer(mb)).Fstart_subject, mb+256, utf) != 0)
}
return libc.Bool32(start_match >= (*Tmatch_block_8)(unsafe.Pointer(mb)).Fstart_subject+uintptr((*Tmatch_block_8)(unsafe.Pointer(mb)).Fnllen) && int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(start_match - uintptr((*Tmatch_block_8)(unsafe.Pointer(mb)).Fnllen)))) == int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(mb + 260))) && ((*Tmatch_block_8)(unsafe.Pointer(mb)).Fnllen == Tuint32_t(1) || int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(start_match - uintptr((*Tmatch_block_8)(unsafe.Pointer(mb)).Fnllen) + uintptr(1)))) == int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(mb + 260 + 1)))))
}() != 0)) {
goto __93
}
start_match++
__94:
if !(start_match < end_subject && uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(start_match)))&0xc0 == 0x80) {
goto __95
}
start_match++
goto __94
__95:
;
goto __92
__93:
;
goto __91
__90:
__96:
if !(start_match < end_subject && !(func() int32 {
if (*Tmatch_block_8)(unsafe.Pointer(mb)).Fnltype != Tuint32_t(DNLTYPE_FIXED) {
return libc.Bool32(start_match > (*Tmatch_block_8)(unsafe.Pointer(mb)).Fstart_subject && X_pcre2_was_newline_8(tls, start_match, (*Tmatch_block_8)(unsafe.Pointer(mb)).Fnltype, (*Tmatch_block_8)(unsafe.Pointer(mb)).Fstart_subject, mb+256, utf) != 0)
}
return libc.Bool32(start_match >= (*Tmatch_block_8)(unsafe.Pointer(mb)).Fstart_subject+uintptr((*Tmatch_block_8)(unsafe.Pointer(mb)).Fnllen) && int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(start_match - uintptr((*Tmatch_block_8)(unsafe.Pointer(mb)).Fnllen)))) == int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(mb + 260))) && ((*Tmatch_block_8)(unsafe.Pointer(mb)).Fnllen == Tuint32_t(1) || int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(start_match - uintptr((*Tmatch_block_8)(unsafe.Pointer(mb)).Fnllen) + uintptr(1)))) == int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(mb + 260 + 1)))))
}() != 0)) {
goto __97
}
start_match++
goto __96
__97:
;
__91:
;
// If we have just passed a CR and the newline option is ANY or
// ANYCRLF, and we are now at a LF, advance the match position by one
// more code unit.
if !(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(start_match + libc.UintptrFromInt32(-1)))) == '\015' && ((*Tmatch_block_8)(unsafe.Pointer(mb)).Fnltype == Tuint32_t(DNLTYPE_ANY) || (*Tmatch_block_8)(unsafe.Pointer(mb)).Fnltype == Tuint32_t(DNLTYPE_ANYCRLF)) && start_match < end_subject && int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(start_match))) == '\012') {
goto __98
}
start_match++
__98:
;
__89:
;
goto __88
__87:
if !(start_bits != uintptr(0)) {
goto __99
}
__100:
if !(start_match < end_subject) {
goto __101
}
c1 = Tuint32_t(*(*TPCRE2_UCHAR8)(unsafe.Pointer(start_match)))
if !(uint32(*(*Tuint8_t)(unsafe.Pointer(start_bits + uintptr(c1/Tuint32_t(8)))))&(uint32(1)<<(c1&Tuint32_t(7))) != uint32(0)) {
goto __102
}
goto __101
__102:
;
start_match++
goto __100
__101:
;
// See comment above in first_cu checking about the next few lines.
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) == 0 && start_match >= (*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject) {
goto __103
}
rc = DMATCH_NOMATCH
goto __58
__103:
;
__99:
;
__88:
;
__76:
;
__70:
; // End first code unit handling
// Restore fudged end_subject
end_subject = (*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject
// The following two optimizations must be disabled for partial matching.
if !(int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fpartial) == 0) {
goto __104
}
// The minimum matching length is a lower bound; no string of that length
// may actually match the pattern. Although the value is, strictly, in
// characters, we treat it as code units to avoid spending too much time in
// this optimization.
if !((int64(end_subject)-int64(start_match))/1 < int64((*Tpcre2_real_code_8)(unsafe.Pointer(re)).Fminlength)) {
goto __105
}
rc = DMATCH_NOMATCH
goto __58
__105:
;
// If req_cu is set, we know that that code unit must appear in the
// subject for the (non-partial) match to succeed. If the first code unit is
// set, req_cu must be later in the subject; otherwise the test starts at
// the match point. This optimization can save a huge amount of backtracking
// in patterns with nested unlimited repeats that aren't going to match.
// Writing separate code for caseful/caseless versions makes it go faster,
// as does using an autoincrement and backing off on a match. As in the case
// of the first code unit, using memchr() in the 8-bit library gives a big
// speed up. Unlike the first_cu check above, we do not need to call
// memchr() twice in the caseless case because we only need to check for the
// presence of the character in either case, not find the first occurrence.
//
// The search can be skipped if the code unit was found later than the
// current starting point in a previous iteration of the bumpalong loop.
//
// HOWEVER: when the subject string is very, very long, searching to its end
// can take a long time, and give bad performance on quite ordinary
// anchored patterns. This showed up when somebody was matching something
// like /^\d+C/ on a 32-megabyte string... so we don't do this when the
// string is sufficiently long, but it's worth searching a lot more for
// unanchored patterns.
p = start_match + uintptr(func() int32 {
if has_first_cu != 0 {
return 1
}
return 0
}())
if !(has_req_cu != 0 && p > req_cu_ptr) {
goto __106
}
check_length = Tsize_t((int64(end_subject) - int64(start_match)) / 1)
if !(check_length < uint64(DREQ_CU_MAX) || !(anchored != 0) && check_length < uint64(DREQ_CU_MAX*1000)) {
goto __107
}
if !(int32(req_cu) != int32(req_cu2)) {
goto __108
} /* Caseless */
pp = p
p = libc.Xmemchr(tls, pp, int32(req_cu), uint64((int64(end_subject)-int64(pp))/1))
if !(p == uintptr(0)) {
goto __110
}
p = libc.Xmemchr(tls, pp, int32(req_cu2), uint64((int64(end_subject)-int64(pp))/1))
if !(p == uintptr(0)) {
goto __111
}
p = end_subject
__111:
;
__110:
;
goto __109
__108:
p = libc.Xmemchr(tls, p, int32(req_cu), uint64((int64(end_subject)-int64(p))/1))
if !(p == uintptr(0)) {
goto __112
}
p = end_subject
__112:
;
__109:
;
// If we can't find the required code unit, break the bumpalong loop,
// forcing a match failure.
if !(p >= end_subject) {
goto __113
}
rc = DMATCH_NOMATCH
goto __58
__113:
;
// If we have found the required code unit, save the point where we
// found it, so that we don't search again next time round the bumpalong
// loop if the start hasn't yet passed this code unit.
req_cu_ptr = p
__107:
;
__106:
;
__104:
;
__59:
;
// ------------ End of start of match optimizations ------------
// Give no match if we have passed the bumpalong limit.
if !(start_match > bumpalong_limit) {
goto __114
}
rc = DMATCH_NOMATCH
goto __58
__114:
;
// OK, we can now run the match. If "hitend" is set afterwards, remember the
// first starting point for which a partial match was found.
(*Tpcre2_callout_block_8)(unsafe.Pointer(bp + 20768 /* &cb */)).Fstart_match = Tsize_t((int64(start_match) - int64(subject)) / 1)
*(*Tuint32_t)(unsafe.Pointer(bp + 20768 + 104)) |= DPCRE2_CALLOUT_STARTMATCH
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fstart_used_ptr = start_match
(*Tmatch_block_8)(unsafe.Pointer(mb)).Flast_used_ptr = start_match
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fmoptions = options | fragment_options
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fmatch_call_count = Tuint32_t(0)
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_offset_top = uint64(0)
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fskip_arg_count = Tuint32_t(0)
rc = match(tls, start_match, (*Tmatch_block_8)(unsafe.Pointer(mb)).Fstart_code, match_data+80,
(*Tpcre2_match_data_8)(unsafe.Pointer(match_data)).Foveccount, (*Tpcre2_real_code_8)(unsafe.Pointer(re)).Ftop_bracket, frame_size, mb)
if !((*Tmatch_block_8)(unsafe.Pointer(mb)).Fhitend != 0 && start_partial == uintptr(0)) {
goto __115
}
start_partial = (*Tmatch_block_8)(unsafe.Pointer(mb)).Fstart_used_ptr
match_partial = start_match
__115:
;
switch rc {
// If MATCH_SKIP_ARG reaches this level it means that a MARK that matched
// the SKIP's arg was not found. In this circumstance, Perl ignores the SKIP
// entirely. The only way we can do that is to re-do the match at the same
// point, with a flag to force SKIP with an argument to be ignored. Just
// treating this case as NOMATCH does not work because it does not check other
// alternatives in patterns such as A(*SKIP:A)B|AC when the subject is AC.
case -994:
goto __117
// SKIP passes back the next starting point explicitly, but if it is no
// greater than the match we have just done, treat it as NOMATCH.
case -995:
goto __118
// Fall through
// NOMATCH and PRUNE advance by one character. THEN at this level acts
// exactly like PRUNE. Unset ignore SKIP-with-argument.
case DMATCH_NOMATCH:
goto __119
case -996:
goto __120
case -993:
goto __121
// COMMIT disables the bumpalong, but otherwise behaves as NOMATCH.
case -997:
goto __122
// Any other return is either a match, or some kind of error.
default:
goto __123
}
goto __116
// If MATCH_SKIP_ARG reaches this level it means that a MARK that matched
// the SKIP's arg was not found. In this circumstance, Perl ignores the SKIP
// entirely. The only way we can do that is to re-do the match at the same
// point, with a flag to force SKIP with an argument to be ignored. Just
// treating this case as NOMATCH does not work because it does not check other
// alternatives in patterns such as A(*SKIP:A)B|AC when the subject is AC.
__117:
new_start_match = start_match
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fignore_skip_arg = (*Tmatch_block_8)(unsafe.Pointer(mb)).Fskip_arg_count
goto __116
// SKIP passes back the next starting point explicitly, but if it is no
// greater than the match we have just done, treat it as NOMATCH.
__118:
if !((*Tmatch_block_8)(unsafe.Pointer(mb)).Fverb_skip_ptr > start_match) {
goto __124
}
new_start_match = (*Tmatch_block_8)(unsafe.Pointer(mb)).Fverb_skip_ptr
goto __116
__124:
;
// Fall through
// NOMATCH and PRUNE advance by one character. THEN at this level acts
// exactly like PRUNE. Unset ignore SKIP-with-argument.
__119:
__120:
__121:
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fignore_skip_arg = Tuint32_t(0)
new_start_match = start_match + uintptr(1)
if !(utf != 0) {
goto __125
}
__126:
if !(new_start_match < end_subject && uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(new_start_match)))&0xc0 == 0x80) {
goto __127
}
new_start_match++
goto __126
__127:
;
__125:
;
goto __116
// COMMIT disables the bumpalong, but otherwise behaves as NOMATCH.
__122:
rc = DMATCH_NOMATCH
goto ENDLOOP
// Any other return is either a match, or some kind of error.
__123:
goto ENDLOOP
__116:
;
// Control reaches here for the various types of "no match at this point"
// result. Reset the code to MATCH_NOMATCH for subsequent checking.
rc = DMATCH_NOMATCH
// If PCRE2_FIRSTLINE is set, the match must happen before or at the first
// newline in the subject (though it may continue over the newline). Therefore,
// if we have just failed to match, starting at a newline, do not continue.
if !(firstline != 0 && func() int32 {
if (*Tmatch_block_8)(unsafe.Pointer(mb)).Fnltype != Tuint32_t(DNLTYPE_FIXED) {
return libc.Bool32(start_match < (*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject && X_pcre2_is_newline_8(tls, start_match, (*Tmatch_block_8)(unsafe.Pointer(mb)).Fnltype, (*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject, mb+256, utf) != 0)
}
return libc.Bool32(start_match <= (*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject-uintptr((*Tmatch_block_8)(unsafe.Pointer(mb)).Fnllen) && int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(start_match))) == int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(mb + 260))) && ((*Tmatch_block_8)(unsafe.Pointer(mb)).Fnllen == Tuint32_t(1) || int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(start_match + uintptr(1)))) == int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(mb + 260 + 1)))))
}() != 0) {
goto __128
}
goto __58
__128:
;
// Advance to new matching position
start_match = new_start_match
// Break the loop if the pattern is anchored or if we have passed the end of
// the subject.
if !(anchored != 0 || start_match > end_subject) {
goto __129
}
goto __58
__129:
;
// If we have just passed a CR and we are now at a LF, and the pattern does
// not contain any explicit matches for \r or \n, and the newline option is CRLF
// or ANY or ANYCRLF, advance the match position by one more code unit. In
// normal matching start_match will aways be greater than the first position at
// this stage, but a failed *SKIP can cause a return at the same point, which is
// why the first test exists.
if !(start_match > subject+uintptr(start_offset) && int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(start_match + libc.UintptrFromInt32(-1)))) == '\015' && start_match < end_subject && int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(start_match))) == '\012' && (*Tpcre2_real_code_8)(unsafe.Pointer(re)).Fflags&Tuint32_t(DPCRE2_HASCRORLF) == Tuint32_t(0) && ((*Tmatch_block_8)(unsafe.Pointer(mb)).Fnltype == Tuint32_t(DNLTYPE_ANY) || (*Tmatch_block_8)(unsafe.Pointer(mb)).Fnltype == Tuint32_t(DNLTYPE_ANYCRLF) || (*Tmatch_block_8)(unsafe.Pointer(mb)).Fnllen == Tuint32_t(2))) {
goto __130
}
start_match++
__130:
;
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fmark = uintptr(0) // Reset for start of next match attempt
goto __57
__57:
goto __56
goto __58
__58:
; // End of for(;;) "bumpalong" loop
// ==========================================================================
// When we reach here, one of the following stopping conditions is true:
//
// (1) The match succeeded, either completely, or partially;
//
// (2) The pattern is anchored or the match was failed after (*COMMIT);
//
// (3) We are past the end of the subject or the bumpalong limit;
//
// (4) PCRE2_FIRSTLINE is set and we have failed to match at a newline, because
// this option requests that a match occur at or before the first newline in
// the subject.
//
// (5) Some kind of error occurred.
//
ENDLOOP:
// If end_subject != true_end_subject, it means we are handling invalid UTF,
// and have just processed a non-terminal fragment. If this resulted in no match
// or a partial match we must carry on to the next fragment (a partial match is
// returned to the caller only at the very end of the subject). A loop is used to
// avoid trying to match against empty fragments; if the pattern can match an
// empty string it would have done so already.
if !(utf != 0 && end_subject != true_end_subject && (rc == DMATCH_NOMATCH || rc == -2)) {
goto __131
}
__132:
// Advance past the first bad code unit, and then skip invalid character
// starting code units in 8-bit and 16-bit modes.
start_match = end_subject + uintptr(1)
__135:
if !(start_match < true_end_subject && uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(start_match)))&0xc0 == 0x80) {
goto __136
}
start_match++
goto __135
__136:
;
// If we have hit the end of the subject, there isn't another non-empty
// fragment, so give up.
if !(start_match >= true_end_subject) {
goto __137
}
rc = DMATCH_NOMATCH // In case it was partial
goto __134
__137:
;
// Check the rest of the subject
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fcheck_subject = start_match
rc = X_pcre2_valid_utf_8(tls, start_match, length-Tsize_t((int64(start_match)-int64(subject))/1),
match_data+64)
// The rest of the subject is valid UTF.
if !(rc == 0) {
goto __138
}
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject = libc.AssignUintptr(&end_subject, true_end_subject)
fragment_options = DPCRE2_NOTBOL
goto FRAGMENT_RESTART
goto __139
__138:
if !(rc < 0) {
goto __140
}
(*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_subject = libc.AssignUintptr(&end_subject, start_match+uintptr((*Tpcre2_match_data_8)(unsafe.Pointer(match_data)).Fstartchar))
if !(end_subject > start_match) {
goto __141
}
fragment_options = DPCRE2_NOTBOL | DPCRE2_NOTEOL
goto FRAGMENT_RESTART
__141:
;
__140:
;
__139:
;
goto __133
__133:
goto __132
goto __134
__134:
;
__131:
;
// Release an enlarged frame vector that is on the heap.
if !((*Tmatch_block_8)(unsafe.Pointer(mb)).Fmatch_frames != (*Tmatch_block_8)(unsafe.Pointer(mb)).Fstack_frames) {
goto __142
}
(*struct {
f func(*libc.TLS, uintptr, uintptr)
})(unsafe.Pointer(&struct{ uintptr }{(*Tmatch_block_8)(unsafe.Pointer(mb)).Fmemctl.Ffree})).f(tls, (*Tmatch_block_8)(unsafe.Pointer(mb)).Fmatch_frames, (*Tmatch_block_8)(unsafe.Pointer(mb)).Fmemctl.Fmemory_data)
__142:
;
// Fill in fields that are always returned in the match data.
(*Tpcre2_match_data_8)(unsafe.Pointer(match_data)).Fcode = re
(*Tpcre2_match_data_8)(unsafe.Pointer(match_data)).Fmark = (*Tmatch_block_8)(unsafe.Pointer(mb)).Fmark
(*Tpcre2_match_data_8)(unsafe.Pointer(match_data)).Fmatchedby = PCRE2_MATCHEDBY_INTERPRETER
// Handle a fully successful match. Set the return code to the number of
// captured strings, or 0 if there were too many to fit into the ovector, and then
// set the remaining returned values before returning. Make a copy of the subject
// string if requested.
if !(rc == DMATCH_MATCH) {
goto __143
}
(*Tpcre2_match_data_8)(unsafe.Pointer(match_data)).Frc = func() int32 {
if int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_offset_top) >= 2*int32((*Tpcre2_match_data_8)(unsafe.Pointer(match_data)).Foveccount) {
return 0
}
return int32((*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_offset_top)/2 + 1
}()
(*Tpcre2_match_data_8)(unsafe.Pointer(match_data)).Fstartchar = Tsize_t((int64(start_match) - int64(subject)) / 1)
(*Tpcre2_match_data_8)(unsafe.Pointer(match_data)).Fleftchar = Tsize_t((int64((*Tmatch_block_8)(unsafe.Pointer(mb)).Fstart_used_ptr) - int64(subject)) / 1)
(*Tpcre2_match_data_8)(unsafe.Pointer(match_data)).Frightchar = Tsize_t((func() int64 {
if (*Tmatch_block_8)(unsafe.Pointer(mb)).Flast_used_ptr > (*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_match_ptr {
return int64((*Tmatch_block_8)(unsafe.Pointer(mb)).Flast_used_ptr)
}
return int64((*Tmatch_block_8)(unsafe.Pointer(mb)).Fend_match_ptr)
}() - int64(subject)) / 1)
if !(options&DPCRE2_COPY_MATCHED_SUBJECT != Tuint32_t(0)) {
goto __144
}
length = (length + Tsize_t(was_zero_terminated)) * uint64(DPCRE2_CODE_UNIT_WIDTH/8)
(*Tpcre2_match_data_8)(unsafe.Pointer(match_data)).Fsubject = (*struct {
f func(*libc.TLS, Tsize_t, uintptr) uintptr
})(unsafe.Pointer(&struct{ uintptr }{(*Tpcre2_match_data_8)(unsafe.Pointer(match_data)).Fmemctl.Fmalloc})).f(tls, length,
(*Tpcre2_match_data_8)(unsafe.Pointer(match_data)).Fmemctl.Fmemory_data)
if !((*Tpcre2_match_data_8)(unsafe.Pointer(match_data)).Fsubject == uintptr(0)) {
goto __146
}
return -48
__146:
;
libc.Xmemcpy(tls, (*Tpcre2_match_data_8)(unsafe.Pointer(match_data)).Fsubject, subject, length)
*(*Tuint8_t)(unsafe.Pointer(match_data + 73)) |= uint8(DPCRE2_MD_COPIED_SUBJECT)
goto __145
__144:
(*Tpcre2_match_data_8)(unsafe.Pointer(match_data)).Fsubject = subject
__145:
;
return (*Tpcre2_match_data_8)(unsafe.Pointer(match_data)).Frc
__143:
;
// Control gets here if there has been a partial match, an error, or if the
// overall match attempt has failed at all permitted starting positions. Any mark
// data is in the nomatch_mark field.
(*Tpcre2_match_data_8)(unsafe.Pointer(match_data)).Fmark = (*Tmatch_block_8)(unsafe.Pointer(mb)).Fnomatch_mark
// For anything other than nomatch or partial match, just return the code.
if !(rc != DMATCH_NOMATCH && rc != -2) {
goto __147
}
(*Tpcre2_match_data_8)(unsafe.Pointer(match_data)).Frc = rc
goto __148
__147:
if !(match_partial != uintptr(0)) {
goto __149
}
(*Tpcre2_match_data_8)(unsafe.Pointer(match_data)).Fsubject = subject
*(*Tsize_t)(unsafe.Pointer(match_data + 80)) = Tsize_t((int64(match_partial) - int64(subject)) / 1)
*(*Tsize_t)(unsafe.Pointer(match_data + 80 + 1*8)) = Tsize_t((int64(end_subject) - int64(subject)) / 1)
(*Tpcre2_match_data_8)(unsafe.Pointer(match_data)).Fstartchar = Tsize_t((int64(match_partial) - int64(subject)) / 1)
(*Tpcre2_match_data_8)(unsafe.Pointer(match_data)).Fleftchar = Tsize_t((int64(start_partial) - int64(subject)) / 1)
(*Tpcre2_match_data_8)(unsafe.Pointer(match_data)).Frightchar = Tsize_t((int64(end_subject) - int64(subject)) / 1)
(*Tpcre2_match_data_8)(unsafe.Pointer(match_data)).Frc = -2
goto __150
__149:
(*Tpcre2_match_data_8)(unsafe.Pointer(match_data)).Frc = -1
__150:
;
__148:
;
return (*Tpcre2_match_data_8)(unsafe.Pointer(match_data)).Frc
}
// End of pcre2_match.c
// This function is needed only when memmove() is not available.
// End of pcre2_internal.h
// ************************************************
//
// Create a match data block given ovector size *
//
// A minimum of 1 is imposed on the number of ovector pairs.
func Xpcre2_match_data_create_8(tls *libc.TLS, oveccount Tuint32_t, gcontext uintptr) uintptr { /* pcre2_match_data.c:56:33: */
var yield uintptr
if oveccount < Tuint32_t(1) {
oveccount = Tuint32_t(1)
}
yield = X_pcre2_memctl_malloc_8(tls,
uint64(uintptr(0)+80)+uint64(Tuint32_t(2)*oveccount)*uint64(unsafe.Sizeof(Tsize_t(0))),
gcontext)
if yield == uintptr(0) {
return uintptr(0)
}
(*Tpcre2_match_data_8)(unsafe.Pointer(yield)).Foveccount = Tuint16_t(oveccount)
(*Tpcre2_match_data_8)(unsafe.Pointer(yield)).Fflags = Tuint8_t(0)
return yield
}
// ************************************************
//
// Create a match data block using pattern data *
//
// If no context is supplied, use the memory allocator from the code.
func Xpcre2_match_data_create_from_pattern_8(tls *libc.TLS, code uintptr, gcontext uintptr) uintptr { /* pcre2_match_data.c:78:33: */
if gcontext == uintptr(0) {
gcontext = code
}
return Xpcre2_match_data_create_8(tls, uint32(int32((*Tpcre2_real_code_8)(unsafe.Pointer(code)).Ftop_bracket)+1),
gcontext)
}
// ************************************************
//
// Free a match data block *
//
func Xpcre2_match_data_free_8(tls *libc.TLS, match_data uintptr) { /* pcre2_match_data.c:94:1: */
if match_data != uintptr(0) {
if uint32((*Tpcre2_match_data_8)(unsafe.Pointer(match_data)).Fflags)&DPCRE2_MD_COPIED_SUBJECT != uint32(0) {
(*struct {
f func(*libc.TLS, uintptr, uintptr)
})(unsafe.Pointer(&struct{ uintptr }{(*Tpcre2_match_data_8)(unsafe.Pointer(match_data)).Fmemctl.Ffree})).f(tls, (*Tpcre2_match_data_8)(unsafe.Pointer(match_data)).Fsubject,
(*Tpcre2_match_data_8)(unsafe.Pointer(match_data)).Fmemctl.Fmemory_data)
}
(*struct {
f func(*libc.TLS, uintptr, uintptr)
})(unsafe.Pointer(&struct{ uintptr }{(*Tpcre2_match_data_8)(unsafe.Pointer(match_data)).Fmemctl.Ffree})).f(tls, match_data, (*Tpcre2_match_data_8)(unsafe.Pointer(match_data)).Fmemctl.Fmemory_data)
}
}
// ************************************************
//
// Get last mark in match *
//
func Xpcre2_get_mark_8(tls *libc.TLS, match_data uintptr) TPCRE2_SPTR8 { /* pcre2_match_data.c:112:1: */
return (*Tpcre2_match_data_8)(unsafe.Pointer(match_data)).Fmark
}
// ************************************************
//
// Get pointer to ovector *
//
func Xpcre2_get_ovector_pointer_8(tls *libc.TLS, match_data uintptr) uintptr { /* pcre2_match_data.c:123:27: */
return match_data + 80 /* &.ovector */
}
// ************************************************
//
// Get number of ovector slots *
//
func Xpcre2_get_ovector_count_8(tls *libc.TLS, match_data uintptr) Tuint32_t { /* pcre2_match_data.c:136:1: */
return Tuint32_t((*Tpcre2_match_data_8)(unsafe.Pointer(match_data)).Foveccount)
}
// ************************************************
//
// Get starting code unit in match *
//
func Xpcre2_get_startchar_8(tls *libc.TLS, match_data uintptr) Tsize_t { /* pcre2_match_data.c:148:1: */
return (*Tpcre2_match_data_8)(unsafe.Pointer(match_data)).Fstartchar
}
// ************************************************
//
// Get size of match data block *
//
func Xpcre2_get_match_data_size_8(tls *libc.TLS, match_data uintptr) Tsize_t { /* pcre2_match_data.c:160:1: */
return uint64(uintptr(0)+80) + uint64(2*int32((*Tpcre2_match_data_8)(unsafe.Pointer(match_data)).Foveccount))*uint64(unsafe.Sizeof(Tsize_t(0)))
}
// End of pcre2_match_data.c
// This function is needed only when memmove() is not available.
// End of pcre2_internal.h
// ************************************************
//
// Check for newline at given position *
//
// This function is called only via the IS_NEWLINE macro, which does so only
// when the newline type is NLTYPE_ANY or NLTYPE_ANYCRLF. The case of a fixed
// newline (NLTYPE_FIXED) is handled inline. It is guaranteed that the code unit
// pointed to by ptr is less than the end of the string.
//
// Arguments:
// ptr pointer to possible newline
// type the newline type
// endptr pointer to the end of the string
// lenptr where to return the length
// utf TRUE if in utf mode
//
// Returns: TRUE or FALSE
func X_pcre2_is_newline_8(tls *libc.TLS, ptr TPCRE2_SPTR8, type1 Tuint32_t, endptr TPCRE2_SPTR8, lenptr uintptr, utf TBOOL) TBOOL { /* pcre2_newline.c:79:1: */
var c Tuint32_t
if utf != 0 {
c = Tuint32_t(*(*TPCRE2_UCHAR8)(unsafe.Pointer(ptr)))
if c >= 0xc0 {
if c&0x20 == Tuint32_t(0) {
c = c&0x1f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(ptr + 1)))&0x3f
} else if c&0x10 == Tuint32_t(0) {
c = c&0x0f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(ptr + 1)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(ptr + 2)))&0x3f
} else if c&0x08 == Tuint32_t(0) {
c = c&0x07<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(ptr + 1)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(ptr + 2)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(ptr + 3)))&0x3f
} else if c&0x04 == Tuint32_t(0) {
c = c&0x03<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(ptr + 1)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(ptr + 2)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(ptr + 3)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(ptr + 4)))&0x3f
} else {
c = c&0x01<<30 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(ptr + 1)))&0x3f<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(ptr + 2)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(ptr + 3)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(ptr + 4)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(ptr + 5)))&0x3f
}
}
} else {
c = Tuint32_t(*(*TPCRE2_UCHAR8)(unsafe.Pointer(ptr)))
}
if type1 == Tuint32_t(DNLTYPE_ANYCRLF) {
switch c {
case Tuint32_t('\012'):
*(*Tuint32_t)(unsafe.Pointer(lenptr)) = Tuint32_t(1)
return DTRUE
fallthrough
case Tuint32_t('\015'):
*(*Tuint32_t)(unsafe.Pointer(lenptr)) = func() uint32 {
if ptr < endptr-uintptr(1) && int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(ptr + 1))) == '\012' {
return uint32(2)
}
return uint32(1)
}()
return DTRUE
fallthrough
default:
return DFALSE
}
} else {
switch c {
case Tuint32_t('\012'):
fallthrough
case Tuint32_t('\013'):
fallthrough
case Tuint32_t('\014'):
*(*Tuint32_t)(unsafe.Pointer(lenptr)) = Tuint32_t(1)
return DTRUE
fallthrough
case Tuint32_t('\015'):
*(*Tuint32_t)(unsafe.Pointer(lenptr)) = func() uint32 {
if ptr < endptr-uintptr(1) && int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(ptr + 1))) == '\012' {
return uint32(2)
}
return uint32(1)
}()
return DTRUE
fallthrough
case libc.Uint32FromUint8(libc.Uint8FromInt32(133)):
*(*Tuint32_t)(unsafe.Pointer(lenptr)) = func() uint32 {
if utf != 0 {
return uint32(2)
}
return uint32(1)
}()
return DTRUE
fallthrough
case Tuint32_t(0x2028):
fallthrough // LS
case Tuint32_t(0x2029): // PS
*(*Tuint32_t)(unsafe.Pointer(lenptr)) = Tuint32_t(3)
return DTRUE
fallthrough
default:
return DFALSE
}
}
return TBOOL(0)
}
// ************************************************
//
// Check for newline at previous position *
//
// This function is called only via the WAS_NEWLINE macro, which does so only
// when the newline type is NLTYPE_ANY or NLTYPE_ANYCRLF. The case of a fixed
// newline (NLTYPE_FIXED) is handled inline. It is guaranteed that the initial
// value of ptr is greater than the start of the string that is being processed.
//
// Arguments:
// ptr pointer to possible newline
// type the newline type
// startptr pointer to the start of the string
// lenptr where to return the length
// utf TRUE if in utf mode
//
// Returns: TRUE or FALSE
func X_pcre2_was_newline_8(tls *libc.TLS, ptr TPCRE2_SPTR8, type1 Tuint32_t, startptr TPCRE2_SPTR8, lenptr uintptr, utf TBOOL) TBOOL { /* pcre2_newline.c:169:1: */
var c Tuint32_t
ptr--
if utf != 0 {
for uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(ptr)))&0xc0 == 0x80 {
ptr--
}
c = Tuint32_t(*(*TPCRE2_UCHAR8)(unsafe.Pointer(ptr)))
if c >= 0xc0 {
if c&0x20 == Tuint32_t(0) {
c = c&0x1f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(ptr + 1)))&0x3f
} else if c&0x10 == Tuint32_t(0) {
c = c&0x0f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(ptr + 1)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(ptr + 2)))&0x3f
} else if c&0x08 == Tuint32_t(0) {
c = c&0x07<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(ptr + 1)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(ptr + 2)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(ptr + 3)))&0x3f
} else if c&0x04 == Tuint32_t(0) {
c = c&0x03<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(ptr + 1)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(ptr + 2)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(ptr + 3)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(ptr + 4)))&0x3f
} else {
c = c&0x01<<30 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(ptr + 1)))&0x3f<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(ptr + 2)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(ptr + 3)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(ptr + 4)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(ptr + 5)))&0x3f
}
}
} else {
c = Tuint32_t(*(*TPCRE2_UCHAR8)(unsafe.Pointer(ptr)))
}
if type1 == Tuint32_t(DNLTYPE_ANYCRLF) {
switch c {
case Tuint32_t('\012'):
*(*Tuint32_t)(unsafe.Pointer(lenptr)) = func() uint32 {
if ptr > startptr && int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(ptr + libc.UintptrFromInt32(-1)))) == '\015' {
return uint32(2)
}
return uint32(1)
}()
return DTRUE
fallthrough
case Tuint32_t('\015'):
*(*Tuint32_t)(unsafe.Pointer(lenptr)) = Tuint32_t(1)
return DTRUE
fallthrough
default:
return DFALSE
}
} else {
switch c {
case Tuint32_t('\012'):
*(*Tuint32_t)(unsafe.Pointer(lenptr)) = func() uint32 {
if ptr > startptr && int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(ptr + libc.UintptrFromInt32(-1)))) == '\015' {
return uint32(2)
}
return uint32(1)
}()
return DTRUE
fallthrough
case Tuint32_t('\013'):
fallthrough
case Tuint32_t('\014'):
fallthrough
case Tuint32_t('\015'):
*(*Tuint32_t)(unsafe.Pointer(lenptr)) = Tuint32_t(1)
return DTRUE
fallthrough
case libc.Uint32FromUint8(libc.Uint8FromInt32(133)):
*(*Tuint32_t)(unsafe.Pointer(lenptr)) = func() uint32 {
if utf != 0 {
return uint32(2)
}
return uint32(1)
}()
return DTRUE
fallthrough
case Tuint32_t(0x2028):
fallthrough // LS
case Tuint32_t(0x2029): // PS
*(*Tuint32_t)(unsafe.Pointer(lenptr)) = Tuint32_t(3)
return DTRUE
fallthrough
default:
return DFALSE
}
}
return TBOOL(0)
}
// End of pcre2_newline.c
// This function is needed only when memmove() is not available.
// End of pcre2_internal.h
// If SUPPORT_UNICODE is not defined, this function will never be called.
// Supply a dummy function because some compilers do not like empty source
// modules.
// ************************************************
//
// Convert code point to UTF *
//
//
// Arguments:
// cvalue the character value
// buffer pointer to buffer for result
//
// Returns: number of code units placed in the buffer
func X_pcre2_ord2utf_8(tls *libc.TLS, cvalue Tuint32_t, buffer uintptr) uint32 { /* pcre2_ord2utf.c:81:1: */
// Convert to UTF-8
var i int32
var j int32
for i = 0; i < X_pcre2_utf8_table1_size; i++ {
if int32(cvalue) <= X_pcre2_utf8_table1[i] {
break
}
}
buffer += uintptr(i)
for j = i; j > 0; j-- {
*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostDecUintptr(&buffer, 1))) = TPCRE2_UCHAR8(Tuint32_t(0x80) | cvalue&Tuint32_t(0x3f))
cvalue >>= 6
}
*(*TPCRE2_UCHAR8)(unsafe.Pointer(buffer)) = TPCRE2_UCHAR8(Tuint32_t(X_pcre2_utf8_table2[i]) | cvalue)
return uint32(i + 1)
// Convert to UTF-16
}
// End of pcre_ord2utf.c
// This function is needed only when memmove() is not available.
// End of pcre2_internal.h
// ************************************************
//
// Return info about compiled pattern *
//
//
// Arguments:
// code points to compiled code
// what what information is required
// where where to put the information; if NULL, return length
//
// Returns: 0 when data returned
// > 0 when length requested
// < 0 on error or unset value
func Xpcre2_pattern_info_8(tls *libc.TLS, code uintptr, what Tuint32_t, where uintptr) int32 { /* pcre2_pattern_info.c:65:1: */
var re uintptr = code
if where == uintptr(0) {
switch what {
case Tuint32_t(DPCRE2_INFO_ALLOPTIONS):
fallthrough
case Tuint32_t(DPCRE2_INFO_ARGOPTIONS):
fallthrough
case Tuint32_t(DPCRE2_INFO_BACKREFMAX):
fallthrough
case Tuint32_t(DPCRE2_INFO_BSR):
fallthrough
case Tuint32_t(DPCRE2_INFO_CAPTURECOUNT):
fallthrough
case Tuint32_t(DPCRE2_INFO_DEPTHLIMIT):
fallthrough
case Tuint32_t(DPCRE2_INFO_EXTRAOPTIONS):
fallthrough
case Tuint32_t(DPCRE2_INFO_FIRSTCODETYPE):
fallthrough
case Tuint32_t(DPCRE2_INFO_FIRSTCODEUNIT):
fallthrough
case Tuint32_t(DPCRE2_INFO_HASBACKSLASHC):
fallthrough
case Tuint32_t(DPCRE2_INFO_HASCRORLF):
fallthrough
case Tuint32_t(DPCRE2_INFO_HEAPLIMIT):
fallthrough
case Tuint32_t(DPCRE2_INFO_JCHANGED):
fallthrough
case Tuint32_t(DPCRE2_INFO_LASTCODETYPE):
fallthrough
case Tuint32_t(DPCRE2_INFO_LASTCODEUNIT):
fallthrough
case Tuint32_t(DPCRE2_INFO_MATCHEMPTY):
fallthrough
case Tuint32_t(DPCRE2_INFO_MATCHLIMIT):
fallthrough
case Tuint32_t(DPCRE2_INFO_MAXLOOKBEHIND):
fallthrough
case Tuint32_t(DPCRE2_INFO_MINLENGTH):
fallthrough
case Tuint32_t(DPCRE2_INFO_NAMEENTRYSIZE):
fallthrough
case Tuint32_t(DPCRE2_INFO_NAMECOUNT):
fallthrough
case Tuint32_t(DPCRE2_INFO_NEWLINE):
return int32(unsafe.Sizeof(Tuint32_t(0)))
fallthrough
case Tuint32_t(DPCRE2_INFO_FIRSTBITMAP):
return int32(unsafe.Sizeof(uintptr(0)))
fallthrough
case Tuint32_t(DPCRE2_INFO_JITSIZE):
fallthrough
case Tuint32_t(DPCRE2_INFO_SIZE):
fallthrough
case Tuint32_t(DPCRE2_INFO_FRAMESIZE):
return int32(unsafe.Sizeof(Tsize_t(0)))
fallthrough
case Tuint32_t(DPCRE2_INFO_NAMETABLE):
return int32(unsafe.Sizeof(TPCRE2_SPTR8(0)))
}
}
if re == uintptr(0) {
return -51
}
// Check that the first field in the block is the magic number. If it is not,
// return with PCRE2_ERROR_BADMAGIC.
if uint64((*Tpcre2_real_code_8)(unsafe.Pointer(re)).Fmagic_number) != DMAGIC_NUMBER {
return -31
}
// Check that this pattern was compiled in the correct bit mode
if (*Tpcre2_real_code_8)(unsafe.Pointer(re)).Fflags&Tuint32_t(DPCRE2_CODE_UNIT_WIDTH/8) == Tuint32_t(0) {
return -32
}
switch what {
case Tuint32_t(DPCRE2_INFO_ALLOPTIONS):
*(*Tuint32_t)(unsafe.Pointer(where)) = (*Tpcre2_real_code_8)(unsafe.Pointer(re)).Foverall_options
break
case Tuint32_t(DPCRE2_INFO_ARGOPTIONS):
*(*Tuint32_t)(unsafe.Pointer(where)) = (*Tpcre2_real_code_8)(unsafe.Pointer(re)).Fcompile_options
break
case Tuint32_t(DPCRE2_INFO_BACKREFMAX):
*(*Tuint32_t)(unsafe.Pointer(where)) = Tuint32_t((*Tpcre2_real_code_8)(unsafe.Pointer(re)).Ftop_backref)
break
case Tuint32_t(DPCRE2_INFO_BSR):
*(*Tuint32_t)(unsafe.Pointer(where)) = Tuint32_t((*Tpcre2_real_code_8)(unsafe.Pointer(re)).Fbsr_convention)
break
case Tuint32_t(DPCRE2_INFO_CAPTURECOUNT):
*(*Tuint32_t)(unsafe.Pointer(where)) = Tuint32_t((*Tpcre2_real_code_8)(unsafe.Pointer(re)).Ftop_bracket)
break
case Tuint32_t(DPCRE2_INFO_DEPTHLIMIT):
*(*Tuint32_t)(unsafe.Pointer(where)) = (*Tpcre2_real_code_8)(unsafe.Pointer(re)).Flimit_depth
if (*Tpcre2_real_code_8)(unsafe.Pointer(re)).Flimit_depth == 4294967295 {
return -55
}
break
case Tuint32_t(DPCRE2_INFO_EXTRAOPTIONS):
*(*Tuint32_t)(unsafe.Pointer(where)) = (*Tpcre2_real_code_8)(unsafe.Pointer(re)).Fextra_options
break
case Tuint32_t(DPCRE2_INFO_FIRSTCODETYPE):
*(*Tuint32_t)(unsafe.Pointer(where)) = func() uint32 {
if (*Tpcre2_real_code_8)(unsafe.Pointer(re)).Fflags&Tuint32_t(DPCRE2_FIRSTSET) != Tuint32_t(0) {
return uint32(1)
}
return func() uint32 {
if (*Tpcre2_real_code_8)(unsafe.Pointer(re)).Fflags&Tuint32_t(DPCRE2_STARTLINE) != Tuint32_t(0) {
return uint32(2)
}
return uint32(0)
}()
}()
break
case Tuint32_t(DPCRE2_INFO_FIRSTCODEUNIT):
*(*Tuint32_t)(unsafe.Pointer(where)) = func() uint32 {
if (*Tpcre2_real_code_8)(unsafe.Pointer(re)).Fflags&Tuint32_t(DPCRE2_FIRSTSET) != Tuint32_t(0) {
return (*Tpcre2_real_code_8)(unsafe.Pointer(re)).Ffirst_codeunit
}
return uint32(0)
}()
break
case Tuint32_t(DPCRE2_INFO_FIRSTBITMAP):
*(*uintptr)(unsafe.Pointer(where)) = func() uintptr {
if (*Tpcre2_real_code_8)(unsafe.Pointer(re)).Fflags&Tuint32_t(DPCRE2_FIRSTMAPSET) != Tuint32_t(0) {
return re + 40
}
return uintptr(0)
}()
break
case Tuint32_t(DPCRE2_INFO_FRAMESIZE):
*(*Tsize_t)(unsafe.Pointer(where)) = uint64(uintptr(0)+128) + uint64(int32((*Tpcre2_real_code_8)(unsafe.Pointer(re)).Ftop_bracket)*2)*uint64(unsafe.Sizeof(Tsize_t(0)))
break
case Tuint32_t(DPCRE2_INFO_HASBACKSLASHC):
*(*Tuint32_t)(unsafe.Pointer(where)) = Tuint32_t(libc.Bool32((*Tpcre2_real_code_8)(unsafe.Pointer(re)).Fflags&Tuint32_t(DPCRE2_HASBKC) != Tuint32_t(0)))
break
case Tuint32_t(DPCRE2_INFO_HASCRORLF):
*(*Tuint32_t)(unsafe.Pointer(where)) = Tuint32_t(libc.Bool32((*Tpcre2_real_code_8)(unsafe.Pointer(re)).Fflags&Tuint32_t(DPCRE2_HASCRORLF) != Tuint32_t(0)))
break
case Tuint32_t(DPCRE2_INFO_HEAPLIMIT):
*(*Tuint32_t)(unsafe.Pointer(where)) = (*Tpcre2_real_code_8)(unsafe.Pointer(re)).Flimit_heap
if (*Tpcre2_real_code_8)(unsafe.Pointer(re)).Flimit_heap == 4294967295 {
return -55
}
break
case Tuint32_t(DPCRE2_INFO_JCHANGED):
*(*Tuint32_t)(unsafe.Pointer(where)) = Tuint32_t(libc.Bool32((*Tpcre2_real_code_8)(unsafe.Pointer(re)).Fflags&Tuint32_t(DPCRE2_JCHANGED) != Tuint32_t(0)))
break
case Tuint32_t(DPCRE2_INFO_JITSIZE):
*(*Tsize_t)(unsafe.Pointer(where)) = uint64(0)
break
case Tuint32_t(DPCRE2_INFO_LASTCODETYPE):
*(*Tuint32_t)(unsafe.Pointer(where)) = func() uint32 {
if (*Tpcre2_real_code_8)(unsafe.Pointer(re)).Fflags&Tuint32_t(DPCRE2_LASTSET) != Tuint32_t(0) {
return uint32(1)
}
return uint32(0)
}()
break
case Tuint32_t(DPCRE2_INFO_LASTCODEUNIT):
*(*Tuint32_t)(unsafe.Pointer(where)) = func() uint32 {
if (*Tpcre2_real_code_8)(unsafe.Pointer(re)).Fflags&Tuint32_t(DPCRE2_LASTSET) != Tuint32_t(0) {
return (*Tpcre2_real_code_8)(unsafe.Pointer(re)).Flast_codeunit
}
return uint32(0)
}()
break
case Tuint32_t(DPCRE2_INFO_MATCHEMPTY):
*(*Tuint32_t)(unsafe.Pointer(where)) = Tuint32_t(libc.Bool32((*Tpcre2_real_code_8)(unsafe.Pointer(re)).Fflags&Tuint32_t(DPCRE2_MATCH_EMPTY) != Tuint32_t(0)))
break
case Tuint32_t(DPCRE2_INFO_MATCHLIMIT):
*(*Tuint32_t)(unsafe.Pointer(where)) = (*Tpcre2_real_code_8)(unsafe.Pointer(re)).Flimit_match
if (*Tpcre2_real_code_8)(unsafe.Pointer(re)).Flimit_match == 4294967295 {
return -55
}
break
case Tuint32_t(DPCRE2_INFO_MAXLOOKBEHIND):
*(*Tuint32_t)(unsafe.Pointer(where)) = Tuint32_t((*Tpcre2_real_code_8)(unsafe.Pointer(re)).Fmax_lookbehind)
break
case Tuint32_t(DPCRE2_INFO_MINLENGTH):
*(*Tuint32_t)(unsafe.Pointer(where)) = Tuint32_t((*Tpcre2_real_code_8)(unsafe.Pointer(re)).Fminlength)
break
case Tuint32_t(DPCRE2_INFO_NAMEENTRYSIZE):
*(*Tuint32_t)(unsafe.Pointer(where)) = Tuint32_t((*Tpcre2_real_code_8)(unsafe.Pointer(re)).Fname_entry_size)
break
case Tuint32_t(DPCRE2_INFO_NAMECOUNT):
*(*Tuint32_t)(unsafe.Pointer(where)) = Tuint32_t((*Tpcre2_real_code_8)(unsafe.Pointer(re)).Fname_count)
break
case Tuint32_t(DPCRE2_INFO_NAMETABLE):
*(*TPCRE2_SPTR8)(unsafe.Pointer(where)) = re + uintptr(uint64(unsafe.Sizeof(Tpcre2_real_code_8{})))
break
case Tuint32_t(DPCRE2_INFO_NEWLINE):
*(*Tuint32_t)(unsafe.Pointer(where)) = Tuint32_t((*Tpcre2_real_code_8)(unsafe.Pointer(re)).Fnewline_convention)
break
case Tuint32_t(DPCRE2_INFO_SIZE):
*(*Tsize_t)(unsafe.Pointer(where)) = (*Tpcre2_real_code_8)(unsafe.Pointer(re)).Fblocksize
break
default:
return -34
}
return 0
}
// ************************************************
//
// Callout enumerator *
//
//
// Arguments:
// code points to compiled code
// callback function called for each callout block
// callout_data user data passed to the callback
//
// Returns: 0 when successfully completed
// < 0 on local error
// != 0 for callback error
func Xpcre2_callout_enumerate_8(tls *libc.TLS, code uintptr, callback uintptr, callout_data uintptr) int32 { /* pcre2_pattern_info.c:268:1: */
bp := tls.Alloc(56)
defer tls.Free(56)
var re uintptr = code
// var cb Tpcre2_callout_enumerate_block_8 at bp, 56
var cc TPCRE2_SPTR8
var utf TBOOL
if re == uintptr(0) {
return -51
}
utf = libc.Bool32((*Tpcre2_real_code_8)(unsafe.Pointer(re)).Foverall_options&DPCRE2_UTF != Tuint32_t(0))
// Check that the first field in the block is the magic number. If it is not,
// return with PCRE2_ERROR_BADMAGIC.
if uint64((*Tpcre2_real_code_8)(unsafe.Pointer(re)).Fmagic_number) != DMAGIC_NUMBER {
return -31
}
// Check that this pattern was compiled in the correct bit mode
if (*Tpcre2_real_code_8)(unsafe.Pointer(re)).Fflags&Tuint32_t(DPCRE2_CODE_UNIT_WIDTH/8) == Tuint32_t(0) {
return -32
}
(*Tpcre2_callout_enumerate_block_8)(unsafe.Pointer(bp /* &cb */)).Fversion = Tuint32_t(0)
cc = re + uintptr(uint64(unsafe.Sizeof(Tpcre2_real_code_8{}))) +
uintptr(int32((*Tpcre2_real_code_8)(unsafe.Pointer(re)).Fname_count)*int32((*Tpcre2_real_code_8)(unsafe.Pointer(re)).Fname_entry_size))
for 1 != 0 {
var rc int32
switch int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(cc))) {
case OP_END:
return 0
case OP_CHAR:
fallthrough
case OP_CHARI:
fallthrough
case OP_NOT:
fallthrough
case OP_NOTI:
fallthrough
case OP_STAR:
fallthrough
case OP_MINSTAR:
fallthrough
case OP_PLUS:
fallthrough
case OP_MINPLUS:
fallthrough
case OP_QUERY:
fallthrough
case OP_MINQUERY:
fallthrough
case OP_UPTO:
fallthrough
case OP_MINUPTO:
fallthrough
case OP_EXACT:
fallthrough
case OP_POSSTAR:
fallthrough
case OP_POSPLUS:
fallthrough
case OP_POSQUERY:
fallthrough
case OP_POSUPTO:
fallthrough
case OP_STARI:
fallthrough
case OP_MINSTARI:
fallthrough
case OP_PLUSI:
fallthrough
case OP_MINPLUSI:
fallthrough
case OP_QUERYI:
fallthrough
case OP_MINQUERYI:
fallthrough
case OP_UPTOI:
fallthrough
case OP_MINUPTOI:
fallthrough
case OP_EXACTI:
fallthrough
case OP_POSSTARI:
fallthrough
case OP_POSPLUSI:
fallthrough
case OP_POSQUERYI:
fallthrough
case OP_POSUPTOI:
fallthrough
case OP_NOTSTAR:
fallthrough
case OP_NOTMINSTAR:
fallthrough
case OP_NOTPLUS:
fallthrough
case OP_NOTMINPLUS:
fallthrough
case OP_NOTQUERY:
fallthrough
case OP_NOTMINQUERY:
fallthrough
case OP_NOTUPTO:
fallthrough
case OP_NOTMINUPTO:
fallthrough
case OP_NOTEXACT:
fallthrough
case OP_NOTPOSSTAR:
fallthrough
case OP_NOTPOSPLUS:
fallthrough
case OP_NOTPOSQUERY:
fallthrough
case OP_NOTPOSUPTO:
fallthrough
case OP_NOTSTARI:
fallthrough
case OP_NOTMINSTARI:
fallthrough
case OP_NOTPLUSI:
fallthrough
case OP_NOTMINPLUSI:
fallthrough
case OP_NOTQUERYI:
fallthrough
case OP_NOTMINQUERYI:
fallthrough
case OP_NOTUPTOI:
fallthrough
case OP_NOTMINUPTOI:
fallthrough
case OP_NOTEXACTI:
fallthrough
case OP_NOTPOSSTARI:
fallthrough
case OP_NOTPOSPLUSI:
fallthrough
case OP_NOTPOSQUERYI:
fallthrough
case OP_NOTPOSUPTOI:
cc += TPCRE2_SPTR8(X_pcre2_OP_lengths_8[*(*TPCRE2_UCHAR8)(unsafe.Pointer(cc))])
if utf != 0 && int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(cc + libc.UintptrFromInt32(-1)))) >= 0xc0 {
cc += TPCRE2_SPTR8(X_pcre2_utf8_table4[uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(cc + libc.UintptrFromInt32(-1))))&0x3f])
}
break
case OP_TYPESTAR:
fallthrough
case OP_TYPEMINSTAR:
fallthrough
case OP_TYPEPLUS:
fallthrough
case OP_TYPEMINPLUS:
fallthrough
case OP_TYPEQUERY:
fallthrough
case OP_TYPEMINQUERY:
fallthrough
case OP_TYPEUPTO:
fallthrough
case OP_TYPEMINUPTO:
fallthrough
case OP_TYPEEXACT:
fallthrough
case OP_TYPEPOSSTAR:
fallthrough
case OP_TYPEPOSPLUS:
fallthrough
case OP_TYPEPOSQUERY:
fallthrough
case OP_TYPEPOSUPTO:
cc += TPCRE2_SPTR8(X_pcre2_OP_lengths_8[*(*TPCRE2_UCHAR8)(unsafe.Pointer(cc))])
if int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(cc + libc.UintptrFromInt32(-1)))) == OP_PROP || int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(cc + libc.UintptrFromInt32(-1)))) == OP_NOTPROP {
cc += uintptr(2)
}
break
case OP_XCLASS:
cc += TPCRE2_SPTR8(uint32(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(cc + 1)))<<8 | int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(cc + 2)))))
break
case OP_MARK:
fallthrough
case OP_COMMIT_ARG:
fallthrough
case OP_PRUNE_ARG:
fallthrough
case OP_SKIP_ARG:
fallthrough
case OP_THEN_ARG:
cc += TPCRE2_SPTR8(int32(X_pcre2_OP_lengths_8[*(*TPCRE2_UCHAR8)(unsafe.Pointer(cc))]) + int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(cc + 1))))
break
case OP_CALLOUT:
(*Tpcre2_callout_enumerate_block_8)(unsafe.Pointer(bp /* &cb */)).Fpattern_position = Tsize_t(uint32(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(cc + 1)))<<8 | int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(cc + 2)))))
(*Tpcre2_callout_enumerate_block_8)(unsafe.Pointer(bp /* &cb */)).Fnext_item_length = Tsize_t(uint32(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(cc + 3)))<<8 | int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(cc + 4)))))
(*Tpcre2_callout_enumerate_block_8)(unsafe.Pointer(bp /* &cb */)).Fcallout_number = Tuint32_t(*(*TPCRE2_UCHAR8)(unsafe.Pointer(cc + 5)))
(*Tpcre2_callout_enumerate_block_8)(unsafe.Pointer(bp /* &cb */)).Fcallout_string_offset = uint64(0)
(*Tpcre2_callout_enumerate_block_8)(unsafe.Pointer(bp /* &cb */)).Fcallout_string_length = uint64(0)
(*Tpcre2_callout_enumerate_block_8)(unsafe.Pointer(bp /* &cb */)).Fcallout_string = uintptr(0)
rc = (*struct {
f func(*libc.TLS, uintptr, uintptr) int32
})(unsafe.Pointer(&struct{ uintptr }{callback})).f(tls, bp /* &cb */, callout_data)
if rc != 0 {
return rc
}
cc += TPCRE2_SPTR8(X_pcre2_OP_lengths_8[*(*TPCRE2_UCHAR8)(unsafe.Pointer(cc))])
break
case OP_CALLOUT_STR:
(*Tpcre2_callout_enumerate_block_8)(unsafe.Pointer(bp /* &cb */)).Fpattern_position = Tsize_t(uint32(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(cc + 1)))<<8 | int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(cc + 2)))))
(*Tpcre2_callout_enumerate_block_8)(unsafe.Pointer(bp /* &cb */)).Fnext_item_length = Tsize_t(uint32(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(cc + 3)))<<8 | int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(cc + 4)))))
(*Tpcre2_callout_enumerate_block_8)(unsafe.Pointer(bp /* &cb */)).Fcallout_number = Tuint32_t(0)
(*Tpcre2_callout_enumerate_block_8)(unsafe.Pointer(bp /* &cb */)).Fcallout_string_offset = Tsize_t(uint32(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(cc + 7)))<<8 | int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(cc + 8)))))
(*Tpcre2_callout_enumerate_block_8)(unsafe.Pointer(bp /* &cb */)).Fcallout_string_length = Tsize_t(uint32(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(cc + 5)))<<8|int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(cc + 6)))) - uint32(1+4*DLINK_SIZE) - uint32(2))
(*Tpcre2_callout_enumerate_block_8)(unsafe.Pointer(bp /* &cb */)).Fcallout_string = cc + uintptr(1+4*DLINK_SIZE) + uintptr(1)
rc = (*struct {
f func(*libc.TLS, uintptr, uintptr) int32
})(unsafe.Pointer(&struct{ uintptr }{callback})).f(tls, bp /* &cb */, callout_data)
if rc != 0 {
return rc
}
cc += TPCRE2_SPTR8(uint32(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(cc + 5)))<<8 | int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(cc + 6)))))
break
default:
cc += TPCRE2_SPTR8(X_pcre2_OP_lengths_8[*(*TPCRE2_UCHAR8)(unsafe.Pointer(cc))])
break
}
}
return int32(0)
}
// End of pcre2_pattern_info.c
func X_pcre2_script_run_8(tls *libc.TLS, ptr TPCRE2_SPTR8, endptr TPCRE2_SPTR8, utf TBOOL) TBOOL { /* pcre2_script_run.c:85:1: */
bp := tls.Alloc(48)
defer tls.Free(48)
var require_state Tuint32_t = SCRIPT_UNSET
// var require_map [6]Tuint32_t at bp, 24
// var map1 [6]Tuint32_t at bp+24, 24
var require_digitset Tuint32_t = Tuint32_t(0)
var c Tuint32_t
// Any string containing fewer than 2 characters is a valid script run.
if ptr >= endptr {
return DTRUE
}
c = Tuint32_t(*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&ptr, 1))))
if utf != 0 && c >= 0xc0 {
if c&0x20 == Tuint32_t(0) {
c = c&0x1f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&ptr, 1))))&0x3f
} else if c&0x10 == Tuint32_t(0) {
c = c&0x0f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(ptr)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(ptr + 1)))&0x3f
ptr += uintptr(2)
} else if c&0x08 == Tuint32_t(0) {
c = c&0x07<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(ptr)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(ptr + 1)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(ptr + 2)))&0x3f
ptr += uintptr(3)
} else if c&0x04 == Tuint32_t(0) {
c = c&0x03<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(ptr)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(ptr + 1)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(ptr + 2)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(ptr + 3)))&0x3f
ptr += uintptr(4)
} else {
c = c&0x01<<30 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(ptr)))&0x3f<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(ptr + 1)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(ptr + 2)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(ptr + 3)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(ptr + 4)))&0x3f
ptr += uintptr(5)
}
}
if ptr >= endptr {
return DTRUE
}
// Initialize the require map. This is a full-size bitmap that has a bit for
// every script, as opposed to the maps in ucd_script_sets, which only have bits
// for scripts less than ucp_Unknown - those that appear in script extension
// lists.
{
var i int32 = 0
__1:
if !(i < ucp_Script_Count/32+1) {
goto __3
}
*(*Tuint32_t)(unsafe.Pointer(bp + uintptr(i)*4)) = Tuint32_t(0)
goto __2
__2:
i++
goto __1
goto __3
__3:
}
// Scan strings of two or more characters, checking the Unicode characteristics
// of each code point. There is special code for scripts that can be combined with
// characters from the Han Chinese script. This may be used in conjunction with
// four other scripts in these combinations:
//
// . Han with Hiragana and Katakana is allowed (for Japanese).
// . Han with Bopomofo is allowed (for Taiwanese Mandarin).
// . Han with Hangul is allowed (for Korean).
//
// If the first significant character's script is one of the four, the required
// script type is immediately known. However, if the first significant
// character's script is Han, we have to keep checking for a non-Han character.
// Hence the SCRIPT_HANPENDING state.
for {
var ucd uintptr = uintptr(unsafe.Pointer(&X_pcre2_ucd_records_8)) + uintptr(X_pcre2_ucd_stage2_8[int32(X_pcre2_ucd_stage1_8[int32(c)/DUCD_BLOCK_SIZE])*DUCD_BLOCK_SIZE+int32(c)%DUCD_BLOCK_SIZE])*12
var script Tuint32_t = Tuint32_t((*Tucd_record)(unsafe.Pointer(ucd)).Fscript)
// If the script is Unknown, the string is not a valid script run. Such
// characters can only form script runs of length one (see test above).
if script == ucp_Unknown {
return DFALSE
}
// A character without any script extensions whose script is Inherited or
// Common is always accepted with any script. If there are extensions, the
// following processing happens for all scripts.
if int32((*Tucd_record)(unsafe.Pointer(ucd)).Fscriptx_bidiclass)&DUCD_SCRIPTX_MASK != 0 || script != ucp_Inherited && script != ucp_Common {
var OK TBOOL
// Set up a full-sized map for this character that can include bits for all
// scripts. Copy the scriptx map for this character (which covers those
// scripts that appear in script extension lists), set the remaining values to
// zero, and then, except for Common or Inherited, add this script's bit to
// the map.
libc.Xmemcpy(tls, bp+24, uintptr(unsafe.Pointer(&X_pcre2_ucd_script_sets_8))+uintptr(int32((*Tucd_record)(unsafe.Pointer(ucd)).Fscriptx_bidiclass)&DUCD_SCRIPTX_MASK)*4, uint64(ucp_Unknown/32+1)*uint64(unsafe.Sizeof(Tuint32_t(0))))
libc.Xmemset(tls, bp+24+uintptr(ucp_Unknown/32+1)*4, 0, uint64(ucp_Script_Count/32+1-(ucp_Unknown/32+1))*uint64(unsafe.Sizeof(Tuint32_t(0))))
if script != ucp_Common && script != ucp_Inherited {
*(*Tuint32_t)(unsafe.Pointer(bp + 24 + uintptr(script/Tuint32_t(32))*4)) |= uint32(1) << (script % Tuint32_t(32))
}
// Handle the different checking states
switch require_state {
// First significant character - it might follow Common or Inherited
// characters that do not have any script extensions.
case SCRIPT_UNSET:
switch script {
case ucp_Han:
require_state = SCRIPT_HANPENDING
break
fallthrough
case ucp_Hiragana:
fallthrough
case ucp_Katakana:
require_state = SCRIPT_HANHIRAKATA
break
fallthrough
case ucp_Bopomofo:
require_state = SCRIPT_HANBOPOMOFO
break
fallthrough
case ucp_Hangul:
require_state = SCRIPT_HANHANGUL
break
fallthrough
default:
libc.Xmemcpy(tls, bp, bp+24, uint64(ucp_Script_Count/32+1)*uint64(unsafe.Sizeof(Tuint32_t(0))))
require_state = SCRIPT_MAP
break
}
break
fallthrough
// The first significant character was Han. An inspection of the Unicode
// 11.0.0 files shows that there are the following types of Script Extension
// list that involve the Han, Bopomofo, Hiragana, Katakana, and Hangul
// scripts:
//
// . Bopomofo + Han
// . Han + Hiragana + Katakana
// . Hiragana + Katakana
// . Bopopmofo + Hangul + Han + Hiragana + Katakana
//
// The following code tries to make sense of this.
case SCRIPT_HANPENDING:
if script != ucp_Han {
var chspecial Tuint32_t = Tuint32_t(0)
if *(*Tuint32_t)(unsafe.Pointer(bp + 24))&(uint32(1)<<(ucp_Bopomofo%32)) != Tuint32_t(0) {
chspecial = chspecial | Tuint32_t(DFOUND_BOPOMOFO)
}
if *(*Tuint32_t)(unsafe.Pointer(bp + 24))&(uint32(1)<<(ucp_Hiragana%32)) != Tuint32_t(0) {
chspecial = chspecial | Tuint32_t(DFOUND_HIRAGANA)
}
if *(*Tuint32_t)(unsafe.Pointer(bp + 24))&(uint32(1)<<(ucp_Katakana%32)) != Tuint32_t(0) {
chspecial = chspecial | Tuint32_t(DFOUND_KATAKANA)
}
if *(*Tuint32_t)(unsafe.Pointer(bp + 24))&(uint32(1)<<(ucp_Hangul%32)) != Tuint32_t(0) {
chspecial = chspecial | Tuint32_t(DFOUND_HANGUL)
}
if chspecial == Tuint32_t(0) {
return DFALSE
} // Not allowed with Han
if chspecial == Tuint32_t(DFOUND_BOPOMOFO) {
require_state = SCRIPT_HANBOPOMOFO
} else if chspecial == Tuint32_t(DFOUND_HIRAGANA|DFOUND_KATAKANA) {
require_state = SCRIPT_HANHIRAKATA
}
// Otherwise this character must be allowed with all of them, so remain
// in the pending state.
}
break
fallthrough
// Previously encountered one of the "with Han" scripts. Check that
// this character is appropriate.
case SCRIPT_HANHIRAKATA:
if *(*Tuint32_t)(unsafe.Pointer(bp + 24))&(uint32(1)<<(ucp_Han%32))+*(*Tuint32_t)(unsafe.Pointer(bp + 24))&(uint32(1)<<(ucp_Hiragana%32))+*(*Tuint32_t)(unsafe.Pointer(bp + 24))&(uint32(1)<<(ucp_Katakana%32)) == Tuint32_t(0) {
return DFALSE
}
break
fallthrough
case SCRIPT_HANBOPOMOFO:
if *(*Tuint32_t)(unsafe.Pointer(bp + 24))&(uint32(1)<<(ucp_Han%32))+*(*Tuint32_t)(unsafe.Pointer(bp + 24))&(uint32(1)<<(ucp_Bopomofo%32)) == Tuint32_t(0) {
return DFALSE
}
break
fallthrough
case SCRIPT_HANHANGUL:
if *(*Tuint32_t)(unsafe.Pointer(bp + 24))&(uint32(1)<<(ucp_Han%32))+*(*Tuint32_t)(unsafe.Pointer(bp + 24))&(uint32(1)<<(ucp_Hangul%32)) == Tuint32_t(0) {
return DFALSE
}
break
fallthrough
// Previously encountered one or more characters that are allowed with a
// list of scripts.
case SCRIPT_MAP:
OK = DFALSE
{
var i int32 = 0
__4:
if !(i < ucp_Script_Count/32+1) {
goto __6
}
{
if *(*Tuint32_t)(unsafe.Pointer(bp + uintptr(i)*4))&*(*Tuint32_t)(unsafe.Pointer(bp + 24 + uintptr(i)*4)) != Tuint32_t(0) {
OK = DTRUE
goto __6
}
}
goto __5
__5:
i++
goto __4
goto __6
__6:
}
if !(OK != 0) {
return DFALSE
}
// The rest of the string must be in this script, but we have to
// allow for the Han complications.
switch script {
case ucp_Han:
require_state = SCRIPT_HANPENDING
break
fallthrough
case ucp_Hiragana:
fallthrough
case ucp_Katakana:
require_state = SCRIPT_HANHIRAKATA
break
fallthrough
case ucp_Bopomofo:
require_state = SCRIPT_HANBOPOMOFO
break
fallthrough
case ucp_Hangul:
require_state = SCRIPT_HANHANGUL
break
fallthrough
// Compute the intersection of the required list of scripts and the
// allowed scripts for this character.
default:
{
var i int32 = 0
__7:
if !(i < ucp_Script_Count/32+1) {
goto __9
}
*(*Tuint32_t)(unsafe.Pointer(bp + uintptr(i)*4)) &= *(*Tuint32_t)(unsafe.Pointer(bp + 24 + uintptr(i)*4))
goto __8
__8:
i++
goto __7
goto __9
__9:
}
break
}
break
}
} // End checking character's script and extensions.
// The character is in an acceptable script. We must now ensure that all
// decimal digits in the string come from the same set. Some scripts (e.g.
// Common, Arabic) have more than one set of decimal digits. This code does
// not allow mixing sets, even within the same script. The vector called
// PRIV(ucd_digit_sets)[] contains, in its first element, the number of
// following elements, and then, in ascending order, the code points of the
// '9' characters in every set of 10 digits. Each set is identified by the
// offset in the vector of its '9' character. An initial check of the first
// value picks up ASCII digits quickly. Otherwise, a binary chop is used.
if int32((*Tucd_record)(unsafe.Pointer(ucd)).Fchartype) == ucp_Nd {
var digitset Tuint32_t
if c <= X_pcre2_ucd_digit_sets_8[1] {
digitset = Tuint32_t(1)
} else {
var mid int32
var bot int32 = 1
var top int32 = int32(X_pcre2_ucd_digit_sets_8[0])
for {
if top <= bot+1 {
digitset = Tuint32_t(top)
break
}
mid = (top + bot) / 2
if c <= X_pcre2_ucd_digit_sets_8[mid] {
top = mid
} else {
bot = mid
}
}
}
// A required value of 0 means "unset".
if require_digitset == Tuint32_t(0) {
require_digitset = digitset
} else if digitset != require_digitset {
return DFALSE
}
} // End digit handling
// If we haven't yet got to the end, pick up the next character.
if ptr >= endptr {
return DTRUE
}
c = Tuint32_t(*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&ptr, 1))))
if utf != 0 && c >= 0xc0 {
if c&0x20 == Tuint32_t(0) {
c = c&0x1f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&ptr, 1))))&0x3f
} else if c&0x10 == Tuint32_t(0) {
c = c&0x0f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(ptr)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(ptr + 1)))&0x3f
ptr += uintptr(2)
} else if c&0x08 == Tuint32_t(0) {
c = c&0x07<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(ptr)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(ptr + 1)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(ptr + 2)))&0x3f
ptr += uintptr(3)
} else if c&0x04 == Tuint32_t(0) {
c = c&0x03<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(ptr)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(ptr + 1)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(ptr + 2)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(ptr + 3)))&0x3f
ptr += uintptr(4)
} else {
c = c&0x01<<30 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(ptr)))&0x3f<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(ptr + 1)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(ptr + 2)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(ptr + 3)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(ptr + 4)))&0x3f
ptr += uintptr(5)
}
}
}
return TBOOL(0) // End checking loop
}
// End of pcre2_script_run.c
// This function is needed only when memmove() is not available.
// End of pcre2_internal.h
// Magic number to provide a small check against being handed junk.
// Deserialization is limited to the current PCRE version and
// character width.
// ************************************************
//
// Serialize compiled patterns *
//
func Xpcre2_serialize_encode_8(tls *libc.TLS, codes uintptr, number_of_codes Tint32_t, serialized_bytes uintptr, serialized_size uintptr, gcontext uintptr) Tint32_t { /* pcre2_serialize.c:72:1: */
var bytes uintptr
var dst_bytes uintptr
var i Tint32_t
var total_size Tsize_t
var re uintptr
var tables uintptr
var data uintptr
var memctl uintptr
if gcontext != uintptr(0) {
memctl = gcontext
} else {
memctl = uintptr(unsafe.Pointer(&X_pcre2_default_compile_context_8))
}
if codes == uintptr(0) || serialized_bytes == uintptr(0) || serialized_size == uintptr(0) {
return -51
}
if number_of_codes <= 0 {
return -29
}
// Compute total size.
total_size = uint64(unsafe.Sizeof(Tpcre2_serialized_data{})) + uint64(Dcbits_offset+Dcbit_length+256)
tables = uintptr(0)
for i = 0; i < number_of_codes; i++ {
if *(*uintptr)(unsafe.Pointer(codes + uintptr(i)*8)) == uintptr(0) {
return -51
}
re = *(*uintptr)(unsafe.Pointer(codes + uintptr(i)*8))
if uint64((*Tpcre2_real_code_8)(unsafe.Pointer(re)).Fmagic_number) != DMAGIC_NUMBER {
return -31
}
if tables == uintptr(0) {
tables = (*Tpcre2_real_code_8)(unsafe.Pointer(re)).Ftables
} else if tables != (*Tpcre2_real_code_8)(unsafe.Pointer(re)).Ftables {
return -30
}
total_size = total_size + (*Tpcre2_real_code_8)(unsafe.Pointer(re)).Fblocksize
}
// Initialize the byte stream.
bytes = (*struct {
f func(*libc.TLS, Tsize_t, uintptr) uintptr
})(unsafe.Pointer(&struct{ uintptr }{(*Tpcre2_memctl)(unsafe.Pointer(memctl)).Fmalloc})).f(tls, total_size+Tsize_t(unsafe.Sizeof(Tpcre2_memctl{})), (*Tpcre2_memctl)(unsafe.Pointer(memctl)).Fmemory_data)
if bytes == uintptr(0) {
return -48
}
// The controller is stored as a hidden parameter.
libc.Xmemcpy(tls, bytes, memctl, uint64(unsafe.Sizeof(Tpcre2_memctl{})))
bytes += uintptr(unsafe.Sizeof(Tpcre2_memctl{}))
data = bytes
(*Tpcre2_serialized_data)(unsafe.Pointer(data)).Fmagic = DSERIALIZED_DATA_MAGIC
(*Tpcre2_serialized_data)(unsafe.Pointer(data)).Fversion = Tuint32_t(DPCRE2_MAJOR | int32(DPCRE2_MINOR)<<16)
(*Tpcre2_serialized_data)(unsafe.Pointer(data)).Fconfig = uint32(uint64(unsafe.Sizeof(TPCRE2_UCHAR8(0))) | uint64(uint64(unsafe.Sizeof(uintptr(0))))<<8 | uint64(uint64(unsafe.Sizeof(Tsize_t(0))))<<16)
(*Tpcre2_serialized_data)(unsafe.Pointer(data)).Fnumber_of_codes = number_of_codes
// Copy all compiled code data.
dst_bytes = bytes + uintptr(uint64(unsafe.Sizeof(Tpcre2_serialized_data{})))
libc.Xmemcpy(tls, dst_bytes, tables, uint64(Dcbits_offset+Dcbit_length+256))
dst_bytes += uintptr(Dcbits_offset + Dcbit_length + 256)
for i = 0; i < number_of_codes; i++ {
re = *(*uintptr)(unsafe.Pointer(codes + uintptr(i)*8))
libc.Xmemcpy(tls, dst_bytes, re, (*Tpcre2_real_code_8)(unsafe.Pointer(re)).Fblocksize)
// Certain fields in the compiled code block are re-set during
// deserialization. In order to ensure that the serialized data stream is always
// the same for the same pattern, set them to zero here. We can't assume the
// copy of the pattern is correctly aligned for accessing the fields as part of
// a structure. Note the use of sizeof(void *) in the second of these, to
// specify the size of a pointer. If sizeof(uint8_t *) is used (tables is a
// pointer to uint8_t), gcc gives a warning because the first argument is also a
// pointer to uint8_t. Casting the first argument to (void *) can stop this, but
// it didn't stop Coverity giving the same complaint.
libc.Xmemset(tls, dst_bytes+uintptr(uint64(uintptr(0))), 0,
uint64(unsafe.Sizeof(Tpcre2_memctl{})))
libc.Xmemset(tls, dst_bytes+uintptr(uint64(uintptr(0)+24)), 0,
uint64(unsafe.Sizeof(uintptr(0))))
libc.Xmemset(tls, dst_bytes+uintptr(uint64(uintptr(0)+32)), 0,
uint64(unsafe.Sizeof(uintptr(0))))
dst_bytes += uintptr((*Tpcre2_real_code_8)(unsafe.Pointer(re)).Fblocksize)
}
*(*uintptr)(unsafe.Pointer(serialized_bytes)) = bytes
*(*Tsize_t)(unsafe.Pointer(serialized_size)) = total_size
return number_of_codes
}
// ************************************************
//
// Deserialize compiled patterns *
//
func Xpcre2_serialize_decode_8(tls *libc.TLS, codes uintptr, number_of_codes Tint32_t, bytes uintptr, gcontext uintptr) Tint32_t { /* pcre2_serialize.c:163:1: */
bp := tls.Alloc(8)
defer tls.Free(8)
var data uintptr = bytes
var memctl uintptr
if gcontext != uintptr(0) {
memctl = gcontext
} else {
memctl = uintptr(unsafe.Pointer(&X_pcre2_default_compile_context_8))
}
var src_bytes uintptr
var dst_re uintptr
var tables uintptr
var i Tint32_t
var j Tint32_t
// Sanity checks.
if data == uintptr(0) || codes == uintptr(0) {
return -51
}
if number_of_codes <= 0 {
return -29
}
if (*Tpcre2_serialized_data)(unsafe.Pointer(data)).Fnumber_of_codes <= 0 {
return -62
}
if (*Tpcre2_serialized_data)(unsafe.Pointer(data)).Fmagic != DSERIALIZED_DATA_MAGIC {
return -31
}
if (*Tpcre2_serialized_data)(unsafe.Pointer(data)).Fversion != Tuint32_t(DPCRE2_MAJOR|int32(DPCRE2_MINOR)<<16) {
return -32
}
if uint64((*Tpcre2_serialized_data)(unsafe.Pointer(data)).Fconfig) != uint64(unsafe.Sizeof(TPCRE2_UCHAR8(0)))|uint64(uint64(unsafe.Sizeof(uintptr(0))))<<8|uint64(uint64(unsafe.Sizeof(Tsize_t(0))))<<16 {
return -32
}
if number_of_codes > (*Tpcre2_serialized_data)(unsafe.Pointer(data)).Fnumber_of_codes {
number_of_codes = (*Tpcre2_serialized_data)(unsafe.Pointer(data)).Fnumber_of_codes
}
src_bytes = bytes + uintptr(uint64(unsafe.Sizeof(Tpcre2_serialized_data{})))
// Decode tables. The reference count for the tables is stored immediately
// following them.
tables = (*struct {
f func(*libc.TLS, Tsize_t, uintptr) uintptr
})(unsafe.Pointer(&struct{ uintptr }{(*Tpcre2_memctl)(unsafe.Pointer(memctl)).Fmalloc})).f(tls, uint64(Dcbits_offset+Dcbit_length+256)+uint64(unsafe.Sizeof(Tsize_t(0))), (*Tpcre2_memctl)(unsafe.Pointer(memctl)).Fmemory_data)
if tables == uintptr(0) {
return -48
}
libc.Xmemcpy(tls, tables, src_bytes, uint64(Dcbits_offset+Dcbit_length+256))
*(*Tsize_t)(unsafe.Pointer(tables + uintptr(Dcbits_offset+Dcbit_length+256))) = Tsize_t(number_of_codes)
src_bytes += uintptr(Dcbits_offset + Dcbit_length + 256)
// Decode the byte stream. We must not try to read the size from the compiled
// code block in the stream, because it might be unaligned, which causes errors on
// hardware such as Sparc-64 that doesn't like unaligned memory accesses. The type
// of the blocksize field is given its own name to ensure that it is the same here
// as in the block.
for i = 0; i < number_of_codes; i++ {
// var blocksize Tsize_t at bp, 8
libc.Xmemcpy(tls, bp, src_bytes+uintptr(uint64(uintptr(0)+72)),
uint64(unsafe.Sizeof(Tsize_t(0))))
if *(*Tsize_t)(unsafe.Pointer(bp)) <= Tsize_t(unsafe.Sizeof(Tpcre2_real_code_8{})) {
return -62
}
// The allocator provided by gcontext replaces the original one.
dst_re = X_pcre2_memctl_malloc_8(tls, *(*Tsize_t)(unsafe.Pointer(bp /* blocksize */)),
gcontext)
if dst_re == uintptr(0) {
(*struct {
f func(*libc.TLS, uintptr, uintptr)
})(unsafe.Pointer(&struct{ uintptr }{(*Tpcre2_memctl)(unsafe.Pointer(memctl)).Ffree})).f(tls, tables, (*Tpcre2_memctl)(unsafe.Pointer(memctl)).Fmemory_data)
for j = 0; j < i; j++ {
(*struct {
f func(*libc.TLS, uintptr, uintptr)
})(unsafe.Pointer(&struct{ uintptr }{(*Tpcre2_memctl)(unsafe.Pointer(memctl)).Ffree})).f(tls, *(*uintptr)(unsafe.Pointer(codes + uintptr(j)*8)), (*Tpcre2_memctl)(unsafe.Pointer(memctl)).Fmemory_data)
*(*uintptr)(unsafe.Pointer(codes + uintptr(j)*8)) = uintptr(0)
}
return -48
}
// The new allocator must be preserved.
libc.Xmemcpy(tls, dst_re+uintptr(uint64(unsafe.Sizeof(Tpcre2_memctl{}))),
src_bytes+uintptr(uint64(unsafe.Sizeof(Tpcre2_memctl{}))), *(*Tsize_t)(unsafe.Pointer(bp))-Tsize_t(unsafe.Sizeof(Tpcre2_memctl{})))
if uint64((*Tpcre2_real_code_8)(unsafe.Pointer(dst_re)).Fmagic_number) != DMAGIC_NUMBER || int32((*Tpcre2_real_code_8)(unsafe.Pointer(dst_re)).Fname_entry_size) > DMAX_NAME_SIZE+DIMM2_SIZE+1 || int32((*Tpcre2_real_code_8)(unsafe.Pointer(dst_re)).Fname_count) > DMAX_NAME_COUNT {
(*struct {
f func(*libc.TLS, uintptr, uintptr)
})(unsafe.Pointer(&struct{ uintptr }{(*Tpcre2_memctl)(unsafe.Pointer(memctl)).Ffree})).f(tls, dst_re, (*Tpcre2_memctl)(unsafe.Pointer(memctl)).Fmemory_data)
return -62
}
// At the moment only one table is supported.
(*Tpcre2_real_code_8)(unsafe.Pointer(dst_re)).Ftables = tables
(*Tpcre2_real_code_8)(unsafe.Pointer(dst_re)).Fexecutable_jit = uintptr(0)
*(*Tuint32_t)(unsafe.Pointer(dst_re + 96)) |= Tuint32_t(DPCRE2_DEREF_TABLES)
*(*uintptr)(unsafe.Pointer(codes + uintptr(i)*8)) = dst_re
src_bytes += uintptr(*(*Tsize_t)(unsafe.Pointer(bp /* blocksize */)))
}
return number_of_codes
}
// ************************************************
//
// Get the number of serialized patterns *
//
func Xpcre2_serialize_get_number_of_codes_8(tls *libc.TLS, bytes uintptr) Tint32_t { /* pcre2_serialize.c:259:1: */
var data uintptr = bytes
if data == uintptr(0) {
return -51
}
if (*Tpcre2_serialized_data)(unsafe.Pointer(data)).Fmagic != DSERIALIZED_DATA_MAGIC {
return -31
}
if (*Tpcre2_serialized_data)(unsafe.Pointer(data)).Fversion != Tuint32_t(DPCRE2_MAJOR|int32(DPCRE2_MINOR)<<16) {
return -32
}
if uint64((*Tpcre2_serialized_data)(unsafe.Pointer(data)).Fconfig) != uint64(unsafe.Sizeof(TPCRE2_UCHAR8(0)))|uint64(uint64(unsafe.Sizeof(uintptr(0))))<<8|uint64(uint64(unsafe.Sizeof(Tsize_t(0))))<<16 {
return -32
}
return (*Tpcre2_serialized_data)(unsafe.Pointer(data)).Fnumber_of_codes
}
// ************************************************
//
// Free the allocated stream *
//
func Xpcre2_serialize_free_8(tls *libc.TLS, bytes uintptr) { /* pcre2_serialize.c:277:1: */
if bytes != uintptr(0) {
var memctl uintptr = bytes - uintptr(uint64(unsafe.Sizeof(Tpcre2_memctl{})))
(*struct {
f func(*libc.TLS, uintptr, uintptr)
})(unsafe.Pointer(&struct{ uintptr }{(*Tpcre2_memctl)(unsafe.Pointer(memctl)).Ffree})).f(tls, memctl, (*Tpcre2_memctl)(unsafe.Pointer(memctl)).Fmemory_data)
}
}
// End of pcre2_serialize.c
// This function is needed only when memmove() is not available.
// End of pcre2_internal.h
// ************************************************
//
// Emulated memmove() for systems without it *
//
// This function can make use of bcopy() if it is available. Otherwise do it by
// steam, as there some non-Unix environments that lack both memmove() and
// bcopy().
// ************************************************
//
// Compare two zero-terminated PCRE2 strings *
//
//
// Arguments:
// str1 first string
// str2 second string
//
// Returns: 0, 1, or -1
func X_pcre2_strcmp_8(tls *libc.TLS, str1 TPCRE2_SPTR8, str2 TPCRE2_SPTR8) int32 { /* pcre2_string_utils.c:102:1: */
var c1 TPCRE2_UCHAR8
var c2 TPCRE2_UCHAR8
for int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(str1))) != 0 || int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(str2))) != 0 {
c1 = *(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&str1, 1)))
c2 = *(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&str2, 1)))
if int32(c1) != int32(c2) {
return libc.Bool32(int32(c1) > int32(c2))<<1 - 1
}
}
return 0
}
// ************************************************
//
// Compare zero-terminated PCRE2 & 8-bit strings *
//
// As the 8-bit string is almost always a literal, its type is specified as
// const char *.
//
// Arguments:
// str1 first string
// str2 second string
//
// Returns: 0, 1, or -1
func X_pcre2_strcmp_c8_8(tls *libc.TLS, str1 TPCRE2_SPTR8, str2 uintptr) int32 { /* pcre2_string_utils.c:130:1: */
var c1 TPCRE2_UCHAR8
var c2 TPCRE2_UCHAR8
for int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(str1))) != 0 || int32(*(*int8)(unsafe.Pointer(str2))) != 0 {
c1 = *(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&str1, 1)))
c2 = TPCRE2_UCHAR8(*(*int8)(unsafe.Pointer(libc.PostIncUintptr(&str2, 1))))
if int32(c1) != int32(c2) {
return libc.Bool32(int32(c1) > int32(c2))<<1 - 1
}
}
return 0
}
// ************************************************
//
// Compare two PCRE2 strings, given a length *
//
//
// Arguments:
// str1 first string
// str2 second string
// len the length
//
// Returns: 0, 1, or -1
func X_pcre2_strncmp_8(tls *libc.TLS, str1 TPCRE2_SPTR8, str2 TPCRE2_SPTR8, len Tsize_t) int32 { /* pcre2_string_utils.c:157:1: */
var c1 TPCRE2_UCHAR8
var c2 TPCRE2_UCHAR8
for ; len > uint64(0); len-- {
c1 = *(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&str1, 1)))
c2 = *(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&str2, 1)))
if int32(c1) != int32(c2) {
return libc.Bool32(int32(c1) > int32(c2))<<1 - 1
}
}
return 0
}
// ************************************************
//
// Compare PCRE2 string to 8-bit string by length *
//
// As the 8-bit string is almost always a literal, its type is specified as
// const char *.
//
// Arguments:
// str1 first string
// str2 second string
// len the length
//
// Returns: 0, 1, or -1
func X_pcre2_strncmp_c8_8(tls *libc.TLS, str1 TPCRE2_SPTR8, str2 uintptr, len Tsize_t) int32 { /* pcre2_string_utils.c:186:1: */
var c1 TPCRE2_UCHAR8
var c2 TPCRE2_UCHAR8
for ; len > uint64(0); len-- {
c1 = *(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&str1, 1)))
c2 = TPCRE2_UCHAR8(*(*int8)(unsafe.Pointer(libc.PostIncUintptr(&str2, 1))))
if int32(c1) != int32(c2) {
return libc.Bool32(int32(c1) > int32(c2))<<1 - 1
}
}
return 0
}
// ************************************************
//
// Find the length of a PCRE2 string *
//
//
// Argument: the string
// Returns: the length
func X_pcre2_strlen_8(tls *libc.TLS, str TPCRE2_SPTR8) Tsize_t { /* pcre2_string_utils.c:209:1: */
var c Tsize_t = uint64(0)
for int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&str, 1)))) != 0 {
c++
}
return c
}
// ************************************************
//
// Copy 8-bit 0-terminated string to PCRE2 string *
//
// Arguments:
// str1 buffer to receive the string
// str2 8-bit string to be copied
//
// Returns: the number of code units used (excluding trailing zero)
func X_pcre2_strcpy_c8_8(tls *libc.TLS, str1 uintptr, str2 uintptr) Tsize_t { /* pcre2_string_utils.c:229:1: */
var t uintptr = str1
for int32(*(*int8)(unsafe.Pointer(str2))) != 0 {
*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&t, 1))) = TPCRE2_UCHAR8(*(*int8)(unsafe.Pointer(libc.PostIncUintptr(&str2, 1))))
}
*(*TPCRE2_UCHAR8)(unsafe.Pointer(t)) = TPCRE2_UCHAR8(0)
return Tsize_t((int64(t) - int64(str1)) / 1)
}
// End of pcre2_string_utils.c
// ************************************************
//
// Find the minimum subject length for a group *
//
// Scan a parenthesized group and compute the minimum length of subject that
// is needed to match it. This is a lower bound; it does not mean there is a
// string of that length that matches. In UTF mode, the result is in characters
// rather than code units. The field in a compiled pattern for storing the minimum
// length is 16-bits long (on the grounds that anything longer than that is
// pathological), so we give up when we reach that amount. This also means that
// integer overflow for really crazy patterns cannot happen.
//
// Backreference minimum lengths are cached to speed up multiple references. This
// function is called only when the highest back reference in the pattern is less
// than or equal to MAX_CACHE_BACKREF, which is one less than the size of the
// caching vector. The zeroth element contains the number of the highest set
// value.
//
// Arguments:
// re compiled pattern block
// code pointer to start of group (the bracket)
// startcode pointer to start of the whole pattern's code
// utf UTF flag
// recurses chain of recurse_check to catch mutual recursion
// countptr pointer to call count (to catch over complexity)
// backref_cache vector for caching back references.
//
// This function is no longer called when the pattern contains (*ACCEPT); however,
// the old code for returning -1 is retained, just in case.
//
// Returns: the minimum length
// -1 \C in UTF-8 mode
// or (*ACCEPT)
// or pattern too complicated
// -2 internal error (missing capturing bracket)
// -3 internal error (opcode not listed)
func find_minlength(tls *libc.TLS, re uintptr, code TPCRE2_SPTR8, startcode TPCRE2_SPTR8, utf TBOOL, recurses uintptr, countptr uintptr, backref_cache uintptr) int32 { /* pcre2_study.c:103:1: */
bp := tls.Alloc(16)
defer tls.Free(16)
var length int32
var branchlength int32
var prev_cap_recno int32
var prev_cap_d int32
var prev_recurse_recno int32
var prev_recurse_d int32
var once_fudge Tuint32_t
var had_recurse TBOOL
var dupcapused TBOOL
var nextbranch TPCRE2_SPTR8
var cc uintptr
// var this_recurse Trecurse_check at bp, 16
var r uintptr
var dd int32
var i int32
var count int32
var slot uintptr
var r1 uintptr
var i1 int32
var r2 uintptr
var d int32
var min int32
var recno int32
var op TPCRE2_UCHAR8
var cs uintptr
var ce uintptr
length = -1
branchlength = 0
prev_cap_recno = -1
prev_cap_d = 0
prev_recurse_recno = -1
prev_recurse_d = 0
once_fudge = Tuint32_t(0)
had_recurse = DFALSE
dupcapused = libc.Bool32((*Tpcre2_real_code_8)(unsafe.Pointer(re)).Fflags&Tuint32_t(DPCRE2_DUPCAPUSED) != Tuint32_t(0))
nextbranch = code + uintptr(uint32(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + 1)))<<8|int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + 2)))))
cc = code + uintptr(1) + uintptr(DLINK_SIZE)
// If this is a "could be empty" group, its minimum length is 0.
if !(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code))) >= OP_SBRA && int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code))) <= OP_SCOND) {
goto __1
}
return 0
__1:
;
// Skip over capturing bracket number
if !(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code))) == OP_CBRA || int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code))) == OP_CBRAPOS) {
goto __2
}
cc += uintptr(DIMM2_SIZE)
__2:
;
// A large and/or complex regex can take too long to process.
if !(libc.PostIncInt32(&*(*int32)(unsafe.Pointer(countptr)), 1) > 1000) {
goto __3
}
return -1
__3:
;
// Scan along the opcodes for this branch. If we get to the end of the branch,
// check the length against that of the other branches. If the accumulated length
// passes 16-bits, reset to that value and skip the rest of the branch.
__4:
if !(branchlength >= 65535) {
goto __7
}
branchlength = 65535
cc = nextbranch
__7:
;
op = *(*TPCRE2_UCHAR8)(unsafe.Pointer(cc))
switch int32(op) {
case OP_COND:
goto __9
case OP_SCOND:
goto __10
case OP_BRA:
goto __11
// Fall through
case OP_ONCE:
goto __12
case OP_SCRIPT_RUN:
goto __13
case OP_SBRA:
goto __14
case OP_BRAPOS:
goto __15
case OP_SBRAPOS:
goto __16
// To save time for repeated capturing subpatterns, we remember the
// length of the previous one. Unfortunately we can't do the same for
// the unnumbered ones above. Nor can we do this if (?| is present in the
// pattern because captures with the same number are not then identical.
case OP_CBRA:
goto __17
case OP_SCBRA:
goto __18
case OP_CBRAPOS:
goto __19
case OP_SCBRAPOS:
goto __20
// ACCEPT makes things far too complicated; we have to give up. In fact,
// from 10.34 onwards, if a pattern contains (*ACCEPT), this function is not
// used. However, leave the code in place, just in case.
case OP_ACCEPT:
goto __21
case OP_ASSERT_ACCEPT:
goto __22
// Reached end of a branch; if it's a ket it is the end of a nested
// call. If it's ALT it is an alternation in a nested call. If it is END it's
// the end of the outer call. All can be handled by the same code. If the
// length of any branch is zero, there is no need to scan any subsequent
// branches.
case OP_ALT:
goto __23
case OP_KET:
goto __24
case OP_KETRMAX:
goto __25
case OP_KETRMIN:
goto __26
case OP_KETRPOS:
goto __27
case OP_END:
goto __28
// Skip over assertive subpatterns
case OP_ASSERT:
goto __29
case OP_ASSERT_NOT:
goto __30
case OP_ASSERTBACK:
goto __31
case OP_ASSERTBACK_NOT:
goto __32
case OP_ASSERT_NA:
goto __33
case OP_ASSERTBACK_NA:
goto __34
// Fall through
// Skip over things that don't match chars
case OP_REVERSE:
goto __35
case OP_CREF:
goto __36
case OP_DNCREF:
goto __37
case OP_RREF:
goto __38
case OP_DNRREF:
goto __39
case OP_FALSE:
goto __40
case OP_TRUE:
goto __41
case OP_CALLOUT:
goto __42
case OP_SOD:
goto __43
case OP_SOM:
goto __44
case OP_EOD:
goto __45
case OP_EODN:
goto __46
case OP_CIRC:
goto __47
case OP_CIRCM:
goto __48
case OP_DOLL:
goto __49
case OP_DOLLM:
goto __50
case OP_NOT_WORD_BOUNDARY:
goto __51
case OP_WORD_BOUNDARY:
goto __52
case OP_CALLOUT_STR:
goto __53
// Skip over a subpattern that has a {0} or {0,x} quantifier
case OP_BRAZERO:
goto __54
case OP_BRAMINZERO:
goto __55
case OP_BRAPOSZERO:
goto __56
case OP_SKIPZERO:
goto __57
// Handle literal characters and + repetitions
case OP_CHAR:
goto __58
case OP_CHARI:
goto __59
case OP_NOT:
goto __60
case OP_NOTI:
goto __61
case OP_PLUS:
goto __62
case OP_PLUSI:
goto __63
case OP_MINPLUS:
goto __64
case OP_MINPLUSI:
goto __65
case OP_POSPLUS:
goto __66
case OP_POSPLUSI:
goto __67
case OP_NOTPLUS:
goto __68
case OP_NOTPLUSI:
goto __69
case OP_NOTMINPLUS:
goto __70
case OP_NOTMINPLUSI:
goto __71
case OP_NOTPOSPLUS:
goto __72
case OP_NOTPOSPLUSI:
goto __73
case OP_TYPEPLUS:
goto __74
case OP_TYPEMINPLUS:
goto __75
case OP_TYPEPOSPLUS:
goto __76
// Handle exact repetitions. The count is already in characters, but we
// may need to skip over a multibyte character in UTF mode.
case OP_EXACT:
goto __77
case OP_EXACTI:
goto __78
case OP_NOTEXACT:
goto __79
case OP_NOTEXACTI:
goto __80
case OP_TYPEEXACT:
goto __81
// Handle single-char non-literal matchers
case OP_PROP:
goto __82
case OP_NOTPROP:
goto __83
// Fall through
case OP_NOT_DIGIT:
goto __84
case OP_DIGIT:
goto __85
case OP_NOT_WHITESPACE:
goto __86
case OP_WHITESPACE:
goto __87
case OP_NOT_WORDCHAR:
goto __88
case OP_WORDCHAR:
goto __89
case OP_ANY:
goto __90
case OP_ALLANY:
goto __91
case OP_EXTUNI:
goto __92
case OP_HSPACE:
goto __93
case OP_NOT_HSPACE:
goto __94
case OP_VSPACE:
goto __95
case OP_NOT_VSPACE:
goto __96
// "Any newline" might match two characters, but it also might match just
// one.
case OP_ANYNL:
goto __97
// The single-byte matcher means we can't proceed in UTF mode. (In
// non-UTF mode \C will actually be turned into OP_ALLANY, so won't ever
// appear, but leave the code, just in case.)
case OP_ANYBYTE:
goto __98
// For repeated character types, we have to test for \p and \P, which have
// an extra two bytes of parameters.
case OP_TYPESTAR:
goto __99
case OP_TYPEMINSTAR:
goto __100
case OP_TYPEQUERY:
goto __101
case OP_TYPEMINQUERY:
goto __102
case OP_TYPEPOSSTAR:
goto __103
case OP_TYPEPOSQUERY:
goto __104
case OP_TYPEUPTO:
goto __105
case OP_TYPEMINUPTO:
goto __106
case OP_TYPEPOSUPTO:
goto __107
// Check a class for variable quantification
case OP_CLASS:
goto __108
case OP_NCLASS:
goto __109
case OP_XCLASS:
goto __110
// Backreferences and subroutine calls (OP_RECURSE) are treated in the same
// way: we find the minimum length for the subpattern. A recursion
// (backreference or subroutine) causes an a flag to be set that causes the
// length of this branch to be ignored. The logic is that a recursion can only
// make sense if there is another alternative that stops the recursing. That
// will provide the minimum length (when no recursion happens).
//
// If PCRE2_MATCH_UNSET_BACKREF is set, a backreference to an unset bracket
// matches an empty string (by default it causes a matching failure), so in
// that case we must set the minimum length to zero.
//
// For backreferenes, if duplicate numbers are present in the pattern we check
// for a reference to a duplicate. If it is, we don't know which version will
// be referenced, so we have to set the minimum length to zero.
// Duplicate named pattern back reference.
case OP_DNREF:
goto __111
case OP_DNREFI:
goto __112
// Single back reference by number. References by name are converted to by
// number when there is no duplication.
case OP_REF:
goto __113
case OP_REFI:
goto __114
// Recursion always refers to the first occurrence of a subpattern with a
// given number. Therefore, we can always make use of caching, even when the
// pattern contains multiple subpatterns with the same number.
case OP_RECURSE:
goto __115
// Anything else does not or need not match a character. We can get the
// item's length from the table, but for those that can match zero occurrences
// of a character, we must take special action for UTF-8 characters. As it
// happens, the "NOT" versions of these opcodes are used at present only for
// ASCII characters, so they could be omitted from this list. However, in
// future that may change, so we include them here so as not to leave a
// gotcha for a future maintainer.
case OP_UPTO:
goto __116
case OP_UPTOI:
goto __117
case OP_NOTUPTO:
goto __118
case OP_NOTUPTOI:
goto __119
case OP_MINUPTO:
goto __120
case OP_MINUPTOI:
goto __121
case OP_NOTMINUPTO:
goto __122
case OP_NOTMINUPTOI:
goto __123
case OP_POSUPTO:
goto __124
case OP_POSUPTOI:
goto __125
case OP_NOTPOSUPTO:
goto __126
case OP_NOTPOSUPTOI:
goto __127
case OP_STAR:
goto __128
case OP_STARI:
goto __129
case OP_NOTSTAR:
goto __130
case OP_NOTSTARI:
goto __131
case OP_MINSTAR:
goto __132
case OP_MINSTARI:
goto __133
case OP_NOTMINSTAR:
goto __134
case OP_NOTMINSTARI:
goto __135
case OP_POSSTAR:
goto __136
case OP_POSSTARI:
goto __137
case OP_NOTPOSSTAR:
goto __138
case OP_NOTPOSSTARI:
goto __139
case OP_QUERY:
goto __140
case OP_QUERYI:
goto __141
case OP_NOTQUERY:
goto __142
case OP_NOTQUERYI:
goto __143
case OP_MINQUERY:
goto __144
case OP_MINQUERYI:
goto __145
case OP_NOTMINQUERY:
goto __146
case OP_NOTMINQUERYI:
goto __147
case OP_POSQUERY:
goto __148
case OP_POSQUERYI:
goto __149
case OP_NOTPOSQUERY:
goto __150
case OP_NOTPOSQUERYI:
goto __151
// Skip these, but we need to add in the name length.
case OP_MARK:
goto __152
case OP_COMMIT_ARG:
goto __153
case OP_PRUNE_ARG:
goto __154
case OP_SKIP_ARG:
goto __155
case OP_THEN_ARG:
goto __156
// The remaining opcodes are just skipped over.
case OP_CLOSE:
goto __157
case OP_COMMIT:
goto __158
case OP_FAIL:
goto __159
case OP_PRUNE:
goto __160
case OP_SET_SOM:
goto __161
case OP_SKIP:
goto __162
case OP_THEN:
goto __163
// This should not occur: we list all opcodes explicitly so that when
// new ones get added they are properly considered.
default:
goto __164
}
goto __8
__9:
__10:
// If there is only one branch in a condition, the implied branch has zero
// length, so we don't add anything. This covers the DEFINE "condition"
// automatically. If there are two branches we can treat it the same as any
// other non-capturing subpattern.
cs = cc + uintptr(uint32(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(cc + 1)))<<8|int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(cc + 2)))))
if !(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(cs))) != OP_ALT) {
goto __165
}
cc = cs + uintptr(1) + uintptr(DLINK_SIZE)
goto __8
__165:
;
goto PROCESS_NON_CAPTURE
__11:
// There's a special case of OP_BRA, when it is wrapped round a repeated
// OP_RECURSE. We'd like to process the latter at this level so that
// remembering the value works for repeated cases. So we do nothing, but
// set a fudge value to skip over the OP_KET after the recurse.
if !(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(cc + 3))) == OP_RECURSE && int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(cc + 6))) == OP_KET) {
goto __166
}
once_fudge = Tuint32_t(1 + DLINK_SIZE)
cc += uintptr(1 + DLINK_SIZE)
goto __8
__166:
;
// Fall through
__12:
__13:
__14:
__15:
__16:
PROCESS_NON_CAPTURE:
d = find_minlength(tls, re, cc, startcode, utf, recurses, countptr,
backref_cache)
if !(d < 0) {
goto __167
}
return d
__167:
;
branchlength = branchlength + d
__168:
cc += uintptr(uint32(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(cc + 1)))<<8 | int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(cc + 2)))))
goto __169
__169:
if int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(cc))) == OP_ALT {
goto __168
}
goto __170
__170:
;
cc += uintptr(1 + DLINK_SIZE)
goto __8
// To save time for repeated capturing subpatterns, we remember the
// length of the previous one. Unfortunately we can't do the same for
// the unnumbered ones above. Nor can we do this if (?| is present in the
// pattern because captures with the same number are not then identical.
__17:
__18:
__19:
__20:
recno = int32(uint32(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(cc + 3)))<<8 | int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(cc + 4)))))
if !(dupcapused != 0 || recno != prev_cap_recno) {
goto __171
}
prev_cap_recno = recno
prev_cap_d = find_minlength(tls, re, cc, startcode, utf, recurses, countptr,
backref_cache)
if !(prev_cap_d < 0) {
goto __172
}
return prev_cap_d
__172:
;
__171:
;
branchlength = branchlength + prev_cap_d
__173:
cc += uintptr(uint32(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(cc + 1)))<<8 | int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(cc + 2)))))
goto __174
__174:
if int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(cc))) == OP_ALT {
goto __173
}
goto __175
__175:
;
cc += uintptr(1 + DLINK_SIZE)
goto __8
// ACCEPT makes things far too complicated; we have to give up. In fact,
// from 10.34 onwards, if a pattern contains (*ACCEPT), this function is not
// used. However, leave the code in place, just in case.
__21:
__22:
return -1
// Reached end of a branch; if it's a ket it is the end of a nested
// call. If it's ALT it is an alternation in a nested call. If it is END it's
// the end of the outer call. All can be handled by the same code. If the
// length of any branch is zero, there is no need to scan any subsequent
// branches.
__23:
__24:
__25:
__26:
__27:
__28:
if !(length < 0 || !(had_recurse != 0) && branchlength < length) {
goto __176
}
length = branchlength
__176:
;
if !(int32(op) != OP_ALT || length == 0) {
goto __177
}
return length
__177:
;
nextbranch = cc + uintptr(uint32(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(cc + 1)))<<8|int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(cc + 2)))))
cc += uintptr(1 + DLINK_SIZE)
branchlength = 0
had_recurse = DFALSE
goto __8
// Skip over assertive subpatterns
__29:
__30:
__31:
__32:
__33:
__34:
__178:
cc += uintptr(uint32(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(cc + 1)))<<8 | int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(cc + 2)))))
goto __179
__179:
if int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(cc))) == OP_ALT {
goto __178
}
goto __180
__180:
;
// Fall through
// Skip over things that don't match chars
__35:
__36:
__37:
__38:
__39:
__40:
__41:
__42:
__43:
__44:
__45:
__46:
__47:
__48:
__49:
__50:
__51:
__52:
cc += uintptr(X_pcre2_OP_lengths_8[*(*TPCRE2_UCHAR8)(unsafe.Pointer(cc))])
goto __8
__53:
cc += uintptr(uint32(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(cc + 5)))<<8 | int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(cc + 6)))))
goto __8
// Skip over a subpattern that has a {0} or {0,x} quantifier
__54:
__55:
__56:
__57:
cc += uintptr(X_pcre2_OP_lengths_8[*(*TPCRE2_UCHAR8)(unsafe.Pointer(cc))])
__181:
cc += uintptr(uint32(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(cc + 1)))<<8 | int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(cc + 2)))))
goto __182
__182:
if int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(cc))) == OP_ALT {
goto __181
}
goto __183
__183:
;
cc += uintptr(1 + DLINK_SIZE)
goto __8
// Handle literal characters and + repetitions
__58:
__59:
__60:
__61:
__62:
__63:
__64:
__65:
__66:
__67:
__68:
__69:
__70:
__71:
__72:
__73:
branchlength++
cc += uintptr(2)
if !(utf != 0 && int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(cc + libc.UintptrFromInt32(-1)))) >= 0xc0) {
goto __184
}
cc += uintptr(X_pcre2_utf8_table4[uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(cc + libc.UintptrFromInt32(-1))))&0x3f])
__184:
;
goto __8
__74:
__75:
__76:
branchlength++
cc += func() uintptr {
if int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(cc + 1))) == OP_PROP || int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(cc + 1))) == OP_NOTPROP {
return uintptr(4)
}
return uintptr(2)
}()
goto __8
// Handle exact repetitions. The count is already in characters, but we
// may need to skip over a multibyte character in UTF mode.
__77:
__78:
__79:
__80:
branchlength = int32(uint32(branchlength) + uint32(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(cc + 1)))<<8|int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(cc + 2)))))
cc += uintptr(2 + DIMM2_SIZE)
if !(utf != 0 && int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(cc + libc.UintptrFromInt32(-1)))) >= 0xc0) {
goto __185
}
cc += uintptr(X_pcre2_utf8_table4[uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(cc + libc.UintptrFromInt32(-1))))&0x3f])
__185:
;
goto __8
__81:
branchlength = int32(uint32(branchlength) + uint32(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(cc + 1)))<<8|int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(cc + 2)))))
cc += uintptr(2 + DIMM2_SIZE + func() int32 {
if int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(cc + 3))) == OP_PROP ||
int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(cc + 3))) == OP_NOTPROP {
return 2
}
return 0
}())
goto __8
// Handle single-char non-literal matchers
__82:
__83:
cc += uintptr(2)
// Fall through
__84:
__85:
__86:
__87:
__88:
__89:
__90:
__91:
__92:
__93:
__94:
__95:
__96:
branchlength++
cc++
goto __8
// "Any newline" might match two characters, but it also might match just
// one.
__97:
branchlength = branchlength + 1
cc++
goto __8
// The single-byte matcher means we can't proceed in UTF mode. (In
// non-UTF mode \C will actually be turned into OP_ALLANY, so won't ever
// appear, but leave the code, just in case.)
__98:
if !(utf != 0) {
goto __186
}
return -1
__186:
;
branchlength++
cc++
goto __8
// For repeated character types, we have to test for \p and \P, which have
// an extra two bytes of parameters.
__99:
__100:
__101:
__102:
__103:
__104:
if !(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(cc + 1))) == OP_PROP || int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(cc + 1))) == OP_NOTPROP) {
goto __187
}
cc += uintptr(2)
__187:
;
cc += uintptr(X_pcre2_OP_lengths_8[op])
goto __8
__105:
__106:
__107:
if !(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(cc + 3))) == OP_PROP ||
int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(cc + 3))) == OP_NOTPROP) {
goto __188
}
cc += uintptr(2)
__188:
;
cc += uintptr(X_pcre2_OP_lengths_8[op])
goto __8
// Check a class for variable quantification
__108:
__109:
__110:
// The original code caused an unsigned overflow in 64 bit systems,
// so now we use a conditional statement.
if !(int32(op) == OP_XCLASS) {
goto __189
}
cc += uintptr(uint32(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(cc + 1)))<<8 | int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(cc + 2)))))
goto __190
__189:
cc += uintptr(X_pcre2_OP_lengths_8[OP_CLASS])
__190:
;
switch int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(cc))) {
case OP_CRPLUS:
goto __192
case OP_CRMINPLUS:
goto __193
case OP_CRPOSPLUS:
goto __194
// Fall through
case OP_CRSTAR:
goto __195
case OP_CRMINSTAR:
goto __196
case OP_CRQUERY:
goto __197
case OP_CRMINQUERY:
goto __198
case OP_CRPOSSTAR:
goto __199
case OP_CRPOSQUERY:
goto __200
case OP_CRRANGE:
goto __201
case OP_CRMINRANGE:
goto __202
case OP_CRPOSRANGE:
goto __203
default:
goto __204
}
goto __191
__192:
__193:
__194:
branchlength++
// Fall through
__195:
__196:
__197:
__198:
__199:
__200:
cc++
goto __191
__201:
__202:
__203:
branchlength = int32(uint32(branchlength) + uint32(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(cc + 1)))<<8|int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(cc + 2)))))
cc += uintptr(1 + 2*DIMM2_SIZE)
goto __191
__204:
branchlength++
goto __191
__191:
;
goto __8
// Backreferences and subroutine calls (OP_RECURSE) are treated in the same
// way: we find the minimum length for the subpattern. A recursion
// (backreference or subroutine) causes an a flag to be set that causes the
// length of this branch to be ignored. The logic is that a recursion can only
// make sense if there is another alternative that stops the recursing. That
// will provide the minimum length (when no recursion happens).
//
// If PCRE2_MATCH_UNSET_BACKREF is set, a backreference to an unset bracket
// matches an empty string (by default it causes a matching failure), so in
// that case we must set the minimum length to zero.
//
// For backreferenes, if duplicate numbers are present in the pattern we check
// for a reference to a duplicate. If it is, we don't know which version will
// be referenced, so we have to set the minimum length to zero.
// Duplicate named pattern back reference.
__111:
__112:
if !(!(dupcapused != 0) && (*Tpcre2_real_code_8)(unsafe.Pointer(re)).Foverall_options&DPCRE2_MATCH_UNSET_BACKREF == Tuint32_t(0)) {
goto __205
}
count = int32(uint32(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(cc + 3)))<<8 | int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(cc + 4)))))
slot =
re + uintptr(uint64(unsafe.Sizeof(Tpcre2_real_code_8{}))) + uintptr(uint32(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(cc + 1)))<<8|int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(cc + 2))))*uint32((*Tpcre2_real_code_8)(unsafe.Pointer(re)).Fname_entry_size))
d = 0x7fffffff
// Scan all groups with the same name; find the shortest.
__207:
if !(libc.PostDecInt32(&count, 1) > 0) {
goto __208
}
recno = int32(uint32(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(slot)))<<8 | int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(slot + 1)))))
if !(recno <= *(*int32)(unsafe.Pointer(backref_cache)) && *(*int32)(unsafe.Pointer(backref_cache + uintptr(recno)*4)) >= 0) {
goto __209
}
dd = *(*int32)(unsafe.Pointer(backref_cache + uintptr(recno)*4))
goto __210
__209:
ce = libc.AssignUintptr(&cs, X_pcre2_find_bracket_8(tls, startcode, utf, recno))
if !(cs == uintptr(0)) {
goto __211
}
return -2
__211:
;
__212:
ce += uintptr(uint32(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(ce + 1)))<<8 | int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(ce + 2)))))
goto __213
__213:
if int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(ce))) == OP_ALT {
goto __212
}
goto __214
__214:
;
dd = 0
if !(!(dupcapused != 0) || X_pcre2_find_bracket_8(tls, ce, utf, recno) == uintptr(0)) {
goto __215
}
if !(cc > cs && cc < ce) {
goto __216
} /* Simple recursion */
had_recurse = DTRUE
goto __217
__216:
r = recurses
r = recurses
__218:
if !(r != uintptr(0)) {
goto __220
}
if !((*Trecurse_check)(unsafe.Pointer(r)).Fgroup == cs) {
goto __221
}
goto __220
__221:
;
goto __219
__219:
r = (*Trecurse_check)(unsafe.Pointer(r)).Fprev
goto __218
goto __220
__220:
;
if !(r != uintptr(0)) {
goto __222
} /* Mutual recursion */
had_recurse = DTRUE
goto __223
__222:
(*Trecurse_check)(unsafe.Pointer(bp /* &this_recurse */)).Fprev = recurses // No recursion
(*Trecurse_check)(unsafe.Pointer(bp /* &this_recurse */)).Fgroup = cs
dd = find_minlength(tls, re, cs, startcode, utf, bp,
countptr, backref_cache)
if !(dd < 0) {
goto __224
}
return dd
__224:
;
__223:
;
__217:
;
__215:
;
*(*int32)(unsafe.Pointer(backref_cache + uintptr(recno)*4)) = dd
i = *(*int32)(unsafe.Pointer(backref_cache)) + 1
__225:
if !(i < recno) {
goto __227
}
*(*int32)(unsafe.Pointer(backref_cache + uintptr(i)*4)) = -1
goto __226
__226:
i++
goto __225
goto __227
__227:
;
*(*int32)(unsafe.Pointer(backref_cache)) = recno
__210:
;
if !(dd < d) {
goto __228
}
d = dd
__228:
;
if !(d <= 0) {
goto __229
}
goto __208
__229:
; // No point looking at any more
slot += uintptr((*Tpcre2_real_code_8)(unsafe.Pointer(re)).Fname_entry_size)
goto __207
__208:
;
goto __206
__205:
d = 0
__206:
;
cc += uintptr(1 + 2*DIMM2_SIZE)
goto REPEAT_BACK_REFERENCE
// Single back reference by number. References by name are converted to by
// number when there is no duplication.
__113:
__114:
recno = int32(uint32(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(cc + 1)))<<8 | int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(cc + 2)))))
if !(recno <= *(*int32)(unsafe.Pointer(backref_cache)) && *(*int32)(unsafe.Pointer(backref_cache + uintptr(recno)*4)) >= 0) {
goto __230
}
d = *(*int32)(unsafe.Pointer(backref_cache + uintptr(recno)*4))
goto __231
__230:
d = 0
if !((*Tpcre2_real_code_8)(unsafe.Pointer(re)).Foverall_options&DPCRE2_MATCH_UNSET_BACKREF == Tuint32_t(0)) {
goto __232
}
ce = libc.AssignUintptr(&cs, X_pcre2_find_bracket_8(tls, startcode, utf, recno))
if !(cs == uintptr(0)) {
goto __233
}
return -2
__233:
;
__234:
ce += uintptr(uint32(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(ce + 1)))<<8 | int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(ce + 2)))))
goto __235
__235:
if int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(ce))) == OP_ALT {
goto __234
}
goto __236
__236:
;
if !(!(dupcapused != 0) || X_pcre2_find_bracket_8(tls, ce, utf, recno) == uintptr(0)) {
goto __237
}
if !(cc > cs && cc < ce) {
goto __238
} /* Simple recursion */
had_recurse = DTRUE
goto __239
__238:
r1 = recurses
r1 = recurses
__240:
if !(r1 != uintptr(0)) {
goto __242
}
if !((*Trecurse_check)(unsafe.Pointer(r1)).Fgroup == cs) {
goto __243
}
goto __242
__243:
;
goto __241
__241:
r1 = (*Trecurse_check)(unsafe.Pointer(r1)).Fprev
goto __240
goto __242
__242:
;
if !(r1 != uintptr(0)) {
goto __244
} /* Mutual recursion */
had_recurse = DTRUE
goto __245
__244: /* No recursion */
(*Trecurse_check)(unsafe.Pointer(bp /* &this_recurse */)).Fprev = recurses
(*Trecurse_check)(unsafe.Pointer(bp /* &this_recurse */)).Fgroup = cs
d = find_minlength(tls, re, cs, startcode, utf, bp, countptr,
backref_cache)
if !(d < 0) {
goto __246
}
return d
__246:
;
__245:
;
__239:
;
__237:
;
__232:
;
*(*int32)(unsafe.Pointer(backref_cache + uintptr(recno)*4)) = d
i1 = *(*int32)(unsafe.Pointer(backref_cache)) + 1
__247:
if !(i1 < recno) {
goto __249
}
*(*int32)(unsafe.Pointer(backref_cache + uintptr(i1)*4)) = -1
goto __248
__248:
i1++
goto __247
goto __249
__249:
;
*(*int32)(unsafe.Pointer(backref_cache)) = recno
__231:
;
cc += uintptr(1 + DIMM2_SIZE)
// Handle repeated back references
REPEAT_BACK_REFERENCE:
switch int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(cc))) {
case OP_CRSTAR:
goto __251
case OP_CRMINSTAR:
goto __252
case OP_CRQUERY:
goto __253
case OP_CRMINQUERY:
goto __254
case OP_CRPOSSTAR:
goto __255
case OP_CRPOSQUERY:
goto __256
case OP_CRPLUS:
goto __257
case OP_CRMINPLUS:
goto __258
case OP_CRPOSPLUS:
goto __259
case OP_CRRANGE:
goto __260
case OP_CRMINRANGE:
goto __261
case OP_CRPOSRANGE:
goto __262
default:
goto __263
}
goto __250
__251:
__252:
__253:
__254:
__255:
__256:
min = 0
cc++
goto __250
__257:
__258:
__259:
min = 1
cc++
goto __250
__260:
__261:
__262:
min = int32(uint32(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(cc + 1)))<<8 | int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(cc + 2)))))
cc += uintptr(1 + 2*DIMM2_SIZE)
goto __250
__263:
min = 1
goto __250
__250:
;
// Take care not to overflow: (1) min and d are ints, so check that their
// product is not greater than INT_MAX. (2) branchlength is limited to
// UINT16_MAX (checked at the top of the loop).
if !(d > 0 && 0x7fffffff/d < min || 65535-branchlength < min*d) {
goto __264
}
branchlength = 65535
goto __265
__264:
branchlength = branchlength + min*d
__265:
;
goto __8
// Recursion always refers to the first occurrence of a subpattern with a
// given number. Therefore, we can always make use of caching, even when the
// pattern contains multiple subpatterns with the same number.
__115:
cs = libc.AssignUintptr(&ce, startcode+uintptr(uint32(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(cc + 1)))<<8|int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(cc + 2))))))
recno = int32(uint32(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(cs + 3)))<<8 | int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(cs + 4)))))
if !(recno == prev_recurse_recno) {
goto __266
}
branchlength = branchlength + prev_recurse_d
goto __267
__266:
__268:
ce += uintptr(uint32(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(ce + 1)))<<8 | int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(ce + 2)))))
goto __269
__269:
if int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(ce))) == OP_ALT {
goto __268
}
goto __270
__270:
;
if !(cc > cs && cc < ce) {
goto __271
} // Simple recursion
had_recurse = DTRUE
goto __272
__271:
r2 = recurses
r2 = recurses
__273:
if !(r2 != uintptr(0)) {
goto __275
}
if !((*Trecurse_check)(unsafe.Pointer(r2)).Fgroup == cs) {
goto __276
}
goto __275
__276:
;
goto __274
__274:
r2 = (*Trecurse_check)(unsafe.Pointer(r2)).Fprev
goto __273
goto __275
__275:
;
if !(r2 != uintptr(0)) {
goto __277
} // Mutual recursion
had_recurse = DTRUE
goto __278
__277:
(*Trecurse_check)(unsafe.Pointer(bp /* &this_recurse */)).Fprev = recurses
(*Trecurse_check)(unsafe.Pointer(bp /* &this_recurse */)).Fgroup = cs
prev_recurse_d = find_minlength(tls, re, cs, startcode, utf, bp,
countptr, backref_cache)
if !(prev_recurse_d < 0) {
goto __279
}
return prev_recurse_d
__279:
;
prev_recurse_recno = recno
branchlength = branchlength + prev_recurse_d
__278:
;
__272:
;
__267:
;
cc += uintptr(Tuint32_t(1+DLINK_SIZE) + once_fudge)
once_fudge = Tuint32_t(0)
goto __8
// Anything else does not or need not match a character. We can get the
// item's length from the table, but for those that can match zero occurrences
// of a character, we must take special action for UTF-8 characters. As it
// happens, the "NOT" versions of these opcodes are used at present only for
// ASCII characters, so they could be omitted from this list. However, in
// future that may change, so we include them here so as not to leave a
// gotcha for a future maintainer.
__116:
__117:
__118:
__119:
__120:
__121:
__122:
__123:
__124:
__125:
__126:
__127:
__128:
__129:
__130:
__131:
__132:
__133:
__134:
__135:
__136:
__137:
__138:
__139:
__140:
__141:
__142:
__143:
__144:
__145:
__146:
__147:
__148:
__149:
__150:
__151:
cc += uintptr(X_pcre2_OP_lengths_8[op])
if !(utf != 0 && int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(cc + libc.UintptrFromInt32(-1)))) >= 0xc0) {
goto __280
}
cc += uintptr(X_pcre2_utf8_table4[uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(cc + libc.UintptrFromInt32(-1))))&0x3f])
__280:
;
goto __8
// Skip these, but we need to add in the name length.
__152:
__153:
__154:
__155:
__156:
cc += uintptr(int32(X_pcre2_OP_lengths_8[op]) + int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(cc + 1))))
goto __8
// The remaining opcodes are just skipped over.
__157:
__158:
__159:
__160:
__161:
__162:
__163:
cc += uintptr(X_pcre2_OP_lengths_8[op])
goto __8
// This should not occur: we list all opcodes explicitly so that when
// new ones get added they are properly considered.
__164:
return -3
__8:
;
goto __5
__5:
goto __4
goto __6
__6:
;
return int32(0)
// Control never gets here
}
// ************************************************
//
// Set a bit and maybe its alternate case *
//
// Given a character, set its first code unit's bit in the table, and also the
// corresponding bit for the other version of a letter if we are caseless.
//
// Arguments:
// re points to the regex block
// p points to the first code unit of the character
// caseless TRUE if caseless
// utf TRUE for UTF mode
// ucp TRUE for UCP mode
//
// Returns: pointer after the character
func set_table_bit(tls *libc.TLS, re uintptr, p TPCRE2_SPTR8, caseless TBOOL, utf TBOOL, ucp TBOOL) TPCRE2_SPTR8 { /* pcre2_study.c:781:1: */
bp := tls.Alloc(6)
defer tls.Free(6)
var c Tuint32_t = Tuint32_t(*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&p, 1)))) // First code unit
_ = utf // Stop compiler warnings when UTF not supported
_ = ucp
// In 16-bit and 32-bit modes, code units greater than 0xff set the bit for
// 0xff.
*(*Tuint8_t)(unsafe.Pointer(re + 40 + uintptr(c/Tuint32_t(8)))) |= Tuint8_t(uint32(1) << (c & Tuint32_t(7)))
// In UTF-8 or UTF-16 mode, pick up the remaining code units in order to find
// the end of the character, even when caseless.
if utf != 0 {
if c >= Tuint32_t(0xc0) {
if c&0x20 == Tuint32_t(0) {
c = c&0x1f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&p, 1))))&0x3f
} else if c&0x10 == Tuint32_t(0) {
c = c&0x0f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(p)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(p + 1)))&0x3f
p += uintptr(2)
} else if c&0x08 == Tuint32_t(0) {
c = c&0x07<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(p)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(p + 1)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(p + 2)))&0x3f
p += uintptr(3)
} else if c&0x04 == Tuint32_t(0) {
c = c&0x03<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(p)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(p + 1)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(p + 2)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(p + 3)))&0x3f
p += uintptr(4)
} else {
c = c&0x01<<30 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(p)))&0x3f<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(p + 1)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(p + 2)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(p + 3)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(p + 4)))&0x3f
p += uintptr(5)
}
}
}
// If caseless, handle the other case of the character.
if caseless != 0 {
if utf != 0 || ucp != 0 {
c = Tuint32_t(int32(c) + (*Tucd_record)(unsafe.Pointer(uintptr(unsafe.Pointer(&X_pcre2_ucd_records_8))+uintptr(X_pcre2_ucd_stage2_8[int32(X_pcre2_ucd_stage1_8[int32(c)/DUCD_BLOCK_SIZE])*DUCD_BLOCK_SIZE+int32(c)%DUCD_BLOCK_SIZE])*12)).Fother_case)
if utf != 0 {
// var buff [6]TPCRE2_UCHAR8 at bp, 6
X_pcre2_ord2utf_8(tls, c, bp)
*(*Tuint8_t)(unsafe.Pointer(re + 40 + uintptr(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(bp)))/8))) |= Tuint8_t(uint32(1) << (int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(bp))) & 7))
} else if c < Tuint32_t(256) {
*(*Tuint8_t)(unsafe.Pointer(re + 40 + uintptr(c/Tuint32_t(8)))) |= Tuint8_t(uint32(1) << (c & Tuint32_t(7)))
}
} else
// Not UTF or UCP
if 1 != 0 {
*(*Tuint8_t)(unsafe.Pointer(re + 40 + uintptr(int32(*(*Tuint8_t)(unsafe.Pointer((*Tpcre2_real_code_8)(unsafe.Pointer(re)).Ftables + uintptr(Tuint32_t(Dfcc_offset)+c))))/8))) |= Tuint8_t(uint32(1) << (int32(*(*Tuint8_t)(unsafe.Pointer((*Tpcre2_real_code_8)(unsafe.Pointer(re)).Ftables + uintptr(Tuint32_t(Dfcc_offset)+c)))) & 7))
}
}
return p
}
// ************************************************
//
// Set bits for a positive character type *
//
// This function sets starting bits for a character type. In UTF-8 mode, we can
// only do a direct setting for bytes less than 128, as otherwise there can be
// confusion with bytes in the middle of UTF-8 characters. In a "traditional"
// environment, the tables will only recognize ASCII characters anyway, but in at
// least one Windows environment, some higher bytes bits were set in the tables.
// So we deal with that case by considering the UTF-8 encoding.
//
// Arguments:
// re the regex block
// cbit type the type of character wanted
// table_limit 32 for non-UTF-8; 16 for UTF-8
//
// Returns: nothing
func set_type_bits(tls *libc.TLS, re uintptr, cbit_type int32, table_limit uint32) { /* pcre2_study.c:866:1: */
bp := tls.Alloc(6)
defer tls.Free(6)
var c Tuint32_t
for c = Tuint32_t(0); c < table_limit; c++ {
*(*Tuint8_t)(unsafe.Pointer(re + 40 + uintptr(c))) |= Tuint8_t(int32(*(*Tuint8_t)(unsafe.Pointer((*Tpcre2_real_code_8)(unsafe.Pointer(re)).Ftables + uintptr(c+Tuint32_t(Dcbits_offset)+Tuint32_t(cbit_type))))))
}
if table_limit == uint32(32) {
return
}
for c = Tuint32_t(128); c < Tuint32_t(256); c++ {
if uint32(*(*Tuint8_t)(unsafe.Pointer((*Tpcre2_real_code_8)(unsafe.Pointer(re)).Ftables + uintptr(Tuint32_t(Dcbits_offset)+c/Tuint32_t(8)))))&(uint32(1)<<(c&Tuint32_t(7))) != uint32(0) {
// var buff [6]TPCRE2_UCHAR8 at bp, 6
X_pcre2_ord2utf_8(tls, c, bp)
*(*Tuint8_t)(unsafe.Pointer(re + 40 + uintptr(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(bp)))/8))) |= Tuint8_t(uint32(1) << (int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(bp))) & 7))
}
}
}
// ************************************************
//
// Set bits for a negative character type *
//
// This function sets starting bits for a negative character type such as \D.
// In UTF-8 mode, we can only do a direct setting for bytes less than 128, as
// otherwise there can be confusion with bytes in the middle of UTF-8 characters.
// Unlike in the positive case, where we can set appropriate starting bits for
// specific high-valued UTF-8 characters, in this case we have to set the bits for
// all high-valued characters. The lowest is 0xc2, but we overkill by starting at
// 0xc0 (192) for simplicity.
//
// Arguments:
// re the regex block
// cbit type the type of character wanted
// table_limit 32 for non-UTF-8; 16 for UTF-8
//
// Returns: nothing
func set_nottype_bits(tls *libc.TLS, re uintptr, cbit_type int32, table_limit uint32) { /* pcre2_study.c:907:1: */
var c Tuint32_t
for c = Tuint32_t(0); c < table_limit; c++ {
*(*Tuint8_t)(unsafe.Pointer(re + 40 + uintptr(c))) |= Tuint8_t(int32(Tuint8_t(^int32(*(*Tuint8_t)(unsafe.Pointer((*Tpcre2_real_code_8)(unsafe.Pointer(re)).Ftables + uintptr(c+Tuint32_t(Dcbits_offset)+Tuint32_t(cbit_type))))))))
}
if table_limit != uint32(32) {
for c = Tuint32_t(24); c < Tuint32_t(32); c++ {
*(*Tuint8_t)(unsafe.Pointer(re + 40 + uintptr(c))) = Tuint8_t(0xff)
}
}
}
// ************************************************
//
// Create bitmap of starting code units *
//
// This function scans a compiled unanchored expression recursively and
// attempts to build a bitmap of the set of possible starting code units whose
// values are less than 256. In 16-bit and 32-bit mode, values above 255 all cause
// the 255 bit to be set. When calling set[_not]_type_bits() in UTF-8 (sic) mode
// we pass a value of 16 rather than 32 as the final argument. (See comments in
// those functions for the reason.)
//
// The SSB_CONTINUE return is useful for parenthesized groups in patterns such as
// (a*)b where the group provides some optional starting code units but scanning
// must continue at the outer level to find at least one mandatory code unit. At
// the outermost level, this function fails unless the result is SSB_DONE.
//
// We restrict recursion (for nested groups) to 1000 to avoid stack overflow
// issues.
//
// Arguments:
// re points to the compiled regex block
// code points to an expression
// utf TRUE if in UTF mode
// ucp TRUE if in UCP mode
// depthptr pointer to recurse depth
//
// Returns: SSB_FAIL => Failed to find any starting code units
// SSB_DONE => Found mandatory starting code units
// SSB_CONTINUE => Found optional starting code units
// SSB_UNKNOWN => Hit an unrecognized opcode
// SSB_TOODEEP => Recursion is too deep
func set_start_bits(tls *libc.TLS, re uintptr, code TPCRE2_SPTR8, utf TBOOL, ucp TBOOL, depthptr uintptr) int32 { /* pcre2_study.c:953:1: */
bp := tls.Alloc(6)
defer tls.Free(6)
var c Tuint32_t
var yield int32
var table_limit int32
// var buff [6]TPCRE2_UCHAR8 at bp, 6
var p uintptr
var b TPCRE2_UCHAR8
var e TPCRE2_UCHAR8
var p1 TPCRE2_SPTR8
var d int32
var rc int32
var classmap uintptr
var xclassflags TPCRE2_UCHAR8
var try_next TBOOL
var tcode TPCRE2_SPTR8
yield = SSB_DONE
if utf != 0 {
table_limit = 16
} else {
table_limit = 32
}
*(*int32)(unsafe.Pointer(depthptr)) += 1
if !(*(*int32)(unsafe.Pointer(depthptr)) > 1000) {
goto __1
}
return SSB_TOODEEP
__1:
;
__2:
try_next = DTRUE
tcode = code + uintptr(1) + uintptr(DLINK_SIZE)
if !(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code))) == OP_CBRA || int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code))) == OP_SCBRA || int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code))) == OP_CBRAPOS || int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code))) == OP_SCBRAPOS) {
goto __5
}
tcode += TPCRE2_SPTR8(DIMM2_SIZE)
__5:
;
__6:
if !(try_next != 0) {
goto __7
} /* Loop for items in this branch */
classmap = uintptr(0)
switch int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(tcode))) {
// If we reach something we don't understand, it means a new opcode has
// been created that hasn't been added to this function. Hopefully this
// problem will be discovered during testing.
default:
goto __9
// Fail for a valid opcode that implies no starting bits.
case OP_ACCEPT:
goto __10
case OP_ASSERT_ACCEPT:
goto __11
case OP_ALLANY:
goto __12
case OP_ANY:
goto __13
case OP_ANYBYTE:
goto __14
case OP_CIRCM:
goto __15
case OP_CLOSE:
goto __16
case OP_COMMIT:
goto __17
case OP_COMMIT_ARG:
goto __18
case OP_COND:
goto __19
case OP_CREF:
goto __20
case OP_FALSE:
goto __21
case OP_TRUE:
goto __22
case OP_DNCREF:
goto __23
case OP_DNREF:
goto __24
case OP_DNREFI:
goto __25
case OP_DNRREF:
goto __26
case OP_DOLL:
goto __27
case OP_DOLLM:
goto __28
case OP_END:
goto __29
case OP_EOD:
goto __30
case OP_EODN:
goto __31
case OP_EXTUNI:
goto __32
case OP_FAIL:
goto __33
case OP_MARK:
goto __34
case OP_NOT:
goto __35
case OP_NOTEXACT:
goto __36
case OP_NOTEXACTI:
goto __37
case OP_NOTI:
goto __38
case OP_NOTMINPLUS:
goto __39
case OP_NOTMINPLUSI:
goto __40
case OP_NOTMINQUERY:
goto __41
case OP_NOTMINQUERYI:
goto __42
case OP_NOTMINSTAR:
goto __43
case OP_NOTMINSTARI:
goto __44
case OP_NOTMINUPTO:
goto __45
case OP_NOTMINUPTOI:
goto __46
case OP_NOTPLUS:
goto __47
case OP_NOTPLUSI:
goto __48
case OP_NOTPOSPLUS:
goto __49
case OP_NOTPOSPLUSI:
goto __50
case OP_NOTPOSQUERY:
goto __51
case OP_NOTPOSQUERYI:
goto __52
case OP_NOTPOSSTAR:
goto __53
case OP_NOTPOSSTARI:
goto __54
case OP_NOTPOSUPTO:
goto __55
case OP_NOTPOSUPTOI:
goto __56
case OP_NOTPROP:
goto __57
case OP_NOTQUERY:
goto __58
case OP_NOTQUERYI:
goto __59
case OP_NOTSTAR:
goto __60
case OP_NOTSTARI:
goto __61
case OP_NOTUPTO:
goto __62
case OP_NOTUPTOI:
goto __63
case OP_NOT_HSPACE:
goto __64
case OP_NOT_VSPACE:
goto __65
case OP_PRUNE:
goto __66
case OP_PRUNE_ARG:
goto __67
case OP_RECURSE:
goto __68
case OP_REF:
goto __69
case OP_REFI:
goto __70
case OP_REVERSE:
goto __71
case OP_RREF:
goto __72
case OP_SCOND:
goto __73
case OP_SET_SOM:
goto __74
case OP_SKIP:
goto __75
case OP_SKIP_ARG:
goto __76
case OP_SOD:
goto __77
case OP_SOM:
goto __78
case OP_THEN:
goto __79
case OP_THEN_ARG:
goto __80
// OP_CIRC happens only at the start of an anchored branch (multiline ^
// uses OP_CIRCM). Skip over it.
case OP_CIRC:
goto __81
// A "real" property test implies no starting bits, but the fake property
// PT_CLIST identifies a list of characters. These lists are short, as they
// are used for characters with more than one "other case", so there is no
// point in recognizing them for OP_NOTPROP.
case OP_PROP:
goto __82
// We can ignore word boundary tests.
case OP_WORD_BOUNDARY:
goto __83
case OP_NOT_WORD_BOUNDARY:
goto __84
// If we hit a bracket or a positive lookahead assertion, recurse to set
// bits from within the subpattern. If it can't find anything, we have to
// give up. If it finds some mandatory character(s), we are done for this
// branch. Otherwise, carry on scanning after the subpattern.
case OP_BRA:
goto __85
case OP_SBRA:
goto __86
case OP_CBRA:
goto __87
case OP_SCBRA:
goto __88
case OP_BRAPOS:
goto __89
case OP_SBRAPOS:
goto __90
case OP_CBRAPOS:
goto __91
case OP_SCBRAPOS:
goto __92
case OP_ONCE:
goto __93
case OP_SCRIPT_RUN:
goto __94
case OP_ASSERT:
goto __95
case OP_ASSERT_NA:
goto __96
// If we hit ALT or KET, it means we haven't found anything mandatory in
// this branch, though we might have found something optional. For ALT, we
// continue with the next alternative, but we have to arrange that the final
// result from subpattern is SSB_CONTINUE rather than SSB_DONE. For KET,
// return SSB_CONTINUE: if this is the top level, that indicates failure,
// but after a nested subpattern, it causes scanning to continue.
case OP_ALT:
goto __97
case OP_KET:
goto __98
case OP_KETRMAX:
goto __99
case OP_KETRMIN:
goto __100
case OP_KETRPOS:
goto __101
// Skip over callout
case OP_CALLOUT:
goto __102
case OP_CALLOUT_STR:
goto __103
// Skip over lookbehind and negative lookahead assertions
case OP_ASSERT_NOT:
goto __104
case OP_ASSERTBACK:
goto __105
case OP_ASSERTBACK_NOT:
goto __106
case OP_ASSERTBACK_NA:
goto __107
// BRAZERO does the bracket, but carries on.
case OP_BRAZERO:
goto __108
case OP_BRAMINZERO:
goto __109
case OP_BRAPOSZERO:
goto __110
// SKIPZERO skips the bracket.
case OP_SKIPZERO:
goto __111
// Single-char * or ? sets the bit and tries the next item
case OP_STAR:
goto __112
case OP_MINSTAR:
goto __113
case OP_POSSTAR:
goto __114
case OP_QUERY:
goto __115
case OP_MINQUERY:
goto __116
case OP_POSQUERY:
goto __117
case OP_STARI:
goto __118
case OP_MINSTARI:
goto __119
case OP_POSSTARI:
goto __120
case OP_QUERYI:
goto __121
case OP_MINQUERYI:
goto __122
case OP_POSQUERYI:
goto __123
// Single-char upto sets the bit and tries the next
case OP_UPTO:
goto __124
case OP_MINUPTO:
goto __125
case OP_POSUPTO:
goto __126
case OP_UPTOI:
goto __127
case OP_MINUPTOI:
goto __128
case OP_POSUPTOI:
goto __129
// At least one single char sets the bit and stops
case OP_EXACT:
goto __130
// Fall through
case OP_CHAR:
goto __131
case OP_PLUS:
goto __132
case OP_MINPLUS:
goto __133
case OP_POSPLUS:
goto __134
case OP_EXACTI:
goto __135
// Fall through
case OP_CHARI:
goto __136
case OP_PLUSI:
goto __137
case OP_MINPLUSI:
goto __138
case OP_POSPLUSI:
goto __139
// Special spacing and line-terminating items. These recognize specific
// lists of characters. The difference between VSPACE and ANYNL is that the
// latter can match the two-character CRLF sequence, but that is not
// relevant for finding the first character, so their code here is
// identical.
case OP_HSPACE:
goto __140
case OP_ANYNL:
goto __141
case OP_VSPACE:
goto __142
// Single character types set the bits and stop. Note that if PCRE2_UCP
// is set, we do not see these opcodes because \d etc are converted to
// properties. Therefore, these apply in the case when only characters less
// than 256 are recognized to match the types.
case OP_NOT_DIGIT:
goto __143
case OP_DIGIT:
goto __144
case OP_NOT_WHITESPACE:
goto __145
case OP_WHITESPACE:
goto __146
case OP_NOT_WORDCHAR:
goto __147
case OP_WORDCHAR:
goto __148
// One or more character type fudges the pointer and restarts, knowing
// it will hit a single character type and stop there.
case OP_TYPEPLUS:
goto __149
case OP_TYPEMINPLUS:
goto __150
case OP_TYPEPOSPLUS:
goto __151
case OP_TYPEEXACT:
goto __152
// Zero or more repeats of character types set the bits and then
// try again.
case OP_TYPEUPTO:
goto __153
case OP_TYPEMINUPTO:
goto __154
case OP_TYPEPOSUPTO:
goto __155 // Fall through
case OP_TYPESTAR:
goto __156
case OP_TYPEMINSTAR:
goto __157
case OP_TYPEPOSSTAR:
goto __158
case OP_TYPEQUERY:
goto __159
case OP_TYPEMINQUERY:
goto __160
case OP_TYPEPOSQUERY:
goto __161
// Extended class: if there are any property checks, or if this is a
// negative XCLASS without a map, give up. If there are no property checks,
// there must be wide characters on the XCLASS list, because otherwise an
// XCLASS would not have been created. This means that code points >= 255
// are potential starters. In the UTF-8 case we can scan them and set bits
// for the relevant leading bytes.
case OP_XCLASS:
goto __162
// It seems that the fall through comment must be outside the #ifdef if
// it is to avoid the gcc compiler warning.
// Fall through
// Enter here for a negative non-XCLASS. In the 8-bit library, if we are
// in UTF mode, any byte with a value >= 0xc4 is a potentially valid starter
// because it starts a character with a value > 255. In 8-bit non-UTF mode,
// there is no difference between CLASS and NCLASS. In all other wide
// character modes, set the 0xFF bit to indicate code units >= 255.
case OP_NCLASS:
goto __163
// Fall through
// Enter here for a positive non-XCLASS. If we have fallen through from
// an XCLASS, classmap will already be set; just advance the code pointer.
// Otherwise, set up classmap for a a non-XCLASS and advance past it.
case OP_CLASS:
goto __164
}
goto __8
// If we reach something we don't understand, it means a new opcode has
// been created that hasn't been added to this function. Hopefully this
// problem will be discovered during testing.
__9:
return SSB_UNKNOWN
// Fail for a valid opcode that implies no starting bits.
__10:
__11:
__12:
__13:
__14:
__15:
__16:
__17:
__18:
__19:
__20:
__21:
__22:
__23:
__24:
__25:
__26:
__27:
__28:
__29:
__30:
__31:
__32:
__33:
__34:
__35:
__36:
__37:
__38:
__39:
__40:
__41:
__42:
__43:
__44:
__45:
__46:
__47:
__48:
__49:
__50:
__51:
__52:
__53:
__54:
__55:
__56:
__57:
__58:
__59:
__60:
__61:
__62:
__63:
__64:
__65:
__66:
__67:
__68:
__69:
__70:
__71:
__72:
__73:
__74:
__75:
__76:
__77:
__78:
__79:
__80:
return SSB_FAIL
// OP_CIRC happens only at the start of an anchored branch (multiline ^
// uses OP_CIRCM). Skip over it.
__81:
tcode += TPCRE2_SPTR8(X_pcre2_OP_lengths_8[OP_CIRC])
goto __8
// A "real" property test implies no starting bits, but the fake property
// PT_CLIST identifies a list of characters. These lists are short, as they
// are used for characters with more than one "other case", so there is no
// point in recognizing them for OP_NOTPROP.
__82:
if !(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(tcode + 1))) != DPT_CLIST) {
goto __165
}
return SSB_FAIL
__165:
;
p = uintptr(unsafe.Pointer(&X_pcre2_ucd_caseless_sets_8)) + uintptr(*(*TPCRE2_UCHAR8)(unsafe.Pointer(tcode + 2)))*4
__166:
if !(libc.AssignUint32(&c, *(*Tuint32_t)(unsafe.Pointer(libc.PostIncUintptr(&p, 4)))) < DNOTACHAR) {
goto __167
}
if !(utf != 0) {
goto __168
}
X_pcre2_ord2utf_8(tls, c, bp)
c = Tuint32_t(*(*TPCRE2_UCHAR8)(unsafe.Pointer(bp)))
__168:
;
if !(c > Tuint32_t(0xff)) {
goto __169
}
*(*Tuint8_t)(unsafe.Pointer(re + 40 + 31)) |= uint8(uint32(1) << (0xff & 7))
goto __170
__169:
*(*Tuint8_t)(unsafe.Pointer(re + 40 + uintptr(c/Tuint32_t(8)))) |= Tuint8_t(uint32(1) << (c & Tuint32_t(7)))
__170:
;
goto __166
__167:
;
try_next = DFALSE
goto __8
// We can ignore word boundary tests.
__83:
__84:
tcode++
goto __8
// If we hit a bracket or a positive lookahead assertion, recurse to set
// bits from within the subpattern. If it can't find anything, we have to
// give up. If it finds some mandatory character(s), we are done for this
// branch. Otherwise, carry on scanning after the subpattern.
__85:
__86:
__87:
__88:
__89:
__90:
__91:
__92:
__93:
__94:
__95:
__96:
rc = set_start_bits(tls, re, tcode, utf, ucp, depthptr)
if !(rc == SSB_DONE) {
goto __171
}
try_next = DFALSE
goto __172
__171:
if !(rc == SSB_CONTINUE) {
goto __173
}
__175:
tcode += TPCRE2_SPTR8(uint32(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(tcode + 1)))<<8 | int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(tcode + 2)))))
goto __176
__176:
if int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(tcode))) == OP_ALT {
goto __175
}
goto __177
__177:
;
tcode += TPCRE2_SPTR8(1 + DLINK_SIZE)
goto __174
__173:
return rc
__174:
;
__172:
; // FAIL, UNKNOWN, or TOODEEP
goto __8
// If we hit ALT or KET, it means we haven't found anything mandatory in
// this branch, though we might have found something optional. For ALT, we
// continue with the next alternative, but we have to arrange that the final
// result from subpattern is SSB_CONTINUE rather than SSB_DONE. For KET,
// return SSB_CONTINUE: if this is the top level, that indicates failure,
// but after a nested subpattern, it causes scanning to continue.
__97:
yield = SSB_CONTINUE
try_next = DFALSE
goto __8
__98:
__99:
__100:
__101:
return SSB_CONTINUE
// Skip over callout
__102:
tcode += TPCRE2_SPTR8(X_pcre2_OP_lengths_8[OP_CALLOUT])
goto __8
__103:
tcode += TPCRE2_SPTR8(uint32(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(tcode + 5)))<<8 | int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(tcode + 6)))))
goto __8
// Skip over lookbehind and negative lookahead assertions
__104:
__105:
__106:
__107:
__178:
tcode += TPCRE2_SPTR8(uint32(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(tcode + 1)))<<8 | int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(tcode + 2)))))
goto __179
__179:
if int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(tcode))) == OP_ALT {
goto __178
}
goto __180
__180:
;
tcode += TPCRE2_SPTR8(1 + DLINK_SIZE)
goto __8
// BRAZERO does the bracket, but carries on.
__108:
__109:
__110:
rc = set_start_bits(tls, re, libc.PreIncUintptr(&tcode, 1), utf, ucp, depthptr)
if !(rc == SSB_FAIL || rc == SSB_UNKNOWN || rc == SSB_TOODEEP) {
goto __181
}
return rc
__181:
;
__182:
tcode += TPCRE2_SPTR8(uint32(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(tcode + 1)))<<8 | int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(tcode + 2)))))
goto __183
__183:
if int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(tcode))) == OP_ALT {
goto __182
}
goto __184
__184:
;
tcode += TPCRE2_SPTR8(1 + DLINK_SIZE)
goto __8
// SKIPZERO skips the bracket.
__111:
tcode++
__185:
tcode += TPCRE2_SPTR8(uint32(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(tcode + 1)))<<8 | int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(tcode + 2)))))
goto __186
__186:
if int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(tcode))) == OP_ALT {
goto __185
}
goto __187
__187:
;
tcode += TPCRE2_SPTR8(1 + DLINK_SIZE)
goto __8
// Single-char * or ? sets the bit and tries the next item
__112:
__113:
__114:
__115:
__116:
__117:
tcode = set_table_bit(tls, re, tcode+uintptr(1), DFALSE, utf, ucp)
goto __8
__118:
__119:
__120:
__121:
__122:
__123:
tcode = set_table_bit(tls, re, tcode+uintptr(1), DTRUE, utf, ucp)
goto __8
// Single-char upto sets the bit and tries the next
__124:
__125:
__126:
tcode = set_table_bit(tls, re, tcode+uintptr(1)+uintptr(DIMM2_SIZE), DFALSE, utf, ucp)
goto __8
__127:
__128:
__129:
tcode = set_table_bit(tls, re, tcode+uintptr(1)+uintptr(DIMM2_SIZE), DTRUE, utf, ucp)
goto __8
// At least one single char sets the bit and stops
__130:
tcode += TPCRE2_SPTR8(DIMM2_SIZE)
// Fall through
__131:
__132:
__133:
__134:
set_table_bit(tls, re, tcode+uintptr(1), DFALSE, utf, ucp)
try_next = DFALSE
goto __8
__135:
tcode += TPCRE2_SPTR8(DIMM2_SIZE)
// Fall through
__136:
__137:
__138:
__139:
set_table_bit(tls, re, tcode+uintptr(1), DTRUE, utf, ucp)
try_next = DFALSE
goto __8
// Special spacing and line-terminating items. These recognize specific
// lists of characters. The difference between VSPACE and ANYNL is that the
// latter can match the two-character CRLF sequence, but that is not
// relevant for finding the first character, so their code here is
// identical.
__140:
*(*Tuint8_t)(unsafe.Pointer(re + 40 + 1)) |= uint8(uint32(1) << ('\011' & 7))
*(*Tuint8_t)(unsafe.Pointer(re + 40 + 4)) |= uint8(uint32(1) << ('\040' & 7))
// For the 16-bit and 32-bit libraries (which can never be EBCDIC), set
// the bits for 0xA0 and for code units >= 255, independently of UTF.
// For the 8-bit library in UTF-8 mode, set the bits for the first code
// units of horizontal space characters.
if !(utf != 0) {
goto __188
}
*(*Tuint8_t)(unsafe.Pointer(re + 40 + 24)) |= uint8(uint32(1) << (0xC2 & 7)) // For U+00A0
*(*Tuint8_t)(unsafe.Pointer(re + 40 + 28)) |= uint8(uint32(1) << (0xE1 & 7)) // For U+1680, U+180E
*(*Tuint8_t)(unsafe.Pointer(re + 40 + 28)) |= uint8(uint32(1) << (0xE2 & 7)) // For U+2000 - U+200A, U+202F, U+205F
*(*Tuint8_t)(unsafe.Pointer(re + 40 + 28)) |= uint8(uint32(1) << (0xE3 & 7)) // For U+3000
goto __189
__188:
/* For the 8-bit library not in UTF-8 mode, set the bit for 0xA0, unless
the code is EBCDIC. */
*(*Tuint8_t)(unsafe.Pointer(re + 40 + 20)) |= uint8(uint32(1) << (0xA0 & 7))
__189:
;
try_next = DFALSE
goto __8
__141:
__142:
*(*Tuint8_t)(unsafe.Pointer(re + 40 + 1)) |= uint8(uint32(1) << ('\012' & 7))
*(*Tuint8_t)(unsafe.Pointer(re + 40 + 1)) |= uint8(uint32(1) << ('\013' & 7))
*(*Tuint8_t)(unsafe.Pointer(re + 40 + 1)) |= uint8(uint32(1) << ('\014' & 7))
*(*Tuint8_t)(unsafe.Pointer(re + 40 + 1)) |= uint8(uint32(1) << ('\015' & 7))
// For the 16-bit and 32-bit libraries (which can never be EBCDIC), set
// the bits for NEL and for code units >= 255, independently of UTF.
// For the 8-bit library in UTF-8 mode, set the bits for the first code
// units of vertical space characters.
if !(utf != 0) {
goto __190
}
*(*Tuint8_t)(unsafe.Pointer(re + 40 + 24)) |= uint8(uint32(1) << (0xC2 & 7)) // For U+0085 (NEL)
*(*Tuint8_t)(unsafe.Pointer(re + 40 + 28)) |= uint8(uint32(1) << (0xE2 & 7)) // For U+2028, U+2029
goto __191
__190:
/* For the 8-bit library not in UTF-8 mode, set the bit for NEL. */
*(*Tuint8_t)(unsafe.Pointer(re + 40 + 16)) |= uint8(uint32(1) << (int32(libc.Uint8FromInt32(133)) & 7))
__191:
;
try_next = DFALSE
goto __8
// Single character types set the bits and stop. Note that if PCRE2_UCP
// is set, we do not see these opcodes because \d etc are converted to
// properties. Therefore, these apply in the case when only characters less
// than 256 are recognized to match the types.
__143:
set_nottype_bits(tls, re, Dcbit_digit, uint32(table_limit))
try_next = DFALSE
goto __8
__144:
set_type_bits(tls, re, Dcbit_digit, uint32(table_limit))
try_next = DFALSE
goto __8
__145:
set_nottype_bits(tls, re, Dcbit_space, uint32(table_limit))
try_next = DFALSE
goto __8
__146:
set_type_bits(tls, re, Dcbit_space, uint32(table_limit))
try_next = DFALSE
goto __8
__147:
set_nottype_bits(tls, re, Dcbit_word, uint32(table_limit))
try_next = DFALSE
goto __8
__148:
set_type_bits(tls, re, Dcbit_word, uint32(table_limit))
try_next = DFALSE
goto __8
// One or more character type fudges the pointer and restarts, knowing
// it will hit a single character type and stop there.
__149:
__150:
__151:
tcode++
goto __8
__152:
tcode += TPCRE2_SPTR8(1 + DIMM2_SIZE)
goto __8
// Zero or more repeats of character types set the bits and then
// try again.
__153:
__154:
__155:
tcode += TPCRE2_SPTR8(DIMM2_SIZE) // Fall through
__156:
__157:
__158:
__159:
__160:
__161:
switch int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(tcode + 1))) {
default:
goto __193
case OP_ANY:
goto __194
case OP_ALLANY:
goto __195
case OP_HSPACE:
goto __196
case OP_ANYNL:
goto __197
case OP_VSPACE:
goto __198
case OP_NOT_DIGIT:
goto __199
case OP_DIGIT:
goto __200
case OP_NOT_WHITESPACE:
goto __201
case OP_WHITESPACE:
goto __202
case OP_NOT_WORDCHAR:
goto __203
case OP_WORDCHAR:
goto __204
}
goto __192
__193:
__194:
__195:
return SSB_FAIL
__196:
*(*Tuint8_t)(unsafe.Pointer(re + 40 + 1)) |= uint8(uint32(1) << ('\011' & 7))
*(*Tuint8_t)(unsafe.Pointer(re + 40 + 4)) |= uint8(uint32(1) << ('\040' & 7))
// For the 16-bit and 32-bit libraries (which can never be EBCDIC), set
// the bits for 0xA0 and for code units >= 255, independently of UTF.
// For the 8-bit library in UTF-8 mode, set the bits for the first code
// units of horizontal space characters.
if !(utf != 0) {
goto __205
}
*(*Tuint8_t)(unsafe.Pointer(re + 40 + 24)) |= uint8(uint32(1) << (0xC2 & 7)) // For U+00A0
*(*Tuint8_t)(unsafe.Pointer(re + 40 + 28)) |= uint8(uint32(1) << (0xE1 & 7)) // For U+1680, U+180E
*(*Tuint8_t)(unsafe.Pointer(re + 40 + 28)) |= uint8(uint32(1) << (0xE2 & 7)) // For U+2000 - U+200A, U+202F, U+205F
*(*Tuint8_t)(unsafe.Pointer(re + 40 + 28)) |= uint8(uint32(1) << (0xE3 & 7)) // For U+3000
goto __206
__205:
/* For the 8-bit library not in UTF-8 mode, set the bit for 0xA0, unless
the code is EBCDIC. */
*(*Tuint8_t)(unsafe.Pointer(re + 40 + 20)) |= uint8(uint32(1) << (0xA0 & 7))
__206:
;
goto __192
__197:
__198:
*(*Tuint8_t)(unsafe.Pointer(re + 40 + 1)) |= uint8(uint32(1) << ('\012' & 7))
*(*Tuint8_t)(unsafe.Pointer(re + 40 + 1)) |= uint8(uint32(1) << ('\013' & 7))
*(*Tuint8_t)(unsafe.Pointer(re + 40 + 1)) |= uint8(uint32(1) << ('\014' & 7))
*(*Tuint8_t)(unsafe.Pointer(re + 40 + 1)) |= uint8(uint32(1) << ('\015' & 7))
// For the 16-bit and 32-bit libraries (which can never be EBCDIC), set
// the bits for NEL and for code units >= 255, independently of UTF.
// For the 8-bit library in UTF-8 mode, set the bits for the first code
// units of vertical space characters.
if !(utf != 0) {
goto __207
}
*(*Tuint8_t)(unsafe.Pointer(re + 40 + 24)) |= uint8(uint32(1) << (0xC2 & 7)) // For U+0085 (NEL)
*(*Tuint8_t)(unsafe.Pointer(re + 40 + 28)) |= uint8(uint32(1) << (0xE2 & 7)) // For U+2028, U+2029
goto __208
__207:
/* For the 8-bit library not in UTF-8 mode, set the bit for NEL. */
*(*Tuint8_t)(unsafe.Pointer(re + 40 + 16)) |= uint8(uint32(1) << (int32(libc.Uint8FromInt32(133)) & 7))
__208:
;
goto __192
__199:
set_nottype_bits(tls, re, Dcbit_digit, uint32(table_limit))
goto __192
__200:
set_type_bits(tls, re, Dcbit_digit, uint32(table_limit))
goto __192
__201:
set_nottype_bits(tls, re, Dcbit_space, uint32(table_limit))
goto __192
__202:
set_type_bits(tls, re, Dcbit_space, uint32(table_limit))
goto __192
__203:
set_nottype_bits(tls, re, Dcbit_word, uint32(table_limit))
goto __192
__204:
set_type_bits(tls, re, Dcbit_word, uint32(table_limit))
goto __192
__192:
;
tcode += uintptr(2)
goto __8
// Extended class: if there are any property checks, or if this is a
// negative XCLASS without a map, give up. If there are no property checks,
// there must be wide characters on the XCLASS list, because otherwise an
// XCLASS would not have been created. This means that code points >= 255
// are potential starters. In the UTF-8 case we can scan them and set bits
// for the relevant leading bytes.
__162:
xclassflags = *(*TPCRE2_UCHAR8)(unsafe.Pointer(tcode + 3))
if !(int32(xclassflags)&DXCL_HASPROP != 0 || int32(xclassflags)&(DXCL_MAP|DXCL_NOT) == DXCL_NOT) {
goto __209
}
return SSB_FAIL
__209:
;
// We have a positive XCLASS or a negative one without a map. Set up the
// map pointer if there is one, and fall through.
if int32(xclassflags)&DXCL_MAP == 0 {
classmap = uintptr(0)
} else {
classmap = tcode + uintptr(1) + uintptr(DLINK_SIZE) + uintptr(1)
}
// In UTF-8 mode, scan the character list and set bits for leading bytes,
// then jump to handle the map.
if !(utf != 0 && int32(xclassflags)&DXCL_NOT == 0) {
goto __210
}
p1 = tcode + uintptr(1) + uintptr(DLINK_SIZE) + uintptr(1) + uintptr(func() int32 {
if classmap == uintptr(0) {
return 0
}
return 32
}())
tcode += TPCRE2_SPTR8(uint32(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(tcode + 1)))<<8 | int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(tcode + 2)))))
__211:
switch int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&p1, 1)))) {
case DXCL_SINGLE:
goto __215
case DXCL_RANGE:
goto __216
case DXCL_END:
goto __217
default:
goto __218
}
goto __214
__215:
b = *(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&p1, 1)))
__219:
if !(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(p1)))&0xc0 == 0x80) {
goto __220
}
p1++
goto __219
__220:
;
*(*Tuint8_t)(unsafe.Pointer(re + 40 + uintptr(int32(b)/8))) |= Tuint8_t(uint32(1) << (int32(b) & 7))
goto __214
__216:
b = *(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&p1, 1)))
__221:
if !(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(p1)))&0xc0 == 0x80) {
goto __222
}
p1++
goto __221
__222:
;
e = *(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&p1, 1)))
__223:
if !(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(p1)))&0xc0 == 0x80) {
goto __224
}
p1++
goto __223
__224:
;
__225:
if !(int32(b) <= int32(e)) {
goto __227
}
*(*Tuint8_t)(unsafe.Pointer(re + 40 + uintptr(int32(b)/8))) |= Tuint8_t(uint32(1) << (int32(b) & 7))
goto __226
__226:
b++
goto __225
goto __227
__227:
;
goto __214
__217:
goto HANDLE_CLASSMAP
__218:
return SSB_UNKNOWN // Internal error, should not occur
__214:
;
goto __212
__212:
goto __211
goto __213
__213:
;
__210:
;
// It seems that the fall through comment must be outside the #ifdef if
// it is to avoid the gcc compiler warning.
// Fall through
// Enter here for a negative non-XCLASS. In the 8-bit library, if we are
// in UTF mode, any byte with a value >= 0xc4 is a potentially valid starter
// because it starts a character with a value > 255. In 8-bit non-UTF mode,
// there is no difference between CLASS and NCLASS. In all other wide
// character modes, set the 0xFF bit to indicate code units >= 255.
__163:
if !(utf != 0) {
goto __228
}
*(*Tuint8_t)(unsafe.Pointer(re + 40 + 24)) |= Tuint8_t(0xf0) // Bits for 0xc4 - 0xc8
libc.Xmemset(tls, re+40+uintptr(25), 0xff, uint64(7)) // Bits for 0xc9 - 0xff
__228:
;
// Fall through
// Enter here for a positive non-XCLASS. If we have fallen through from
// an XCLASS, classmap will already be set; just advance the code pointer.
// Otherwise, set up classmap for a a non-XCLASS and advance past it.
__164:
if !(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(tcode))) == OP_XCLASS) {
goto __229
}
tcode += TPCRE2_SPTR8(uint32(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(tcode + 1)))<<8 | int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(tcode + 2)))))
goto __230
__229:
classmap = libc.PreIncUintptr(&tcode, 1)
tcode += TPCRE2_SPTR8(uint64(32) / uint64(unsafe.Sizeof(TPCRE2_UCHAR8(0))))
__230:
;
// When wide characters are supported, classmap may be NULL. In UTF-8
// (sic) mode, the bits in a class bit map correspond to character values,
// not to byte values. However, the bit map we are constructing is for byte
// values. So we have to do a conversion for characters whose code point is
// greater than 127. In fact, there are only two possible starting bytes for
// characters in the range 128 - 255.
HANDLE_CLASSMAP:
if !(classmap != uintptr(0)) {
goto __231
}
if !(utf != 0) {
goto __232
}
c = Tuint32_t(0)
__234:
if !(c < Tuint32_t(16)) {
goto __236
}
*(*Tuint8_t)(unsafe.Pointer(re + 40 + uintptr(c))) |= Tuint8_t(int32(*(*Tuint8_t)(unsafe.Pointer(classmap + uintptr(c)))))
goto __235
__235:
c++
goto __234
goto __236
__236:
;
c = Tuint32_t(128)
__237:
if !(c < Tuint32_t(256)) {
goto __239
}
if !(uint32(*(*Tuint8_t)(unsafe.Pointer(classmap + uintptr(c/Tuint32_t(8)))))&(uint32(1)<<(c&Tuint32_t(7))) != uint32(0)) {
goto __240
}
d = int32(c>>6 | Tuint32_t(0xc0)) // Set bit for this starter
*(*Tuint8_t)(unsafe.Pointer(re + 40 + uintptr(d/8))) |= Tuint8_t(uint32(1) << (d & 7)) // and then skip on to the
c = c&Tuint32_t(0xc0) + Tuint32_t(0x40) - Tuint32_t(1) // next relevant character.
__240:
;
goto __238
__238:
c++
goto __237
goto __239
__239:
;
goto __233
__232:
/* In all modes except UTF-8, the two bit maps are compatible. */
c = Tuint32_t(0)
__241:
if !(c < Tuint32_t(32)) {
goto __243
}
*(*Tuint8_t)(unsafe.Pointer(re + 40 + uintptr(c))) |= Tuint8_t(int32(*(*Tuint8_t)(unsafe.Pointer(classmap + uintptr(c)))))
goto __242
__242:
c++
goto __241
goto __243
__243:
;
__233:
;
__231:
;
// Act on what follows the class. For a zero minimum repeat, continue;
// otherwise stop processing.
switch int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(tcode))) {
case OP_CRSTAR:
goto __245
case OP_CRMINSTAR:
goto __246
case OP_CRQUERY:
goto __247
case OP_CRMINQUERY:
goto __248
case OP_CRPOSSTAR:
goto __249
case OP_CRPOSQUERY:
goto __250
case OP_CRRANGE:
goto __251
case OP_CRMINRANGE:
goto __252
case OP_CRPOSRANGE:
goto __253
default:
goto __254
}
goto __244
__245:
__246:
__247:
__248:
__249:
__250:
tcode++
goto __244
__251:
__252:
__253:
if !(uint32(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(tcode + 1)))<<8|int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(tcode + 2)))) == uint32(0)) {
goto __255
}
tcode += TPCRE2_SPTR8(1 + 2*DIMM2_SIZE)
goto __256
__255:
try_next = DFALSE
__256:
;
goto __244
__254:
try_next = DFALSE
goto __244
__244:
;
goto __8 // End of class handling case
__8:
; // End of switch for opcodes
goto __6
__7:
; // End of try_next loop
code += TPCRE2_SPTR8(uint32(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + 1)))<<8 | int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code + 2))))) // Advance to next branch
goto __3
__3:
if int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(code))) == OP_ALT {
goto __2
}
goto __4
__4:
;
return yield
}
// ************************************************
//
// Study a compiled expression *
//
// This function is handed a compiled expression that it must study to produce
// information that will speed up the matching.
//
// Argument:
// re points to the compiled expression
//
// Returns: 0 normally; non-zero should never normally occur
// 1 unknown opcode in set_start_bits
// 2 missing capturing bracket
// 3 unknown opcode in find_minlength
func X_pcre2_study_8(tls *libc.TLS, re uintptr) int32 { /* pcre2_study.c:1672:1: */
bp := tls.Alloc(524)
defer tls.Free(524)
// var count int32 at bp+520, 4
var code uintptr
var utf TBOOL
var ucp TBOOL
var d int32
var c int32
var y Tuint8_t
var x Tuint8_t
var i int32
var a int32
var b int32
var p uintptr
var flags Tuint32_t
// var depth int32 at bp, 4
var rc int32
var min int32
// var backref_cache [129]int32 at bp+4, 516
*(*int32)(unsafe.Pointer(bp + 520 /* count */)) = 0
utf = libc.Bool32((*Tpcre2_real_code_8)(unsafe.Pointer(re)).Foverall_options&DPCRE2_UTF != Tuint32_t(0))
ucp = libc.Bool32((*Tpcre2_real_code_8)(unsafe.Pointer(re)).Foverall_options&DPCRE2_UCP != Tuint32_t(0))
// Find start of compiled code
code = re + uintptr(uint64(unsafe.Sizeof(Tpcre2_real_code_8{}))) + uintptr(int32((*Tpcre2_real_code_8)(unsafe.Pointer(re)).Fname_entry_size)*int32((*Tpcre2_real_code_8)(unsafe.Pointer(re)).Fname_count))
// For a pattern that has a first code unit, or a multiline pattern that
// matches only at "line start", there is no point in seeking a list of starting
// code units.
if !((*Tpcre2_real_code_8)(unsafe.Pointer(re)).Fflags&Tuint32_t(DPCRE2_FIRSTSET|DPCRE2_STARTLINE) == Tuint32_t(0)) {
goto __1
}
*(*int32)(unsafe.Pointer(bp /* depth */)) = 0
rc = set_start_bits(tls, re, code, utf, ucp, bp)
if !(rc == SSB_UNKNOWN) {
goto __2
}
return 1
__2:
;
// If a list of starting code units was set up, scan the list to see if only
// one or two were listed. Having only one listed is rare because usually a
// single starting code unit will have been recognized and PCRE2_FIRSTSET set.
// If two are listed, see if they are caseless versions of the same character;
// if so we can replace the list with a caseless first code unit. This gives
// better performance and is plausibly worth doing for patterns such as [Ww]ord
// or (word|WORD).
if !(rc == SSB_DONE) {
goto __3
}
a = -1
b = -1
p = re + 40 /* &.start_bitmap */
flags = Tuint32_t(DPCRE2_FIRSTMAPSET)
i = 0
__4:
if !(i < 256) {
goto __6
}
x = *(*Tuint8_t)(unsafe.Pointer(p))
if !(int32(x) != 0) {
goto __7
}
y = Tuint8_t(int32(x) & (^int32(x) + 1)) // Least significant bit
if !(int32(y) != int32(x)) {
goto __8
}
goto DONE
__8:
; // More than one bit set
// In the 16-bit and 32-bit libraries, the bit for 0xff means "0xff and
// all wide characters", so we cannot use it here.
// Compute the character value
c = i
switch int32(x) {
case 1:
goto __10
case 2:
goto __11
case 4:
goto __12
case 8:
goto __13
case 16:
goto __14
case 32:
goto __15
case 64:
goto __16
case 128:
goto __17
}
goto __9
__10:
goto __9
__11:
c = c + 1
goto __9
__12:
c = c + 2
goto __9
__13:
c = c + 3
goto __9
__14:
c = c + 4
goto __9
__15:
c = c + 5
goto __9
__16:
c = c + 6
goto __9
__17:
c = c + 7
goto __9
__9:
;
// c contains the code unit value, in the range 0-255. In 8-bit UTF
// mode, only values < 128 can be used. In all the other cases, c is a
// character value.
if !(utf != 0 && c > 127) {
goto __18
}
goto DONE
__18:
;
if !(a < 0) {
goto __19
}
a = c
goto __20
__19:
if !(b < 0) {
goto __21
} /* Second one found */
d = int32(*(*Tuint8_t)(unsafe.Pointer((*Tpcre2_real_code_8)(unsafe.Pointer(re)).Ftables + uintptr(Dfcc_offset) + uintptr(uint32(c)))))
if !(utf != 0 || ucp != 0) {
goto __23
}
if !(int32((*Tucd_record)(unsafe.Pointer(uintptr(unsafe.Pointer(&X_pcre2_ucd_records_8))+uintptr(X_pcre2_ucd_stage2_8[int32(X_pcre2_ucd_stage1_8[c/DUCD_BLOCK_SIZE])*DUCD_BLOCK_SIZE+c%DUCD_BLOCK_SIZE])*12)).Fcaseset) != 0) {
goto __24
}
goto DONE
__24:
; // Multiple case set
if !(c > 127) {
goto __25
}
d = int32(Tuint32_t(c + (*Tucd_record)(unsafe.Pointer(uintptr(unsafe.Pointer(&X_pcre2_ucd_records_8))+uintptr(X_pcre2_ucd_stage2_8[int32(X_pcre2_ucd_stage1_8[c/DUCD_BLOCK_SIZE])*DUCD_BLOCK_SIZE+c%DUCD_BLOCK_SIZE])*12)).Fother_case))
__25:
;
__23:
;
if !(d != a) {
goto __26
}
goto DONE
__26:
; // Not the other case of a
b = c // Save second in b
goto __22
__21:
goto DONE
__22:
;
__20:
; // More than two characters found
__7:
;
goto __5
__5:
p++
i = i + 8
goto __4
goto __6
__6:
;
// Replace the start code unit bits with a first code unit, but only if it
// is not the same as a required later code unit. This is because a search for
// a required code unit starts after an explicit first code unit, but at a
// code unit found from the bitmap. Patterns such as /a*a/ don't work
// if both the start unit and required unit are the same.
if !(a >= 0 && ((*Tpcre2_real_code_8)(unsafe.Pointer(re)).Fflags&Tuint32_t(DPCRE2_LASTSET) == Tuint32_t(0) || (*Tpcre2_real_code_8)(unsafe.Pointer(re)).Flast_codeunit != Tuint32_t(a) && (b < 0 || (*Tpcre2_real_code_8)(unsafe.Pointer(re)).Flast_codeunit != Tuint32_t(b)))) {
goto __27
}
(*Tpcre2_real_code_8)(unsafe.Pointer(re)).Ffirst_codeunit = Tuint32_t(a)
flags = Tuint32_t(DPCRE2_FIRSTSET)
if !(b >= 0) {
goto __28
}
flags = flags | Tuint32_t(DPCRE2_FIRSTCASELESS)
__28:
;
__27:
;
DONE:
*(*Tuint32_t)(unsafe.Pointer(re + 96)) |= flags
__3:
;
__1:
;
// Find the minimum length of subject string. If the pattern can match an empty
// string, the minimum length is already known. If the pattern contains (*ACCEPT)
// all bets are off, and we don't even try to find a minimum length. If there are
// more back references than the size of the vector we are going to cache them in,
// do nothing. A pattern that complicated will probably take a long time to
// analyze and may in any case turn out to be too complicated. Note that back
// reference minima are held as 16-bit numbers.
if !((*Tpcre2_real_code_8)(unsafe.Pointer(re)).Fflags&Tuint32_t(DPCRE2_MATCH_EMPTY|DPCRE2_HASACCEPT) == Tuint32_t(0) && int32((*Tpcre2_real_code_8)(unsafe.Pointer(re)).Ftop_backref) <= DMAX_CACHE_BACKREF) {
goto __29
}
*(*int32)(unsafe.Pointer(bp + 4)) = 0 // Highest one that is set
min = find_minlength(tls, re, code, code, utf, uintptr(0), bp+520, bp+4)
switch min {
case -1:
goto __31 // Leave minlength unchanged (will be zero)
case -2:
goto __32 // missing capturing bracket
case -3:
goto __33 // unrecognized opcode
default:
goto __34
}
goto __30
__31: // \C in UTF mode or over-complex regex
goto __30 // Leave minlength unchanged (will be zero)
__32:
return 2 // missing capturing bracket
__33:
return 3 // unrecognized opcode
__34:
(*Tpcre2_real_code_8)(unsafe.Pointer(re)).Fminlength = func() uint16 {
if min > 65535 {
return uint16(65535)
}
return uint16(min)
}()
goto __30
__30:
;
__29:
;
return 0
}
// End of pcre2_study.c
// This function is needed only when memmove() is not available.
// End of pcre2_internal.h
// ************************************************
//
// Find end of substitute text *
//
// In extended mode, we recognize ${name:+set text:unset text} and similar
// constructions. This requires the identification of unescaped : and }
// characters. This function scans for such. It must deal with nested ${
// constructions. The pointer to the text is updated, either to the required end
// character, or to where an error was detected.
//
// Arguments:
// code points to the compiled expression (for options)
// ptrptr points to the pointer to the start of the text (updated)
// ptrend end of the whole string
// last TRUE if the last expected string (only } recognized)
//
// Returns: 0 on success
// negative error code on failure
func find_text_end(tls *libc.TLS, code uintptr, ptrptr uintptr, ptrend TPCRE2_SPTR8, last TBOOL) int32 { /* pcre2_substitute.c:79:1: */
bp := tls.Alloc(16)
defer tls.Free(16)
var rc int32
var nestlevel Tuint32_t
var literal TBOOL
// var ptr TPCRE2_SPTR8 at bp, 8
var erc int32
// var errorcode int32 at bp+12, 4
// var ch Tuint32_t at bp+8, 4
rc = 0
nestlevel = Tuint32_t(0)
literal = DFALSE
*(*TPCRE2_SPTR8)(unsafe.Pointer(bp /* ptr */)) = *(*TPCRE2_SPTR8)(unsafe.Pointer(ptrptr))
__1:
if !(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp)) < ptrend) {
goto __3
}
if !(literal != 0) {
goto __4
}
if !(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp))))) == '\134' && *(*TPCRE2_SPTR8)(unsafe.Pointer(bp)) < ptrend-uintptr(1) && int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp)) + 1))) == '\105') {
goto __6
}
literal = DFALSE
*(*TPCRE2_SPTR8)(unsafe.Pointer(bp /* ptr */)) += uintptr(1)
__6:
;
goto __5
__4:
if !(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp))))) == '\175') {
goto __7
}
if !(nestlevel == Tuint32_t(0)) {
goto __9
}
goto EXIT
__9:
;
nestlevel--
goto __8
__7:
if !(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp))))) == '\072' && !(last != 0) && nestlevel == Tuint32_t(0)) {
goto __10
}
goto EXIT
goto __11
__10:
if !(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp))))) == '\044') {
goto __12
}
if !(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp)) < ptrend-uintptr(1) && int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp)) + 1))) == '\173') {
goto __14
}
nestlevel++
*(*TPCRE2_SPTR8)(unsafe.Pointer(bp /* ptr */)) += uintptr(1)
__14:
;
goto __13
__12:
if !(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp))))) == '\134') {
goto __15
}
if !(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp)) < ptrend-uintptr(1)) {
goto __16
}
switch int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp /* ptr */)) + 1))) {
case '\114':
goto __18
case '\154':
goto __19
case '\125':
goto __20
case '\165':
goto __21
}
goto __17
__18:
__19:
__20:
__21:
*(*TPCRE2_SPTR8)(unsafe.Pointer(bp /* ptr */)) += uintptr(1)
goto __2
__17:
;
__16:
;
*(*TPCRE2_SPTR8)(unsafe.Pointer(bp /* ptr */)) += uintptr(1) // Must point after \
erc = X_pcre2_check_escape_8(tls, bp, ptrend, bp+8, bp+12,
(*Tpcre2_code_8)(unsafe.Pointer(code)).Foverall_options, (*Tpcre2_code_8)(unsafe.Pointer(code)).Fextra_options, DFALSE, uintptr(0))
*(*TPCRE2_SPTR8)(unsafe.Pointer(bp /* ptr */)) -= uintptr(1) // Back to last code unit of escape
if !(*(*int32)(unsafe.Pointer(bp + 12)) != 0) {
goto __22
}
rc = *(*int32)(unsafe.Pointer(bp + 12 /* errorcode */))
goto EXIT
__22:
;
switch erc {
case 0:
goto __24 // Data character
case ESC_E:
goto __25
case ESC_Q:
goto __26
default:
goto __27
}
goto __23
__24: // Data character
__25: // Isolated \E is ignored
goto __23
__26:
literal = DTRUE
goto __23
__27:
rc = -57
goto EXIT
__23:
;
__15:
;
__13:
;
__11:
;
__8:
;
__5:
;
goto __2
__2:
*(*TPCRE2_SPTR8)(unsafe.Pointer(bp /* ptr */))++
goto __1
goto __3
__3:
;
rc = -58 // Terminator not found
EXIT:
*(*TPCRE2_SPTR8)(unsafe.Pointer(ptrptr)) = *(*TPCRE2_SPTR8)(unsafe.Pointer(bp /* ptr */))
return rc
}
// ************************************************
//
// Match and substitute *
//
// This function applies a compiled re to a subject string and creates a new
// string with substitutions. The first 7 arguments are the same as for
// pcre2_match(). Either string length may be PCRE2_ZERO_TERMINATED.
//
// Arguments:
// code points to the compiled expression
// subject points to the subject string
// length length of subject string (may contain binary zeros)
// start_offset where to start in the subject string
// options option bits
// match_data points to a match_data block, or is NULL
// context points a PCRE2 context
// replacement points to the replacement string
// rlength length of replacement string
// buffer where to put the substituted string
// blength points to length of buffer; updated to length of string
//
// Returns: >= 0 number of substitutions made
// < 0 an error code
// PCRE2_ERROR_BADREPLACEMENT means invalid use of $
// This macro checks for space in the buffer before copying into it. On
// overflow, either give an error immediately, or keep on, accumulating the
// length.
// Here's the function
func Xpcre2_substitute_8(tls *libc.TLS, code uintptr, subject TPCRE2_SPTR8, length Tsize_t, start_offset Tsize_t, options Tuint32_t, match_data uintptr, mcontext uintptr, replacement TPCRE2_SPTR8, rlength Tsize_t, buffer uintptr, blength uintptr) int32 { /* pcre2_substitute.c:220:1: */
bp := tls.Alloc(328)
defer tls.Free(328)
var rc int32
var subs int32
var forcecase int32
var forcecasereset int32
var ovector_count Tuint32_t
var goptions Tuint32_t
var suboptions Tuint32_t
var internal_match_data uintptr
var escaped_literal TBOOL
var overflowed TBOOL
var use_existing_match TBOOL
var replacement_only TBOOL
var utf TBOOL
var ucp TBOOL
// var temp [6]TPCRE2_UCHAR8 at bp+312, 6
// var ptr TPCRE2_SPTR8 at bp+280, 8
var repend TPCRE2_SPTR8
var extra_needed Tsize_t
var buff_offset Tsize_t
var buff_length Tsize_t
var lengthleft Tsize_t
var fraglength Tsize_t
var ovector uintptr
// var ovecsave [3]Tsize_t at bp, 24
// var scb Tpcre2_substitute_callout_block_8 at bp+24, 56
var gcontext uintptr
var gcontext1 uintptr
var pairs int32
var save_start Tsize_t
var ctypes uintptr
var mark_start TPCRE2_SPTR8
var mark TPCRE2_SPTR8
var ng Tuint32_t
// var first TPCRE2_SPTR8 at bp+288, 8
// var last TPCRE2_SPTR8 at bp+296, 8
var entry TPCRE2_SPTR8
var type1 Tuint32_t
var subptr TPCRE2_SPTR8
var subptrend TPCRE2_SPTR8
var group int32
var n int32
var special Tuint32_t
var inparens TBOOL
var star TBOOL
// var sublength Tsize_t at bp+304, 8
var text1_start TPCRE2_SPTR8
var text1_end TPCRE2_SPTR8
var text2_start TPCRE2_SPTR8
var text2_end TPCRE2_SPTR8
var next TPCRE2_UCHAR8
// var name [33]TPCRE2_UCHAR8 at bp+240, 33
// var errorcode int32 at bp+324, 4
var type2 Tuint32_t
// var ch Tuint32_t at bp+320, 4
var chlen uint32
var newlength Tsize_t
var oldlength Tsize_t
// var ptrstack [20]TPCRE2_SPTR8 at bp+80, 160
var ptrstackptr Tuint32_t
forcecase = 0
forcecasereset = 0
goptions = Tuint32_t(0)
internal_match_data = uintptr(0)
escaped_literal = DFALSE
overflowed = DFALSE
utf = libc.Bool32((*Tpcre2_code_8)(unsafe.Pointer(code)).Foverall_options&DPCRE2_UTF != Tuint32_t(0))
ucp = libc.Bool32((*Tpcre2_code_8)(unsafe.Pointer(code)).Foverall_options&DPCRE2_UCP != Tuint32_t(0))
extra_needed = uint64(0)
// General initialization
buff_offset = uint64(0)
lengthleft = libc.AssignUint64(&buff_length, *(*Tsize_t)(unsafe.Pointer(blength)))
*(*Tsize_t)(unsafe.Pointer(blength)) = libc.CplUint64(uint64(0))
*(*Tsize_t)(unsafe.Pointer(bp)) = libc.AssignPtrUint64(bp+1*8, libc.AssignPtrUint64(bp+2*8, libc.CplUint64(uint64(0))))
// Partial matching is not valid. This must come after setting *blength to
// PCRE2_UNSET, so as not to imply an offset in the replacement.
if !(options&(DPCRE2_PARTIAL_HARD|DPCRE2_PARTIAL_SOFT) != Tuint32_t(0)) {
goto __1
}
return -34
__1:
;
// Validate length and find the end of the replacement. A NULL replacement of
// zero length is interpreted as an empty string.
if !(replacement == uintptr(0)) {
goto __2
}
if !(rlength != uint64(0)) {
goto __3
}
return -51
__3:
;
replacement = ts + 797 /* "" */
__2:
;
if !(rlength == libc.CplUint64(uint64(0))) {
goto __4
}
rlength = X_pcre2_strlen_8(tls, replacement)
__4:
;
repend = replacement + uintptr(rlength)
// Check for using a match that has already happened. Note that the subject
// pointer in the match data may be NULL after a no-match.
use_existing_match = libc.Bool32(options&DPCRE2_SUBSTITUTE_MATCHED != Tuint32_t(0))
replacement_only = libc.Bool32(options&DPCRE2_SUBSTITUTE_REPLACEMENT_ONLY != Tuint32_t(0))
// If starting from an existing match, there must be an externally provided
// match data block. We create an internal match_data block in two cases: (a) an
// external one is not supplied (and we are not starting from an existing match);
// (b) an existing match is to be used for the first substitution. In the latter
// case, we copy the existing match into the internal block. This ensures that no
// changes are made to the existing match data block.
if !(match_data == uintptr(0)) {
goto __5
}
if !(use_existing_match != 0) {
goto __7
}
return -51
__7:
;
if mcontext == uintptr(0) {
gcontext = code
} else {
gcontext = mcontext
}
match_data = libc.AssignUintptr(&internal_match_data, Xpcre2_match_data_create_from_pattern_8(tls, code, gcontext))
if !(internal_match_data == uintptr(0)) {
goto __8
}
return -48
__8:
;
goto __6
__5:
if !(use_existing_match != 0) {
goto __9
}
if mcontext == uintptr(0) {
gcontext1 = code
} else {
gcontext1 = mcontext
}
if int32((*Tpcre2_code_8)(unsafe.Pointer(code)).Ftop_bracket)+1 < int32((*Tpcre2_match_data_8)(unsafe.Pointer(match_data)).Foveccount) {
pairs = int32((*Tpcre2_code_8)(unsafe.Pointer(code)).Ftop_bracket) + 1
} else {
pairs = int32((*Tpcre2_match_data_8)(unsafe.Pointer(match_data)).Foveccount)
}
internal_match_data = Xpcre2_match_data_create_8(tls, uint32((*Tpcre2_match_data_8)(unsafe.Pointer(match_data)).Foveccount),
gcontext1)
if !(internal_match_data == uintptr(0)) {
goto __10
}
return -48
__10:
;
libc.Xmemcpy(tls, internal_match_data, match_data, uint64(uintptr(0)+80)+
uint64(2*pairs)*uint64(unsafe.Sizeof(Tsize_t(0))))
match_data = internal_match_data
__9:
;
__6:
;
// Remember ovector details
ovector = Xpcre2_get_ovector_pointer_8(tls, match_data)
ovector_count = Xpcre2_get_ovector_count_8(tls, match_data)
// Fixed things in the callout block
(*Tpcre2_substitute_callout_block_8)(unsafe.Pointer(bp + 24 /* &scb */)).Fversion = Tuint32_t(0)
(*Tpcre2_substitute_callout_block_8)(unsafe.Pointer(bp + 24 /* &scb */)).Finput = subject
(*Tpcre2_substitute_callout_block_8)(unsafe.Pointer(bp + 24 /* &scb */)).Foutput = buffer
(*Tpcre2_substitute_callout_block_8)(unsafe.Pointer(bp + 24 /* &scb */)).Fovector = ovector
// A NULL subject of zero length is treated as an empty string.
if !(subject == uintptr(0)) {
goto __11
}
if !(length != uint64(0)) {
goto __12
}
return -51
__12:
;
subject = ts + 797 /* "" */
__11:
;
// Find length of zero-terminated subject
if !(length == libc.CplUint64(uint64(0))) {
goto __13
}
if subject != 0 {
length = X_pcre2_strlen_8(tls, subject)
} else {
length = uint64(0)
}
__13:
;
// Check UTF replacement string if necessary.
if !(utf != 0 && options&DPCRE2_NO_UTF_CHECK == Tuint32_t(0)) {
goto __14
}
rc = X_pcre2_valid_utf_8(tls, replacement, rlength, match_data+64)
if !(rc != 0) {
goto __15
}
(*Tpcre2_match_data_8)(unsafe.Pointer(match_data)).Fleftchar = uint64(0)
goto EXIT
__15:
;
__14:
;
// Save the substitute options and remove them from the match options.
suboptions = options & (DPCRE2_SUBSTITUTE_EXTENDED | DPCRE2_SUBSTITUTE_GLOBAL | DPCRE2_SUBSTITUTE_LITERAL | DPCRE2_SUBSTITUTE_MATCHED | DPCRE2_SUBSTITUTE_OVERFLOW_LENGTH | DPCRE2_SUBSTITUTE_REPLACEMENT_ONLY | DPCRE2_SUBSTITUTE_UNKNOWN_UNSET | DPCRE2_SUBSTITUTE_UNSET_EMPTY)
options = options & libc.CplUint32(DPCRE2_SUBSTITUTE_EXTENDED|DPCRE2_SUBSTITUTE_GLOBAL|DPCRE2_SUBSTITUTE_LITERAL|DPCRE2_SUBSTITUTE_MATCHED|DPCRE2_SUBSTITUTE_OVERFLOW_LENGTH|DPCRE2_SUBSTITUTE_REPLACEMENT_ONLY|DPCRE2_SUBSTITUTE_UNKNOWN_UNSET|DPCRE2_SUBSTITUTE_UNSET_EMPTY)
// Error if the start match offset is greater than the length of the subject.
if !(start_offset > length) {
goto __16
}
(*Tpcre2_match_data_8)(unsafe.Pointer(match_data)).Fleftchar = uint64(0)
rc = -33
goto EXIT
__16:
;
// Copy up to the start offset, unless only the replacement is required.
if !!(replacement_only != 0) {
goto __17
}
if !(!(overflowed != 0) && lengthleft < start_offset) {
goto __18
}
if !(suboptions&DPCRE2_SUBSTITUTE_OVERFLOW_LENGTH == Tuint32_t(0)) {
goto __20
}
goto NOROOM
__20:
;
overflowed = DTRUE
extra_needed = start_offset - lengthleft
goto __19
__18:
if !(overflowed != 0) {
goto __21
}
extra_needed = extra_needed + start_offset
goto __22
__21:
libc.Xmemcpy(tls, buffer+uintptr(buff_offset), subject, start_offset*uint64(DPCRE2_CODE_UNIT_WIDTH/8))
buff_offset = buff_offset + start_offset
lengthleft = lengthleft - start_offset
__22:
;
__19:
;
__17:
;
// Loop for global substituting. If PCRE2_SUBSTITUTE_MATCHED is set, the first
// match is taken from the match_data that was passed in.
subs = 0
__23:
ptrstackptr = Tuint32_t(0)
if !(use_existing_match != 0) {
goto __26
}
rc = (*Tpcre2_match_data_8)(unsafe.Pointer(match_data)).Frc
use_existing_match = DFALSE
goto __27
__26:
rc = Xpcre2_match_8(tls, code, subject, length, start_offset, options|goptions,
match_data, mcontext)
__27:
;
if !(utf != 0) {
goto __28
}
options = options | DPCRE2_NO_UTF_CHECK
__28:
; // Only need to check once
// Any error other than no match returns the error code. No match when not
// doing the special after-empty-match global rematch, or when at the end of the
// subject, breaks the global loop. Otherwise, advance the starting point by one
// character, copying it to the output, and try again.
if !(rc < 0) {
goto __29
}
if !(rc != -1) {
goto __30
}
goto EXIT
__30:
;
if !(goptions == Tuint32_t(0) || start_offset >= length) {
goto __31
}
goto __25
__31:
;
// Advance by one code point. Then, if CRLF is a valid newline sequence and
// we have advanced into the middle of it, advance one more code point. In
// other words, do not start in the middle of CRLF, even if CR and LF on their
// own are valid newlines.
save_start = libc.PostIncUint64(&start_offset, 1)
if !(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(subject + uintptr(start_offset-uint64(1))))) == '\015' && int32((*Tpcre2_code_8)(unsafe.Pointer(code)).Fnewline_convention) != DPCRE2_NEWLINE_CR && int32((*Tpcre2_code_8)(unsafe.Pointer(code)).Fnewline_convention) != DPCRE2_NEWLINE_LF && start_offset < length && int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(subject + uintptr(start_offset)))) == '\012') {
goto __32
}
start_offset++
goto __33
__32:
if !((*Tpcre2_code_8)(unsafe.Pointer(code)).Foverall_options&DPCRE2_UTF != Tuint32_t(0)) {
goto __34
}
__35:
if !(start_offset < length && int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(subject + uintptr(start_offset))))&0xc0 == 0x80) {
goto __36
}
start_offset++
goto __35
__36:
;
__34:
;
__33:
;
// Copy what we have advanced past (unless not required), reset the special
// global options, and continue to the next match.
fraglength = start_offset - save_start
if !!(replacement_only != 0) {
goto __37
}
if !(!(overflowed != 0) && lengthleft < fraglength) {
goto __38
}
if !(suboptions&DPCRE2_SUBSTITUTE_OVERFLOW_LENGTH == Tuint32_t(0)) {
goto __40
}
goto NOROOM
__40:
;
overflowed = DTRUE
extra_needed = fraglength - lengthleft
goto __39
__38:
if !(overflowed != 0) {
goto __41
}
extra_needed = extra_needed + fraglength
goto __42
__41:
libc.Xmemcpy(tls, buffer+uintptr(buff_offset), subject+uintptr(save_start), fraglength*uint64(DPCRE2_CODE_UNIT_WIDTH/8))
buff_offset = buff_offset + fraglength
lengthleft = lengthleft - fraglength
__42:
;
__39:
;
__37:
;
goptions = Tuint32_t(0)
goto __24
__29:
;
// Handle a successful match. Matches that use \K to end before they start
// or start before the current point in the subject are not supported.
if !(*(*Tsize_t)(unsafe.Pointer(ovector + 1*8)) < *(*Tsize_t)(unsafe.Pointer(ovector)) || *(*Tsize_t)(unsafe.Pointer(ovector)) < start_offset) {
goto __43
}
rc = -60
goto EXIT
__43:
;
// Check for the same match as previous. This is legitimate after matching an
// empty string that starts after the initial match offset. We have tried again
// at the match point in case the pattern is one like /(?<=\G.)/ which can never
// match at its starting point, so running the match achieves the bumpalong. If
// we do get the same (null) match at the original match point, it isn't such a
// pattern, so we now do the empty string magic. In all other cases, a repeat
// match should never occur.
if !(*(*Tsize_t)(unsafe.Pointer(bp)) == *(*Tsize_t)(unsafe.Pointer(ovector)) && *(*Tsize_t)(unsafe.Pointer(bp + 1*8)) == *(*Tsize_t)(unsafe.Pointer(ovector + 1*8))) {
goto __44
}
if !(*(*Tsize_t)(unsafe.Pointer(ovector)) == *(*Tsize_t)(unsafe.Pointer(ovector + 1*8)) && *(*Tsize_t)(unsafe.Pointer(bp + 2*8)) != start_offset) {
goto __45
}
goptions = DPCRE2_NOTEMPTY_ATSTART | DPCRE2_ANCHORED
*(*Tsize_t)(unsafe.Pointer(bp + 2*8)) = start_offset
goto __24 // Back to the top of the loop
__45:
;
rc = -65
goto EXIT
__44:
;
// Count substitutions with a paranoid check for integer overflow; surely no
// real call to this function would ever hit this!
if !(subs == 0x7fffffff) {
goto __46
}
rc = -61
goto EXIT
__46:
;
subs++
// Copy the text leading up to the match (unless not required), and remember
// where the insert begins and how many ovector pairs are set.
if !(rc == 0) {
goto __47
}
rc = int32(ovector_count)
__47:
;
fraglength = *(*Tsize_t)(unsafe.Pointer(ovector)) - start_offset
if !!(replacement_only != 0) {
goto __48
}
if !(!(overflowed != 0) && lengthleft < fraglength) {
goto __49
}
if !(suboptions&DPCRE2_SUBSTITUTE_OVERFLOW_LENGTH == Tuint32_t(0)) {
goto __51
}
goto NOROOM
__51:
;
overflowed = DTRUE
extra_needed = fraglength - lengthleft
goto __50
__49:
if !(overflowed != 0) {
goto __52
}
extra_needed = extra_needed + fraglength
goto __53
__52:
libc.Xmemcpy(tls, buffer+uintptr(buff_offset), subject+uintptr(start_offset), fraglength*uint64(DPCRE2_CODE_UNIT_WIDTH/8))
buff_offset = buff_offset + fraglength
lengthleft = lengthleft - fraglength
__53:
;
__50:
;
__48:
;
*(*Tsize_t)(unsafe.Pointer(bp + 24 + 24)) = buff_offset
(*Tpcre2_substitute_callout_block_8)(unsafe.Pointer(bp + 24 /* &scb */)).Foveccount = Tuint32_t(rc)
// Process the replacement string. If the entire replacement is literal, just
// copy it with length check.
*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 280 /* ptr */)) = replacement
if !(suboptions&DPCRE2_SUBSTITUTE_LITERAL != Tuint32_t(0)) {
goto __54
}
if !(!(overflowed != 0) && lengthleft < rlength) {
goto __56
}
if !(suboptions&DPCRE2_SUBSTITUTE_OVERFLOW_LENGTH == Tuint32_t(0)) {
goto __58
}
goto NOROOM
__58:
;
overflowed = DTRUE
extra_needed = rlength - lengthleft
goto __57
__56:
if !(overflowed != 0) {
goto __59
}
extra_needed = extra_needed + rlength
goto __60
__59:
libc.Xmemcpy(tls, buffer+uintptr(buff_offset), *(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 280 /* ptr */)), rlength*uint64(DPCRE2_CODE_UNIT_WIDTH/8))
buff_offset = buff_offset + rlength
lengthleft = lengthleft - rlength
__60:
;
__57:
;
goto __55
__54:
__61:
// If at the end of a nested substring, pop the stack.
if !(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 280)) >= repend) {
goto __64
}
if !(ptrstackptr == Tuint32_t(0)) {
goto __65
}
goto __63
__65:
; // End of replacement string
repend = *(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 80 + uintptr(libc.PreDecUint32(&ptrstackptr, 1))*8))
*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 280 /* ptr */)) = *(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 80 + uintptr(libc.PreDecUint32(&ptrstackptr, 1))*8))
goto __62
__64:
;
// Handle the next character
if !(escaped_literal != 0) {
goto __66
}
if !(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 280))))) == '\134' && *(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 280)) < repend-uintptr(1) && int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 280)) + 1))) == '\105') {
goto __67
}
escaped_literal = DFALSE
*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 280 /* ptr */)) += uintptr(2)
goto __62
__67:
;
goto LOADLITERAL
__66:
;
// Not in literal mode.
if !(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 280))))) == '\044') {
goto __68
}
special = Tuint32_t(0)
text1_start = uintptr(0)
text1_end = uintptr(0)
text2_start = uintptr(0)
text2_end = uintptr(0)
if !(libc.PreIncUintptr(&*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 280)), 1) >= repend) {
goto __70
}
goto BAD
__70:
;
if !(int32(libc.AssignUint8(&next, *(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 280)))))) == '\044') {
goto __71
}
goto LOADLITERAL
__71:
;
group = -1
n = 0
inparens = DFALSE
star = DFALSE
if !(int32(next) == '\173') {
goto __72
}
if !(libc.PreIncUintptr(&*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 280)), 1) >= repend) {
goto __73
}
goto BAD
__73:
;
next = *(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 280 /* ptr */))))
inparens = DTRUE
__72:
;
if !(int32(next) == '\052') {
goto __74
}
if !(libc.PreIncUintptr(&*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 280)), 1) >= repend) {
goto __75
}
goto BAD
__75:
;
next = *(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 280 /* ptr */))))
star = DTRUE
__74:
;
if !(!(star != 0) && int32(next) >= '\060' && int32(next) <= '\071') {
goto __76
}
group = int32(next) - '\060'
__78:
if !(libc.PreIncUintptr(&*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 280)), 1) < repend) {
goto __79
}
next = *(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 280 /* ptr */))))
if !(int32(next) < '\060' || int32(next) > '\071') {
goto __80
}
goto __79
__80:
;
group = group*10 + int32(next) - '\060'
// A check for a number greater than the hightest captured group
// is sufficient here; no need for a separate overflow check. If unknown
// groups are to be treated as unset, just skip over any remaining
// digits and carry on.
if !(group > int32((*Tpcre2_code_8)(unsafe.Pointer(code)).Ftop_bracket)) {
goto __81
}
if !(suboptions&DPCRE2_SUBSTITUTE_UNKNOWN_UNSET != Tuint32_t(0)) {
goto __82
}
__84:
if !(libc.PreIncUintptr(&*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 280)), 1) < repend && int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 280))))) >= '\060' && int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 280))))) <= '\071') {
goto __85
}
goto __84
__85:
;
goto __79
goto __83
__82:
rc = -49
goto PTREXIT
__83:
;
__81:
;
goto __78
__79:
;
goto __77
__76:
ctypes = (*Tpcre2_code_8)(unsafe.Pointer(code)).Ftables + uintptr(Dcbits_offset+Dcbit_length)
__86:
if !(1 != 0 && int32(*(*Tuint8_t)(unsafe.Pointer(ctypes + uintptr(next))))&Dctype_word != 0) {
goto __87
}
*(*TPCRE2_UCHAR8)(unsafe.Pointer(bp + 240 + uintptr(libc.PostIncInt32(&n, 1)))) = next
if !(n > 32) {
goto __88
}
goto BAD
__88:
;
if !(libc.PreIncUintptr(&*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 280)), 1) >= repend) {
goto __89
}
goto __87
__89:
;
next = *(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 280 /* ptr */))))
goto __86
__87:
;
if !(n == 0) {
goto __90
}
goto BAD
__90:
;
*(*TPCRE2_UCHAR8)(unsafe.Pointer(bp + 240 + uintptr(n))) = TPCRE2_UCHAR8(0)
__77:
;
// In extended mode we recognize ${name:+set text:unset text} and
// ${name:-default text}.
if !(inparens != 0) {
goto __91
}
if !(suboptions&DPCRE2_SUBSTITUTE_EXTENDED != Tuint32_t(0) && !(star != 0) && *(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 280)) < repend-uintptr(2) && int32(next) == '\072') {
goto __92
}
special = Tuint32_t(*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PreIncUintptr(&*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 280)), 1))))
if !(special != Tuint32_t('\053') && special != Tuint32_t('\055')) {
goto __94
}
rc = -59
goto PTREXIT
__94:
;
text1_start = libc.PreIncUintptr(&*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 280 /* ptr */)), 1)
rc = find_text_end(tls, code, bp+280, repend, libc.Bool32(special == Tuint32_t('\055')))
if !(rc != 0) {
goto __95
}
goto PTREXIT
__95:
;
text1_end = *(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 280 /* ptr */))
if !(special == Tuint32_t('\053') && int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 280))))) == '\072') {
goto __96
}
text2_start = libc.PreIncUintptr(&*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 280 /* ptr */)), 1)
rc = find_text_end(tls, code, bp+280, repend, DTRUE)
if !(rc != 0) {
goto __97
}
goto PTREXIT
__97:
;
text2_end = *(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 280 /* ptr */))
__96:
;
goto __93
__92:
if !(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 280)) >= repend || int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 280))))) != '\175') {
goto __98
}
rc = -58
goto PTREXIT
__98:
;
__93:
;
*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 280 /* ptr */))++
__91:
;
// Have found a syntactically correct group number or name, or *name.
// Only *MARK is currently recognized.
if !(star != 0) {
goto __99
}
if !(X_pcre2_strcmp_c8_8(tls, bp+240, ts+7678) == 0) {
goto __101
}
mark = Xpcre2_get_mark_8(tls, match_data)
if !(mark != uintptr(0)) {
goto __103
}
mark_start = mark
__104:
if !(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(mark))) != 0) {
goto __105
}
mark++
goto __104
__105:
;
fraglength = Tsize_t((int64(mark) - int64(mark_start)) / 1)
if !(!(overflowed != 0) && lengthleft < fraglength) {
goto __106
}
if !(suboptions&DPCRE2_SUBSTITUTE_OVERFLOW_LENGTH == Tuint32_t(0)) {
goto __108
}
goto NOROOM
__108:
;
overflowed = DTRUE
extra_needed = fraglength - lengthleft
goto __107
__106:
if !(overflowed != 0) {
goto __109
}
extra_needed = extra_needed + fraglength
goto __110
__109:
libc.Xmemcpy(tls, buffer+uintptr(buff_offset), mark_start, fraglength*uint64(DPCRE2_CODE_UNIT_WIDTH/8))
buff_offset = buff_offset + fraglength
lengthleft = lengthleft - fraglength
__110:
;
__107:
;
__103:
;
goto __102
__101:
goto BAD
__102:
;
goto __100
__99:
// Find a number for a named group. In case there are duplicate names,
// search for the first one that is set. If the name is not found when
// PCRE2_SUBSTITUTE_UNKNOWN_EMPTY is set, set the group number to a
// non-existent group.
if !(group < 0) {
goto __111
}
rc = Xpcre2_substring_nametable_scan_8(tls, code, bp+240, bp+288, bp+296)
if !(rc == -49 && suboptions&DPCRE2_SUBSTITUTE_UNKNOWN_UNSET != Tuint32_t(0)) {
goto __112
}
group = int32((*Tpcre2_code_8)(unsafe.Pointer(code)).Ftop_bracket) + 1
goto __113
__112:
if !(rc < 0) {
goto __114
}
goto PTREXIT
__114:
;
entry = *(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 288 /* first */))
__115:
if !(entry <= *(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 296))) {
goto __117
}
ng = uint32(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(entry)))<<8 | int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(entry + 1))))
if !(ng < ovector_count) {
goto __118
}
if !(group < 0) {
goto __119
}
group = int32(ng)
__119:
; // First in ovector
if !(*(*Tsize_t)(unsafe.Pointer(ovector + uintptr(ng*Tuint32_t(2))*8)) != libc.CplUint64(uint64(0))) {
goto __120
}
group = int32(ng) // First that is set
goto __117
__120:
;
__118:
;
goto __116
__116:
entry += TPCRE2_SPTR8(rc)
goto __115
goto __117
__117:
;
// If group is still negative, it means we did not find a group
// that is in the ovector. Just set the first group.
if !(group < 0) {
goto __121
}
group = int32(uint32(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 288)))))<<8 | int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 288)) + 1)))))
__121:
;
__113:
;
__111:
;
// We now have a group that is identified by number. Find the length of
// the captured string. If a group in a non-special substitution is unset
// when PCRE2_SUBSTITUTE_UNSET_EMPTY is set, substitute nothing.
rc = Xpcre2_substring_length_bynumber_8(tls, match_data, uint32(group), bp+304)
if !(rc < 0) {
goto __122
}
if !(rc == -49 && suboptions&DPCRE2_SUBSTITUTE_UNKNOWN_UNSET != Tuint32_t(0)) {
goto __123
}
rc = -55
__123:
;
if !(rc != -55) {
goto __124
}
goto PTREXIT
__124:
; // Non-unset errors
if !(special == Tuint32_t(0)) {
goto __125
} /* Plain substitution */
if !(suboptions&DPCRE2_SUBSTITUTE_UNSET_EMPTY != Tuint32_t(0)) {
goto __126
}
goto __62
__126:
;
goto PTREXIT // Else error
__125:
;
__122:
;
// If special is '+' we have a 'set' and possibly an 'unset' text,
// both of which are reprocessed when used. If special is '-' we have a
// default text for when the group is unset; it must be reprocessed.
if !(special != Tuint32_t(0)) {
goto __127
}
if !(special == Tuint32_t('\055')) {
goto __128
}
if !(rc == 0) {
goto __129
}
goto LITERAL_SUBSTITUTE
__129:
;
text2_start = text1_start
text2_end = text1_end
__128:
;
if !(ptrstackptr >= Tuint32_t(DPTR_STACK_SIZE)) {
goto __130
}
goto BAD
__130:
;
*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 80 + uintptr(libc.PostIncUint32(&ptrstackptr, 1))*8)) = *(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 280 /* ptr */))
*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 80 + uintptr(libc.PostIncUint32(&ptrstackptr, 1))*8)) = repend
if !(rc == 0) {
goto __131
}
*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 280 /* ptr */)) = text1_start
repend = text1_end
goto __132
__131:
*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 280 /* ptr */)) = text2_start
repend = text2_end
__132:
;
goto __62
__127:
;
// Otherwise we have a literal substitution of a group's contents.
LITERAL_SUBSTITUTE:
subptr = subject + uintptr(*(*Tsize_t)(unsafe.Pointer(ovector + uintptr(group*2)*8)))
subptrend = subject + uintptr(*(*Tsize_t)(unsafe.Pointer(ovector + uintptr(group*2+1)*8)))
// Substitute a literal string, possibly forcing alphabetic case.
__133:
if !(subptr < subptrend) {
goto __134
}
*(*Tuint32_t)(unsafe.Pointer(bp + 320 /* ch */)) = Tuint32_t(*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&subptr, 1))))
if !(utf != 0 && *(*Tuint32_t)(unsafe.Pointer(bp + 320)) >= 0xc0) {
goto __135
}
if !(*(*Tuint32_t)(unsafe.Pointer(bp + 320))&0x20 == Tuint32_t(0)) {
goto __136
}
*(*Tuint32_t)(unsafe.Pointer(bp + 320 /* ch */)) = *(*Tuint32_t)(unsafe.Pointer(bp + 320))&0x1f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&subptr, 1))))&0x3f
goto __137
__136:
if !(*(*Tuint32_t)(unsafe.Pointer(bp + 320))&0x10 == Tuint32_t(0)) {
goto __138
}
*(*Tuint32_t)(unsafe.Pointer(bp + 320 /* ch */)) = *(*Tuint32_t)(unsafe.Pointer(bp + 320))&0x0f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(subptr)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(subptr + 1)))&0x3f
subptr += uintptr(2)
goto __139
__138:
if !(*(*Tuint32_t)(unsafe.Pointer(bp + 320))&0x08 == Tuint32_t(0)) {
goto __140
}
*(*Tuint32_t)(unsafe.Pointer(bp + 320 /* ch */)) = *(*Tuint32_t)(unsafe.Pointer(bp + 320))&0x07<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(subptr)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(subptr + 1)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(subptr + 2)))&0x3f
subptr += uintptr(3)
goto __141
__140:
if !(*(*Tuint32_t)(unsafe.Pointer(bp + 320))&0x04 == Tuint32_t(0)) {
goto __142
}
*(*Tuint32_t)(unsafe.Pointer(bp + 320 /* ch */)) = *(*Tuint32_t)(unsafe.Pointer(bp + 320))&0x03<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(subptr)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(subptr + 1)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(subptr + 2)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(subptr + 3)))&0x3f
subptr += uintptr(4)
goto __143
__142:
*(*Tuint32_t)(unsafe.Pointer(bp + 320 /* ch */)) = *(*Tuint32_t)(unsafe.Pointer(bp + 320))&0x01<<30 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(subptr)))&0x3f<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(subptr + 1)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(subptr + 2)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(subptr + 3)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(subptr + 4)))&0x3f
subptr += uintptr(5)
__143:
;
__141:
;
__139:
;
__137:
;
__135:
;
if !(forcecase != 0) {
goto __144
}
if !(utf != 0 || ucp != 0) {
goto __145
}
type1 = Tuint32_t((*Tucd_record)(unsafe.Pointer(uintptr(unsafe.Pointer(&X_pcre2_ucd_records_8)) + uintptr(X_pcre2_ucd_stage2_8[int32(X_pcre2_ucd_stage1_8[int32(*(*Tuint32_t)(unsafe.Pointer(bp + 320)))/DUCD_BLOCK_SIZE])*DUCD_BLOCK_SIZE+int32(*(*Tuint32_t)(unsafe.Pointer(bp + 320)))%DUCD_BLOCK_SIZE])*12)).Fchartype)
if !(X_pcre2_ucp_gentype_8[type1] == ucp_L && type1 != func() uint32 {
if forcecase > 0 {
return ucp_Lu
}
return ucp_Ll
}()) {
goto __147
}
*(*Tuint32_t)(unsafe.Pointer(bp + 320 /* ch */)) = Tuint32_t(int32(*(*Tuint32_t)(unsafe.Pointer(bp + 320))) + (*Tucd_record)(unsafe.Pointer(uintptr(unsafe.Pointer(&X_pcre2_ucd_records_8))+uintptr(X_pcre2_ucd_stage2_8[int32(X_pcre2_ucd_stage1_8[int32(*(*Tuint32_t)(unsafe.Pointer(bp + 320)))/DUCD_BLOCK_SIZE])*DUCD_BLOCK_SIZE+int32(*(*Tuint32_t)(unsafe.Pointer(bp + 320)))%DUCD_BLOCK_SIZE])*12)).Fother_case)
__147:
;
goto __146
__145:
if !(uint32(*(*Tuint8_t)(unsafe.Pointer((*Tpcre2_code_8)(unsafe.Pointer(code)).Ftables + uintptr(Dcbits_offset) + uintptr(func() int32 {
if forcecase > 0 {
return Dcbit_upper
}
return Dcbit_lower
}()) + uintptr(*(*Tuint32_t)(unsafe.Pointer(bp + 320))/Tuint32_t(8)))))&(uint32(1)<<(*(*Tuint32_t)(unsafe.Pointer(bp + 320))%Tuint32_t(8))) == uint32(0)) {
goto __148
}
*(*Tuint32_t)(unsafe.Pointer(bp + 320 /* ch */)) = Tuint32_t(*(*Tuint8_t)(unsafe.Pointer((*Tpcre2_code_8)(unsafe.Pointer(code)).Ftables + uintptr(Dfcc_offset) + uintptr(*(*Tuint32_t)(unsafe.Pointer(bp + 320 /* ch */))))))
__148:
;
__146:
;
forcecase = forcecasereset
__144:
;
if !(utf != 0) {
goto __149
}
chlen = X_pcre2_ord2utf_8(tls, *(*Tuint32_t)(unsafe.Pointer(bp + 320 /* ch */)), bp+312)
goto __150
__149:
*(*TPCRE2_UCHAR8)(unsafe.Pointer(bp + 312)) = TPCRE2_UCHAR8(*(*Tuint32_t)(unsafe.Pointer(bp + 320 /* ch */)))
chlen = uint32(1)
__150:
;
if !(!(overflowed != 0) && lengthleft < Tsize_t(chlen)) {
goto __151
}
if !(suboptions&DPCRE2_SUBSTITUTE_OVERFLOW_LENGTH == Tuint32_t(0)) {
goto __153
}
goto NOROOM
__153:
;
overflowed = DTRUE
extra_needed = Tsize_t(chlen) - lengthleft
goto __152
__151:
if !(overflowed != 0) {
goto __154
}
extra_needed = extra_needed + Tsize_t(chlen)
goto __155
__154:
libc.Xmemcpy(tls, buffer+uintptr(buff_offset), bp+312, uint64(chlen*uint32(DPCRE2_CODE_UNIT_WIDTH/8)))
buff_offset = buff_offset + Tsize_t(chlen)
lengthleft = lengthleft - Tsize_t(chlen)
__155:
;
__152:
;
goto __133
__134:
;
__100:
;
goto __69
__68:
if !(suboptions&DPCRE2_SUBSTITUTE_EXTENDED != Tuint32_t(0) && int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 280))))) == '\134') {
goto __156
}
if !(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 280)) < repend-uintptr(1)) {
goto __158
}
switch int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 280 /* ptr */)) + 1))) {
case '\114':
goto __160
case '\154':
goto __161
case '\125':
goto __162
case '\165':
goto __163
default:
goto __164
}
goto __159
__160:
forcecase = libc.AssignInt32(&forcecasereset, -1)
*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 280 /* ptr */)) += uintptr(2)
goto __62
__161:
forcecase = -1
forcecasereset = 0
*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 280 /* ptr */)) += uintptr(2)
goto __62
__162:
forcecase = libc.AssignInt32(&forcecasereset, 1)
*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 280 /* ptr */)) += uintptr(2)
goto __62
__163:
forcecase = 1
forcecasereset = 0
*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 280 /* ptr */)) += uintptr(2)
goto __62
__164:
goto __159
__159:
;
__158:
;
*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 280 /* ptr */))++ // Point after \
rc = X_pcre2_check_escape_8(tls, bp+280, repend, bp+320, bp+324,
(*Tpcre2_code_8)(unsafe.Pointer(code)).Foverall_options, (*Tpcre2_code_8)(unsafe.Pointer(code)).Fextra_options, DFALSE, uintptr(0))
if !(*(*int32)(unsafe.Pointer(bp + 324)) != 0) {
goto __165
}
goto BADESCAPE
__165:
;
switch rc {
case ESC_E:
goto __167
case ESC_Q:
goto __168
case 0:
goto __169
default:
goto __170
}
goto __166
__167:
forcecase = libc.AssignInt32(&forcecasereset, 0)
goto __62
__168:
escaped_literal = DTRUE
goto __62
__169: // Data character
goto LITERAL
__170:
goto BADESCAPE
__166:
;
goto __157
__156:
LOADLITERAL:
*(*Tuint32_t)(unsafe.Pointer(bp + 320 /* ch */)) = Tuint32_t(*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 280 /* ptr */)), 1))))
if !(utf != 0 && *(*Tuint32_t)(unsafe.Pointer(bp + 320)) >= 0xc0) {
goto __171
}
if !(*(*Tuint32_t)(unsafe.Pointer(bp + 320))&0x20 == Tuint32_t(0)) {
goto __172
}
*(*Tuint32_t)(unsafe.Pointer(bp + 320 /* ch */)) = *(*Tuint32_t)(unsafe.Pointer(bp + 320))&0x1f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 280)), 1))))&0x3f
goto __173
__172:
if !(*(*Tuint32_t)(unsafe.Pointer(bp + 320))&0x10 == Tuint32_t(0)) {
goto __174
}
*(*Tuint32_t)(unsafe.Pointer(bp + 320 /* ch */)) = *(*Tuint32_t)(unsafe.Pointer(bp + 320))&0x0f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 280)))))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 280)) + 1)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 280 /* ptr */)) += uintptr(2)
goto __175
__174:
if !(*(*Tuint32_t)(unsafe.Pointer(bp + 320))&0x08 == Tuint32_t(0)) {
goto __176
}
*(*Tuint32_t)(unsafe.Pointer(bp + 320 /* ch */)) = *(*Tuint32_t)(unsafe.Pointer(bp + 320))&0x07<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 280)))))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 280)) + 1)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 280)) + 2)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 280 /* ptr */)) += uintptr(3)
goto __177
__176:
if !(*(*Tuint32_t)(unsafe.Pointer(bp + 320))&0x04 == Tuint32_t(0)) {
goto __178
}
*(*Tuint32_t)(unsafe.Pointer(bp + 320 /* ch */)) = *(*Tuint32_t)(unsafe.Pointer(bp + 320))&0x03<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 280)))))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 280)) + 1)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 280)) + 2)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 280)) + 3)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 280 /* ptr */)) += uintptr(4)
goto __179
__178:
*(*Tuint32_t)(unsafe.Pointer(bp + 320 /* ch */)) = *(*Tuint32_t)(unsafe.Pointer(bp + 320))&0x01<<30 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 280)))))&0x3f<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 280)) + 1)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 280)) + 2)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 280)) + 3)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 280)) + 4)))&0x3f
*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 280 /* ptr */)) += uintptr(5)
__179:
;
__177:
;
__175:
;
__173:
;
__171:
;
// Get character value, increment pointer
LITERAL:
if !(forcecase != 0) {
goto __180
}
if !(utf != 0 || ucp != 0) {
goto __181
}
type2 = Tuint32_t((*Tucd_record)(unsafe.Pointer(uintptr(unsafe.Pointer(&X_pcre2_ucd_records_8)) + uintptr(X_pcre2_ucd_stage2_8[int32(X_pcre2_ucd_stage1_8[int32(*(*Tuint32_t)(unsafe.Pointer(bp + 320)))/DUCD_BLOCK_SIZE])*DUCD_BLOCK_SIZE+int32(*(*Tuint32_t)(unsafe.Pointer(bp + 320)))%DUCD_BLOCK_SIZE])*12)).Fchartype)
if !(X_pcre2_ucp_gentype_8[type2] == ucp_L && type2 != func() uint32 {
if forcecase > 0 {
return ucp_Lu
}
return ucp_Ll
}()) {
goto __183
}
*(*Tuint32_t)(unsafe.Pointer(bp + 320 /* ch */)) = Tuint32_t(int32(*(*Tuint32_t)(unsafe.Pointer(bp + 320))) + (*Tucd_record)(unsafe.Pointer(uintptr(unsafe.Pointer(&X_pcre2_ucd_records_8))+uintptr(X_pcre2_ucd_stage2_8[int32(X_pcre2_ucd_stage1_8[int32(*(*Tuint32_t)(unsafe.Pointer(bp + 320)))/DUCD_BLOCK_SIZE])*DUCD_BLOCK_SIZE+int32(*(*Tuint32_t)(unsafe.Pointer(bp + 320)))%DUCD_BLOCK_SIZE])*12)).Fother_case)
__183:
;
goto __182
__181:
if !(uint32(*(*Tuint8_t)(unsafe.Pointer((*Tpcre2_code_8)(unsafe.Pointer(code)).Ftables + uintptr(Dcbits_offset) + uintptr(func() int32 {
if forcecase > 0 {
return Dcbit_upper
}
return Dcbit_lower
}()) + uintptr(*(*Tuint32_t)(unsafe.Pointer(bp + 320))/Tuint32_t(8)))))&(uint32(1)<<(*(*Tuint32_t)(unsafe.Pointer(bp + 320))%Tuint32_t(8))) == uint32(0)) {
goto __184
}
*(*Tuint32_t)(unsafe.Pointer(bp + 320 /* ch */)) = Tuint32_t(*(*Tuint8_t)(unsafe.Pointer((*Tpcre2_code_8)(unsafe.Pointer(code)).Ftables + uintptr(Dfcc_offset) + uintptr(*(*Tuint32_t)(unsafe.Pointer(bp + 320 /* ch */))))))
__184:
;
__182:
;
forcecase = forcecasereset
__180:
;
if !(utf != 0) {
goto __185
}
chlen = X_pcre2_ord2utf_8(tls, *(*Tuint32_t)(unsafe.Pointer(bp + 320 /* ch */)), bp+312)
goto __186
__185:
*(*TPCRE2_UCHAR8)(unsafe.Pointer(bp + 312)) = TPCRE2_UCHAR8(*(*Tuint32_t)(unsafe.Pointer(bp + 320 /* ch */)))
chlen = uint32(1)
__186:
;
if !(!(overflowed != 0) && lengthleft < Tsize_t(chlen)) {
goto __187
}
if !(suboptions&DPCRE2_SUBSTITUTE_OVERFLOW_LENGTH == Tuint32_t(0)) {
goto __189
}
goto NOROOM
__189:
;
overflowed = DTRUE
extra_needed = Tsize_t(chlen) - lengthleft
goto __188
__187:
if !(overflowed != 0) {
goto __190
}
extra_needed = extra_needed + Tsize_t(chlen)
goto __191
__190:
libc.Xmemcpy(tls, buffer+uintptr(buff_offset), bp+312, uint64(chlen*uint32(DPCRE2_CODE_UNIT_WIDTH/8)))
buff_offset = buff_offset + Tsize_t(chlen)
lengthleft = lengthleft - Tsize_t(chlen)
__191:
;
__188:
;
__157:
;
__69:
; // End handling a literal code unit
goto __62
__62:
goto __61
goto __63
__63:
;
__55:
; // End of loop for scanning the replacement.
// The replacement has been copied to the output, or its size has been
// remembered. Do the callout if there is one and we have done an actual
// replacement.
if !(!(overflowed != 0) && mcontext != uintptr(0) && (*Tpcre2_match_context_8)(unsafe.Pointer(mcontext)).Fsubstitute_callout != uintptr(0)) {
goto __192
}
(*Tpcre2_substitute_callout_block_8)(unsafe.Pointer(bp + 24 /* &scb */)).Fsubscount = Tuint32_t(subs)
*(*Tsize_t)(unsafe.Pointer(bp + 24 + 24 + 1*8)) = buff_offset
rc = (*struct {
f func(*libc.TLS, uintptr, uintptr) int32
})(unsafe.Pointer(&struct{ uintptr }{(*Tpcre2_match_context_8)(unsafe.Pointer(mcontext)).Fsubstitute_callout})).f(tls, bp+24 /* &scb */, (*Tpcre2_match_context_8)(unsafe.Pointer(mcontext)).Fsubstitute_callout_data)
// A non-zero return means cancel this substitution. Instead, copy the
// matched string fragment.
if !(rc != 0) {
goto __193
}
newlength = *(*Tsize_t)(unsafe.Pointer(bp + 24 + 24 + 1*8)) - *(*Tsize_t)(unsafe.Pointer(bp + 24 + 24))
oldlength = *(*Tsize_t)(unsafe.Pointer(ovector + 1*8)) - *(*Tsize_t)(unsafe.Pointer(ovector))
buff_offset = buff_offset - newlength
lengthleft = lengthleft + newlength
if !!(replacement_only != 0) {
goto __194
}
if !(!(overflowed != 0) && lengthleft < oldlength) {
goto __195
}
if !(suboptions&DPCRE2_SUBSTITUTE_OVERFLOW_LENGTH == Tuint32_t(0)) {
goto __197
}
goto NOROOM
__197:
;
overflowed = DTRUE
extra_needed = oldlength - lengthleft
goto __196
__195:
if !(overflowed != 0) {
goto __198
}
extra_needed = extra_needed + oldlength
goto __199
__198:
libc.Xmemcpy(tls, buffer+uintptr(buff_offset), subject+uintptr(*(*Tsize_t)(unsafe.Pointer(ovector))), oldlength*uint64(DPCRE2_CODE_UNIT_WIDTH/8))
buff_offset = buff_offset + oldlength
lengthleft = lengthleft - oldlength
__199:
;
__196:
;
__194:
;
// A negative return means do not do any more.
if !(rc < 0) {
goto __200
}
suboptions = suboptions & libc.CplUint32(DPCRE2_SUBSTITUTE_GLOBAL)
__200:
;
__193:
;
__192:
;
// Save the details of this match. See above for how this data is used. If we
// matched an empty string, do the magic for global matches. Update the start
// offset to point to the rest of the subject string. If we re-used an existing
// match for the first match, switch to the internal match data block.
*(*Tsize_t)(unsafe.Pointer(bp)) = *(*Tsize_t)(unsafe.Pointer(ovector))
*(*Tsize_t)(unsafe.Pointer(bp + 1*8)) = *(*Tsize_t)(unsafe.Pointer(ovector + 1*8))
*(*Tsize_t)(unsafe.Pointer(bp + 2*8)) = start_offset
if *(*Tsize_t)(unsafe.Pointer(ovector)) != *(*Tsize_t)(unsafe.Pointer(ovector + 1*8)) || *(*Tsize_t)(unsafe.Pointer(ovector)) > start_offset {
goptions = uint32(0)
} else {
goptions = DPCRE2_ANCHORED | DPCRE2_NOTEMPTY_ATSTART
}
start_offset = *(*Tsize_t)(unsafe.Pointer(ovector + 1*8))
goto __24
__24:
if suboptions&DPCRE2_SUBSTITUTE_GLOBAL != Tuint32_t(0) {
goto __23
}
goto __25
__25:
; // Repeat "do" loop
// Copy the rest of the subject unless not required, and terminate the output
// with a binary zero.
if !!(replacement_only != 0) {
goto __201
}
fraglength = length - start_offset
if !(!(overflowed != 0) && lengthleft < fraglength) {
goto __202
}
if !(suboptions&DPCRE2_SUBSTITUTE_OVERFLOW_LENGTH == Tuint32_t(0)) {
goto __204
}
goto NOROOM
__204:
;
overflowed = DTRUE
extra_needed = fraglength - lengthleft
goto __203
__202:
if !(overflowed != 0) {
goto __205
}
extra_needed = extra_needed + fraglength
goto __206
__205:
libc.Xmemcpy(tls, buffer+uintptr(buff_offset), subject+uintptr(start_offset), fraglength*uint64(DPCRE2_CODE_UNIT_WIDTH/8))
buff_offset = buff_offset + fraglength
lengthleft = lengthleft - fraglength
__206:
;
__203:
;
__201:
;
*(*TPCRE2_UCHAR8)(unsafe.Pointer(bp + 312)) = TPCRE2_UCHAR8(0)
if !(!(overflowed != 0) && lengthleft < uint64(1)) {
goto __207
}
if !(suboptions&DPCRE2_SUBSTITUTE_OVERFLOW_LENGTH == Tuint32_t(0)) {
goto __209
}
goto NOROOM
__209:
;
overflowed = DTRUE
extra_needed = uint64(1) - lengthleft
goto __208
__207:
if !(overflowed != 0) {
goto __210
}
extra_needed = extra_needed + uint64(1)
goto __211
__210:
libc.Xmemcpy(tls, buffer+uintptr(buff_offset), bp+312, uint64(1*(DPCRE2_CODE_UNIT_WIDTH/8)))
buff_offset = buff_offset + uint64(1)
lengthleft = lengthleft - uint64(1)
__211:
;
__208:
;
// If overflowed is set it means the PCRE2_SUBSTITUTE_OVERFLOW_LENGTH is set,
// and matching has carried on after a full buffer, in order to compute the length
// needed. Otherwise, an overflow generates an immediate error return.
if !(overflowed != 0) {
goto __212
}
rc = -48
*(*Tsize_t)(unsafe.Pointer(blength)) = buff_length + extra_needed
goto __213
__212:
rc = subs
*(*Tsize_t)(unsafe.Pointer(blength)) = buff_offset - uint64(1)
__213:
;
EXIT:
if !(internal_match_data != uintptr(0)) {
goto __214
}
Xpcre2_match_data_free_8(tls, internal_match_data)
goto __215
__214:
(*Tpcre2_match_data_8)(unsafe.Pointer(match_data)).Frc = rc
__215:
;
return rc
NOROOM:
rc = -48
goto EXIT
BAD:
rc = -35
goto PTREXIT
BADESCAPE:
rc = -57
PTREXIT:
*(*Tsize_t)(unsafe.Pointer(blength)) = Tsize_t((int64(*(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 280))) - int64(replacement)) / 1)
goto EXIT
return int32(0)
}
// End of pcre2_substitute.c
// This function is needed only when memmove() is not available.
// End of pcre2_internal.h
// ************************************************
//
// Copy named captured string to given buffer *
//
// This function copies a single captured substring into a given buffer,
// identifying it by name. If the regex permits duplicate names, the first
// substring that is set is chosen.
//
// Arguments:
// match_data points to the match data
// stringname the name of the required substring
// buffer where to put the substring
// sizeptr the size of the buffer, updated to the size of the substring
//
// Returns: if successful: zero
// if not successful, a negative error code:
// (1) an error from nametable_scan()
// (2) an error from copy_bynumber()
// (3) PCRE2_ERROR_UNAVAILABLE: no group is in ovector
// (4) PCRE2_ERROR_UNSET: all named groups in ovector are unset
func Xpcre2_substring_copy_byname_8(tls *libc.TLS, match_data uintptr, stringname TPCRE2_SPTR8, buffer uintptr, sizeptr uintptr) int32 { /* pcre2_substring.c:73:1: */
bp := tls.Alloc(16)
defer tls.Free(16)
// var first TPCRE2_SPTR8 at bp, 8
// var last TPCRE2_SPTR8 at bp+8, 8
var entry TPCRE2_SPTR8
var failrc int32
var entrysize int32
if int32((*Tpcre2_match_data_8)(unsafe.Pointer(match_data)).Fmatchedby) == PCRE2_MATCHEDBY_DFA_INTERPRETER {
return -41
}
entrysize = Xpcre2_substring_nametable_scan_8(tls, (*Tpcre2_match_data_8)(unsafe.Pointer(match_data)).Fcode, stringname,
bp, bp+8)
if entrysize < 0 {
return entrysize
}
failrc = -54
for entry = *(*TPCRE2_SPTR8)(unsafe.Pointer(bp /* first */)); entry <= *(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8 /* last */)); entry += TPCRE2_SPTR8(entrysize) {
var n Tuint32_t = uint32(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(entry)))<<8 | int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(entry + 1))))
if n < Tuint32_t((*Tpcre2_match_data_8)(unsafe.Pointer(match_data)).Foveccount) {
if *(*Tsize_t)(unsafe.Pointer(match_data + 80 + uintptr(n*Tuint32_t(2))*8)) != libc.CplUint64(uint64(0)) {
return Xpcre2_substring_copy_bynumber_8(tls, match_data, n, buffer, sizeptr)
}
failrc = -55
}
}
return failrc
}
// ************************************************
//
// Copy numbered captured string to given buffer *
//
// This function copies a single captured substring into a given buffer,
// identifying it by number.
//
// Arguments:
// match_data points to the match data
// stringnumber the number of the required substring
// buffer where to put the substring
// sizeptr the size of the buffer, updated to the size of the substring
//
// Returns: if successful: 0
// if not successful, a negative error code:
// PCRE2_ERROR_NOMEMORY: buffer too small
// PCRE2_ERROR_NOSUBSTRING: no such substring
// PCRE2_ERROR_UNAVAILABLE: ovector too small
// PCRE2_ERROR_UNSET: substring is not set
func Xpcre2_substring_copy_bynumber_8(tls *libc.TLS, match_data uintptr, stringnumber Tuint32_t, buffer uintptr, sizeptr uintptr) int32 { /* pcre2_substring.c:121:1: */
bp := tls.Alloc(8)
defer tls.Free(8)
var rc int32
// var size Tsize_t at bp, 8
rc = Xpcre2_substring_length_bynumber_8(tls, match_data, stringnumber, bp)
if rc < 0 {
return rc
}
if *(*Tsize_t)(unsafe.Pointer(bp))+uint64(1) > *(*Tsize_t)(unsafe.Pointer(sizeptr)) {
return -48
}
libc.Xmemcpy(tls, buffer, (*Tpcre2_match_data_8)(unsafe.Pointer(match_data)).Fsubject+uintptr(*(*Tsize_t)(unsafe.Pointer(match_data + 80 + uintptr(stringnumber*Tuint32_t(2))*8))),
*(*Tsize_t)(unsafe.Pointer(bp))*uint64(DPCRE2_CODE_UNIT_WIDTH/8))
*(*TPCRE2_UCHAR8)(unsafe.Pointer(buffer + uintptr(*(*Tsize_t)(unsafe.Pointer(bp /* size */))))) = TPCRE2_UCHAR8(0)
*(*Tsize_t)(unsafe.Pointer(sizeptr)) = *(*Tsize_t)(unsafe.Pointer(bp /* size */))
return 0
}
// ************************************************
//
// Extract named captured string *
//
// This function copies a single captured substring, identified by name, into
// new memory. If the regex permits duplicate names, the first substring that is
// set is chosen.
//
// Arguments:
// match_data pointer to match_data
// stringname the name of the required substring
// stringptr where to put the pointer to the new memory
// sizeptr where to put the length of the substring
//
// Returns: if successful: zero
// if not successful, a negative value:
// (1) an error from nametable_scan()
// (2) an error from get_bynumber()
// (3) PCRE2_ERROR_UNAVAILABLE: no group is in ovector
// (4) PCRE2_ERROR_UNSET: all named groups in ovector are unset
func Xpcre2_substring_get_byname_8(tls *libc.TLS, match_data uintptr, stringname TPCRE2_SPTR8, stringptr uintptr, sizeptr uintptr) int32 { /* pcre2_substring.c:161:1: */
bp := tls.Alloc(16)
defer tls.Free(16)
// var first TPCRE2_SPTR8 at bp, 8
// var last TPCRE2_SPTR8 at bp+8, 8
var entry TPCRE2_SPTR8
var failrc int32
var entrysize int32
if int32((*Tpcre2_match_data_8)(unsafe.Pointer(match_data)).Fmatchedby) == PCRE2_MATCHEDBY_DFA_INTERPRETER {
return -41
}
entrysize = Xpcre2_substring_nametable_scan_8(tls, (*Tpcre2_match_data_8)(unsafe.Pointer(match_data)).Fcode, stringname,
bp, bp+8)
if entrysize < 0 {
return entrysize
}
failrc = -54
for entry = *(*TPCRE2_SPTR8)(unsafe.Pointer(bp /* first */)); entry <= *(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8 /* last */)); entry += TPCRE2_SPTR8(entrysize) {
var n Tuint32_t = uint32(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(entry)))<<8 | int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(entry + 1))))
if n < Tuint32_t((*Tpcre2_match_data_8)(unsafe.Pointer(match_data)).Foveccount) {
if *(*Tsize_t)(unsafe.Pointer(match_data + 80 + uintptr(n*Tuint32_t(2))*8)) != libc.CplUint64(uint64(0)) {
return Xpcre2_substring_get_bynumber_8(tls, match_data, n, stringptr, sizeptr)
}
failrc = -55
}
}
return failrc
}
// ************************************************
//
// Extract captured string to new memory *
//
// This function copies a single captured substring into a piece of new
// memory.
//
// Arguments:
// match_data points to match data
// stringnumber the number of the required substring
// stringptr where to put a pointer to the new memory
// sizeptr where to put the size of the substring
//
// Returns: if successful: 0
// if not successful, a negative error code:
// PCRE2_ERROR_NOMEMORY: failed to get memory
// PCRE2_ERROR_NOSUBSTRING: no such substring
// PCRE2_ERROR_UNAVAILABLE: ovector too small
// PCRE2_ERROR_UNSET: substring is not set
func Xpcre2_substring_get_bynumber_8(tls *libc.TLS, match_data uintptr, stringnumber Tuint32_t, stringptr uintptr, sizeptr uintptr) int32 { /* pcre2_substring.c:209:1: */
bp := tls.Alloc(8)
defer tls.Free(8)
var rc int32
// var size Tsize_t at bp, 8
var yield uintptr
rc = Xpcre2_substring_length_bynumber_8(tls, match_data, stringnumber, bp)
if rc < 0 {
return rc
}
yield = X_pcre2_memctl_malloc_8(tls, uint64(unsafe.Sizeof(Tpcre2_memctl{}))+(*(*Tsize_t)(unsafe.Pointer(bp))+uint64(1))*uint64(DPCRE2_CODE_UNIT_WIDTH), match_data)
if yield == uintptr(0) {
return -48
}
yield = yield + uintptr(uint64(unsafe.Sizeof(Tpcre2_memctl{})))
libc.Xmemcpy(tls, yield, (*Tpcre2_match_data_8)(unsafe.Pointer(match_data)).Fsubject+uintptr(*(*Tsize_t)(unsafe.Pointer(match_data + 80 + uintptr(stringnumber*Tuint32_t(2))*8))),
*(*Tsize_t)(unsafe.Pointer(bp))*uint64(DPCRE2_CODE_UNIT_WIDTH/8))
*(*TPCRE2_UCHAR8)(unsafe.Pointer(yield + uintptr(*(*Tsize_t)(unsafe.Pointer(bp /* size */))))) = TPCRE2_UCHAR8(0)
*(*uintptr)(unsafe.Pointer(stringptr)) = yield
*(*Tsize_t)(unsafe.Pointer(sizeptr)) = *(*Tsize_t)(unsafe.Pointer(bp /* size */))
return 0
}
// ************************************************
//
// Free memory obtained by get_substring *
//
//
// Argument: the result of a previous pcre2_substring_get_byxxx()
// Returns: nothing
func Xpcre2_substring_free_8(tls *libc.TLS, string uintptr) { /* pcre2_substring.c:241:1: */
if string != uintptr(0) {
var memctl uintptr = string - uintptr(uint64(unsafe.Sizeof(Tpcre2_memctl{})))
(*struct {
f func(*libc.TLS, uintptr, uintptr)
})(unsafe.Pointer(&struct{ uintptr }{(*Tpcre2_memctl)(unsafe.Pointer(memctl)).Ffree})).f(tls, memctl, (*Tpcre2_memctl)(unsafe.Pointer(memctl)).Fmemory_data)
}
}
// ************************************************
//
// Get length of a named substring *
//
// This function returns the length of a named captured substring. If the regex
// permits duplicate names, the first substring that is set is chosen.
//
// Arguments:
// match_data pointer to match data
// stringname the name of the required substring
// sizeptr where to put the length
//
// Returns: 0 if successful, else a negative error number
func Xpcre2_substring_length_byname_8(tls *libc.TLS, match_data uintptr, stringname TPCRE2_SPTR8, sizeptr uintptr) int32 { /* pcre2_substring.c:268:1: */
bp := tls.Alloc(16)
defer tls.Free(16)
// var first TPCRE2_SPTR8 at bp, 8
// var last TPCRE2_SPTR8 at bp+8, 8
var entry TPCRE2_SPTR8
var failrc int32
var entrysize int32
if int32((*Tpcre2_match_data_8)(unsafe.Pointer(match_data)).Fmatchedby) == PCRE2_MATCHEDBY_DFA_INTERPRETER {
return -41
}
entrysize = Xpcre2_substring_nametable_scan_8(tls, (*Tpcre2_match_data_8)(unsafe.Pointer(match_data)).Fcode, stringname,
bp, bp+8)
if entrysize < 0 {
return entrysize
}
failrc = -54
for entry = *(*TPCRE2_SPTR8)(unsafe.Pointer(bp /* first */)); entry <= *(*TPCRE2_SPTR8)(unsafe.Pointer(bp + 8 /* last */)); entry += TPCRE2_SPTR8(entrysize) {
var n Tuint32_t = uint32(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(entry)))<<8 | int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(entry + 1))))
if n < Tuint32_t((*Tpcre2_match_data_8)(unsafe.Pointer(match_data)).Foveccount) {
if *(*Tsize_t)(unsafe.Pointer(match_data + 80 + uintptr(n*Tuint32_t(2))*8)) != libc.CplUint64(uint64(0)) {
return Xpcre2_substring_length_bynumber_8(tls, match_data, n, sizeptr)
}
failrc = -55
}
}
return failrc
}
// ************************************************
//
// Get length of a numbered substring *
//
// This function returns the length of a captured substring. If the start is
// beyond the end (which can happen when \K is used in an assertion), it sets the
// length to zero.
//
// Arguments:
// match_data pointer to match data
// stringnumber the number of the required substring
// sizeptr where to put the length, if not NULL
//
// Returns: if successful: 0
// if not successful, a negative error code:
// PCRE2_ERROR_NOSUBSTRING: no such substring
// PCRE2_ERROR_UNAVAILABLE: ovector is too small
// PCRE2_ERROR_UNSET: substring is not set
func Xpcre2_substring_length_bynumber_8(tls *libc.TLS, match_data uintptr, stringnumber Tuint32_t, sizeptr uintptr) int32 { /* pcre2_substring.c:315:1: */
var left Tsize_t
var right Tsize_t
var count int32 = (*Tpcre2_match_data_8)(unsafe.Pointer(match_data)).Frc
if count == -2 {
if stringnumber > Tuint32_t(0) {
return -2
}
count = 0
} else if count < 0 {
return count
} // Match failed
if int32((*Tpcre2_match_data_8)(unsafe.Pointer(match_data)).Fmatchedby) != PCRE2_MATCHEDBY_DFA_INTERPRETER {
if stringnumber > Tuint32_t((*Tpcre2_real_code_8)(unsafe.Pointer((*Tpcre2_match_data_8)(unsafe.Pointer(match_data)).Fcode)).Ftop_bracket) {
return -49
}
if stringnumber >= Tuint32_t((*Tpcre2_match_data_8)(unsafe.Pointer(match_data)).Foveccount) {
return -54
}
if *(*Tsize_t)(unsafe.Pointer(match_data + 80 + uintptr(stringnumber*Tuint32_t(2))*8)) == libc.CplUint64(uint64(0)) {
return -55
}
} else {
if stringnumber >= Tuint32_t((*Tpcre2_match_data_8)(unsafe.Pointer(match_data)).Foveccount) {
return -54
}
if count != 0 && stringnumber >= Tuint32_t(count) {
return -55
}
}
left = *(*Tsize_t)(unsafe.Pointer(match_data + 80 + uintptr(stringnumber*Tuint32_t(2))*8))
right = *(*Tsize_t)(unsafe.Pointer(match_data + 80 + uintptr(stringnumber*Tuint32_t(2)+Tuint32_t(1))*8))
if sizeptr != uintptr(0) {
*(*Tsize_t)(unsafe.Pointer(sizeptr)) = func() uint64 {
if left > right {
return uint64(0)
}
return right - left
}()
}
return 0
}
// ************************************************
//
// Extract all captured strings to new memory *
//
// This function gets one chunk of memory and builds a list of pointers and all
// the captured substrings in it. A NULL pointer is put on the end of the list.
// The substrings are zero-terminated, but also, if the final argument is
// non-NULL, a list of lengths is also returned. This allows binary data to be
// handled.
//
// Arguments:
// match_data points to the match data
// listptr set to point to the list of pointers
// lengthsptr set to point to the list of lengths (may be NULL)
//
// Returns: if successful: 0
// if not successful, a negative error code:
// PCRE2_ERROR_NOMEMORY: failed to get memory,
// or a match failure code
func Xpcre2_substring_list_get_8(tls *libc.TLS, match_data uintptr, listptr uintptr, lengthsptr uintptr) int32 { /* pcre2_substring.c:372:1: */
var i int32
var count int32
var count2 int32
var size Tsize_t
var lensp uintptr
var memp uintptr
var listp uintptr
var sp uintptr
var ovector uintptr
if libc.AssignInt32(&count, (*Tpcre2_match_data_8)(unsafe.Pointer(match_data)).Frc) < 0 {
return count
} // Match failed
if count == 0 {
count = int32((*Tpcre2_match_data_8)(unsafe.Pointer(match_data)).Foveccount)
} // Ovector too small
count2 = 2 * count
ovector = match_data + 80 /* &.ovector */
size = uint64(unsafe.Sizeof(Tpcre2_memctl{})) + uint64(unsafe.Sizeof(uintptr(0))) // For final NULL
if lengthsptr != uintptr(0) {
size = size + uint64(unsafe.Sizeof(Tsize_t(0)))*uint64(count)
} // For lengths
for i = 0; i < count2; i = i + 2 {
size = size + (uint64(unsafe.Sizeof(uintptr(0))) + uint64(1*(DPCRE2_CODE_UNIT_WIDTH/8)))
if *(*Tsize_t)(unsafe.Pointer(ovector + uintptr(i+1)*8)) > *(*Tsize_t)(unsafe.Pointer(ovector + uintptr(i)*8)) {
size = size + (*(*Tsize_t)(unsafe.Pointer(ovector + uintptr(i+1)*8))-*(*Tsize_t)(unsafe.Pointer(ovector + uintptr(i)*8)))*uint64(DPCRE2_CODE_UNIT_WIDTH/8)
}
}
memp = X_pcre2_memctl_malloc_8(tls, size, match_data)
if memp == uintptr(0) {
return -48
}
*(*uintptr)(unsafe.Pointer(listptr)) = libc.AssignUintptr(&listp, memp+uintptr(uint64(unsafe.Sizeof(Tpcre2_memctl{}))))
lensp = listp + uintptr(uint64(unsafe.Sizeof(uintptr(0)))*uint64(count+1))
if lengthsptr == uintptr(0) {
sp = lensp
lensp = uintptr(0)
} else {
*(*uintptr)(unsafe.Pointer(lengthsptr)) = lensp
sp = lensp + uintptr(uint64(unsafe.Sizeof(Tsize_t(0)))*uint64(count))
}
for i = 0; i < count2; i = i + 2 {
if *(*Tsize_t)(unsafe.Pointer(ovector + uintptr(i+1)*8)) > *(*Tsize_t)(unsafe.Pointer(ovector + uintptr(i)*8)) {
size = *(*Tsize_t)(unsafe.Pointer(ovector + uintptr(i+1)*8)) - *(*Tsize_t)(unsafe.Pointer(ovector + uintptr(i)*8))
} else {
size = uint64(0)
}
// Size == 0 includes the case when the capture is unset. Avoid adding
// PCRE2_UNSET to match_data->subject because it overflows, even though with
// zero size calling memcpy() is harmless.
if size != uint64(0) {
libc.Xmemcpy(tls, sp, (*Tpcre2_match_data_8)(unsafe.Pointer(match_data)).Fsubject+uintptr(*(*Tsize_t)(unsafe.Pointer(ovector + uintptr(i)*8))), size*uint64(DPCRE2_CODE_UNIT_WIDTH/8))
}
*(*uintptr)(unsafe.Pointer(libc.PostIncUintptr(&listp, 8))) = sp
if lensp != uintptr(0) {
*(*Tsize_t)(unsafe.Pointer(libc.PostIncUintptr(&lensp, 8))) = size
}
sp += uintptr(size)
*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&sp, 1))) = TPCRE2_UCHAR8(0)
}
*(*uintptr)(unsafe.Pointer(listp)) = uintptr(0)
return 0
}
// ************************************************
//
// Free memory obtained by substring_list_get *
//
//
// Argument: the result of a previous pcre2_substring_list_get()
// Returns: nothing
func Xpcre2_substring_list_free_8(tls *libc.TLS, list uintptr) { /* pcre2_substring.c:445:1: */
if list != uintptr(0) {
var memctl uintptr = list - uintptr(uint64(unsafe.Sizeof(Tpcre2_memctl{})))
(*struct {
f func(*libc.TLS, uintptr, uintptr)
})(unsafe.Pointer(&struct{ uintptr }{(*Tpcre2_memctl)(unsafe.Pointer(memctl)).Ffree})).f(tls, memctl, (*Tpcre2_memctl)(unsafe.Pointer(memctl)).Fmemory_data)
}
}
// ************************************************
//
// Find (multiple) entries for named string *
//
// This function scans the nametable for a given name, using binary chop. It
// returns either two pointers to the entries in the table, or, if no pointers are
// given, the number of a unique group with the given name. If duplicate names are
// permitted, and the name is not unique, an error is generated.
//
// Arguments:
// code the compiled regex
// stringname the name whose entries required
// firstptr where to put the pointer to the first entry
// lastptr where to put the pointer to the last entry
//
// Returns: PCRE2_ERROR_NOSUBSTRING if the name is not found
// otherwise, if firstptr and lastptr are NULL:
// a group number for a unique substring
// else PCRE2_ERROR_NOUNIQUESUBSTRING
// otherwise:
// the length of each entry, having set firstptr and lastptr
func Xpcre2_substring_nametable_scan_8(tls *libc.TLS, code uintptr, stringname TPCRE2_SPTR8, firstptr uintptr, lastptr uintptr) int32 { /* pcre2_substring.c:480:1: */
var bot Tuint16_t = Tuint16_t(0)
var top Tuint16_t = (*Tpcre2_code_8)(unsafe.Pointer(code)).Fname_count
var entrysize Tuint16_t = (*Tpcre2_code_8)(unsafe.Pointer(code)).Fname_entry_size
var nametable TPCRE2_SPTR8 = code + uintptr(uint64(unsafe.Sizeof(Tpcre2_real_code_8{})))
for int32(top) > int32(bot) {
var mid Tuint16_t = Tuint16_t((int32(top) + int32(bot)) / 2)
var entry TPCRE2_SPTR8 = nametable + uintptr(int32(entrysize)*int32(mid))
var c int32 = X_pcre2_strcmp_8(tls, stringname, entry+uintptr(DIMM2_SIZE))
if c == 0 {
var first TPCRE2_SPTR8
var last TPCRE2_SPTR8
var lastentry TPCRE2_SPTR8
lastentry = nametable + uintptr(int32(entrysize)*(int32((*Tpcre2_code_8)(unsafe.Pointer(code)).Fname_count)-1))
first = libc.AssignUintptr(&last, entry)
for first > nametable {
if X_pcre2_strcmp_8(tls, stringname, first-uintptr(entrysize)+uintptr(DIMM2_SIZE)) != 0 {
break
}
first -= TPCRE2_SPTR8(entrysize)
}
for last < lastentry {
if X_pcre2_strcmp_8(tls, stringname, last+uintptr(entrysize)+uintptr(DIMM2_SIZE)) != 0 {
break
}
last += TPCRE2_SPTR8(entrysize)
}
if firstptr == uintptr(0) {
if first == last {
return int32(uint32(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(entry)))<<8 | int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(entry + 1)))))
}
return -50
}
*(*TPCRE2_SPTR8)(unsafe.Pointer(firstptr)) = first
*(*TPCRE2_SPTR8)(unsafe.Pointer(lastptr)) = last
return int32(entrysize)
}
if c > 0 {
bot = Tuint16_t(int32(mid) + 1)
} else {
top = mid
}
}
return -49
}
// ************************************************
//
// Find number for named string *
//
// This function is a convenience wrapper for pcre2_substring_nametable_scan()
// when it is known that names are unique. If there are duplicate names, it is not
// defined which number is returned.
//
// Arguments:
// code the compiled regex
// stringname the name whose number is required
//
// Returns: the number of the named parenthesis, or a negative number
// PCRE2_ERROR_NOSUBSTRING if not found
// PCRE2_ERROR_NOUNIQUESUBSTRING if not unique
func Xpcre2_substring_number_from_name_8(tls *libc.TLS, code uintptr, stringname TPCRE2_SPTR8) int32 { /* pcre2_substring.c:541:1: */
return Xpcre2_substring_nametable_scan_8(tls, code, stringname, uintptr(0), uintptr(0))
}
// End of pcre2_substring.c
// This function is needed only when memmove() is not available.
// End of pcre2_internal.h
// Table of sizes for the fixed-length opcodes. It's defined in a macro so that
// the definition is next to the definition of the opcodes in pcre2_internal.h.
// This is mode-dependent, so it is skipped when this file is included by
// pcre2test.
var X_pcre2_OP_lengths_8 = [168]Tuint8_t{Tuint8_t(1) /* End */, Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1) /* \A, \G, \K, \B, \b */, Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1) /* \D, \d, \S, \s, \W, \w */, Tuint8_t(1), Tuint8_t(1), Tuint8_t(1) /* Any, AllAny, Anybyte */, Tuint8_t(3), Tuint8_t(3) /* \P, \p */, Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1) /* \R, \H, \h, \V, \v */, Tuint8_t(1) /* \X */, Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1) /* \Z, \z, $, $M ^, ^M */, Tuint8_t(2) /* Char - the minimum length */, Tuint8_t(2) /* Chari - the minimum length */, Tuint8_t(2) /* not */, Tuint8_t(2) /* noti */ /* Positive single-char repeats ** These are */, Tuint8_t(2), Tuint8_t(2), Tuint8_t(2), Tuint8_t(2), Tuint8_t(2), Tuint8_t(2) /* *, *?, +, +?, ?, ?? ** minima in */, Tuint8_t(2 + DIMM2_SIZE), Tuint8_t(2 + DIMM2_SIZE), Tuint8_t(2 + DIMM2_SIZE), Tuint8_t(2), Tuint8_t(2), Tuint8_t(2), Tuint8_t(2 + DIMM2_SIZE), Tuint8_t(2), Tuint8_t(2), Tuint8_t(2), Tuint8_t(2), Tuint8_t(2), Tuint8_t(2) /* *I, *?I, +I, +?I, ?I, ??I ** UTF-8 */, Tuint8_t(2 + DIMM2_SIZE), Tuint8_t(2 + DIMM2_SIZE), Tuint8_t(2 + DIMM2_SIZE), Tuint8_t(2), Tuint8_t(2), Tuint8_t(2), Tuint8_t(2 + DIMM2_SIZE), Tuint8_t(2), Tuint8_t(2), Tuint8_t(2), Tuint8_t(2), Tuint8_t(2), Tuint8_t(2) /* NOT *, *?, +, +?, ?, ?? */, Tuint8_t(2 + DIMM2_SIZE), Tuint8_t(2 + DIMM2_SIZE), Tuint8_t(2 + DIMM2_SIZE), Tuint8_t(2), Tuint8_t(2), Tuint8_t(2), Tuint8_t(2 + DIMM2_SIZE), Tuint8_t(2), Tuint8_t(2), Tuint8_t(2), Tuint8_t(2), Tuint8_t(2), Tuint8_t(2) /* NOT *I, *?I, +I, +?I, ?I, ??I */, Tuint8_t(2 + DIMM2_SIZE), Tuint8_t(2 + DIMM2_SIZE), Tuint8_t(2 + DIMM2_SIZE), Tuint8_t(2), Tuint8_t(2), Tuint8_t(2), Tuint8_t(2 + DIMM2_SIZE), Tuint8_t(2), Tuint8_t(2), Tuint8_t(2), Tuint8_t(2), Tuint8_t(2), Tuint8_t(2) /* Type *, *?, +, +?, ?, ?? */, Tuint8_t(2 + DIMM2_SIZE), Tuint8_t(2 + DIMM2_SIZE), Tuint8_t(2 + DIMM2_SIZE), Tuint8_t(2), Tuint8_t(2), Tuint8_t(2), Tuint8_t(2 + DIMM2_SIZE), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1) /* *, *?, +, +?, ?, ?? */, Tuint8_t(1 + 2*DIMM2_SIZE), Tuint8_t(1 + 2*DIMM2_SIZE), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1 + 2*DIMM2_SIZE), uint8(uint64(1) + uint64(32)/uint64(unsafe.Sizeof(TPCRE2_UCHAR8(0)))), uint8(uint64(1) + uint64(32)/uint64(unsafe.Sizeof(TPCRE2_UCHAR8(0)))), Tuint8_t(0) /* XCLASS - variable length */, Tuint8_t(1 + DIMM2_SIZE), Tuint8_t(1 + DIMM2_SIZE), Tuint8_t(1 + 2*DIMM2_SIZE), Tuint8_t(1 + 2*DIMM2_SIZE), Tuint8_t(1 + DLINK_SIZE), Tuint8_t(1 + 2*DLINK_SIZE + 1), Tuint8_t(0) /* CALLOUT_STR - variable length */, Tuint8_t(1 + DLINK_SIZE), Tuint8_t(1 + DLINK_SIZE), Tuint8_t(1 + DLINK_SIZE), Tuint8_t(1 + DLINK_SIZE), Tuint8_t(1 + DLINK_SIZE), Tuint8_t(1 + DLINK_SIZE), Tuint8_t(1 + DLINK_SIZE), Tuint8_t(1 + DLINK_SIZE), Tuint8_t(1 + DLINK_SIZE), Tuint8_t(1 + DLINK_SIZE), Tuint8_t(1 + DLINK_SIZE), Tuint8_t(1 + DLINK_SIZE), Tuint8_t(1 + DLINK_SIZE), Tuint8_t(1 + DLINK_SIZE), Tuint8_t(1 + DLINK_SIZE), Tuint8_t(1 + DLINK_SIZE), Tuint8_t(1 + DLINK_SIZE + DIMM2_SIZE), Tuint8_t(1 + DLINK_SIZE + DIMM2_SIZE), Tuint8_t(1 + DLINK_SIZE), Tuint8_t(1 + DLINK_SIZE), Tuint8_t(1 + DLINK_SIZE), Tuint8_t(1 + DLINK_SIZE + DIMM2_SIZE), Tuint8_t(1 + DLINK_SIZE + DIMM2_SIZE), Tuint8_t(1 + DLINK_SIZE), Tuint8_t(1 + DIMM2_SIZE), Tuint8_t(1 + 2*DIMM2_SIZE), Tuint8_t(1 + DIMM2_SIZE), Tuint8_t(1 + 2*DIMM2_SIZE), Tuint8_t(1), Tuint8_t(1) /* FALSE, TRUE */, Tuint8_t(1), Tuint8_t(1), Tuint8_t(1) /* BRAZERO, BRAMINZERO, BRAPOSZERO */, Tuint8_t(3), Tuint8_t(1), Tuint8_t(3) /* MARK, PRUNE, PRUNE_ARG */, Tuint8_t(1), Tuint8_t(3) /* SKIP, SKIP_ARG */, Tuint8_t(1), Tuint8_t(3) /* THEN, THEN_ARG */, Tuint8_t(1), Tuint8_t(3) /* COMMIT, COMMIT_ARG */, Tuint8_t(1), Tuint8_t(1), Tuint8_t(1) /* FAIL, ACCEPT, ASSERT_ACCEPT */, Tuint8_t(1 + DIMM2_SIZE), Tuint8_t(1) /* CLOSE, SKIPZERO */, Tuint8_t(1)} /* pcre2_tables.c:60:15 */
// Tables of horizontal and vertical whitespace characters, suitable for
// adding to classes.
var X_pcre2_hspace_list_8 = [20]Tuint32_t{Tuint32_t('\011'), Tuint32_t('\040'), libc.Uint32FromUint8(libc.Uint8FromInt32(160)), Tuint32_t(0x1680), Tuint32_t(0x180e), Tuint32_t(0x2000), Tuint32_t(0x2001), Tuint32_t(0x2002), Tuint32_t(0x2003), Tuint32_t(0x2004), Tuint32_t(0x2005), Tuint32_t(0x2006), Tuint32_t(0x2007), Tuint32_t(0x2008), Tuint32_t(0x2009), Tuint32_t(0x200A), Tuint32_t(0x202f), Tuint32_t(0x205f), Tuint32_t(0x3000), DNOTACHAR} /* pcre2_tables.c:66:16 */
var X_pcre2_vspace_list_8 = [8]Tuint32_t{Tuint32_t('\012'), Tuint32_t('\013'), Tuint32_t('\014'), Tuint32_t('\015'), libc.Uint32FromUint8(libc.Uint8FromInt32(133)), Tuint32_t(0x2028), Tuint32_t(0x2029), DNOTACHAR} /* pcre2_tables.c:67:16 */
// These tables are the pairs of delimiters that are valid for callout string
// arguments. For each starting delimiter there must be a matching ending
// delimiter, which in fact is different only for bracket-like delimiters.
var X_pcre2_callout_start_delims_8 = [9]Tuint32_t{
Tuint32_t('\140'), Tuint32_t('\047'), Tuint32_t('\042'),
Tuint32_t('\136'), Tuint32_t('\045'), Tuint32_t('\043'),
Tuint32_t('\044'), Tuint32_t('\173'), Tuint32_t(0)} /* pcre2_tables.c:73:16 */
var X_pcre2_callout_end_delims_8 = [9]Tuint32_t{
Tuint32_t('\140'), Tuint32_t('\047'), Tuint32_t('\042'),
Tuint32_t('\136'), Tuint32_t('\045'), Tuint32_t('\043'),
Tuint32_t('\044'), Tuint32_t('\175'), Tuint32_t(0)} /* pcre2_tables.c:78:16 */
// ************************************************
//
// Tables for UTF-8 support *
//
// These tables are required by pcre2test in 16- or 32-bit mode, as well
// as for the library in 8-bit mode, because pcre2test uses UTF-8 internally for
// handling wide characters.
// These are the breakpoints for different numbers of bytes in a UTF-8
// character.
var X_pcre2_utf8_table1 = [6]int32{0x7f, 0x7ff, 0xffff, 0x1fffff, 0x3ffffff, 0x7fffffff} /* pcre2_tables.c:100:11 */
var X_pcre2_utf8_table1_size int32 = int32(uint64(unsafe.Sizeof(X_pcre2_utf8_table1)) / uint64(unsafe.Sizeof(int32(0)))) /* pcre2_tables.c:103:11 */
// These are the indicator bits and the mask for the data bits to set in the
// first byte of a character, indexed by the number of additional bytes.
var X_pcre2_utf8_table2 = [6]int32{0, 0xc0, 0xe0, 0xf0, 0xf8, 0xfc} /* pcre2_tables.c:108:11 */
var X_pcre2_utf8_table3 = [6]int32{0xff, 0x1f, 0x0f, 0x07, 0x03, 0x01} /* pcre2_tables.c:109:11 */
// Table of the number of extra bytes, indexed by the first byte masked with
// 0x3f. The highest number for a valid UTF-8 first byte is in fact 0x3d.
var X_pcre2_utf8_table4 = [64]Tuint8_t{
Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1),
Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1), Tuint8_t(1),
Tuint8_t(2), Tuint8_t(2), Tuint8_t(2), Tuint8_t(2), Tuint8_t(2), Tuint8_t(2), Tuint8_t(2), Tuint8_t(2), Tuint8_t(2), Tuint8_t(2), Tuint8_t(2), Tuint8_t(2), Tuint8_t(2), Tuint8_t(2), Tuint8_t(2), Tuint8_t(2),
Tuint8_t(3), Tuint8_t(3), Tuint8_t(3), Tuint8_t(3), Tuint8_t(3), Tuint8_t(3), Tuint8_t(3), Tuint8_t(3), Tuint8_t(4), Tuint8_t(4), Tuint8_t(4), Tuint8_t(4), Tuint8_t(5), Tuint8_t(5), Tuint8_t(5), Tuint8_t(5)} /* pcre2_tables.c:114:15 */
// Tables concerned with Unicode properties are relevant only when Unicode
// support is enabled. See also the pcre2_ucptables.c file, which is generated by
// a Python script from Unicode data files.
// Table to translate from particular type value to the general value.
var X_pcre2_ucp_gentype_8 = [30]Tuint32_t{
ucp_C, ucp_C, ucp_C, ucp_C, ucp_C, // Cc, Cf, Cn, Co, Cs
ucp_L, ucp_L, ucp_L, ucp_L, ucp_L, // Ll, Lu, Lm, Lo, Lt
ucp_M, ucp_M, ucp_M, // Mc, Me, Mn
ucp_N, ucp_N, ucp_N, // Nd, Nl, No
ucp_P, ucp_P, ucp_P, ucp_P, ucp_P, // Pc, Pd, Pe, Pf, Pi
ucp_P, ucp_P, // Ps, Po
ucp_S, ucp_S, ucp_S, ucp_S, // Sc, Sk, Sm, So
ucp_Z, ucp_Z, ucp_Z, // Zl, Zp, Zs
} /* pcre2_tables.c:130:16 */
// This table encodes the rules for finding the end of an extended grapheme
// cluster. Every code point has a grapheme break property which is one of the
// ucp_gbXX values defined in pcre2_ucp.h. These changed between Unicode versions
// 10 and 11. The 2-dimensional table is indexed by the properties of two adjacent
// code points. The left property selects a word from the table, and the right
// property selects a bit from that word like this:
//
// PRIV(ucp_gbtable)[left-property] & (1u << right-property)
//
// The value is non-zero if a grapheme break is NOT permitted between the relevant
// two code points. The breaking rules are as follows:
//
// 1. Break at the start and end of text (pretty obviously).
//
// 2. Do not break between a CR and LF; otherwise, break before and after
// controls.
//
// 3. Do not break Hangul syllable sequences, the rules for which are:
//
// L may be followed by L, V, LV or LVT
// LV or V may be followed by V or T
// LVT or T may be followed by T
//
// 4. Do not break before extending characters or zero-width-joiner (ZWJ).
//
// The following rules are only for extended grapheme clusters (but that's what we
// are implementing).
//
// 5. Do not break before SpacingMarks.
//
// 6. Do not break after Prepend characters.
//
// 7. Do not break within emoji modifier sequences or emoji zwj sequences. That
// is, do not break between characters with the Extended_Pictographic property.
// Extend and ZWJ characters are allowed between the characters; this cannot be
// represented in this table, the code has to deal with it.
//
// 8. Do not break within emoji flag sequences. That is, do not break between
// regional indicator (RI) symbols if there are an odd number of RI characters
// before the break point. This table encodes "join RI characters"; the code
// has to deal with checking for previous adjoining RIs.
//
// 9. Otherwise, break everywhere.
var X_pcre2_ucp_gbtable_8 = [15]Tuint32_t{
uint32(1) << ucp_gbLF,
Tuint32_t(0), // 1 LF
Tuint32_t(0), // 2 Control
Tuint32_t(int32(1)<<ucp_gbExtend | int32(1)<<ucp_gbSpacingMark | int32(1)<<ucp_gbZWJ),
uint32(int32(1)<<ucp_gbExtend|int32(1)<<ucp_gbSpacingMark|int32(1)<<ucp_gbZWJ) | uint32(1)<<ucp_gbPrepend | uint32(1)<<ucp_gbL | uint32(1)<<ucp_gbV | uint32(1)<<ucp_gbT | uint32(1)<<ucp_gbLV | uint32(1)<<ucp_gbLVT | uint32(1)<<ucp_gbOther | uint32(1)<<ucp_gbRegional_Indicator,
Tuint32_t(int32(1)<<ucp_gbExtend | int32(1)<<ucp_gbSpacingMark | int32(1)<<ucp_gbZWJ),
uint32(int32(1)<<ucp_gbExtend|int32(1)<<ucp_gbSpacingMark|int32(1)<<ucp_gbZWJ) | uint32(1)<<ucp_gbL | uint32(1)<<ucp_gbV | uint32(1)<<ucp_gbLV | uint32(1)<<ucp_gbLVT,
uint32(int32(1)<<ucp_gbExtend|int32(1)<<ucp_gbSpacingMark|int32(1)<<ucp_gbZWJ) | uint32(1)<<ucp_gbV | uint32(1)<<ucp_gbT,
uint32(int32(1)<<ucp_gbExtend|int32(1)<<ucp_gbSpacingMark|int32(1)<<ucp_gbZWJ) | uint32(1)<<ucp_gbT,
uint32(int32(1)<<ucp_gbExtend|int32(1)<<ucp_gbSpacingMark|int32(1)<<ucp_gbZWJ) | uint32(1)<<ucp_gbV | uint32(1)<<ucp_gbT,
uint32(int32(1)<<ucp_gbExtend|int32(1)<<ucp_gbSpacingMark|int32(1)<<ucp_gbZWJ) | uint32(1)<<ucp_gbT,
uint32(1) << ucp_gbRegional_Indicator,
Tuint32_t(int32(1)<<ucp_gbExtend | int32(1)<<ucp_gbSpacingMark | int32(1)<<ucp_gbZWJ),
Tuint32_t(int32(1)<<ucp_gbExtend | int32(1)<<ucp_gbSpacingMark | int32(1)<<ucp_gbZWJ),
uint32(int32(1)<<ucp_gbExtend|int32(1)<<ucp_gbSpacingMark|int32(1)<<ucp_gbZWJ) | uint32(1)<<ucp_gbExtended_Pictographic,
} /* pcre2_tables.c:188:16 */
// Finally, include the tables that are auto-generated from the Unicode data
// files.
// ************************************************
//
// Perl-Compatible Regular Expressions *
//
// PCRE is a library of functions to support regular expressions whose syntax
// and semantics are as close as possible to those of the Perl 5 language.
//
// Written by Philip Hazel
// Original API code Copyright (c) 1997-2012 University of Cambridge
// New API code Copyright (c) 2016-2022 University of Cambridge
//
// This module is auto-generated from Unicode data files. DO NOT EDIT MANUALLY!
// Instead, modify the maint/GenerateUcpTables.py script and run it to generate
// a new version of this code.
//
// -----------------------------------------------------------------------------
// Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions are met:
//
// * Redistributions of source code must retain the above copyright notice,
// this list of conditions and the following disclaimer.
//
// * Redistributions in binary form must reproduce the above copyright
// notice, this list of conditions and the following disclaimer in the
// documentation and/or other materials provided with the distribution.
//
// * Neither the name of the University of Cambridge nor the names of its
// contributors may be used to endorse or promote products derived from
// this software without specific prior written permission.
//
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
// POSSIBILITY OF SUCH DAMAGE.
// -----------------------------------------------------------------------------
// The PRIV(utt)[] table below translates Unicode property names into type and
// code values. It is searched by binary chop, so must be in collating sequence of
// name. Originally, the table contained pointers to the name strings in the first
// field of each entry. However, that leads to a large number of relocations when
// a shared library is dynamically loaded. A significant reduction is made by
// putting all the names into a single, large string and using offsets instead.
// All letters are lower cased, and underscores are removed, in accordance with
// the "loose matching" rules that Unicode advises and Perl uses.
var X_pcre2_utt_names_8 = *(*[3569]int8)(unsafe.Pointer(ts + 7683)) /* pcre2_ucptables.c:543:12 */
var X_pcre2_utt_8 = [486]Tucp_type_table{
{Ftype: Tuint16_t(DPT_SCX), Fvalue: ucp_Adlam},
{Fname_offset: Tuint16_t(6), Ftype: Tuint16_t(DPT_SCX), Fvalue: ucp_Adlam},
{Fname_offset: Tuint16_t(11), Ftype: Tuint16_t(DPT_SC), Fvalue: ucp_Caucasian_Albanian},
{Fname_offset: Tuint16_t(16), Ftype: Tuint16_t(DPT_BOOL), Fvalue: ucp_ASCII_Hex_Digit},
{Fname_offset: Tuint16_t(21), Ftype: Tuint16_t(DPT_SC), Fvalue: ucp_Ahom},
{Fname_offset: Tuint16_t(26), Ftype: Tuint16_t(DPT_BOOL), Fvalue: ucp_Alphabetic},
{Fname_offset: Tuint16_t(32), Ftype: Tuint16_t(DPT_BOOL), Fvalue: ucp_Alphabetic},
{Fname_offset: Tuint16_t(43), Ftype: Tuint16_t(DPT_SC), Fvalue: ucp_Anatolian_Hieroglyphs},
{Fname_offset: Tuint16_t(64)},
{Fname_offset: Tuint16_t(68), Ftype: Tuint16_t(DPT_SCX), Fvalue: ucp_Arabic},
{Fname_offset: Tuint16_t(73), Ftype: Tuint16_t(DPT_SCX), Fvalue: ucp_Arabic},
{Fname_offset: Tuint16_t(80), Ftype: Tuint16_t(DPT_SC), Fvalue: ucp_Armenian},
{Fname_offset: Tuint16_t(89), Ftype: Tuint16_t(DPT_SC), Fvalue: ucp_Imperial_Aramaic},
{Fname_offset: Tuint16_t(94), Ftype: Tuint16_t(DPT_SC), Fvalue: ucp_Armenian},
{Fname_offset: Tuint16_t(99), Ftype: Tuint16_t(DPT_BOOL)},
{Fname_offset: Tuint16_t(105), Ftype: Tuint16_t(DPT_BOOL), Fvalue: ucp_ASCII_Hex_Digit},
{Fname_offset: Tuint16_t(119), Ftype: Tuint16_t(DPT_SC), Fvalue: ucp_Avestan},
{Fname_offset: Tuint16_t(127), Ftype: Tuint16_t(DPT_SC), Fvalue: ucp_Avestan},
{Fname_offset: Tuint16_t(132), Ftype: Tuint16_t(DPT_SC), Fvalue: ucp_Balinese},
{Fname_offset: Tuint16_t(137), Ftype: Tuint16_t(DPT_SC), Fvalue: ucp_Balinese},
{Fname_offset: Tuint16_t(146), Ftype: Tuint16_t(DPT_SC), Fvalue: ucp_Bamum},
{Fname_offset: Tuint16_t(151), Ftype: Tuint16_t(DPT_SC), Fvalue: ucp_Bamum},
{Fname_offset: Tuint16_t(157), Ftype: Tuint16_t(DPT_SC), Fvalue: ucp_Bassa_Vah},
{Fname_offset: Tuint16_t(162), Ftype: Tuint16_t(DPT_SC), Fvalue: ucp_Bassa_Vah},
{Fname_offset: Tuint16_t(171), Ftype: Tuint16_t(DPT_SC), Fvalue: ucp_Batak},
{Fname_offset: Tuint16_t(177), Ftype: Tuint16_t(DPT_SC), Fvalue: ucp_Batak},
{Fname_offset: Tuint16_t(182), Ftype: Tuint16_t(DPT_SCX), Fvalue: ucp_Bengali},
{Fname_offset: Tuint16_t(187), Ftype: Tuint16_t(DPT_SCX), Fvalue: ucp_Bengali},
{Fname_offset: Tuint16_t(195), Ftype: Tuint16_t(DPT_SC), Fvalue: ucp_Bhaiksuki},
{Fname_offset: Tuint16_t(205), Ftype: Tuint16_t(DPT_SC), Fvalue: ucp_Bhaiksuki},
{Fname_offset: Tuint16_t(210), Ftype: Tuint16_t(DPT_BIDICL)},
{Fname_offset: Tuint16_t(217), Ftype: Tuint16_t(DPT_BIDICL), Fvalue: ucp_bidiAN},
{Fname_offset: Tuint16_t(224), Ftype: Tuint16_t(DPT_BIDICL), Fvalue: ucp_bidiB},
{Fname_offset: Tuint16_t(230), Ftype: Tuint16_t(DPT_BIDICL), Fvalue: ucp_bidiBN},
{Fname_offset: Tuint16_t(237), Ftype: Tuint16_t(DPT_BOOL), Fvalue: ucp_Bidi_Control},
{Fname_offset: Tuint16_t(243), Ftype: Tuint16_t(DPT_BOOL), Fvalue: ucp_Bidi_Control},
{Fname_offset: Tuint16_t(255), Ftype: Tuint16_t(DPT_BIDICL), Fvalue: ucp_bidiCS},
{Fname_offset: Tuint16_t(262), Ftype: Tuint16_t(DPT_BIDICL), Fvalue: ucp_bidiEN},
{Fname_offset: Tuint16_t(269), Ftype: Tuint16_t(DPT_BIDICL), Fvalue: ucp_bidiES},
{Fname_offset: Tuint16_t(276), Ftype: Tuint16_t(DPT_BIDICL), Fvalue: ucp_bidiET},
{Fname_offset: Tuint16_t(283), Ftype: Tuint16_t(DPT_BIDICL), Fvalue: ucp_bidiFSI},
{Fname_offset: Tuint16_t(291), Ftype: Tuint16_t(DPT_BIDICL), Fvalue: ucp_bidiL},
{Fname_offset: Tuint16_t(297), Ftype: Tuint16_t(DPT_BIDICL), Fvalue: ucp_bidiLRE},
{Fname_offset: Tuint16_t(305), Ftype: Tuint16_t(DPT_BIDICL), Fvalue: ucp_bidiLRI},
{Fname_offset: Tuint16_t(313), Ftype: Tuint16_t(DPT_BIDICL), Fvalue: ucp_bidiLRO},
{Fname_offset: Tuint16_t(321), Ftype: Tuint16_t(DPT_BOOL), Fvalue: ucp_Bidi_Mirrored},
{Fname_offset: Tuint16_t(327), Ftype: Tuint16_t(DPT_BOOL), Fvalue: ucp_Bidi_Mirrored},
{Fname_offset: Tuint16_t(340), Ftype: Tuint16_t(DPT_BIDICL), Fvalue: ucp_bidiNSM},
{Fname_offset: Tuint16_t(348), Ftype: Tuint16_t(DPT_BIDICL), Fvalue: ucp_bidiON},
{Fname_offset: Tuint16_t(355), Ftype: Tuint16_t(DPT_BIDICL), Fvalue: ucp_bidiPDF},
{Fname_offset: Tuint16_t(363), Ftype: Tuint16_t(DPT_BIDICL), Fvalue: ucp_bidiPDI},
{Fname_offset: Tuint16_t(371), Ftype: Tuint16_t(DPT_BIDICL), Fvalue: ucp_bidiR},
{Fname_offset: Tuint16_t(377), Ftype: Tuint16_t(DPT_BIDICL), Fvalue: ucp_bidiRLE},
{Fname_offset: Tuint16_t(385), Ftype: Tuint16_t(DPT_BIDICL), Fvalue: ucp_bidiRLI},
{Fname_offset: Tuint16_t(393), Ftype: Tuint16_t(DPT_BIDICL), Fvalue: ucp_bidiRLO},
{Fname_offset: Tuint16_t(401), Ftype: Tuint16_t(DPT_BIDICL), Fvalue: ucp_bidiS},
{Fname_offset: Tuint16_t(407), Ftype: Tuint16_t(DPT_BIDICL), Fvalue: ucp_bidiWS},
{Fname_offset: Tuint16_t(414), Ftype: Tuint16_t(DPT_SCX), Fvalue: ucp_Bopomofo},
{Fname_offset: Tuint16_t(419), Ftype: Tuint16_t(DPT_SCX), Fvalue: ucp_Bopomofo},
{Fname_offset: Tuint16_t(428), Ftype: Tuint16_t(DPT_SC), Fvalue: ucp_Brahmi},
{Fname_offset: Tuint16_t(433), Ftype: Tuint16_t(DPT_SC), Fvalue: ucp_Brahmi},
{Fname_offset: Tuint16_t(440), Ftype: Tuint16_t(DPT_SC), Fvalue: ucp_Braille},
{Fname_offset: Tuint16_t(445), Ftype: Tuint16_t(DPT_SC), Fvalue: ucp_Braille},
{Fname_offset: Tuint16_t(453), Ftype: Tuint16_t(DPT_SCX), Fvalue: ucp_Buginese},
{Fname_offset: Tuint16_t(458), Ftype: Tuint16_t(DPT_SCX), Fvalue: ucp_Buginese},
{Fname_offset: Tuint16_t(467), Ftype: Tuint16_t(DPT_SCX), Fvalue: ucp_Buhid},
{Fname_offset: Tuint16_t(472), Ftype: Tuint16_t(DPT_SCX), Fvalue: ucp_Buhid},
{Fname_offset: Tuint16_t(478), Ftype: Tuint16_t(DPT_GC)},
{Fname_offset: Tuint16_t(480), Ftype: Tuint16_t(DPT_SCX), Fvalue: ucp_Chakma},
{Fname_offset: Tuint16_t(485), Ftype: Tuint16_t(DPT_SC), Fvalue: ucp_Canadian_Aboriginal},
{Fname_offset: Tuint16_t(504), Ftype: Tuint16_t(DPT_SC), Fvalue: ucp_Canadian_Aboriginal},
{Fname_offset: Tuint16_t(509), Ftype: Tuint16_t(DPT_SC), Fvalue: ucp_Carian},
{Fname_offset: Tuint16_t(514), Ftype: Tuint16_t(DPT_SC), Fvalue: ucp_Carian},
{Fname_offset: Tuint16_t(521), Ftype: Tuint16_t(DPT_BOOL), Fvalue: ucp_Cased},
{Fname_offset: Tuint16_t(527), Ftype: Tuint16_t(DPT_BOOL), Fvalue: ucp_Case_Ignorable},
{Fname_offset: Tuint16_t(541), Ftype: Tuint16_t(DPT_SC), Fvalue: ucp_Caucasian_Albanian},
{Fname_offset: Tuint16_t(559), Ftype: Tuint16_t(DPT_PC)},
{Fname_offset: Tuint16_t(562), Ftype: Tuint16_t(DPT_PC), Fvalue: ucp_Cf},
{Fname_offset: Tuint16_t(565), Ftype: Tuint16_t(DPT_SCX), Fvalue: ucp_Chakma},
{Fname_offset: Tuint16_t(572), Ftype: Tuint16_t(DPT_SC), Fvalue: ucp_Cham},
{Fname_offset: Tuint16_t(577), Ftype: Tuint16_t(DPT_BOOL), Fvalue: ucp_Changes_When_Casefolded},
{Fname_offset: Tuint16_t(599), Ftype: Tuint16_t(DPT_BOOL), Fvalue: ucp_Changes_When_Casemapped},
{Fname_offset: Tuint16_t(621), Ftype: Tuint16_t(DPT_BOOL), Fvalue: ucp_Changes_When_Lowercased},
{Fname_offset: Tuint16_t(643), Ftype: Tuint16_t(DPT_BOOL), Fvalue: ucp_Changes_When_Titlecased},
{Fname_offset: Tuint16_t(665), Ftype: Tuint16_t(DPT_BOOL), Fvalue: ucp_Changes_When_Uppercased},
{Fname_offset: Tuint16_t(687), Ftype: Tuint16_t(DPT_SC), Fvalue: ucp_Cherokee},
{Fname_offset: Tuint16_t(692), Ftype: Tuint16_t(DPT_SC), Fvalue: ucp_Cherokee},
{Fname_offset: Tuint16_t(701), Ftype: Tuint16_t(DPT_SC), Fvalue: ucp_Chorasmian},
{Fname_offset: Tuint16_t(712), Ftype: Tuint16_t(DPT_SC), Fvalue: ucp_Chorasmian},
{Fname_offset: Tuint16_t(717), Ftype: Tuint16_t(DPT_BOOL), Fvalue: ucp_Case_Ignorable},
{Fname_offset: Tuint16_t(720), Ftype: Tuint16_t(DPT_PC), Fvalue: ucp_Cn},
{Fname_offset: Tuint16_t(723), Ftype: Tuint16_t(DPT_PC), Fvalue: ucp_Co},
{Fname_offset: Tuint16_t(726), Ftype: Tuint16_t(DPT_SC), Fvalue: ucp_Common},
{Fname_offset: Tuint16_t(733), Ftype: Tuint16_t(DPT_SCX), Fvalue: ucp_Coptic},
{Fname_offset: Tuint16_t(738), Ftype: Tuint16_t(DPT_SCX), Fvalue: ucp_Coptic},
{Fname_offset: Tuint16_t(745), Ftype: Tuint16_t(DPT_SCX), Fvalue: ucp_Cypro_Minoan},
{Fname_offset: Tuint16_t(750), Ftype: Tuint16_t(DPT_SCX), Fvalue: ucp_Cypriot},
{Fname_offset: Tuint16_t(755), Ftype: Tuint16_t(DPT_PC), Fvalue: ucp_Cs},
{Fname_offset: Tuint16_t(758), Ftype: Tuint16_t(DPT_SC), Fvalue: ucp_Cuneiform},
{Fname_offset: Tuint16_t(768), Ftype: Tuint16_t(DPT_BOOL), Fvalue: ucp_Changes_When_Casefolded},
{Fname_offset: Tuint16_t(773), Ftype: Tuint16_t(DPT_BOOL), Fvalue: ucp_Changes_When_Casemapped},
{Fname_offset: Tuint16_t(778), Ftype: Tuint16_t(DPT_BOOL), Fvalue: ucp_Changes_When_Lowercased},
{Fname_offset: Tuint16_t(782), Ftype: Tuint16_t(DPT_BOOL), Fvalue: ucp_Changes_When_Titlecased},
{Fname_offset: Tuint16_t(786), Ftype: Tuint16_t(DPT_BOOL), Fvalue: ucp_Changes_When_Uppercased},
{Fname_offset: Tuint16_t(790), Ftype: Tuint16_t(DPT_SCX), Fvalue: ucp_Cypriot},
{Fname_offset: Tuint16_t(798), Ftype: Tuint16_t(DPT_SCX), Fvalue: ucp_Cypro_Minoan},
{Fname_offset: Tuint16_t(810), Ftype: Tuint16_t(DPT_SCX), Fvalue: ucp_Cyrillic},
{Fname_offset: Tuint16_t(819), Ftype: Tuint16_t(DPT_SCX), Fvalue: ucp_Cyrillic},
{Fname_offset: Tuint16_t(824), Ftype: Tuint16_t(DPT_BOOL), Fvalue: ucp_Dash},
{Fname_offset: Tuint16_t(829), Ftype: Tuint16_t(DPT_BOOL), Fvalue: ucp_Default_Ignorable_Code_Point},
{Fname_offset: Tuint16_t(855), Ftype: Tuint16_t(DPT_BOOL), Fvalue: ucp_Deprecated},
{Fname_offset: Tuint16_t(859), Ftype: Tuint16_t(DPT_BOOL), Fvalue: ucp_Deprecated},
{Fname_offset: Tuint16_t(870), Ftype: Tuint16_t(DPT_SC), Fvalue: ucp_Deseret},
{Fname_offset: Tuint16_t(878), Ftype: Tuint16_t(DPT_SCX), Fvalue: ucp_Devanagari},
{Fname_offset: Tuint16_t(883), Ftype: Tuint16_t(DPT_SCX), Fvalue: ucp_Devanagari},
{Fname_offset: Tuint16_t(894), Ftype: Tuint16_t(DPT_BOOL), Fvalue: ucp_Default_Ignorable_Code_Point},
{Fname_offset: Tuint16_t(897), Ftype: Tuint16_t(DPT_BOOL), Fvalue: ucp_Diacritic},
{Fname_offset: Tuint16_t(901), Ftype: Tuint16_t(DPT_BOOL), Fvalue: ucp_Diacritic},
{Fname_offset: Tuint16_t(911), Ftype: Tuint16_t(DPT_SC), Fvalue: ucp_Dives_Akuru},
{Fname_offset: Tuint16_t(916), Ftype: Tuint16_t(DPT_SC), Fvalue: ucp_Dives_Akuru},
{Fname_offset: Tuint16_t(927), Ftype: Tuint16_t(DPT_SCX), Fvalue: ucp_Dogra},
{Fname_offset: Tuint16_t(932), Ftype: Tuint16_t(DPT_SCX), Fvalue: ucp_Dogra},
{Fname_offset: Tuint16_t(938), Ftype: Tuint16_t(DPT_SC), Fvalue: ucp_Deseret},
{Fname_offset: Tuint16_t(943), Ftype: Tuint16_t(DPT_SCX), Fvalue: ucp_Duployan},
{Fname_offset: Tuint16_t(948), Ftype: Tuint16_t(DPT_SCX), Fvalue: ucp_Duployan},
{Fname_offset: Tuint16_t(957), Ftype: Tuint16_t(DPT_BOOL), Fvalue: ucp_Emoji_Modifier_Base},
{Fname_offset: Tuint16_t(963), Ftype: Tuint16_t(DPT_BOOL), Fvalue: ucp_Emoji_Component},
{Fname_offset: Tuint16_t(969), Ftype: Tuint16_t(DPT_SC), Fvalue: ucp_Egyptian_Hieroglyphs},
{Fname_offset: Tuint16_t(974), Ftype: Tuint16_t(DPT_SC), Fvalue: ucp_Egyptian_Hieroglyphs},
{Fname_offset: Tuint16_t(994), Ftype: Tuint16_t(DPT_SC), Fvalue: ucp_Elbasan},
{Fname_offset: Tuint16_t(999), Ftype: Tuint16_t(DPT_SC), Fvalue: ucp_Elbasan},
{Fname_offset: Tuint16_t(1007), Ftype: Tuint16_t(DPT_SC), Fvalue: ucp_Elymaic},
{Fname_offset: Tuint16_t(1012), Ftype: Tuint16_t(DPT_SC), Fvalue: ucp_Elymaic},
{Fname_offset: Tuint16_t(1020), Ftype: Tuint16_t(DPT_BOOL), Fvalue: ucp_Emoji_Modifier},
{Fname_offset: Tuint16_t(1025), Ftype: Tuint16_t(DPT_BOOL), Fvalue: ucp_Emoji},
{Fname_offset: Tuint16_t(1031), Ftype: Tuint16_t(DPT_BOOL), Fvalue: ucp_Emoji_Component},
{Fname_offset: Tuint16_t(1046), Ftype: Tuint16_t(DPT_BOOL), Fvalue: ucp_Emoji_Modifier},
{Fname_offset: Tuint16_t(1060), Ftype: Tuint16_t(DPT_BOOL), Fvalue: ucp_Emoji_Modifier_Base},
{Fname_offset: Tuint16_t(1078), Ftype: Tuint16_t(DPT_BOOL), Fvalue: ucp_Emoji_Presentation},
{Fname_offset: Tuint16_t(1096), Ftype: Tuint16_t(DPT_BOOL), Fvalue: ucp_Emoji_Presentation},
{Fname_offset: Tuint16_t(1102), Ftype: Tuint16_t(DPT_SC), Fvalue: ucp_Ethiopic},
{Fname_offset: Tuint16_t(1107), Ftype: Tuint16_t(DPT_SC), Fvalue: ucp_Ethiopic},
{Fname_offset: Tuint16_t(1116), Ftype: Tuint16_t(DPT_BOOL), Fvalue: ucp_Extender},
{Fname_offset: Tuint16_t(1120), Ftype: Tuint16_t(DPT_BOOL), Fvalue: ucp_Extended_Pictographic},
{Fname_offset: Tuint16_t(1141), Ftype: Tuint16_t(DPT_BOOL), Fvalue: ucp_Extender},
{Fname_offset: Tuint16_t(1150), Ftype: Tuint16_t(DPT_BOOL), Fvalue: ucp_Extended_Pictographic},
{Fname_offset: Tuint16_t(1158), Ftype: Tuint16_t(DPT_SCX), Fvalue: ucp_Georgian},
{Fname_offset: Tuint16_t(1163), Ftype: Tuint16_t(DPT_SCX), Fvalue: ucp_Georgian},
{Fname_offset: Tuint16_t(1172), Ftype: Tuint16_t(DPT_SCX), Fvalue: ucp_Glagolitic},
{Fname_offset: Tuint16_t(1177), Ftype: Tuint16_t(DPT_SCX), Fvalue: ucp_Glagolitic},
{Fname_offset: Tuint16_t(1188), Ftype: Tuint16_t(DPT_SCX), Fvalue: ucp_Gunjala_Gondi},
{Fname_offset: Tuint16_t(1193), Ftype: Tuint16_t(DPT_SCX), Fvalue: ucp_Masaram_Gondi},
{Fname_offset: Tuint16_t(1198), Ftype: Tuint16_t(DPT_SC), Fvalue: ucp_Gothic},
{Fname_offset: Tuint16_t(1203), Ftype: Tuint16_t(DPT_SC), Fvalue: ucp_Gothic},
{Fname_offset: Tuint16_t(1210), Ftype: Tuint16_t(DPT_SCX), Fvalue: ucp_Grantha},
{Fname_offset: Tuint16_t(1215), Ftype: Tuint16_t(DPT_SCX), Fvalue: ucp_Grantha},
{Fname_offset: Tuint16_t(1223), Ftype: Tuint16_t(DPT_BOOL), Fvalue: ucp_Grapheme_Base},
{Fname_offset: Tuint16_t(1236), Ftype: Tuint16_t(DPT_BOOL), Fvalue: ucp_Grapheme_Extend},
{Fname_offset: Tuint16_t(1251), Ftype: Tuint16_t(DPT_BOOL), Fvalue: ucp_Grapheme_Link},
{Fname_offset: Tuint16_t(1264), Ftype: Tuint16_t(DPT_BOOL), Fvalue: ucp_Grapheme_Base},
{Fname_offset: Tuint16_t(1271), Ftype: Tuint16_t(DPT_SCX), Fvalue: ucp_Greek},
{Fname_offset: Tuint16_t(1277), Ftype: Tuint16_t(DPT_SCX), Fvalue: ucp_Greek},
{Fname_offset: Tuint16_t(1282), Ftype: Tuint16_t(DPT_BOOL), Fvalue: ucp_Grapheme_Extend},
{Fname_offset: Tuint16_t(1288), Ftype: Tuint16_t(DPT_BOOL), Fvalue: ucp_Grapheme_Link},
{Fname_offset: Tuint16_t(1295), Ftype: Tuint16_t(DPT_SCX), Fvalue: ucp_Gujarati},
{Fname_offset: Tuint16_t(1304), Ftype: Tuint16_t(DPT_SCX), Fvalue: ucp_Gujarati},
{Fname_offset: Tuint16_t(1309), Ftype: Tuint16_t(DPT_SCX), Fvalue: ucp_Gunjala_Gondi},
{Fname_offset: Tuint16_t(1322), Ftype: Tuint16_t(DPT_SCX), Fvalue: ucp_Gurmukhi},
{Fname_offset: Tuint16_t(1331), Ftype: Tuint16_t(DPT_SCX), Fvalue: ucp_Gurmukhi},
{Fname_offset: Tuint16_t(1336), Ftype: Tuint16_t(DPT_SCX), Fvalue: ucp_Han},
{Fname_offset: Tuint16_t(1340), Ftype: Tuint16_t(DPT_SCX), Fvalue: ucp_Hangul},
{Fname_offset: Tuint16_t(1345), Ftype: Tuint16_t(DPT_SCX), Fvalue: ucp_Hangul},
{Fname_offset: Tuint16_t(1352), Ftype: Tuint16_t(DPT_SCX), Fvalue: ucp_Han},
{Fname_offset: Tuint16_t(1357), Ftype: Tuint16_t(DPT_SCX), Fvalue: ucp_Hanifi_Rohingya},
{Fname_offset: Tuint16_t(1372), Ftype: Tuint16_t(DPT_SCX), Fvalue: ucp_Hanunoo},
{Fname_offset: Tuint16_t(1377), Ftype: Tuint16_t(DPT_SCX), Fvalue: ucp_Hanunoo},
{Fname_offset: Tuint16_t(1385), Ftype: Tuint16_t(DPT_SC), Fvalue: ucp_Hatran},
{Fname_offset: Tuint16_t(1390), Ftype: Tuint16_t(DPT_SC), Fvalue: ucp_Hatran},
{Fname_offset: Tuint16_t(1397), Ftype: Tuint16_t(DPT_SC), Fvalue: ucp_Hebrew},
{Fname_offset: Tuint16_t(1402), Ftype: Tuint16_t(DPT_SC), Fvalue: ucp_Hebrew},
{Fname_offset: Tuint16_t(1409), Ftype: Tuint16_t(DPT_BOOL), Fvalue: ucp_Hex_Digit},
{Fname_offset: Tuint16_t(1413), Ftype: Tuint16_t(DPT_BOOL), Fvalue: ucp_Hex_Digit},
{Fname_offset: Tuint16_t(1422), Ftype: Tuint16_t(DPT_SCX), Fvalue: ucp_Hiragana},
{Fname_offset: Tuint16_t(1427), Ftype: Tuint16_t(DPT_SCX), Fvalue: ucp_Hiragana},
{Fname_offset: Tuint16_t(1436), Ftype: Tuint16_t(DPT_SC), Fvalue: ucp_Anatolian_Hieroglyphs},
{Fname_offset: Tuint16_t(1441), Ftype: Tuint16_t(DPT_SC), Fvalue: ucp_Pahawh_Hmong},
{Fname_offset: Tuint16_t(1446), Ftype: Tuint16_t(DPT_SC), Fvalue: ucp_Nyiakeng_Puachue_Hmong},
{Fname_offset: Tuint16_t(1451), Ftype: Tuint16_t(DPT_SC), Fvalue: ucp_Old_Hungarian},
{Fname_offset: Tuint16_t(1456), Ftype: Tuint16_t(DPT_BOOL), Fvalue: ucp_ID_Continue},
{Fname_offset: Tuint16_t(1460), Ftype: Tuint16_t(DPT_BOOL), Fvalue: ucp_ID_Continue},
{Fname_offset: Tuint16_t(1471), Ftype: Tuint16_t(DPT_BOOL), Fvalue: ucp_Ideographic},
{Fname_offset: Tuint16_t(1476), Ftype: Tuint16_t(DPT_BOOL), Fvalue: ucp_Ideographic},
{Fname_offset: Tuint16_t(1488), Ftype: Tuint16_t(DPT_BOOL), Fvalue: ucp_ID_Start},
{Fname_offset: Tuint16_t(1492), Ftype: Tuint16_t(DPT_BOOL), Fvalue: ucp_IDS_Binary_Operator},
{Fname_offset: Tuint16_t(1497), Ftype: Tuint16_t(DPT_BOOL), Fvalue: ucp_IDS_Binary_Operator},
{Fname_offset: Tuint16_t(1515), Ftype: Tuint16_t(DPT_BOOL), Fvalue: ucp_IDS_Trinary_Operator},
{Fname_offset: Tuint16_t(1520), Ftype: Tuint16_t(DPT_BOOL), Fvalue: ucp_ID_Start},
{Fname_offset: Tuint16_t(1528), Ftype: Tuint16_t(DPT_BOOL), Fvalue: ucp_IDS_Trinary_Operator},
{Fname_offset: Tuint16_t(1547), Ftype: Tuint16_t(DPT_SC), Fvalue: ucp_Imperial_Aramaic},
{Fname_offset: Tuint16_t(1563), Ftype: Tuint16_t(DPT_SC), Fvalue: ucp_Inherited},
{Fname_offset: Tuint16_t(1573), Ftype: Tuint16_t(DPT_SC), Fvalue: ucp_Inscriptional_Pahlavi},
{Fname_offset: Tuint16_t(1594), Ftype: Tuint16_t(DPT_SC), Fvalue: ucp_Inscriptional_Parthian},
{Fname_offset: Tuint16_t(1616), Ftype: Tuint16_t(DPT_SC), Fvalue: ucp_Old_Italic},
{Fname_offset: Tuint16_t(1621), Ftype: Tuint16_t(DPT_SCX), Fvalue: ucp_Javanese},
{Fname_offset: Tuint16_t(1626), Ftype: Tuint16_t(DPT_SCX), Fvalue: ucp_Javanese},
{Fname_offset: Tuint16_t(1635), Ftype: Tuint16_t(DPT_BOOL), Fvalue: ucp_Join_Control},
{Fname_offset: Tuint16_t(1641), Ftype: Tuint16_t(DPT_BOOL), Fvalue: ucp_Join_Control},
{Fname_offset: Tuint16_t(1653), Ftype: Tuint16_t(DPT_SCX), Fvalue: ucp_Kaithi},
{Fname_offset: Tuint16_t(1660), Ftype: Tuint16_t(DPT_SCX), Fvalue: ucp_Kayah_Li},
{Fname_offset: Tuint16_t(1665), Ftype: Tuint16_t(DPT_SCX), Fvalue: ucp_Katakana},
{Fname_offset: Tuint16_t(1670), Ftype: Tuint16_t(DPT_SCX), Fvalue: ucp_Kannada},
{Fname_offset: Tuint16_t(1678), Ftype: Tuint16_t(DPT_SCX), Fvalue: ucp_Katakana},
{Fname_offset: Tuint16_t(1687), Ftype: Tuint16_t(DPT_SCX), Fvalue: ucp_Kayah_Li},
{Fname_offset: Tuint16_t(1695), Ftype: Tuint16_t(DPT_SC), Fvalue: ucp_Kharoshthi},
{Fname_offset: Tuint16_t(1700), Ftype: Tuint16_t(DPT_SC), Fvalue: ucp_Kharoshthi},
{Fname_offset: Tuint16_t(1711), Ftype: Tuint16_t(DPT_SC), Fvalue: ucp_Khitan_Small_Script},
{Fname_offset: Tuint16_t(1729), Ftype: Tuint16_t(DPT_SC), Fvalue: ucp_Khmer},
{Fname_offset: Tuint16_t(1735), Ftype: Tuint16_t(DPT_SC), Fvalue: ucp_Khmer},
{Fname_offset: Tuint16_t(1740), Ftype: Tuint16_t(DPT_SCX), Fvalue: ucp_Khojki},
{Fname_offset: Tuint16_t(1745), Ftype: Tuint16_t(DPT_SCX), Fvalue: ucp_Khojki},
{Fname_offset: Tuint16_t(1752), Ftype: Tuint16_t(DPT_SCX), Fvalue: ucp_Khudawadi},
{Fname_offset: Tuint16_t(1762), Ftype: Tuint16_t(DPT_SC), Fvalue: ucp_Khitan_Small_Script},
{Fname_offset: Tuint16_t(1767), Ftype: Tuint16_t(DPT_SCX), Fvalue: ucp_Kannada},
{Fname_offset: Tuint16_t(1772), Ftype: Tuint16_t(DPT_SCX), Fvalue: ucp_Kaithi},
{Fname_offset: Tuint16_t(1777), Ftype: Tuint16_t(DPT_GC), Fvalue: ucp_L},
{Fname_offset: Tuint16_t(1779), Ftype: Tuint16_t(DPT_LAMP)},
{Fname_offset: Tuint16_t(1782), Ftype: Tuint16_t(DPT_SC), Fvalue: ucp_Tai_Tham},
{Fname_offset: Tuint16_t(1787), Ftype: Tuint16_t(DPT_SC), Fvalue: ucp_Lao},
{Fname_offset: Tuint16_t(1791), Ftype: Tuint16_t(DPT_SC), Fvalue: ucp_Lao},
{Fname_offset: Tuint16_t(1796), Ftype: Tuint16_t(DPT_SCX)},
{Fname_offset: Tuint16_t(1802), Ftype: Tuint16_t(DPT_SCX)},
{Fname_offset: Tuint16_t(1807), Ftype: Tuint16_t(DPT_LAMP)},
{Fname_offset: Tuint16_t(1810), Ftype: Tuint16_t(DPT_SC), Fvalue: ucp_Lepcha},
{Fname_offset: Tuint16_t(1815), Ftype: Tuint16_t(DPT_SC), Fvalue: ucp_Lepcha},
{Fname_offset: Tuint16_t(1822), Ftype: Tuint16_t(DPT_SCX), Fvalue: ucp_Limbu},
{Fname_offset: Tuint16_t(1827), Ftype: Tuint16_t(DPT_SCX), Fvalue: ucp_Limbu},
{Fname_offset: Tuint16_t(1833), Ftype: Tuint16_t(DPT_SCX), Fvalue: ucp_Linear_A},
{Fname_offset: Tuint16_t(1838), Ftype: Tuint16_t(DPT_SCX), Fvalue: ucp_Linear_B},
{Fname_offset: Tuint16_t(1843), Ftype: Tuint16_t(DPT_SCX), Fvalue: ucp_Linear_A},
{Fname_offset: Tuint16_t(1851), Ftype: Tuint16_t(DPT_SCX), Fvalue: ucp_Linear_B},
{Fname_offset: Tuint16_t(1859), Ftype: Tuint16_t(DPT_SC), Fvalue: ucp_Lisu},
{Fname_offset: Tuint16_t(1864), Ftype: Tuint16_t(DPT_PC), Fvalue: ucp_Ll},
{Fname_offset: Tuint16_t(1867), Ftype: Tuint16_t(DPT_PC), Fvalue: ucp_Lm},
{Fname_offset: Tuint16_t(1870), Ftype: Tuint16_t(DPT_PC), Fvalue: ucp_Lo},
{Fname_offset: Tuint16_t(1873), Ftype: Tuint16_t(DPT_BOOL), Fvalue: ucp_Logical_Order_Exception},
{Fname_offset: Tuint16_t(1877), Ftype: Tuint16_t(DPT_BOOL), Fvalue: ucp_Logical_Order_Exception},
{Fname_offset: Tuint16_t(1899), Ftype: Tuint16_t(DPT_BOOL), Fvalue: ucp_Lowercase},
{Fname_offset: Tuint16_t(1905), Ftype: Tuint16_t(DPT_BOOL), Fvalue: ucp_Lowercase},
{Fname_offset: Tuint16_t(1915), Ftype: Tuint16_t(DPT_PC), Fvalue: ucp_Lt},
{Fname_offset: Tuint16_t(1918), Ftype: Tuint16_t(DPT_PC), Fvalue: ucp_Lu},
{Fname_offset: Tuint16_t(1921), Ftype: Tuint16_t(DPT_SC), Fvalue: ucp_Lycian},
{Fname_offset: Tuint16_t(1926), Ftype: Tuint16_t(DPT_SC), Fvalue: ucp_Lycian},
{Fname_offset: Tuint16_t(1933), Ftype: Tuint16_t(DPT_SC), Fvalue: ucp_Lydian},
{Fname_offset: Tuint16_t(1938), Ftype: Tuint16_t(DPT_SC), Fvalue: ucp_Lydian},
{Fname_offset: Tuint16_t(1945), Ftype: Tuint16_t(DPT_GC), Fvalue: ucp_M},
{Fname_offset: Tuint16_t(1947), Ftype: Tuint16_t(DPT_SCX), Fvalue: ucp_Mahajani},
{Fname_offset: Tuint16_t(1956), Ftype: Tuint16_t(DPT_SCX), Fvalue: ucp_Mahajani},
{Fname_offset: Tuint16_t(1961), Ftype: Tuint16_t(DPT_SC), Fvalue: ucp_Makasar},
{Fname_offset: Tuint16_t(1966), Ftype: Tuint16_t(DPT_SC), Fvalue: ucp_Makasar},
{Fname_offset: Tuint16_t(1974), Ftype: Tuint16_t(DPT_SCX), Fvalue: ucp_Malayalam},
{Fname_offset: Tuint16_t(1984), Ftype: Tuint16_t(DPT_SCX), Fvalue: ucp_Mandaic},
{Fname_offset: Tuint16_t(1989), Ftype: Tuint16_t(DPT_SCX), Fvalue: ucp_Mandaic},
{Fname_offset: Tuint16_t(1997), Ftype: Tuint16_t(DPT_SCX), Fvalue: ucp_Manichaean},
{Fname_offset: Tuint16_t(2002), Ftype: Tuint16_t(DPT_SCX), Fvalue: ucp_Manichaean},
{Fname_offset: Tuint16_t(2013), Ftype: Tuint16_t(DPT_SC), Fvalue: ucp_Marchen},
{Fname_offset: Tuint16_t(2018), Ftype: Tuint16_t(DPT_SC), Fvalue: ucp_Marchen},
{Fname_offset: Tuint16_t(2026), Ftype: Tuint16_t(DPT_SCX), Fvalue: ucp_Masaram_Gondi},
{Fname_offset: Tuint16_t(2039), Ftype: Tuint16_t(DPT_BOOL), Fvalue: ucp_Math},
{Fname_offset: Tuint16_t(2044), Ftype: Tuint16_t(DPT_PC), Fvalue: ucp_Mc},
{Fname_offset: Tuint16_t(2047), Ftype: Tuint16_t(DPT_PC), Fvalue: ucp_Me},
{Fname_offset: Tuint16_t(2050), Ftype: Tuint16_t(DPT_SC), Fvalue: ucp_Medefaidrin},
{Fname_offset: Tuint16_t(2062), Ftype: Tuint16_t(DPT_SC), Fvalue: ucp_Medefaidrin},
{Fname_offset: Tuint16_t(2067), Ftype: Tuint16_t(DPT_SC), Fvalue: ucp_Meetei_Mayek},
{Fname_offset: Tuint16_t(2079), Ftype: Tuint16_t(DPT_SC), Fvalue: ucp_Mende_Kikakui},
{Fname_offset: Tuint16_t(2084), Ftype: Tuint16_t(DPT_SC), Fvalue: ucp_Mende_Kikakui},
{Fname_offset: Tuint16_t(2097), Ftype: Tuint16_t(DPT_SC), Fvalue: ucp_Meroitic_Cursive},
{Fname_offset: Tuint16_t(2102), Ftype: Tuint16_t(DPT_SC), Fvalue: ucp_Meroitic_Hieroglyphs},
{Fname_offset: Tuint16_t(2107), Ftype: Tuint16_t(DPT_SC), Fvalue: ucp_Meroitic_Cursive},
{Fname_offset: Tuint16_t(2123), Ftype: Tuint16_t(DPT_SC), Fvalue: ucp_Meroitic_Hieroglyphs},
{Fname_offset: Tuint16_t(2143), Ftype: Tuint16_t(DPT_SC), Fvalue: ucp_Miao},
{Fname_offset: Tuint16_t(2148), Ftype: Tuint16_t(DPT_SCX), Fvalue: ucp_Malayalam},
{Fname_offset: Tuint16_t(2153), Ftype: Tuint16_t(DPT_PC), Fvalue: ucp_Mn},
{Fname_offset: Tuint16_t(2156), Ftype: Tuint16_t(DPT_SCX), Fvalue: ucp_Modi},
{Fname_offset: Tuint16_t(2161), Ftype: Tuint16_t(DPT_SCX), Fvalue: ucp_Mongolian},
{Fname_offset: Tuint16_t(2166), Ftype: Tuint16_t(DPT_SCX), Fvalue: ucp_Mongolian},
{Fname_offset: Tuint16_t(2176), Ftype: Tuint16_t(DPT_SC), Fvalue: ucp_Mro},
{Fname_offset: Tuint16_t(2180), Ftype: Tuint16_t(DPT_SC), Fvalue: ucp_Mro},
{Fname_offset: Tuint16_t(2185), Ftype: Tuint16_t(DPT_SC), Fvalue: ucp_Meetei_Mayek},
{Fname_offset: Tuint16_t(2190), Ftype: Tuint16_t(DPT_SCX), Fvalue: ucp_Multani},
{Fname_offset: Tuint16_t(2195), Ftype: Tuint16_t(DPT_SCX), Fvalue: ucp_Multani},
{Fname_offset: Tuint16_t(2203), Ftype: Tuint16_t(DPT_SCX), Fvalue: ucp_Myanmar},
{Fname_offset: Tuint16_t(2211), Ftype: Tuint16_t(DPT_SCX), Fvalue: ucp_Myanmar},
{Fname_offset: Tuint16_t(2216), Ftype: Tuint16_t(DPT_GC), Fvalue: ucp_N},
{Fname_offset: Tuint16_t(2218), Ftype: Tuint16_t(DPT_SC), Fvalue: ucp_Nabataean},
{Fname_offset: Tuint16_t(2228), Ftype: Tuint16_t(DPT_SCX), Fvalue: ucp_Nandinagari},
{Fname_offset: Tuint16_t(2233), Ftype: Tuint16_t(DPT_SCX), Fvalue: ucp_Nandinagari},
{Fname_offset: Tuint16_t(2245), Ftype: Tuint16_t(DPT_SC), Fvalue: ucp_Old_North_Arabian},
{Fname_offset: Tuint16_t(2250), Ftype: Tuint16_t(DPT_SC), Fvalue: ucp_Nabataean},
{Fname_offset: Tuint16_t(2255), Ftype: Tuint16_t(DPT_BOOL), Fvalue: ucp_Noncharacter_Code_Point},
{Fname_offset: Tuint16_t(2261), Ftype: Tuint16_t(DPT_PC), Fvalue: ucp_Nd},
{Fname_offset: Tuint16_t(2264), Ftype: Tuint16_t(DPT_SC), Fvalue: ucp_Newa},
{Fname_offset: Tuint16_t(2269), Ftype: Tuint16_t(DPT_SC), Fvalue: ucp_New_Tai_Lue},
{Fname_offset: Tuint16_t(2279), Ftype: Tuint16_t(DPT_SCX), Fvalue: ucp_Nko},
{Fname_offset: Tuint16_t(2283), Ftype: Tuint16_t(DPT_SCX), Fvalue: ucp_Nko},
{Fname_offset: Tuint16_t(2288), Ftype: Tuint16_t(DPT_PC), Fvalue: ucp_Nl},
{Fname_offset: Tuint16_t(2291), Ftype: Tuint16_t(DPT_PC), Fvalue: ucp_No},
{Fname_offset: Tuint16_t(2294), Ftype: Tuint16_t(DPT_BOOL), Fvalue: ucp_Noncharacter_Code_Point},
{Fname_offset: Tuint16_t(2316), Ftype: Tuint16_t(DPT_SC), Fvalue: ucp_Nushu},
{Fname_offset: Tuint16_t(2321), Ftype: Tuint16_t(DPT_SC), Fvalue: ucp_Nushu},
{Fname_offset: Tuint16_t(2327), Ftype: Tuint16_t(DPT_SC), Fvalue: ucp_Nyiakeng_Puachue_Hmong},
{Fname_offset: Tuint16_t(2348), Ftype: Tuint16_t(DPT_SC), Fvalue: ucp_Ogham},
{Fname_offset: Tuint16_t(2353), Ftype: Tuint16_t(DPT_SC), Fvalue: ucp_Ogham},
{Fname_offset: Tuint16_t(2359), Ftype: Tuint16_t(DPT_SC), Fvalue: ucp_Ol_Chiki},
{Fname_offset: Tuint16_t(2367), Ftype: Tuint16_t(DPT_SC), Fvalue: ucp_Ol_Chiki},
{Fname_offset: Tuint16_t(2372), Ftype: Tuint16_t(DPT_SC), Fvalue: ucp_Old_Hungarian},
{Fname_offset: Tuint16_t(2385), Ftype: Tuint16_t(DPT_SC), Fvalue: ucp_Old_Italic},
{Fname_offset: Tuint16_t(2395), Ftype: Tuint16_t(DPT_SC), Fvalue: ucp_Old_North_Arabian},
{Fname_offset: Tuint16_t(2411), Ftype: Tuint16_t(DPT_SCX), Fvalue: ucp_Old_Permic},
{Fname_offset: Tuint16_t(2421), Ftype: Tuint16_t(DPT_SC), Fvalue: ucp_Old_Persian},
{Fname_offset: Tuint16_t(2432), Ftype: Tuint16_t(DPT_SC), Fvalue: ucp_Old_Sogdian},
{Fname_offset: Tuint16_t(2443), Ftype: Tuint16_t(DPT_SC), Fvalue: ucp_Old_South_Arabian},
{Fname_offset: Tuint16_t(2459), Ftype: Tuint16_t(DPT_SC), Fvalue: ucp_Old_Turkic},
{Fname_offset: Tuint16_t(2469), Ftype: Tuint16_t(DPT_SCX), Fvalue: ucp_Old_Uyghur},
{Fname_offset: Tuint16_t(2479), Ftype: Tuint16_t(DPT_SCX), Fvalue: ucp_Oriya},
{Fname_offset: Tuint16_t(2485), Ftype: Tuint16_t(DPT_SC), Fvalue: ucp_Old_Turkic},
{Fname_offset: Tuint16_t(2490), Ftype: Tuint16_t(DPT_SCX), Fvalue: ucp_Oriya},
{Fname_offset: Tuint16_t(2495), Ftype: Tuint16_t(DPT_SC), Fvalue: ucp_Osage},
{Fname_offset: Tuint16_t(2501), Ftype: Tuint16_t(DPT_SC), Fvalue: ucp_Osage},
{Fname_offset: Tuint16_t(2506), Ftype: Tuint16_t(DPT_SC), Fvalue: ucp_Osmanya},
{Fname_offset: Tuint16_t(2511), Ftype: Tuint16_t(DPT_SC), Fvalue: ucp_Osmanya},
{Fname_offset: Tuint16_t(2519), Ftype: Tuint16_t(DPT_SCX), Fvalue: ucp_Old_Uyghur},
{Fname_offset: Tuint16_t(2524), Ftype: Tuint16_t(DPT_GC), Fvalue: ucp_P},
{Fname_offset: Tuint16_t(2526), Ftype: Tuint16_t(DPT_SC), Fvalue: ucp_Pahawh_Hmong},
{Fname_offset: Tuint16_t(2538), Ftype: Tuint16_t(DPT_SC), Fvalue: ucp_Palmyrene},
{Fname_offset: Tuint16_t(2543), Ftype: Tuint16_t(DPT_SC), Fvalue: ucp_Palmyrene},
{Fname_offset: Tuint16_t(2553), Ftype: Tuint16_t(DPT_BOOL), Fvalue: ucp_Pattern_Syntax},
{Fname_offset: Tuint16_t(2560), Ftype: Tuint16_t(DPT_BOOL), Fvalue: ucp_Pattern_Syntax},
{Fname_offset: Tuint16_t(2574), Ftype: Tuint16_t(DPT_BOOL), Fvalue: ucp_Pattern_White_Space},
{Fname_offset: Tuint16_t(2592), Ftype: Tuint16_t(DPT_BOOL), Fvalue: ucp_Pattern_White_Space},
{Fname_offset: Tuint16_t(2598), Ftype: Tuint16_t(DPT_SC), Fvalue: ucp_Pau_Cin_Hau},
{Fname_offset: Tuint16_t(2603), Ftype: Tuint16_t(DPT_SC), Fvalue: ucp_Pau_Cin_Hau},
{Fname_offset: Tuint16_t(2613), Ftype: Tuint16_t(DPT_PC), Fvalue: ucp_Pc},
{Fname_offset: Tuint16_t(2616), Ftype: Tuint16_t(DPT_BOOL), Fvalue: ucp_Prepended_Concatenation_Mark},
{Fname_offset: Tuint16_t(2620), Ftype: Tuint16_t(DPT_PC), Fvalue: ucp_Pd},
{Fname_offset: Tuint16_t(2623), Ftype: Tuint16_t(DPT_PC), Fvalue: ucp_Pe},
{Fname_offset: Tuint16_t(2626), Ftype: Tuint16_t(DPT_SCX), Fvalue: ucp_Old_Permic},
{Fname_offset: Tuint16_t(2631), Ftype: Tuint16_t(DPT_PC), Fvalue: ucp_Pf},
{Fname_offset: Tuint16_t(2634), Ftype: Tuint16_t(DPT_SCX), Fvalue: ucp_Phags_Pa},
{Fname_offset: Tuint16_t(2639), Ftype: Tuint16_t(DPT_SCX), Fvalue: ucp_Phags_Pa},
{Fname_offset: Tuint16_t(2647), Ftype: Tuint16_t(DPT_SC), Fvalue: ucp_Inscriptional_Pahlavi},
{Fname_offset: Tuint16_t(2652), Ftype: Tuint16_t(DPT_SCX), Fvalue: ucp_Psalter_Pahlavi},
{Fname_offset: Tuint16_t(2657), Ftype: Tuint16_t(DPT_SC), Fvalue: ucp_Phoenician},
{Fname_offset: Tuint16_t(2662), Ftype: Tuint16_t(DPT_SC), Fvalue: ucp_Phoenician},
{Fname_offset: Tuint16_t(2673), Ftype: Tuint16_t(DPT_PC), Fvalue: ucp_Pi},
{Fname_offset: Tuint16_t(2676), Ftype: Tuint16_t(DPT_SC), Fvalue: ucp_Miao},
{Fname_offset: Tuint16_t(2681), Ftype: Tuint16_t(DPT_PC), Fvalue: ucp_Po},
{Fname_offset: Tuint16_t(2684), Ftype: Tuint16_t(DPT_BOOL), Fvalue: ucp_Prepended_Concatenation_Mark},
{Fname_offset: Tuint16_t(2711), Ftype: Tuint16_t(DPT_SC), Fvalue: ucp_Inscriptional_Parthian},
{Fname_offset: Tuint16_t(2716), Ftype: Tuint16_t(DPT_PC), Fvalue: ucp_Ps},
{Fname_offset: Tuint16_t(2719), Ftype: Tuint16_t(DPT_SCX), Fvalue: ucp_Psalter_Pahlavi},
{Fname_offset: Tuint16_t(2734), Ftype: Tuint16_t(DPT_SCX), Fvalue: ucp_Coptic},
{Fname_offset: Tuint16_t(2739), Ftype: Tuint16_t(DPT_SC), Fvalue: ucp_Inherited},
{Fname_offset: Tuint16_t(2744), Ftype: Tuint16_t(DPT_BOOL), Fvalue: ucp_Quotation_Mark},
{Fname_offset: Tuint16_t(2750), Ftype: Tuint16_t(DPT_BOOL), Fvalue: ucp_Quotation_Mark},
{Fname_offset: Tuint16_t(2764), Ftype: Tuint16_t(DPT_BOOL), Fvalue: ucp_Radical},
{Fname_offset: Tuint16_t(2772), Ftype: Tuint16_t(DPT_BOOL), Fvalue: ucp_Regional_Indicator},
{Fname_offset: Tuint16_t(2790), Ftype: Tuint16_t(DPT_SC), Fvalue: ucp_Rejang},
{Fname_offset: Tuint16_t(2797), Ftype: Tuint16_t(DPT_BOOL), Fvalue: ucp_Regional_Indicator},
{Fname_offset: Tuint16_t(2800), Ftype: Tuint16_t(DPT_SC), Fvalue: ucp_Rejang},
{Fname_offset: Tuint16_t(2805), Ftype: Tuint16_t(DPT_SCX), Fvalue: ucp_Hanifi_Rohingya},
{Fname_offset: Tuint16_t(2810), Ftype: Tuint16_t(DPT_SC), Fvalue: ucp_Runic},
{Fname_offset: Tuint16_t(2816), Ftype: Tuint16_t(DPT_SC), Fvalue: ucp_Runic},
{Fname_offset: Tuint16_t(2821), Ftype: Tuint16_t(DPT_GC), Fvalue: ucp_S},
{Fname_offset: Tuint16_t(2823), Ftype: Tuint16_t(DPT_SC), Fvalue: ucp_Samaritan},
{Fname_offset: Tuint16_t(2833), Ftype: Tuint16_t(DPT_SC), Fvalue: ucp_Samaritan},
{Fname_offset: Tuint16_t(2838), Ftype: Tuint16_t(DPT_SC), Fvalue: ucp_Old_South_Arabian},
{Fname_offset: Tuint16_t(2843), Ftype: Tuint16_t(DPT_SC), Fvalue: ucp_Saurashtra},
{Fname_offset: Tuint16_t(2848), Ftype: Tuint16_t(DPT_SC), Fvalue: ucp_Saurashtra},
{Fname_offset: Tuint16_t(2859), Ftype: Tuint16_t(DPT_PC), Fvalue: ucp_Sc},
{Fname_offset: Tuint16_t(2862), Ftype: Tuint16_t(DPT_BOOL), Fvalue: ucp_Soft_Dotted},
{Fname_offset: Tuint16_t(2865), Ftype: Tuint16_t(DPT_BOOL), Fvalue: ucp_Sentence_Terminal},
{Fname_offset: Tuint16_t(2882), Ftype: Tuint16_t(DPT_SC), Fvalue: ucp_SignWriting},
{Fname_offset: Tuint16_t(2887), Ftype: Tuint16_t(DPT_SCX), Fvalue: ucp_Sharada},
{Fname_offset: Tuint16_t(2895), Ftype: Tuint16_t(DPT_SC), Fvalue: ucp_Shavian},
{Fname_offset: Tuint16_t(2903), Ftype: Tuint16_t(DPT_SC), Fvalue: ucp_Shavian},
{Fname_offset: Tuint16_t(2908), Ftype: Tuint16_t(DPT_SCX), Fvalue: ucp_Sharada},
{Fname_offset: Tuint16_t(2913), Ftype: Tuint16_t(DPT_SC), Fvalue: ucp_Siddham},
{Fname_offset: Tuint16_t(2918), Ftype: Tuint16_t(DPT_SC), Fvalue: ucp_Siddham},
{Fname_offset: Tuint16_t(2926), Ftype: Tuint16_t(DPT_SC), Fvalue: ucp_SignWriting},
{Fname_offset: Tuint16_t(2938), Ftype: Tuint16_t(DPT_SCX), Fvalue: ucp_Khudawadi},
{Fname_offset: Tuint16_t(2943), Ftype: Tuint16_t(DPT_SCX), Fvalue: ucp_Sinhala},
{Fname_offset: Tuint16_t(2948), Ftype: Tuint16_t(DPT_SCX), Fvalue: ucp_Sinhala},
{Fname_offset: Tuint16_t(2956), Ftype: Tuint16_t(DPT_PC), Fvalue: ucp_Sk},
{Fname_offset: Tuint16_t(2959), Ftype: Tuint16_t(DPT_PC), Fvalue: ucp_Sm},
{Fname_offset: Tuint16_t(2962), Ftype: Tuint16_t(DPT_PC), Fvalue: ucp_So},
{Fname_offset: Tuint16_t(2965), Ftype: Tuint16_t(DPT_BOOL), Fvalue: ucp_Soft_Dotted},
{Fname_offset: Tuint16_t(2976), Ftype: Tuint16_t(DPT_SCX), Fvalue: ucp_Sogdian},
{Fname_offset: Tuint16_t(2981), Ftype: Tuint16_t(DPT_SCX), Fvalue: ucp_Sogdian},
{Fname_offset: Tuint16_t(2989), Ftype: Tuint16_t(DPT_SC), Fvalue: ucp_Old_Sogdian},
{Fname_offset: Tuint16_t(2994), Ftype: Tuint16_t(DPT_SC), Fvalue: ucp_Sora_Sompeng},
{Fname_offset: Tuint16_t(2999), Ftype: Tuint16_t(DPT_SC), Fvalue: ucp_Sora_Sompeng},
{Fname_offset: Tuint16_t(3011), Ftype: Tuint16_t(DPT_SC), Fvalue: ucp_Soyombo},
{Fname_offset: Tuint16_t(3016), Ftype: Tuint16_t(DPT_SC), Fvalue: ucp_Soyombo},
{Fname_offset: Tuint16_t(3024), Ftype: Tuint16_t(DPT_BOOL), Fvalue: ucp_White_Space},
{Fname_offset: Tuint16_t(3030), Ftype: Tuint16_t(DPT_BOOL), Fvalue: ucp_Sentence_Terminal},
{Fname_offset: Tuint16_t(3036), Ftype: Tuint16_t(DPT_SC), Fvalue: ucp_Sundanese},
{Fname_offset: Tuint16_t(3041), Ftype: Tuint16_t(DPT_SC), Fvalue: ucp_Sundanese},
{Fname_offset: Tuint16_t(3051), Ftype: Tuint16_t(DPT_SCX), Fvalue: ucp_Syloti_Nagri},
{Fname_offset: Tuint16_t(3056), Ftype: Tuint16_t(DPT_SCX), Fvalue: ucp_Syloti_Nagri},
{Fname_offset: Tuint16_t(3068), Ftype: Tuint16_t(DPT_SCX), Fvalue: ucp_Syriac},
{Fname_offset: Tuint16_t(3073), Ftype: Tuint16_t(DPT_SCX), Fvalue: ucp_Syriac},
{Fname_offset: Tuint16_t(3080), Ftype: Tuint16_t(DPT_SCX), Fvalue: ucp_Tagalog},
{Fname_offset: Tuint16_t(3088), Ftype: Tuint16_t(DPT_SCX), Fvalue: ucp_Tagbanwa},
{Fname_offset: Tuint16_t(3093), Ftype: Tuint16_t(DPT_SCX), Fvalue: ucp_Tagbanwa},
{Fname_offset: Tuint16_t(3102), Ftype: Tuint16_t(DPT_SCX), Fvalue: ucp_Tai_Le},
{Fname_offset: Tuint16_t(3108), Ftype: Tuint16_t(DPT_SC), Fvalue: ucp_Tai_Tham},
{Fname_offset: Tuint16_t(3116), Ftype: Tuint16_t(DPT_SC), Fvalue: ucp_Tai_Viet},
{Fname_offset: Tuint16_t(3124), Ftype: Tuint16_t(DPT_SCX), Fvalue: ucp_Takri},
{Fname_offset: Tuint16_t(3129), Ftype: Tuint16_t(DPT_SCX), Fvalue: ucp_Takri},
{Fname_offset: Tuint16_t(3135), Ftype: Tuint16_t(DPT_SCX), Fvalue: ucp_Tai_Le},
{Fname_offset: Tuint16_t(3140), Ftype: Tuint16_t(DPT_SC), Fvalue: ucp_New_Tai_Lue},
{Fname_offset: Tuint16_t(3145), Ftype: Tuint16_t(DPT_SCX), Fvalue: ucp_Tamil},
{Fname_offset: Tuint16_t(3151), Ftype: Tuint16_t(DPT_SCX), Fvalue: ucp_Tamil},
{Fname_offset: Tuint16_t(3156), Ftype: Tuint16_t(DPT_SC), Fvalue: ucp_Tangut},
{Fname_offset: Tuint16_t(3161), Ftype: Tuint16_t(DPT_SC), Fvalue: ucp_Tangsa},
{Fname_offset: Tuint16_t(3168), Ftype: Tuint16_t(DPT_SC), Fvalue: ucp_Tangut},
{Fname_offset: Tuint16_t(3175), Ftype: Tuint16_t(DPT_SC), Fvalue: ucp_Tai_Viet},
{Fname_offset: Tuint16_t(3180), Ftype: Tuint16_t(DPT_SCX), Fvalue: ucp_Telugu},
{Fname_offset: Tuint16_t(3185), Ftype: Tuint16_t(DPT_SCX), Fvalue: ucp_Telugu},
{Fname_offset: Tuint16_t(3192), Ftype: Tuint16_t(DPT_BOOL), Fvalue: ucp_Terminal_Punctuation},
{Fname_offset: Tuint16_t(3197), Ftype: Tuint16_t(DPT_BOOL), Fvalue: ucp_Terminal_Punctuation},
{Fname_offset: Tuint16_t(3217), Ftype: Tuint16_t(DPT_SC), Fvalue: ucp_Tifinagh},
{Fname_offset: Tuint16_t(3222), Ftype: Tuint16_t(DPT_SCX), Fvalue: ucp_Tagalog},
{Fname_offset: Tuint16_t(3227), Ftype: Tuint16_t(DPT_SCX), Fvalue: ucp_Thaana},
{Fname_offset: Tuint16_t(3232), Ftype: Tuint16_t(DPT_SCX), Fvalue: ucp_Thaana},
{Fname_offset: Tuint16_t(3239), Ftype: Tuint16_t(DPT_SC), Fvalue: ucp_Thai},
{Fname_offset: Tuint16_t(3244), Ftype: Tuint16_t(DPT_SC), Fvalue: ucp_Tibetan},
{Fname_offset: Tuint16_t(3252), Ftype: Tuint16_t(DPT_SC), Fvalue: ucp_Tibetan},
{Fname_offset: Tuint16_t(3257), Ftype: Tuint16_t(DPT_SC), Fvalue: ucp_Tifinagh},
{Fname_offset: Tuint16_t(3266), Ftype: Tuint16_t(DPT_SCX), Fvalue: ucp_Tirhuta},
{Fname_offset: Tuint16_t(3271), Ftype: Tuint16_t(DPT_SCX), Fvalue: ucp_Tirhuta},
{Fname_offset: Tuint16_t(3279), Ftype: Tuint16_t(DPT_SC), Fvalue: ucp_Tangsa},
{Fname_offset: Tuint16_t(3284), Ftype: Tuint16_t(DPT_SC), Fvalue: ucp_Toto},
{Fname_offset: Tuint16_t(3289), Ftype: Tuint16_t(DPT_SC), Fvalue: ucp_Ugaritic},
{Fname_offset: Tuint16_t(3294), Ftype: Tuint16_t(DPT_SC), Fvalue: ucp_Ugaritic},
{Fname_offset: Tuint16_t(3303), Ftype: Tuint16_t(DPT_BOOL), Fvalue: ucp_Unified_Ideograph},
{Fname_offset: Tuint16_t(3309), Ftype: Tuint16_t(DPT_BOOL), Fvalue: ucp_Unified_Ideograph},
{Fname_offset: Tuint16_t(3326), Ftype: Tuint16_t(DPT_SC), Fvalue: ucp_Unknown},
{Fname_offset: Tuint16_t(3334), Ftype: Tuint16_t(DPT_BOOL), Fvalue: ucp_Uppercase},
{Fname_offset: Tuint16_t(3340), Ftype: Tuint16_t(DPT_BOOL), Fvalue: ucp_Uppercase},
{Fname_offset: Tuint16_t(3350), Ftype: Tuint16_t(DPT_SC), Fvalue: ucp_Vai},
{Fname_offset: Tuint16_t(3354), Ftype: Tuint16_t(DPT_SC), Fvalue: ucp_Vai},
{Fname_offset: Tuint16_t(3359), Ftype: Tuint16_t(DPT_BOOL), Fvalue: ucp_Variation_Selector},
{Fname_offset: Tuint16_t(3377), Ftype: Tuint16_t(DPT_SC), Fvalue: ucp_Vithkuqi},
{Fname_offset: Tuint16_t(3382), Ftype: Tuint16_t(DPT_SC), Fvalue: ucp_Vithkuqi},
{Fname_offset: Tuint16_t(3391), Ftype: Tuint16_t(DPT_BOOL), Fvalue: ucp_Variation_Selector},
{Fname_offset: Tuint16_t(3394), Ftype: Tuint16_t(DPT_SC), Fvalue: ucp_Wancho},
{Fname_offset: Tuint16_t(3401), Ftype: Tuint16_t(DPT_SC), Fvalue: ucp_Warang_Citi},
{Fname_offset: Tuint16_t(3406), Ftype: Tuint16_t(DPT_SC), Fvalue: ucp_Warang_Citi},
{Fname_offset: Tuint16_t(3417), Ftype: Tuint16_t(DPT_SC), Fvalue: ucp_Wancho},
{Fname_offset: Tuint16_t(3422), Ftype: Tuint16_t(DPT_BOOL), Fvalue: ucp_White_Space},
{Fname_offset: Tuint16_t(3433), Ftype: Tuint16_t(DPT_BOOL), Fvalue: ucp_White_Space},
{Fname_offset: Tuint16_t(3440), Ftype: Tuint16_t(DPT_ALNUM)},
{Fname_offset: Tuint16_t(3444), Ftype: Tuint16_t(DPT_BOOL), Fvalue: ucp_XID_Continue},
{Fname_offset: Tuint16_t(3449), Ftype: Tuint16_t(DPT_BOOL), Fvalue: ucp_XID_Continue},
{Fname_offset: Tuint16_t(3461), Ftype: Tuint16_t(DPT_BOOL), Fvalue: ucp_XID_Start},
{Fname_offset: Tuint16_t(3466), Ftype: Tuint16_t(DPT_BOOL), Fvalue: ucp_XID_Start},
{Fname_offset: Tuint16_t(3475), Ftype: Tuint16_t(DPT_SC), Fvalue: ucp_Old_Persian},
{Fname_offset: Tuint16_t(3480), Ftype: Tuint16_t(DPT_PXSPACE)},
{Fname_offset: Tuint16_t(3484), Ftype: Tuint16_t(DPT_SPACE)},
{Fname_offset: Tuint16_t(3488), Ftype: Tuint16_t(DPT_SC), Fvalue: ucp_Cuneiform},
{Fname_offset: Tuint16_t(3493), Ftype: Tuint16_t(DPT_UCNC)},
{Fname_offset: Tuint16_t(3497), Ftype: Tuint16_t(DPT_WORD)},
{Fname_offset: Tuint16_t(3501), Ftype: Tuint16_t(DPT_SCX), Fvalue: ucp_Yezidi},
{Fname_offset: Tuint16_t(3506), Ftype: Tuint16_t(DPT_SCX), Fvalue: ucp_Yezidi},
{Fname_offset: Tuint16_t(3513), Ftype: Tuint16_t(DPT_SCX), Fvalue: ucp_Yi},
{Fname_offset: Tuint16_t(3516), Ftype: Tuint16_t(DPT_SCX), Fvalue: ucp_Yi},
{Fname_offset: Tuint16_t(3521), Ftype: Tuint16_t(DPT_GC), Fvalue: ucp_Z},
{Fname_offset: Tuint16_t(3523), Ftype: Tuint16_t(DPT_SC), Fvalue: ucp_Zanabazar_Square},
{Fname_offset: Tuint16_t(3539), Ftype: Tuint16_t(DPT_SC), Fvalue: ucp_Zanabazar_Square},
{Fname_offset: Tuint16_t(3544), Ftype: Tuint16_t(DPT_SC), Fvalue: ucp_Inherited},
{Fname_offset: Tuint16_t(3549), Ftype: Tuint16_t(DPT_PC), Fvalue: ucp_Zl},
{Fname_offset: Tuint16_t(3552), Ftype: Tuint16_t(DPT_PC), Fvalue: ucp_Zp},
{Fname_offset: Tuint16_t(3555), Ftype: Tuint16_t(DPT_PC), Fvalue: ucp_Zs},
{Fname_offset: Tuint16_t(3558), Ftype: Tuint16_t(DPT_SC), Fvalue: ucp_Common},
{Fname_offset: Tuint16_t(3563), Ftype: Tuint16_t(DPT_SC), Fvalue: ucp_Unknown},
} /* pcre2_ucptables.c:1031:22 */
var X_pcre2_utt_size_8 Tsize_t = uint64(unsafe.Sizeof(X_pcre2_utt_8)) / uint64(unsafe.Sizeof(Tucp_type_table{})) /* pcre2_ucptables.c:1520:14 */
// End of pcre2_ucptables.c
// End of pcre2_tables.c
// This function is needed only when memmove() is not available.
// End of pcre2_internal.h
// The tables herein are needed only when UCP support is built, and in PCRE2
// that happens automatically with UTF support. This module should not be
// referenced otherwise, so it should not matter whether it is compiled or not.
// However a comment was received about space saving - maybe the guy linked all
// the modules rather than using a library - so we include a condition to cut out
// the tables when not needed. But don't leave a totally empty module because some
// compilers barf at that. Instead, just supply some small dummy tables.
// Total size: 111116 bytes, block size: 128.
var X_pcre2_unicode_version_8 uintptr = ts + 11252 /* "14.0.0" */ /* pcre2_ucd.c:79:12 */
// When recompiling tables with a new Unicode version, please check the types
// in this structure definition with those in pcre2_internal.h (the actual field
// names will be different).
//
// typedef struct {
// uint8_t property_0;
// uint8_t property_1;
// uint8_t property_2;
// uint8_t property_3;
// int32_t property_4;
// uint16_t property_5;
// uint16_t property_6;
// } ucd_record;
// If the 32-bit library is run in non-32-bit mode, character values greater
// than 0x10ffff may be encountered. For these we set up a special record.
// This table contains lists of characters that are caseless sets of
// more than one character. Each list is terminated by NOTACHAR.
var X_pcre2_ucd_caseless_sets_8 = [112]Tuint32_t{
DNOTACHAR,
Tuint32_t(0x0053), Tuint32_t(0x0073), Tuint32_t(0x017f), DNOTACHAR,
Tuint32_t(0x01c4), Tuint32_t(0x01c5), Tuint32_t(0x01c6), DNOTACHAR,
Tuint32_t(0x01c7), Tuint32_t(0x01c8), Tuint32_t(0x01c9), DNOTACHAR,
Tuint32_t(0x01ca), Tuint32_t(0x01cb), Tuint32_t(0x01cc), DNOTACHAR,
Tuint32_t(0x01f1), Tuint32_t(0x01f2), Tuint32_t(0x01f3), DNOTACHAR,
Tuint32_t(0x0345), Tuint32_t(0x0399), Tuint32_t(0x03b9), Tuint32_t(0x1fbe), DNOTACHAR,
Tuint32_t(0x00b5), Tuint32_t(0x039c), Tuint32_t(0x03bc), DNOTACHAR,
Tuint32_t(0x03a3), Tuint32_t(0x03c2), Tuint32_t(0x03c3), DNOTACHAR,
Tuint32_t(0x0392), Tuint32_t(0x03b2), Tuint32_t(0x03d0), DNOTACHAR,
Tuint32_t(0x0398), Tuint32_t(0x03b8), Tuint32_t(0x03d1), Tuint32_t(0x03f4), DNOTACHAR,
Tuint32_t(0x03a6), Tuint32_t(0x03c6), Tuint32_t(0x03d5), DNOTACHAR,
Tuint32_t(0x03a0), Tuint32_t(0x03c0), Tuint32_t(0x03d6), DNOTACHAR,
Tuint32_t(0x039a), Tuint32_t(0x03ba), Tuint32_t(0x03f0), DNOTACHAR,
Tuint32_t(0x03a1), Tuint32_t(0x03c1), Tuint32_t(0x03f1), DNOTACHAR,
Tuint32_t(0x0395), Tuint32_t(0x03b5), Tuint32_t(0x03f5), DNOTACHAR,
Tuint32_t(0x0412), Tuint32_t(0x0432), Tuint32_t(0x1c80), DNOTACHAR,
Tuint32_t(0x0414), Tuint32_t(0x0434), Tuint32_t(0x1c81), DNOTACHAR,
Tuint32_t(0x041e), Tuint32_t(0x043e), Tuint32_t(0x1c82), DNOTACHAR,
Tuint32_t(0x0421), Tuint32_t(0x0441), Tuint32_t(0x1c83), DNOTACHAR,
Tuint32_t(0x0422), Tuint32_t(0x0442), Tuint32_t(0x1c84), Tuint32_t(0x1c85), DNOTACHAR,
Tuint32_t(0x042a), Tuint32_t(0x044a), Tuint32_t(0x1c86), DNOTACHAR,
Tuint32_t(0x0462), Tuint32_t(0x0463), Tuint32_t(0x1c87), DNOTACHAR,
Tuint32_t(0x1e60), Tuint32_t(0x1e61), Tuint32_t(0x1e9b), DNOTACHAR,
Tuint32_t(0x03a9), Tuint32_t(0x03c9), Tuint32_t(0x2126), DNOTACHAR,
Tuint32_t(0x004b), Tuint32_t(0x006b), Tuint32_t(0x212a), DNOTACHAR,
Tuint32_t(0x00c5), Tuint32_t(0x00e5), Tuint32_t(0x212b), DNOTACHAR,
Tuint32_t(0x1c88), Tuint32_t(0xa64a), Tuint32_t(0xa64b), DNOTACHAR,
} /* pcre2_ucd.c:114:16 */
// When #included in pcre2test, we don't need the table of digit sets, nor the
// the large main UCD tables.
// This table lists the code points for the '9' characters in each set of
// decimal digits. It is used to ensure that all the digits in a script run come
// from the same set.
var X_pcre2_ucd_digit_sets_8 = [67]Tuint32_t{
Tuint32_t(66), // Number of subsequent values
Tuint32_t(0x00039), Tuint32_t(0x00669), Tuint32_t(0x006f9), Tuint32_t(0x007c9), Tuint32_t(0x0096f), Tuint32_t(0x009ef), Tuint32_t(0x00a6f), Tuint32_t(0x00aef),
Tuint32_t(0x00b6f), Tuint32_t(0x00bef), Tuint32_t(0x00c6f), Tuint32_t(0x00cef), Tuint32_t(0x00d6f), Tuint32_t(0x00def), Tuint32_t(0x00e59), Tuint32_t(0x00ed9),
Tuint32_t(0x00f29), Tuint32_t(0x01049), Tuint32_t(0x01099), Tuint32_t(0x017e9), Tuint32_t(0x01819), Tuint32_t(0x0194f), Tuint32_t(0x019d9), Tuint32_t(0x01a89),
Tuint32_t(0x01a99), Tuint32_t(0x01b59), Tuint32_t(0x01bb9), Tuint32_t(0x01c49), Tuint32_t(0x01c59), Tuint32_t(0x0a629), Tuint32_t(0x0a8d9), Tuint32_t(0x0a909),
Tuint32_t(0x0a9d9), Tuint32_t(0x0a9f9), Tuint32_t(0x0aa59), Tuint32_t(0x0abf9), Tuint32_t(0x0ff19), Tuint32_t(0x104a9), Tuint32_t(0x10d39), Tuint32_t(0x1106f),
Tuint32_t(0x110f9), Tuint32_t(0x1113f), Tuint32_t(0x111d9), Tuint32_t(0x112f9), Tuint32_t(0x11459), Tuint32_t(0x114d9), Tuint32_t(0x11659), Tuint32_t(0x116c9),
Tuint32_t(0x11739), Tuint32_t(0x118e9), Tuint32_t(0x11959), Tuint32_t(0x11c59), Tuint32_t(0x11d59), Tuint32_t(0x11da9), Tuint32_t(0x16a69), Tuint32_t(0x16ac9),
Tuint32_t(0x16b59), Tuint32_t(0x1d7d7), Tuint32_t(0x1d7e1), Tuint32_t(0x1d7eb), Tuint32_t(0x1d7f5), Tuint32_t(0x1d7ff), Tuint32_t(0x1e149), Tuint32_t(0x1e2f9),
Tuint32_t(0x1e959), Tuint32_t(0x1fbf9),
} /* pcre2_ucd.c:154:16 */
// This vector is a list of script bitsets for the Script Extension property.
// The number of 32-bit words in each bitset is #defined in pcre2_ucp.h as
// ucd_script_sets_item_size.
var X_pcre2_ucd_script_sets_8 = [189]Tuint32_t{
0x00000000, 0x00000000, 0x00000000,
0x00000080, 0x00000000, 0x00000000,
0x00000040, 0x00000000, 0x00000000,
0x00000000, 0x00004000, 0x00000000,
0x00000002, 0x00000000, 0x00000000,
0x00800000, 0x00000000, 0x00000000,
0x00000001, 0x00000000, 0x00000000,
0x00000000, 0x00000000, 0x00000001,
0x00000010, 0x00000000, 0x00000000,
0x00000008, 0x00000004, 0x00000000,
0x00000008, 0x40000000, 0x00000000,
0x00000008, 0x00000040, 0x00000000,
0x00000018, 0x00000000, 0x00000000,
0x00000028, 0x00000000, 0x00000000,
0x000000c0, 0x00000000, 0x00000000,
0x00c00000, 0x00000000, 0x00000000,
0x00000000, 0x00000102, 0x00000000,
0x80000000, 0x00000001, 0x00000000,
0x00000004, 0x00000008, 0x00000000,
0x00000005, 0x00000000, 0x00000000,
0x00000004, 0x00200000, 0x00000000,
0x00000014, 0x00000000, 0x00000000,
0x00000040, 0x00008000, 0x00000000,
0x00000040, 0x00000000, 0x00000001,
0x00000040, 0x00001000, 0x00000000,
0x00000840, 0x00000000, 0x00000000,
0x00020001, 0x00000000, 0x00000000,
0x00000800, 0x00008000, 0x00000000,
0x00000200, 0x00010000, 0x00000000,
0x00000100, 0x02000000, 0x00000000,
0x00800001, 0x00000000, 0x00000000,
0x00300000, 0x00000000, 0x00000000,
0x00002000, 0x00000000, 0x00000001,
0x00080001, 0x00000000, 0x00000000,
0x00000000, 0x00080000, 0x00000008,
0x00080000, 0x00000020, 0x00000000,
0x00000038, 0x00000000, 0x00000000,
0x00000028, 0x00000000, 0x00000002,
0x00000080, 0x00000810, 0x00000000,
0x40010000, 0x00000800, 0x00000000,
0x80000000, 0x00000001, 0x00000004,
0x80000000, 0x00020001, 0x00000000,
0x00002040, 0x00008000, 0x00000000,
0x00000041, 0x00008000, 0x00000000,
0x00b00000, 0x00000000, 0x00000000,
0x00010001, 0x00000080, 0x00000000,
0x000020c0, 0x00008000, 0x00000000,
0x1e000000, 0x00000000, 0x00000000,
0x00000040, 0x10040200, 0x00000000,
0x00f40000, 0x00000000, 0x00000000,
0x00000038, 0x40000040, 0x00000002,
0x01f40000, 0x00000000, 0x00000000,
0x00007c40, 0x00000000, 0x00000000,
0x00000038, 0x44000040, 0x00000002,
0x000034c0, 0x01008000, 0x00000001,
0x00000018, 0xc4480400, 0x00000008,
0x00000340, 0x11952200, 0x00000000,
0x00007fc1, 0x01008000, 0x00000000,
0x00007fc1, 0x01009000, 0x00000000,
0x00002340, 0x11952200, 0x00000001,
0x00006340, 0x11952200, 0x00000001,
0x0000ffc0, 0x3984a010, 0x00000001,
0x2000ffc0, 0x3984a010, 0x00000001,
} /* pcre2_ucd.c:171:16 */
// This vector is a list of bitsets for Boolean properties. The number of
// 32_bit words in each bitset is #defined as ucd_boolprop_sets_item_size in
// pcre2_ucp.h.
var X_pcre2_ucd_boolprop_sets_8 = [354]Tuint32_t{
0x00000000, 0x00000000,
0x00000001, 0x00000000,
0x00000001, 0x00020040,
0x00800001, 0x00020040,
0x00800001, 0x00002820,
0x00800001, 0x00000120,
0x00830001, 0x00000020,
0x00800001, 0x00000020,
0x00800021, 0x00000120,
0x00800011, 0x00000020,
0x00800001, 0x00000028,
0x00800001, 0x00002020,
0x00801001, 0x00000020,
0x00800021, 0x00002820,
0x24830003, 0x00040000,
0x00800021, 0x00002020,
0x00800011, 0x00000028,
0x648003c7, 0x000c8000,
0x608003c5, 0x000c8000,
0x00808021, 0x00000028,
0x20800001, 0x00040000,
0x00808021, 0x00000020,
0x64800d47, 0x000c0004,
0x60800d45, 0x000c0004,
0x60800d45, 0x000c1004,
0x00000000, 0x00020040,
0x00800000, 0x00020000,
0x00800000, 0x00000020,
0x00808020, 0x00000000,
0x00a10000, 0x00000020,
0x60800044, 0x000c0004,
0x00800010, 0x00000120,
0x00800000, 0x00000028,
0x00002020, 0x00000000,
0x00800000, 0x00000000,
0x60800dc4, 0x000c0004,
0x20c08020, 0x00040000,
0x608003c4, 0x000c8000,
0x60800d44, 0x000c0004,
0x60800d44, 0x000c1004,
0x60804dc4, 0x000c0004,
0x60800004, 0x000c0000,
0x608007c4, 0x000c8000,
0x60800bc4, 0x000c0000,
0x60808064, 0x000c0004,
0x60808064, 0x000c1004,
0x60808024, 0x000c0000,
0x60c08024, 0x000c0000,
0x21008020, 0x00040000,
0x21008de4, 0x00040004,
0x21002020, 0x00040000,
0x21000020, 0x00040000,
0x60808064, 0x00000004,
0x00800000, 0x00002000,
0x20800020, 0x00042000,
0x60800dc4, 0x000c000c,
0x60800044, 0x000c8008,
0x60800044, 0x000c8000,
0x608003c4, 0x000c8008,
0x00800000, 0x00000008,
0x01000020, 0x00000000,
0x00800020, 0x00000000,
0x00800000, 0x00002800,
0x00801000, 0x00000000,
0x21008024, 0x00040000,
0x21000024, 0x00040000,
0x00000020, 0x00000080,
0x00002028, 0x00000000,
0x60c00024, 0x000c0000,
0x20800000, 0x00040000,
0x60804004, 0x000c0000,
0x60800024, 0x000c0000,
0x20800004, 0x00040000,
0x23008020, 0x00040000,
0x21000004, 0x00040000,
0x21408020, 0x00040000,
0x60800004, 0x00040000,
0x23000024, 0x00040000,
0x60800004, 0x000c0002,
0x00800010, 0x00000000,
0x20808000, 0x00040000,
0x21004024, 0x00040000,
0x20808004, 0x00040000,
0x60800944, 0x000c0004,
0x60802004, 0x000c0000,
0x60800344, 0x000c8000,
0x22808000, 0x00040000,
0x22800000, 0x00040000,
0x00c00000, 0x00000000,
0x21002020, 0x00050000,
0x61000024, 0x000c0000,
0x23000020, 0x00040000,
0x01008020, 0x00000000,
0x21408024, 0x00040000,
0x00808000, 0x00000000,
0x60800064, 0x000c0004,
0x60800044, 0x000c1004,
0x60800064, 0x000c1004,
0x01002020, 0x00000001,
0x00022020, 0x00000001,
0x00002028, 0x00000040,
0x00801000, 0x00000020,
0x00800020, 0x00000120,
0x00800000, 0x00000120,
0x00800020, 0x00000020,
0x00a10000, 0x00002820,
0x00800000, 0x00002820,
0x20800000, 0x00040008,
0x00800010, 0x00000020,
0x00002020, 0x00000008,
0x00002000, 0x00000000,
0x00006020, 0x00000000,
0x00801000, 0x00000008,
0x00800010, 0x00000008,
0x21000020, 0x00040008,
0x01020020, 0x00000000,
0x60800044, 0x000c000c,
0x60800000, 0x000c0008,
0x00a10000, 0x00000000,
0x60800000, 0x000c0000,
0x60800004, 0x000c0008,
0x60a10044, 0x000c0004,
0x60800044, 0x000c100c,
0x00a10000, 0x00000028,
0x00800010, 0x00000028,
0x00801000, 0x00000028,
0x00b10000, 0x00000020,
0x00804010, 0x00000020,
0x00a00000, 0x00000020,
0x00000000, 0x00000020,
0x008003c4, 0x00008000,
0x00a103c4, 0x00008000,
0x00800d44, 0x00000004,
0x00b10000, 0x00000028,
0x00a00000, 0x00000028,
0x00a90000, 0x00000020,
0x00b90000, 0x00000020,
0x00808024, 0x00000020,
0x00800000, 0x00002020,
0x00800000, 0x00000200,
0x08800000, 0x00000000,
0x10800000, 0x00000000,
0xe0800004, 0x000c0000,
0x21008000, 0x00040000,
0x00a11000, 0x00000020,
0x60808020, 0x00000000,
0xe0800004, 0x000c4000,
0x60808004, 0x000c0000,
0x60800004, 0x00000000,
0x00000000, 0x00000010,
0x21022020, 0x00050000,
0x00800000, 0x00000100,
0x00800020, 0x00002800,
0x00800020, 0x00002000,
0x00800020, 0x00000100,
0x24800000, 0x00040000,
0x648003c4, 0x000c8000,
0x00808020, 0x00000008,
0x64800d44, 0x000c0004,
0x00800010, 0x00000100,
0x61008024, 0x00040000,
0x00000020, 0x00000000,
0x60c00004, 0x000c0000,
0x21400020, 0x00040000,
0xa1000020, 0x00040000,
0x21000000, 0x00040000,
0x00a00000, 0x00000000,
0x00b10000, 0x00000000,
0x00200000, 0x00000000,
0x00800044, 0x00008000,
0x00a10044, 0x00008000,
0x00930000, 0x00000400,
0x00b90000, 0x00000000,
0x00a90000, 0x00000000,
0x00970020, 0x00000000,
0x00b30000, 0x00000000,
0x01022020, 0x00000000,
} /* pcre2_ucd.c:241:16 */
// These are the main two-stage UCD tables. The fields in each record are:
// script (8 bits), character type (8 bits), grapheme break property (8 bits),
// offset to multichar other cases or zero (8 bits), offset to other case or zero
// (32 bits, signed), bidi class (5 bits) and script extension (11 bits) packed
// into a 16-bit field, and offset in binary properties table (16 bits).
var X_pcre2_ucd_records_8 = [1409]Tucd_record{ // 16908 bytes, record size 12
{Fscript: Tuint8_t(69), Fgbprop: Tuint8_t(2), Fscriptx_bidiclass: Tuint16_t(6144), Fbprops: Tuint16_t(2)}, // 0
{Fscript: Tuint8_t(69), Fgbprop: Tuint8_t(2), Fscriptx_bidiclass: Tuint16_t(43008), Fbprops: Tuint16_t(4)}, // 1
{Fscript: Tuint8_t(69), Fgbprop: Tuint8_t(1), Fscriptx_bidiclass: Tuint16_t(4096), Fbprops: Tuint16_t(4)}, // 2
{Fscript: Tuint8_t(69), Fgbprop: Tuint8_t(2), Fscriptx_bidiclass: Tuint16_t(45056), Fbprops: Tuint16_t(4)}, // 3
{Fscript: Tuint8_t(69), Fscriptx_bidiclass: Tuint16_t(4096), Fbprops: Tuint16_t(4)}, // 4
{Fscript: Tuint8_t(69), Fgbprop: Tuint8_t(2), Fscriptx_bidiclass: Tuint16_t(4096), Fbprops: Tuint16_t(2)}, // 5
{Fscript: Tuint8_t(69), Fgbprop: Tuint8_t(2), Fscriptx_bidiclass: Tuint16_t(43008), Fbprops: Tuint16_t(2)}, // 6
{Fscript: Tuint8_t(69), Fchartype: Tuint8_t(29), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(45056), Fbprops: Tuint16_t(6)}, // 7
{Fscript: Tuint8_t(69), Fchartype: Tuint8_t(21), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(28672), Fbprops: Tuint16_t(8)}, // 8
{Fscript: Tuint8_t(69), Fchartype: Tuint8_t(21), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(28672), Fbprops: Tuint16_t(10)}, // 9
{Fscript: Tuint8_t(69), Fchartype: Tuint8_t(21), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(14336), Fbprops: Tuint16_t(12)}, // 10
{Fscript: Tuint8_t(69), Fchartype: Tuint8_t(23), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(14336), Fbprops: Tuint16_t(14)}, // 11
{Fscript: Tuint8_t(69), Fchartype: Tuint8_t(21), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(14336), Fbprops: Tuint16_t(14)}, // 12
{Fscript: Tuint8_t(69), Fchartype: Tuint8_t(21), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(28672), Fbprops: Tuint16_t(14)}, // 13
{Fscript: Tuint8_t(69), Fchartype: Tuint8_t(21), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(28672), Fbprops: Tuint16_t(16)}, // 14
{Fscript: Tuint8_t(69), Fchartype: Tuint8_t(22), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(28672), Fbprops: Tuint16_t(18)}, // 15
{Fscript: Tuint8_t(69), Fchartype: Tuint8_t(18), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(28672), Fbprops: Tuint16_t(18)}, // 16
{Fscript: Tuint8_t(69), Fchartype: Tuint8_t(21), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(28672), Fbprops: Tuint16_t(12)}, // 17
{Fscript: Tuint8_t(69), Fchartype: Tuint8_t(25), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(12288), Fbprops: Tuint16_t(20)}, // 18
{Fscript: Tuint8_t(69), Fchartype: Tuint8_t(21), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(8192), Fbprops: Tuint16_t(22)}, // 19
{Fscript: Tuint8_t(69), Fchartype: Tuint8_t(17), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(12288), Fbprops: Tuint16_t(24)}, // 20
{Fscript: Tuint8_t(69), Fchartype: Tuint8_t(21), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(8192), Fbprops: Tuint16_t(26)}, // 21
{Fscript: Tuint8_t(69), Fchartype: Tuint8_t(21), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(8192), Fbprops: Tuint16_t(14)}, // 22
{Fscript: Tuint8_t(69), Fchartype: Tuint8_t(13), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(10240), Fbprops: Tuint16_t(28)}, // 23
{Fscript: Tuint8_t(69), Fchartype: Tuint8_t(21), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(8192), Fbprops: Tuint16_t(30)}, // 24
{Fscript: Tuint8_t(69), Fchartype: Tuint8_t(21), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(28672), Fbprops: Tuint16_t(22)}, // 25
{Fscript: Tuint8_t(69), Fchartype: Tuint8_t(25), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(28672), Fbprops: Tuint16_t(32)}, // 26
{Fscript: Tuint8_t(69), Fchartype: Tuint8_t(25), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(28672), Fbprops: Tuint16_t(20)}, // 27
{Fchartype: Tuint8_t(9), Fgbprop: Tuint8_t(12), Fother_case: 32, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(34)}, // 28
{Fchartype: Tuint8_t(9), Fgbprop: Tuint8_t(12), Fother_case: 32, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(36)}, // 29
{Fchartype: Tuint8_t(9), Fgbprop: Tuint8_t(12), Fcaseset: Tuint8_t(100), Fother_case: 32, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(36)}, // 30
{Fchartype: Tuint8_t(9), Fgbprop: Tuint8_t(12), Fcaseset: Tuint8_t(1), Fother_case: 32, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(36)}, // 31
{Fscript: Tuint8_t(69), Fchartype: Tuint8_t(24), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(28672), Fbprops: Tuint16_t(38)}, // 32
{Fscript: Tuint8_t(69), Fchartype: Tuint8_t(16), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(28672), Fbprops: Tuint16_t(40)}, // 33
{Fscript: Tuint8_t(69), Fchartype: Tuint8_t(24), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(28672), Fbprops: Tuint16_t(42)}, // 34
{Fchartype: Tuint8_t(5), Fgbprop: Tuint8_t(12), Fother_case: -32, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(44)}, // 35
{Fchartype: Tuint8_t(5), Fgbprop: Tuint8_t(12), Fother_case: -32, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(46)}, // 36
{Fchartype: Tuint8_t(5), Fgbprop: Tuint8_t(12), Fother_case: -32, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(48)}, // 37
{Fchartype: Tuint8_t(5), Fgbprop: Tuint8_t(12), Fcaseset: Tuint8_t(100), Fother_case: -32, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(46)}, // 38
{Fchartype: Tuint8_t(5), Fgbprop: Tuint8_t(12), Fcaseset: Tuint8_t(1), Fother_case: -32, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(46)}, // 39
{Fscript: Tuint8_t(69), Fgbprop: Tuint8_t(2), Fscriptx_bidiclass: Tuint16_t(6144)}, // 40
{Fscript: Tuint8_t(69), Fgbprop: Tuint8_t(2), Fscriptx_bidiclass: Tuint16_t(4096), Fbprops: Tuint16_t(50)}, // 41
{Fscript: Tuint8_t(69), Fchartype: Tuint8_t(29), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(8192), Fbprops: Tuint16_t(52)}, // 42
{Fscript: Tuint8_t(69), Fchartype: Tuint8_t(21), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(28672), Fbprops: Tuint16_t(54)}, // 43
{Fscript: Tuint8_t(69), Fchartype: Tuint8_t(23), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(14336), Fbprops: Tuint16_t(54)}, // 44
{Fscript: Tuint8_t(69), Fchartype: Tuint8_t(26), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(28672), Fbprops: Tuint16_t(54)}, // 45
{Fscript: Tuint8_t(69), Fchartype: Tuint8_t(24), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(28672), Fbprops: Tuint16_t(56)}, // 46
{Fscript: Tuint8_t(69), Fchartype: Tuint8_t(26), Fgbprop: Tuint8_t(14), Fscriptx_bidiclass: Tuint16_t(28672), Fbprops: Tuint16_t(58)}, // 47
{Fchartype: Tuint8_t(7), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(60)}, // 48
{Fscript: Tuint8_t(69), Fchartype: Tuint8_t(20), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(28672), Fbprops: Tuint16_t(62)}, // 49
{Fscript: Tuint8_t(69), Fchartype: Tuint8_t(25), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(28672), Fbprops: Tuint16_t(64)}, // 50
{Fscript: Tuint8_t(69), Fchartype: Tuint8_t(1), Fgbprop: Tuint8_t(2), Fscriptx_bidiclass: Tuint16_t(6144), Fbprops: Tuint16_t(66)}, // 51
{Fscript: Tuint8_t(69), Fchartype: Tuint8_t(26), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(14336), Fbprops: Tuint16_t(54)}, // 52
{Fscript: Tuint8_t(69), Fchartype: Tuint8_t(25), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(14336), Fbprops: Tuint16_t(64)}, // 53
{Fscript: Tuint8_t(69), Fchartype: Tuint8_t(15), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(10240), Fbprops: Tuint16_t(68)}, // 54
{Fscript: Tuint8_t(69), Fchartype: Tuint8_t(5), Fgbprop: Tuint8_t(12), Fcaseset: Tuint8_t(26), Fother_case: 775, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(70)}, // 55
{Fscript: Tuint8_t(69), Fchartype: Tuint8_t(21), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(28672), Fbprops: Tuint16_t(72)}, // 56
{Fscript: Tuint8_t(69), Fchartype: Tuint8_t(19), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(28672), Fbprops: Tuint16_t(62)}, // 57
{Fscript: Tuint8_t(69), Fchartype: Tuint8_t(15), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(28672), Fbprops: Tuint16_t(68)}, // 58
{Fchartype: Tuint8_t(9), Fgbprop: Tuint8_t(12), Fother_case: 32, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(74)}, // 59
{Fchartype: Tuint8_t(9), Fgbprop: Tuint8_t(12), Fcaseset: Tuint8_t(104), Fother_case: 32, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(74)}, // 60
{Fchartype: Tuint8_t(5), Fgbprop: Tuint8_t(12), Fother_case: 7615, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(70)}, // 61
{Fchartype: Tuint8_t(5), Fgbprop: Tuint8_t(12), Fother_case: -32, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(76)}, // 62
{Fchartype: Tuint8_t(5), Fgbprop: Tuint8_t(12), Fcaseset: Tuint8_t(104), Fother_case: -32, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(76)}, // 63
{Fchartype: Tuint8_t(5), Fgbprop: Tuint8_t(12), Fother_case: 121, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(76)}, // 64
{Fchartype: Tuint8_t(9), Fgbprop: Tuint8_t(12), Fother_case: 1, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(74)}, // 65
{Fchartype: Tuint8_t(5), Fgbprop: Tuint8_t(12), Fother_case: -1, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(76)}, // 66
{Fchartype: Tuint8_t(5), Fgbprop: Tuint8_t(12), Fother_case: -1, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(78)}, // 67
{Fchartype: Tuint8_t(9), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(74)}, // 68
{Fchartype: Tuint8_t(5), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(76)}, // 69
{Fchartype: Tuint8_t(5), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(60)}, // 70
{Fchartype: Tuint8_t(5), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(80)}, // 71
{Fchartype: Tuint8_t(9), Fgbprop: Tuint8_t(12), Fother_case: -121, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(74)}, // 72
{Fchartype: Tuint8_t(5), Fgbprop: Tuint8_t(12), Fcaseset: Tuint8_t(1), Fother_case: -268, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(70)}, // 73
{Fchartype: Tuint8_t(5), Fgbprop: Tuint8_t(12), Fother_case: 195, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(76)}, // 74
{Fchartype: Tuint8_t(9), Fgbprop: Tuint8_t(12), Fother_case: 210, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(74)}, // 75
{Fchartype: Tuint8_t(9), Fgbprop: Tuint8_t(12), Fother_case: 206, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(74)}, // 76
{Fchartype: Tuint8_t(9), Fgbprop: Tuint8_t(12), Fother_case: 205, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(74)}, // 77
{Fchartype: Tuint8_t(9), Fgbprop: Tuint8_t(12), Fother_case: 79, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(74)}, // 78
{Fchartype: Tuint8_t(9), Fgbprop: Tuint8_t(12), Fother_case: 202, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(74)}, // 79
{Fchartype: Tuint8_t(9), Fgbprop: Tuint8_t(12), Fother_case: 203, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(74)}, // 80
{Fchartype: Tuint8_t(9), Fgbprop: Tuint8_t(12), Fother_case: 207, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(74)}, // 81
{Fchartype: Tuint8_t(5), Fgbprop: Tuint8_t(12), Fother_case: 97, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(76)}, // 82
{Fchartype: Tuint8_t(9), Fgbprop: Tuint8_t(12), Fother_case: 211, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(74)}, // 83
{Fchartype: Tuint8_t(9), Fgbprop: Tuint8_t(12), Fother_case: 209, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(74)}, // 84
{Fchartype: Tuint8_t(5), Fgbprop: Tuint8_t(12), Fother_case: 163, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(76)}, // 85
{Fchartype: Tuint8_t(9), Fgbprop: Tuint8_t(12), Fother_case: 213, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(74)}, // 86
{Fchartype: Tuint8_t(5), Fgbprop: Tuint8_t(12), Fother_case: 130, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(76)}, // 87
{Fchartype: Tuint8_t(9), Fgbprop: Tuint8_t(12), Fother_case: 214, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(74)}, // 88
{Fchartype: Tuint8_t(9), Fgbprop: Tuint8_t(12), Fother_case: 218, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(74)}, // 89
{Fchartype: Tuint8_t(9), Fgbprop: Tuint8_t(12), Fother_case: 217, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(74)}, // 90
{Fchartype: Tuint8_t(9), Fgbprop: Tuint8_t(12), Fother_case: 219, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(74)}, // 91
{Fchartype: Tuint8_t(7), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(82)}, // 92
{Fchartype: Tuint8_t(5), Fgbprop: Tuint8_t(12), Fother_case: 56, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(76)}, // 93
{Fchartype: Tuint8_t(9), Fgbprop: Tuint8_t(12), Fcaseset: Tuint8_t(5), Fother_case: 2, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(84)}, // 94
{Fchartype: Tuint8_t(8), Fgbprop: Tuint8_t(12), Fcaseset: Tuint8_t(5), Fother_case: 1, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(86)}, // 95
{Fchartype: Tuint8_t(5), Fgbprop: Tuint8_t(12), Fcaseset: Tuint8_t(5), Fother_case: -2, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(76)}, // 96
{Fchartype: Tuint8_t(9), Fgbprop: Tuint8_t(12), Fcaseset: Tuint8_t(9), Fother_case: 2, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(84)}, // 97
{Fchartype: Tuint8_t(8), Fgbprop: Tuint8_t(12), Fcaseset: Tuint8_t(9), Fother_case: 1, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(86)}, // 98
{Fchartype: Tuint8_t(5), Fgbprop: Tuint8_t(12), Fcaseset: Tuint8_t(9), Fother_case: -2, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(76)}, // 99
{Fchartype: Tuint8_t(9), Fgbprop: Tuint8_t(12), Fcaseset: Tuint8_t(13), Fother_case: 2, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(84)}, // 100
{Fchartype: Tuint8_t(8), Fgbprop: Tuint8_t(12), Fcaseset: Tuint8_t(13), Fother_case: 1, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(86)}, // 101
{Fchartype: Tuint8_t(5), Fgbprop: Tuint8_t(12), Fcaseset: Tuint8_t(13), Fother_case: -2, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(76)}, // 102
{Fchartype: Tuint8_t(5), Fgbprop: Tuint8_t(12), Fother_case: -79, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(76)}, // 103
{Fchartype: Tuint8_t(9), Fgbprop: Tuint8_t(12), Fcaseset: Tuint8_t(17), Fother_case: 2, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(84)}, // 104
{Fchartype: Tuint8_t(8), Fgbprop: Tuint8_t(12), Fcaseset: Tuint8_t(17), Fother_case: 1, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(86)}, // 105
{Fchartype: Tuint8_t(5), Fgbprop: Tuint8_t(12), Fcaseset: Tuint8_t(17), Fother_case: -2, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(76)}, // 106
{Fchartype: Tuint8_t(9), Fgbprop: Tuint8_t(12), Fother_case: -97, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(74)}, // 107
{Fchartype: Tuint8_t(9), Fgbprop: Tuint8_t(12), Fother_case: -56, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(74)}, // 108
{Fchartype: Tuint8_t(9), Fgbprop: Tuint8_t(12), Fother_case: -130, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(74)}, // 109
{Fchartype: Tuint8_t(9), Fgbprop: Tuint8_t(12), Fother_case: 10795, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(74)}, // 110
{Fchartype: Tuint8_t(9), Fgbprop: Tuint8_t(12), Fother_case: -163, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(74)}, // 111
{Fchartype: Tuint8_t(9), Fgbprop: Tuint8_t(12), Fother_case: 10792, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(74)}, // 112
{Fchartype: Tuint8_t(5), Fgbprop: Tuint8_t(12), Fother_case: 10815, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(76)}, // 113
{Fchartype: Tuint8_t(9), Fgbprop: Tuint8_t(12), Fother_case: -195, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(74)}, // 114
{Fchartype: Tuint8_t(9), Fgbprop: Tuint8_t(12), Fother_case: 69, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(74)}, // 115
{Fchartype: Tuint8_t(9), Fgbprop: Tuint8_t(12), Fother_case: 71, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(74)}, // 116
{Fchartype: Tuint8_t(5), Fgbprop: Tuint8_t(12), Fother_case: 10783, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(76)}, // 117
{Fchartype: Tuint8_t(5), Fgbprop: Tuint8_t(12), Fother_case: 10780, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(76)}, // 118
{Fchartype: Tuint8_t(5), Fgbprop: Tuint8_t(12), Fother_case: 10782, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(76)}, // 119
{Fchartype: Tuint8_t(5), Fgbprop: Tuint8_t(12), Fother_case: -210, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(76)}, // 120
{Fchartype: Tuint8_t(5), Fgbprop: Tuint8_t(12), Fother_case: -206, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(76)}, // 121
{Fchartype: Tuint8_t(5), Fgbprop: Tuint8_t(12), Fother_case: -205, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(76)}, // 122
{Fchartype: Tuint8_t(5), Fgbprop: Tuint8_t(12), Fother_case: -202, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(76)}, // 123
{Fchartype: Tuint8_t(5), Fgbprop: Tuint8_t(12), Fother_case: -203, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(76)}, // 124
{Fchartype: Tuint8_t(5), Fgbprop: Tuint8_t(12), Fother_case: 42319, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(76)}, // 125
{Fchartype: Tuint8_t(5), Fgbprop: Tuint8_t(12), Fother_case: 42315, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(76)}, // 126
{Fchartype: Tuint8_t(5), Fgbprop: Tuint8_t(12), Fother_case: -207, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(76)}, // 127
{Fchartype: Tuint8_t(5), Fgbprop: Tuint8_t(12), Fother_case: 42280, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(76)}, // 128
{Fchartype: Tuint8_t(5), Fgbprop: Tuint8_t(12), Fother_case: 42308, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(76)}, // 129
{Fchartype: Tuint8_t(5), Fgbprop: Tuint8_t(12), Fother_case: -209, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(78)}, // 130
{Fchartype: Tuint8_t(5), Fgbprop: Tuint8_t(12), Fother_case: -211, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(76)}, // 131
{Fchartype: Tuint8_t(5), Fgbprop: Tuint8_t(12), Fother_case: 10743, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(76)}, // 132
{Fchartype: Tuint8_t(5), Fgbprop: Tuint8_t(12), Fother_case: 42305, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(76)}, // 133
{Fchartype: Tuint8_t(5), Fgbprop: Tuint8_t(12), Fother_case: 10749, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(76)}, // 134
{Fchartype: Tuint8_t(5), Fgbprop: Tuint8_t(12), Fother_case: -213, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(76)}, // 135
{Fchartype: Tuint8_t(5), Fgbprop: Tuint8_t(12), Fother_case: -214, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(76)}, // 136
{Fchartype: Tuint8_t(5), Fgbprop: Tuint8_t(12), Fother_case: 10727, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(76)}, // 137
{Fchartype: Tuint8_t(5), Fgbprop: Tuint8_t(12), Fother_case: -218, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(76)}, // 138
{Fchartype: Tuint8_t(5), Fgbprop: Tuint8_t(12), Fother_case: 42307, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(76)}, // 139
{Fchartype: Tuint8_t(5), Fgbprop: Tuint8_t(12), Fother_case: 42282, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(76)}, // 140
{Fchartype: Tuint8_t(5), Fgbprop: Tuint8_t(12), Fother_case: -69, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(76)}, // 141
{Fchartype: Tuint8_t(5), Fgbprop: Tuint8_t(12), Fother_case: -217, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(76)}, // 142
{Fchartype: Tuint8_t(5), Fgbprop: Tuint8_t(12), Fother_case: -71, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(76)}, // 143
{Fchartype: Tuint8_t(5), Fgbprop: Tuint8_t(12), Fother_case: -219, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(76)}, // 144
{Fchartype: Tuint8_t(5), Fgbprop: Tuint8_t(12), Fother_case: 42261, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(78)}, // 145
{Fchartype: Tuint8_t(5), Fgbprop: Tuint8_t(12), Fother_case: 42258, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(76)}, // 146
{Fchartype: Tuint8_t(6), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(88)}, // 147
{Fchartype: Tuint8_t(6), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(90)}, // 148
{Fscript: Tuint8_t(69), Fchartype: Tuint8_t(6), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(28672), Fbprops: Tuint16_t(92)}, // 149
{Fscript: Tuint8_t(69), Fchartype: Tuint8_t(6), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(92)}, // 150
{Fscript: Tuint8_t(69), Fchartype: Tuint8_t(6), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(88)}, // 151
{Fscript: Tuint8_t(69), Fchartype: Tuint8_t(6), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(94)}, // 152
{Fscript: Tuint8_t(22), Fchartype: Tuint8_t(24), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(28672), Fbprops: Tuint16_t(56)}, // 153
{Fscript: Tuint8_t(84), Fchartype: Tuint8_t(12), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(26624), Fbprops: Tuint16_t(96)}, // 154
{Fscript: Tuint8_t(84), Fchartype: Tuint8_t(12), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(26636), Fbprops: Tuint16_t(96)}, // 155
{Fscript: Tuint8_t(84), Fchartype: Tuint8_t(12), Fgbprop: Tuint8_t(3), Fcaseset: Tuint8_t(21), Fother_case: 116, Fscriptx_bidiclass: Tuint16_t(26636), Fbprops: Tuint16_t(98)}, // 156
{Fscript: Tuint8_t(84), Fchartype: Tuint8_t(12), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(26624), Fbprops: Tuint16_t(100)}, // 157
{Fscript: Tuint8_t(84), Fchartype: Tuint8_t(12), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(26624), Fbprops: Tuint16_t(102)}, // 158
{Fscript: Tuint8_t(84), Fchartype: Tuint8_t(12), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(26642), Fbprops: Tuint16_t(102)}, // 159
{Fscript: Tuint8_t(1), Fchartype: Tuint8_t(9), Fgbprop: Tuint8_t(12), Fother_case: 1, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(74)}, // 160
{Fscript: Tuint8_t(1), Fchartype: Tuint8_t(5), Fgbprop: Tuint8_t(12), Fother_case: -1, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(76)}, // 161
{Fscript: Tuint8_t(1), Fchartype: Tuint8_t(24), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(28672), Fbprops: Tuint16_t(56)}, // 162
{Fscript: Tuint8_t(68), Fchartype: Tuint8_t(2), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432)}, // 163
{Fscript: Tuint8_t(1), Fchartype: Tuint8_t(6), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(104)}, // 164
{Fscript: Tuint8_t(1), Fchartype: Tuint8_t(5), Fgbprop: Tuint8_t(12), Fother_case: 130, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(76)}, // 165
{Fscript: Tuint8_t(69), Fchartype: Tuint8_t(21), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(28672), Fbprops: Tuint16_t(106)}, // 166
{Fscript: Tuint8_t(1), Fchartype: Tuint8_t(9), Fgbprop: Tuint8_t(12), Fother_case: 116, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(74)}, // 167
{Fscript: Tuint8_t(1), Fchartype: Tuint8_t(9), Fgbprop: Tuint8_t(12), Fother_case: 38, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(74)}, // 168
{Fscript: Tuint8_t(69), Fchartype: Tuint8_t(21), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(28672), Fbprops: Tuint16_t(108)}, // 169
{Fscript: Tuint8_t(1), Fchartype: Tuint8_t(9), Fgbprop: Tuint8_t(12), Fother_case: 37, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(74)}, // 170
{Fscript: Tuint8_t(1), Fchartype: Tuint8_t(9), Fgbprop: Tuint8_t(12), Fother_case: 64, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(74)}, // 171
{Fscript: Tuint8_t(1), Fchartype: Tuint8_t(9), Fgbprop: Tuint8_t(12), Fother_case: 63, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(74)}, // 172
{Fscript: Tuint8_t(1), Fchartype: Tuint8_t(5), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(76)}, // 173
{Fscript: Tuint8_t(1), Fchartype: Tuint8_t(9), Fgbprop: Tuint8_t(12), Fother_case: 32, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(74)}, // 174
{Fscript: Tuint8_t(1), Fchartype: Tuint8_t(9), Fgbprop: Tuint8_t(12), Fcaseset: Tuint8_t(34), Fother_case: 32, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(74)}, // 175
{Fscript: Tuint8_t(1), Fchartype: Tuint8_t(9), Fgbprop: Tuint8_t(12), Fcaseset: Tuint8_t(59), Fother_case: 32, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(74)}, // 176
{Fscript: Tuint8_t(1), Fchartype: Tuint8_t(9), Fgbprop: Tuint8_t(12), Fcaseset: Tuint8_t(38), Fother_case: 32, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(74)}, // 177
{Fscript: Tuint8_t(1), Fchartype: Tuint8_t(9), Fgbprop: Tuint8_t(12), Fcaseset: Tuint8_t(21), Fother_case: 32, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(74)}, // 178
{Fscript: Tuint8_t(1), Fchartype: Tuint8_t(9), Fgbprop: Tuint8_t(12), Fcaseset: Tuint8_t(51), Fother_case: 32, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(74)}, // 179
{Fscript: Tuint8_t(1), Fchartype: Tuint8_t(9), Fgbprop: Tuint8_t(12), Fcaseset: Tuint8_t(26), Fother_case: 32, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(74)}, // 180
{Fscript: Tuint8_t(1), Fchartype: Tuint8_t(9), Fgbprop: Tuint8_t(12), Fcaseset: Tuint8_t(47), Fother_case: 32, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(74)}, // 181
{Fscript: Tuint8_t(1), Fchartype: Tuint8_t(9), Fgbprop: Tuint8_t(12), Fcaseset: Tuint8_t(55), Fother_case: 32, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(74)}, // 182
{Fscript: Tuint8_t(1), Fchartype: Tuint8_t(9), Fgbprop: Tuint8_t(12), Fcaseset: Tuint8_t(30), Fother_case: 32, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(74)}, // 183
{Fscript: Tuint8_t(1), Fchartype: Tuint8_t(9), Fgbprop: Tuint8_t(12), Fcaseset: Tuint8_t(43), Fother_case: 32, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(74)}, // 184
{Fscript: Tuint8_t(1), Fchartype: Tuint8_t(9), Fgbprop: Tuint8_t(12), Fcaseset: Tuint8_t(96), Fother_case: 32, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(74)}, // 185
{Fscript: Tuint8_t(1), Fchartype: Tuint8_t(5), Fgbprop: Tuint8_t(12), Fother_case: -38, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(76)}, // 186
{Fscript: Tuint8_t(1), Fchartype: Tuint8_t(5), Fgbprop: Tuint8_t(12), Fother_case: -37, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(76)}, // 187
{Fscript: Tuint8_t(1), Fchartype: Tuint8_t(5), Fgbprop: Tuint8_t(12), Fother_case: -32, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(76)}, // 188
{Fscript: Tuint8_t(1), Fchartype: Tuint8_t(5), Fgbprop: Tuint8_t(12), Fcaseset: Tuint8_t(34), Fother_case: -32, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(76)}, // 189
{Fscript: Tuint8_t(1), Fchartype: Tuint8_t(5), Fgbprop: Tuint8_t(12), Fcaseset: Tuint8_t(59), Fother_case: -32, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(76)}, // 190
{Fscript: Tuint8_t(1), Fchartype: Tuint8_t(5), Fgbprop: Tuint8_t(12), Fcaseset: Tuint8_t(38), Fother_case: -32, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(76)}, // 191
{Fscript: Tuint8_t(1), Fchartype: Tuint8_t(5), Fgbprop: Tuint8_t(12), Fcaseset: Tuint8_t(21), Fother_case: -116, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(76)}, // 192
{Fscript: Tuint8_t(1), Fchartype: Tuint8_t(5), Fgbprop: Tuint8_t(12), Fcaseset: Tuint8_t(51), Fother_case: -32, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(76)}, // 193
{Fscript: Tuint8_t(1), Fchartype: Tuint8_t(5), Fgbprop: Tuint8_t(12), Fcaseset: Tuint8_t(26), Fother_case: -775, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(76)}, // 194
{Fscript: Tuint8_t(1), Fchartype: Tuint8_t(5), Fgbprop: Tuint8_t(12), Fcaseset: Tuint8_t(47), Fother_case: -32, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(76)}, // 195
{Fscript: Tuint8_t(1), Fchartype: Tuint8_t(5), Fgbprop: Tuint8_t(12), Fcaseset: Tuint8_t(55), Fother_case: -32, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(76)}, // 196
{Fscript: Tuint8_t(1), Fchartype: Tuint8_t(5), Fgbprop: Tuint8_t(12), Fcaseset: Tuint8_t(30), Fother_case: 1, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(70)}, // 197
{Fscript: Tuint8_t(1), Fchartype: Tuint8_t(5), Fgbprop: Tuint8_t(12), Fcaseset: Tuint8_t(30), Fother_case: -32, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(76)}, // 198
{Fscript: Tuint8_t(1), Fchartype: Tuint8_t(5), Fgbprop: Tuint8_t(12), Fcaseset: Tuint8_t(43), Fother_case: -32, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(76)}, // 199
{Fscript: Tuint8_t(1), Fchartype: Tuint8_t(5), Fgbprop: Tuint8_t(12), Fcaseset: Tuint8_t(96), Fother_case: -32, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(76)}, // 200
{Fscript: Tuint8_t(1), Fchartype: Tuint8_t(5), Fgbprop: Tuint8_t(12), Fother_case: -64, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(76)}, // 201
{Fscript: Tuint8_t(1), Fchartype: Tuint8_t(5), Fgbprop: Tuint8_t(12), Fother_case: -63, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(76)}, // 202
{Fscript: Tuint8_t(1), Fchartype: Tuint8_t(9), Fgbprop: Tuint8_t(12), Fother_case: 8, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(74)}, // 203
{Fscript: Tuint8_t(1), Fchartype: Tuint8_t(5), Fgbprop: Tuint8_t(12), Fcaseset: Tuint8_t(34), Fother_case: -30, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(110)}, // 204
{Fscript: Tuint8_t(1), Fchartype: Tuint8_t(5), Fgbprop: Tuint8_t(12), Fcaseset: Tuint8_t(38), Fother_case: -25, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(110)}, // 205
{Fscript: Tuint8_t(1), Fchartype: Tuint8_t(9), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(112)}, // 206
{Fscript: Tuint8_t(1), Fchartype: Tuint8_t(9), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(114)}, // 207
{Fscript: Tuint8_t(1), Fchartype: Tuint8_t(5), Fgbprop: Tuint8_t(12), Fcaseset: Tuint8_t(43), Fother_case: -15, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(110)}, // 208
{Fscript: Tuint8_t(1), Fchartype: Tuint8_t(5), Fgbprop: Tuint8_t(12), Fcaseset: Tuint8_t(47), Fother_case: -22, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(70)}, // 209
{Fscript: Tuint8_t(1), Fchartype: Tuint8_t(5), Fgbprop: Tuint8_t(12), Fother_case: -8, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(76)}, // 210
{Fscript: Tuint8_t(34), Fchartype: Tuint8_t(9), Fgbprop: Tuint8_t(12), Fother_case: 1, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(74)}, // 211
{Fscript: Tuint8_t(34), Fchartype: Tuint8_t(5), Fgbprop: Tuint8_t(12), Fother_case: -1, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(76)}, // 212
{Fscript: Tuint8_t(1), Fchartype: Tuint8_t(5), Fgbprop: Tuint8_t(12), Fcaseset: Tuint8_t(51), Fother_case: -54, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(110)}, // 213
{Fscript: Tuint8_t(1), Fchartype: Tuint8_t(5), Fgbprop: Tuint8_t(12), Fcaseset: Tuint8_t(55), Fother_case: -48, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(110)}, // 214
{Fscript: Tuint8_t(1), Fchartype: Tuint8_t(5), Fgbprop: Tuint8_t(12), Fother_case: 7, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(76)}, // 215
{Fscript: Tuint8_t(1), Fchartype: Tuint8_t(5), Fgbprop: Tuint8_t(12), Fother_case: -116, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(78)}, // 216
{Fscript: Tuint8_t(1), Fchartype: Tuint8_t(9), Fgbprop: Tuint8_t(12), Fcaseset: Tuint8_t(38), Fother_case: -60, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(116)}, // 217
{Fscript: Tuint8_t(1), Fchartype: Tuint8_t(5), Fgbprop: Tuint8_t(12), Fcaseset: Tuint8_t(59), Fother_case: -64, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(110)}, // 218
{Fscript: Tuint8_t(1), Fchartype: Tuint8_t(25), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(28672), Fbprops: Tuint16_t(118)}, // 219
{Fscript: Tuint8_t(1), Fchartype: Tuint8_t(9), Fgbprop: Tuint8_t(12), Fother_case: -7, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(74)}, // 220
{Fscript: Tuint8_t(1), Fchartype: Tuint8_t(5), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(60)}, // 221
{Fscript: Tuint8_t(1), Fchartype: Tuint8_t(9), Fgbprop: Tuint8_t(12), Fother_case: -130, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(74)}, // 222
{Fscript: Tuint8_t(2), Fchartype: Tuint8_t(9), Fgbprop: Tuint8_t(12), Fother_case: 80, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(74)}, // 223
{Fscript: Tuint8_t(2), Fchartype: Tuint8_t(9), Fgbprop: Tuint8_t(12), Fother_case: 32, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(74)}, // 224
{Fscript: Tuint8_t(2), Fchartype: Tuint8_t(9), Fgbprop: Tuint8_t(12), Fcaseset: Tuint8_t(63), Fother_case: 32, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(74)}, // 225
{Fscript: Tuint8_t(2), Fchartype: Tuint8_t(9), Fgbprop: Tuint8_t(12), Fcaseset: Tuint8_t(67), Fother_case: 32, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(74)}, // 226
{Fscript: Tuint8_t(2), Fchartype: Tuint8_t(9), Fgbprop: Tuint8_t(12), Fcaseset: Tuint8_t(71), Fother_case: 32, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(74)}, // 227
{Fscript: Tuint8_t(2), Fchartype: Tuint8_t(9), Fgbprop: Tuint8_t(12), Fcaseset: Tuint8_t(75), Fother_case: 32, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(74)}, // 228
{Fscript: Tuint8_t(2), Fchartype: Tuint8_t(9), Fgbprop: Tuint8_t(12), Fcaseset: Tuint8_t(79), Fother_case: 32, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(74)}, // 229
{Fscript: Tuint8_t(2), Fchartype: Tuint8_t(9), Fgbprop: Tuint8_t(12), Fcaseset: Tuint8_t(84), Fother_case: 32, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(74)}, // 230
{Fscript: Tuint8_t(2), Fchartype: Tuint8_t(5), Fgbprop: Tuint8_t(12), Fother_case: -32, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(76)}, // 231
{Fscript: Tuint8_t(2), Fchartype: Tuint8_t(5), Fgbprop: Tuint8_t(12), Fcaseset: Tuint8_t(63), Fother_case: -32, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(76)}, // 232
{Fscript: Tuint8_t(2), Fchartype: Tuint8_t(5), Fgbprop: Tuint8_t(12), Fcaseset: Tuint8_t(67), Fother_case: -32, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(76)}, // 233
{Fscript: Tuint8_t(2), Fchartype: Tuint8_t(5), Fgbprop: Tuint8_t(12), Fcaseset: Tuint8_t(71), Fother_case: -32, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(76)}, // 234
{Fscript: Tuint8_t(2), Fchartype: Tuint8_t(5), Fgbprop: Tuint8_t(12), Fcaseset: Tuint8_t(75), Fother_case: -32, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(76)}, // 235
{Fscript: Tuint8_t(2), Fchartype: Tuint8_t(5), Fgbprop: Tuint8_t(12), Fcaseset: Tuint8_t(79), Fother_case: -32, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(76)}, // 236
{Fscript: Tuint8_t(2), Fchartype: Tuint8_t(5), Fgbprop: Tuint8_t(12), Fcaseset: Tuint8_t(84), Fother_case: -32, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(76)}, // 237
{Fscript: Tuint8_t(2), Fchartype: Tuint8_t(5), Fgbprop: Tuint8_t(12), Fother_case: -80, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(76)}, // 238
{Fscript: Tuint8_t(2), Fchartype: Tuint8_t(5), Fgbprop: Tuint8_t(12), Fother_case: -80, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(78)}, // 239
{Fscript: Tuint8_t(2), Fchartype: Tuint8_t(9), Fgbprop: Tuint8_t(12), Fother_case: 1, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(74)}, // 240
{Fscript: Tuint8_t(2), Fchartype: Tuint8_t(5), Fgbprop: Tuint8_t(12), Fother_case: -1, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(76)}, // 241
{Fscript: Tuint8_t(2), Fchartype: Tuint8_t(9), Fgbprop: Tuint8_t(12), Fcaseset: Tuint8_t(88), Fother_case: 1, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(74)}, // 242
{Fscript: Tuint8_t(2), Fchartype: Tuint8_t(5), Fgbprop: Tuint8_t(12), Fcaseset: Tuint8_t(88), Fother_case: -1, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(76)}, // 243
{Fscript: Tuint8_t(2), Fchartype: Tuint8_t(26), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(68)}, // 244
{Fscript: Tuint8_t(2), Fchartype: Tuint8_t(12), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(26684), Fbprops: Tuint16_t(96)}, // 245
{Fscript: Tuint8_t(2), Fchartype: Tuint8_t(12), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(26678), Fbprops: Tuint16_t(96)}, // 246
{Fscript: Tuint8_t(84), Fchartype: Tuint8_t(12), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(26681), Fbprops: Tuint16_t(96)}, // 247
{Fscript: Tuint8_t(2), Fchartype: Tuint8_t(11), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(26624), Fbprops: Tuint16_t(120)}, // 248
{Fscript: Tuint8_t(2), Fchartype: Tuint8_t(9), Fgbprop: Tuint8_t(12), Fother_case: 15, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(74)}, // 249
{Fscript: Tuint8_t(2), Fchartype: Tuint8_t(5), Fgbprop: Tuint8_t(12), Fother_case: -15, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(76)}, // 250
{Fscript: Tuint8_t(70), Fchartype: Tuint8_t(9), Fgbprop: Tuint8_t(12), Fother_case: 48, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(74)}, // 251
{Fscript: Tuint8_t(70), Fchartype: Tuint8_t(6), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(92)}, // 252
{Fscript: Tuint8_t(70), Fchartype: Tuint8_t(21), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(68)}, // 253
{Fscript: Tuint8_t(70), Fchartype: Tuint8_t(21), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(122)}, // 254
{Fscript: Tuint8_t(70), Fchartype: Tuint8_t(5), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(60)}, // 255
{Fscript: Tuint8_t(70), Fchartype: Tuint8_t(5), Fgbprop: Tuint8_t(12), Fother_case: -48, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(76)}, // 256
{Fscript: Tuint8_t(70), Fchartype: Tuint8_t(5), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(70)}, // 257
{Fscript: Tuint8_t(70), Fchartype: Tuint8_t(21), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(124)}, // 258
{Fscript: Tuint8_t(70), Fchartype: Tuint8_t(17), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(28672), Fbprops: Tuint16_t(126)}, // 259
{Fscript: Tuint8_t(70), Fchartype: Tuint8_t(26), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(28672), Fbprops: Tuint16_t(68)}, // 260
{Fscript: Tuint8_t(70), Fchartype: Tuint8_t(23), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(14336), Fbprops: Tuint16_t(68)}, // 261
{Fscript: Tuint8_t(68), Fchartype: Tuint8_t(2), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(34816)}, // 262
{Fscript: Tuint8_t(71), Fchartype: Tuint8_t(12), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(26624), Fbprops: Tuint16_t(96)}, // 263
{Fscript: Tuint8_t(71), Fchartype: Tuint8_t(12), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(26624), Fbprops: Tuint16_t(102)}, // 264
{Fscript: Tuint8_t(71), Fchartype: Tuint8_t(12), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(26624), Fbprops: Tuint16_t(128)}, // 265
{Fscript: Tuint8_t(71), Fchartype: Tuint8_t(17), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(34816), Fbprops: Tuint16_t(126)}, // 266
{Fscript: Tuint8_t(71), Fchartype: Tuint8_t(21), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(34816), Fbprops: Tuint16_t(68)}, // 267
{Fscript: Tuint8_t(71), Fchartype: Tuint8_t(21), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(34816), Fbprops: Tuint16_t(106)}, // 268
{Fscript: Tuint8_t(71), Fchartype: Tuint8_t(12), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(26624), Fbprops: Tuint16_t(130)}, // 269
{Fscript: Tuint8_t(71), Fchartype: Tuint8_t(7), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(34816), Fbprops: Tuint16_t(82)}, // 270
{Fscript: Tuint8_t(71), Fchartype: Tuint8_t(21), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(34816), Fbprops: Tuint16_t(122)}, // 271
{Fscript: Tuint8_t(3), Fchartype: Tuint8_t(1), Fgbprop: Tuint8_t(4), Fscriptx_bidiclass: Tuint16_t(2048), Fbprops: Tuint16_t(132)}, // 272
{Fscript: Tuint8_t(69), Fchartype: Tuint8_t(1), Fgbprop: Tuint8_t(4), Fscriptx_bidiclass: Tuint16_t(2048), Fbprops: Tuint16_t(132)}, // 273
{Fscript: Tuint8_t(3), Fchartype: Tuint8_t(25), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(28672), Fbprops: Tuint16_t(118)}, // 274
{Fscript: Tuint8_t(3), Fchartype: Tuint8_t(25), Fgbprop: Tuint8_t(12), Fbprops: Tuint16_t(118)}, // 275
{Fscript: Tuint8_t(3), Fchartype: Tuint8_t(21), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(14336), Fbprops: Tuint16_t(68)}, // 276
{Fscript: Tuint8_t(3), Fchartype: Tuint8_t(23), Fgbprop: Tuint8_t(12), Fbprops: Tuint16_t(68)}, // 277
{Fscript: Tuint8_t(69), Fchartype: Tuint8_t(21), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(8342), Fbprops: Tuint16_t(106)}, // 278
{Fscript: Tuint8_t(3), Fchartype: Tuint8_t(21), Fgbprop: Tuint8_t(12), Fbprops: Tuint16_t(68)}, // 279
{Fscript: Tuint8_t(3), Fchartype: Tuint8_t(26), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(28672), Fbprops: Tuint16_t(68)}, // 280
{Fscript: Tuint8_t(3), Fchartype: Tuint8_t(12), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(26624), Fbprops: Tuint16_t(130)}, // 281
{Fscript: Tuint8_t(69), Fchartype: Tuint8_t(21), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(150), Fbprops: Tuint16_t(106)}, // 282
{Fscript: Tuint8_t(3), Fchartype: Tuint8_t(1), Fgbprop: Tuint8_t(2), Fscriptx_bidiclass: Tuint16_t(108), Fbprops: Tuint16_t(134)}, // 283
{Fscript: Tuint8_t(3), Fchartype: Tuint8_t(21), Fgbprop: Tuint8_t(12), Fbprops: Tuint16_t(124)}, // 284
{Fscript: Tuint8_t(69), Fchartype: Tuint8_t(21), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(159), Fbprops: Tuint16_t(124)}, // 285
{Fscript: Tuint8_t(3), Fchartype: Tuint8_t(7), Fgbprop: Tuint8_t(12), Fbprops: Tuint16_t(82)}, // 286
{Fscript: Tuint8_t(69), Fchartype: Tuint8_t(6), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(165), Fbprops: Tuint16_t(136)}, // 287
{Fscript: Tuint8_t(84), Fchartype: Tuint8_t(12), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(26660), Fbprops: Tuint16_t(128)}, // 288
{Fscript: Tuint8_t(84), Fchartype: Tuint8_t(12), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(26660), Fbprops: Tuint16_t(130)}, // 289
{Fscript: Tuint8_t(3), Fchartype: Tuint8_t(12), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(26624), Fbprops: Tuint16_t(128)}, // 290
{Fscript: Tuint8_t(3), Fchartype: Tuint8_t(12), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(26624), Fbprops: Tuint16_t(96)}, // 291
{Fscript: Tuint8_t(3), Fchartype: Tuint8_t(13), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(2159), Fbprops: Tuint16_t(138)}, // 292
{Fscript: Tuint8_t(3), Fchartype: Tuint8_t(21), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(2048), Fbprops: Tuint16_t(68)}, // 293
{Fscript: Tuint8_t(3), Fchartype: Tuint8_t(7), Fgbprop: Tuint8_t(12), Fbprops: Tuint16_t(140)}, // 294
{Fscript: Tuint8_t(3), Fchartype: Tuint8_t(21), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(30), Fbprops: Tuint16_t(124)}, // 295
{Fscript: Tuint8_t(3), Fchartype: Tuint8_t(6), Fgbprop: Tuint8_t(12), Fbprops: Tuint16_t(92)}, // 296
{Fscript: Tuint8_t(3), Fchartype: Tuint8_t(13), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(10240), Fbprops: Tuint16_t(138)}, // 297
{Fscript: Tuint8_t(3), Fchartype: Tuint8_t(26), Fgbprop: Tuint8_t(12), Fbprops: Tuint16_t(68)}, // 298
{Fscript: Tuint8_t(4), Fchartype: Tuint8_t(21), Fgbprop: Tuint8_t(12), Fbprops: Tuint16_t(124)}, // 299
{Fscript: Tuint8_t(4), Fchartype: Tuint8_t(21), Fgbprop: Tuint8_t(12), Fbprops: Tuint16_t(106)}, // 300
{Fscript: Tuint8_t(4), Fchartype: Tuint8_t(21), Fgbprop: Tuint8_t(12), Fbprops: Tuint16_t(68)}, // 301
{Fscript: Tuint8_t(68), Fchartype: Tuint8_t(2), Fgbprop: Tuint8_t(12)}, // 302
{Fscript: Tuint8_t(4), Fchartype: Tuint8_t(1), Fgbprop: Tuint8_t(4), Fbprops: Tuint16_t(132)}, // 303
{Fscript: Tuint8_t(4), Fchartype: Tuint8_t(7), Fgbprop: Tuint8_t(12), Fbprops: Tuint16_t(82)}, // 304
{Fscript: Tuint8_t(4), Fchartype: Tuint8_t(12), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(26624), Fbprops: Tuint16_t(130)}, // 305
{Fscript: Tuint8_t(4), Fchartype: Tuint8_t(12), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(26624), Fbprops: Tuint16_t(128)}, // 306
{Fscript: Tuint8_t(4), Fchartype: Tuint8_t(12), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(26624), Fbprops: Tuint16_t(96)}, // 307
{Fscript: Tuint8_t(5), Fchartype: Tuint8_t(7), Fgbprop: Tuint8_t(12), Fbprops: Tuint16_t(82)}, // 308
{Fscript: Tuint8_t(5), Fchartype: Tuint8_t(12), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(26624), Fbprops: Tuint16_t(128)}, // 309
{Fscript: Tuint8_t(38), Fchartype: Tuint8_t(13), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(34816), Fbprops: Tuint16_t(138)}, // 310
{Fscript: Tuint8_t(38), Fchartype: Tuint8_t(7), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(34816), Fbprops: Tuint16_t(82)}, // 311
{Fscript: Tuint8_t(38), Fchartype: Tuint8_t(12), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(26624), Fbprops: Tuint16_t(96)}, // 312
{Fscript: Tuint8_t(38), Fchartype: Tuint8_t(6), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(34816), Fbprops: Tuint16_t(92)}, // 313
{Fscript: Tuint8_t(38), Fchartype: Tuint8_t(26), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(28672), Fbprops: Tuint16_t(68)}, // 314
{Fscript: Tuint8_t(38), Fchartype: Tuint8_t(21), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(28672), Fbprops: Tuint16_t(68)}, // 315
{Fscript: Tuint8_t(38), Fchartype: Tuint8_t(21), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(28672), Fbprops: Tuint16_t(106)}, // 316
{Fscript: Tuint8_t(38), Fchartype: Tuint8_t(21), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(28672), Fbprops: Tuint16_t(124)}, // 317
{Fscript: Tuint8_t(38), Fchartype: Tuint8_t(6), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(34816), Fbprops: Tuint16_t(136)}, // 318
{Fscript: Tuint8_t(38), Fchartype: Tuint8_t(12), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(26624), Fbprops: Tuint16_t(102)}, // 319
{Fscript: Tuint8_t(38), Fchartype: Tuint8_t(23), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(34816), Fbprops: Tuint16_t(68)}, // 320
{Fscript: Tuint8_t(110), Fchartype: Tuint8_t(7), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(34816), Fbprops: Tuint16_t(82)}, // 321
{Fscript: Tuint8_t(110), Fchartype: Tuint8_t(12), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(26624), Fbprops: Tuint16_t(130)}, // 322
{Fscript: Tuint8_t(110), Fchartype: Tuint8_t(12), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(26624), Fbprops: Tuint16_t(96)}, // 323
{Fscript: Tuint8_t(110), Fchartype: Tuint8_t(6), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(34816), Fbprops: Tuint16_t(142)}, // 324
{Fscript: Tuint8_t(110), Fchartype: Tuint8_t(12), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(26624), Fbprops: Tuint16_t(102)}, // 325
{Fscript: Tuint8_t(110), Fchartype: Tuint8_t(21), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(34816), Fbprops: Tuint16_t(106)}, // 326
{Fscript: Tuint8_t(110), Fchartype: Tuint8_t(21), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(34816), Fbprops: Tuint16_t(124)}, // 327
{Fscript: Tuint8_t(42), Fchartype: Tuint8_t(7), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(34816), Fbprops: Tuint16_t(82)}, // 328
{Fscript: Tuint8_t(42), Fchartype: Tuint8_t(12), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(26624), Fbprops: Tuint16_t(102)}, // 329
{Fscript: Tuint8_t(42), Fchartype: Tuint8_t(21), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(34816), Fbprops: Tuint16_t(106)}, // 330
{Fscript: Tuint8_t(3), Fchartype: Tuint8_t(24), Fgbprop: Tuint8_t(12), Fbprops: Tuint16_t(122)}, // 331
{Fscript: Tuint8_t(3), Fchartype: Tuint8_t(12), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(26624), Fbprops: Tuint16_t(102)}, // 332
{Fscript: Tuint8_t(6), Fchartype: Tuint8_t(12), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(26624), Fbprops: Tuint16_t(130)}, // 333
{Fscript: Tuint8_t(6), Fchartype: Tuint8_t(10), Fgbprop: Tuint8_t(5), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(144)}, // 334
{Fscript: Tuint8_t(6), Fchartype: Tuint8_t(7), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(82)}, // 335
{Fscript: Tuint8_t(6), Fchartype: Tuint8_t(12), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(26624), Fbprops: Tuint16_t(96)}, // 336
{Fscript: Tuint8_t(6), Fchartype: Tuint8_t(12), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(26624), Fbprops: Tuint16_t(146)}, // 337
{Fscript: Tuint8_t(84), Fchartype: Tuint8_t(12), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(26798), Fbprops: Tuint16_t(96)}, // 338
{Fscript: Tuint8_t(84), Fchartype: Tuint8_t(12), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(26795), Fbprops: Tuint16_t(96)}, // 339
{Fscript: Tuint8_t(69), Fchartype: Tuint8_t(21), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18615), Fbprops: Tuint16_t(124)}, // 340
{Fscript: Tuint8_t(69), Fchartype: Tuint8_t(21), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18618), Fbprops: Tuint16_t(124)}, // 341
{Fscript: Tuint8_t(6), Fchartype: Tuint8_t(13), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18576), Fbprops: Tuint16_t(138)}, // 342
{Fscript: Tuint8_t(6), Fchartype: Tuint8_t(21), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(68)}, // 343
{Fscript: Tuint8_t(6), Fchartype: Tuint8_t(6), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(92)}, // 344
{Fscript: Tuint8_t(7), Fchartype: Tuint8_t(7), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(82)}, // 345
{Fscript: Tuint8_t(7), Fchartype: Tuint8_t(12), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(26624), Fbprops: Tuint16_t(130)}, // 346
{Fscript: Tuint8_t(7), Fchartype: Tuint8_t(10), Fgbprop: Tuint8_t(5), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(144)}, // 347
{Fscript: Tuint8_t(7), Fchartype: Tuint8_t(12), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(26624), Fbprops: Tuint16_t(96)}, // 348
{Fscript: Tuint8_t(7), Fchartype: Tuint8_t(10), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(148)}, // 349
{Fscript: Tuint8_t(7), Fchartype: Tuint8_t(12), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(26624), Fbprops: Tuint16_t(146)}, // 350
{Fscript: Tuint8_t(7), Fchartype: Tuint8_t(13), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18546), Fbprops: Tuint16_t(138)}, // 351
{Fscript: Tuint8_t(7), Fchartype: Tuint8_t(23), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(14336), Fbprops: Tuint16_t(68)}, // 352
{Fscript: Tuint8_t(7), Fchartype: Tuint8_t(15), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(68)}, // 353
{Fscript: Tuint8_t(7), Fchartype: Tuint8_t(26), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(68)}, // 354
{Fscript: Tuint8_t(7), Fchartype: Tuint8_t(21), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(68)}, // 355
{Fscript: Tuint8_t(7), Fchartype: Tuint8_t(12), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(26624), Fbprops: Tuint16_t(102)}, // 356
{Fscript: Tuint8_t(8), Fchartype: Tuint8_t(12), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(26624), Fbprops: Tuint16_t(130)}, // 357
{Fscript: Tuint8_t(8), Fchartype: Tuint8_t(10), Fgbprop: Tuint8_t(5), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(144)}, // 358
{Fscript: Tuint8_t(8), Fchartype: Tuint8_t(7), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(82)}, // 359
{Fscript: Tuint8_t(8), Fchartype: Tuint8_t(12), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(26624), Fbprops: Tuint16_t(96)}, // 360
{Fscript: Tuint8_t(8), Fchartype: Tuint8_t(12), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(26624), Fbprops: Tuint16_t(146)}, // 361
{Fscript: Tuint8_t(8), Fchartype: Tuint8_t(13), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18519), Fbprops: Tuint16_t(138)}, // 362
{Fscript: Tuint8_t(8), Fchartype: Tuint8_t(21), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(68)}, // 363
{Fscript: Tuint8_t(9), Fchartype: Tuint8_t(12), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(26624), Fbprops: Tuint16_t(130)}, // 364
{Fscript: Tuint8_t(9), Fchartype: Tuint8_t(10), Fgbprop: Tuint8_t(5), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(144)}, // 365
{Fscript: Tuint8_t(9), Fchartype: Tuint8_t(7), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(82)}, // 366
{Fscript: Tuint8_t(9), Fchartype: Tuint8_t(12), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(26624), Fbprops: Tuint16_t(96)}, // 367
{Fscript: Tuint8_t(9), Fchartype: Tuint8_t(12), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(26624), Fbprops: Tuint16_t(146)}, // 368
{Fscript: Tuint8_t(9), Fchartype: Tuint8_t(13), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18516), Fbprops: Tuint16_t(138)}, // 369
{Fscript: Tuint8_t(9), Fchartype: Tuint8_t(21), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(68)}, // 370
{Fscript: Tuint8_t(9), Fchartype: Tuint8_t(23), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(14336), Fbprops: Tuint16_t(68)}, // 371
{Fscript: Tuint8_t(10), Fchartype: Tuint8_t(12), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(26624), Fbprops: Tuint16_t(130)}, // 372
{Fscript: Tuint8_t(10), Fchartype: Tuint8_t(10), Fgbprop: Tuint8_t(5), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(144)}, // 373
{Fscript: Tuint8_t(10), Fchartype: Tuint8_t(7), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(82)}, // 374
{Fscript: Tuint8_t(10), Fchartype: Tuint8_t(12), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(26624), Fbprops: Tuint16_t(96)}, // 375
{Fscript: Tuint8_t(10), Fchartype: Tuint8_t(10), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(148)}, // 376
{Fscript: Tuint8_t(10), Fchartype: Tuint8_t(12), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(26624), Fbprops: Tuint16_t(146)}, // 377
{Fscript: Tuint8_t(10), Fchartype: Tuint8_t(12), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(26624), Fbprops: Tuint16_t(150)}, // 378
{Fscript: Tuint8_t(10), Fchartype: Tuint8_t(13), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(138)}, // 379
{Fscript: Tuint8_t(10), Fchartype: Tuint8_t(26), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(68)}, // 380
{Fscript: Tuint8_t(10), Fchartype: Tuint8_t(15), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(68)}, // 381
{Fscript: Tuint8_t(11), Fchartype: Tuint8_t(12), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(26624), Fbprops: Tuint16_t(130)}, // 382
{Fscript: Tuint8_t(11), Fchartype: Tuint8_t(7), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(82)}, // 383
{Fscript: Tuint8_t(11), Fchartype: Tuint8_t(10), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(148)}, // 384
{Fscript: Tuint8_t(11), Fchartype: Tuint8_t(10), Fgbprop: Tuint8_t(5), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(144)}, // 385
{Fscript: Tuint8_t(11), Fchartype: Tuint8_t(12), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(26624), Fbprops: Tuint16_t(146)}, // 386
{Fscript: Tuint8_t(11), Fchartype: Tuint8_t(13), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18513), Fbprops: Tuint16_t(138)}, // 387
{Fscript: Tuint8_t(11), Fchartype: Tuint8_t(15), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18513), Fbprops: Tuint16_t(68)}, // 388
{Fscript: Tuint8_t(11), Fchartype: Tuint8_t(26), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(28753), Fbprops: Tuint16_t(68)}, // 389
{Fscript: Tuint8_t(11), Fchartype: Tuint8_t(26), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(28672), Fbprops: Tuint16_t(68)}, // 390
{Fscript: Tuint8_t(11), Fchartype: Tuint8_t(23), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(14336), Fbprops: Tuint16_t(68)}, // 391
{Fscript: Tuint8_t(12), Fchartype: Tuint8_t(12), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(26624), Fbprops: Tuint16_t(130)}, // 392
{Fscript: Tuint8_t(12), Fchartype: Tuint8_t(10), Fgbprop: Tuint8_t(5), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(144)}, // 393
{Fscript: Tuint8_t(12), Fchartype: Tuint8_t(12), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(26624), Fbprops: Tuint16_t(102)}, // 394
{Fscript: Tuint8_t(12), Fchartype: Tuint8_t(7), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(82)}, // 395
{Fscript: Tuint8_t(12), Fchartype: Tuint8_t(12), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(26624), Fbprops: Tuint16_t(96)}, // 396
{Fscript: Tuint8_t(12), Fchartype: Tuint8_t(12), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(26624), Fbprops: Tuint16_t(146)}, // 397
{Fscript: Tuint8_t(12), Fchartype: Tuint8_t(13), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(138)}, // 398
{Fscript: Tuint8_t(12), Fchartype: Tuint8_t(21), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(68)}, // 399
{Fscript: Tuint8_t(12), Fchartype: Tuint8_t(15), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(28672), Fbprops: Tuint16_t(68)}, // 400
{Fscript: Tuint8_t(12), Fchartype: Tuint8_t(26), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(68)}, // 401
{Fscript: Tuint8_t(13), Fchartype: Tuint8_t(7), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(82)}, // 402
{Fscript: Tuint8_t(13), Fchartype: Tuint8_t(12), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(26624), Fbprops: Tuint16_t(130)}, // 403
{Fscript: Tuint8_t(13), Fchartype: Tuint8_t(10), Fgbprop: Tuint8_t(5), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(144)}, // 404
{Fscript: Tuint8_t(13), Fchartype: Tuint8_t(21), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(68)}, // 405
{Fscript: Tuint8_t(13), Fchartype: Tuint8_t(12), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(26624), Fbprops: Tuint16_t(96)}, // 406
{Fscript: Tuint8_t(13), Fchartype: Tuint8_t(12), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(130)}, // 407
{Fscript: Tuint8_t(13), Fchartype: Tuint8_t(10), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(148)}, // 408
{Fscript: Tuint8_t(13), Fchartype: Tuint8_t(12), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(26624), Fbprops: Tuint16_t(146)}, // 409
{Fscript: Tuint8_t(13), Fchartype: Tuint8_t(13), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18528), Fbprops: Tuint16_t(138)}, // 410
{Fscript: Tuint8_t(14), Fchartype: Tuint8_t(12), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(26624), Fbprops: Tuint16_t(130)}, // 411
{Fscript: Tuint8_t(14), Fchartype: Tuint8_t(10), Fgbprop: Tuint8_t(5), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(144)}, // 412
{Fscript: Tuint8_t(14), Fchartype: Tuint8_t(7), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(82)}, // 413
{Fscript: Tuint8_t(14), Fchartype: Tuint8_t(12), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(26624), Fbprops: Tuint16_t(146)}, // 414
{Fscript: Tuint8_t(14), Fchartype: Tuint8_t(10), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(148)}, // 415
{Fscript: Tuint8_t(14), Fchartype: Tuint8_t(7), Fgbprop: Tuint8_t(4), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(82)}, // 416
{Fscript: Tuint8_t(14), Fchartype: Tuint8_t(26), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(68)}, // 417
{Fscript: Tuint8_t(14), Fchartype: Tuint8_t(15), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(68)}, // 418
{Fscript: Tuint8_t(14), Fchartype: Tuint8_t(13), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(138)}, // 419
{Fscript: Tuint8_t(15), Fchartype: Tuint8_t(12), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(26624), Fbprops: Tuint16_t(130)}, // 420
{Fscript: Tuint8_t(15), Fchartype: Tuint8_t(10), Fgbprop: Tuint8_t(5), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(144)}, // 421
{Fscript: Tuint8_t(15), Fchartype: Tuint8_t(7), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(82)}, // 422
{Fscript: Tuint8_t(15), Fchartype: Tuint8_t(12), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(26624), Fbprops: Tuint16_t(146)}, // 423
{Fscript: Tuint8_t(15), Fchartype: Tuint8_t(10), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(148)}, // 424
{Fscript: Tuint8_t(15), Fchartype: Tuint8_t(13), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(138)}, // 425
{Fscript: Tuint8_t(15), Fchartype: Tuint8_t(21), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(68)}, // 426
{Fscript: Tuint8_t(72), Fchartype: Tuint8_t(7), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(82)}, // 427
{Fscript: Tuint8_t(72), Fchartype: Tuint8_t(12), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(26624), Fbprops: Tuint16_t(130)}, // 428
{Fscript: Tuint8_t(72), Fchartype: Tuint8_t(7), Fgbprop: Tuint8_t(5), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(152)}, // 429
{Fscript: Tuint8_t(72), Fchartype: Tuint8_t(12), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(26624), Fbprops: Tuint16_t(154)}, // 430
{Fscript: Tuint8_t(69), Fchartype: Tuint8_t(23), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(14336), Fbprops: Tuint16_t(68)}, // 431
{Fscript: Tuint8_t(72), Fchartype: Tuint8_t(7), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(156)}, // 432
{Fscript: Tuint8_t(72), Fchartype: Tuint8_t(6), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(136)}, // 433
{Fscript: Tuint8_t(72), Fchartype: Tuint8_t(12), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(26624), Fbprops: Tuint16_t(96)}, // 434
{Fscript: Tuint8_t(72), Fchartype: Tuint8_t(21), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(68)}, // 435
{Fscript: Tuint8_t(72), Fchartype: Tuint8_t(13), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(138)}, // 436
{Fscript: Tuint8_t(72), Fchartype: Tuint8_t(21), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(106)}, // 437
{Fscript: Tuint8_t(73), Fchartype: Tuint8_t(7), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(82)}, // 438
{Fscript: Tuint8_t(73), Fchartype: Tuint8_t(12), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(26624), Fbprops: Tuint16_t(130)}, // 439
{Fscript: Tuint8_t(73), Fchartype: Tuint8_t(7), Fgbprop: Tuint8_t(5), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(152)}, // 440
{Fscript: Tuint8_t(73), Fchartype: Tuint8_t(12), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(26624), Fbprops: Tuint16_t(146)}, // 441
{Fscript: Tuint8_t(73), Fchartype: Tuint8_t(7), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(156)}, // 442
{Fscript: Tuint8_t(73), Fchartype: Tuint8_t(6), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(136)}, // 443
{Fscript: Tuint8_t(73), Fchartype: Tuint8_t(12), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(26624), Fbprops: Tuint16_t(96)}, // 444
{Fscript: Tuint8_t(73), Fchartype: Tuint8_t(13), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(138)}, // 445
{Fscript: Tuint8_t(74), Fchartype: Tuint8_t(7), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(82)}, // 446
{Fscript: Tuint8_t(74), Fchartype: Tuint8_t(26), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(68)}, // 447
{Fscript: Tuint8_t(74), Fchartype: Tuint8_t(21), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(68)}, // 448
{Fscript: Tuint8_t(74), Fchartype: Tuint8_t(21), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(106)}, // 449
{Fscript: Tuint8_t(74), Fchartype: Tuint8_t(12), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(26624), Fbprops: Tuint16_t(96)}, // 450
{Fscript: Tuint8_t(74), Fchartype: Tuint8_t(13), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(138)}, // 451
{Fscript: Tuint8_t(74), Fchartype: Tuint8_t(15), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(68)}, // 452
{Fscript: Tuint8_t(74), Fchartype: Tuint8_t(22), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(28672), Fbprops: Tuint16_t(158)}, // 453
{Fscript: Tuint8_t(74), Fchartype: Tuint8_t(18), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(28672), Fbprops: Tuint16_t(158)}, // 454
{Fscript: Tuint8_t(74), Fchartype: Tuint8_t(10), Fgbprop: Tuint8_t(5), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(160)}, // 455
{Fscript: Tuint8_t(74), Fchartype: Tuint8_t(12), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(26624), Fbprops: Tuint16_t(130)}, // 456
{Fscript: Tuint8_t(74), Fchartype: Tuint8_t(12), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(26624), Fbprops: Tuint16_t(162)}, // 457
{Fscript: Tuint8_t(74), Fchartype: Tuint8_t(10), Fgbprop: Tuint8_t(5), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(144)}, // 458
{Fscript: Tuint8_t(74), Fchartype: Tuint8_t(12), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(26624), Fbprops: Tuint16_t(146)}, // 459
{Fscript: Tuint8_t(69), Fchartype: Tuint8_t(26), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(68)}, // 460
{Fscript: Tuint8_t(16), Fchartype: Tuint8_t(7), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(82)}, // 461
{Fscript: Tuint8_t(16), Fchartype: Tuint8_t(10), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(144)}, // 462
{Fscript: Tuint8_t(16), Fchartype: Tuint8_t(12), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(26624), Fbprops: Tuint16_t(130)}, // 463
{Fscript: Tuint8_t(16), Fchartype: Tuint8_t(10), Fgbprop: Tuint8_t(5), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(144)}, // 464
{Fscript: Tuint8_t(16), Fchartype: Tuint8_t(12), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(26624), Fbprops: Tuint16_t(96)}, // 465
{Fscript: Tuint8_t(16), Fchartype: Tuint8_t(12), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(26624), Fbprops: Tuint16_t(146)}, // 466
{Fscript: Tuint8_t(16), Fchartype: Tuint8_t(13), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18549), Fbprops: Tuint16_t(138)}, // 467
{Fscript: Tuint8_t(16), Fchartype: Tuint8_t(21), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(124)}, // 468
{Fscript: Tuint8_t(16), Fchartype: Tuint8_t(21), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(68)}, // 469
{Fscript: Tuint8_t(16), Fchartype: Tuint8_t(10), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(164)}, // 470
{Fscript: Tuint8_t(16), Fchartype: Tuint8_t(12), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(26624), Fbprops: Tuint16_t(128)}, // 471
{Fscript: Tuint8_t(16), Fchartype: Tuint8_t(13), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(138)}, // 472
{Fscript: Tuint8_t(16), Fchartype: Tuint8_t(26), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(68)}, // 473
{Fscript: Tuint8_t(17), Fchartype: Tuint8_t(9), Fgbprop: Tuint8_t(12), Fother_case: 7264, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(74)}, // 474
{Fscript: Tuint8_t(17), Fchartype: Tuint8_t(5), Fgbprop: Tuint8_t(12), Fother_case: 3008, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(166)}, // 475
{Fscript: Tuint8_t(69), Fchartype: Tuint8_t(21), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18510), Fbprops: Tuint16_t(68)}, // 476
{Fscript: Tuint8_t(17), Fchartype: Tuint8_t(6), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(142)}, // 477
{Fscript: Tuint8_t(18), Fchartype: Tuint8_t(7), Fgbprop: Tuint8_t(6), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(82)}, // 478
{Fscript: Tuint8_t(18), Fchartype: Tuint8_t(7), Fgbprop: Tuint8_t(6), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(168)}, // 479
{Fscript: Tuint8_t(18), Fchartype: Tuint8_t(7), Fgbprop: Tuint8_t(7), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(168)}, // 480
{Fscript: Tuint8_t(18), Fchartype: Tuint8_t(7), Fgbprop: Tuint8_t(7), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(82)}, // 481
{Fscript: Tuint8_t(18), Fchartype: Tuint8_t(7), Fgbprop: Tuint8_t(8), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(82)}, // 482
{Fscript: Tuint8_t(75), Fchartype: Tuint8_t(7), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(82)}, // 483
{Fscript: Tuint8_t(75), Fchartype: Tuint8_t(12), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(26624), Fbprops: Tuint16_t(96)}, // 484
{Fscript: Tuint8_t(75), Fchartype: Tuint8_t(21), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(68)}, // 485
{Fscript: Tuint8_t(75), Fchartype: Tuint8_t(21), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(106)}, // 486
{Fscript: Tuint8_t(75), Fchartype: Tuint8_t(21), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(124)}, // 487
{Fscript: Tuint8_t(75), Fchartype: Tuint8_t(15), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(138)}, // 488
{Fscript: Tuint8_t(75), Fchartype: Tuint8_t(15), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(68)}, // 489
{Fscript: Tuint8_t(75), Fchartype: Tuint8_t(26), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(28672), Fbprops: Tuint16_t(68)}, // 490
{Fscript: Tuint8_t(76), Fchartype: Tuint8_t(9), Fgbprop: Tuint8_t(12), Fother_case: 38864, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(170)}, // 491
{Fscript: Tuint8_t(76), Fchartype: Tuint8_t(9), Fgbprop: Tuint8_t(12), Fother_case: 8, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(170)}, // 492
{Fscript: Tuint8_t(76), Fchartype: Tuint8_t(5), Fgbprop: Tuint8_t(12), Fother_case: -8, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(70)}, // 493
{Fscript: Tuint8_t(77), Fchartype: Tuint8_t(17), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(28672), Fbprops: Tuint16_t(126)}, // 494
{Fscript: Tuint8_t(77), Fchartype: Tuint8_t(7), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(82)}, // 495
{Fscript: Tuint8_t(77), Fchartype: Tuint8_t(26), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(68)}, // 496
{Fscript: Tuint8_t(77), Fchartype: Tuint8_t(21), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(124)}, // 497
{Fscript: Tuint8_t(78), Fchartype: Tuint8_t(29), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(45056), Fbprops: Tuint16_t(52)}, // 498
{Fscript: Tuint8_t(78), Fchartype: Tuint8_t(7), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(82)}, // 499
{Fscript: Tuint8_t(78), Fchartype: Tuint8_t(22), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(28672), Fbprops: Tuint16_t(158)}, // 500
{Fscript: Tuint8_t(78), Fchartype: Tuint8_t(18), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(28672), Fbprops: Tuint16_t(158)}, // 501
{Fscript: Tuint8_t(79), Fchartype: Tuint8_t(7), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(82)}, // 502
{Fscript: Tuint8_t(69), Fchartype: Tuint8_t(21), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(106)}, // 503
{Fscript: Tuint8_t(79), Fchartype: Tuint8_t(14), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(82)}, // 504
{Fscript: Tuint8_t(25), Fchartype: Tuint8_t(7), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(82)}, // 505
{Fscript: Tuint8_t(25), Fchartype: Tuint8_t(12), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(26624), Fbprops: Tuint16_t(130)}, // 506
{Fscript: Tuint8_t(25), Fchartype: Tuint8_t(12), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(26624), Fbprops: Tuint16_t(146)}, // 507
{Fscript: Tuint8_t(25), Fchartype: Tuint8_t(10), Fgbprop: Tuint8_t(5), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(172)}, // 508
{Fscript: Tuint8_t(26), Fchartype: Tuint8_t(7), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(82)}, // 509
{Fscript: Tuint8_t(26), Fchartype: Tuint8_t(12), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(26624), Fbprops: Tuint16_t(130)}, // 510
{Fscript: Tuint8_t(26), Fchartype: Tuint8_t(10), Fgbprop: Tuint8_t(5), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(174)}, // 511
{Fscript: Tuint8_t(69), Fchartype: Tuint8_t(21), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18573), Fbprops: Tuint16_t(124)}, // 512
{Fscript: Tuint8_t(27), Fchartype: Tuint8_t(7), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(82)}, // 513
{Fscript: Tuint8_t(27), Fchartype: Tuint8_t(12), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(26624), Fbprops: Tuint16_t(130)}, // 514
{Fscript: Tuint8_t(28), Fchartype: Tuint8_t(7), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(82)}, // 515
{Fscript: Tuint8_t(28), Fchartype: Tuint8_t(12), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(26624), Fbprops: Tuint16_t(130)}, // 516
{Fscript: Tuint8_t(80), Fchartype: Tuint8_t(7), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(82)}, // 517
{Fscript: Tuint8_t(80), Fchartype: Tuint8_t(7), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(140)}, // 518
{Fscript: Tuint8_t(80), Fchartype: Tuint8_t(12), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(26624), Fbprops: Tuint16_t(100)}, // 519
{Fscript: Tuint8_t(80), Fchartype: Tuint8_t(10), Fgbprop: Tuint8_t(5), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(144)}, // 520
{Fscript: Tuint8_t(80), Fchartype: Tuint8_t(12), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(26624), Fbprops: Tuint16_t(130)}, // 521
{Fscript: Tuint8_t(80), Fchartype: Tuint8_t(12), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(26624), Fbprops: Tuint16_t(96)}, // 522
{Fscript: Tuint8_t(80), Fchartype: Tuint8_t(12), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(26624), Fbprops: Tuint16_t(146)}, // 523
{Fscript: Tuint8_t(80), Fchartype: Tuint8_t(21), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(106)}, // 524
{Fscript: Tuint8_t(80), Fchartype: Tuint8_t(6), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(142)}, // 525
{Fscript: Tuint8_t(80), Fchartype: Tuint8_t(21), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(68)}, // 526
{Fscript: Tuint8_t(80), Fchartype: Tuint8_t(23), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(14336), Fbprops: Tuint16_t(68)}, // 527
{Fscript: Tuint8_t(80), Fchartype: Tuint8_t(13), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(138)}, // 528
{Fscript: Tuint8_t(80), Fchartype: Tuint8_t(15), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(28672), Fbprops: Tuint16_t(68)}, // 529
{Fscript: Tuint8_t(19), Fchartype: Tuint8_t(21), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(28672), Fbprops: Tuint16_t(68)}, // 530
{Fscript: Tuint8_t(69), Fchartype: Tuint8_t(21), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(28777), Fbprops: Tuint16_t(106)}, // 531
{Fscript: Tuint8_t(69), Fchartype: Tuint8_t(21), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(28777), Fbprops: Tuint16_t(124)}, // 532
{Fscript: Tuint8_t(19), Fchartype: Tuint8_t(21), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(28672), Fbprops: Tuint16_t(106)}, // 533
{Fscript: Tuint8_t(19), Fchartype: Tuint8_t(17), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(28672), Fbprops: Tuint16_t(126)}, // 534
{Fscript: Tuint8_t(19), Fchartype: Tuint8_t(21), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(28672), Fbprops: Tuint16_t(124)}, // 535
{Fscript: Tuint8_t(19), Fchartype: Tuint8_t(21), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(28672), Fbprops: Tuint16_t(176)}, // 536
{Fscript: Tuint8_t(19), Fchartype: Tuint8_t(12), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(26624), Fbprops: Tuint16_t(178)}, // 537
{Fscript: Tuint8_t(19), Fchartype: Tuint8_t(1), Fgbprop: Tuint8_t(2), Fscriptx_bidiclass: Tuint16_t(6144), Fbprops: Tuint16_t(66)}, // 538
{Fscript: Tuint8_t(19), Fchartype: Tuint8_t(13), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(138)}, // 539
{Fscript: Tuint8_t(19), Fchartype: Tuint8_t(7), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(82)}, // 540
{Fscript: Tuint8_t(19), Fchartype: Tuint8_t(6), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(136)}, // 541
{Fscript: Tuint8_t(19), Fchartype: Tuint8_t(12), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(26624), Fbprops: Tuint16_t(180)}, // 542
{Fscript: Tuint8_t(19), Fchartype: Tuint8_t(12), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(26624), Fbprops: Tuint16_t(130)}, // 543
{Fscript: Tuint8_t(29), Fchartype: Tuint8_t(7), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(82)}, // 544
{Fscript: Tuint8_t(29), Fchartype: Tuint8_t(12), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(26624), Fbprops: Tuint16_t(130)}, // 545
{Fscript: Tuint8_t(29), Fchartype: Tuint8_t(10), Fgbprop: Tuint8_t(5), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(144)}, // 546
{Fscript: Tuint8_t(29), Fchartype: Tuint8_t(12), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(26624), Fbprops: Tuint16_t(96)}, // 547
{Fscript: Tuint8_t(29), Fchartype: Tuint8_t(26), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(28672), Fbprops: Tuint16_t(68)}, // 548
{Fscript: Tuint8_t(29), Fchartype: Tuint8_t(21), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(28672), Fbprops: Tuint16_t(124)}, // 549
{Fscript: Tuint8_t(29), Fchartype: Tuint8_t(13), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(138)}, // 550
{Fscript: Tuint8_t(30), Fchartype: Tuint8_t(7), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(82)}, // 551
{Fscript: Tuint8_t(89), Fchartype: Tuint8_t(7), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(82)}, // 552
{Fscript: Tuint8_t(89), Fchartype: Tuint8_t(7), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(156)}, // 553
{Fscript: Tuint8_t(89), Fchartype: Tuint8_t(13), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(138)}, // 554
{Fscript: Tuint8_t(89), Fchartype: Tuint8_t(15), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(138)}, // 555
{Fscript: Tuint8_t(89), Fchartype: Tuint8_t(26), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(28672), Fbprops: Tuint16_t(68)}, // 556
{Fscript: Tuint8_t(80), Fchartype: Tuint8_t(26), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(28672), Fbprops: Tuint16_t(68)}, // 557
{Fscript: Tuint8_t(33), Fchartype: Tuint8_t(7), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(82)}, // 558
{Fscript: Tuint8_t(33), Fchartype: Tuint8_t(12), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(26624), Fbprops: Tuint16_t(130)}, // 559
{Fscript: Tuint8_t(33), Fchartype: Tuint8_t(10), Fgbprop: Tuint8_t(5), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(144)}, // 560
{Fscript: Tuint8_t(33), Fchartype: Tuint8_t(21), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(68)}, // 561
{Fscript: Tuint8_t(106), Fchartype: Tuint8_t(7), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(82)}, // 562
{Fscript: Tuint8_t(106), Fchartype: Tuint8_t(10), Fgbprop: Tuint8_t(5), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(144)}, // 563
{Fscript: Tuint8_t(106), Fchartype: Tuint8_t(12), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(26624), Fbprops: Tuint16_t(130)}, // 564
{Fscript: Tuint8_t(106), Fchartype: Tuint8_t(12), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(26624), Fbprops: Tuint16_t(182)}, // 565
{Fscript: Tuint8_t(106), Fchartype: Tuint8_t(10), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(144)}, // 566
{Fscript: Tuint8_t(106), Fchartype: Tuint8_t(12), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(26624), Fbprops: Tuint16_t(96)}, // 567
{Fscript: Tuint8_t(106), Fchartype: Tuint8_t(13), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(138)}, // 568
{Fscript: Tuint8_t(106), Fchartype: Tuint8_t(21), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(68)}, // 569
{Fscript: Tuint8_t(106), Fchartype: Tuint8_t(6), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(136)}, // 570
{Fscript: Tuint8_t(106), Fchartype: Tuint8_t(21), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(124)}, // 571
{Fscript: Tuint8_t(84), Fchartype: Tuint8_t(11), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(26624), Fbprops: Tuint16_t(184)}, // 572
{Fscript: Tuint8_t(84), Fchartype: Tuint8_t(12), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(26624), Fbprops: Tuint16_t(130)}, // 573
{Fscript: Tuint8_t(93), Fchartype: Tuint8_t(12), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(26624), Fbprops: Tuint16_t(130)}, // 574
{Fscript: Tuint8_t(93), Fchartype: Tuint8_t(10), Fgbprop: Tuint8_t(5), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(144)}, // 575
{Fscript: Tuint8_t(93), Fchartype: Tuint8_t(7), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(82)}, // 576
{Fscript: Tuint8_t(93), Fchartype: Tuint8_t(12), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(26624), Fbprops: Tuint16_t(96)}, // 577
{Fscript: Tuint8_t(93), Fchartype: Tuint8_t(10), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(148)}, // 578
{Fscript: Tuint8_t(93), Fchartype: Tuint8_t(10), Fgbprop: Tuint8_t(5), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(172)}, // 579
{Fscript: Tuint8_t(93), Fchartype: Tuint8_t(13), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(138)}, // 580
{Fscript: Tuint8_t(93), Fchartype: Tuint8_t(21), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(124)}, // 581
{Fscript: Tuint8_t(93), Fchartype: Tuint8_t(21), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(68)}, // 582
{Fscript: Tuint8_t(93), Fchartype: Tuint8_t(21), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(106)}, // 583
{Fscript: Tuint8_t(93), Fchartype: Tuint8_t(26), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(68)}, // 584
{Fscript: Tuint8_t(96), Fchartype: Tuint8_t(12), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(26624), Fbprops: Tuint16_t(130)}, // 585
{Fscript: Tuint8_t(96), Fchartype: Tuint8_t(10), Fgbprop: Tuint8_t(5), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(144)}, // 586
{Fscript: Tuint8_t(96), Fchartype: Tuint8_t(7), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(82)}, // 587
{Fscript: Tuint8_t(96), Fchartype: Tuint8_t(10), Fgbprop: Tuint8_t(5), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(172)}, // 588
{Fscript: Tuint8_t(96), Fchartype: Tuint8_t(12), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(26624), Fbprops: Tuint16_t(146)}, // 589
{Fscript: Tuint8_t(96), Fchartype: Tuint8_t(13), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(138)}, // 590
{Fscript: Tuint8_t(119), Fchartype: Tuint8_t(7), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(82)}, // 591
{Fscript: Tuint8_t(119), Fchartype: Tuint8_t(12), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(26624), Fbprops: Tuint16_t(102)}, // 592
{Fscript: Tuint8_t(119), Fchartype: Tuint8_t(10), Fgbprop: Tuint8_t(5), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(144)}, // 593
{Fscript: Tuint8_t(119), Fchartype: Tuint8_t(12), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(26624), Fbprops: Tuint16_t(130)}, // 594
{Fscript: Tuint8_t(119), Fchartype: Tuint8_t(10), Fgbprop: Tuint8_t(5), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(174)}, // 595
{Fscript: Tuint8_t(119), Fchartype: Tuint8_t(21), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(68)}, // 596
{Fscript: Tuint8_t(97), Fchartype: Tuint8_t(7), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(82)}, // 597
{Fscript: Tuint8_t(97), Fchartype: Tuint8_t(10), Fgbprop: Tuint8_t(5), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(144)}, // 598
{Fscript: Tuint8_t(97), Fchartype: Tuint8_t(12), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(26624), Fbprops: Tuint16_t(130)}, // 599
{Fscript: Tuint8_t(97), Fchartype: Tuint8_t(12), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(26624), Fbprops: Tuint16_t(186)}, // 600
{Fscript: Tuint8_t(97), Fchartype: Tuint8_t(12), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(26624), Fbprops: Tuint16_t(96)}, // 601
{Fscript: Tuint8_t(97), Fchartype: Tuint8_t(21), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(124)}, // 602
{Fscript: Tuint8_t(97), Fchartype: Tuint8_t(21), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(106)}, // 603
{Fscript: Tuint8_t(97), Fchartype: Tuint8_t(13), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(138)}, // 604
{Fscript: Tuint8_t(98), Fchartype: Tuint8_t(13), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(138)}, // 605
{Fscript: Tuint8_t(98), Fchartype: Tuint8_t(7), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(82)}, // 606
{Fscript: Tuint8_t(98), Fchartype: Tuint8_t(6), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(92)}, // 607
{Fscript: Tuint8_t(98), Fchartype: Tuint8_t(6), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(94)}, // 608
{Fscript: Tuint8_t(98), Fchartype: Tuint8_t(21), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(124)}, // 609
{Fscript: Tuint8_t(2), Fchartype: Tuint8_t(5), Fgbprop: Tuint8_t(12), Fcaseset: Tuint8_t(63), Fother_case: -6222, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(70)}, // 610
{Fscript: Tuint8_t(2), Fchartype: Tuint8_t(5), Fgbprop: Tuint8_t(12), Fcaseset: Tuint8_t(67), Fother_case: -6221, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(70)}, // 611
{Fscript: Tuint8_t(2), Fchartype: Tuint8_t(5), Fgbprop: Tuint8_t(12), Fcaseset: Tuint8_t(71), Fother_case: -6212, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(70)}, // 612
{Fscript: Tuint8_t(2), Fchartype: Tuint8_t(5), Fgbprop: Tuint8_t(12), Fcaseset: Tuint8_t(75), Fother_case: -6210, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(70)}, // 613
{Fscript: Tuint8_t(2), Fchartype: Tuint8_t(5), Fgbprop: Tuint8_t(12), Fcaseset: Tuint8_t(79), Fother_case: -6210, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(70)}, // 614
{Fscript: Tuint8_t(2), Fchartype: Tuint8_t(5), Fgbprop: Tuint8_t(12), Fcaseset: Tuint8_t(79), Fother_case: -6211, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(70)}, // 615
{Fscript: Tuint8_t(2), Fchartype: Tuint8_t(5), Fgbprop: Tuint8_t(12), Fcaseset: Tuint8_t(84), Fother_case: -6204, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(70)}, // 616
{Fscript: Tuint8_t(2), Fchartype: Tuint8_t(5), Fgbprop: Tuint8_t(12), Fcaseset: Tuint8_t(88), Fother_case: -6180, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(70)}, // 617
{Fscript: Tuint8_t(2), Fchartype: Tuint8_t(5), Fgbprop: Tuint8_t(12), Fcaseset: Tuint8_t(108), Fother_case: 35267, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(70)}, // 618
{Fscript: Tuint8_t(17), Fchartype: Tuint8_t(9), Fgbprop: Tuint8_t(12), Fother_case: -3008, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(74)}, // 619
{Fscript: Tuint8_t(96), Fchartype: Tuint8_t(21), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(68)}, // 620
{Fscript: Tuint8_t(84), Fchartype: Tuint8_t(12), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(26762), Fbprops: Tuint16_t(96)}, // 621
{Fscript: Tuint8_t(84), Fchartype: Tuint8_t(12), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(26630), Fbprops: Tuint16_t(96)}, // 622
{Fscript: Tuint8_t(69), Fchartype: Tuint8_t(21), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18498), Fbprops: Tuint16_t(188)}, // 623
{Fscript: Tuint8_t(84), Fchartype: Tuint8_t(12), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(26666), Fbprops: Tuint16_t(96)}, // 624
{Fscript: Tuint8_t(84), Fchartype: Tuint8_t(12), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(26696), Fbprops: Tuint16_t(96)}, // 625
{Fscript: Tuint8_t(84), Fchartype: Tuint8_t(12), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(26780), Fbprops: Tuint16_t(96)}, // 626
{Fscript: Tuint8_t(69), Fchartype: Tuint8_t(10), Fgbprop: Tuint8_t(5), Fscriptx_bidiclass: Tuint16_t(18474), Fbprops: Tuint16_t(160)}, // 627
{Fscript: Tuint8_t(69), Fchartype: Tuint8_t(7), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18501), Fbprops: Tuint16_t(82)}, // 628
{Fscript: Tuint8_t(69), Fchartype: Tuint8_t(7), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18474), Fbprops: Tuint16_t(82)}, // 629
{Fscript: Tuint8_t(69), Fchartype: Tuint8_t(7), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18438), Fbprops: Tuint16_t(82)}, // 630
{Fscript: Tuint8_t(69), Fchartype: Tuint8_t(7), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18594), Fbprops: Tuint16_t(82)}, // 631
{Fscript: Tuint8_t(69), Fchartype: Tuint8_t(7), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18498), Fbprops: Tuint16_t(82)}, // 632
{Fscript: Tuint8_t(84), Fchartype: Tuint8_t(12), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(26750), Fbprops: Tuint16_t(96)}, // 633
{Fscript: Tuint8_t(69), Fchartype: Tuint8_t(10), Fgbprop: Tuint8_t(5), Fscriptx_bidiclass: Tuint16_t(18435), Fbprops: Tuint16_t(160)}, // 634
{Fscript: Tuint8_t(84), Fchartype: Tuint8_t(12), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(26690), Fbprops: Tuint16_t(96)}, // 635
{Fscript: Tuint8_t(69), Fchartype: Tuint8_t(7), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18453), Fbprops: Tuint16_t(82)}, // 636
{Fscript: Tuint8_t(2), Fchartype: Tuint8_t(5), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(60)}, // 637
{Fscript: Tuint8_t(1), Fchartype: Tuint8_t(6), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(88)}, // 638
{Fscript: Tuint8_t(2), Fchartype: Tuint8_t(6), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(190)}, // 639
{Fchartype: Tuint8_t(5), Fgbprop: Tuint8_t(12), Fother_case: 35332, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(76)}, // 640
{Fchartype: Tuint8_t(5), Fgbprop: Tuint8_t(12), Fother_case: 3814, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(76)}, // 641
{Fchartype: Tuint8_t(5), Fgbprop: Tuint8_t(12), Fother_case: 35384, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(76)}, // 642
{Fchartype: Tuint8_t(5), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(192)}, // 643
{Fchartype: Tuint8_t(6), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(190)}, // 644
{Fchartype: Tuint8_t(6), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(194)}, // 645
{Fscript: Tuint8_t(1), Fchartype: Tuint8_t(6), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(190)}, // 646
{Fscript: Tuint8_t(84), Fchartype: Tuint8_t(12), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(26636), Fbprops: Tuint16_t(102)}, // 647
{Fscript: Tuint8_t(84), Fchartype: Tuint8_t(12), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(26687), Fbprops: Tuint16_t(96)}, // 648
{Fscript: Tuint8_t(84), Fchartype: Tuint8_t(12), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(26648), Fbprops: Tuint16_t(96)}, // 649
{Fchartype: Tuint8_t(9), Fgbprop: Tuint8_t(12), Fcaseset: Tuint8_t(92), Fother_case: 1, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(74)}, // 650
{Fchartype: Tuint8_t(5), Fgbprop: Tuint8_t(12), Fcaseset: Tuint8_t(92), Fother_case: -1, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(76)}, // 651
{Fchartype: Tuint8_t(5), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(70)}, // 652
{Fchartype: Tuint8_t(5), Fgbprop: Tuint8_t(12), Fcaseset: Tuint8_t(92), Fother_case: -58, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(70)}, // 653
{Fchartype: Tuint8_t(9), Fgbprop: Tuint8_t(12), Fother_case: -7615, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(74)}, // 654
{Fscript: Tuint8_t(1), Fchartype: Tuint8_t(5), Fgbprop: Tuint8_t(12), Fother_case: 8, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(76)}, // 655
{Fscript: Tuint8_t(1), Fchartype: Tuint8_t(9), Fgbprop: Tuint8_t(12), Fother_case: -8, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(74)}, // 656
{Fscript: Tuint8_t(1), Fchartype: Tuint8_t(5), Fgbprop: Tuint8_t(12), Fother_case: 74, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(76)}, // 657
{Fscript: Tuint8_t(1), Fchartype: Tuint8_t(5), Fgbprop: Tuint8_t(12), Fother_case: 86, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(76)}, // 658
{Fscript: Tuint8_t(1), Fchartype: Tuint8_t(5), Fgbprop: Tuint8_t(12), Fother_case: 100, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(76)}, // 659
{Fscript: Tuint8_t(1), Fchartype: Tuint8_t(5), Fgbprop: Tuint8_t(12), Fother_case: 128, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(76)}, // 660
{Fscript: Tuint8_t(1), Fchartype: Tuint8_t(5), Fgbprop: Tuint8_t(12), Fother_case: 112, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(76)}, // 661
{Fscript: Tuint8_t(1), Fchartype: Tuint8_t(5), Fgbprop: Tuint8_t(12), Fother_case: 126, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(76)}, // 662
{Fscript: Tuint8_t(1), Fchartype: Tuint8_t(5), Fgbprop: Tuint8_t(12), Fother_case: 8, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(70)}, // 663
{Fscript: Tuint8_t(1), Fchartype: Tuint8_t(8), Fgbprop: Tuint8_t(12), Fother_case: -8, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(86)}, // 664
{Fscript: Tuint8_t(1), Fchartype: Tuint8_t(5), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(70)}, // 665
{Fscript: Tuint8_t(1), Fchartype: Tuint8_t(5), Fgbprop: Tuint8_t(12), Fother_case: 9, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(70)}, // 666
{Fscript: Tuint8_t(1), Fchartype: Tuint8_t(9), Fgbprop: Tuint8_t(12), Fother_case: -74, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(74)}, // 667
{Fscript: Tuint8_t(1), Fchartype: Tuint8_t(8), Fgbprop: Tuint8_t(12), Fother_case: -9, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(86)}, // 668
{Fscript: Tuint8_t(1), Fchartype: Tuint8_t(5), Fgbprop: Tuint8_t(12), Fcaseset: Tuint8_t(21), Fother_case: -7173, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(76)}, // 669
{Fscript: Tuint8_t(1), Fchartype: Tuint8_t(9), Fgbprop: Tuint8_t(12), Fother_case: -86, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(74)}, // 670
{Fscript: Tuint8_t(1), Fchartype: Tuint8_t(9), Fgbprop: Tuint8_t(12), Fother_case: -100, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(74)}, // 671
{Fscript: Tuint8_t(1), Fchartype: Tuint8_t(9), Fgbprop: Tuint8_t(12), Fother_case: -112, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(74)}, // 672
{Fscript: Tuint8_t(1), Fchartype: Tuint8_t(9), Fgbprop: Tuint8_t(12), Fother_case: -128, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(74)}, // 673
{Fscript: Tuint8_t(1), Fchartype: Tuint8_t(9), Fgbprop: Tuint8_t(12), Fother_case: -126, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(74)}, // 674
{Fscript: Tuint8_t(69), Fchartype: Tuint8_t(29), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(45056), Fbprops: Tuint16_t(52)}, // 675
{Fscript: Tuint8_t(84), Fchartype: Tuint8_t(1), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(6144), Fbprops: Tuint16_t(196)}, // 676
{Fscript: Tuint8_t(84), Fchartype: Tuint8_t(1), Fgbprop: Tuint8_t(13), Fscriptx_bidiclass: Tuint16_t(6144), Fbprops: Tuint16_t(198)}, // 677
{Fscript: Tuint8_t(69), Fchartype: Tuint8_t(1), Fgbprop: Tuint8_t(2), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(200)}, // 678
{Fscript: Tuint8_t(69), Fchartype: Tuint8_t(1), Fgbprop: Tuint8_t(2), Fscriptx_bidiclass: Tuint16_t(34816), Fbprops: Tuint16_t(200)}, // 679
{Fscript: Tuint8_t(69), Fchartype: Tuint8_t(17), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(28672), Fbprops: Tuint16_t(202)}, // 680
{Fscript: Tuint8_t(69), Fchartype: Tuint8_t(21), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(28672), Fbprops: Tuint16_t(64)}, // 681
{Fscript: Tuint8_t(69), Fchartype: Tuint8_t(20), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(28672), Fbprops: Tuint16_t(204)}, // 682
{Fscript: Tuint8_t(69), Fchartype: Tuint8_t(19), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(28672), Fbprops: Tuint16_t(204)}, // 683
{Fscript: Tuint8_t(69), Fchartype: Tuint8_t(22), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(28672), Fbprops: Tuint16_t(206)}, // 684
{Fscript: Tuint8_t(69), Fchartype: Tuint8_t(20), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(28672), Fbprops: Tuint16_t(206)}, // 685
{Fscript: Tuint8_t(69), Fchartype: Tuint8_t(19), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(28672), Fbprops: Tuint16_t(206)}, // 686
{Fscript: Tuint8_t(69), Fchartype: Tuint8_t(21), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(28672), Fbprops: Tuint16_t(208)}, // 687
{Fscript: Tuint8_t(69), Fchartype: Tuint8_t(27), Fgbprop: Tuint8_t(2), Fscriptx_bidiclass: Tuint16_t(45056), Fbprops: Tuint16_t(50)}, // 688
{Fscript: Tuint8_t(69), Fchartype: Tuint8_t(28), Fgbprop: Tuint8_t(2), Fscriptx_bidiclass: Tuint16_t(4096), Fbprops: Tuint16_t(50)}, // 689
{Fscript: Tuint8_t(69), Fchartype: Tuint8_t(1), Fgbprop: Tuint8_t(2), Fscriptx_bidiclass: Tuint16_t(20480), Fbprops: Tuint16_t(134)}, // 690
{Fscript: Tuint8_t(69), Fchartype: Tuint8_t(1), Fgbprop: Tuint8_t(2), Fscriptx_bidiclass: Tuint16_t(36864), Fbprops: Tuint16_t(134)}, // 691
{Fscript: Tuint8_t(69), Fchartype: Tuint8_t(1), Fgbprop: Tuint8_t(2), Fscriptx_bidiclass: Tuint16_t(30720), Fbprops: Tuint16_t(134)}, // 692
{Fscript: Tuint8_t(69), Fchartype: Tuint8_t(1), Fgbprop: Tuint8_t(2), Fscriptx_bidiclass: Tuint16_t(24576), Fbprops: Tuint16_t(134)}, // 693
{Fscript: Tuint8_t(69), Fchartype: Tuint8_t(1), Fgbprop: Tuint8_t(2), Fscriptx_bidiclass: Tuint16_t(40960), Fbprops: Tuint16_t(134)}, // 694
{Fscript: Tuint8_t(69), Fchartype: Tuint8_t(29), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(8291), Fbprops: Tuint16_t(52)}, // 695
{Fscript: Tuint8_t(69), Fchartype: Tuint8_t(21), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(14336), Fbprops: Tuint16_t(54)}, // 696
{Fscript: Tuint8_t(69), Fchartype: Tuint8_t(21), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(14336), Fbprops: Tuint16_t(64)}, // 697
{Fscript: Tuint8_t(69), Fchartype: Tuint8_t(21), Fgbprop: Tuint8_t(14), Fscriptx_bidiclass: Tuint16_t(28672), Fbprops: Tuint16_t(210)}, // 698
{Fscript: Tuint8_t(69), Fchartype: Tuint8_t(21), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(28672), Fbprops: Tuint16_t(212)}, // 699
{Fscript: Tuint8_t(69), Fchartype: Tuint8_t(16), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(28672), Fbprops: Tuint16_t(138)}, // 700
{Fscript: Tuint8_t(69), Fchartype: Tuint8_t(16), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(28672), Fbprops: Tuint16_t(214)}, // 701
{Fscript: Tuint8_t(69), Fchartype: Tuint8_t(25), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(8192), Fbprops: Tuint16_t(64)}, // 702
{Fscript: Tuint8_t(69), Fchartype: Tuint8_t(22), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(28672), Fbprops: Tuint16_t(216)}, // 703
{Fscript: Tuint8_t(69), Fchartype: Tuint8_t(18), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(28672), Fbprops: Tuint16_t(216)}, // 704
{Fscript: Tuint8_t(69), Fchartype: Tuint8_t(21), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(28672), Fbprops: Tuint16_t(202)}, // 705
{Fscript: Tuint8_t(69), Fchartype: Tuint8_t(1), Fgbprop: Tuint8_t(2), Fscriptx_bidiclass: Tuint16_t(6144), Fbprops: Tuint16_t(218)}, // 706
{Fscript: Tuint8_t(68), Fchartype: Tuint8_t(2), Fgbprop: Tuint8_t(2), Fscriptx_bidiclass: Tuint16_t(6144), Fbprops: Tuint16_t(220)}, // 707
{Fscript: Tuint8_t(69), Fchartype: Tuint8_t(1), Fgbprop: Tuint8_t(2), Fscriptx_bidiclass: Tuint16_t(22528), Fbprops: Tuint16_t(134)}, // 708
{Fscript: Tuint8_t(69), Fchartype: Tuint8_t(1), Fgbprop: Tuint8_t(2), Fscriptx_bidiclass: Tuint16_t(38912), Fbprops: Tuint16_t(134)}, // 709
{Fscript: Tuint8_t(69), Fchartype: Tuint8_t(1), Fgbprop: Tuint8_t(2), Fscriptx_bidiclass: Tuint16_t(16384), Fbprops: Tuint16_t(134)}, // 710
{Fscript: Tuint8_t(69), Fchartype: Tuint8_t(1), Fgbprop: Tuint8_t(2), Fscriptx_bidiclass: Tuint16_t(32768), Fbprops: Tuint16_t(134)}, // 711
{Fscript: Tuint8_t(69), Fchartype: Tuint8_t(1), Fgbprop: Tuint8_t(2), Fscriptx_bidiclass: Tuint16_t(6144), Fbprops: Tuint16_t(222)}, // 712
{Fscript: Tuint8_t(69), Fchartype: Tuint8_t(25), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(12288), Fbprops: Tuint16_t(118)}, // 713
{Fscript: Tuint8_t(69), Fchartype: Tuint8_t(25), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(12288), Fbprops: Tuint16_t(224)}, // 714
{Fscript: Tuint8_t(69), Fchartype: Tuint8_t(25), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(28672), Fbprops: Tuint16_t(118)}, // 715
{Fscript: Tuint8_t(69), Fchartype: Tuint8_t(22), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(28672), Fbprops: Tuint16_t(226)}, // 716
{Fscript: Tuint8_t(69), Fchartype: Tuint8_t(18), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(28672), Fbprops: Tuint16_t(226)}, // 717
{Fscript: Tuint8_t(68), Fchartype: Tuint8_t(2), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(14336)}, // 718
{Fscript: Tuint8_t(84), Fchartype: Tuint8_t(12), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(26624), Fbprops: Tuint16_t(228)}, // 719
{Fscript: Tuint8_t(84), Fchartype: Tuint8_t(11), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(26624), Fbprops: Tuint16_t(120)}, // 720
{Fscript: Tuint8_t(84), Fchartype: Tuint8_t(11), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(26624), Fbprops: Tuint16_t(230)}, // 721
{Fscript: Tuint8_t(84), Fchartype: Tuint8_t(12), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(26753), Fbprops: Tuint16_t(102)}, // 722
{Fscript: Tuint8_t(69), Fchartype: Tuint8_t(26), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(28672), Fbprops: Tuint16_t(68)}, // 723
{Fscript: Tuint8_t(69), Fchartype: Tuint8_t(9), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(112)}, // 724
{Fscript: Tuint8_t(69), Fchartype: Tuint8_t(5), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(232)}, // 725
{Fscript: Tuint8_t(69), Fchartype: Tuint8_t(25), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(28672), Fbprops: Tuint16_t(234)}, // 726
{Fscript: Tuint8_t(69), Fchartype: Tuint8_t(26), Fgbprop: Tuint8_t(14), Fscriptx_bidiclass: Tuint16_t(28672), Fbprops: Tuint16_t(236)}, // 727
{Fscript: Tuint8_t(1), Fchartype: Tuint8_t(9), Fgbprop: Tuint8_t(12), Fcaseset: Tuint8_t(96), Fother_case: -7517, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(74)}, // 728
{Fscript: Tuint8_t(69), Fchartype: Tuint8_t(26), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(28672), Fbprops: Tuint16_t(118)}, // 729
{Fchartype: Tuint8_t(9), Fgbprop: Tuint8_t(12), Fcaseset: Tuint8_t(100), Fother_case: -8383, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(74)}, // 730
{Fchartype: Tuint8_t(9), Fgbprop: Tuint8_t(12), Fcaseset: Tuint8_t(104), Fother_case: -8262, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(74)}, // 731
{Fscript: Tuint8_t(69), Fchartype: Tuint8_t(26), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(14336), Fbprops: Tuint16_t(238)}, // 732
{Fchartype: Tuint8_t(9), Fgbprop: Tuint8_t(12), Fother_case: 28, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(74)}, // 733
{Fscript: Tuint8_t(69), Fchartype: Tuint8_t(7), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(240)}, // 734
{Fscript: Tuint8_t(69), Fchartype: Tuint8_t(5), Fgbprop: Tuint8_t(14), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(242)}, // 735
{Fscript: Tuint8_t(69), Fchartype: Tuint8_t(5), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(244)}, // 736
{Fchartype: Tuint8_t(5), Fgbprop: Tuint8_t(12), Fother_case: -28, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(76)}, // 737
{Fchartype: Tuint8_t(14), Fgbprop: Tuint8_t(12), Fother_case: 16, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(74)}, // 738
{Fchartype: Tuint8_t(14), Fgbprop: Tuint8_t(12), Fother_case: -16, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(76)}, // 739
{Fchartype: Tuint8_t(14), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(82)}, // 740
{Fscript: Tuint8_t(69), Fchartype: Tuint8_t(25), Fgbprop: Tuint8_t(14), Fscriptx_bidiclass: Tuint16_t(28672), Fbprops: Tuint16_t(246)}, // 741
{Fscript: Tuint8_t(69), Fchartype: Tuint8_t(26), Fgbprop: Tuint8_t(14), Fscriptx_bidiclass: Tuint16_t(28672), Fbprops: Tuint16_t(246)}, // 742
{Fscript: Tuint8_t(69), Fchartype: Tuint8_t(26), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(28672), Fbprops: Tuint16_t(64)}, // 743
{Fscript: Tuint8_t(69), Fchartype: Tuint8_t(25), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(28672), Fbprops: Tuint16_t(248)}, // 744
{Fscript: Tuint8_t(69), Fchartype: Tuint8_t(25), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(12288), Fbprops: Tuint16_t(250)}, // 745
{Fscript: Tuint8_t(69), Fchartype: Tuint8_t(22), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(28672), Fbprops: Tuint16_t(248)}, // 746
{Fscript: Tuint8_t(69), Fchartype: Tuint8_t(18), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(28672), Fbprops: Tuint16_t(248)}, // 747
{Fscript: Tuint8_t(69), Fchartype: Tuint8_t(26), Fgbprop: Tuint8_t(14), Fscriptx_bidiclass: Tuint16_t(28672), Fbprops: Tuint16_t(252)}, // 748
{Fscript: Tuint8_t(69), Fchartype: Tuint8_t(22), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(28672), Fbprops: Tuint16_t(254)}, // 749
{Fscript: Tuint8_t(69), Fchartype: Tuint8_t(18), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(28672), Fbprops: Tuint16_t(254)}, // 750
{Fscript: Tuint8_t(69), Fchartype: Tuint8_t(26), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(54)}, // 751
{Fscript: Tuint8_t(69), Fchartype: Tuint8_t(26), Fgbprop: Tuint8_t(14), Fscriptx_bidiclass: Tuint16_t(28672), Fbprops: Tuint16_t(256)}, // 752
{Fscript: Tuint8_t(68), Fchartype: Tuint8_t(2), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(258)}, // 753
{Fscript: Tuint8_t(69), Fchartype: Tuint8_t(26), Fgbprop: Tuint8_t(12), Fother_case: 26, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(260)}, // 754
{Fscript: Tuint8_t(69), Fchartype: Tuint8_t(26), Fgbprop: Tuint8_t(14), Fother_case: 26, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(262)}, // 755
{Fscript: Tuint8_t(69), Fchartype: Tuint8_t(26), Fgbprop: Tuint8_t(12), Fother_case: -26, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(264)}, // 756
{Fscript: Tuint8_t(69), Fchartype: Tuint8_t(25), Fgbprop: Tuint8_t(14), Fscriptx_bidiclass: Tuint16_t(28672), Fbprops: Tuint16_t(266)}, // 757
{Fscript: Tuint8_t(69), Fchartype: Tuint8_t(26), Fgbprop: Tuint8_t(14), Fscriptx_bidiclass: Tuint16_t(28672), Fbprops: Tuint16_t(268)}, // 758
{Fscript: Tuint8_t(69), Fchartype: Tuint8_t(26), Fgbprop: Tuint8_t(14), Fscriptx_bidiclass: Tuint16_t(28672), Fbprops: Tuint16_t(270)}, // 759
{Fscript: Tuint8_t(69), Fchartype: Tuint8_t(25), Fgbprop: Tuint8_t(14), Fscriptx_bidiclass: Tuint16_t(28672), Fbprops: Tuint16_t(268)}, // 760
{Fscript: Tuint8_t(69), Fchartype: Tuint8_t(26), Fgbprop: Tuint8_t(14), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(256)}, // 761
{Fscript: Tuint8_t(69), Fchartype: Tuint8_t(26), Fgbprop: Tuint8_t(14), Fscriptx_bidiclass: Tuint16_t(28672), Fbprops: Tuint16_t(272)}, // 762
{Fscript: Tuint8_t(88), Fchartype: Tuint8_t(26), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(54)}, // 763
{Fscript: Tuint8_t(69), Fchartype: Tuint8_t(26), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(28672), Fbprops: Tuint16_t(216)}, // 764
{Fscript: Tuint8_t(35), Fchartype: Tuint8_t(9), Fgbprop: Tuint8_t(12), Fother_case: 48, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(74)}, // 765
{Fscript: Tuint8_t(35), Fchartype: Tuint8_t(5), Fgbprop: Tuint8_t(12), Fother_case: -48, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(76)}, // 766
{Fchartype: Tuint8_t(9), Fgbprop: Tuint8_t(12), Fother_case: -10743, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(74)}, // 767
{Fchartype: Tuint8_t(9), Fgbprop: Tuint8_t(12), Fother_case: -3814, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(74)}, // 768
{Fchartype: Tuint8_t(9), Fgbprop: Tuint8_t(12), Fother_case: -10727, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(74)}, // 769
{Fchartype: Tuint8_t(5), Fgbprop: Tuint8_t(12), Fother_case: -10795, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(76)}, // 770
{Fchartype: Tuint8_t(5), Fgbprop: Tuint8_t(12), Fother_case: -10792, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(76)}, // 771
{Fchartype: Tuint8_t(9), Fgbprop: Tuint8_t(12), Fother_case: -10780, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(74)}, // 772
{Fchartype: Tuint8_t(9), Fgbprop: Tuint8_t(12), Fother_case: -10749, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(74)}, // 773
{Fchartype: Tuint8_t(9), Fgbprop: Tuint8_t(12), Fother_case: -10783, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(74)}, // 774
{Fchartype: Tuint8_t(9), Fgbprop: Tuint8_t(12), Fother_case: -10782, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(74)}, // 775
{Fchartype: Tuint8_t(9), Fgbprop: Tuint8_t(12), Fother_case: -10815, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(74)}, // 776
{Fscript: Tuint8_t(34), Fchartype: Tuint8_t(5), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(60)}, // 777
{Fscript: Tuint8_t(34), Fchartype: Tuint8_t(26), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(28672), Fbprops: Tuint16_t(68)}, // 778
{Fscript: Tuint8_t(34), Fchartype: Tuint8_t(12), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(26624), Fbprops: Tuint16_t(96)}, // 779
{Fscript: Tuint8_t(34), Fchartype: Tuint8_t(21), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(28672), Fbprops: Tuint16_t(68)}, // 780
{Fscript: Tuint8_t(34), Fchartype: Tuint8_t(15), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(28672), Fbprops: Tuint16_t(68)}, // 781
{Fscript: Tuint8_t(17), Fchartype: Tuint8_t(5), Fgbprop: Tuint8_t(12), Fother_case: -7264, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(76)}, // 782
{Fscript: Tuint8_t(90), Fchartype: Tuint8_t(7), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(82)}, // 783
{Fscript: Tuint8_t(90), Fchartype: Tuint8_t(6), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(142)}, // 784
{Fscript: Tuint8_t(90), Fchartype: Tuint8_t(21), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(68)}, // 785
{Fscript: Tuint8_t(90), Fchartype: Tuint8_t(12), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(26624), Fbprops: Tuint16_t(182)}, // 786
{Fscript: Tuint8_t(2), Fchartype: Tuint8_t(12), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(26624), Fbprops: Tuint16_t(130)}, // 787
{Fscript: Tuint8_t(69), Fchartype: Tuint8_t(20), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(28672), Fbprops: Tuint16_t(216)}, // 788
{Fscript: Tuint8_t(69), Fchartype: Tuint8_t(19), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(28672), Fbprops: Tuint16_t(216)}, // 789
{Fscript: Tuint8_t(69), Fchartype: Tuint8_t(6), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(28672), Fbprops: Tuint16_t(274)}, // 790
{Fscript: Tuint8_t(69), Fchartype: Tuint8_t(21), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(28672), Fbprops: Tuint16_t(276)}, // 791
{Fscript: Tuint8_t(69), Fchartype: Tuint8_t(21), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(28726), Fbprops: Tuint16_t(54)}, // 792
{Fscript: Tuint8_t(23), Fchartype: Tuint8_t(26), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(28672), Fbprops: Tuint16_t(278)}, // 793
{Fscript: Tuint8_t(69), Fchartype: Tuint8_t(26), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(28672), Fbprops: Tuint16_t(280)}, // 794
{Fscript: Tuint8_t(69), Fchartype: Tuint8_t(26), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(28672), Fbprops: Tuint16_t(282)}, // 795
{Fscript: Tuint8_t(69), Fchartype: Tuint8_t(21), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(28825), Fbprops: Tuint16_t(276)}, // 796
{Fscript: Tuint8_t(69), Fchartype: Tuint8_t(21), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(28825), Fbprops: Tuint16_t(212)}, // 797
{Fscript: Tuint8_t(69), Fchartype: Tuint8_t(21), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(28819), Fbprops: Tuint16_t(54)}, // 798
{Fscript: Tuint8_t(23), Fchartype: Tuint8_t(6), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(136)}, // 799
{Fscript: Tuint8_t(69), Fchartype: Tuint8_t(7), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18447), Fbprops: Tuint16_t(284)}, // 800
{Fscript: Tuint8_t(23), Fchartype: Tuint8_t(14), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(284)}, // 801
{Fscript: Tuint8_t(69), Fchartype: Tuint8_t(22), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(28825), Fbprops: Tuint16_t(216)}, // 802
{Fscript: Tuint8_t(69), Fchartype: Tuint8_t(18), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(28825), Fbprops: Tuint16_t(216)}, // 803
{Fscript: Tuint8_t(69), Fchartype: Tuint8_t(22), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(28825), Fbprops: Tuint16_t(62)}, // 804
{Fscript: Tuint8_t(69), Fchartype: Tuint8_t(18), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(28825), Fbprops: Tuint16_t(62)}, // 805
{Fscript: Tuint8_t(69), Fchartype: Tuint8_t(26), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(28819), Fbprops: Tuint16_t(54)}, // 806
{Fscript: Tuint8_t(69), Fchartype: Tuint8_t(17), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(28819), Fbprops: Tuint16_t(202)}, // 807
{Fscript: Tuint8_t(69), Fchartype: Tuint8_t(22), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(28819), Fbprops: Tuint16_t(206)}, // 808
{Fscript: Tuint8_t(69), Fchartype: Tuint8_t(18), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(28819), Fbprops: Tuint16_t(206)}, // 809
{Fscript: Tuint8_t(84), Fchartype: Tuint8_t(12), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(26669), Fbprops: Tuint16_t(96)}, // 810
{Fscript: Tuint8_t(18), Fchartype: Tuint8_t(10), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(286)}, // 811
{Fscript: Tuint8_t(69), Fchartype: Tuint8_t(17), Fgbprop: Tuint8_t(14), Fscriptx_bidiclass: Tuint16_t(28819), Fbprops: Tuint16_t(288)}, // 812
{Fscript: Tuint8_t(69), Fchartype: Tuint8_t(6), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18525), Fbprops: Tuint16_t(136)}, // 813
{Fscript: Tuint8_t(69), Fchartype: Tuint8_t(26), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(28819), Fbprops: Tuint16_t(68)}, // 814
{Fscript: Tuint8_t(23), Fchartype: Tuint8_t(6), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(142)}, // 815
{Fscript: Tuint8_t(69), Fchartype: Tuint8_t(7), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18564), Fbprops: Tuint16_t(82)}, // 816
{Fscript: Tuint8_t(69), Fchartype: Tuint8_t(21), Fgbprop: Tuint8_t(14), Fscriptx_bidiclass: Tuint16_t(28804), Fbprops: Tuint16_t(236)}, // 817
{Fscript: Tuint8_t(69), Fchartype: Tuint8_t(26), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(28687), Fbprops: Tuint16_t(68)}, // 818
{Fscript: Tuint8_t(20), Fchartype: Tuint8_t(7), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(82)}, // 819
{Fscript: Tuint8_t(84), Fchartype: Tuint8_t(12), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(26717), Fbprops: Tuint16_t(96)}, // 820
{Fscript: Tuint8_t(69), Fchartype: Tuint8_t(24), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(28765), Fbprops: Tuint16_t(290)}, // 821
{Fscript: Tuint8_t(20), Fchartype: Tuint8_t(6), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(136)}, // 822
{Fscript: Tuint8_t(69), Fchartype: Tuint8_t(17), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(28765), Fbprops: Tuint16_t(126)}, // 823
{Fscript: Tuint8_t(21), Fchartype: Tuint8_t(7), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(82)}, // 824
{Fscript: Tuint8_t(69), Fchartype: Tuint8_t(21), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(28825), Fbprops: Tuint16_t(68)}, // 825
{Fscript: Tuint8_t(69), Fchartype: Tuint8_t(6), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18525), Fbprops: Tuint16_t(94)}, // 826
{Fscript: Tuint8_t(21), Fchartype: Tuint8_t(6), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(136)}, // 827
{Fscript: Tuint8_t(22), Fchartype: Tuint8_t(7), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(82)}, // 828
{Fscript: Tuint8_t(18), Fchartype: Tuint8_t(7), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(82)}, // 829
{Fscript: Tuint8_t(18), Fchartype: Tuint8_t(7), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(168)}, // 830
{Fscript: Tuint8_t(69), Fchartype: Tuint8_t(26), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18447), Fbprops: Tuint16_t(68)}, // 831
{Fscript: Tuint8_t(69), Fchartype: Tuint8_t(15), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18447), Fbprops: Tuint16_t(68)}, // 832
{Fscript: Tuint8_t(18), Fchartype: Tuint8_t(26), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(68)}, // 833
{Fscript: Tuint8_t(18), Fchartype: Tuint8_t(26), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(28672), Fbprops: Tuint16_t(68)}, // 834
{Fscript: Tuint8_t(69), Fchartype: Tuint8_t(15), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(68)}, // 835
{Fscript: Tuint8_t(69), Fchartype: Tuint8_t(26), Fgbprop: Tuint8_t(14), Fscriptx_bidiclass: Tuint16_t(18447), Fbprops: Tuint16_t(236)}, // 836
{Fscript: Tuint8_t(21), Fchartype: Tuint8_t(26), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(68)}, // 837
{Fscript: Tuint8_t(23), Fchartype: Tuint8_t(7), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(292)}, // 838
{Fscript: Tuint8_t(24), Fchartype: Tuint8_t(7), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(82)}, // 839
{Fscript: Tuint8_t(24), Fchartype: Tuint8_t(6), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(136)}, // 840
{Fscript: Tuint8_t(24), Fchartype: Tuint8_t(26), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(28672), Fbprops: Tuint16_t(68)}, // 841
{Fscript: Tuint8_t(111), Fchartype: Tuint8_t(7), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(82)}, // 842
{Fscript: Tuint8_t(111), Fchartype: Tuint8_t(6), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(142)}, // 843
{Fscript: Tuint8_t(111), Fchartype: Tuint8_t(21), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(106)}, // 844
{Fscript: Tuint8_t(111), Fchartype: Tuint8_t(21), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(124)}, // 845
{Fscript: Tuint8_t(99), Fchartype: Tuint8_t(7), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(82)}, // 846
{Fscript: Tuint8_t(99), Fchartype: Tuint8_t(6), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(136)}, // 847
{Fscript: Tuint8_t(99), Fchartype: Tuint8_t(21), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(28672), Fbprops: Tuint16_t(106)}, // 848
{Fscript: Tuint8_t(99), Fchartype: Tuint8_t(21), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(28672), Fbprops: Tuint16_t(124)}, // 849
{Fscript: Tuint8_t(99), Fchartype: Tuint8_t(13), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(138)}, // 850
{Fscript: Tuint8_t(2), Fchartype: Tuint8_t(9), Fgbprop: Tuint8_t(12), Fcaseset: Tuint8_t(108), Fother_case: 1, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(74)}, // 851
{Fscript: Tuint8_t(2), Fchartype: Tuint8_t(5), Fgbprop: Tuint8_t(12), Fcaseset: Tuint8_t(108), Fother_case: -35267, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(76)}, // 852
{Fscript: Tuint8_t(2), Fchartype: Tuint8_t(7), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(82)}, // 853
{Fscript: Tuint8_t(2), Fchartype: Tuint8_t(21), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(28672), Fbprops: Tuint16_t(68)}, // 854
{Fscript: Tuint8_t(2), Fchartype: Tuint8_t(12), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(26624), Fbprops: Tuint16_t(96)}, // 855
{Fscript: Tuint8_t(2), Fchartype: Tuint8_t(6), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(28672), Fbprops: Tuint16_t(92)}, // 856
{Fscript: Tuint8_t(2), Fchartype: Tuint8_t(6), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(88)}, // 857
{Fscript: Tuint8_t(112), Fchartype: Tuint8_t(7), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(82)}, // 858
{Fscript: Tuint8_t(112), Fchartype: Tuint8_t(14), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(82)}, // 859
{Fscript: Tuint8_t(112), Fchartype: Tuint8_t(12), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(26624), Fbprops: Tuint16_t(96)}, // 860
{Fscript: Tuint8_t(112), Fchartype: Tuint8_t(21), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(68)}, // 861
{Fscript: Tuint8_t(112), Fchartype: Tuint8_t(21), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(124)}, // 862
{Fscript: Tuint8_t(112), Fchartype: Tuint8_t(21), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(106)}, // 863
{Fscript: Tuint8_t(69), Fchartype: Tuint8_t(24), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(28762), Fbprops: Tuint16_t(56)}, // 864
{Fchartype: Tuint8_t(9), Fgbprop: Tuint8_t(12), Fother_case: -35332, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(74)}, // 865
{Fscript: Tuint8_t(69), Fchartype: Tuint8_t(24), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(56)}, // 866
{Fchartype: Tuint8_t(9), Fgbprop: Tuint8_t(12), Fother_case: -42280, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(74)}, // 867
{Fchartype: Tuint8_t(5), Fgbprop: Tuint8_t(12), Fother_case: 48, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(76)}, // 868
{Fchartype: Tuint8_t(9), Fgbprop: Tuint8_t(12), Fother_case: -42308, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(74)}, // 869
{Fchartype: Tuint8_t(9), Fgbprop: Tuint8_t(12), Fother_case: -42319, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(74)}, // 870
{Fchartype: Tuint8_t(9), Fgbprop: Tuint8_t(12), Fother_case: -42315, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(74)}, // 871
{Fchartype: Tuint8_t(9), Fgbprop: Tuint8_t(12), Fother_case: -42305, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(74)}, // 872
{Fchartype: Tuint8_t(9), Fgbprop: Tuint8_t(12), Fother_case: -42258, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(74)}, // 873
{Fchartype: Tuint8_t(9), Fgbprop: Tuint8_t(12), Fother_case: -42282, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(74)}, // 874
{Fchartype: Tuint8_t(9), Fgbprop: Tuint8_t(12), Fother_case: -42261, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(74)}, // 875
{Fchartype: Tuint8_t(9), Fgbprop: Tuint8_t(12), Fother_case: 928, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(74)}, // 876
{Fchartype: Tuint8_t(9), Fgbprop: Tuint8_t(12), Fother_case: -48, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(74)}, // 877
{Fchartype: Tuint8_t(9), Fgbprop: Tuint8_t(12), Fother_case: -42307, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(74)}, // 878
{Fchartype: Tuint8_t(9), Fgbprop: Tuint8_t(12), Fother_case: -35384, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(74)}, // 879
{Fchartype: Tuint8_t(6), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(142)}, // 880
{Fscript: Tuint8_t(36), Fchartype: Tuint8_t(7), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(82)}, // 881
{Fscript: Tuint8_t(36), Fchartype: Tuint8_t(12), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(26624), Fbprops: Tuint16_t(130)}, // 882
{Fscript: Tuint8_t(36), Fchartype: Tuint8_t(12), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(26624), Fbprops: Tuint16_t(182)}, // 883
{Fscript: Tuint8_t(36), Fchartype: Tuint8_t(10), Fgbprop: Tuint8_t(5), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(144)}, // 884
{Fscript: Tuint8_t(36), Fchartype: Tuint8_t(26), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(28672), Fbprops: Tuint16_t(68)}, // 885
{Fscript: Tuint8_t(69), Fchartype: Tuint8_t(15), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18612), Fbprops: Tuint16_t(68)}, // 886
{Fscript: Tuint8_t(69), Fchartype: Tuint8_t(15), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18609), Fbprops: Tuint16_t(68)}, // 887
{Fscript: Tuint8_t(69), Fchartype: Tuint8_t(26), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18600), Fbprops: Tuint16_t(68)}, // 888
{Fscript: Tuint8_t(69), Fchartype: Tuint8_t(23), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(14504), Fbprops: Tuint16_t(68)}, // 889
{Fscript: Tuint8_t(69), Fchartype: Tuint8_t(26), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(14504), Fbprops: Tuint16_t(68)}, // 890
{Fscript: Tuint8_t(37), Fchartype: Tuint8_t(7), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(82)}, // 891
{Fscript: Tuint8_t(37), Fchartype: Tuint8_t(21), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(28672), Fbprops: Tuint16_t(68)}, // 892
{Fscript: Tuint8_t(37), Fchartype: Tuint8_t(21), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(28672), Fbprops: Tuint16_t(124)}, // 893
{Fscript: Tuint8_t(100), Fchartype: Tuint8_t(10), Fgbprop: Tuint8_t(5), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(144)}, // 894
{Fscript: Tuint8_t(100), Fchartype: Tuint8_t(7), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(82)}, // 895
{Fscript: Tuint8_t(100), Fchartype: Tuint8_t(12), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(26624), Fbprops: Tuint16_t(146)}, // 896
{Fscript: Tuint8_t(100), Fchartype: Tuint8_t(12), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(26624), Fbprops: Tuint16_t(130)}, // 897
{Fscript: Tuint8_t(100), Fchartype: Tuint8_t(21), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(124)}, // 898
{Fscript: Tuint8_t(100), Fchartype: Tuint8_t(13), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(138)}, // 899
{Fscript: Tuint8_t(6), Fchartype: Tuint8_t(12), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(26666), Fbprops: Tuint16_t(96)}, // 900
{Fscript: Tuint8_t(6), Fchartype: Tuint8_t(7), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18507), Fbprops: Tuint16_t(82)}, // 901
{Fscript: Tuint8_t(39), Fchartype: Tuint8_t(13), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(138)}, // 902
{Fscript: Tuint8_t(39), Fchartype: Tuint8_t(7), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(82)}, // 903
{Fscript: Tuint8_t(39), Fchartype: Tuint8_t(12), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(26624), Fbprops: Tuint16_t(130)}, // 904
{Fscript: Tuint8_t(39), Fchartype: Tuint8_t(12), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(26624), Fbprops: Tuint16_t(96)}, // 905
{Fscript: Tuint8_t(69), Fchartype: Tuint8_t(21), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18567), Fbprops: Tuint16_t(188)}, // 906
{Fscript: Tuint8_t(39), Fchartype: Tuint8_t(21), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(124)}, // 907
{Fscript: Tuint8_t(101), Fchartype: Tuint8_t(7), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(82)}, // 908
{Fscript: Tuint8_t(101), Fchartype: Tuint8_t(12), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(26624), Fbprops: Tuint16_t(130)}, // 909
{Fscript: Tuint8_t(101), Fchartype: Tuint8_t(10), Fgbprop: Tuint8_t(5), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(144)}, // 910
{Fscript: Tuint8_t(101), Fchartype: Tuint8_t(10), Fgbprop: Tuint8_t(5), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(172)}, // 911
{Fscript: Tuint8_t(101), Fchartype: Tuint8_t(21), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(68)}, // 912
{Fscript: Tuint8_t(40), Fchartype: Tuint8_t(12), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(26624), Fbprops: Tuint16_t(130)}, // 913
{Fscript: Tuint8_t(40), Fchartype: Tuint8_t(10), Fgbprop: Tuint8_t(5), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(144)}, // 914
{Fscript: Tuint8_t(40), Fchartype: Tuint8_t(7), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(82)}, // 915
{Fscript: Tuint8_t(40), Fchartype: Tuint8_t(12), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(26624), Fbprops: Tuint16_t(96)}, // 916
{Fscript: Tuint8_t(40), Fchartype: Tuint8_t(10), Fgbprop: Tuint8_t(5), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(172)}, // 917
{Fscript: Tuint8_t(40), Fchartype: Tuint8_t(21), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(68)}, // 918
{Fscript: Tuint8_t(40), Fchartype: Tuint8_t(21), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(106)}, // 919
{Fscript: Tuint8_t(40), Fchartype: Tuint8_t(21), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(124)}, // 920
{Fscript: Tuint8_t(69), Fchartype: Tuint8_t(6), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18480), Fbprops: Tuint16_t(136)}, // 921
{Fscript: Tuint8_t(40), Fchartype: Tuint8_t(13), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(138)}, // 922
{Fscript: Tuint8_t(16), Fchartype: Tuint8_t(6), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(136)}, // 923
{Fscript: Tuint8_t(105), Fchartype: Tuint8_t(7), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(82)}, // 924
{Fscript: Tuint8_t(105), Fchartype: Tuint8_t(12), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(26624), Fbprops: Tuint16_t(130)}, // 925
{Fscript: Tuint8_t(105), Fchartype: Tuint8_t(10), Fgbprop: Tuint8_t(5), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(144)}, // 926
{Fscript: Tuint8_t(105), Fchartype: Tuint8_t(13), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(138)}, // 927
{Fscript: Tuint8_t(105), Fchartype: Tuint8_t(21), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(68)}, // 928
{Fscript: Tuint8_t(105), Fchartype: Tuint8_t(21), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(124)}, // 929
{Fscript: Tuint8_t(107), Fchartype: Tuint8_t(7), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(82)}, // 930
{Fscript: Tuint8_t(107), Fchartype: Tuint8_t(12), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(26624), Fbprops: Tuint16_t(130)}, // 931
{Fscript: Tuint8_t(107), Fchartype: Tuint8_t(7), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(156)}, // 932
{Fscript: Tuint8_t(107), Fchartype: Tuint8_t(12), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(26624), Fbprops: Tuint16_t(96)}, // 933
{Fscript: Tuint8_t(107), Fchartype: Tuint8_t(7), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(294)}, // 934
{Fscript: Tuint8_t(107), Fchartype: Tuint8_t(6), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(136)}, // 935
{Fscript: Tuint8_t(107), Fchartype: Tuint8_t(21), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(68)}, // 936
{Fscript: Tuint8_t(107), Fchartype: Tuint8_t(21), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(106)}, // 937
{Fscript: Tuint8_t(113), Fchartype: Tuint8_t(7), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(82)}, // 938
{Fscript: Tuint8_t(113), Fchartype: Tuint8_t(10), Fgbprop: Tuint8_t(5), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(144)}, // 939
{Fscript: Tuint8_t(113), Fchartype: Tuint8_t(12), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(26624), Fbprops: Tuint16_t(130)}, // 940
{Fscript: Tuint8_t(113), Fchartype: Tuint8_t(21), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(124)}, // 941
{Fscript: Tuint8_t(113), Fchartype: Tuint8_t(6), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(136)}, // 942
{Fscript: Tuint8_t(113), Fchartype: Tuint8_t(12), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(26624), Fbprops: Tuint16_t(146)}, // 943
{Fchartype: Tuint8_t(5), Fgbprop: Tuint8_t(12), Fother_case: -928, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(76)}, // 944
{Fchartype: Tuint8_t(6), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(92)}, // 945
{Fscript: Tuint8_t(76), Fchartype: Tuint8_t(5), Fgbprop: Tuint8_t(12), Fother_case: -38864, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(70)}, // 946
{Fscript: Tuint8_t(113), Fchartype: Tuint8_t(10), Fgbprop: Tuint8_t(5), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(160)}, // 947
{Fscript: Tuint8_t(113), Fchartype: Tuint8_t(13), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(138)}, // 948
{Fscript: Tuint8_t(18), Fchartype: Tuint8_t(7), Fgbprop: Tuint8_t(9), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(82)}, // 949
{Fscript: Tuint8_t(18), Fchartype: Tuint8_t(7), Fgbprop: Tuint8_t(10), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(82)}, // 950
{Fscript: Tuint8_t(68), Fchartype: Tuint8_t(4), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432)}, // 951
{Fscript: Tuint8_t(68), Fchartype: Tuint8_t(3), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432)}, // 952
{Fscript: Tuint8_t(23), Fchartype: Tuint8_t(7), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(284)}, // 953
{Fscript: Tuint8_t(71), Fchartype: Tuint8_t(25), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(12288), Fbprops: Tuint16_t(118)}, // 954
{Fscript: Tuint8_t(3), Fchartype: Tuint8_t(7), Fgbprop: Tuint8_t(12), Fbprops: Tuint16_t(296)}, // 955
{Fscript: Tuint8_t(69), Fchartype: Tuint8_t(18), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(28705), Fbprops: Tuint16_t(54)}, // 956
{Fscript: Tuint8_t(69), Fchartype: Tuint8_t(22), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(28705), Fbprops: Tuint16_t(54)}, // 957
{Fscript: Tuint8_t(68), Fchartype: Tuint8_t(2), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(6144), Fbprops: Tuint16_t(298)}, // 958
{Fscript: Tuint8_t(3), Fchartype: Tuint8_t(7), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(39), Fbprops: Tuint16_t(82)}, // 959
{Fscript: Tuint8_t(3), Fchartype: Tuint8_t(26), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(28711), Fbprops: Tuint16_t(68)}, // 960
{Fscript: Tuint8_t(84), Fchartype: Tuint8_t(12), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(26624), Fbprops: Tuint16_t(178)}, // 961
{Fscript: Tuint8_t(84), Fchartype: Tuint8_t(12), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(26624), Fbprops: Tuint16_t(300)}, // 962
{Fscript: Tuint8_t(69), Fchartype: Tuint8_t(21), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(28672), Fbprops: Tuint16_t(68)}, // 963
{Fscript: Tuint8_t(69), Fchartype: Tuint8_t(21), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(28672), Fbprops: Tuint16_t(122)}, // 964
{Fscript: Tuint8_t(69), Fchartype: Tuint8_t(22), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(28672), Fbprops: Tuint16_t(68)}, // 965
{Fscript: Tuint8_t(69), Fchartype: Tuint8_t(18), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(28672), Fbprops: Tuint16_t(68)}, // 966
{Fscript: Tuint8_t(69), Fchartype: Tuint8_t(17), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(28672), Fbprops: Tuint16_t(126)}, // 967
{Fscript: Tuint8_t(69), Fchartype: Tuint8_t(22), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(28672), Fbprops: Tuint16_t(302)}, // 968
{Fscript: Tuint8_t(69), Fchartype: Tuint8_t(18), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(28672), Fbprops: Tuint16_t(302)}, // 969
{Fscript: Tuint8_t(69), Fchartype: Tuint8_t(21), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(8192), Fbprops: Tuint16_t(106)}, // 970
{Fscript: Tuint8_t(69), Fchartype: Tuint8_t(21), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(8192), Fbprops: Tuint16_t(304)}, // 971
{Fscript: Tuint8_t(69), Fchartype: Tuint8_t(21), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(8192), Fbprops: Tuint16_t(306)}, // 972
{Fscript: Tuint8_t(69), Fchartype: Tuint8_t(21), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(28672), Fbprops: Tuint16_t(124)}, // 973
{Fscript: Tuint8_t(69), Fchartype: Tuint8_t(22), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(28672), Fbprops: Tuint16_t(158)}, // 974
{Fscript: Tuint8_t(69), Fchartype: Tuint8_t(18), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(28672), Fbprops: Tuint16_t(158)}, // 975
{Fscript: Tuint8_t(69), Fchartype: Tuint8_t(21), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(14336), Fbprops: Tuint16_t(68)}, // 976
{Fscript: Tuint8_t(69), Fchartype: Tuint8_t(21), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(28672), Fbprops: Tuint16_t(118)}, // 977
{Fscript: Tuint8_t(69), Fchartype: Tuint8_t(17), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(12288), Fbprops: Tuint16_t(224)}, // 978
{Fscript: Tuint8_t(69), Fchartype: Tuint8_t(25), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(28672), Fbprops: Tuint16_t(226)}, // 979
{Fscript: Tuint8_t(69), Fchartype: Tuint8_t(21), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(28672), Fbprops: Tuint16_t(302)}, // 980
{Fscript: Tuint8_t(69), Fchartype: Tuint8_t(21), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(28672), Fbprops: Tuint16_t(308)}, // 981
{Fscript: Tuint8_t(69), Fchartype: Tuint8_t(17), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(12288), Fbprops: Tuint16_t(126)}, // 982
{Fscript: Tuint8_t(69), Fchartype: Tuint8_t(21), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(8192), Fbprops: Tuint16_t(68)}, // 983
{Fscript: Tuint8_t(69), Fchartype: Tuint8_t(13), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(10240), Fbprops: Tuint16_t(310)}, // 984
{Fchartype: Tuint8_t(9), Fgbprop: Tuint8_t(12), Fother_case: 32, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(312)}, // 985
{Fscript: Tuint8_t(69), Fchartype: Tuint8_t(24), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(28672), Fbprops: Tuint16_t(314)}, // 986
{Fchartype: Tuint8_t(5), Fgbprop: Tuint8_t(12), Fother_case: -32, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(316)}, // 987
{Fscript: Tuint8_t(69), Fchartype: Tuint8_t(21), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(28825), Fbprops: Tuint16_t(124)}, // 988
{Fscript: Tuint8_t(69), Fchartype: Tuint8_t(22), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(28825), Fbprops: Tuint16_t(318)}, // 989
{Fscript: Tuint8_t(69), Fchartype: Tuint8_t(18), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(28825), Fbprops: Tuint16_t(318)}, // 990
{Fscript: Tuint8_t(69), Fchartype: Tuint8_t(21), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(28825), Fbprops: Tuint16_t(106)}, // 991
{Fscript: Tuint8_t(69), Fchartype: Tuint8_t(6), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(18525), Fbprops: Tuint16_t(320)}, // 992
{Fscript: Tuint8_t(69), Fchartype: Tuint8_t(1), Fgbprop: Tuint8_t(2), Fscriptx_bidiclass: Tuint16_t(28672), Fbprops: Tuint16_t(322)}, // 993
{Fscript: Tuint8_t(31), Fchartype: Tuint8_t(7), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(82)}, // 994
{Fscript: Tuint8_t(69), Fchartype: Tuint8_t(21), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18552), Fbprops: Tuint16_t(68)}, // 995
{Fscript: Tuint8_t(69), Fchartype: Tuint8_t(21), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(28792), Fbprops: Tuint16_t(68)}, // 996
{Fscript: Tuint8_t(69), Fchartype: Tuint8_t(21), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18483), Fbprops: Tuint16_t(68)}, // 997
{Fscript: Tuint8_t(69), Fchartype: Tuint8_t(15), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18555), Fbprops: Tuint16_t(68)}, // 998
{Fscript: Tuint8_t(69), Fchartype: Tuint8_t(26), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18483), Fbprops: Tuint16_t(68)}, // 999
{Fscript: Tuint8_t(1), Fchartype: Tuint8_t(14), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(28672), Fbprops: Tuint16_t(82)}, // 1000
{Fscript: Tuint8_t(1), Fchartype: Tuint8_t(15), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(28672), Fbprops: Tuint16_t(68)}, // 1001
{Fscript: Tuint8_t(1), Fchartype: Tuint8_t(26), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(28672), Fbprops: Tuint16_t(68)}, // 1002
{Fscript: Tuint8_t(1), Fchartype: Tuint8_t(26), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(68)}, // 1003
{Fscript: Tuint8_t(102), Fchartype: Tuint8_t(7), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(82)}, // 1004
{Fscript: Tuint8_t(103), Fchartype: Tuint8_t(7), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(82)}, // 1005
{Fscript: Tuint8_t(84), Fchartype: Tuint8_t(12), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(26651), Fbprops: Tuint16_t(96)}, // 1006
{Fscript: Tuint8_t(69), Fchartype: Tuint8_t(15), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(10267), Fbprops: Tuint16_t(68)}, // 1007
{Fscript: Tuint8_t(81), Fchartype: Tuint8_t(7), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(82)}, // 1008
{Fscript: Tuint8_t(81), Fchartype: Tuint8_t(15), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(68)}, // 1009
{Fscript: Tuint8_t(82), Fchartype: Tuint8_t(7), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(82)}, // 1010
{Fscript: Tuint8_t(82), Fchartype: Tuint8_t(14), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(82)}, // 1011
{Fscript: Tuint8_t(53), Fchartype: Tuint8_t(7), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(82)}, // 1012
{Fscript: Tuint8_t(53), Fchartype: Tuint8_t(12), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(26624), Fbprops: Tuint16_t(130)}, // 1013
{Fscript: Tuint8_t(85), Fchartype: Tuint8_t(7), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(82)}, // 1014
{Fscript: Tuint8_t(85), Fchartype: Tuint8_t(21), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(106)}, // 1015
{Fscript: Tuint8_t(91), Fchartype: Tuint8_t(7), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(82)}, // 1016
{Fscript: Tuint8_t(91), Fchartype: Tuint8_t(21), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(106)}, // 1017
{Fscript: Tuint8_t(91), Fchartype: Tuint8_t(14), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(82)}, // 1018
{Fscript: Tuint8_t(83), Fchartype: Tuint8_t(9), Fgbprop: Tuint8_t(12), Fother_case: 40, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(74)}, // 1019
{Fscript: Tuint8_t(83), Fchartype: Tuint8_t(5), Fgbprop: Tuint8_t(12), Fother_case: -40, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(76)}, // 1020
{Fscript: Tuint8_t(86), Fchartype: Tuint8_t(7), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(82)}, // 1021
{Fscript: Tuint8_t(87), Fchartype: Tuint8_t(7), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(82)}, // 1022
{Fscript: Tuint8_t(87), Fchartype: Tuint8_t(13), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(138)}, // 1023
{Fscript: Tuint8_t(145), Fchartype: Tuint8_t(9), Fgbprop: Tuint8_t(12), Fother_case: 40, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(74)}, // 1024
{Fscript: Tuint8_t(145), Fchartype: Tuint8_t(5), Fgbprop: Tuint8_t(12), Fother_case: -40, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(76)}, // 1025
{Fscript: Tuint8_t(127), Fchartype: Tuint8_t(7), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(82)}, // 1026
{Fscript: Tuint8_t(125), Fchartype: Tuint8_t(7), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(82)}, // 1027
{Fscript: Tuint8_t(125), Fchartype: Tuint8_t(21), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(68)}, // 1028
{Fscript: Tuint8_t(161), Fchartype: Tuint8_t(9), Fgbprop: Tuint8_t(12), Fother_case: 39, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(74)}, // 1029
{Fscript: Tuint8_t(161), Fchartype: Tuint8_t(5), Fgbprop: Tuint8_t(12), Fother_case: -39, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(76)}, // 1030
{Fscript: Tuint8_t(49), Fchartype: Tuint8_t(7), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(82)}, // 1031
{Fchartype: Tuint8_t(6), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(94)}, // 1032
{Fscript: Tuint8_t(32), Fchartype: Tuint8_t(7), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(34816), Fbprops: Tuint16_t(82)}, // 1033
{Fscript: Tuint8_t(114), Fchartype: Tuint8_t(7), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(34816), Fbprops: Tuint16_t(82)}, // 1034
{Fscript: Tuint8_t(114), Fchartype: Tuint8_t(21), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(34816), Fbprops: Tuint16_t(106)}, // 1035
{Fscript: Tuint8_t(114), Fchartype: Tuint8_t(15), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(34816), Fbprops: Tuint16_t(68)}, // 1036
{Fscript: Tuint8_t(133), Fchartype: Tuint8_t(7), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(34816), Fbprops: Tuint16_t(82)}, // 1037
{Fscript: Tuint8_t(133), Fchartype: Tuint8_t(26), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(34816), Fbprops: Tuint16_t(68)}, // 1038
{Fscript: Tuint8_t(133), Fchartype: Tuint8_t(15), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(34816), Fbprops: Tuint16_t(68)}, // 1039
{Fscript: Tuint8_t(132), Fchartype: Tuint8_t(7), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(34816), Fbprops: Tuint16_t(82)}, // 1040
{Fscript: Tuint8_t(132), Fchartype: Tuint8_t(15), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(34816), Fbprops: Tuint16_t(68)}, // 1041
{Fscript: Tuint8_t(139), Fchartype: Tuint8_t(7), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(34816), Fbprops: Tuint16_t(82)}, // 1042
{Fscript: Tuint8_t(139), Fchartype: Tuint8_t(15), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(34816), Fbprops: Tuint16_t(68)}, // 1043
{Fscript: Tuint8_t(95), Fchartype: Tuint8_t(7), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(34816), Fbprops: Tuint16_t(82)}, // 1044
{Fscript: Tuint8_t(95), Fchartype: Tuint8_t(15), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(34816), Fbprops: Tuint16_t(68)}, // 1045
{Fscript: Tuint8_t(95), Fchartype: Tuint8_t(21), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(28672), Fbprops: Tuint16_t(106)}, // 1046
{Fscript: Tuint8_t(104), Fchartype: Tuint8_t(7), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(34816), Fbprops: Tuint16_t(82)}, // 1047
{Fscript: Tuint8_t(104), Fchartype: Tuint8_t(21), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(34816), Fbprops: Tuint16_t(68)}, // 1048
{Fscript: Tuint8_t(122), Fchartype: Tuint8_t(7), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(34816), Fbprops: Tuint16_t(82)}, // 1049
{Fscript: Tuint8_t(121), Fchartype: Tuint8_t(7), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(34816), Fbprops: Tuint16_t(82)}, // 1050
{Fscript: Tuint8_t(121), Fchartype: Tuint8_t(15), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(34816), Fbprops: Tuint16_t(68)}, // 1051
{Fscript: Tuint8_t(92), Fchartype: Tuint8_t(7), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(34816), Fbprops: Tuint16_t(82)}, // 1052
{Fscript: Tuint8_t(92), Fchartype: Tuint8_t(12), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(26624), Fbprops: Tuint16_t(130)}, // 1053
{Fscript: Tuint8_t(92), Fchartype: Tuint8_t(12), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(26624), Fbprops: Tuint16_t(102)}, // 1054
{Fscript: Tuint8_t(92), Fchartype: Tuint8_t(12), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(26624), Fbprops: Tuint16_t(182)}, // 1055
{Fscript: Tuint8_t(92), Fchartype: Tuint8_t(15), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(34816), Fbprops: Tuint16_t(68)}, // 1056
{Fscript: Tuint8_t(92), Fchartype: Tuint8_t(21), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(34816), Fbprops: Tuint16_t(68)}, // 1057
{Fscript: Tuint8_t(92), Fchartype: Tuint8_t(21), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(34816), Fbprops: Tuint16_t(124)}, // 1058
{Fscript: Tuint8_t(115), Fchartype: Tuint8_t(7), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(34816), Fbprops: Tuint16_t(82)}, // 1059
{Fscript: Tuint8_t(115), Fchartype: Tuint8_t(15), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(34816), Fbprops: Tuint16_t(68)}, // 1060
{Fscript: Tuint8_t(115), Fchartype: Tuint8_t(21), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(34816), Fbprops: Tuint16_t(68)}, // 1061
{Fscript: Tuint8_t(131), Fchartype: Tuint8_t(7), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(34816), Fbprops: Tuint16_t(82)}, // 1062
{Fscript: Tuint8_t(131), Fchartype: Tuint8_t(15), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(34816), Fbprops: Tuint16_t(68)}, // 1063
{Fscript: Tuint8_t(51), Fchartype: Tuint8_t(7), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(34816), Fbprops: Tuint16_t(82)}, // 1064
{Fscript: Tuint8_t(51), Fchartype: Tuint8_t(26), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(34816), Fbprops: Tuint16_t(68)}, // 1065
{Fscript: Tuint8_t(51), Fchartype: Tuint8_t(12), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(26624), Fbprops: Tuint16_t(96)}, // 1066
{Fscript: Tuint8_t(51), Fchartype: Tuint8_t(15), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(34816), Fbprops: Tuint16_t(68)}, // 1067
{Fscript: Tuint8_t(51), Fchartype: Tuint8_t(21), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(34816), Fbprops: Tuint16_t(106)}, // 1068
{Fscript: Tuint8_t(51), Fchartype: Tuint8_t(21), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(34918), Fbprops: Tuint16_t(106)}, // 1069
{Fscript: Tuint8_t(51), Fchartype: Tuint8_t(21), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(34816), Fbprops: Tuint16_t(68)}, // 1070
{Fscript: Tuint8_t(108), Fchartype: Tuint8_t(7), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(34816), Fbprops: Tuint16_t(82)}, // 1071
{Fscript: Tuint8_t(108), Fchartype: Tuint8_t(21), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(28672), Fbprops: Tuint16_t(68)}, // 1072
{Fscript: Tuint8_t(108), Fchartype: Tuint8_t(21), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(28672), Fbprops: Tuint16_t(106)}, // 1073
{Fscript: Tuint8_t(116), Fchartype: Tuint8_t(7), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(34816), Fbprops: Tuint16_t(82)}, // 1074
{Fscript: Tuint8_t(116), Fchartype: Tuint8_t(15), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(34816), Fbprops: Tuint16_t(68)}, // 1075
{Fscript: Tuint8_t(117), Fchartype: Tuint8_t(7), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(34816), Fbprops: Tuint16_t(82)}, // 1076
{Fscript: Tuint8_t(117), Fchartype: Tuint8_t(15), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(34816), Fbprops: Tuint16_t(68)}, // 1077
{Fscript: Tuint8_t(54), Fchartype: Tuint8_t(7), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(34816), Fbprops: Tuint16_t(82)}, // 1078
{Fscript: Tuint8_t(54), Fchartype: Tuint8_t(21), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(34816), Fbprops: Tuint16_t(106)}, // 1079
{Fscript: Tuint8_t(54), Fchartype: Tuint8_t(15), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(34816), Fbprops: Tuint16_t(68)}, // 1080
{Fscript: Tuint8_t(118), Fchartype: Tuint8_t(7), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(34816), Fbprops: Tuint16_t(82)}, // 1081
{Fscript: Tuint8_t(140), Fchartype: Tuint8_t(9), Fgbprop: Tuint8_t(12), Fother_case: 64, Fscriptx_bidiclass: Tuint16_t(34816), Fbprops: Tuint16_t(74)}, // 1082
{Fscript: Tuint8_t(140), Fchartype: Tuint8_t(5), Fgbprop: Tuint8_t(12), Fother_case: -64, Fscriptx_bidiclass: Tuint16_t(34816), Fbprops: Tuint16_t(76)}, // 1083
{Fscript: Tuint8_t(140), Fchartype: Tuint8_t(15), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(34816), Fbprops: Tuint16_t(68)}, // 1084
{Fscript: Tuint8_t(62), Fchartype: Tuint8_t(7), Fgbprop: Tuint8_t(12), Fbprops: Tuint16_t(82)}, // 1085
{Fscript: Tuint8_t(62), Fchartype: Tuint8_t(7), Fgbprop: Tuint8_t(12), Fbprops: Tuint16_t(294)}, // 1086
{Fscript: Tuint8_t(62), Fchartype: Tuint8_t(12), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(26624), Fbprops: Tuint16_t(128)}, // 1087
{Fscript: Tuint8_t(62), Fchartype: Tuint8_t(13), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(2048), Fbprops: Tuint16_t(138)}, // 1088
{Fscript: Tuint8_t(3), Fchartype: Tuint8_t(15), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(2048), Fbprops: Tuint16_t(68)}, // 1089
{Fscript: Tuint8_t(65), Fchartype: Tuint8_t(7), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(34816), Fbprops: Tuint16_t(82)}, // 1090
{Fscript: Tuint8_t(65), Fchartype: Tuint8_t(12), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(26624), Fbprops: Tuint16_t(130)}, // 1091
{Fscript: Tuint8_t(65), Fchartype: Tuint8_t(17), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(34816), Fbprops: Tuint16_t(126)}, // 1092
{Fscript: Tuint8_t(152), Fchartype: Tuint8_t(7), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(34816), Fbprops: Tuint16_t(82)}, // 1093
{Fscript: Tuint8_t(152), Fchartype: Tuint8_t(15), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(34816), Fbprops: Tuint16_t(68)}, // 1094
{Fscript: Tuint8_t(63), Fchartype: Tuint8_t(7), Fgbprop: Tuint8_t(12), Fbprops: Tuint16_t(82)}, // 1095
{Fscript: Tuint8_t(63), Fchartype: Tuint8_t(12), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(26624), Fbprops: Tuint16_t(96)}, // 1096
{Fscript: Tuint8_t(63), Fchartype: Tuint8_t(15), Fgbprop: Tuint8_t(12), Fbprops: Tuint16_t(68)}, // 1097
{Fscript: Tuint8_t(63), Fchartype: Tuint8_t(21), Fgbprop: Tuint8_t(12), Fbprops: Tuint16_t(124)}, // 1098
{Fscript: Tuint8_t(67), Fchartype: Tuint8_t(7), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(34816), Fbprops: Tuint16_t(82)}, // 1099
{Fscript: Tuint8_t(67), Fchartype: Tuint8_t(12), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(26624), Fbprops: Tuint16_t(96)}, // 1100
{Fscript: Tuint8_t(67), Fchartype: Tuint8_t(21), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(34816), Fbprops: Tuint16_t(124)}, // 1101
{Fscript: Tuint8_t(156), Fchartype: Tuint8_t(7), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(34816), Fbprops: Tuint16_t(82)}, // 1102
{Fscript: Tuint8_t(156), Fchartype: Tuint8_t(15), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(34816), Fbprops: Tuint16_t(68)}, // 1103
{Fscript: Tuint8_t(153), Fchartype: Tuint8_t(7), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(34816), Fbprops: Tuint16_t(82)}, // 1104
{Fscript: Tuint8_t(120), Fchartype: Tuint8_t(10), Fgbprop: Tuint8_t(5), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(144)}, // 1105
{Fscript: Tuint8_t(120), Fchartype: Tuint8_t(12), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(26624), Fbprops: Tuint16_t(130)}, // 1106
{Fscript: Tuint8_t(120), Fchartype: Tuint8_t(7), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(82)}, // 1107
{Fscript: Tuint8_t(120), Fchartype: Tuint8_t(12), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(26624), Fbprops: Tuint16_t(146)}, // 1108
{Fscript: Tuint8_t(120), Fchartype: Tuint8_t(21), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(124)}, // 1109
{Fscript: Tuint8_t(120), Fchartype: Tuint8_t(21), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(106)}, // 1110
{Fscript: Tuint8_t(120), Fchartype: Tuint8_t(15), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(28672), Fbprops: Tuint16_t(68)}, // 1111
{Fscript: Tuint8_t(120), Fchartype: Tuint8_t(13), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(138)}, // 1112
{Fscript: Tuint8_t(120), Fchartype: Tuint8_t(12), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(26624), Fbprops: Tuint16_t(182)}, // 1113
{Fscript: Tuint8_t(41), Fchartype: Tuint8_t(12), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(26624), Fbprops: Tuint16_t(102)}, // 1114
{Fscript: Tuint8_t(41), Fchartype: Tuint8_t(10), Fgbprop: Tuint8_t(5), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(144)}, // 1115
{Fscript: Tuint8_t(41), Fchartype: Tuint8_t(7), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(82)}, // 1116
{Fscript: Tuint8_t(41), Fchartype: Tuint8_t(12), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(26624), Fbprops: Tuint16_t(130)}, // 1117
{Fscript: Tuint8_t(41), Fchartype: Tuint8_t(12), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(26624), Fbprops: Tuint16_t(146)}, // 1118
{Fscript: Tuint8_t(41), Fchartype: Tuint8_t(12), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(26624), Fbprops: Tuint16_t(96)}, // 1119
{Fscript: Tuint8_t(41), Fchartype: Tuint8_t(21), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(68)}, // 1120
{Fscript: Tuint8_t(41), Fchartype: Tuint8_t(1), Fgbprop: Tuint8_t(4), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(132)}, // 1121
{Fscript: Tuint8_t(41), Fchartype: Tuint8_t(21), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(124)}, // 1122
{Fscript: Tuint8_t(124), Fchartype: Tuint8_t(7), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(82)}, // 1123
{Fscript: Tuint8_t(124), Fchartype: Tuint8_t(13), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(138)}, // 1124
{Fscript: Tuint8_t(43), Fchartype: Tuint8_t(12), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(26624), Fbprops: Tuint16_t(130)}, // 1125
{Fscript: Tuint8_t(43), Fchartype: Tuint8_t(7), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(82)}, // 1126
{Fscript: Tuint8_t(43), Fchartype: Tuint8_t(10), Fgbprop: Tuint8_t(5), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(144)}, // 1127
{Fscript: Tuint8_t(43), Fchartype: Tuint8_t(12), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(26624), Fbprops: Tuint16_t(146)}, // 1128
{Fscript: Tuint8_t(43), Fchartype: Tuint8_t(13), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(138)}, // 1129
{Fscript: Tuint8_t(43), Fchartype: Tuint8_t(21), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(68)}, // 1130
{Fscript: Tuint8_t(43), Fchartype: Tuint8_t(21), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(124)}, // 1131
{Fscript: Tuint8_t(50), Fchartype: Tuint8_t(7), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(82)}, // 1132
{Fscript: Tuint8_t(50), Fchartype: Tuint8_t(12), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(26624), Fbprops: Tuint16_t(96)}, // 1133
{Fscript: Tuint8_t(50), Fchartype: Tuint8_t(21), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(68)}, // 1134
{Fscript: Tuint8_t(44), Fchartype: Tuint8_t(12), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(26624), Fbprops: Tuint16_t(130)}, // 1135
{Fscript: Tuint8_t(44), Fchartype: Tuint8_t(10), Fgbprop: Tuint8_t(5), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(144)}, // 1136
{Fscript: Tuint8_t(44), Fchartype: Tuint8_t(7), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(82)}, // 1137
{Fscript: Tuint8_t(44), Fchartype: Tuint8_t(10), Fgbprop: Tuint8_t(5), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(172)}, // 1138
{Fscript: Tuint8_t(44), Fchartype: Tuint8_t(7), Fgbprop: Tuint8_t(4), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(82)}, // 1139
{Fscript: Tuint8_t(44), Fchartype: Tuint8_t(21), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(124)}, // 1140
{Fscript: Tuint8_t(44), Fchartype: Tuint8_t(21), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(68)}, // 1141
{Fscript: Tuint8_t(44), Fchartype: Tuint8_t(12), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(26624), Fbprops: Tuint16_t(102)}, // 1142
{Fscript: Tuint8_t(44), Fchartype: Tuint8_t(12), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(26624), Fbprops: Tuint16_t(96)}, // 1143
{Fscript: Tuint8_t(44), Fchartype: Tuint8_t(13), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(138)}, // 1144
{Fscript: Tuint8_t(15), Fchartype: Tuint8_t(15), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(68)}, // 1145
{Fscript: Tuint8_t(48), Fchartype: Tuint8_t(7), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(82)}, // 1146
{Fscript: Tuint8_t(48), Fchartype: Tuint8_t(10), Fgbprop: Tuint8_t(5), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(144)}, // 1147
{Fscript: Tuint8_t(48), Fchartype: Tuint8_t(12), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(26624), Fbprops: Tuint16_t(130)}, // 1148
{Fscript: Tuint8_t(48), Fchartype: Tuint8_t(10), Fgbprop: Tuint8_t(5), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(172)}, // 1149
{Fscript: Tuint8_t(48), Fchartype: Tuint8_t(12), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(26624), Fbprops: Tuint16_t(96)}, // 1150
{Fscript: Tuint8_t(48), Fchartype: Tuint8_t(21), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(124)}, // 1151
{Fscript: Tuint8_t(48), Fchartype: Tuint8_t(21), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(106)}, // 1152
{Fscript: Tuint8_t(48), Fchartype: Tuint8_t(21), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(68)}, // 1153
{Fscript: Tuint8_t(57), Fchartype: Tuint8_t(7), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(82)}, // 1154
{Fscript: Tuint8_t(57), Fchartype: Tuint8_t(21), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(124)}, // 1155
{Fscript: Tuint8_t(55), Fchartype: Tuint8_t(7), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(82)}, // 1156
{Fscript: Tuint8_t(55), Fchartype: Tuint8_t(12), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(26624), Fbprops: Tuint16_t(130)}, // 1157
{Fscript: Tuint8_t(55), Fchartype: Tuint8_t(10), Fgbprop: Tuint8_t(5), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(144)}, // 1158
{Fscript: Tuint8_t(55), Fchartype: Tuint8_t(12), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(26624), Fbprops: Tuint16_t(96)}, // 1159
{Fscript: Tuint8_t(55), Fchartype: Tuint8_t(12), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(26624), Fbprops: Tuint16_t(146)}, // 1160
{Fscript: Tuint8_t(55), Fchartype: Tuint8_t(13), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(138)}, // 1161
{Fscript: Tuint8_t(47), Fchartype: Tuint8_t(12), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(26624), Fbprops: Tuint16_t(130)}, // 1162
{Fscript: Tuint8_t(47), Fchartype: Tuint8_t(12), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(26705), Fbprops: Tuint16_t(130)}, // 1163
{Fscript: Tuint8_t(47), Fchartype: Tuint8_t(10), Fgbprop: Tuint8_t(5), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(144)}, // 1164
{Fscript: Tuint8_t(47), Fchartype: Tuint8_t(10), Fgbprop: Tuint8_t(5), Fscriptx_bidiclass: Tuint16_t(18513), Fbprops: Tuint16_t(144)}, // 1165
{Fscript: Tuint8_t(47), Fchartype: Tuint8_t(7), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(82)}, // 1166
{Fscript: Tuint8_t(84), Fchartype: Tuint8_t(12), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(26705), Fbprops: Tuint16_t(102)}, // 1167
{Fscript: Tuint8_t(47), Fchartype: Tuint8_t(12), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(26705), Fbprops: Tuint16_t(96)}, // 1168
{Fscript: Tuint8_t(47), Fchartype: Tuint8_t(10), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(148)}, // 1169
{Fscript: Tuint8_t(47), Fchartype: Tuint8_t(10), Fgbprop: Tuint8_t(5), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(172)}, // 1170
{Fscript: Tuint8_t(47), Fchartype: Tuint8_t(7), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(324)}, // 1171
{Fscript: Tuint8_t(47), Fchartype: Tuint8_t(12), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(26624), Fbprops: Tuint16_t(96)}, // 1172
{Fscript: Tuint8_t(144), Fchartype: Tuint8_t(7), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(82)}, // 1173
{Fscript: Tuint8_t(144), Fchartype: Tuint8_t(10), Fgbprop: Tuint8_t(5), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(144)}, // 1174
{Fscript: Tuint8_t(144), Fchartype: Tuint8_t(12), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(26624), Fbprops: Tuint16_t(130)}, // 1175
{Fscript: Tuint8_t(144), Fchartype: Tuint8_t(12), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(26624), Fbprops: Tuint16_t(146)}, // 1176
{Fscript: Tuint8_t(144), Fchartype: Tuint8_t(12), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(26624), Fbprops: Tuint16_t(96)}, // 1177
{Fscript: Tuint8_t(144), Fchartype: Tuint8_t(21), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(124)}, // 1178
{Fscript: Tuint8_t(144), Fchartype: Tuint8_t(21), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(106)}, // 1179
{Fscript: Tuint8_t(144), Fchartype: Tuint8_t(21), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(68)}, // 1180
{Fscript: Tuint8_t(144), Fchartype: Tuint8_t(13), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(138)}, // 1181
{Fscript: Tuint8_t(144), Fchartype: Tuint8_t(12), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(26624), Fbprops: Tuint16_t(102)}, // 1182
{Fscript: Tuint8_t(56), Fchartype: Tuint8_t(7), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(82)}, // 1183
{Fscript: Tuint8_t(56), Fchartype: Tuint8_t(10), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(148)}, // 1184
{Fscript: Tuint8_t(56), Fchartype: Tuint8_t(10), Fgbprop: Tuint8_t(5), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(144)}, // 1185
{Fscript: Tuint8_t(56), Fchartype: Tuint8_t(12), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(26624), Fbprops: Tuint16_t(130)}, // 1186
{Fscript: Tuint8_t(56), Fchartype: Tuint8_t(12), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(26624), Fbprops: Tuint16_t(146)}, // 1187
{Fscript: Tuint8_t(56), Fchartype: Tuint8_t(12), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(26624), Fbprops: Tuint16_t(96)}, // 1188
{Fscript: Tuint8_t(56), Fchartype: Tuint8_t(21), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(68)}, // 1189
{Fscript: Tuint8_t(56), Fchartype: Tuint8_t(13), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(138)}, // 1190
{Fscript: Tuint8_t(135), Fchartype: Tuint8_t(7), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(82)}, // 1191
{Fscript: Tuint8_t(135), Fchartype: Tuint8_t(10), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(148)}, // 1192
{Fscript: Tuint8_t(135), Fchartype: Tuint8_t(10), Fgbprop: Tuint8_t(5), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(144)}, // 1193
{Fscript: Tuint8_t(135), Fchartype: Tuint8_t(12), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(26624), Fbprops: Tuint16_t(130)}, // 1194
{Fscript: Tuint8_t(135), Fchartype: Tuint8_t(12), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(26624), Fbprops: Tuint16_t(146)}, // 1195
{Fscript: Tuint8_t(135), Fchartype: Tuint8_t(12), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(26624), Fbprops: Tuint16_t(96)}, // 1196
{Fscript: Tuint8_t(135), Fchartype: Tuint8_t(21), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(68)}, // 1197
{Fscript: Tuint8_t(135), Fchartype: Tuint8_t(21), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(124)}, // 1198
{Fscript: Tuint8_t(135), Fchartype: Tuint8_t(21), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(106)}, // 1199
{Fscript: Tuint8_t(135), Fchartype: Tuint8_t(21), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(176)}, // 1200
{Fscript: Tuint8_t(52), Fchartype: Tuint8_t(7), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(82)}, // 1201
{Fscript: Tuint8_t(52), Fchartype: Tuint8_t(10), Fgbprop: Tuint8_t(5), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(144)}, // 1202
{Fscript: Tuint8_t(52), Fchartype: Tuint8_t(12), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(26624), Fbprops: Tuint16_t(130)}, // 1203
{Fscript: Tuint8_t(52), Fchartype: Tuint8_t(12), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(26624), Fbprops: Tuint16_t(146)}, // 1204
{Fscript: Tuint8_t(52), Fchartype: Tuint8_t(21), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(124)}, // 1205
{Fscript: Tuint8_t(52), Fchartype: Tuint8_t(21), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(68)}, // 1206
{Fscript: Tuint8_t(52), Fchartype: Tuint8_t(13), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(138)}, // 1207
{Fscript: Tuint8_t(45), Fchartype: Tuint8_t(7), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(82)}, // 1208
{Fscript: Tuint8_t(45), Fchartype: Tuint8_t(12), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(26624), Fbprops: Tuint16_t(130)}, // 1209
{Fscript: Tuint8_t(45), Fchartype: Tuint8_t(10), Fgbprop: Tuint8_t(5), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(144)}, // 1210
{Fscript: Tuint8_t(45), Fchartype: Tuint8_t(10), Fgbprop: Tuint8_t(5), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(172)}, // 1211
{Fscript: Tuint8_t(45), Fchartype: Tuint8_t(12), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(26624), Fbprops: Tuint16_t(96)}, // 1212
{Fscript: Tuint8_t(45), Fchartype: Tuint8_t(21), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(68)}, // 1213
{Fscript: Tuint8_t(45), Fchartype: Tuint8_t(13), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(138)}, // 1214
{Fscript: Tuint8_t(137), Fchartype: Tuint8_t(7), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(82)}, // 1215
{Fscript: Tuint8_t(137), Fchartype: Tuint8_t(12), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(26624), Fbprops: Tuint16_t(130)}, // 1216
{Fscript: Tuint8_t(137), Fchartype: Tuint8_t(10), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(144)}, // 1217
{Fscript: Tuint8_t(137), Fchartype: Tuint8_t(10), Fgbprop: Tuint8_t(5), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(144)}, // 1218
{Fscript: Tuint8_t(137), Fchartype: Tuint8_t(12), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(26624), Fbprops: Tuint16_t(146)}, // 1219
{Fscript: Tuint8_t(137), Fchartype: Tuint8_t(13), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(138)}, // 1220
{Fscript: Tuint8_t(137), Fchartype: Tuint8_t(15), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(68)}, // 1221
{Fscript: Tuint8_t(137), Fchartype: Tuint8_t(21), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(124)}, // 1222
{Fscript: Tuint8_t(137), Fchartype: Tuint8_t(26), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(68)}, // 1223
{Fscript: Tuint8_t(60), Fchartype: Tuint8_t(7), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(82)}, // 1224
{Fscript: Tuint8_t(60), Fchartype: Tuint8_t(10), Fgbprop: Tuint8_t(5), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(144)}, // 1225
{Fscript: Tuint8_t(60), Fchartype: Tuint8_t(12), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(26624), Fbprops: Tuint16_t(130)}, // 1226
{Fscript: Tuint8_t(60), Fchartype: Tuint8_t(12), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(26624), Fbprops: Tuint16_t(146)}, // 1227
{Fscript: Tuint8_t(60), Fchartype: Tuint8_t(12), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(26624), Fbprops: Tuint16_t(96)}, // 1228
{Fscript: Tuint8_t(60), Fchartype: Tuint8_t(21), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(68)}, // 1229
{Fscript: Tuint8_t(136), Fchartype: Tuint8_t(9), Fgbprop: Tuint8_t(12), Fother_case: 32, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(74)}, // 1230
{Fscript: Tuint8_t(136), Fchartype: Tuint8_t(5), Fgbprop: Tuint8_t(12), Fother_case: -32, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(76)}, // 1231
{Fscript: Tuint8_t(136), Fchartype: Tuint8_t(13), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(138)}, // 1232
{Fscript: Tuint8_t(136), Fchartype: Tuint8_t(15), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(68)}, // 1233
{Fscript: Tuint8_t(136), Fchartype: Tuint8_t(7), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(82)}, // 1234
{Fscript: Tuint8_t(157), Fchartype: Tuint8_t(7), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(82)}, // 1235
{Fscript: Tuint8_t(157), Fchartype: Tuint8_t(10), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(148)}, // 1236
{Fscript: Tuint8_t(157), Fchartype: Tuint8_t(10), Fgbprop: Tuint8_t(5), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(144)}, // 1237
{Fscript: Tuint8_t(157), Fchartype: Tuint8_t(12), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(26624), Fbprops: Tuint16_t(130)}, // 1238
{Fscript: Tuint8_t(157), Fchartype: Tuint8_t(10), Fgbprop: Tuint8_t(5), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(172)}, // 1239
{Fscript: Tuint8_t(157), Fchartype: Tuint8_t(12), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(26624), Fbprops: Tuint16_t(146)}, // 1240
{Fscript: Tuint8_t(157), Fchartype: Tuint8_t(7), Fgbprop: Tuint8_t(4), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(82)}, // 1241
{Fscript: Tuint8_t(157), Fchartype: Tuint8_t(12), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(26624), Fbprops: Tuint16_t(96)}, // 1242
{Fscript: Tuint8_t(157), Fchartype: Tuint8_t(21), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(124)}, // 1243
{Fscript: Tuint8_t(157), Fchartype: Tuint8_t(21), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(68)}, // 1244
{Fscript: Tuint8_t(157), Fchartype: Tuint8_t(13), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(138)}, // 1245
{Fscript: Tuint8_t(64), Fchartype: Tuint8_t(7), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(82)}, // 1246
{Fscript: Tuint8_t(64), Fchartype: Tuint8_t(10), Fgbprop: Tuint8_t(5), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(144)}, // 1247
{Fscript: Tuint8_t(64), Fchartype: Tuint8_t(12), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(26624), Fbprops: Tuint16_t(130)}, // 1248
{Fscript: Tuint8_t(64), Fchartype: Tuint8_t(12), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(26624), Fbprops: Tuint16_t(146)}, // 1249
{Fscript: Tuint8_t(64), Fchartype: Tuint8_t(21), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(68)}, // 1250
{Fscript: Tuint8_t(149), Fchartype: Tuint8_t(7), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(82)}, // 1251
{Fscript: Tuint8_t(149), Fchartype: Tuint8_t(12), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(26624), Fbprops: Tuint16_t(130)}, // 1252
{Fscript: Tuint8_t(149), Fchartype: Tuint8_t(12), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(130)}, // 1253
{Fscript: Tuint8_t(149), Fchartype: Tuint8_t(12), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(26624), Fbprops: Tuint16_t(102)}, // 1254
{Fscript: Tuint8_t(149), Fchartype: Tuint8_t(12), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(26624), Fbprops: Tuint16_t(146)}, // 1255
{Fscript: Tuint8_t(149), Fchartype: Tuint8_t(10), Fgbprop: Tuint8_t(5), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(144)}, // 1256
{Fscript: Tuint8_t(149), Fchartype: Tuint8_t(7), Fgbprop: Tuint8_t(4), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(82)}, // 1257
{Fscript: Tuint8_t(149), Fchartype: Tuint8_t(21), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(68)}, // 1258
{Fscript: Tuint8_t(149), Fchartype: Tuint8_t(21), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(124)}, // 1259
{Fscript: Tuint8_t(148), Fchartype: Tuint8_t(7), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(82)}, // 1260
{Fscript: Tuint8_t(148), Fchartype: Tuint8_t(12), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(26624), Fbprops: Tuint16_t(130)}, // 1261
{Fscript: Tuint8_t(148), Fchartype: Tuint8_t(10), Fgbprop: Tuint8_t(5), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(144)}, // 1262
{Fscript: Tuint8_t(148), Fchartype: Tuint8_t(7), Fgbprop: Tuint8_t(4), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(82)}, // 1263
{Fscript: Tuint8_t(148), Fchartype: Tuint8_t(12), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(26624), Fbprops: Tuint16_t(326)}, // 1264
{Fscript: Tuint8_t(148), Fchartype: Tuint8_t(12), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(26624), Fbprops: Tuint16_t(146)}, // 1265
{Fscript: Tuint8_t(148), Fchartype: Tuint8_t(21), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(68)}, // 1266
{Fscript: Tuint8_t(148), Fchartype: Tuint8_t(21), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(124)}, // 1267
{Fscript: Tuint8_t(148), Fchartype: Tuint8_t(21), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(106)}, // 1268
{Fscript: Tuint8_t(134), Fchartype: Tuint8_t(7), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(82)}, // 1269
{Fscript: Tuint8_t(142), Fchartype: Tuint8_t(7), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(82)}, // 1270
{Fscript: Tuint8_t(142), Fchartype: Tuint8_t(10), Fgbprop: Tuint8_t(5), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(144)}, // 1271
{Fscript: Tuint8_t(142), Fchartype: Tuint8_t(12), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(26624), Fbprops: Tuint16_t(130)}, // 1272
{Fscript: Tuint8_t(142), Fchartype: Tuint8_t(12), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(146)}, // 1273
{Fscript: Tuint8_t(142), Fchartype: Tuint8_t(21), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(124)}, // 1274
{Fscript: Tuint8_t(142), Fchartype: Tuint8_t(21), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(106)}, // 1275
{Fscript: Tuint8_t(142), Fchartype: Tuint8_t(21), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(68)}, // 1276
{Fscript: Tuint8_t(142), Fchartype: Tuint8_t(13), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(138)}, // 1277
{Fscript: Tuint8_t(142), Fchartype: Tuint8_t(15), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(68)}, // 1278
{Fscript: Tuint8_t(143), Fchartype: Tuint8_t(21), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(68)}, // 1279
{Fscript: Tuint8_t(143), Fchartype: Tuint8_t(21), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(106)}, // 1280
{Fscript: Tuint8_t(143), Fchartype: Tuint8_t(7), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(82)}, // 1281
{Fscript: Tuint8_t(143), Fchartype: Tuint8_t(12), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(26624), Fbprops: Tuint16_t(130)}, // 1282
{Fscript: Tuint8_t(143), Fchartype: Tuint8_t(10), Fgbprop: Tuint8_t(5), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(144)}, // 1283
{Fscript: Tuint8_t(59), Fchartype: Tuint8_t(7), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(82)}, // 1284
{Fscript: Tuint8_t(59), Fchartype: Tuint8_t(12), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(26624), Fbprops: Tuint16_t(130)}, // 1285
{Fscript: Tuint8_t(59), Fchartype: Tuint8_t(12), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(26624), Fbprops: Tuint16_t(96)}, // 1286
{Fscript: Tuint8_t(59), Fchartype: Tuint8_t(12), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(26624), Fbprops: Tuint16_t(146)}, // 1287
{Fscript: Tuint8_t(59), Fchartype: Tuint8_t(7), Fgbprop: Tuint8_t(4), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(82)}, // 1288
{Fscript: Tuint8_t(59), Fchartype: Tuint8_t(13), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(138)}, // 1289
{Fscript: Tuint8_t(61), Fchartype: Tuint8_t(7), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(82)}, // 1290
{Fscript: Tuint8_t(61), Fchartype: Tuint8_t(10), Fgbprop: Tuint8_t(5), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(144)}, // 1291
{Fscript: Tuint8_t(61), Fchartype: Tuint8_t(12), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(26624), Fbprops: Tuint16_t(130)}, // 1292
{Fscript: Tuint8_t(61), Fchartype: Tuint8_t(12), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(26624), Fbprops: Tuint16_t(146)}, // 1293
{Fscript: Tuint8_t(61), Fchartype: Tuint8_t(13), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(138)}, // 1294
{Fscript: Tuint8_t(150), Fchartype: Tuint8_t(7), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(82)}, // 1295
{Fscript: Tuint8_t(150), Fchartype: Tuint8_t(12), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(26624), Fbprops: Tuint16_t(130)}, // 1296
{Fscript: Tuint8_t(150), Fchartype: Tuint8_t(10), Fgbprop: Tuint8_t(5), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(144)}, // 1297
{Fscript: Tuint8_t(150), Fchartype: Tuint8_t(21), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(124)}, // 1298
{Fscript: Tuint8_t(11), Fchartype: Tuint8_t(15), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(68)}, // 1299
{Fscript: Tuint8_t(11), Fchartype: Tuint8_t(21), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(68)}, // 1300
{Fscript: Tuint8_t(94), Fchartype: Tuint8_t(7), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(82)}, // 1301
{Fscript: Tuint8_t(94), Fchartype: Tuint8_t(14), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(82)}, // 1302
{Fscript: Tuint8_t(94), Fchartype: Tuint8_t(21), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(106)}, // 1303
{Fscript: Tuint8_t(66), Fchartype: Tuint8_t(7), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(82)}, // 1304
{Fscript: Tuint8_t(66), Fchartype: Tuint8_t(21), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(68)}, // 1305
{Fscript: Tuint8_t(109), Fchartype: Tuint8_t(7), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(82)}, // 1306
{Fscript: Tuint8_t(109), Fchartype: Tuint8_t(1), Fgbprop: Tuint8_t(2), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(322)}, // 1307
{Fscript: Tuint8_t(138), Fchartype: Tuint8_t(7), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(82)}, // 1308
{Fscript: Tuint8_t(130), Fchartype: Tuint8_t(7), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(82)}, // 1309
{Fscript: Tuint8_t(130), Fchartype: Tuint8_t(13), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(138)}, // 1310
{Fscript: Tuint8_t(130), Fchartype: Tuint8_t(21), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(124)}, // 1311
{Fscript: Tuint8_t(159), Fchartype: Tuint8_t(7), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(82)}, // 1312
{Fscript: Tuint8_t(159), Fchartype: Tuint8_t(13), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(138)}, // 1313
{Fscript: Tuint8_t(126), Fchartype: Tuint8_t(7), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(82)}, // 1314
{Fscript: Tuint8_t(126), Fchartype: Tuint8_t(12), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(26624), Fbprops: Tuint16_t(96)}, // 1315
{Fscript: Tuint8_t(126), Fchartype: Tuint8_t(21), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(124)}, // 1316
{Fscript: Tuint8_t(128), Fchartype: Tuint8_t(7), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(82)}, // 1317
{Fscript: Tuint8_t(128), Fchartype: Tuint8_t(12), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(26624), Fbprops: Tuint16_t(96)}, // 1318
{Fscript: Tuint8_t(128), Fchartype: Tuint8_t(21), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(124)}, // 1319
{Fscript: Tuint8_t(128), Fchartype: Tuint8_t(21), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(106)}, // 1320
{Fscript: Tuint8_t(128), Fchartype: Tuint8_t(21), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(68)}, // 1321
{Fscript: Tuint8_t(128), Fchartype: Tuint8_t(26), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(68)}, // 1322
{Fscript: Tuint8_t(128), Fchartype: Tuint8_t(6), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(142)}, // 1323
{Fscript: Tuint8_t(128), Fchartype: Tuint8_t(6), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(136)}, // 1324
{Fscript: Tuint8_t(128), Fchartype: Tuint8_t(13), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(138)}, // 1325
{Fscript: Tuint8_t(128), Fchartype: Tuint8_t(15), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(68)}, // 1326
{Fscript: Tuint8_t(151), Fchartype: Tuint8_t(9), Fgbprop: Tuint8_t(12), Fother_case: 32, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(74)}, // 1327
{Fscript: Tuint8_t(151), Fchartype: Tuint8_t(5), Fgbprop: Tuint8_t(12), Fother_case: -32, Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(76)}, // 1328
{Fscript: Tuint8_t(151), Fchartype: Tuint8_t(15), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(68)}, // 1329
{Fscript: Tuint8_t(151), Fchartype: Tuint8_t(21), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(106)}, // 1330
{Fscript: Tuint8_t(151), Fchartype: Tuint8_t(21), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(124)}, // 1331
{Fscript: Tuint8_t(151), Fchartype: Tuint8_t(21), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(68)}, // 1332
{Fscript: Tuint8_t(123), Fchartype: Tuint8_t(7), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(82)}, // 1333
{Fscript: Tuint8_t(123), Fchartype: Tuint8_t(12), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(26624), Fbprops: Tuint16_t(130)}, // 1334
{Fscript: Tuint8_t(123), Fchartype: Tuint8_t(10), Fgbprop: Tuint8_t(5), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(144)}, // 1335
{Fscript: Tuint8_t(123), Fchartype: Tuint8_t(12), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(26624), Fbprops: Tuint16_t(128)}, // 1336
{Fscript: Tuint8_t(123), Fchartype: Tuint8_t(6), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(92)}, // 1337
{Fscript: Tuint8_t(146), Fchartype: Tuint8_t(6), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(136)}, // 1338
{Fscript: Tuint8_t(147), Fchartype: Tuint8_t(6), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(136)}, // 1339
{Fscript: Tuint8_t(23), Fchartype: Tuint8_t(21), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(28672), Fbprops: Tuint16_t(68)}, // 1340
{Fscript: Tuint8_t(158), Fchartype: Tuint8_t(12), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(26624), Fbprops: Tuint16_t(328)}, // 1341
{Fscript: Tuint8_t(23), Fchartype: Tuint8_t(10), Fgbprop: Tuint8_t(5), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(164)}, // 1342
{Fscript: Tuint8_t(146), Fchartype: Tuint8_t(7), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(284)}, // 1343
{Fscript: Tuint8_t(158), Fchartype: Tuint8_t(7), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(284)}, // 1344
{Fscript: Tuint8_t(21), Fchartype: Tuint8_t(6), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(92)}, // 1345
{Fscript: Tuint8_t(147), Fchartype: Tuint8_t(7), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(284)}, // 1346
{Fscript: Tuint8_t(46), Fchartype: Tuint8_t(7), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(82)}, // 1347
{Fscript: Tuint8_t(46), Fchartype: Tuint8_t(26), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(68)}, // 1348
{Fscript: Tuint8_t(46), Fchartype: Tuint8_t(12), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(26624), Fbprops: Tuint16_t(102)}, // 1349
{Fscript: Tuint8_t(46), Fchartype: Tuint8_t(12), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(26624), Fbprops: Tuint16_t(130)}, // 1350
{Fscript: Tuint8_t(46), Fchartype: Tuint8_t(21), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(124)}, // 1351
{Fscript: Tuint8_t(69), Fchartype: Tuint8_t(1), Fgbprop: Tuint8_t(2), Fscriptx_bidiclass: Tuint16_t(6153), Fbprops: Tuint16_t(66)}, // 1352
{Fscript: Tuint8_t(69), Fchartype: Tuint8_t(10), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(330)}, // 1353
{Fscript: Tuint8_t(69), Fchartype: Tuint8_t(10), Fgbprop: Tuint8_t(5), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(138)}, // 1354
{Fscript: Tuint8_t(69), Fchartype: Tuint8_t(10), Fgbprop: Tuint8_t(5), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(160)}, // 1355
{Fscript: Tuint8_t(69), Fchartype: Tuint8_t(10), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(286)}, // 1356
{Fscript: Tuint8_t(1), Fchartype: Tuint8_t(12), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(26624), Fbprops: Tuint16_t(102)}, // 1357
{Fscript: Tuint8_t(69), Fchartype: Tuint8_t(25), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(118)}, // 1358
{Fscript: Tuint8_t(69), Fchartype: Tuint8_t(13), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(10240), Fbprops: Tuint16_t(214)}, // 1359
{Fscript: Tuint8_t(141), Fchartype: Tuint8_t(26), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(68)}, // 1360
{Fscript: Tuint8_t(141), Fchartype: Tuint8_t(12), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(26624), Fbprops: Tuint16_t(102)}, // 1361
{Fscript: Tuint8_t(141), Fchartype: Tuint8_t(21), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(106)}, // 1362
{Fscript: Tuint8_t(141), Fchartype: Tuint8_t(21), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(124)}, // 1363
{Fscript: Tuint8_t(141), Fchartype: Tuint8_t(21), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(68)}, // 1364
{Fscript: Tuint8_t(35), Fchartype: Tuint8_t(12), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(26624), Fbprops: Tuint16_t(130)}, // 1365
{Fscript: Tuint8_t(154), Fchartype: Tuint8_t(7), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(82)}, // 1366
{Fscript: Tuint8_t(154), Fchartype: Tuint8_t(12), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(26624), Fbprops: Tuint16_t(96)}, // 1367
{Fscript: Tuint8_t(154), Fchartype: Tuint8_t(6), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(142)}, // 1368
{Fscript: Tuint8_t(154), Fchartype: Tuint8_t(6), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(136)}, // 1369
{Fscript: Tuint8_t(154), Fchartype: Tuint8_t(13), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(138)}, // 1370
{Fscript: Tuint8_t(154), Fchartype: Tuint8_t(26), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(68)}, // 1371
{Fscript: Tuint8_t(160), Fchartype: Tuint8_t(7), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(82)}, // 1372
{Fscript: Tuint8_t(160), Fchartype: Tuint8_t(12), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(26624), Fbprops: Tuint16_t(96)}, // 1373
{Fscript: Tuint8_t(155), Fchartype: Tuint8_t(7), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(82)}, // 1374
{Fscript: Tuint8_t(155), Fchartype: Tuint8_t(12), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(26624), Fbprops: Tuint16_t(96)}, // 1375
{Fscript: Tuint8_t(155), Fchartype: Tuint8_t(13), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(138)}, // 1376
{Fscript: Tuint8_t(155), Fchartype: Tuint8_t(23), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(14336), Fbprops: Tuint16_t(68)}, // 1377
{Fscript: Tuint8_t(129), Fchartype: Tuint8_t(7), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(34816), Fbprops: Tuint16_t(82)}, // 1378
{Fscript: Tuint8_t(129), Fchartype: Tuint8_t(15), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(34816), Fbprops: Tuint16_t(68)}, // 1379
{Fscript: Tuint8_t(129), Fchartype: Tuint8_t(12), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(26624), Fbprops: Tuint16_t(96)}, // 1380
{Fscript: Tuint8_t(58), Fchartype: Tuint8_t(9), Fgbprop: Tuint8_t(12), Fother_case: 34, Fscriptx_bidiclass: Tuint16_t(34816), Fbprops: Tuint16_t(74)}, // 1381
{Fscript: Tuint8_t(58), Fchartype: Tuint8_t(5), Fgbprop: Tuint8_t(12), Fother_case: -34, Fscriptx_bidiclass: Tuint16_t(34816), Fbprops: Tuint16_t(76)}, // 1382
{Fscript: Tuint8_t(58), Fchartype: Tuint8_t(12), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(26624), Fbprops: Tuint16_t(150)}, // 1383
{Fscript: Tuint8_t(58), Fchartype: Tuint8_t(12), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(26624), Fbprops: Tuint16_t(130)}, // 1384
{Fscript: Tuint8_t(58), Fchartype: Tuint8_t(12), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(26624), Fbprops: Tuint16_t(96)}, // 1385
{Fscript: Tuint8_t(58), Fchartype: Tuint8_t(6), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(34816), Fbprops: Tuint16_t(142)}, // 1386
{Fscript: Tuint8_t(58), Fchartype: Tuint8_t(13), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(34816), Fbprops: Tuint16_t(138)}, // 1387
{Fscript: Tuint8_t(58), Fchartype: Tuint8_t(21), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(34816), Fbprops: Tuint16_t(68)}, // 1388
{Fscript: Tuint8_t(69), Fchartype: Tuint8_t(15), Fgbprop: Tuint8_t(12), Fbprops: Tuint16_t(68)}, // 1389
{Fscript: Tuint8_t(69), Fchartype: Tuint8_t(26), Fgbprop: Tuint8_t(12), Fbprops: Tuint16_t(68)}, // 1390
{Fscript: Tuint8_t(69), Fchartype: Tuint8_t(23), Fgbprop: Tuint8_t(12), Fbprops: Tuint16_t(68)}, // 1391
{Fscript: Tuint8_t(3), Fchartype: Tuint8_t(7), Fgbprop: Tuint8_t(12), Fbprops: Tuint16_t(240)}, // 1392
{Fscript: Tuint8_t(69), Fchartype: Tuint8_t(26), Fgbprop: Tuint8_t(14), Fscriptx_bidiclass: Tuint16_t(28672), Fbprops: Tuint16_t(332)}, // 1393
{Fscript: Tuint8_t(69), Fchartype: Tuint8_t(26), Fgbprop: Tuint8_t(14), Fscriptx_bidiclass: Tuint16_t(28672), Fbprops: Tuint16_t(334)}, // 1394
{Fscript: Tuint8_t(68), Fchartype: Tuint8_t(2), Fgbprop: Tuint8_t(14), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(336)}, // 1395
{Fscript: Tuint8_t(69), Fchartype: Tuint8_t(26), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(338)}, // 1396
{Fscript: Tuint8_t(69), Fchartype: Tuint8_t(26), Fgbprop: Tuint8_t(14), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(340)}, // 1397
{Fscript: Tuint8_t(69), Fchartype: Tuint8_t(26), Fgbprop: Tuint8_t(14), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(334)}, // 1398
{Fscript: Tuint8_t(69), Fchartype: Tuint8_t(26), Fgbprop: Tuint8_t(11), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(342)}, // 1399
{Fscript: Tuint8_t(20), Fchartype: Tuint8_t(26), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(68)}, // 1400
{Fscript: Tuint8_t(69), Fchartype: Tuint8_t(26), Fgbprop: Tuint8_t(14), Fscriptx_bidiclass: Tuint16_t(18432), Fbprops: Tuint16_t(236)}, // 1401
{Fscript: Tuint8_t(69), Fchartype: Tuint8_t(26), Fgbprop: Tuint8_t(14), Fscriptx_bidiclass: Tuint16_t(18447), Fbprops: Tuint16_t(334)}, // 1402
{Fscript: Tuint8_t(69), Fchartype: Tuint8_t(26), Fgbprop: Tuint8_t(14), Fscriptx_bidiclass: Tuint16_t(28672), Fbprops: Tuint16_t(344)}, // 1403
{Fscript: Tuint8_t(69), Fchartype: Tuint8_t(26), Fgbprop: Tuint8_t(14), Fscriptx_bidiclass: Tuint16_t(28672), Fbprops: Tuint16_t(346)}, // 1404
{Fscript: Tuint8_t(69), Fchartype: Tuint8_t(24), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(28672), Fbprops: Tuint16_t(348)}, // 1405
{Fscript: Tuint8_t(69), Fchartype: Tuint8_t(26), Fgbprop: Tuint8_t(14), Fscriptx_bidiclass: Tuint16_t(28672), Fbprops: Tuint16_t(350)}, // 1406
{Fscript: Tuint8_t(69), Fchartype: Tuint8_t(13), Fgbprop: Tuint8_t(12), Fscriptx_bidiclass: Tuint16_t(10240), Fbprops: Tuint16_t(138)}, // 1407
{Fscript: Tuint8_t(69), Fchartype: Tuint8_t(1), Fgbprop: Tuint8_t(3), Fscriptx_bidiclass: Tuint16_t(6144), Fbprops: Tuint16_t(352)}, // 1408
} /* pcre2_ucd.c:427:18 */
var X_pcre2_ucd_stage1_8 = [8704]Tuint16_t{ // 17408 bytes
Tuint16_t(0), Tuint16_t(1), Tuint16_t(2), Tuint16_t(3), Tuint16_t(4), Tuint16_t(5), Tuint16_t(6), Tuint16_t(7), Tuint16_t(8), Tuint16_t(9), Tuint16_t(10), Tuint16_t(11), Tuint16_t(12), Tuint16_t(13), Tuint16_t(14), Tuint16_t(15), // U+0000
Tuint16_t(16), Tuint16_t(17), Tuint16_t(18), Tuint16_t(19), Tuint16_t(20), Tuint16_t(21), Tuint16_t(22), Tuint16_t(23), Tuint16_t(24), Tuint16_t(25), Tuint16_t(26), Tuint16_t(27), Tuint16_t(28), Tuint16_t(29), Tuint16_t(30), Tuint16_t(31), // U+0800
Tuint16_t(32), Tuint16_t(33), Tuint16_t(34), Tuint16_t(35), Tuint16_t(36), Tuint16_t(37), Tuint16_t(38), Tuint16_t(39), Tuint16_t(40), Tuint16_t(41), Tuint16_t(41), Tuint16_t(41), Tuint16_t(42), Tuint16_t(43), Tuint16_t(44), Tuint16_t(45), // U+1000
Tuint16_t(46), Tuint16_t(47), Tuint16_t(48), Tuint16_t(49), Tuint16_t(50), Tuint16_t(51), Tuint16_t(52), Tuint16_t(53), Tuint16_t(54), Tuint16_t(55), Tuint16_t(56), Tuint16_t(57), Tuint16_t(58), Tuint16_t(59), Tuint16_t(60), Tuint16_t(61), // U+1800
Tuint16_t(62), Tuint16_t(63), Tuint16_t(64), Tuint16_t(65), Tuint16_t(66), Tuint16_t(67), Tuint16_t(68), Tuint16_t(69), Tuint16_t(70), Tuint16_t(71), Tuint16_t(72), Tuint16_t(73), Tuint16_t(74), Tuint16_t(75), Tuint16_t(76), Tuint16_t(77), // U+2000
Tuint16_t(78), Tuint16_t(78), Tuint16_t(79), Tuint16_t(80), Tuint16_t(81), Tuint16_t(82), Tuint16_t(83), Tuint16_t(84), Tuint16_t(85), Tuint16_t(86), Tuint16_t(87), Tuint16_t(88), Tuint16_t(89), Tuint16_t(90), Tuint16_t(91), Tuint16_t(92), // U+2800
Tuint16_t(93), Tuint16_t(94), Tuint16_t(95), Tuint16_t(96), Tuint16_t(97), Tuint16_t(98), Tuint16_t(99), Tuint16_t(100), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), // U+3000
Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), // U+3800
Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), // U+4000
Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(102), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), // U+4800
Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), // U+5000
Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), // U+5800
Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), // U+6000
Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), // U+6800
Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), // U+7000
Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), // U+7800
Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), // U+8000
Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), // U+8800
Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), // U+9000
Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), // U+9800
Tuint16_t(103), Tuint16_t(104), Tuint16_t(104), Tuint16_t(104), Tuint16_t(104), Tuint16_t(104), Tuint16_t(104), Tuint16_t(104), Tuint16_t(104), Tuint16_t(105), Tuint16_t(106), Tuint16_t(106), Tuint16_t(107), Tuint16_t(108), Tuint16_t(109), Tuint16_t(110), // U+A000
Tuint16_t(111), Tuint16_t(112), Tuint16_t(113), Tuint16_t(114), Tuint16_t(115), Tuint16_t(116), Tuint16_t(117), Tuint16_t(118), Tuint16_t(119), Tuint16_t(120), Tuint16_t(121), Tuint16_t(122), Tuint16_t(123), Tuint16_t(124), Tuint16_t(125), Tuint16_t(119), // U+A800
Tuint16_t(120), Tuint16_t(121), Tuint16_t(122), Tuint16_t(123), Tuint16_t(124), Tuint16_t(125), Tuint16_t(119), Tuint16_t(120), Tuint16_t(121), Tuint16_t(122), Tuint16_t(123), Tuint16_t(124), Tuint16_t(125), Tuint16_t(119), Tuint16_t(120), Tuint16_t(121), // U+B000
Tuint16_t(122), Tuint16_t(123), Tuint16_t(124), Tuint16_t(125), Tuint16_t(119), Tuint16_t(120), Tuint16_t(121), Tuint16_t(122), Tuint16_t(123), Tuint16_t(124), Tuint16_t(125), Tuint16_t(119), Tuint16_t(120), Tuint16_t(121), Tuint16_t(122), Tuint16_t(123), // U+B800
Tuint16_t(124), Tuint16_t(125), Tuint16_t(119), Tuint16_t(120), Tuint16_t(121), Tuint16_t(122), Tuint16_t(123), Tuint16_t(124), Tuint16_t(125), Tuint16_t(119), Tuint16_t(120), Tuint16_t(121), Tuint16_t(122), Tuint16_t(123), Tuint16_t(124), Tuint16_t(125), // U+C000
Tuint16_t(119), Tuint16_t(120), Tuint16_t(121), Tuint16_t(122), Tuint16_t(123), Tuint16_t(124), Tuint16_t(125), Tuint16_t(119), Tuint16_t(120), Tuint16_t(121), Tuint16_t(122), Tuint16_t(123), Tuint16_t(124), Tuint16_t(125), Tuint16_t(119), Tuint16_t(120), // U+C800
Tuint16_t(121), Tuint16_t(122), Tuint16_t(123), Tuint16_t(124), Tuint16_t(125), Tuint16_t(119), Tuint16_t(120), Tuint16_t(121), Tuint16_t(122), Tuint16_t(123), Tuint16_t(124), Tuint16_t(125), Tuint16_t(119), Tuint16_t(120), Tuint16_t(121), Tuint16_t(126), // U+D000
Tuint16_t(127), Tuint16_t(127), Tuint16_t(127), Tuint16_t(127), Tuint16_t(127), Tuint16_t(127), Tuint16_t(127), Tuint16_t(127), Tuint16_t(127), Tuint16_t(127), Tuint16_t(127), Tuint16_t(127), Tuint16_t(127), Tuint16_t(127), Tuint16_t(127), Tuint16_t(127), // U+D800
Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), // U+E000
Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), // U+E800
Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), // U+F000
Tuint16_t(128), Tuint16_t(128), Tuint16_t(129), Tuint16_t(129), Tuint16_t(130), Tuint16_t(131), Tuint16_t(132), Tuint16_t(133), Tuint16_t(134), Tuint16_t(135), Tuint16_t(136), Tuint16_t(137), Tuint16_t(138), Tuint16_t(139), Tuint16_t(140), Tuint16_t(141), // U+F800
Tuint16_t(142), Tuint16_t(143), Tuint16_t(144), Tuint16_t(145), Tuint16_t(146), Tuint16_t(147), Tuint16_t(148), Tuint16_t(149), Tuint16_t(150), Tuint16_t(151), Tuint16_t(152), Tuint16_t(153), Tuint16_t(154), Tuint16_t(154), Tuint16_t(155), Tuint16_t(156), // U+10000
Tuint16_t(157), Tuint16_t(158), Tuint16_t(159), Tuint16_t(160), Tuint16_t(161), Tuint16_t(162), Tuint16_t(163), Tuint16_t(164), Tuint16_t(165), Tuint16_t(166), Tuint16_t(167), Tuint16_t(168), Tuint16_t(169), Tuint16_t(170), Tuint16_t(171), Tuint16_t(172), // U+10800
Tuint16_t(173), Tuint16_t(174), Tuint16_t(175), Tuint16_t(176), Tuint16_t(177), Tuint16_t(178), Tuint16_t(179), Tuint16_t(146), Tuint16_t(180), Tuint16_t(181), Tuint16_t(146), Tuint16_t(182), Tuint16_t(183), Tuint16_t(184), Tuint16_t(185), Tuint16_t(146), // U+11000
Tuint16_t(186), Tuint16_t(187), Tuint16_t(188), Tuint16_t(189), Tuint16_t(190), Tuint16_t(191), Tuint16_t(146), Tuint16_t(146), Tuint16_t(192), Tuint16_t(193), Tuint16_t(194), Tuint16_t(195), Tuint16_t(146), Tuint16_t(196), Tuint16_t(146), Tuint16_t(197), // U+11800
Tuint16_t(198), Tuint16_t(198), Tuint16_t(198), Tuint16_t(198), Tuint16_t(198), Tuint16_t(198), Tuint16_t(198), Tuint16_t(199), Tuint16_t(200), Tuint16_t(198), Tuint16_t(201), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+12000
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(202), // U+12800
Tuint16_t(203), Tuint16_t(203), Tuint16_t(203), Tuint16_t(203), Tuint16_t(203), Tuint16_t(203), Tuint16_t(203), Tuint16_t(203), Tuint16_t(204), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+13000
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+13800
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(205), Tuint16_t(205), Tuint16_t(205), Tuint16_t(205), Tuint16_t(206), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+14000
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+14800
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+15000
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+15800
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+16000
Tuint16_t(207), Tuint16_t(207), Tuint16_t(207), Tuint16_t(207), Tuint16_t(208), Tuint16_t(209), Tuint16_t(210), Tuint16_t(211), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(212), Tuint16_t(213), Tuint16_t(214), Tuint16_t(215), // U+16800
Tuint16_t(216), Tuint16_t(216), Tuint16_t(216), Tuint16_t(216), Tuint16_t(216), Tuint16_t(216), Tuint16_t(216), Tuint16_t(216), Tuint16_t(216), Tuint16_t(216), Tuint16_t(216), Tuint16_t(216), Tuint16_t(216), Tuint16_t(216), Tuint16_t(216), Tuint16_t(216), // U+17000
Tuint16_t(216), Tuint16_t(216), Tuint16_t(216), Tuint16_t(216), Tuint16_t(216), Tuint16_t(216), Tuint16_t(216), Tuint16_t(216), Tuint16_t(216), Tuint16_t(216), Tuint16_t(216), Tuint16_t(216), Tuint16_t(216), Tuint16_t(216), Tuint16_t(216), Tuint16_t(216), // U+17800
Tuint16_t(216), Tuint16_t(216), Tuint16_t(216), Tuint16_t(216), Tuint16_t(216), Tuint16_t(216), Tuint16_t(216), Tuint16_t(216), Tuint16_t(216), Tuint16_t(216), Tuint16_t(216), Tuint16_t(216), Tuint16_t(216), Tuint16_t(216), Tuint16_t(216), Tuint16_t(217), // U+18000
Tuint16_t(216), Tuint16_t(216), Tuint16_t(216), Tuint16_t(216), Tuint16_t(216), Tuint16_t(216), Tuint16_t(218), Tuint16_t(218), Tuint16_t(218), Tuint16_t(219), Tuint16_t(220), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+18800
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+19000
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+19800
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+1A000
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(221), // U+1A800
Tuint16_t(222), Tuint16_t(223), Tuint16_t(224), Tuint16_t(225), Tuint16_t(225), Tuint16_t(226), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+1B000
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(227), Tuint16_t(228), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+1B800
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+1C000
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(229), Tuint16_t(230), // U+1C800
Tuint16_t(231), Tuint16_t(232), Tuint16_t(233), Tuint16_t(234), Tuint16_t(235), Tuint16_t(236), Tuint16_t(237), Tuint16_t(146), Tuint16_t(238), Tuint16_t(239), Tuint16_t(240), Tuint16_t(241), Tuint16_t(242), Tuint16_t(243), Tuint16_t(244), Tuint16_t(245), // U+1D000
Tuint16_t(246), Tuint16_t(246), Tuint16_t(246), Tuint16_t(246), Tuint16_t(247), Tuint16_t(248), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(249), Tuint16_t(146), // U+1D800
Tuint16_t(250), Tuint16_t(146), Tuint16_t(251), Tuint16_t(146), Tuint16_t(146), Tuint16_t(252), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(253), // U+1E000
Tuint16_t(254), Tuint16_t(255), Tuint16_t(256), Tuint16_t(168), Tuint16_t(168), Tuint16_t(168), Tuint16_t(168), Tuint16_t(168), Tuint16_t(257), Tuint16_t(258), Tuint16_t(259), Tuint16_t(168), Tuint16_t(260), Tuint16_t(261), Tuint16_t(168), Tuint16_t(168), // U+1E800
Tuint16_t(262), Tuint16_t(263), Tuint16_t(264), Tuint16_t(265), Tuint16_t(266), Tuint16_t(267), Tuint16_t(268), Tuint16_t(269), Tuint16_t(270), Tuint16_t(271), Tuint16_t(272), Tuint16_t(273), Tuint16_t(274), Tuint16_t(275), Tuint16_t(276), Tuint16_t(277), // U+1F000
Tuint16_t(278), Tuint16_t(279), Tuint16_t(280), Tuint16_t(281), Tuint16_t(282), Tuint16_t(283), Tuint16_t(284), Tuint16_t(285), Tuint16_t(267), Tuint16_t(267), Tuint16_t(267), Tuint16_t(267), Tuint16_t(267), Tuint16_t(267), Tuint16_t(267), Tuint16_t(286), // U+1F800
Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), // U+20000
Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), // U+20800
Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), // U+21000
Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), // U+21800
Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), // U+22000
Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), // U+22800
Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), // U+23000
Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), // U+23800
Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), // U+24000
Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), // U+24800
Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), // U+25000
Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), // U+25800
Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), // U+26000
Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), // U+26800
Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), // U+27000
Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), // U+27800
Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), // U+28000
Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), // U+28800
Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), // U+29000
Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), // U+29800
Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(287), Tuint16_t(101), Tuint16_t(101), // U+2A000
Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), // U+2A800
Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(288), Tuint16_t(101), // U+2B000
Tuint16_t(289), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), // U+2B800
Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), // U+2C000
Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(290), Tuint16_t(101), Tuint16_t(101), // U+2C800
Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), // U+2D000
Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), // U+2D800
Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), // U+2E000
Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(291), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+2E800
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+2F000
Tuint16_t(129), Tuint16_t(129), Tuint16_t(129), Tuint16_t(129), Tuint16_t(292), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(293), // U+2F800
Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), // U+30000
Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), // U+30800
Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(101), Tuint16_t(294), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+31000
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+31800
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+32000
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+32800
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+33000
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+33800
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+34000
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+34800
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+35000
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+35800
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+36000
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+36800
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+37000
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+37800
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+38000
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+38800
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+39000
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+39800
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+3A000
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+3A800
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+3B000
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+3B800
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+3C000
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+3C800
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+3D000
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+3D800
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+3E000
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+3E800
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+3F000
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(293), // U+3F800
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+40000
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+40800
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+41000
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+41800
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+42000
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+42800
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+43000
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+43800
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+44000
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+44800
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+45000
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+45800
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+46000
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+46800
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+47000
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+47800
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+48000
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+48800
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+49000
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+49800
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+4A000
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+4A800
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+4B000
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+4B800
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+4C000
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+4C800
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+4D000
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+4D800
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+4E000
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+4E800
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+4F000
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(293), // U+4F800
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+50000
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+50800
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+51000
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+51800
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+52000
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+52800
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+53000
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+53800
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+54000
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+54800
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+55000
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+55800
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+56000
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+56800
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+57000
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+57800
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+58000
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+58800
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+59000
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+59800
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+5A000
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+5A800
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+5B000
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+5B800
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+5C000
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+5C800
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+5D000
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+5D800
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+5E000
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+5E800
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+5F000
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(293), // U+5F800
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+60000
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+60800
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+61000
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+61800
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+62000
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+62800
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+63000
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+63800
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+64000
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+64800
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+65000
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+65800
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+66000
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+66800
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+67000
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+67800
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+68000
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+68800
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+69000
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+69800
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+6A000
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+6A800
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+6B000
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+6B800
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+6C000
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+6C800
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+6D000
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+6D800
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+6E000
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+6E800
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+6F000
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(293), // U+6F800
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+70000
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+70800
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+71000
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+71800
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+72000
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+72800
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+73000
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+73800
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+74000
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+74800
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+75000
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+75800
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+76000
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+76800
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+77000
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+77800
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+78000
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+78800
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+79000
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+79800
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+7A000
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+7A800
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+7B000
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+7B800
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+7C000
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+7C800
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+7D000
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+7D800
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+7E000
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+7E800
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+7F000
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(293), // U+7F800
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+80000
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+80800
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+81000
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+81800
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+82000
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+82800
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+83000
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+83800
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+84000
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+84800
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+85000
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+85800
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+86000
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+86800
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+87000
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+87800
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+88000
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+88800
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+89000
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+89800
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+8A000
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+8A800
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+8B000
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+8B800
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+8C000
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+8C800
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+8D000
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+8D800
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+8E000
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+8E800
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+8F000
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(293), // U+8F800
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+90000
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+90800
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+91000
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+91800
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+92000
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+92800
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+93000
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+93800
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+94000
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+94800
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+95000
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+95800
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+96000
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+96800
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+97000
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+97800
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+98000
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+98800
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+99000
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+99800
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+9A000
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+9A800
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+9B000
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+9B800
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+9C000
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+9C800
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+9D000
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+9D800
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+9E000
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+9E800
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+9F000
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(293), // U+9F800
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+A0000
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+A0800
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+A1000
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+A1800
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+A2000
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+A2800
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+A3000
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+A3800
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+A4000
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+A4800
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+A5000
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+A5800
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+A6000
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+A6800
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+A7000
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+A7800
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+A8000
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+A8800
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+A9000
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+A9800
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+AA000
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+AA800
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+AB000
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+AB800
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+AC000
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+AC800
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+AD000
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+AD800
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+AE000
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+AE800
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+AF000
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(293), // U+AF800
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+B0000
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+B0800
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+B1000
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+B1800
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+B2000
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+B2800
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+B3000
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+B3800
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+B4000
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+B4800
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+B5000
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+B5800
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+B6000
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+B6800
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+B7000
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+B7800
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+B8000
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+B8800
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+B9000
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+B9800
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+BA000
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+BA800
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+BB000
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+BB800
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+BC000
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+BC800
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+BD000
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+BD800
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+BE000
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+BE800
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+BF000
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(293), // U+BF800
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+C0000
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+C0800
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+C1000
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+C1800
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+C2000
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+C2800
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+C3000
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+C3800
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+C4000
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+C4800
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+C5000
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+C5800
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+C6000
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+C6800
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+C7000
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+C7800
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+C8000
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+C8800
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+C9000
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+C9800
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+CA000
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+CA800
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+CB000
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+CB800
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+CC000
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+CC800
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+CD000
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+CD800
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+CE000
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+CE800
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+CF000
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(293), // U+CF800
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+D0000
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+D0800
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+D1000
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+D1800
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+D2000
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+D2800
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+D3000
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+D3800
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+D4000
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+D4800
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+D5000
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+D5800
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+D6000
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+D6800
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+D7000
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+D7800
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+D8000
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+D8800
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+D9000
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+D9800
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+DA000
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+DA800
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+DB000
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+DB800
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+DC000
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+DC800
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+DD000
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+DD800
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+DE000
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+DE800
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+DF000
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(293), // U+DF800
Tuint16_t(295), Tuint16_t(296), Tuint16_t(297), Tuint16_t(298), Tuint16_t(296), Tuint16_t(296), Tuint16_t(296), Tuint16_t(296), Tuint16_t(296), Tuint16_t(296), Tuint16_t(296), Tuint16_t(296), Tuint16_t(296), Tuint16_t(296), Tuint16_t(296), Tuint16_t(296), // U+E0000
Tuint16_t(296), Tuint16_t(296), Tuint16_t(296), Tuint16_t(296), Tuint16_t(296), Tuint16_t(296), Tuint16_t(296), Tuint16_t(296), Tuint16_t(296), Tuint16_t(296), Tuint16_t(296), Tuint16_t(296), Tuint16_t(296), Tuint16_t(296), Tuint16_t(296), Tuint16_t(296), // U+E0800
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+E1000
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+E1800
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+E2000
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+E2800
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+E3000
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+E3800
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+E4000
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+E4800
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+E5000
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+E5800
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+E6000
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+E6800
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+E7000
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+E7800
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+E8000
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+E8800
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+E9000
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+E9800
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+EA000
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+EA800
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+EB000
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+EB800
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+EC000
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+EC800
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+ED000
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+ED800
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+EE000
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+EE800
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), // U+EF000
Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(146), Tuint16_t(293), // U+EF800
Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), // U+F0000
Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), // U+F0800
Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), // U+F1000
Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), // U+F1800
Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), // U+F2000
Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), // U+F2800
Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), // U+F3000
Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), // U+F3800
Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), // U+F4000
Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), // U+F4800
Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), // U+F5000
Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), // U+F5800
Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), // U+F6000
Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), // U+F6800
Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), // U+F7000
Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), // U+F7800
Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), // U+F8000
Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), // U+F8800
Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), // U+F9000
Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), // U+F9800
Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), // U+FA000
Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), // U+FA800
Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), // U+FB000
Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), // U+FB800
Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), // U+FC000
Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), // U+FC800
Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), // U+FD000
Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), // U+FD800
Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), // U+FE000
Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), // U+FE800
Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), // U+FF000
Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(299), // U+FF800
Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), // U+100000
Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), // U+100800
Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), // U+101000
Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), // U+101800
Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), // U+102000
Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), // U+102800
Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), // U+103000
Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), // U+103800
Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), // U+104000
Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), // U+104800
Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), // U+105000
Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), // U+105800
Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), // U+106000
Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), // U+106800
Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), // U+107000
Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), // U+107800
Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), // U+108000
Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), // U+108800
Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), // U+109000
Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), // U+109800
Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), // U+10A000
Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), // U+10A800
Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), // U+10B000
Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), // U+10B800
Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), // U+10C000
Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), // U+10C800
Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), // U+10D000
Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), // U+10D800
Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), // U+10E000
Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), // U+10E800
Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), // U+10F000
Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(128), Tuint16_t(299), // U+10F800
} /* pcre2_ucd.c:1839:16 */
var X_pcre2_ucd_stage2_8 = [38400]Tuint16_t{ // 76800 bytes, block = 128
// block 0
Tuint16_t(0), Tuint16_t(0), Tuint16_t(0), Tuint16_t(0), Tuint16_t(0), Tuint16_t(0), Tuint16_t(0), Tuint16_t(0), Tuint16_t(0), Tuint16_t(1), Tuint16_t(2), Tuint16_t(1), Tuint16_t(3), Tuint16_t(4), Tuint16_t(0), Tuint16_t(0),
Tuint16_t(0), Tuint16_t(0), Tuint16_t(0), Tuint16_t(0), Tuint16_t(0), Tuint16_t(0), Tuint16_t(0), Tuint16_t(0), Tuint16_t(0), Tuint16_t(0), Tuint16_t(0), Tuint16_t(0), Tuint16_t(5), Tuint16_t(5), Tuint16_t(5), Tuint16_t(6),
Tuint16_t(7), Tuint16_t(8), Tuint16_t(9), Tuint16_t(10), Tuint16_t(11), Tuint16_t(12), Tuint16_t(13), Tuint16_t(14), Tuint16_t(15), Tuint16_t(16), Tuint16_t(17), Tuint16_t(18), Tuint16_t(19), Tuint16_t(20), Tuint16_t(21), Tuint16_t(22),
Tuint16_t(23), Tuint16_t(23), Tuint16_t(23), Tuint16_t(23), Tuint16_t(23), Tuint16_t(23), Tuint16_t(23), Tuint16_t(23), Tuint16_t(23), Tuint16_t(23), Tuint16_t(24), Tuint16_t(25), Tuint16_t(26), Tuint16_t(27), Tuint16_t(26), Tuint16_t(8),
Tuint16_t(13), Tuint16_t(28), Tuint16_t(28), Tuint16_t(28), Tuint16_t(28), Tuint16_t(28), Tuint16_t(28), Tuint16_t(29), Tuint16_t(29), Tuint16_t(29), Tuint16_t(29), Tuint16_t(30), Tuint16_t(29), Tuint16_t(29), Tuint16_t(29), Tuint16_t(29),
Tuint16_t(29), Tuint16_t(29), Tuint16_t(29), Tuint16_t(31), Tuint16_t(29), Tuint16_t(29), Tuint16_t(29), Tuint16_t(29), Tuint16_t(29), Tuint16_t(29), Tuint16_t(29), Tuint16_t(15), Tuint16_t(13), Tuint16_t(16), Tuint16_t(32), Tuint16_t(33),
Tuint16_t(34), Tuint16_t(35), Tuint16_t(35), Tuint16_t(35), Tuint16_t(35), Tuint16_t(35), Tuint16_t(35), Tuint16_t(36), Tuint16_t(36), Tuint16_t(37), Tuint16_t(37), Tuint16_t(38), Tuint16_t(36), Tuint16_t(36), Tuint16_t(36), Tuint16_t(36),
Tuint16_t(36), Tuint16_t(36), Tuint16_t(36), Tuint16_t(39), Tuint16_t(36), Tuint16_t(36), Tuint16_t(36), Tuint16_t(36), Tuint16_t(36), Tuint16_t(36), Tuint16_t(36), Tuint16_t(15), Tuint16_t(27), Tuint16_t(16), Tuint16_t(27), Tuint16_t(0),
// block 1
Tuint16_t(40), Tuint16_t(40), Tuint16_t(40), Tuint16_t(40), Tuint16_t(40), Tuint16_t(41), Tuint16_t(40), Tuint16_t(40), Tuint16_t(40), Tuint16_t(40), Tuint16_t(40), Tuint16_t(40), Tuint16_t(40), Tuint16_t(40), Tuint16_t(40), Tuint16_t(40),
Tuint16_t(40), Tuint16_t(40), Tuint16_t(40), Tuint16_t(40), Tuint16_t(40), Tuint16_t(40), Tuint16_t(40), Tuint16_t(40), Tuint16_t(40), Tuint16_t(40), Tuint16_t(40), Tuint16_t(40), Tuint16_t(40), Tuint16_t(40), Tuint16_t(40), Tuint16_t(40),
Tuint16_t(42), Tuint16_t(43), Tuint16_t(44), Tuint16_t(44), Tuint16_t(44), Tuint16_t(44), Tuint16_t(45), Tuint16_t(43), Tuint16_t(46), Tuint16_t(47), Tuint16_t(48), Tuint16_t(49), Tuint16_t(50), Tuint16_t(51), Tuint16_t(47), Tuint16_t(46),
Tuint16_t(52), Tuint16_t(53), Tuint16_t(54), Tuint16_t(54), Tuint16_t(46), Tuint16_t(55), Tuint16_t(43), Tuint16_t(56), Tuint16_t(46), Tuint16_t(54), Tuint16_t(48), Tuint16_t(57), Tuint16_t(58), Tuint16_t(58), Tuint16_t(58), Tuint16_t(43),
Tuint16_t(59), Tuint16_t(59), Tuint16_t(59), Tuint16_t(59), Tuint16_t(59), Tuint16_t(60), Tuint16_t(59), Tuint16_t(59), Tuint16_t(59), Tuint16_t(59), Tuint16_t(59), Tuint16_t(59), Tuint16_t(59), Tuint16_t(59), Tuint16_t(59), Tuint16_t(59),
Tuint16_t(59), Tuint16_t(59), Tuint16_t(59), Tuint16_t(59), Tuint16_t(59), Tuint16_t(59), Tuint16_t(59), Tuint16_t(50), Tuint16_t(59), Tuint16_t(59), Tuint16_t(59), Tuint16_t(59), Tuint16_t(59), Tuint16_t(59), Tuint16_t(59), Tuint16_t(61),
Tuint16_t(62), Tuint16_t(62), Tuint16_t(62), Tuint16_t(62), Tuint16_t(62), Tuint16_t(63), Tuint16_t(62), Tuint16_t(62), Tuint16_t(62), Tuint16_t(62), Tuint16_t(62), Tuint16_t(62), Tuint16_t(62), Tuint16_t(62), Tuint16_t(62), Tuint16_t(62),
Tuint16_t(62), Tuint16_t(62), Tuint16_t(62), Tuint16_t(62), Tuint16_t(62), Tuint16_t(62), Tuint16_t(62), Tuint16_t(50), Tuint16_t(62), Tuint16_t(62), Tuint16_t(62), Tuint16_t(62), Tuint16_t(62), Tuint16_t(62), Tuint16_t(62), Tuint16_t(64),
// block 2
Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66),
Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66),
Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(67),
Tuint16_t(68), Tuint16_t(69), Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66), Tuint16_t(70), Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66), Tuint16_t(65),
Tuint16_t(66), Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66), Tuint16_t(71), Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66),
Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66),
Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66),
Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66), Tuint16_t(72), Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66), Tuint16_t(73),
// block 3
Tuint16_t(74), Tuint16_t(75), Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66), Tuint16_t(76), Tuint16_t(65), Tuint16_t(66), Tuint16_t(77), Tuint16_t(77), Tuint16_t(65), Tuint16_t(66), Tuint16_t(70), Tuint16_t(78), Tuint16_t(79),
Tuint16_t(80), Tuint16_t(65), Tuint16_t(66), Tuint16_t(77), Tuint16_t(81), Tuint16_t(82), Tuint16_t(83), Tuint16_t(84), Tuint16_t(65), Tuint16_t(66), Tuint16_t(85), Tuint16_t(70), Tuint16_t(83), Tuint16_t(86), Tuint16_t(87), Tuint16_t(88),
Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66), Tuint16_t(89), Tuint16_t(65), Tuint16_t(66), Tuint16_t(89), Tuint16_t(70), Tuint16_t(70), Tuint16_t(65), Tuint16_t(66), Tuint16_t(89), Tuint16_t(65),
Tuint16_t(66), Tuint16_t(90), Tuint16_t(90), Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66), Tuint16_t(91), Tuint16_t(65), Tuint16_t(66), Tuint16_t(70), Tuint16_t(92), Tuint16_t(65), Tuint16_t(66), Tuint16_t(70), Tuint16_t(93),
Tuint16_t(92), Tuint16_t(92), Tuint16_t(92), Tuint16_t(92), Tuint16_t(94), Tuint16_t(95), Tuint16_t(96), Tuint16_t(97), Tuint16_t(98), Tuint16_t(99), Tuint16_t(100), Tuint16_t(101), Tuint16_t(102), Tuint16_t(65), Tuint16_t(66), Tuint16_t(65),
Tuint16_t(66), Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66), Tuint16_t(103), Tuint16_t(65), Tuint16_t(66),
Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66),
Tuint16_t(69), Tuint16_t(104), Tuint16_t(105), Tuint16_t(106), Tuint16_t(65), Tuint16_t(66), Tuint16_t(107), Tuint16_t(108), Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66),
// block 4
Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66),
Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66),
Tuint16_t(109), Tuint16_t(70), Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66),
Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66), Tuint16_t(70), Tuint16_t(70), Tuint16_t(70), Tuint16_t(70), Tuint16_t(70), Tuint16_t(70), Tuint16_t(110), Tuint16_t(65), Tuint16_t(66), Tuint16_t(111), Tuint16_t(112), Tuint16_t(113),
Tuint16_t(113), Tuint16_t(65), Tuint16_t(66), Tuint16_t(114), Tuint16_t(115), Tuint16_t(116), Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(67), Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66),
Tuint16_t(117), Tuint16_t(118), Tuint16_t(119), Tuint16_t(120), Tuint16_t(121), Tuint16_t(70), Tuint16_t(122), Tuint16_t(122), Tuint16_t(70), Tuint16_t(123), Tuint16_t(70), Tuint16_t(124), Tuint16_t(125), Tuint16_t(70), Tuint16_t(70), Tuint16_t(70),
Tuint16_t(122), Tuint16_t(126), Tuint16_t(70), Tuint16_t(127), Tuint16_t(70), Tuint16_t(128), Tuint16_t(129), Tuint16_t(70), Tuint16_t(130), Tuint16_t(131), Tuint16_t(129), Tuint16_t(132), Tuint16_t(133), Tuint16_t(70), Tuint16_t(70), Tuint16_t(131),
Tuint16_t(70), Tuint16_t(134), Tuint16_t(135), Tuint16_t(70), Tuint16_t(70), Tuint16_t(136), Tuint16_t(70), Tuint16_t(70), Tuint16_t(70), Tuint16_t(70), Tuint16_t(70), Tuint16_t(70), Tuint16_t(70), Tuint16_t(137), Tuint16_t(70), Tuint16_t(70),
// block 5
Tuint16_t(138), Tuint16_t(70), Tuint16_t(139), Tuint16_t(138), Tuint16_t(70), Tuint16_t(70), Tuint16_t(70), Tuint16_t(140), Tuint16_t(138), Tuint16_t(141), Tuint16_t(142), Tuint16_t(142), Tuint16_t(143), Tuint16_t(70), Tuint16_t(70), Tuint16_t(70),
Tuint16_t(70), Tuint16_t(70), Tuint16_t(144), Tuint16_t(70), Tuint16_t(92), Tuint16_t(70), Tuint16_t(70), Tuint16_t(70), Tuint16_t(70), Tuint16_t(70), Tuint16_t(70), Tuint16_t(70), Tuint16_t(70), Tuint16_t(145), Tuint16_t(146), Tuint16_t(70),
Tuint16_t(70), Tuint16_t(70), Tuint16_t(70), Tuint16_t(70), Tuint16_t(70), Tuint16_t(70), Tuint16_t(70), Tuint16_t(70), Tuint16_t(70), Tuint16_t(70), Tuint16_t(70), Tuint16_t(70), Tuint16_t(70), Tuint16_t(70), Tuint16_t(70), Tuint16_t(70),
Tuint16_t(147), Tuint16_t(147), Tuint16_t(148), Tuint16_t(147), Tuint16_t(147), Tuint16_t(147), Tuint16_t(147), Tuint16_t(147), Tuint16_t(147), Tuint16_t(149), Tuint16_t(149), Tuint16_t(150), Tuint16_t(150), Tuint16_t(150), Tuint16_t(150), Tuint16_t(150),
Tuint16_t(151), Tuint16_t(151), Tuint16_t(46), Tuint16_t(46), Tuint16_t(46), Tuint16_t(46), Tuint16_t(149), Tuint16_t(149), Tuint16_t(149), Tuint16_t(149), Tuint16_t(149), Tuint16_t(149), Tuint16_t(149), Tuint16_t(149), Tuint16_t(149), Tuint16_t(149),
Tuint16_t(152), Tuint16_t(152), Tuint16_t(46), Tuint16_t(46), Tuint16_t(46), Tuint16_t(46), Tuint16_t(46), Tuint16_t(46), Tuint16_t(46), Tuint16_t(46), Tuint16_t(46), Tuint16_t(46), Tuint16_t(46), Tuint16_t(46), Tuint16_t(46), Tuint16_t(46),
Tuint16_t(147), Tuint16_t(147), Tuint16_t(147), Tuint16_t(147), Tuint16_t(147), Tuint16_t(46), Tuint16_t(46), Tuint16_t(46), Tuint16_t(46), Tuint16_t(46), Tuint16_t(153), Tuint16_t(153), Tuint16_t(149), Tuint16_t(46), Tuint16_t(150), Tuint16_t(46),
Tuint16_t(46), Tuint16_t(46), Tuint16_t(46), Tuint16_t(46), Tuint16_t(46), Tuint16_t(46), Tuint16_t(46), Tuint16_t(46), Tuint16_t(46), Tuint16_t(46), Tuint16_t(46), Tuint16_t(46), Tuint16_t(46), Tuint16_t(46), Tuint16_t(46), Tuint16_t(46),
// block 6
Tuint16_t(154), Tuint16_t(154), Tuint16_t(154), Tuint16_t(154), Tuint16_t(154), Tuint16_t(154), Tuint16_t(154), Tuint16_t(154), Tuint16_t(154), Tuint16_t(154), Tuint16_t(154), Tuint16_t(154), Tuint16_t(154), Tuint16_t(154), Tuint16_t(154), Tuint16_t(154),
Tuint16_t(154), Tuint16_t(154), Tuint16_t(154), Tuint16_t(154), Tuint16_t(154), Tuint16_t(154), Tuint16_t(154), Tuint16_t(154), Tuint16_t(154), Tuint16_t(154), Tuint16_t(154), Tuint16_t(154), Tuint16_t(154), Tuint16_t(154), Tuint16_t(154), Tuint16_t(154),
Tuint16_t(154), Tuint16_t(154), Tuint16_t(154), Tuint16_t(154), Tuint16_t(154), Tuint16_t(154), Tuint16_t(154), Tuint16_t(154), Tuint16_t(154), Tuint16_t(154), Tuint16_t(154), Tuint16_t(154), Tuint16_t(154), Tuint16_t(154), Tuint16_t(154), Tuint16_t(154),
Tuint16_t(154), Tuint16_t(154), Tuint16_t(154), Tuint16_t(154), Tuint16_t(154), Tuint16_t(154), Tuint16_t(154), Tuint16_t(154), Tuint16_t(154), Tuint16_t(154), Tuint16_t(154), Tuint16_t(154), Tuint16_t(154), Tuint16_t(154), Tuint16_t(154), Tuint16_t(154),
Tuint16_t(154), Tuint16_t(154), Tuint16_t(155), Tuint16_t(154), Tuint16_t(154), Tuint16_t(156), Tuint16_t(154), Tuint16_t(154), Tuint16_t(154), Tuint16_t(154), Tuint16_t(154), Tuint16_t(154), Tuint16_t(154), Tuint16_t(154), Tuint16_t(154), Tuint16_t(157),
Tuint16_t(154), Tuint16_t(154), Tuint16_t(154), Tuint16_t(154), Tuint16_t(154), Tuint16_t(154), Tuint16_t(154), Tuint16_t(154), Tuint16_t(158), Tuint16_t(158), Tuint16_t(158), Tuint16_t(158), Tuint16_t(158), Tuint16_t(154), Tuint16_t(154), Tuint16_t(154),
Tuint16_t(154), Tuint16_t(154), Tuint16_t(154), Tuint16_t(159), Tuint16_t(159), Tuint16_t(159), Tuint16_t(159), Tuint16_t(159), Tuint16_t(159), Tuint16_t(159), Tuint16_t(159), Tuint16_t(159), Tuint16_t(159), Tuint16_t(159), Tuint16_t(159), Tuint16_t(159),
Tuint16_t(160), Tuint16_t(161), Tuint16_t(160), Tuint16_t(161), Tuint16_t(149), Tuint16_t(162), Tuint16_t(160), Tuint16_t(161), Tuint16_t(163), Tuint16_t(163), Tuint16_t(164), Tuint16_t(165), Tuint16_t(165), Tuint16_t(165), Tuint16_t(166), Tuint16_t(167),
// block 7
Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(162), Tuint16_t(46), Tuint16_t(168), Tuint16_t(169), Tuint16_t(170), Tuint16_t(170), Tuint16_t(170), Tuint16_t(163), Tuint16_t(171), Tuint16_t(163), Tuint16_t(172), Tuint16_t(172),
Tuint16_t(173), Tuint16_t(174), Tuint16_t(175), Tuint16_t(174), Tuint16_t(174), Tuint16_t(176), Tuint16_t(174), Tuint16_t(174), Tuint16_t(177), Tuint16_t(178), Tuint16_t(179), Tuint16_t(174), Tuint16_t(180), Tuint16_t(174), Tuint16_t(174), Tuint16_t(174),
Tuint16_t(181), Tuint16_t(182), Tuint16_t(163), Tuint16_t(183), Tuint16_t(174), Tuint16_t(174), Tuint16_t(184), Tuint16_t(174), Tuint16_t(174), Tuint16_t(185), Tuint16_t(174), Tuint16_t(174), Tuint16_t(186), Tuint16_t(187), Tuint16_t(187), Tuint16_t(187),
Tuint16_t(173), Tuint16_t(188), Tuint16_t(189), Tuint16_t(188), Tuint16_t(188), Tuint16_t(190), Tuint16_t(188), Tuint16_t(188), Tuint16_t(191), Tuint16_t(192), Tuint16_t(193), Tuint16_t(188), Tuint16_t(194), Tuint16_t(188), Tuint16_t(188), Tuint16_t(188),
Tuint16_t(195), Tuint16_t(196), Tuint16_t(197), Tuint16_t(198), Tuint16_t(188), Tuint16_t(188), Tuint16_t(199), Tuint16_t(188), Tuint16_t(188), Tuint16_t(200), Tuint16_t(188), Tuint16_t(188), Tuint16_t(201), Tuint16_t(202), Tuint16_t(202), Tuint16_t(203),
Tuint16_t(204), Tuint16_t(205), Tuint16_t(206), Tuint16_t(207), Tuint16_t(207), Tuint16_t(208), Tuint16_t(209), Tuint16_t(210), Tuint16_t(160), Tuint16_t(161), Tuint16_t(160), Tuint16_t(161), Tuint16_t(160), Tuint16_t(161), Tuint16_t(160), Tuint16_t(161),
Tuint16_t(160), Tuint16_t(161), Tuint16_t(211), Tuint16_t(212), Tuint16_t(211), Tuint16_t(212), Tuint16_t(211), Tuint16_t(212), Tuint16_t(211), Tuint16_t(212), Tuint16_t(211), Tuint16_t(212), Tuint16_t(211), Tuint16_t(212), Tuint16_t(211), Tuint16_t(212),
Tuint16_t(213), Tuint16_t(214), Tuint16_t(215), Tuint16_t(216), Tuint16_t(217), Tuint16_t(218), Tuint16_t(219), Tuint16_t(160), Tuint16_t(161), Tuint16_t(220), Tuint16_t(160), Tuint16_t(161), Tuint16_t(221), Tuint16_t(222), Tuint16_t(222), Tuint16_t(222),
// block 8
Tuint16_t(223), Tuint16_t(223), Tuint16_t(223), Tuint16_t(223), Tuint16_t(223), Tuint16_t(223), Tuint16_t(223), Tuint16_t(223), Tuint16_t(223), Tuint16_t(223), Tuint16_t(223), Tuint16_t(223), Tuint16_t(223), Tuint16_t(223), Tuint16_t(223), Tuint16_t(223),
Tuint16_t(224), Tuint16_t(224), Tuint16_t(225), Tuint16_t(224), Tuint16_t(226), Tuint16_t(224), Tuint16_t(224), Tuint16_t(224), Tuint16_t(224), Tuint16_t(224), Tuint16_t(224), Tuint16_t(224), Tuint16_t(224), Tuint16_t(224), Tuint16_t(227), Tuint16_t(224),
Tuint16_t(224), Tuint16_t(228), Tuint16_t(229), Tuint16_t(224), Tuint16_t(224), Tuint16_t(224), Tuint16_t(224), Tuint16_t(224), Tuint16_t(224), Tuint16_t(224), Tuint16_t(230), Tuint16_t(224), Tuint16_t(224), Tuint16_t(224), Tuint16_t(224), Tuint16_t(224),
Tuint16_t(231), Tuint16_t(231), Tuint16_t(232), Tuint16_t(231), Tuint16_t(233), Tuint16_t(231), Tuint16_t(231), Tuint16_t(231), Tuint16_t(231), Tuint16_t(231), Tuint16_t(231), Tuint16_t(231), Tuint16_t(231), Tuint16_t(231), Tuint16_t(234), Tuint16_t(231),
Tuint16_t(231), Tuint16_t(235), Tuint16_t(236), Tuint16_t(231), Tuint16_t(231), Tuint16_t(231), Tuint16_t(231), Tuint16_t(231), Tuint16_t(231), Tuint16_t(231), Tuint16_t(237), Tuint16_t(231), Tuint16_t(231), Tuint16_t(231), Tuint16_t(231), Tuint16_t(231),
Tuint16_t(238), Tuint16_t(238), Tuint16_t(238), Tuint16_t(238), Tuint16_t(238), Tuint16_t(238), Tuint16_t(239), Tuint16_t(238), Tuint16_t(239), Tuint16_t(238), Tuint16_t(238), Tuint16_t(238), Tuint16_t(238), Tuint16_t(238), Tuint16_t(238), Tuint16_t(238),
Tuint16_t(240), Tuint16_t(241), Tuint16_t(242), Tuint16_t(243), Tuint16_t(240), Tuint16_t(241), Tuint16_t(240), Tuint16_t(241), Tuint16_t(240), Tuint16_t(241), Tuint16_t(240), Tuint16_t(241), Tuint16_t(240), Tuint16_t(241), Tuint16_t(240), Tuint16_t(241),
Tuint16_t(240), Tuint16_t(241), Tuint16_t(240), Tuint16_t(241), Tuint16_t(240), Tuint16_t(241), Tuint16_t(240), Tuint16_t(241), Tuint16_t(240), Tuint16_t(241), Tuint16_t(240), Tuint16_t(241), Tuint16_t(240), Tuint16_t(241), Tuint16_t(240), Tuint16_t(241),
// block 9
Tuint16_t(240), Tuint16_t(241), Tuint16_t(244), Tuint16_t(245), Tuint16_t(246), Tuint16_t(247), Tuint16_t(247), Tuint16_t(246), Tuint16_t(248), Tuint16_t(248), Tuint16_t(240), Tuint16_t(241), Tuint16_t(240), Tuint16_t(241), Tuint16_t(240), Tuint16_t(241),
Tuint16_t(240), Tuint16_t(241), Tuint16_t(240), Tuint16_t(241), Tuint16_t(240), Tuint16_t(241), Tuint16_t(240), Tuint16_t(241), Tuint16_t(240), Tuint16_t(241), Tuint16_t(240), Tuint16_t(241), Tuint16_t(240), Tuint16_t(241), Tuint16_t(240), Tuint16_t(241),
Tuint16_t(240), Tuint16_t(241), Tuint16_t(240), Tuint16_t(241), Tuint16_t(240), Tuint16_t(241), Tuint16_t(240), Tuint16_t(241), Tuint16_t(240), Tuint16_t(241), Tuint16_t(240), Tuint16_t(241), Tuint16_t(240), Tuint16_t(241), Tuint16_t(240), Tuint16_t(241),
Tuint16_t(240), Tuint16_t(241), Tuint16_t(240), Tuint16_t(241), Tuint16_t(240), Tuint16_t(241), Tuint16_t(240), Tuint16_t(241), Tuint16_t(240), Tuint16_t(241), Tuint16_t(240), Tuint16_t(241), Tuint16_t(240), Tuint16_t(241), Tuint16_t(240), Tuint16_t(241),
Tuint16_t(249), Tuint16_t(240), Tuint16_t(241), Tuint16_t(240), Tuint16_t(241), Tuint16_t(240), Tuint16_t(241), Tuint16_t(240), Tuint16_t(241), Tuint16_t(240), Tuint16_t(241), Tuint16_t(240), Tuint16_t(241), Tuint16_t(240), Tuint16_t(241), Tuint16_t(250),
Tuint16_t(240), Tuint16_t(241), Tuint16_t(240), Tuint16_t(241), Tuint16_t(240), Tuint16_t(241), Tuint16_t(240), Tuint16_t(241), Tuint16_t(240), Tuint16_t(241), Tuint16_t(240), Tuint16_t(241), Tuint16_t(240), Tuint16_t(241), Tuint16_t(240), Tuint16_t(241),
Tuint16_t(240), Tuint16_t(241), Tuint16_t(240), Tuint16_t(241), Tuint16_t(240), Tuint16_t(241), Tuint16_t(240), Tuint16_t(241), Tuint16_t(240), Tuint16_t(241), Tuint16_t(240), Tuint16_t(241), Tuint16_t(240), Tuint16_t(241), Tuint16_t(240), Tuint16_t(241),
Tuint16_t(240), Tuint16_t(241), Tuint16_t(240), Tuint16_t(241), Tuint16_t(240), Tuint16_t(241), Tuint16_t(240), Tuint16_t(241), Tuint16_t(240), Tuint16_t(241), Tuint16_t(240), Tuint16_t(241), Tuint16_t(240), Tuint16_t(241), Tuint16_t(240), Tuint16_t(241),
// block 10
Tuint16_t(240), Tuint16_t(241), Tuint16_t(240), Tuint16_t(241), Tuint16_t(240), Tuint16_t(241), Tuint16_t(240), Tuint16_t(241), Tuint16_t(240), Tuint16_t(241), Tuint16_t(240), Tuint16_t(241), Tuint16_t(240), Tuint16_t(241), Tuint16_t(240), Tuint16_t(241),
Tuint16_t(240), Tuint16_t(241), Tuint16_t(240), Tuint16_t(241), Tuint16_t(240), Tuint16_t(241), Tuint16_t(240), Tuint16_t(241), Tuint16_t(240), Tuint16_t(241), Tuint16_t(240), Tuint16_t(241), Tuint16_t(240), Tuint16_t(241), Tuint16_t(240), Tuint16_t(241),
Tuint16_t(240), Tuint16_t(241), Tuint16_t(240), Tuint16_t(241), Tuint16_t(240), Tuint16_t(241), Tuint16_t(240), Tuint16_t(241), Tuint16_t(240), Tuint16_t(241), Tuint16_t(240), Tuint16_t(241), Tuint16_t(240), Tuint16_t(241), Tuint16_t(240), Tuint16_t(241),
Tuint16_t(163), Tuint16_t(251), Tuint16_t(251), Tuint16_t(251), Tuint16_t(251), Tuint16_t(251), Tuint16_t(251), Tuint16_t(251), Tuint16_t(251), Tuint16_t(251), Tuint16_t(251), Tuint16_t(251), Tuint16_t(251), Tuint16_t(251), Tuint16_t(251), Tuint16_t(251),
Tuint16_t(251), Tuint16_t(251), Tuint16_t(251), Tuint16_t(251), Tuint16_t(251), Tuint16_t(251), Tuint16_t(251), Tuint16_t(251), Tuint16_t(251), Tuint16_t(251), Tuint16_t(251), Tuint16_t(251), Tuint16_t(251), Tuint16_t(251), Tuint16_t(251), Tuint16_t(251),
Tuint16_t(251), Tuint16_t(251), Tuint16_t(251), Tuint16_t(251), Tuint16_t(251), Tuint16_t(251), Tuint16_t(251), Tuint16_t(163), Tuint16_t(163), Tuint16_t(252), Tuint16_t(253), Tuint16_t(253), Tuint16_t(253), Tuint16_t(253), Tuint16_t(253), Tuint16_t(254),
Tuint16_t(255), Tuint16_t(256), Tuint16_t(256), Tuint16_t(256), Tuint16_t(256), Tuint16_t(256), Tuint16_t(256), Tuint16_t(256), Tuint16_t(256), Tuint16_t(256), Tuint16_t(256), Tuint16_t(256), Tuint16_t(256), Tuint16_t(256), Tuint16_t(256), Tuint16_t(256),
Tuint16_t(256), Tuint16_t(256), Tuint16_t(256), Tuint16_t(256), Tuint16_t(256), Tuint16_t(256), Tuint16_t(256), Tuint16_t(256), Tuint16_t(256), Tuint16_t(256), Tuint16_t(256), Tuint16_t(256), Tuint16_t(256), Tuint16_t(256), Tuint16_t(256), Tuint16_t(256),
// block 11
Tuint16_t(256), Tuint16_t(256), Tuint16_t(256), Tuint16_t(256), Tuint16_t(256), Tuint16_t(256), Tuint16_t(256), Tuint16_t(257), Tuint16_t(255), Tuint16_t(258), Tuint16_t(259), Tuint16_t(163), Tuint16_t(163), Tuint16_t(260), Tuint16_t(260), Tuint16_t(261),
Tuint16_t(262), Tuint16_t(263), Tuint16_t(263), Tuint16_t(263), Tuint16_t(263), Tuint16_t(263), Tuint16_t(263), Tuint16_t(263), Tuint16_t(263), Tuint16_t(263), Tuint16_t(263), Tuint16_t(263), Tuint16_t(263), Tuint16_t(263), Tuint16_t(263), Tuint16_t(263),
Tuint16_t(263), Tuint16_t(263), Tuint16_t(264), Tuint16_t(263), Tuint16_t(263), Tuint16_t(263), Tuint16_t(263), Tuint16_t(263), Tuint16_t(263), Tuint16_t(263), Tuint16_t(263), Tuint16_t(263), Tuint16_t(263), Tuint16_t(263), Tuint16_t(263), Tuint16_t(263),
Tuint16_t(265), Tuint16_t(265), Tuint16_t(265), Tuint16_t(265), Tuint16_t(265), Tuint16_t(265), Tuint16_t(265), Tuint16_t(265), Tuint16_t(265), Tuint16_t(265), Tuint16_t(265), Tuint16_t(265), Tuint16_t(265), Tuint16_t(265), Tuint16_t(266), Tuint16_t(265),
Tuint16_t(267), Tuint16_t(265), Tuint16_t(265), Tuint16_t(268), Tuint16_t(265), Tuint16_t(269), Tuint16_t(267), Tuint16_t(269), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262),
Tuint16_t(270), Tuint16_t(270), Tuint16_t(270), Tuint16_t(270), Tuint16_t(270), Tuint16_t(270), Tuint16_t(270), Tuint16_t(270), Tuint16_t(270), Tuint16_t(270), Tuint16_t(270), Tuint16_t(270), Tuint16_t(270), Tuint16_t(270), Tuint16_t(270), Tuint16_t(270),
Tuint16_t(270), Tuint16_t(270), Tuint16_t(270), Tuint16_t(270), Tuint16_t(270), Tuint16_t(270), Tuint16_t(270), Tuint16_t(270), Tuint16_t(270), Tuint16_t(270), Tuint16_t(270), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(270),
Tuint16_t(270), Tuint16_t(270), Tuint16_t(270), Tuint16_t(267), Tuint16_t(271), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262),
// block 12
Tuint16_t(272), Tuint16_t(272), Tuint16_t(272), Tuint16_t(272), Tuint16_t(272), Tuint16_t(273), Tuint16_t(274), Tuint16_t(274), Tuint16_t(275), Tuint16_t(276), Tuint16_t(276), Tuint16_t(277), Tuint16_t(278), Tuint16_t(279), Tuint16_t(280), Tuint16_t(280),
Tuint16_t(281), Tuint16_t(281), Tuint16_t(281), Tuint16_t(281), Tuint16_t(281), Tuint16_t(281), Tuint16_t(281), Tuint16_t(281), Tuint16_t(281), Tuint16_t(281), Tuint16_t(281), Tuint16_t(282), Tuint16_t(283), Tuint16_t(284), Tuint16_t(284), Tuint16_t(285),
Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286),
Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286),
Tuint16_t(287), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(288), Tuint16_t(288), Tuint16_t(288), Tuint16_t(288), Tuint16_t(288),
Tuint16_t(288), Tuint16_t(288), Tuint16_t(288), Tuint16_t(289), Tuint16_t(289), Tuint16_t(289), Tuint16_t(281), Tuint16_t(290), Tuint16_t(291), Tuint16_t(281), Tuint16_t(281), Tuint16_t(281), Tuint16_t(281), Tuint16_t(281), Tuint16_t(281), Tuint16_t(281),
Tuint16_t(292), Tuint16_t(292), Tuint16_t(292), Tuint16_t(292), Tuint16_t(292), Tuint16_t(292), Tuint16_t(292), Tuint16_t(292), Tuint16_t(292), Tuint16_t(292), Tuint16_t(276), Tuint16_t(293), Tuint16_t(293), Tuint16_t(279), Tuint16_t(286), Tuint16_t(286),
Tuint16_t(289), Tuint16_t(286), Tuint16_t(286), Tuint16_t(294), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286),
// block 13
Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286),
Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286),
Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286),
Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286),
Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286),
Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(295), Tuint16_t(286), Tuint16_t(281), Tuint16_t(281), Tuint16_t(281), Tuint16_t(281), Tuint16_t(281), Tuint16_t(281), Tuint16_t(281), Tuint16_t(273), Tuint16_t(280), Tuint16_t(291),
Tuint16_t(291), Tuint16_t(281), Tuint16_t(281), Tuint16_t(281), Tuint16_t(281), Tuint16_t(296), Tuint16_t(296), Tuint16_t(281), Tuint16_t(281), Tuint16_t(280), Tuint16_t(291), Tuint16_t(291), Tuint16_t(291), Tuint16_t(281), Tuint16_t(286), Tuint16_t(286),
Tuint16_t(297), Tuint16_t(297), Tuint16_t(297), Tuint16_t(297), Tuint16_t(297), Tuint16_t(297), Tuint16_t(297), Tuint16_t(297), Tuint16_t(297), Tuint16_t(297), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(298), Tuint16_t(298), Tuint16_t(286),
// block 14
Tuint16_t(299), Tuint16_t(299), Tuint16_t(299), Tuint16_t(300), Tuint16_t(300), Tuint16_t(300), Tuint16_t(300), Tuint16_t(300), Tuint16_t(300), Tuint16_t(300), Tuint16_t(300), Tuint16_t(301), Tuint16_t(300), Tuint16_t(301), Tuint16_t(302), Tuint16_t(303),
Tuint16_t(304), Tuint16_t(305), Tuint16_t(304), Tuint16_t(304), Tuint16_t(304), Tuint16_t(304), Tuint16_t(304), Tuint16_t(304), Tuint16_t(304), Tuint16_t(304), Tuint16_t(304), Tuint16_t(304), Tuint16_t(304), Tuint16_t(304), Tuint16_t(304), Tuint16_t(304),
Tuint16_t(304), Tuint16_t(304), Tuint16_t(304), Tuint16_t(304), Tuint16_t(304), Tuint16_t(304), Tuint16_t(304), Tuint16_t(304), Tuint16_t(304), Tuint16_t(304), Tuint16_t(304), Tuint16_t(304), Tuint16_t(304), Tuint16_t(304), Tuint16_t(304), Tuint16_t(304),
Tuint16_t(306), Tuint16_t(306), Tuint16_t(306), Tuint16_t(306), Tuint16_t(306), Tuint16_t(306), Tuint16_t(306), Tuint16_t(306), Tuint16_t(306), Tuint16_t(306), Tuint16_t(306), Tuint16_t(306), Tuint16_t(306), Tuint16_t(306), Tuint16_t(306), Tuint16_t(306),
Tuint16_t(307), Tuint16_t(307), Tuint16_t(307), Tuint16_t(307), Tuint16_t(307), Tuint16_t(307), Tuint16_t(307), Tuint16_t(307), Tuint16_t(307), Tuint16_t(307), Tuint16_t(307), Tuint16_t(302), Tuint16_t(302), Tuint16_t(304), Tuint16_t(304), Tuint16_t(304),
Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286),
Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286),
Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286),
// block 15
Tuint16_t(308), Tuint16_t(308), Tuint16_t(308), Tuint16_t(308), Tuint16_t(308), Tuint16_t(308), Tuint16_t(308), Tuint16_t(308), Tuint16_t(308), Tuint16_t(308), Tuint16_t(308), Tuint16_t(308), Tuint16_t(308), Tuint16_t(308), Tuint16_t(308), Tuint16_t(308),
Tuint16_t(308), Tuint16_t(308), Tuint16_t(308), Tuint16_t(308), Tuint16_t(308), Tuint16_t(308), Tuint16_t(308), Tuint16_t(308), Tuint16_t(308), Tuint16_t(308), Tuint16_t(308), Tuint16_t(308), Tuint16_t(308), Tuint16_t(308), Tuint16_t(308), Tuint16_t(308),
Tuint16_t(308), Tuint16_t(308), Tuint16_t(308), Tuint16_t(308), Tuint16_t(308), Tuint16_t(308), Tuint16_t(309), Tuint16_t(309), Tuint16_t(309), Tuint16_t(309), Tuint16_t(309), Tuint16_t(309), Tuint16_t(309), Tuint16_t(309), Tuint16_t(309), Tuint16_t(309),
Tuint16_t(309), Tuint16_t(308), Tuint16_t(302), Tuint16_t(302), Tuint16_t(302), Tuint16_t(302), Tuint16_t(302), Tuint16_t(302), Tuint16_t(302), Tuint16_t(302), Tuint16_t(302), Tuint16_t(302), Tuint16_t(302), Tuint16_t(302), Tuint16_t(302), Tuint16_t(302),
Tuint16_t(310), Tuint16_t(310), Tuint16_t(310), Tuint16_t(310), Tuint16_t(310), Tuint16_t(310), Tuint16_t(310), Tuint16_t(310), Tuint16_t(310), Tuint16_t(310), Tuint16_t(311), Tuint16_t(311), Tuint16_t(311), Tuint16_t(311), Tuint16_t(311), Tuint16_t(311),
Tuint16_t(311), Tuint16_t(311), Tuint16_t(311), Tuint16_t(311), Tuint16_t(311), Tuint16_t(311), Tuint16_t(311), Tuint16_t(311), Tuint16_t(311), Tuint16_t(311), Tuint16_t(311), Tuint16_t(311), Tuint16_t(311), Tuint16_t(311), Tuint16_t(311), Tuint16_t(311),
Tuint16_t(311), Tuint16_t(311), Tuint16_t(311), Tuint16_t(311), Tuint16_t(311), Tuint16_t(311), Tuint16_t(311), Tuint16_t(311), Tuint16_t(311), Tuint16_t(311), Tuint16_t(311), Tuint16_t(312), Tuint16_t(312), Tuint16_t(312), Tuint16_t(312), Tuint16_t(312),
Tuint16_t(312), Tuint16_t(312), Tuint16_t(312), Tuint16_t(312), Tuint16_t(313), Tuint16_t(313), Tuint16_t(314), Tuint16_t(315), Tuint16_t(316), Tuint16_t(317), Tuint16_t(318), Tuint16_t(262), Tuint16_t(262), Tuint16_t(319), Tuint16_t(320), Tuint16_t(320),
// block 16
Tuint16_t(321), Tuint16_t(321), Tuint16_t(321), Tuint16_t(321), Tuint16_t(321), Tuint16_t(321), Tuint16_t(321), Tuint16_t(321), Tuint16_t(321), Tuint16_t(321), Tuint16_t(321), Tuint16_t(321), Tuint16_t(321), Tuint16_t(321), Tuint16_t(321), Tuint16_t(321),
Tuint16_t(321), Tuint16_t(321), Tuint16_t(321), Tuint16_t(321), Tuint16_t(321), Tuint16_t(321), Tuint16_t(322), Tuint16_t(322), Tuint16_t(323), Tuint16_t(323), Tuint16_t(324), Tuint16_t(322), Tuint16_t(322), Tuint16_t(322), Tuint16_t(322), Tuint16_t(322),
Tuint16_t(322), Tuint16_t(322), Tuint16_t(322), Tuint16_t(322), Tuint16_t(324), Tuint16_t(322), Tuint16_t(322), Tuint16_t(322), Tuint16_t(324), Tuint16_t(322), Tuint16_t(322), Tuint16_t(322), Tuint16_t(322), Tuint16_t(325), Tuint16_t(262), Tuint16_t(262),
Tuint16_t(326), Tuint16_t(326), Tuint16_t(326), Tuint16_t(326), Tuint16_t(326), Tuint16_t(326), Tuint16_t(326), Tuint16_t(327), Tuint16_t(326), Tuint16_t(327), Tuint16_t(326), Tuint16_t(326), Tuint16_t(326), Tuint16_t(327), Tuint16_t(327), Tuint16_t(262),
Tuint16_t(328), Tuint16_t(328), Tuint16_t(328), Tuint16_t(328), Tuint16_t(328), Tuint16_t(328), Tuint16_t(328), Tuint16_t(328), Tuint16_t(328), Tuint16_t(328), Tuint16_t(328), Tuint16_t(328), Tuint16_t(328), Tuint16_t(328), Tuint16_t(328), Tuint16_t(328),
Tuint16_t(328), Tuint16_t(328), Tuint16_t(328), Tuint16_t(328), Tuint16_t(328), Tuint16_t(328), Tuint16_t(328), Tuint16_t(328), Tuint16_t(328), Tuint16_t(329), Tuint16_t(329), Tuint16_t(329), Tuint16_t(262), Tuint16_t(262), Tuint16_t(330), Tuint16_t(262),
Tuint16_t(304), Tuint16_t(304), Tuint16_t(304), Tuint16_t(304), Tuint16_t(304), Tuint16_t(304), Tuint16_t(304), Tuint16_t(304), Tuint16_t(304), Tuint16_t(304), Tuint16_t(304), Tuint16_t(302), Tuint16_t(302), Tuint16_t(302), Tuint16_t(302), Tuint16_t(302),
Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286),
// block 17
Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(331), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(302),
Tuint16_t(272), Tuint16_t(272), Tuint16_t(302), Tuint16_t(302), Tuint16_t(302), Tuint16_t(302), Tuint16_t(302), Tuint16_t(302), Tuint16_t(291), Tuint16_t(291), Tuint16_t(291), Tuint16_t(291), Tuint16_t(291), Tuint16_t(291), Tuint16_t(291), Tuint16_t(291),
Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286),
Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286),
Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(296), Tuint16_t(291), Tuint16_t(291), Tuint16_t(291), Tuint16_t(291), Tuint16_t(291), Tuint16_t(291),
Tuint16_t(291), Tuint16_t(291), Tuint16_t(291), Tuint16_t(332), Tuint16_t(281), Tuint16_t(281), Tuint16_t(281), Tuint16_t(281), Tuint16_t(281), Tuint16_t(281), Tuint16_t(281), Tuint16_t(281), Tuint16_t(281), Tuint16_t(281), Tuint16_t(281), Tuint16_t(281),
Tuint16_t(332), Tuint16_t(332), Tuint16_t(273), Tuint16_t(290), Tuint16_t(290), Tuint16_t(290), Tuint16_t(290), Tuint16_t(290), Tuint16_t(290), Tuint16_t(290), Tuint16_t(291), Tuint16_t(291), Tuint16_t(291), Tuint16_t(291), Tuint16_t(291), Tuint16_t(291),
Tuint16_t(290), Tuint16_t(290), Tuint16_t(290), Tuint16_t(290), Tuint16_t(290), Tuint16_t(290), Tuint16_t(290), Tuint16_t(290), Tuint16_t(290), Tuint16_t(290), Tuint16_t(290), Tuint16_t(290), Tuint16_t(290), Tuint16_t(290), Tuint16_t(290), Tuint16_t(281),
// block 18
Tuint16_t(333), Tuint16_t(333), Tuint16_t(333), Tuint16_t(334), Tuint16_t(335), Tuint16_t(335), Tuint16_t(335), Tuint16_t(335), Tuint16_t(335), Tuint16_t(335), Tuint16_t(335), Tuint16_t(335), Tuint16_t(335), Tuint16_t(335), Tuint16_t(335), Tuint16_t(335),
Tuint16_t(335), Tuint16_t(335), Tuint16_t(335), Tuint16_t(335), Tuint16_t(335), Tuint16_t(335), Tuint16_t(335), Tuint16_t(335), Tuint16_t(335), Tuint16_t(335), Tuint16_t(335), Tuint16_t(335), Tuint16_t(335), Tuint16_t(335), Tuint16_t(335), Tuint16_t(335),
Tuint16_t(335), Tuint16_t(335), Tuint16_t(335), Tuint16_t(335), Tuint16_t(335), Tuint16_t(335), Tuint16_t(335), Tuint16_t(335), Tuint16_t(335), Tuint16_t(335), Tuint16_t(335), Tuint16_t(335), Tuint16_t(335), Tuint16_t(335), Tuint16_t(335), Tuint16_t(335),
Tuint16_t(335), Tuint16_t(335), Tuint16_t(335), Tuint16_t(335), Tuint16_t(335), Tuint16_t(335), Tuint16_t(335), Tuint16_t(335), Tuint16_t(335), Tuint16_t(335), Tuint16_t(333), Tuint16_t(334), Tuint16_t(336), Tuint16_t(335), Tuint16_t(334), Tuint16_t(334),
Tuint16_t(334), Tuint16_t(333), Tuint16_t(333), Tuint16_t(333), Tuint16_t(333), Tuint16_t(333), Tuint16_t(333), Tuint16_t(333), Tuint16_t(333), Tuint16_t(334), Tuint16_t(334), Tuint16_t(334), Tuint16_t(334), Tuint16_t(337), Tuint16_t(334), Tuint16_t(334),
Tuint16_t(335), Tuint16_t(338), Tuint16_t(339), Tuint16_t(154), Tuint16_t(154), Tuint16_t(333), Tuint16_t(333), Tuint16_t(333), Tuint16_t(335), Tuint16_t(335), Tuint16_t(335), Tuint16_t(335), Tuint16_t(335), Tuint16_t(335), Tuint16_t(335), Tuint16_t(335),
Tuint16_t(335), Tuint16_t(335), Tuint16_t(333), Tuint16_t(333), Tuint16_t(340), Tuint16_t(341), Tuint16_t(342), Tuint16_t(342), Tuint16_t(342), Tuint16_t(342), Tuint16_t(342), Tuint16_t(342), Tuint16_t(342), Tuint16_t(342), Tuint16_t(342), Tuint16_t(342),
Tuint16_t(343), Tuint16_t(344), Tuint16_t(335), Tuint16_t(335), Tuint16_t(335), Tuint16_t(335), Tuint16_t(335), Tuint16_t(335), Tuint16_t(335), Tuint16_t(335), Tuint16_t(335), Tuint16_t(335), Tuint16_t(335), Tuint16_t(335), Tuint16_t(335), Tuint16_t(335),
// block 19
Tuint16_t(345), Tuint16_t(346), Tuint16_t(347), Tuint16_t(347), Tuint16_t(163), Tuint16_t(345), Tuint16_t(345), Tuint16_t(345), Tuint16_t(345), Tuint16_t(345), Tuint16_t(345), Tuint16_t(345), Tuint16_t(345), Tuint16_t(163), Tuint16_t(163), Tuint16_t(345),
Tuint16_t(345), Tuint16_t(163), Tuint16_t(163), Tuint16_t(345), Tuint16_t(345), Tuint16_t(345), Tuint16_t(345), Tuint16_t(345), Tuint16_t(345), Tuint16_t(345), Tuint16_t(345), Tuint16_t(345), Tuint16_t(345), Tuint16_t(345), Tuint16_t(345), Tuint16_t(345),
Tuint16_t(345), Tuint16_t(345), Tuint16_t(345), Tuint16_t(345), Tuint16_t(345), Tuint16_t(345), Tuint16_t(345), Tuint16_t(345), Tuint16_t(345), Tuint16_t(163), Tuint16_t(345), Tuint16_t(345), Tuint16_t(345), Tuint16_t(345), Tuint16_t(345), Tuint16_t(345),
Tuint16_t(345), Tuint16_t(163), Tuint16_t(345), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(345), Tuint16_t(345), Tuint16_t(345), Tuint16_t(345), Tuint16_t(163), Tuint16_t(163), Tuint16_t(348), Tuint16_t(345), Tuint16_t(349), Tuint16_t(347),
Tuint16_t(347), Tuint16_t(346), Tuint16_t(346), Tuint16_t(346), Tuint16_t(346), Tuint16_t(163), Tuint16_t(163), Tuint16_t(347), Tuint16_t(347), Tuint16_t(163), Tuint16_t(163), Tuint16_t(347), Tuint16_t(347), Tuint16_t(350), Tuint16_t(345), Tuint16_t(163),
Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(349), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(345), Tuint16_t(345), Tuint16_t(163), Tuint16_t(345),
Tuint16_t(345), Tuint16_t(345), Tuint16_t(346), Tuint16_t(346), Tuint16_t(163), Tuint16_t(163), Tuint16_t(351), Tuint16_t(351), Tuint16_t(351), Tuint16_t(351), Tuint16_t(351), Tuint16_t(351), Tuint16_t(351), Tuint16_t(351), Tuint16_t(351), Tuint16_t(351),
Tuint16_t(345), Tuint16_t(345), Tuint16_t(352), Tuint16_t(352), Tuint16_t(353), Tuint16_t(353), Tuint16_t(353), Tuint16_t(353), Tuint16_t(353), Tuint16_t(353), Tuint16_t(354), Tuint16_t(352), Tuint16_t(345), Tuint16_t(355), Tuint16_t(356), Tuint16_t(163),
// block 20
Tuint16_t(163), Tuint16_t(357), Tuint16_t(357), Tuint16_t(358), Tuint16_t(163), Tuint16_t(359), Tuint16_t(359), Tuint16_t(359), Tuint16_t(359), Tuint16_t(359), Tuint16_t(359), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(359),
Tuint16_t(359), Tuint16_t(163), Tuint16_t(163), Tuint16_t(359), Tuint16_t(359), Tuint16_t(359), Tuint16_t(359), Tuint16_t(359), Tuint16_t(359), Tuint16_t(359), Tuint16_t(359), Tuint16_t(359), Tuint16_t(359), Tuint16_t(359), Tuint16_t(359), Tuint16_t(359),
Tuint16_t(359), Tuint16_t(359), Tuint16_t(359), Tuint16_t(359), Tuint16_t(359), Tuint16_t(359), Tuint16_t(359), Tuint16_t(359), Tuint16_t(359), Tuint16_t(163), Tuint16_t(359), Tuint16_t(359), Tuint16_t(359), Tuint16_t(359), Tuint16_t(359), Tuint16_t(359),
Tuint16_t(359), Tuint16_t(163), Tuint16_t(359), Tuint16_t(359), Tuint16_t(163), Tuint16_t(359), Tuint16_t(359), Tuint16_t(163), Tuint16_t(359), Tuint16_t(359), Tuint16_t(163), Tuint16_t(163), Tuint16_t(360), Tuint16_t(163), Tuint16_t(358), Tuint16_t(358),
Tuint16_t(358), Tuint16_t(357), Tuint16_t(357), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(357), Tuint16_t(357), Tuint16_t(163), Tuint16_t(163), Tuint16_t(357), Tuint16_t(357), Tuint16_t(361), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(163), Tuint16_t(357), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(359), Tuint16_t(359), Tuint16_t(359), Tuint16_t(359), Tuint16_t(163), Tuint16_t(359), Tuint16_t(163),
Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(362), Tuint16_t(362), Tuint16_t(362), Tuint16_t(362), Tuint16_t(362), Tuint16_t(362), Tuint16_t(362), Tuint16_t(362), Tuint16_t(362), Tuint16_t(362),
Tuint16_t(357), Tuint16_t(357), Tuint16_t(359), Tuint16_t(359), Tuint16_t(359), Tuint16_t(357), Tuint16_t(363), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
// block 21
Tuint16_t(163), Tuint16_t(364), Tuint16_t(364), Tuint16_t(365), Tuint16_t(163), Tuint16_t(366), Tuint16_t(366), Tuint16_t(366), Tuint16_t(366), Tuint16_t(366), Tuint16_t(366), Tuint16_t(366), Tuint16_t(366), Tuint16_t(366), Tuint16_t(163), Tuint16_t(366),
Tuint16_t(366), Tuint16_t(366), Tuint16_t(163), Tuint16_t(366), Tuint16_t(366), Tuint16_t(366), Tuint16_t(366), Tuint16_t(366), Tuint16_t(366), Tuint16_t(366), Tuint16_t(366), Tuint16_t(366), Tuint16_t(366), Tuint16_t(366), Tuint16_t(366), Tuint16_t(366),
Tuint16_t(366), Tuint16_t(366), Tuint16_t(366), Tuint16_t(366), Tuint16_t(366), Tuint16_t(366), Tuint16_t(366), Tuint16_t(366), Tuint16_t(366), Tuint16_t(163), Tuint16_t(366), Tuint16_t(366), Tuint16_t(366), Tuint16_t(366), Tuint16_t(366), Tuint16_t(366),
Tuint16_t(366), Tuint16_t(163), Tuint16_t(366), Tuint16_t(366), Tuint16_t(163), Tuint16_t(366), Tuint16_t(366), Tuint16_t(366), Tuint16_t(366), Tuint16_t(366), Tuint16_t(163), Tuint16_t(163), Tuint16_t(367), Tuint16_t(366), Tuint16_t(365), Tuint16_t(365),
Tuint16_t(365), Tuint16_t(364), Tuint16_t(364), Tuint16_t(364), Tuint16_t(364), Tuint16_t(364), Tuint16_t(163), Tuint16_t(364), Tuint16_t(364), Tuint16_t(365), Tuint16_t(163), Tuint16_t(365), Tuint16_t(365), Tuint16_t(368), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(366), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(366), Tuint16_t(366), Tuint16_t(364), Tuint16_t(364), Tuint16_t(163), Tuint16_t(163), Tuint16_t(369), Tuint16_t(369), Tuint16_t(369), Tuint16_t(369), Tuint16_t(369), Tuint16_t(369), Tuint16_t(369), Tuint16_t(369), Tuint16_t(369), Tuint16_t(369),
Tuint16_t(370), Tuint16_t(371), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(366), Tuint16_t(364), Tuint16_t(364), Tuint16_t(364), Tuint16_t(367), Tuint16_t(367), Tuint16_t(367),
// block 22
Tuint16_t(163), Tuint16_t(372), Tuint16_t(373), Tuint16_t(373), Tuint16_t(163), Tuint16_t(374), Tuint16_t(374), Tuint16_t(374), Tuint16_t(374), Tuint16_t(374), Tuint16_t(374), Tuint16_t(374), Tuint16_t(374), Tuint16_t(163), Tuint16_t(163), Tuint16_t(374),
Tuint16_t(374), Tuint16_t(163), Tuint16_t(163), Tuint16_t(374), Tuint16_t(374), Tuint16_t(374), Tuint16_t(374), Tuint16_t(374), Tuint16_t(374), Tuint16_t(374), Tuint16_t(374), Tuint16_t(374), Tuint16_t(374), Tuint16_t(374), Tuint16_t(374), Tuint16_t(374),
Tuint16_t(374), Tuint16_t(374), Tuint16_t(374), Tuint16_t(374), Tuint16_t(374), Tuint16_t(374), Tuint16_t(374), Tuint16_t(374), Tuint16_t(374), Tuint16_t(163), Tuint16_t(374), Tuint16_t(374), Tuint16_t(374), Tuint16_t(374), Tuint16_t(374), Tuint16_t(374),
Tuint16_t(374), Tuint16_t(163), Tuint16_t(374), Tuint16_t(374), Tuint16_t(163), Tuint16_t(374), Tuint16_t(374), Tuint16_t(374), Tuint16_t(374), Tuint16_t(374), Tuint16_t(163), Tuint16_t(163), Tuint16_t(375), Tuint16_t(374), Tuint16_t(376), Tuint16_t(372),
Tuint16_t(373), Tuint16_t(372), Tuint16_t(372), Tuint16_t(372), Tuint16_t(372), Tuint16_t(163), Tuint16_t(163), Tuint16_t(373), Tuint16_t(373), Tuint16_t(163), Tuint16_t(163), Tuint16_t(373), Tuint16_t(373), Tuint16_t(377), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(378), Tuint16_t(372), Tuint16_t(376), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(374), Tuint16_t(374), Tuint16_t(163), Tuint16_t(374),
Tuint16_t(374), Tuint16_t(374), Tuint16_t(372), Tuint16_t(372), Tuint16_t(163), Tuint16_t(163), Tuint16_t(379), Tuint16_t(379), Tuint16_t(379), Tuint16_t(379), Tuint16_t(379), Tuint16_t(379), Tuint16_t(379), Tuint16_t(379), Tuint16_t(379), Tuint16_t(379),
Tuint16_t(380), Tuint16_t(374), Tuint16_t(381), Tuint16_t(381), Tuint16_t(381), Tuint16_t(381), Tuint16_t(381), Tuint16_t(381), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
// block 23
Tuint16_t(163), Tuint16_t(163), Tuint16_t(382), Tuint16_t(383), Tuint16_t(163), Tuint16_t(383), Tuint16_t(383), Tuint16_t(383), Tuint16_t(383), Tuint16_t(383), Tuint16_t(383), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(383), Tuint16_t(383),
Tuint16_t(383), Tuint16_t(163), Tuint16_t(383), Tuint16_t(383), Tuint16_t(383), Tuint16_t(383), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(383), Tuint16_t(383), Tuint16_t(163), Tuint16_t(383), Tuint16_t(163), Tuint16_t(383), Tuint16_t(383),
Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(383), Tuint16_t(383), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(383), Tuint16_t(383), Tuint16_t(383), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(383), Tuint16_t(383),
Tuint16_t(383), Tuint16_t(383), Tuint16_t(383), Tuint16_t(383), Tuint16_t(383), Tuint16_t(383), Tuint16_t(383), Tuint16_t(383), Tuint16_t(383), Tuint16_t(383), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(384), Tuint16_t(385),
Tuint16_t(382), Tuint16_t(385), Tuint16_t(385), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(385), Tuint16_t(385), Tuint16_t(385), Tuint16_t(163), Tuint16_t(385), Tuint16_t(385), Tuint16_t(385), Tuint16_t(386), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(383), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(384), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(387), Tuint16_t(387), Tuint16_t(387), Tuint16_t(387), Tuint16_t(387), Tuint16_t(387), Tuint16_t(387), Tuint16_t(387), Tuint16_t(387), Tuint16_t(387),
Tuint16_t(388), Tuint16_t(388), Tuint16_t(388), Tuint16_t(389), Tuint16_t(390), Tuint16_t(390), Tuint16_t(390), Tuint16_t(390), Tuint16_t(390), Tuint16_t(391), Tuint16_t(390), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
// block 24
Tuint16_t(392), Tuint16_t(393), Tuint16_t(393), Tuint16_t(393), Tuint16_t(394), Tuint16_t(395), Tuint16_t(395), Tuint16_t(395), Tuint16_t(395), Tuint16_t(395), Tuint16_t(395), Tuint16_t(395), Tuint16_t(395), Tuint16_t(163), Tuint16_t(395), Tuint16_t(395),
Tuint16_t(395), Tuint16_t(163), Tuint16_t(395), Tuint16_t(395), Tuint16_t(395), Tuint16_t(395), Tuint16_t(395), Tuint16_t(395), Tuint16_t(395), Tuint16_t(395), Tuint16_t(395), Tuint16_t(395), Tuint16_t(395), Tuint16_t(395), Tuint16_t(395), Tuint16_t(395),
Tuint16_t(395), Tuint16_t(395), Tuint16_t(395), Tuint16_t(395), Tuint16_t(395), Tuint16_t(395), Tuint16_t(395), Tuint16_t(395), Tuint16_t(395), Tuint16_t(163), Tuint16_t(395), Tuint16_t(395), Tuint16_t(395), Tuint16_t(395), Tuint16_t(395), Tuint16_t(395),
Tuint16_t(395), Tuint16_t(395), Tuint16_t(395), Tuint16_t(395), Tuint16_t(395), Tuint16_t(395), Tuint16_t(395), Tuint16_t(395), Tuint16_t(395), Tuint16_t(395), Tuint16_t(163), Tuint16_t(163), Tuint16_t(396), Tuint16_t(395), Tuint16_t(392), Tuint16_t(392),
Tuint16_t(392), Tuint16_t(393), Tuint16_t(393), Tuint16_t(393), Tuint16_t(393), Tuint16_t(163), Tuint16_t(392), Tuint16_t(392), Tuint16_t(392), Tuint16_t(163), Tuint16_t(392), Tuint16_t(392), Tuint16_t(392), Tuint16_t(397), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(392), Tuint16_t(392), Tuint16_t(163), Tuint16_t(395), Tuint16_t(395), Tuint16_t(395), Tuint16_t(163), Tuint16_t(163), Tuint16_t(395), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(395), Tuint16_t(395), Tuint16_t(392), Tuint16_t(392), Tuint16_t(163), Tuint16_t(163), Tuint16_t(398), Tuint16_t(398), Tuint16_t(398), Tuint16_t(398), Tuint16_t(398), Tuint16_t(398), Tuint16_t(398), Tuint16_t(398), Tuint16_t(398), Tuint16_t(398),
Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(399), Tuint16_t(400), Tuint16_t(400), Tuint16_t(400), Tuint16_t(400), Tuint16_t(400), Tuint16_t(400), Tuint16_t(400), Tuint16_t(401),
// block 25
Tuint16_t(402), Tuint16_t(403), Tuint16_t(404), Tuint16_t(404), Tuint16_t(405), Tuint16_t(402), Tuint16_t(402), Tuint16_t(402), Tuint16_t(402), Tuint16_t(402), Tuint16_t(402), Tuint16_t(402), Tuint16_t(402), Tuint16_t(163), Tuint16_t(402), Tuint16_t(402),
Tuint16_t(402), Tuint16_t(163), Tuint16_t(402), Tuint16_t(402), Tuint16_t(402), Tuint16_t(402), Tuint16_t(402), Tuint16_t(402), Tuint16_t(402), Tuint16_t(402), Tuint16_t(402), Tuint16_t(402), Tuint16_t(402), Tuint16_t(402), Tuint16_t(402), Tuint16_t(402),
Tuint16_t(402), Tuint16_t(402), Tuint16_t(402), Tuint16_t(402), Tuint16_t(402), Tuint16_t(402), Tuint16_t(402), Tuint16_t(402), Tuint16_t(402), Tuint16_t(163), Tuint16_t(402), Tuint16_t(402), Tuint16_t(402), Tuint16_t(402), Tuint16_t(402), Tuint16_t(402),
Tuint16_t(402), Tuint16_t(402), Tuint16_t(402), Tuint16_t(402), Tuint16_t(163), Tuint16_t(402), Tuint16_t(402), Tuint16_t(402), Tuint16_t(402), Tuint16_t(402), Tuint16_t(163), Tuint16_t(163), Tuint16_t(406), Tuint16_t(402), Tuint16_t(404), Tuint16_t(407),
Tuint16_t(404), Tuint16_t(404), Tuint16_t(408), Tuint16_t(404), Tuint16_t(404), Tuint16_t(163), Tuint16_t(407), Tuint16_t(404), Tuint16_t(404), Tuint16_t(163), Tuint16_t(404), Tuint16_t(404), Tuint16_t(403), Tuint16_t(409), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(408), Tuint16_t(408), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(402), Tuint16_t(402), Tuint16_t(163),
Tuint16_t(402), Tuint16_t(402), Tuint16_t(403), Tuint16_t(403), Tuint16_t(163), Tuint16_t(163), Tuint16_t(410), Tuint16_t(410), Tuint16_t(410), Tuint16_t(410), Tuint16_t(410), Tuint16_t(410), Tuint16_t(410), Tuint16_t(410), Tuint16_t(410), Tuint16_t(410),
Tuint16_t(163), Tuint16_t(402), Tuint16_t(402), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
// block 26
Tuint16_t(411), Tuint16_t(411), Tuint16_t(412), Tuint16_t(412), Tuint16_t(413), Tuint16_t(413), Tuint16_t(413), Tuint16_t(413), Tuint16_t(413), Tuint16_t(413), Tuint16_t(413), Tuint16_t(413), Tuint16_t(413), Tuint16_t(163), Tuint16_t(413), Tuint16_t(413),
Tuint16_t(413), Tuint16_t(163), Tuint16_t(413), Tuint16_t(413), Tuint16_t(413), Tuint16_t(413), Tuint16_t(413), Tuint16_t(413), Tuint16_t(413), Tuint16_t(413), Tuint16_t(413), Tuint16_t(413), Tuint16_t(413), Tuint16_t(413), Tuint16_t(413), Tuint16_t(413),
Tuint16_t(413), Tuint16_t(413), Tuint16_t(413), Tuint16_t(413), Tuint16_t(413), Tuint16_t(413), Tuint16_t(413), Tuint16_t(413), Tuint16_t(413), Tuint16_t(413), Tuint16_t(413), Tuint16_t(413), Tuint16_t(413), Tuint16_t(413), Tuint16_t(413), Tuint16_t(413),
Tuint16_t(413), Tuint16_t(413), Tuint16_t(413), Tuint16_t(413), Tuint16_t(413), Tuint16_t(413), Tuint16_t(413), Tuint16_t(413), Tuint16_t(413), Tuint16_t(413), Tuint16_t(413), Tuint16_t(414), Tuint16_t(414), Tuint16_t(413), Tuint16_t(415), Tuint16_t(412),
Tuint16_t(412), Tuint16_t(411), Tuint16_t(411), Tuint16_t(411), Tuint16_t(411), Tuint16_t(163), Tuint16_t(412), Tuint16_t(412), Tuint16_t(412), Tuint16_t(163), Tuint16_t(412), Tuint16_t(412), Tuint16_t(412), Tuint16_t(414), Tuint16_t(416), Tuint16_t(417),
Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(413), Tuint16_t(413), Tuint16_t(413), Tuint16_t(415), Tuint16_t(418), Tuint16_t(418), Tuint16_t(418), Tuint16_t(418), Tuint16_t(418), Tuint16_t(418), Tuint16_t(418), Tuint16_t(413),
Tuint16_t(413), Tuint16_t(413), Tuint16_t(411), Tuint16_t(411), Tuint16_t(163), Tuint16_t(163), Tuint16_t(419), Tuint16_t(419), Tuint16_t(419), Tuint16_t(419), Tuint16_t(419), Tuint16_t(419), Tuint16_t(419), Tuint16_t(419), Tuint16_t(419), Tuint16_t(419),
Tuint16_t(418), Tuint16_t(418), Tuint16_t(418), Tuint16_t(418), Tuint16_t(418), Tuint16_t(418), Tuint16_t(418), Tuint16_t(418), Tuint16_t(418), Tuint16_t(417), Tuint16_t(413), Tuint16_t(413), Tuint16_t(413), Tuint16_t(413), Tuint16_t(413), Tuint16_t(413),
// block 27
Tuint16_t(163), Tuint16_t(420), Tuint16_t(421), Tuint16_t(421), Tuint16_t(163), Tuint16_t(422), Tuint16_t(422), Tuint16_t(422), Tuint16_t(422), Tuint16_t(422), Tuint16_t(422), Tuint16_t(422), Tuint16_t(422), Tuint16_t(422), Tuint16_t(422), Tuint16_t(422),
Tuint16_t(422), Tuint16_t(422), Tuint16_t(422), Tuint16_t(422), Tuint16_t(422), Tuint16_t(422), Tuint16_t(422), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(422), Tuint16_t(422), Tuint16_t(422), Tuint16_t(422), Tuint16_t(422), Tuint16_t(422),
Tuint16_t(422), Tuint16_t(422), Tuint16_t(422), Tuint16_t(422), Tuint16_t(422), Tuint16_t(422), Tuint16_t(422), Tuint16_t(422), Tuint16_t(422), Tuint16_t(422), Tuint16_t(422), Tuint16_t(422), Tuint16_t(422), Tuint16_t(422), Tuint16_t(422), Tuint16_t(422),
Tuint16_t(422), Tuint16_t(422), Tuint16_t(163), Tuint16_t(422), Tuint16_t(422), Tuint16_t(422), Tuint16_t(422), Tuint16_t(422), Tuint16_t(422), Tuint16_t(422), Tuint16_t(422), Tuint16_t(422), Tuint16_t(163), Tuint16_t(422), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(422), Tuint16_t(422), Tuint16_t(422), Tuint16_t(422), Tuint16_t(422), Tuint16_t(422), Tuint16_t(422), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(423), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(424),
Tuint16_t(421), Tuint16_t(421), Tuint16_t(420), Tuint16_t(420), Tuint16_t(420), Tuint16_t(163), Tuint16_t(420), Tuint16_t(163), Tuint16_t(421), Tuint16_t(421), Tuint16_t(421), Tuint16_t(421), Tuint16_t(421), Tuint16_t(421), Tuint16_t(421), Tuint16_t(424),
Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(425), Tuint16_t(425), Tuint16_t(425), Tuint16_t(425), Tuint16_t(425), Tuint16_t(425), Tuint16_t(425), Tuint16_t(425), Tuint16_t(425), Tuint16_t(425),
Tuint16_t(163), Tuint16_t(163), Tuint16_t(421), Tuint16_t(421), Tuint16_t(426), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
// block 28
Tuint16_t(163), Tuint16_t(427), Tuint16_t(427), Tuint16_t(427), Tuint16_t(427), Tuint16_t(427), Tuint16_t(427), Tuint16_t(427), Tuint16_t(427), Tuint16_t(427), Tuint16_t(427), Tuint16_t(427), Tuint16_t(427), Tuint16_t(427), Tuint16_t(427), Tuint16_t(427),
Tuint16_t(427), Tuint16_t(427), Tuint16_t(427), Tuint16_t(427), Tuint16_t(427), Tuint16_t(427), Tuint16_t(427), Tuint16_t(427), Tuint16_t(427), Tuint16_t(427), Tuint16_t(427), Tuint16_t(427), Tuint16_t(427), Tuint16_t(427), Tuint16_t(427), Tuint16_t(427),
Tuint16_t(427), Tuint16_t(427), Tuint16_t(427), Tuint16_t(427), Tuint16_t(427), Tuint16_t(427), Tuint16_t(427), Tuint16_t(427), Tuint16_t(427), Tuint16_t(427), Tuint16_t(427), Tuint16_t(427), Tuint16_t(427), Tuint16_t(427), Tuint16_t(427), Tuint16_t(427),
Tuint16_t(427), Tuint16_t(428), Tuint16_t(427), Tuint16_t(429), Tuint16_t(428), Tuint16_t(428), Tuint16_t(428), Tuint16_t(428), Tuint16_t(428), Tuint16_t(428), Tuint16_t(430), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(431),
Tuint16_t(432), Tuint16_t(432), Tuint16_t(432), Tuint16_t(432), Tuint16_t(432), Tuint16_t(427), Tuint16_t(433), Tuint16_t(434), Tuint16_t(434), Tuint16_t(434), Tuint16_t(434), Tuint16_t(434), Tuint16_t(434), Tuint16_t(428), Tuint16_t(434), Tuint16_t(435),
Tuint16_t(436), Tuint16_t(436), Tuint16_t(436), Tuint16_t(436), Tuint16_t(436), Tuint16_t(436), Tuint16_t(436), Tuint16_t(436), Tuint16_t(436), Tuint16_t(436), Tuint16_t(437), Tuint16_t(437), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
// block 29
Tuint16_t(163), Tuint16_t(438), Tuint16_t(438), Tuint16_t(163), Tuint16_t(438), Tuint16_t(163), Tuint16_t(438), Tuint16_t(438), Tuint16_t(438), Tuint16_t(438), Tuint16_t(438), Tuint16_t(163), Tuint16_t(438), Tuint16_t(438), Tuint16_t(438), Tuint16_t(438),
Tuint16_t(438), Tuint16_t(438), Tuint16_t(438), Tuint16_t(438), Tuint16_t(438), Tuint16_t(438), Tuint16_t(438), Tuint16_t(438), Tuint16_t(438), Tuint16_t(438), Tuint16_t(438), Tuint16_t(438), Tuint16_t(438), Tuint16_t(438), Tuint16_t(438), Tuint16_t(438),
Tuint16_t(438), Tuint16_t(438), Tuint16_t(438), Tuint16_t(438), Tuint16_t(163), Tuint16_t(438), Tuint16_t(163), Tuint16_t(438), Tuint16_t(438), Tuint16_t(438), Tuint16_t(438), Tuint16_t(438), Tuint16_t(438), Tuint16_t(438), Tuint16_t(438), Tuint16_t(438),
Tuint16_t(438), Tuint16_t(439), Tuint16_t(438), Tuint16_t(440), Tuint16_t(439), Tuint16_t(439), Tuint16_t(439), Tuint16_t(439), Tuint16_t(439), Tuint16_t(439), Tuint16_t(441), Tuint16_t(439), Tuint16_t(439), Tuint16_t(438), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(442), Tuint16_t(442), Tuint16_t(442), Tuint16_t(442), Tuint16_t(442), Tuint16_t(163), Tuint16_t(443), Tuint16_t(163), Tuint16_t(444), Tuint16_t(444), Tuint16_t(444), Tuint16_t(444), Tuint16_t(444), Tuint16_t(439), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(445), Tuint16_t(445), Tuint16_t(445), Tuint16_t(445), Tuint16_t(445), Tuint16_t(445), Tuint16_t(445), Tuint16_t(445), Tuint16_t(445), Tuint16_t(445), Tuint16_t(163), Tuint16_t(163), Tuint16_t(438), Tuint16_t(438), Tuint16_t(438), Tuint16_t(438),
Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
// block 30
Tuint16_t(446), Tuint16_t(447), Tuint16_t(447), Tuint16_t(447), Tuint16_t(448), Tuint16_t(448), Tuint16_t(448), Tuint16_t(448), Tuint16_t(449), Tuint16_t(448), Tuint16_t(448), Tuint16_t(448), Tuint16_t(448), Tuint16_t(449), Tuint16_t(449), Tuint16_t(449),
Tuint16_t(449), Tuint16_t(449), Tuint16_t(449), Tuint16_t(447), Tuint16_t(448), Tuint16_t(447), Tuint16_t(447), Tuint16_t(447), Tuint16_t(450), Tuint16_t(450), Tuint16_t(447), Tuint16_t(447), Tuint16_t(447), Tuint16_t(447), Tuint16_t(447), Tuint16_t(447),
Tuint16_t(451), Tuint16_t(451), Tuint16_t(451), Tuint16_t(451), Tuint16_t(451), Tuint16_t(451), Tuint16_t(451), Tuint16_t(451), Tuint16_t(451), Tuint16_t(451), Tuint16_t(452), Tuint16_t(452), Tuint16_t(452), Tuint16_t(452), Tuint16_t(452), Tuint16_t(452),
Tuint16_t(452), Tuint16_t(452), Tuint16_t(452), Tuint16_t(452), Tuint16_t(447), Tuint16_t(450), Tuint16_t(447), Tuint16_t(450), Tuint16_t(447), Tuint16_t(450), Tuint16_t(453), Tuint16_t(454), Tuint16_t(453), Tuint16_t(454), Tuint16_t(455), Tuint16_t(455),
Tuint16_t(446), Tuint16_t(446), Tuint16_t(446), Tuint16_t(446), Tuint16_t(446), Tuint16_t(446), Tuint16_t(446), Tuint16_t(446), Tuint16_t(163), Tuint16_t(446), Tuint16_t(446), Tuint16_t(446), Tuint16_t(446), Tuint16_t(446), Tuint16_t(446), Tuint16_t(446),
Tuint16_t(446), Tuint16_t(446), Tuint16_t(446), Tuint16_t(446), Tuint16_t(446), Tuint16_t(446), Tuint16_t(446), Tuint16_t(446), Tuint16_t(446), Tuint16_t(446), Tuint16_t(446), Tuint16_t(446), Tuint16_t(446), Tuint16_t(446), Tuint16_t(446), Tuint16_t(446),
Tuint16_t(446), Tuint16_t(446), Tuint16_t(446), Tuint16_t(446), Tuint16_t(446), Tuint16_t(446), Tuint16_t(446), Tuint16_t(446), Tuint16_t(446), Tuint16_t(446), Tuint16_t(446), Tuint16_t(446), Tuint16_t(446), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(163), Tuint16_t(456), Tuint16_t(456), Tuint16_t(456), Tuint16_t(456), Tuint16_t(456), Tuint16_t(456), Tuint16_t(457), Tuint16_t(456), Tuint16_t(457), Tuint16_t(456), Tuint16_t(456), Tuint16_t(456), Tuint16_t(456), Tuint16_t(456), Tuint16_t(458),
// block 31
Tuint16_t(456), Tuint16_t(456), Tuint16_t(450), Tuint16_t(450), Tuint16_t(459), Tuint16_t(448), Tuint16_t(450), Tuint16_t(450), Tuint16_t(446), Tuint16_t(446), Tuint16_t(446), Tuint16_t(446), Tuint16_t(446), Tuint16_t(456), Tuint16_t(456), Tuint16_t(456),
Tuint16_t(456), Tuint16_t(456), Tuint16_t(456), Tuint16_t(456), Tuint16_t(456), Tuint16_t(456), Tuint16_t(456), Tuint16_t(456), Tuint16_t(163), Tuint16_t(456), Tuint16_t(456), Tuint16_t(456), Tuint16_t(456), Tuint16_t(456), Tuint16_t(456), Tuint16_t(456),
Tuint16_t(456), Tuint16_t(456), Tuint16_t(456), Tuint16_t(456), Tuint16_t(456), Tuint16_t(456), Tuint16_t(456), Tuint16_t(456), Tuint16_t(456), Tuint16_t(456), Tuint16_t(456), Tuint16_t(456), Tuint16_t(456), Tuint16_t(456), Tuint16_t(456), Tuint16_t(456),
Tuint16_t(456), Tuint16_t(456), Tuint16_t(456), Tuint16_t(456), Tuint16_t(456), Tuint16_t(456), Tuint16_t(456), Tuint16_t(456), Tuint16_t(456), Tuint16_t(456), Tuint16_t(456), Tuint16_t(456), Tuint16_t(456), Tuint16_t(163), Tuint16_t(447), Tuint16_t(447),
Tuint16_t(447), Tuint16_t(447), Tuint16_t(447), Tuint16_t(447), Tuint16_t(447), Tuint16_t(447), Tuint16_t(450), Tuint16_t(447), Tuint16_t(447), Tuint16_t(447), Tuint16_t(447), Tuint16_t(447), Tuint16_t(447), Tuint16_t(163), Tuint16_t(447), Tuint16_t(447),
Tuint16_t(448), Tuint16_t(448), Tuint16_t(448), Tuint16_t(448), Tuint16_t(448), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(448), Tuint16_t(448), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
// block 32
Tuint16_t(461), Tuint16_t(461), Tuint16_t(461), Tuint16_t(461), Tuint16_t(461), Tuint16_t(461), Tuint16_t(461), Tuint16_t(461), Tuint16_t(461), Tuint16_t(461), Tuint16_t(461), Tuint16_t(461), Tuint16_t(461), Tuint16_t(461), Tuint16_t(461), Tuint16_t(461),
Tuint16_t(461), Tuint16_t(461), Tuint16_t(461), Tuint16_t(461), Tuint16_t(461), Tuint16_t(461), Tuint16_t(461), Tuint16_t(461), Tuint16_t(461), Tuint16_t(461), Tuint16_t(461), Tuint16_t(461), Tuint16_t(461), Tuint16_t(461), Tuint16_t(461), Tuint16_t(461),
Tuint16_t(461), Tuint16_t(461), Tuint16_t(461), Tuint16_t(461), Tuint16_t(461), Tuint16_t(461), Tuint16_t(461), Tuint16_t(461), Tuint16_t(461), Tuint16_t(461), Tuint16_t(461), Tuint16_t(462), Tuint16_t(462), Tuint16_t(463), Tuint16_t(463), Tuint16_t(463),
Tuint16_t(463), Tuint16_t(464), Tuint16_t(463), Tuint16_t(463), Tuint16_t(463), Tuint16_t(463), Tuint16_t(463), Tuint16_t(465), Tuint16_t(462), Tuint16_t(466), Tuint16_t(466), Tuint16_t(464), Tuint16_t(464), Tuint16_t(463), Tuint16_t(463), Tuint16_t(461),
Tuint16_t(467), Tuint16_t(467), Tuint16_t(467), Tuint16_t(467), Tuint16_t(467), Tuint16_t(467), Tuint16_t(467), Tuint16_t(467), Tuint16_t(467), Tuint16_t(467), Tuint16_t(468), Tuint16_t(468), Tuint16_t(469), Tuint16_t(469), Tuint16_t(469), Tuint16_t(469),
Tuint16_t(461), Tuint16_t(461), Tuint16_t(461), Tuint16_t(461), Tuint16_t(461), Tuint16_t(461), Tuint16_t(464), Tuint16_t(464), Tuint16_t(463), Tuint16_t(463), Tuint16_t(461), Tuint16_t(461), Tuint16_t(461), Tuint16_t(461), Tuint16_t(463), Tuint16_t(463),
Tuint16_t(463), Tuint16_t(461), Tuint16_t(462), Tuint16_t(470), Tuint16_t(470), Tuint16_t(461), Tuint16_t(461), Tuint16_t(462), Tuint16_t(462), Tuint16_t(470), Tuint16_t(470), Tuint16_t(470), Tuint16_t(470), Tuint16_t(470), Tuint16_t(461), Tuint16_t(461),
Tuint16_t(461), Tuint16_t(463), Tuint16_t(463), Tuint16_t(463), Tuint16_t(463), Tuint16_t(461), Tuint16_t(461), Tuint16_t(461), Tuint16_t(461), Tuint16_t(461), Tuint16_t(461), Tuint16_t(461), Tuint16_t(461), Tuint16_t(461), Tuint16_t(461), Tuint16_t(461),
// block 33
Tuint16_t(461), Tuint16_t(461), Tuint16_t(463), Tuint16_t(462), Tuint16_t(464), Tuint16_t(463), Tuint16_t(463), Tuint16_t(470), Tuint16_t(470), Tuint16_t(470), Tuint16_t(470), Tuint16_t(470), Tuint16_t(470), Tuint16_t(471), Tuint16_t(461), Tuint16_t(470),
Tuint16_t(472), Tuint16_t(472), Tuint16_t(472), Tuint16_t(472), Tuint16_t(472), Tuint16_t(472), Tuint16_t(472), Tuint16_t(472), Tuint16_t(472), Tuint16_t(472), Tuint16_t(470), Tuint16_t(470), Tuint16_t(462), Tuint16_t(463), Tuint16_t(473), Tuint16_t(473),
Tuint16_t(474), Tuint16_t(474), Tuint16_t(474), Tuint16_t(474), Tuint16_t(474), Tuint16_t(474), Tuint16_t(474), Tuint16_t(474), Tuint16_t(474), Tuint16_t(474), Tuint16_t(474), Tuint16_t(474), Tuint16_t(474), Tuint16_t(474), Tuint16_t(474), Tuint16_t(474),
Tuint16_t(474), Tuint16_t(474), Tuint16_t(474), Tuint16_t(474), Tuint16_t(474), Tuint16_t(474), Tuint16_t(474), Tuint16_t(474), Tuint16_t(474), Tuint16_t(474), Tuint16_t(474), Tuint16_t(474), Tuint16_t(474), Tuint16_t(474), Tuint16_t(474), Tuint16_t(474),
Tuint16_t(474), Tuint16_t(474), Tuint16_t(474), Tuint16_t(474), Tuint16_t(474), Tuint16_t(474), Tuint16_t(163), Tuint16_t(474), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(474), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(475), Tuint16_t(475), Tuint16_t(475), Tuint16_t(475), Tuint16_t(475), Tuint16_t(475), Tuint16_t(475), Tuint16_t(475), Tuint16_t(475), Tuint16_t(475), Tuint16_t(475), Tuint16_t(475), Tuint16_t(475), Tuint16_t(475), Tuint16_t(475), Tuint16_t(475),
Tuint16_t(475), Tuint16_t(475), Tuint16_t(475), Tuint16_t(475), Tuint16_t(475), Tuint16_t(475), Tuint16_t(475), Tuint16_t(475), Tuint16_t(475), Tuint16_t(475), Tuint16_t(475), Tuint16_t(475), Tuint16_t(475), Tuint16_t(475), Tuint16_t(475), Tuint16_t(475),
Tuint16_t(475), Tuint16_t(475), Tuint16_t(475), Tuint16_t(475), Tuint16_t(475), Tuint16_t(475), Tuint16_t(475), Tuint16_t(475), Tuint16_t(475), Tuint16_t(475), Tuint16_t(475), Tuint16_t(476), Tuint16_t(477), Tuint16_t(475), Tuint16_t(475), Tuint16_t(475),
// block 34
Tuint16_t(478), Tuint16_t(478), Tuint16_t(478), Tuint16_t(478), Tuint16_t(478), Tuint16_t(478), Tuint16_t(478), Tuint16_t(478), Tuint16_t(478), Tuint16_t(478), Tuint16_t(478), Tuint16_t(478), Tuint16_t(478), Tuint16_t(478), Tuint16_t(478), Tuint16_t(478),
Tuint16_t(478), Tuint16_t(478), Tuint16_t(478), Tuint16_t(478), Tuint16_t(478), Tuint16_t(478), Tuint16_t(478), Tuint16_t(478), Tuint16_t(478), Tuint16_t(478), Tuint16_t(478), Tuint16_t(478), Tuint16_t(478), Tuint16_t(478), Tuint16_t(478), Tuint16_t(478),
Tuint16_t(478), Tuint16_t(478), Tuint16_t(478), Tuint16_t(478), Tuint16_t(478), Tuint16_t(478), Tuint16_t(478), Tuint16_t(478), Tuint16_t(478), Tuint16_t(478), Tuint16_t(478), Tuint16_t(478), Tuint16_t(478), Tuint16_t(478), Tuint16_t(478), Tuint16_t(478),
Tuint16_t(478), Tuint16_t(478), Tuint16_t(478), Tuint16_t(478), Tuint16_t(478), Tuint16_t(478), Tuint16_t(478), Tuint16_t(478), Tuint16_t(478), Tuint16_t(478), Tuint16_t(478), Tuint16_t(478), Tuint16_t(478), Tuint16_t(478), Tuint16_t(478), Tuint16_t(478),
Tuint16_t(478), Tuint16_t(478), Tuint16_t(478), Tuint16_t(478), Tuint16_t(478), Tuint16_t(478), Tuint16_t(478), Tuint16_t(478), Tuint16_t(478), Tuint16_t(478), Tuint16_t(478), Tuint16_t(478), Tuint16_t(478), Tuint16_t(478), Tuint16_t(478), Tuint16_t(478),
Tuint16_t(478), Tuint16_t(478), Tuint16_t(478), Tuint16_t(478), Tuint16_t(478), Tuint16_t(478), Tuint16_t(478), Tuint16_t(478), Tuint16_t(478), Tuint16_t(478), Tuint16_t(478), Tuint16_t(478), Tuint16_t(478), Tuint16_t(478), Tuint16_t(478), Tuint16_t(479),
Tuint16_t(480), Tuint16_t(481), Tuint16_t(481), Tuint16_t(481), Tuint16_t(481), Tuint16_t(481), Tuint16_t(481), Tuint16_t(481), Tuint16_t(481), Tuint16_t(481), Tuint16_t(481), Tuint16_t(481), Tuint16_t(481), Tuint16_t(481), Tuint16_t(481), Tuint16_t(481),
Tuint16_t(481), Tuint16_t(481), Tuint16_t(481), Tuint16_t(481), Tuint16_t(481), Tuint16_t(481), Tuint16_t(481), Tuint16_t(481), Tuint16_t(481), Tuint16_t(481), Tuint16_t(481), Tuint16_t(481), Tuint16_t(481), Tuint16_t(481), Tuint16_t(481), Tuint16_t(481),
// block 35
Tuint16_t(481), Tuint16_t(481), Tuint16_t(481), Tuint16_t(481), Tuint16_t(481), Tuint16_t(481), Tuint16_t(481), Tuint16_t(481), Tuint16_t(481), Tuint16_t(481), Tuint16_t(481), Tuint16_t(481), Tuint16_t(481), Tuint16_t(481), Tuint16_t(481), Tuint16_t(481),
Tuint16_t(481), Tuint16_t(481), Tuint16_t(481), Tuint16_t(481), Tuint16_t(481), Tuint16_t(481), Tuint16_t(481), Tuint16_t(481), Tuint16_t(481), Tuint16_t(481), Tuint16_t(481), Tuint16_t(481), Tuint16_t(481), Tuint16_t(481), Tuint16_t(481), Tuint16_t(481),
Tuint16_t(481), Tuint16_t(481), Tuint16_t(481), Tuint16_t(481), Tuint16_t(481), Tuint16_t(481), Tuint16_t(481), Tuint16_t(481), Tuint16_t(482), Tuint16_t(482), Tuint16_t(482), Tuint16_t(482), Tuint16_t(482), Tuint16_t(482), Tuint16_t(482), Tuint16_t(482),
Tuint16_t(482), Tuint16_t(482), Tuint16_t(482), Tuint16_t(482), Tuint16_t(482), Tuint16_t(482), Tuint16_t(482), Tuint16_t(482), Tuint16_t(482), Tuint16_t(482), Tuint16_t(482), Tuint16_t(482), Tuint16_t(482), Tuint16_t(482), Tuint16_t(482), Tuint16_t(482),
Tuint16_t(482), Tuint16_t(482), Tuint16_t(482), Tuint16_t(482), Tuint16_t(482), Tuint16_t(482), Tuint16_t(482), Tuint16_t(482), Tuint16_t(482), Tuint16_t(482), Tuint16_t(482), Tuint16_t(482), Tuint16_t(482), Tuint16_t(482), Tuint16_t(482), Tuint16_t(482),
Tuint16_t(482), Tuint16_t(482), Tuint16_t(482), Tuint16_t(482), Tuint16_t(482), Tuint16_t(482), Tuint16_t(482), Tuint16_t(482), Tuint16_t(482), Tuint16_t(482), Tuint16_t(482), Tuint16_t(482), Tuint16_t(482), Tuint16_t(482), Tuint16_t(482), Tuint16_t(482),
Tuint16_t(482), Tuint16_t(482), Tuint16_t(482), Tuint16_t(482), Tuint16_t(482), Tuint16_t(482), Tuint16_t(482), Tuint16_t(482), Tuint16_t(482), Tuint16_t(482), Tuint16_t(482), Tuint16_t(482), Tuint16_t(482), Tuint16_t(482), Tuint16_t(482), Tuint16_t(482),
Tuint16_t(482), Tuint16_t(482), Tuint16_t(482), Tuint16_t(482), Tuint16_t(482), Tuint16_t(482), Tuint16_t(482), Tuint16_t(482), Tuint16_t(482), Tuint16_t(482), Tuint16_t(482), Tuint16_t(482), Tuint16_t(482), Tuint16_t(482), Tuint16_t(482), Tuint16_t(482),
// block 36
Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483),
Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483),
Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483),
Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483),
Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(163), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(163), Tuint16_t(483), Tuint16_t(163), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483),
Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483),
// block 37
Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(163), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483),
Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483),
Tuint16_t(483), Tuint16_t(163), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(163), Tuint16_t(163), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(163),
Tuint16_t(483), Tuint16_t(163), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(163), Tuint16_t(163), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483),
Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(163), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483),
Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483),
Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483),
// block 38
Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483),
Tuint16_t(483), Tuint16_t(163), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(163), Tuint16_t(163), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483),
Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483),
Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483),
Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483),
Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(163), Tuint16_t(163), Tuint16_t(484), Tuint16_t(484), Tuint16_t(484),
Tuint16_t(485), Tuint16_t(486), Tuint16_t(487), Tuint16_t(486), Tuint16_t(486), Tuint16_t(486), Tuint16_t(486), Tuint16_t(487), Tuint16_t(487), Tuint16_t(488), Tuint16_t(488), Tuint16_t(488), Tuint16_t(488), Tuint16_t(488), Tuint16_t(488), Tuint16_t(488),
Tuint16_t(488), Tuint16_t(488), Tuint16_t(489), Tuint16_t(489), Tuint16_t(489), Tuint16_t(489), Tuint16_t(489), Tuint16_t(489), Tuint16_t(489), Tuint16_t(489), Tuint16_t(489), Tuint16_t(489), Tuint16_t(489), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
// block 39
Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483),
Tuint16_t(490), Tuint16_t(490), Tuint16_t(490), Tuint16_t(490), Tuint16_t(490), Tuint16_t(490), Tuint16_t(490), Tuint16_t(490), Tuint16_t(490), Tuint16_t(490), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(491), Tuint16_t(491), Tuint16_t(491), Tuint16_t(491), Tuint16_t(491), Tuint16_t(491), Tuint16_t(491), Tuint16_t(491), Tuint16_t(491), Tuint16_t(491), Tuint16_t(491), Tuint16_t(491), Tuint16_t(491), Tuint16_t(491), Tuint16_t(491), Tuint16_t(491),
Tuint16_t(491), Tuint16_t(491), Tuint16_t(491), Tuint16_t(491), Tuint16_t(491), Tuint16_t(491), Tuint16_t(491), Tuint16_t(491), Tuint16_t(491), Tuint16_t(491), Tuint16_t(491), Tuint16_t(491), Tuint16_t(491), Tuint16_t(491), Tuint16_t(491), Tuint16_t(491),
Tuint16_t(491), Tuint16_t(491), Tuint16_t(491), Tuint16_t(491), Tuint16_t(491), Tuint16_t(491), Tuint16_t(491), Tuint16_t(491), Tuint16_t(491), Tuint16_t(491), Tuint16_t(491), Tuint16_t(491), Tuint16_t(491), Tuint16_t(491), Tuint16_t(491), Tuint16_t(491),
Tuint16_t(491), Tuint16_t(491), Tuint16_t(491), Tuint16_t(491), Tuint16_t(491), Tuint16_t(491), Tuint16_t(491), Tuint16_t(491), Tuint16_t(491), Tuint16_t(491), Tuint16_t(491), Tuint16_t(491), Tuint16_t(491), Tuint16_t(491), Tuint16_t(491), Tuint16_t(491),
Tuint16_t(491), Tuint16_t(491), Tuint16_t(491), Tuint16_t(491), Tuint16_t(491), Tuint16_t(491), Tuint16_t(491), Tuint16_t(491), Tuint16_t(491), Tuint16_t(491), Tuint16_t(491), Tuint16_t(491), Tuint16_t(491), Tuint16_t(491), Tuint16_t(491), Tuint16_t(491),
Tuint16_t(492), Tuint16_t(492), Tuint16_t(492), Tuint16_t(492), Tuint16_t(492), Tuint16_t(492), Tuint16_t(163), Tuint16_t(163), Tuint16_t(493), Tuint16_t(493), Tuint16_t(493), Tuint16_t(493), Tuint16_t(493), Tuint16_t(493), Tuint16_t(163), Tuint16_t(163),
// block 40
Tuint16_t(494), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495),
Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495),
Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495),
Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495),
Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495),
Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495),
Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495),
Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495),
// block 41
Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495),
Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495),
Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495),
Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495),
Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495),
Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495),
Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495),
Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495),
// block 42
Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495),
Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495),
Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495),
Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495),
Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495),
Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495),
Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(496), Tuint16_t(497), Tuint16_t(495),
Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495),
// block 43
Tuint16_t(498), Tuint16_t(499), Tuint16_t(499), Tuint16_t(499), Tuint16_t(499), Tuint16_t(499), Tuint16_t(499), Tuint16_t(499), Tuint16_t(499), Tuint16_t(499), Tuint16_t(499), Tuint16_t(499), Tuint16_t(499), Tuint16_t(499), Tuint16_t(499), Tuint16_t(499),
Tuint16_t(499), Tuint16_t(499), Tuint16_t(499), Tuint16_t(499), Tuint16_t(499), Tuint16_t(499), Tuint16_t(499), Tuint16_t(499), Tuint16_t(499), Tuint16_t(499), Tuint16_t(499), Tuint16_t(500), Tuint16_t(501), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(502), Tuint16_t(502), Tuint16_t(502), Tuint16_t(502), Tuint16_t(502), Tuint16_t(502), Tuint16_t(502), Tuint16_t(502), Tuint16_t(502), Tuint16_t(502), Tuint16_t(502), Tuint16_t(502), Tuint16_t(502), Tuint16_t(502), Tuint16_t(502), Tuint16_t(502),
Tuint16_t(502), Tuint16_t(502), Tuint16_t(502), Tuint16_t(502), Tuint16_t(502), Tuint16_t(502), Tuint16_t(502), Tuint16_t(502), Tuint16_t(502), Tuint16_t(502), Tuint16_t(502), Tuint16_t(502), Tuint16_t(502), Tuint16_t(502), Tuint16_t(502), Tuint16_t(502),
Tuint16_t(502), Tuint16_t(502), Tuint16_t(502), Tuint16_t(502), Tuint16_t(502), Tuint16_t(502), Tuint16_t(502), Tuint16_t(502), Tuint16_t(502), Tuint16_t(502), Tuint16_t(502), Tuint16_t(502), Tuint16_t(502), Tuint16_t(502), Tuint16_t(502), Tuint16_t(502),
Tuint16_t(502), Tuint16_t(502), Tuint16_t(502), Tuint16_t(502), Tuint16_t(502), Tuint16_t(502), Tuint16_t(502), Tuint16_t(502), Tuint16_t(502), Tuint16_t(502), Tuint16_t(502), Tuint16_t(502), Tuint16_t(502), Tuint16_t(502), Tuint16_t(502), Tuint16_t(502),
Tuint16_t(502), Tuint16_t(502), Tuint16_t(502), Tuint16_t(502), Tuint16_t(502), Tuint16_t(502), Tuint16_t(502), Tuint16_t(502), Tuint16_t(502), Tuint16_t(502), Tuint16_t(502), Tuint16_t(503), Tuint16_t(503), Tuint16_t(503), Tuint16_t(504), Tuint16_t(504),
Tuint16_t(504), Tuint16_t(502), Tuint16_t(502), Tuint16_t(502), Tuint16_t(502), Tuint16_t(502), Tuint16_t(502), Tuint16_t(502), Tuint16_t(502), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
// block 44
Tuint16_t(505), Tuint16_t(505), Tuint16_t(505), Tuint16_t(505), Tuint16_t(505), Tuint16_t(505), Tuint16_t(505), Tuint16_t(505), Tuint16_t(505), Tuint16_t(505), Tuint16_t(505), Tuint16_t(505), Tuint16_t(505), Tuint16_t(505), Tuint16_t(505), Tuint16_t(505),
Tuint16_t(505), Tuint16_t(505), Tuint16_t(506), Tuint16_t(506), Tuint16_t(507), Tuint16_t(508), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(505),
Tuint16_t(509), Tuint16_t(509), Tuint16_t(509), Tuint16_t(509), Tuint16_t(509), Tuint16_t(509), Tuint16_t(509), Tuint16_t(509), Tuint16_t(509), Tuint16_t(509), Tuint16_t(509), Tuint16_t(509), Tuint16_t(509), Tuint16_t(509), Tuint16_t(509), Tuint16_t(509),
Tuint16_t(509), Tuint16_t(509), Tuint16_t(510), Tuint16_t(510), Tuint16_t(511), Tuint16_t(512), Tuint16_t(512), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(513), Tuint16_t(513), Tuint16_t(513), Tuint16_t(513), Tuint16_t(513), Tuint16_t(513), Tuint16_t(513), Tuint16_t(513), Tuint16_t(513), Tuint16_t(513), Tuint16_t(513), Tuint16_t(513), Tuint16_t(513), Tuint16_t(513), Tuint16_t(513), Tuint16_t(513),
Tuint16_t(513), Tuint16_t(513), Tuint16_t(514), Tuint16_t(514), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(515), Tuint16_t(515), Tuint16_t(515), Tuint16_t(515), Tuint16_t(515), Tuint16_t(515), Tuint16_t(515), Tuint16_t(515), Tuint16_t(515), Tuint16_t(515), Tuint16_t(515), Tuint16_t(515), Tuint16_t(515), Tuint16_t(163), Tuint16_t(515), Tuint16_t(515),
Tuint16_t(515), Tuint16_t(163), Tuint16_t(516), Tuint16_t(516), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
// block 45
Tuint16_t(517), Tuint16_t(517), Tuint16_t(517), Tuint16_t(517), Tuint16_t(517), Tuint16_t(517), Tuint16_t(517), Tuint16_t(517), Tuint16_t(517), Tuint16_t(517), Tuint16_t(517), Tuint16_t(517), Tuint16_t(517), Tuint16_t(517), Tuint16_t(517), Tuint16_t(517),
Tuint16_t(517), Tuint16_t(517), Tuint16_t(517), Tuint16_t(517), Tuint16_t(517), Tuint16_t(517), Tuint16_t(517), Tuint16_t(517), Tuint16_t(517), Tuint16_t(517), Tuint16_t(517), Tuint16_t(517), Tuint16_t(517), Tuint16_t(517), Tuint16_t(517), Tuint16_t(517),
Tuint16_t(517), Tuint16_t(517), Tuint16_t(517), Tuint16_t(518), Tuint16_t(518), Tuint16_t(517), Tuint16_t(517), Tuint16_t(517), Tuint16_t(517), Tuint16_t(517), Tuint16_t(517), Tuint16_t(517), Tuint16_t(517), Tuint16_t(517), Tuint16_t(517), Tuint16_t(517),
Tuint16_t(517), Tuint16_t(517), Tuint16_t(517), Tuint16_t(517), Tuint16_t(519), Tuint16_t(519), Tuint16_t(520), Tuint16_t(521), Tuint16_t(521), Tuint16_t(521), Tuint16_t(521), Tuint16_t(521), Tuint16_t(521), Tuint16_t(521), Tuint16_t(520), Tuint16_t(520),
Tuint16_t(520), Tuint16_t(520), Tuint16_t(520), Tuint16_t(520), Tuint16_t(520), Tuint16_t(520), Tuint16_t(521), Tuint16_t(520), Tuint16_t(520), Tuint16_t(522), Tuint16_t(522), Tuint16_t(522), Tuint16_t(522), Tuint16_t(522), Tuint16_t(522), Tuint16_t(522),
Tuint16_t(522), Tuint16_t(522), Tuint16_t(523), Tuint16_t(522), Tuint16_t(524), Tuint16_t(524), Tuint16_t(524), Tuint16_t(525), Tuint16_t(526), Tuint16_t(526), Tuint16_t(524), Tuint16_t(527), Tuint16_t(517), Tuint16_t(522), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(528), Tuint16_t(528), Tuint16_t(528), Tuint16_t(528), Tuint16_t(528), Tuint16_t(528), Tuint16_t(528), Tuint16_t(528), Tuint16_t(528), Tuint16_t(528), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(529), Tuint16_t(529), Tuint16_t(529), Tuint16_t(529), Tuint16_t(529), Tuint16_t(529), Tuint16_t(529), Tuint16_t(529), Tuint16_t(529), Tuint16_t(529), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
// block 46
Tuint16_t(530), Tuint16_t(530), Tuint16_t(531), Tuint16_t(532), Tuint16_t(533), Tuint16_t(531), Tuint16_t(534), Tuint16_t(530), Tuint16_t(533), Tuint16_t(535), Tuint16_t(536), Tuint16_t(537), Tuint16_t(537), Tuint16_t(537), Tuint16_t(538), Tuint16_t(537),
Tuint16_t(539), Tuint16_t(539), Tuint16_t(539), Tuint16_t(539), Tuint16_t(539), Tuint16_t(539), Tuint16_t(539), Tuint16_t(539), Tuint16_t(539), Tuint16_t(539), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(540), Tuint16_t(540), Tuint16_t(540), Tuint16_t(540), Tuint16_t(540), Tuint16_t(540), Tuint16_t(540), Tuint16_t(540), Tuint16_t(540), Tuint16_t(540), Tuint16_t(540), Tuint16_t(540), Tuint16_t(540), Tuint16_t(540), Tuint16_t(540), Tuint16_t(540),
Tuint16_t(540), Tuint16_t(540), Tuint16_t(540), Tuint16_t(540), Tuint16_t(540), Tuint16_t(540), Tuint16_t(540), Tuint16_t(540), Tuint16_t(540), Tuint16_t(540), Tuint16_t(540), Tuint16_t(540), Tuint16_t(540), Tuint16_t(540), Tuint16_t(540), Tuint16_t(540),
Tuint16_t(540), Tuint16_t(540), Tuint16_t(540), Tuint16_t(541), Tuint16_t(540), Tuint16_t(540), Tuint16_t(540), Tuint16_t(540), Tuint16_t(540), Tuint16_t(540), Tuint16_t(540), Tuint16_t(540), Tuint16_t(540), Tuint16_t(540), Tuint16_t(540), Tuint16_t(540),
Tuint16_t(540), Tuint16_t(540), Tuint16_t(540), Tuint16_t(540), Tuint16_t(540), Tuint16_t(540), Tuint16_t(540), Tuint16_t(540), Tuint16_t(540), Tuint16_t(540), Tuint16_t(540), Tuint16_t(540), Tuint16_t(540), Tuint16_t(540), Tuint16_t(540), Tuint16_t(540),
Tuint16_t(540), Tuint16_t(540), Tuint16_t(540), Tuint16_t(540), Tuint16_t(540), Tuint16_t(540), Tuint16_t(540), Tuint16_t(540), Tuint16_t(540), Tuint16_t(540), Tuint16_t(540), Tuint16_t(540), Tuint16_t(540), Tuint16_t(540), Tuint16_t(540), Tuint16_t(540),
Tuint16_t(540), Tuint16_t(540), Tuint16_t(540), Tuint16_t(540), Tuint16_t(540), Tuint16_t(540), Tuint16_t(540), Tuint16_t(540), Tuint16_t(540), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
// block 47
Tuint16_t(540), Tuint16_t(540), Tuint16_t(540), Tuint16_t(540), Tuint16_t(540), Tuint16_t(542), Tuint16_t(542), Tuint16_t(540), Tuint16_t(540), Tuint16_t(540), Tuint16_t(540), Tuint16_t(540), Tuint16_t(540), Tuint16_t(540), Tuint16_t(540), Tuint16_t(540),
Tuint16_t(540), Tuint16_t(540), Tuint16_t(540), Tuint16_t(540), Tuint16_t(540), Tuint16_t(540), Tuint16_t(540), Tuint16_t(540), Tuint16_t(540), Tuint16_t(540), Tuint16_t(540), Tuint16_t(540), Tuint16_t(540), Tuint16_t(540), Tuint16_t(540), Tuint16_t(540),
Tuint16_t(540), Tuint16_t(540), Tuint16_t(540), Tuint16_t(540), Tuint16_t(540), Tuint16_t(540), Tuint16_t(540), Tuint16_t(540), Tuint16_t(540), Tuint16_t(543), Tuint16_t(540), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495),
Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495),
Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495),
Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495),
Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
// block 48
Tuint16_t(544), Tuint16_t(544), Tuint16_t(544), Tuint16_t(544), Tuint16_t(544), Tuint16_t(544), Tuint16_t(544), Tuint16_t(544), Tuint16_t(544), Tuint16_t(544), Tuint16_t(544), Tuint16_t(544), Tuint16_t(544), Tuint16_t(544), Tuint16_t(544), Tuint16_t(544),
Tuint16_t(544), Tuint16_t(544), Tuint16_t(544), Tuint16_t(544), Tuint16_t(544), Tuint16_t(544), Tuint16_t(544), Tuint16_t(544), Tuint16_t(544), Tuint16_t(544), Tuint16_t(544), Tuint16_t(544), Tuint16_t(544), Tuint16_t(544), Tuint16_t(544), Tuint16_t(163),
Tuint16_t(545), Tuint16_t(545), Tuint16_t(545), Tuint16_t(546), Tuint16_t(546), Tuint16_t(546), Tuint16_t(546), Tuint16_t(545), Tuint16_t(545), Tuint16_t(546), Tuint16_t(546), Tuint16_t(546), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(546), Tuint16_t(546), Tuint16_t(545), Tuint16_t(546), Tuint16_t(546), Tuint16_t(546), Tuint16_t(546), Tuint16_t(546), Tuint16_t(546), Tuint16_t(547), Tuint16_t(547), Tuint16_t(547), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(548), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(549), Tuint16_t(549), Tuint16_t(550), Tuint16_t(550), Tuint16_t(550), Tuint16_t(550), Tuint16_t(550), Tuint16_t(550), Tuint16_t(550), Tuint16_t(550), Tuint16_t(550), Tuint16_t(550),
Tuint16_t(551), Tuint16_t(551), Tuint16_t(551), Tuint16_t(551), Tuint16_t(551), Tuint16_t(551), Tuint16_t(551), Tuint16_t(551), Tuint16_t(551), Tuint16_t(551), Tuint16_t(551), Tuint16_t(551), Tuint16_t(551), Tuint16_t(551), Tuint16_t(551), Tuint16_t(551),
Tuint16_t(551), Tuint16_t(551), Tuint16_t(551), Tuint16_t(551), Tuint16_t(551), Tuint16_t(551), Tuint16_t(551), Tuint16_t(551), Tuint16_t(551), Tuint16_t(551), Tuint16_t(551), Tuint16_t(551), Tuint16_t(551), Tuint16_t(551), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(551), Tuint16_t(551), Tuint16_t(551), Tuint16_t(551), Tuint16_t(551), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
// block 49
Tuint16_t(552), Tuint16_t(552), Tuint16_t(552), Tuint16_t(552), Tuint16_t(552), Tuint16_t(552), Tuint16_t(552), Tuint16_t(552), Tuint16_t(552), Tuint16_t(552), Tuint16_t(552), Tuint16_t(552), Tuint16_t(552), Tuint16_t(552), Tuint16_t(552), Tuint16_t(552),
Tuint16_t(552), Tuint16_t(552), Tuint16_t(552), Tuint16_t(552), Tuint16_t(552), Tuint16_t(552), Tuint16_t(552), Tuint16_t(552), Tuint16_t(552), Tuint16_t(552), Tuint16_t(552), Tuint16_t(552), Tuint16_t(552), Tuint16_t(552), Tuint16_t(552), Tuint16_t(552),
Tuint16_t(552), Tuint16_t(552), Tuint16_t(552), Tuint16_t(552), Tuint16_t(552), Tuint16_t(552), Tuint16_t(552), Tuint16_t(552), Tuint16_t(552), Tuint16_t(552), Tuint16_t(552), Tuint16_t(552), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(552), Tuint16_t(552), Tuint16_t(552), Tuint16_t(552), Tuint16_t(552), Tuint16_t(553), Tuint16_t(553), Tuint16_t(553), Tuint16_t(552), Tuint16_t(552), Tuint16_t(553), Tuint16_t(552), Tuint16_t(552), Tuint16_t(552), Tuint16_t(552), Tuint16_t(552),
Tuint16_t(552), Tuint16_t(552), Tuint16_t(552), Tuint16_t(552), Tuint16_t(552), Tuint16_t(552), Tuint16_t(552), Tuint16_t(552), Tuint16_t(552), Tuint16_t(552), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(554), Tuint16_t(554), Tuint16_t(554), Tuint16_t(554), Tuint16_t(554), Tuint16_t(554), Tuint16_t(554), Tuint16_t(554), Tuint16_t(554), Tuint16_t(554), Tuint16_t(555), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(556), Tuint16_t(556),
Tuint16_t(557), Tuint16_t(557), Tuint16_t(557), Tuint16_t(557), Tuint16_t(557), Tuint16_t(557), Tuint16_t(557), Tuint16_t(557), Tuint16_t(557), Tuint16_t(557), Tuint16_t(557), Tuint16_t(557), Tuint16_t(557), Tuint16_t(557), Tuint16_t(557), Tuint16_t(557),
Tuint16_t(557), Tuint16_t(557), Tuint16_t(557), Tuint16_t(557), Tuint16_t(557), Tuint16_t(557), Tuint16_t(557), Tuint16_t(557), Tuint16_t(557), Tuint16_t(557), Tuint16_t(557), Tuint16_t(557), Tuint16_t(557), Tuint16_t(557), Tuint16_t(557), Tuint16_t(557),
// block 50
Tuint16_t(558), Tuint16_t(558), Tuint16_t(558), Tuint16_t(558), Tuint16_t(558), Tuint16_t(558), Tuint16_t(558), Tuint16_t(558), Tuint16_t(558), Tuint16_t(558), Tuint16_t(558), Tuint16_t(558), Tuint16_t(558), Tuint16_t(558), Tuint16_t(558), Tuint16_t(558),
Tuint16_t(558), Tuint16_t(558), Tuint16_t(558), Tuint16_t(558), Tuint16_t(558), Tuint16_t(558), Tuint16_t(558), Tuint16_t(559), Tuint16_t(559), Tuint16_t(560), Tuint16_t(560), Tuint16_t(559), Tuint16_t(163), Tuint16_t(163), Tuint16_t(561), Tuint16_t(561),
Tuint16_t(562), Tuint16_t(562), Tuint16_t(562), Tuint16_t(562), Tuint16_t(562), Tuint16_t(562), Tuint16_t(562), Tuint16_t(562), Tuint16_t(562), Tuint16_t(562), Tuint16_t(562), Tuint16_t(562), Tuint16_t(562), Tuint16_t(562), Tuint16_t(562), Tuint16_t(562),
Tuint16_t(562), Tuint16_t(562), Tuint16_t(562), Tuint16_t(562), Tuint16_t(562), Tuint16_t(562), Tuint16_t(562), Tuint16_t(562), Tuint16_t(562), Tuint16_t(562), Tuint16_t(562), Tuint16_t(562), Tuint16_t(562), Tuint16_t(562), Tuint16_t(562), Tuint16_t(562),
Tuint16_t(562), Tuint16_t(562), Tuint16_t(562), Tuint16_t(562), Tuint16_t(562), Tuint16_t(562), Tuint16_t(562), Tuint16_t(562), Tuint16_t(562), Tuint16_t(562), Tuint16_t(562), Tuint16_t(562), Tuint16_t(562), Tuint16_t(562), Tuint16_t(562), Tuint16_t(562),
Tuint16_t(562), Tuint16_t(562), Tuint16_t(562), Tuint16_t(562), Tuint16_t(562), Tuint16_t(563), Tuint16_t(564), Tuint16_t(563), Tuint16_t(564), Tuint16_t(564), Tuint16_t(564), Tuint16_t(564), Tuint16_t(564), Tuint16_t(564), Tuint16_t(564), Tuint16_t(163),
Tuint16_t(565), Tuint16_t(566), Tuint16_t(564), Tuint16_t(566), Tuint16_t(566), Tuint16_t(564), Tuint16_t(564), Tuint16_t(564), Tuint16_t(564), Tuint16_t(564), Tuint16_t(564), Tuint16_t(564), Tuint16_t(564), Tuint16_t(563), Tuint16_t(563), Tuint16_t(563),
Tuint16_t(563), Tuint16_t(563), Tuint16_t(563), Tuint16_t(564), Tuint16_t(564), Tuint16_t(567), Tuint16_t(567), Tuint16_t(567), Tuint16_t(567), Tuint16_t(567), Tuint16_t(567), Tuint16_t(567), Tuint16_t(567), Tuint16_t(163), Tuint16_t(163), Tuint16_t(567),
// block 51
Tuint16_t(568), Tuint16_t(568), Tuint16_t(568), Tuint16_t(568), Tuint16_t(568), Tuint16_t(568), Tuint16_t(568), Tuint16_t(568), Tuint16_t(568), Tuint16_t(568), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(568), Tuint16_t(568), Tuint16_t(568), Tuint16_t(568), Tuint16_t(568), Tuint16_t(568), Tuint16_t(568), Tuint16_t(568), Tuint16_t(568), Tuint16_t(568), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(569), Tuint16_t(569), Tuint16_t(569), Tuint16_t(569), Tuint16_t(569), Tuint16_t(569), Tuint16_t(569), Tuint16_t(570), Tuint16_t(571), Tuint16_t(571), Tuint16_t(571), Tuint16_t(571), Tuint16_t(569), Tuint16_t(569), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(154), Tuint16_t(154), Tuint16_t(154), Tuint16_t(154), Tuint16_t(154), Tuint16_t(154), Tuint16_t(154), Tuint16_t(154), Tuint16_t(154), Tuint16_t(154), Tuint16_t(154), Tuint16_t(154), Tuint16_t(154), Tuint16_t(154), Tuint16_t(572), Tuint16_t(573),
Tuint16_t(573), Tuint16_t(154), Tuint16_t(154), Tuint16_t(154), Tuint16_t(154), Tuint16_t(154), Tuint16_t(154), Tuint16_t(154), Tuint16_t(154), Tuint16_t(154), Tuint16_t(154), Tuint16_t(154), Tuint16_t(573), Tuint16_t(573), Tuint16_t(573), Tuint16_t(163),
Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
// block 52
Tuint16_t(574), Tuint16_t(574), Tuint16_t(574), Tuint16_t(574), Tuint16_t(575), Tuint16_t(576), Tuint16_t(576), Tuint16_t(576), Tuint16_t(576), Tuint16_t(576), Tuint16_t(576), Tuint16_t(576), Tuint16_t(576), Tuint16_t(576), Tuint16_t(576), Tuint16_t(576),
Tuint16_t(576), Tuint16_t(576), Tuint16_t(576), Tuint16_t(576), Tuint16_t(576), Tuint16_t(576), Tuint16_t(576), Tuint16_t(576), Tuint16_t(576), Tuint16_t(576), Tuint16_t(576), Tuint16_t(576), Tuint16_t(576), Tuint16_t(576), Tuint16_t(576), Tuint16_t(576),
Tuint16_t(576), Tuint16_t(576), Tuint16_t(576), Tuint16_t(576), Tuint16_t(576), Tuint16_t(576), Tuint16_t(576), Tuint16_t(576), Tuint16_t(576), Tuint16_t(576), Tuint16_t(576), Tuint16_t(576), Tuint16_t(576), Tuint16_t(576), Tuint16_t(576), Tuint16_t(576),
Tuint16_t(576), Tuint16_t(576), Tuint16_t(576), Tuint16_t(576), Tuint16_t(577), Tuint16_t(578), Tuint16_t(574), Tuint16_t(574), Tuint16_t(574), Tuint16_t(574), Tuint16_t(574), Tuint16_t(575), Tuint16_t(574), Tuint16_t(575), Tuint16_t(575), Tuint16_t(575),
Tuint16_t(575), Tuint16_t(575), Tuint16_t(574), Tuint16_t(575), Tuint16_t(579), Tuint16_t(576), Tuint16_t(576), Tuint16_t(576), Tuint16_t(576), Tuint16_t(576), Tuint16_t(576), Tuint16_t(576), Tuint16_t(576), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(580), Tuint16_t(580), Tuint16_t(580), Tuint16_t(580), Tuint16_t(580), Tuint16_t(580), Tuint16_t(580), Tuint16_t(580), Tuint16_t(580), Tuint16_t(580), Tuint16_t(581), Tuint16_t(581), Tuint16_t(582), Tuint16_t(583), Tuint16_t(581), Tuint16_t(581),
Tuint16_t(582), Tuint16_t(584), Tuint16_t(584), Tuint16_t(584), Tuint16_t(584), Tuint16_t(584), Tuint16_t(584), Tuint16_t(584), Tuint16_t(584), Tuint16_t(584), Tuint16_t(584), Tuint16_t(577), Tuint16_t(577), Tuint16_t(577), Tuint16_t(577), Tuint16_t(577),
Tuint16_t(577), Tuint16_t(577), Tuint16_t(577), Tuint16_t(577), Tuint16_t(584), Tuint16_t(584), Tuint16_t(584), Tuint16_t(584), Tuint16_t(584), Tuint16_t(584), Tuint16_t(584), Tuint16_t(584), Tuint16_t(584), Tuint16_t(581), Tuint16_t(581), Tuint16_t(163),
// block 53
Tuint16_t(585), Tuint16_t(585), Tuint16_t(586), Tuint16_t(587), Tuint16_t(587), Tuint16_t(587), Tuint16_t(587), Tuint16_t(587), Tuint16_t(587), Tuint16_t(587), Tuint16_t(587), Tuint16_t(587), Tuint16_t(587), Tuint16_t(587), Tuint16_t(587), Tuint16_t(587),
Tuint16_t(587), Tuint16_t(587), Tuint16_t(587), Tuint16_t(587), Tuint16_t(587), Tuint16_t(587), Tuint16_t(587), Tuint16_t(587), Tuint16_t(587), Tuint16_t(587), Tuint16_t(587), Tuint16_t(587), Tuint16_t(587), Tuint16_t(587), Tuint16_t(587), Tuint16_t(587),
Tuint16_t(587), Tuint16_t(586), Tuint16_t(585), Tuint16_t(585), Tuint16_t(585), Tuint16_t(585), Tuint16_t(586), Tuint16_t(586), Tuint16_t(585), Tuint16_t(585), Tuint16_t(588), Tuint16_t(589), Tuint16_t(585), Tuint16_t(585), Tuint16_t(587), Tuint16_t(587),
Tuint16_t(590), Tuint16_t(590), Tuint16_t(590), Tuint16_t(590), Tuint16_t(590), Tuint16_t(590), Tuint16_t(590), Tuint16_t(590), Tuint16_t(590), Tuint16_t(590), Tuint16_t(587), Tuint16_t(587), Tuint16_t(587), Tuint16_t(587), Tuint16_t(587), Tuint16_t(587),
Tuint16_t(591), Tuint16_t(591), Tuint16_t(591), Tuint16_t(591), Tuint16_t(591), Tuint16_t(591), Tuint16_t(591), Tuint16_t(591), Tuint16_t(591), Tuint16_t(591), Tuint16_t(591), Tuint16_t(591), Tuint16_t(591), Tuint16_t(591), Tuint16_t(591), Tuint16_t(591),
Tuint16_t(591), Tuint16_t(591), Tuint16_t(591), Tuint16_t(591), Tuint16_t(591), Tuint16_t(591), Tuint16_t(591), Tuint16_t(591), Tuint16_t(591), Tuint16_t(591), Tuint16_t(591), Tuint16_t(591), Tuint16_t(591), Tuint16_t(591), Tuint16_t(591), Tuint16_t(591),
Tuint16_t(591), Tuint16_t(591), Tuint16_t(591), Tuint16_t(591), Tuint16_t(591), Tuint16_t(591), Tuint16_t(592), Tuint16_t(593), Tuint16_t(594), Tuint16_t(594), Tuint16_t(593), Tuint16_t(593), Tuint16_t(593), Tuint16_t(594), Tuint16_t(593), Tuint16_t(594),
Tuint16_t(594), Tuint16_t(594), Tuint16_t(595), Tuint16_t(595), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(596), Tuint16_t(596), Tuint16_t(596), Tuint16_t(596),
// block 54
Tuint16_t(597), Tuint16_t(597), Tuint16_t(597), Tuint16_t(597), Tuint16_t(597), Tuint16_t(597), Tuint16_t(597), Tuint16_t(597), Tuint16_t(597), Tuint16_t(597), Tuint16_t(597), Tuint16_t(597), Tuint16_t(597), Tuint16_t(597), Tuint16_t(597), Tuint16_t(597),
Tuint16_t(597), Tuint16_t(597), Tuint16_t(597), Tuint16_t(597), Tuint16_t(597), Tuint16_t(597), Tuint16_t(597), Tuint16_t(597), Tuint16_t(597), Tuint16_t(597), Tuint16_t(597), Tuint16_t(597), Tuint16_t(597), Tuint16_t(597), Tuint16_t(597), Tuint16_t(597),
Tuint16_t(597), Tuint16_t(597), Tuint16_t(597), Tuint16_t(597), Tuint16_t(598), Tuint16_t(598), Tuint16_t(598), Tuint16_t(598), Tuint16_t(598), Tuint16_t(598), Tuint16_t(598), Tuint16_t(598), Tuint16_t(599), Tuint16_t(599), Tuint16_t(599), Tuint16_t(599),
Tuint16_t(599), Tuint16_t(599), Tuint16_t(599), Tuint16_t(599), Tuint16_t(598), Tuint16_t(598), Tuint16_t(600), Tuint16_t(601), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(602), Tuint16_t(602), Tuint16_t(603), Tuint16_t(603), Tuint16_t(603),
Tuint16_t(604), Tuint16_t(604), Tuint16_t(604), Tuint16_t(604), Tuint16_t(604), Tuint16_t(604), Tuint16_t(604), Tuint16_t(604), Tuint16_t(604), Tuint16_t(604), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(597), Tuint16_t(597), Tuint16_t(597),
Tuint16_t(605), Tuint16_t(605), Tuint16_t(605), Tuint16_t(605), Tuint16_t(605), Tuint16_t(605), Tuint16_t(605), Tuint16_t(605), Tuint16_t(605), Tuint16_t(605), Tuint16_t(606), Tuint16_t(606), Tuint16_t(606), Tuint16_t(606), Tuint16_t(606), Tuint16_t(606),
Tuint16_t(606), Tuint16_t(606), Tuint16_t(606), Tuint16_t(606), Tuint16_t(606), Tuint16_t(606), Tuint16_t(606), Tuint16_t(606), Tuint16_t(606), Tuint16_t(606), Tuint16_t(606), Tuint16_t(606), Tuint16_t(606), Tuint16_t(606), Tuint16_t(606), Tuint16_t(606),
Tuint16_t(606), Tuint16_t(606), Tuint16_t(606), Tuint16_t(606), Tuint16_t(606), Tuint16_t(606), Tuint16_t(606), Tuint16_t(606), Tuint16_t(607), Tuint16_t(607), Tuint16_t(607), Tuint16_t(608), Tuint16_t(607), Tuint16_t(607), Tuint16_t(609), Tuint16_t(609),
// block 55
Tuint16_t(610), Tuint16_t(611), Tuint16_t(612), Tuint16_t(613), Tuint16_t(614), Tuint16_t(615), Tuint16_t(616), Tuint16_t(617), Tuint16_t(618), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(619), Tuint16_t(619), Tuint16_t(619), Tuint16_t(619), Tuint16_t(619), Tuint16_t(619), Tuint16_t(619), Tuint16_t(619), Tuint16_t(619), Tuint16_t(619), Tuint16_t(619), Tuint16_t(619), Tuint16_t(619), Tuint16_t(619), Tuint16_t(619), Tuint16_t(619),
Tuint16_t(619), Tuint16_t(619), Tuint16_t(619), Tuint16_t(619), Tuint16_t(619), Tuint16_t(619), Tuint16_t(619), Tuint16_t(619), Tuint16_t(619), Tuint16_t(619), Tuint16_t(619), Tuint16_t(619), Tuint16_t(619), Tuint16_t(619), Tuint16_t(619), Tuint16_t(619),
Tuint16_t(619), Tuint16_t(619), Tuint16_t(619), Tuint16_t(619), Tuint16_t(619), Tuint16_t(619), Tuint16_t(619), Tuint16_t(619), Tuint16_t(619), Tuint16_t(619), Tuint16_t(619), Tuint16_t(163), Tuint16_t(163), Tuint16_t(619), Tuint16_t(619), Tuint16_t(619),
Tuint16_t(620), Tuint16_t(620), Tuint16_t(620), Tuint16_t(620), Tuint16_t(620), Tuint16_t(620), Tuint16_t(620), Tuint16_t(620), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(621), Tuint16_t(622), Tuint16_t(621), Tuint16_t(623), Tuint16_t(622), Tuint16_t(624), Tuint16_t(624), Tuint16_t(625), Tuint16_t(624), Tuint16_t(625), Tuint16_t(626), Tuint16_t(622), Tuint16_t(625), Tuint16_t(625), Tuint16_t(622), Tuint16_t(622),
Tuint16_t(625), Tuint16_t(627), Tuint16_t(622), Tuint16_t(622), Tuint16_t(622), Tuint16_t(622), Tuint16_t(622), Tuint16_t(622), Tuint16_t(622), Tuint16_t(628), Tuint16_t(629), Tuint16_t(630), Tuint16_t(630), Tuint16_t(624), Tuint16_t(630), Tuint16_t(630),
Tuint16_t(630), Tuint16_t(630), Tuint16_t(631), Tuint16_t(632), Tuint16_t(633), Tuint16_t(629), Tuint16_t(629), Tuint16_t(634), Tuint16_t(635), Tuint16_t(635), Tuint16_t(636), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
// block 56
Tuint16_t(70), Tuint16_t(70), Tuint16_t(70), Tuint16_t(70), Tuint16_t(70), Tuint16_t(70), Tuint16_t(70), Tuint16_t(70), Tuint16_t(70), Tuint16_t(70), Tuint16_t(70), Tuint16_t(70), Tuint16_t(70), Tuint16_t(70), Tuint16_t(70), Tuint16_t(70),
Tuint16_t(70), Tuint16_t(70), Tuint16_t(70), Tuint16_t(70), Tuint16_t(70), Tuint16_t(70), Tuint16_t(70), Tuint16_t(70), Tuint16_t(70), Tuint16_t(70), Tuint16_t(70), Tuint16_t(70), Tuint16_t(70), Tuint16_t(70), Tuint16_t(70), Tuint16_t(70),
Tuint16_t(70), Tuint16_t(70), Tuint16_t(70), Tuint16_t(70), Tuint16_t(70), Tuint16_t(70), Tuint16_t(221), Tuint16_t(221), Tuint16_t(221), Tuint16_t(221), Tuint16_t(221), Tuint16_t(637), Tuint16_t(147), Tuint16_t(147), Tuint16_t(147), Tuint16_t(147),
Tuint16_t(147), Tuint16_t(147), Tuint16_t(147), Tuint16_t(147), Tuint16_t(147), Tuint16_t(147), Tuint16_t(147), Tuint16_t(147), Tuint16_t(147), Tuint16_t(147), Tuint16_t(147), Tuint16_t(147), Tuint16_t(147), Tuint16_t(147), Tuint16_t(147), Tuint16_t(147),
Tuint16_t(147), Tuint16_t(147), Tuint16_t(147), Tuint16_t(147), Tuint16_t(147), Tuint16_t(147), Tuint16_t(147), Tuint16_t(147), Tuint16_t(147), Tuint16_t(147), Tuint16_t(147), Tuint16_t(147), Tuint16_t(147), Tuint16_t(147), Tuint16_t(147), Tuint16_t(147),
Tuint16_t(147), Tuint16_t(147), Tuint16_t(147), Tuint16_t(147), Tuint16_t(147), Tuint16_t(147), Tuint16_t(147), Tuint16_t(147), Tuint16_t(147), Tuint16_t(147), Tuint16_t(147), Tuint16_t(147), Tuint16_t(147), Tuint16_t(638), Tuint16_t(638), Tuint16_t(638),
Tuint16_t(638), Tuint16_t(638), Tuint16_t(148), Tuint16_t(147), Tuint16_t(147), Tuint16_t(147), Tuint16_t(638), Tuint16_t(638), Tuint16_t(638), Tuint16_t(638), Tuint16_t(638), Tuint16_t(70), Tuint16_t(70), Tuint16_t(70), Tuint16_t(70), Tuint16_t(70),
Tuint16_t(70), Tuint16_t(70), Tuint16_t(70), Tuint16_t(70), Tuint16_t(70), Tuint16_t(70), Tuint16_t(70), Tuint16_t(70), Tuint16_t(639), Tuint16_t(640), Tuint16_t(70), Tuint16_t(70), Tuint16_t(70), Tuint16_t(641), Tuint16_t(70), Tuint16_t(70),
// block 57
Tuint16_t(70), Tuint16_t(70), Tuint16_t(70), Tuint16_t(70), Tuint16_t(70), Tuint16_t(70), Tuint16_t(70), Tuint16_t(70), Tuint16_t(70), Tuint16_t(70), Tuint16_t(70), Tuint16_t(70), Tuint16_t(70), Tuint16_t(70), Tuint16_t(642), Tuint16_t(70),
Tuint16_t(70), Tuint16_t(70), Tuint16_t(70), Tuint16_t(70), Tuint16_t(70), Tuint16_t(70), Tuint16_t(643), Tuint16_t(70), Tuint16_t(70), Tuint16_t(70), Tuint16_t(70), Tuint16_t(644), Tuint16_t(644), Tuint16_t(644), Tuint16_t(644), Tuint16_t(644),
Tuint16_t(644), Tuint16_t(644), Tuint16_t(644), Tuint16_t(644), Tuint16_t(645), Tuint16_t(644), Tuint16_t(644), Tuint16_t(644), Tuint16_t(645), Tuint16_t(644), Tuint16_t(644), Tuint16_t(644), Tuint16_t(644), Tuint16_t(644), Tuint16_t(644), Tuint16_t(644),
Tuint16_t(644), Tuint16_t(644), Tuint16_t(644), Tuint16_t(644), Tuint16_t(644), Tuint16_t(644), Tuint16_t(644), Tuint16_t(644), Tuint16_t(644), Tuint16_t(644), Tuint16_t(644), Tuint16_t(644), Tuint16_t(644), Tuint16_t(644), Tuint16_t(644), Tuint16_t(646),
Tuint16_t(647), Tuint16_t(647), Tuint16_t(158), Tuint16_t(158), Tuint16_t(154), Tuint16_t(154), Tuint16_t(154), Tuint16_t(154), Tuint16_t(154), Tuint16_t(154), Tuint16_t(154), Tuint16_t(154), Tuint16_t(154), Tuint16_t(154), Tuint16_t(154), Tuint16_t(154),
Tuint16_t(158), Tuint16_t(158), Tuint16_t(158), Tuint16_t(158), Tuint16_t(158), Tuint16_t(158), Tuint16_t(158), Tuint16_t(158), Tuint16_t(158), Tuint16_t(158), Tuint16_t(158), Tuint16_t(158), Tuint16_t(158), Tuint16_t(158), Tuint16_t(158), Tuint16_t(158),
Tuint16_t(158), Tuint16_t(158), Tuint16_t(158), Tuint16_t(158), Tuint16_t(158), Tuint16_t(158), Tuint16_t(158), Tuint16_t(573), Tuint16_t(573), Tuint16_t(573), Tuint16_t(573), Tuint16_t(573), Tuint16_t(573), Tuint16_t(573), Tuint16_t(573), Tuint16_t(573),
Tuint16_t(573), Tuint16_t(573), Tuint16_t(573), Tuint16_t(573), Tuint16_t(573), Tuint16_t(154), Tuint16_t(154), Tuint16_t(154), Tuint16_t(648), Tuint16_t(154), Tuint16_t(649), Tuint16_t(154), Tuint16_t(154), Tuint16_t(154), Tuint16_t(154), Tuint16_t(154),
// block 58
Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66),
Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66),
Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(67), Tuint16_t(65), Tuint16_t(66),
Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66),
Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66),
Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66),
Tuint16_t(650), Tuint16_t(651), Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66),
Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66),
// block 59
Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66),
Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66), Tuint16_t(69), Tuint16_t(69), Tuint16_t(69), Tuint16_t(69), Tuint16_t(652), Tuint16_t(653), Tuint16_t(70), Tuint16_t(70), Tuint16_t(654), Tuint16_t(70),
Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66),
Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66),
Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(67), Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66),
Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66),
Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66),
Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66),
// block 60
Tuint16_t(655), Tuint16_t(655), Tuint16_t(655), Tuint16_t(655), Tuint16_t(655), Tuint16_t(655), Tuint16_t(655), Tuint16_t(655), Tuint16_t(656), Tuint16_t(656), Tuint16_t(656), Tuint16_t(656), Tuint16_t(656), Tuint16_t(656), Tuint16_t(656), Tuint16_t(656),
Tuint16_t(655), Tuint16_t(655), Tuint16_t(655), Tuint16_t(655), Tuint16_t(655), Tuint16_t(655), Tuint16_t(163), Tuint16_t(163), Tuint16_t(656), Tuint16_t(656), Tuint16_t(656), Tuint16_t(656), Tuint16_t(656), Tuint16_t(656), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(655), Tuint16_t(655), Tuint16_t(655), Tuint16_t(655), Tuint16_t(655), Tuint16_t(655), Tuint16_t(655), Tuint16_t(655), Tuint16_t(656), Tuint16_t(656), Tuint16_t(656), Tuint16_t(656), Tuint16_t(656), Tuint16_t(656), Tuint16_t(656), Tuint16_t(656),
Tuint16_t(655), Tuint16_t(655), Tuint16_t(655), Tuint16_t(655), Tuint16_t(655), Tuint16_t(655), Tuint16_t(655), Tuint16_t(655), Tuint16_t(656), Tuint16_t(656), Tuint16_t(656), Tuint16_t(656), Tuint16_t(656), Tuint16_t(656), Tuint16_t(656), Tuint16_t(656),
Tuint16_t(655), Tuint16_t(655), Tuint16_t(655), Tuint16_t(655), Tuint16_t(655), Tuint16_t(655), Tuint16_t(163), Tuint16_t(163), Tuint16_t(656), Tuint16_t(656), Tuint16_t(656), Tuint16_t(656), Tuint16_t(656), Tuint16_t(656), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(173), Tuint16_t(655), Tuint16_t(173), Tuint16_t(655), Tuint16_t(173), Tuint16_t(655), Tuint16_t(173), Tuint16_t(655), Tuint16_t(163), Tuint16_t(656), Tuint16_t(163), Tuint16_t(656), Tuint16_t(163), Tuint16_t(656), Tuint16_t(163), Tuint16_t(656),
Tuint16_t(655), Tuint16_t(655), Tuint16_t(655), Tuint16_t(655), Tuint16_t(655), Tuint16_t(655), Tuint16_t(655), Tuint16_t(655), Tuint16_t(656), Tuint16_t(656), Tuint16_t(656), Tuint16_t(656), Tuint16_t(656), Tuint16_t(656), Tuint16_t(656), Tuint16_t(656),
Tuint16_t(657), Tuint16_t(657), Tuint16_t(658), Tuint16_t(658), Tuint16_t(658), Tuint16_t(658), Tuint16_t(659), Tuint16_t(659), Tuint16_t(660), Tuint16_t(660), Tuint16_t(661), Tuint16_t(661), Tuint16_t(662), Tuint16_t(662), Tuint16_t(163), Tuint16_t(163),
// block 61
Tuint16_t(663), Tuint16_t(663), Tuint16_t(663), Tuint16_t(663), Tuint16_t(663), Tuint16_t(663), Tuint16_t(663), Tuint16_t(663), Tuint16_t(664), Tuint16_t(664), Tuint16_t(664), Tuint16_t(664), Tuint16_t(664), Tuint16_t(664), Tuint16_t(664), Tuint16_t(664),
Tuint16_t(663), Tuint16_t(663), Tuint16_t(663), Tuint16_t(663), Tuint16_t(663), Tuint16_t(663), Tuint16_t(663), Tuint16_t(663), Tuint16_t(664), Tuint16_t(664), Tuint16_t(664), Tuint16_t(664), Tuint16_t(664), Tuint16_t(664), Tuint16_t(664), Tuint16_t(664),
Tuint16_t(663), Tuint16_t(663), Tuint16_t(663), Tuint16_t(663), Tuint16_t(663), Tuint16_t(663), Tuint16_t(663), Tuint16_t(663), Tuint16_t(664), Tuint16_t(664), Tuint16_t(664), Tuint16_t(664), Tuint16_t(664), Tuint16_t(664), Tuint16_t(664), Tuint16_t(664),
Tuint16_t(655), Tuint16_t(655), Tuint16_t(665), Tuint16_t(666), Tuint16_t(665), Tuint16_t(163), Tuint16_t(173), Tuint16_t(665), Tuint16_t(656), Tuint16_t(656), Tuint16_t(667), Tuint16_t(667), Tuint16_t(668), Tuint16_t(162), Tuint16_t(669), Tuint16_t(162),
Tuint16_t(162), Tuint16_t(162), Tuint16_t(665), Tuint16_t(666), Tuint16_t(665), Tuint16_t(163), Tuint16_t(173), Tuint16_t(665), Tuint16_t(670), Tuint16_t(670), Tuint16_t(670), Tuint16_t(670), Tuint16_t(668), Tuint16_t(162), Tuint16_t(162), Tuint16_t(162),
Tuint16_t(655), Tuint16_t(655), Tuint16_t(173), Tuint16_t(173), Tuint16_t(163), Tuint16_t(163), Tuint16_t(173), Tuint16_t(173), Tuint16_t(656), Tuint16_t(656), Tuint16_t(671), Tuint16_t(671), Tuint16_t(163), Tuint16_t(162), Tuint16_t(162), Tuint16_t(162),
Tuint16_t(655), Tuint16_t(655), Tuint16_t(173), Tuint16_t(173), Tuint16_t(173), Tuint16_t(215), Tuint16_t(173), Tuint16_t(173), Tuint16_t(656), Tuint16_t(656), Tuint16_t(672), Tuint16_t(672), Tuint16_t(220), Tuint16_t(162), Tuint16_t(162), Tuint16_t(162),
Tuint16_t(163), Tuint16_t(163), Tuint16_t(665), Tuint16_t(666), Tuint16_t(665), Tuint16_t(163), Tuint16_t(173), Tuint16_t(665), Tuint16_t(673), Tuint16_t(673), Tuint16_t(674), Tuint16_t(674), Tuint16_t(668), Tuint16_t(162), Tuint16_t(162), Tuint16_t(163),
// block 62
Tuint16_t(675), Tuint16_t(675), Tuint16_t(675), Tuint16_t(675), Tuint16_t(675), Tuint16_t(675), Tuint16_t(675), Tuint16_t(675), Tuint16_t(675), Tuint16_t(675), Tuint16_t(675), Tuint16_t(51), Tuint16_t(676), Tuint16_t(677), Tuint16_t(678), Tuint16_t(679),
Tuint16_t(680), Tuint16_t(680), Tuint16_t(680), Tuint16_t(680), Tuint16_t(680), Tuint16_t(680), Tuint16_t(681), Tuint16_t(43), Tuint16_t(682), Tuint16_t(683), Tuint16_t(684), Tuint16_t(685), Tuint16_t(685), Tuint16_t(686), Tuint16_t(684), Tuint16_t(685),
Tuint16_t(43), Tuint16_t(43), Tuint16_t(43), Tuint16_t(43), Tuint16_t(687), Tuint16_t(43), Tuint16_t(43), Tuint16_t(687), Tuint16_t(688), Tuint16_t(689), Tuint16_t(690), Tuint16_t(691), Tuint16_t(692), Tuint16_t(693), Tuint16_t(694), Tuint16_t(695),
Tuint16_t(696), Tuint16_t(696), Tuint16_t(697), Tuint16_t(697), Tuint16_t(697), Tuint16_t(43), Tuint16_t(43), Tuint16_t(43), Tuint16_t(43), Tuint16_t(49), Tuint16_t(57), Tuint16_t(43), Tuint16_t(698), Tuint16_t(699), Tuint16_t(43), Tuint16_t(700),
Tuint16_t(701), Tuint16_t(43), Tuint16_t(43), Tuint16_t(43), Tuint16_t(702), Tuint16_t(703), Tuint16_t(704), Tuint16_t(699), Tuint16_t(699), Tuint16_t(698), Tuint16_t(43), Tuint16_t(43), Tuint16_t(43), Tuint16_t(43), Tuint16_t(43), Tuint16_t(43),
Tuint16_t(43), Tuint16_t(43), Tuint16_t(50), Tuint16_t(705), Tuint16_t(700), Tuint16_t(43), Tuint16_t(43), Tuint16_t(43), Tuint16_t(43), Tuint16_t(43), Tuint16_t(43), Tuint16_t(43), Tuint16_t(43), Tuint16_t(43), Tuint16_t(43), Tuint16_t(675),
Tuint16_t(51), Tuint16_t(706), Tuint16_t(706), Tuint16_t(706), Tuint16_t(706), Tuint16_t(707), Tuint16_t(708), Tuint16_t(709), Tuint16_t(710), Tuint16_t(711), Tuint16_t(712), Tuint16_t(712), Tuint16_t(712), Tuint16_t(712), Tuint16_t(712), Tuint16_t(712),
Tuint16_t(54), Tuint16_t(645), Tuint16_t(163), Tuint16_t(163), Tuint16_t(54), Tuint16_t(54), Tuint16_t(54), Tuint16_t(54), Tuint16_t(54), Tuint16_t(54), Tuint16_t(713), Tuint16_t(714), Tuint16_t(715), Tuint16_t(716), Tuint16_t(717), Tuint16_t(644),
// block 63
Tuint16_t(54), Tuint16_t(54), Tuint16_t(54), Tuint16_t(54), Tuint16_t(54), Tuint16_t(54), Tuint16_t(54), Tuint16_t(54), Tuint16_t(54), Tuint16_t(54), Tuint16_t(713), Tuint16_t(714), Tuint16_t(715), Tuint16_t(716), Tuint16_t(717), Tuint16_t(163),
Tuint16_t(644), Tuint16_t(644), Tuint16_t(644), Tuint16_t(644), Tuint16_t(644), Tuint16_t(644), Tuint16_t(644), Tuint16_t(644), Tuint16_t(644), Tuint16_t(644), Tuint16_t(644), Tuint16_t(644), Tuint16_t(644), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(431), Tuint16_t(431), Tuint16_t(431), Tuint16_t(431), Tuint16_t(431), Tuint16_t(431), Tuint16_t(431), Tuint16_t(431), Tuint16_t(431), Tuint16_t(431), Tuint16_t(431), Tuint16_t(431), Tuint16_t(431), Tuint16_t(431), Tuint16_t(431), Tuint16_t(431),
Tuint16_t(431), Tuint16_t(431), Tuint16_t(431), Tuint16_t(431), Tuint16_t(431), Tuint16_t(431), Tuint16_t(431), Tuint16_t(431), Tuint16_t(431), Tuint16_t(431), Tuint16_t(431), Tuint16_t(431), Tuint16_t(431), Tuint16_t(431), Tuint16_t(431), Tuint16_t(431),
Tuint16_t(431), Tuint16_t(718), Tuint16_t(718), Tuint16_t(718), Tuint16_t(718), Tuint16_t(718), Tuint16_t(718), Tuint16_t(718), Tuint16_t(718), Tuint16_t(718), Tuint16_t(718), Tuint16_t(718), Tuint16_t(718), Tuint16_t(718), Tuint16_t(718), Tuint16_t(718),
Tuint16_t(719), Tuint16_t(719), Tuint16_t(719), Tuint16_t(719), Tuint16_t(719), Tuint16_t(719), Tuint16_t(719), Tuint16_t(719), Tuint16_t(719), Tuint16_t(719), Tuint16_t(719), Tuint16_t(719), Tuint16_t(719), Tuint16_t(720), Tuint16_t(720), Tuint16_t(720),
Tuint16_t(720), Tuint16_t(719), Tuint16_t(720), Tuint16_t(721), Tuint16_t(720), Tuint16_t(719), Tuint16_t(719), Tuint16_t(158), Tuint16_t(158), Tuint16_t(158), Tuint16_t(158), Tuint16_t(719), Tuint16_t(719), Tuint16_t(719), Tuint16_t(719), Tuint16_t(719),
Tuint16_t(722), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
// block 64
Tuint16_t(723), Tuint16_t(723), Tuint16_t(724), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(724), Tuint16_t(723), Tuint16_t(723), Tuint16_t(725), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(725), Tuint16_t(725),
Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(725), Tuint16_t(723), Tuint16_t(724), Tuint16_t(723), Tuint16_t(723), Tuint16_t(726), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(723), Tuint16_t(723),
Tuint16_t(723), Tuint16_t(723), Tuint16_t(727), Tuint16_t(723), Tuint16_t(724), Tuint16_t(723), Tuint16_t(728), Tuint16_t(723), Tuint16_t(724), Tuint16_t(729), Tuint16_t(730), Tuint16_t(731), Tuint16_t(724), Tuint16_t(724), Tuint16_t(732), Tuint16_t(725),
Tuint16_t(724), Tuint16_t(724), Tuint16_t(733), Tuint16_t(724), Tuint16_t(725), Tuint16_t(734), Tuint16_t(734), Tuint16_t(734), Tuint16_t(734), Tuint16_t(735), Tuint16_t(723), Tuint16_t(723), Tuint16_t(725), Tuint16_t(725), Tuint16_t(724), Tuint16_t(724),
Tuint16_t(715), Tuint16_t(715), Tuint16_t(715), Tuint16_t(715), Tuint16_t(715), Tuint16_t(724), Tuint16_t(725), Tuint16_t(725), Tuint16_t(736), Tuint16_t(736), Tuint16_t(723), Tuint16_t(715), Tuint16_t(723), Tuint16_t(723), Tuint16_t(737), Tuint16_t(460),
Tuint16_t(58), Tuint16_t(58), Tuint16_t(58), Tuint16_t(58), Tuint16_t(58), Tuint16_t(58), Tuint16_t(58), Tuint16_t(58), Tuint16_t(58), Tuint16_t(58), Tuint16_t(58), Tuint16_t(58), Tuint16_t(58), Tuint16_t(58), Tuint16_t(58), Tuint16_t(58),
Tuint16_t(738), Tuint16_t(738), Tuint16_t(738), Tuint16_t(738), Tuint16_t(738), Tuint16_t(738), Tuint16_t(738), Tuint16_t(738), Tuint16_t(738), Tuint16_t(738), Tuint16_t(738), Tuint16_t(738), Tuint16_t(738), Tuint16_t(738), Tuint16_t(738), Tuint16_t(738),
Tuint16_t(739), Tuint16_t(739), Tuint16_t(739), Tuint16_t(739), Tuint16_t(739), Tuint16_t(739), Tuint16_t(739), Tuint16_t(739), Tuint16_t(739), Tuint16_t(739), Tuint16_t(739), Tuint16_t(739), Tuint16_t(739), Tuint16_t(739), Tuint16_t(739), Tuint16_t(739),
// block 65
Tuint16_t(740), Tuint16_t(740), Tuint16_t(740), Tuint16_t(65), Tuint16_t(66), Tuint16_t(740), Tuint16_t(740), Tuint16_t(740), Tuint16_t(740), Tuint16_t(58), Tuint16_t(723), Tuint16_t(723), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(741), Tuint16_t(742), Tuint16_t(742), Tuint16_t(742), Tuint16_t(742), Tuint16_t(742), Tuint16_t(50), Tuint16_t(50), Tuint16_t(743), Tuint16_t(743), Tuint16_t(743), Tuint16_t(743),
Tuint16_t(50), Tuint16_t(743), Tuint16_t(743), Tuint16_t(50), Tuint16_t(743), Tuint16_t(743), Tuint16_t(50), Tuint16_t(743), Tuint16_t(45), Tuint16_t(742), Tuint16_t(742), Tuint16_t(743), Tuint16_t(743), Tuint16_t(743), Tuint16_t(50), Tuint16_t(45),
Tuint16_t(743), Tuint16_t(743), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(743), Tuint16_t(743), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(743), Tuint16_t(743), Tuint16_t(743), Tuint16_t(743),
Tuint16_t(743), Tuint16_t(743), Tuint16_t(743), Tuint16_t(743), Tuint16_t(743), Tuint16_t(743), Tuint16_t(743), Tuint16_t(743), Tuint16_t(743), Tuint16_t(743), Tuint16_t(743), Tuint16_t(743), Tuint16_t(743), Tuint16_t(743), Tuint16_t(50), Tuint16_t(50),
Tuint16_t(743), Tuint16_t(743), Tuint16_t(50), Tuint16_t(743), Tuint16_t(50), Tuint16_t(743), Tuint16_t(743), Tuint16_t(743), Tuint16_t(743), Tuint16_t(743), Tuint16_t(743), Tuint16_t(743), Tuint16_t(45), Tuint16_t(743), Tuint16_t(45), Tuint16_t(45),
Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(743), Tuint16_t(743), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45),
Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50),
// block 66
Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(744), Tuint16_t(744), Tuint16_t(744), Tuint16_t(744), Tuint16_t(744), Tuint16_t(744), Tuint16_t(50), Tuint16_t(50),
Tuint16_t(50), Tuint16_t(50), Tuint16_t(745), Tuint16_t(53), Tuint16_t(50), Tuint16_t(744), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(744),
Tuint16_t(744), Tuint16_t(744), Tuint16_t(744), Tuint16_t(50), Tuint16_t(744), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50),
Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(744), Tuint16_t(744), Tuint16_t(50), Tuint16_t(50),
Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(744), Tuint16_t(50), Tuint16_t(744), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(744), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50),
Tuint16_t(50), Tuint16_t(50), Tuint16_t(744), Tuint16_t(744), Tuint16_t(744), Tuint16_t(744), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50),
Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(744), Tuint16_t(744), Tuint16_t(744), Tuint16_t(744), Tuint16_t(744), Tuint16_t(744), Tuint16_t(744), Tuint16_t(744), Tuint16_t(50), Tuint16_t(50), Tuint16_t(744), Tuint16_t(744),
Tuint16_t(744), Tuint16_t(744), Tuint16_t(744), Tuint16_t(744), Tuint16_t(744), Tuint16_t(744), Tuint16_t(744), Tuint16_t(744), Tuint16_t(744), Tuint16_t(744), Tuint16_t(744), Tuint16_t(744), Tuint16_t(744), Tuint16_t(744), Tuint16_t(744), Tuint16_t(744),
// block 67
Tuint16_t(744), Tuint16_t(744), Tuint16_t(744), Tuint16_t(744), Tuint16_t(744), Tuint16_t(744), Tuint16_t(744), Tuint16_t(744), Tuint16_t(744), Tuint16_t(744), Tuint16_t(744), Tuint16_t(744), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(744),
Tuint16_t(744), Tuint16_t(744), Tuint16_t(744), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(744), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50),
Tuint16_t(50), Tuint16_t(50), Tuint16_t(744), Tuint16_t(744), Tuint16_t(50), Tuint16_t(50), Tuint16_t(744), Tuint16_t(50), Tuint16_t(744), Tuint16_t(744), Tuint16_t(50), Tuint16_t(744), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50),
Tuint16_t(744), Tuint16_t(744), Tuint16_t(744), Tuint16_t(744), Tuint16_t(744), Tuint16_t(744), Tuint16_t(744), Tuint16_t(744), Tuint16_t(744), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50),
Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(744), Tuint16_t(744), Tuint16_t(744), Tuint16_t(744), Tuint16_t(744), Tuint16_t(50), Tuint16_t(50),
Tuint16_t(744), Tuint16_t(744), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(744), Tuint16_t(744), Tuint16_t(744), Tuint16_t(744), Tuint16_t(744), Tuint16_t(744), Tuint16_t(744), Tuint16_t(744), Tuint16_t(744), Tuint16_t(744),
Tuint16_t(744), Tuint16_t(744), Tuint16_t(744), Tuint16_t(744), Tuint16_t(744), Tuint16_t(744), Tuint16_t(744), Tuint16_t(744), Tuint16_t(744), Tuint16_t(744), Tuint16_t(744), Tuint16_t(744), Tuint16_t(744), Tuint16_t(744), Tuint16_t(50), Tuint16_t(50),
Tuint16_t(744), Tuint16_t(744), Tuint16_t(744), Tuint16_t(744), Tuint16_t(744), Tuint16_t(50), Tuint16_t(744), Tuint16_t(744), Tuint16_t(50), Tuint16_t(50), Tuint16_t(744), Tuint16_t(744), Tuint16_t(744), Tuint16_t(744), Tuint16_t(744), Tuint16_t(50),
// block 68
Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(746), Tuint16_t(747), Tuint16_t(746), Tuint16_t(747), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45),
Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(748), Tuint16_t(748), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45),
Tuint16_t(50), Tuint16_t(50), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(47), Tuint16_t(749), Tuint16_t(750), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45),
Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(751), Tuint16_t(751), Tuint16_t(751), Tuint16_t(751), Tuint16_t(751), Tuint16_t(751), Tuint16_t(751), Tuint16_t(751), Tuint16_t(751), Tuint16_t(751),
Tuint16_t(751), Tuint16_t(751), Tuint16_t(751), Tuint16_t(751), Tuint16_t(751), Tuint16_t(751), Tuint16_t(751), Tuint16_t(751), Tuint16_t(751), Tuint16_t(751), Tuint16_t(751), Tuint16_t(751), Tuint16_t(751), Tuint16_t(751), Tuint16_t(751), Tuint16_t(751),
Tuint16_t(751), Tuint16_t(751), Tuint16_t(751), Tuint16_t(751), Tuint16_t(751), Tuint16_t(751), Tuint16_t(751), Tuint16_t(751), Tuint16_t(751), Tuint16_t(751), Tuint16_t(751), Tuint16_t(751), Tuint16_t(751), Tuint16_t(751), Tuint16_t(751), Tuint16_t(751),
Tuint16_t(751), Tuint16_t(751), Tuint16_t(751), Tuint16_t(751), Tuint16_t(751), Tuint16_t(751), Tuint16_t(751), Tuint16_t(751), Tuint16_t(751), Tuint16_t(751), Tuint16_t(751), Tuint16_t(751), Tuint16_t(751), Tuint16_t(751), Tuint16_t(751), Tuint16_t(751),
Tuint16_t(751), Tuint16_t(751), Tuint16_t(751), Tuint16_t(751), Tuint16_t(751), Tuint16_t(751), Tuint16_t(751), Tuint16_t(751), Tuint16_t(751), Tuint16_t(751), Tuint16_t(751), Tuint16_t(45), Tuint16_t(50), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45),
// block 69
Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(752), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45),
Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(751), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50),
Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50),
Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(743), Tuint16_t(743), Tuint16_t(45), Tuint16_t(743), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45),
Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(47),
Tuint16_t(743), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50),
Tuint16_t(50), Tuint16_t(50), Tuint16_t(743), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(748), Tuint16_t(748), Tuint16_t(748), Tuint16_t(748), Tuint16_t(47), Tuint16_t(47), Tuint16_t(47),
Tuint16_t(748), Tuint16_t(47), Tuint16_t(47), Tuint16_t(748), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(47), Tuint16_t(47), Tuint16_t(47), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45),
// block 70
Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45),
Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45),
Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(753), Tuint16_t(753), Tuint16_t(753), Tuint16_t(753), Tuint16_t(753), Tuint16_t(753), Tuint16_t(753), Tuint16_t(753), Tuint16_t(753),
Tuint16_t(753), Tuint16_t(753), Tuint16_t(753), Tuint16_t(753), Tuint16_t(753), Tuint16_t(753), Tuint16_t(753), Tuint16_t(753), Tuint16_t(753), Tuint16_t(753), Tuint16_t(753), Tuint16_t(753), Tuint16_t(753), Tuint16_t(753), Tuint16_t(753), Tuint16_t(753),
Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(753), Tuint16_t(753), Tuint16_t(753), Tuint16_t(753), Tuint16_t(753),
Tuint16_t(753), Tuint16_t(753), Tuint16_t(753), Tuint16_t(753), Tuint16_t(753), Tuint16_t(753), Tuint16_t(753), Tuint16_t(753), Tuint16_t(753), Tuint16_t(753), Tuint16_t(753), Tuint16_t(753), Tuint16_t(753), Tuint16_t(753), Tuint16_t(753), Tuint16_t(753),
Tuint16_t(58), Tuint16_t(58), Tuint16_t(58), Tuint16_t(58), Tuint16_t(58), Tuint16_t(58), Tuint16_t(58), Tuint16_t(58), Tuint16_t(58), Tuint16_t(58), Tuint16_t(58), Tuint16_t(58), Tuint16_t(58), Tuint16_t(58), Tuint16_t(58), Tuint16_t(58),
Tuint16_t(58), Tuint16_t(58), Tuint16_t(58), Tuint16_t(58), Tuint16_t(58), Tuint16_t(58), Tuint16_t(58), Tuint16_t(58), Tuint16_t(58), Tuint16_t(58), Tuint16_t(58), Tuint16_t(58), Tuint16_t(58), Tuint16_t(58), Tuint16_t(58), Tuint16_t(58),
// block 71
Tuint16_t(58), Tuint16_t(58), Tuint16_t(58), Tuint16_t(58), Tuint16_t(58), Tuint16_t(58), Tuint16_t(58), Tuint16_t(58), Tuint16_t(54), Tuint16_t(54), Tuint16_t(54), Tuint16_t(54), Tuint16_t(54), Tuint16_t(54), Tuint16_t(54), Tuint16_t(54),
Tuint16_t(54), Tuint16_t(54), Tuint16_t(54), Tuint16_t(54), Tuint16_t(54), Tuint16_t(54), Tuint16_t(54), Tuint16_t(54), Tuint16_t(54), Tuint16_t(54), Tuint16_t(54), Tuint16_t(54), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460),
Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460),
Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(754), Tuint16_t(754), Tuint16_t(754), Tuint16_t(754), Tuint16_t(754), Tuint16_t(754), Tuint16_t(754), Tuint16_t(754), Tuint16_t(754), Tuint16_t(754),
Tuint16_t(754), Tuint16_t(754), Tuint16_t(755), Tuint16_t(754), Tuint16_t(754), Tuint16_t(754), Tuint16_t(754), Tuint16_t(754), Tuint16_t(754), Tuint16_t(754), Tuint16_t(754), Tuint16_t(754), Tuint16_t(754), Tuint16_t(754), Tuint16_t(754), Tuint16_t(754),
Tuint16_t(756), Tuint16_t(756), Tuint16_t(756), Tuint16_t(756), Tuint16_t(756), Tuint16_t(756), Tuint16_t(756), Tuint16_t(756), Tuint16_t(756), Tuint16_t(756), Tuint16_t(756), Tuint16_t(756), Tuint16_t(756), Tuint16_t(756), Tuint16_t(756), Tuint16_t(756),
Tuint16_t(756), Tuint16_t(756), Tuint16_t(756), Tuint16_t(756), Tuint16_t(756), Tuint16_t(756), Tuint16_t(756), Tuint16_t(756), Tuint16_t(756), Tuint16_t(756), Tuint16_t(58), Tuint16_t(58), Tuint16_t(58), Tuint16_t(58), Tuint16_t(58), Tuint16_t(58),
Tuint16_t(58), Tuint16_t(58), Tuint16_t(58), Tuint16_t(58), Tuint16_t(58), Tuint16_t(58), Tuint16_t(58), Tuint16_t(58), Tuint16_t(58), Tuint16_t(58), Tuint16_t(58), Tuint16_t(58), Tuint16_t(58), Tuint16_t(58), Tuint16_t(58), Tuint16_t(58),
// block 72
Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45),
Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45),
Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45),
Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45),
Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45),
Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45),
Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45),
Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45),
// block 73
Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45),
Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45),
Tuint16_t(743), Tuint16_t(743), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(47), Tuint16_t(47), Tuint16_t(45), Tuint16_t(45), Tuint16_t(743), Tuint16_t(743),
Tuint16_t(743), Tuint16_t(743), Tuint16_t(743), Tuint16_t(743), Tuint16_t(743), Tuint16_t(743), Tuint16_t(742), Tuint16_t(50), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(743), Tuint16_t(743), Tuint16_t(743), Tuint16_t(743),
Tuint16_t(742), Tuint16_t(50), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(743), Tuint16_t(743), Tuint16_t(45), Tuint16_t(45), Tuint16_t(743), Tuint16_t(743), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(743),
Tuint16_t(743), Tuint16_t(743), Tuint16_t(743), Tuint16_t(743), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45),
Tuint16_t(45), Tuint16_t(45), Tuint16_t(743), Tuint16_t(45), Tuint16_t(743), Tuint16_t(45), Tuint16_t(45), Tuint16_t(743), Tuint16_t(743), Tuint16_t(743), Tuint16_t(743), Tuint16_t(743), Tuint16_t(743), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45),
Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(741), Tuint16_t(741), Tuint16_t(757), Tuint16_t(757), Tuint16_t(50),
// block 74
Tuint16_t(47), Tuint16_t(47), Tuint16_t(47), Tuint16_t(47), Tuint16_t(47), Tuint16_t(758), Tuint16_t(743), Tuint16_t(752), Tuint16_t(752), Tuint16_t(752), Tuint16_t(752), Tuint16_t(752), Tuint16_t(752), Tuint16_t(752), Tuint16_t(47), Tuint16_t(752),
Tuint16_t(752), Tuint16_t(47), Tuint16_t(752), Tuint16_t(45), Tuint16_t(748), Tuint16_t(748), Tuint16_t(752), Tuint16_t(752), Tuint16_t(47), Tuint16_t(752), Tuint16_t(752), Tuint16_t(752), Tuint16_t(752), Tuint16_t(759), Tuint16_t(752), Tuint16_t(752),
Tuint16_t(47), Tuint16_t(752), Tuint16_t(47), Tuint16_t(47), Tuint16_t(752), Tuint16_t(752), Tuint16_t(47), Tuint16_t(752), Tuint16_t(752), Tuint16_t(752), Tuint16_t(47), Tuint16_t(752), Tuint16_t(752), Tuint16_t(752), Tuint16_t(47), Tuint16_t(47),
Tuint16_t(752), Tuint16_t(752), Tuint16_t(752), Tuint16_t(752), Tuint16_t(752), Tuint16_t(752), Tuint16_t(752), Tuint16_t(752), Tuint16_t(47), Tuint16_t(47), Tuint16_t(47), Tuint16_t(752), Tuint16_t(752), Tuint16_t(752), Tuint16_t(752), Tuint16_t(752),
Tuint16_t(742), Tuint16_t(752), Tuint16_t(742), Tuint16_t(752), Tuint16_t(752), Tuint16_t(752), Tuint16_t(752), Tuint16_t(752), Tuint16_t(748), Tuint16_t(748), Tuint16_t(748), Tuint16_t(748), Tuint16_t(748), Tuint16_t(748), Tuint16_t(748), Tuint16_t(748),
Tuint16_t(748), Tuint16_t(748), Tuint16_t(748), Tuint16_t(748), Tuint16_t(752), Tuint16_t(752), Tuint16_t(752), Tuint16_t(752), Tuint16_t(752), Tuint16_t(752), Tuint16_t(752), Tuint16_t(752), Tuint16_t(752), Tuint16_t(752), Tuint16_t(752), Tuint16_t(47),
Tuint16_t(742), Tuint16_t(758), Tuint16_t(758), Tuint16_t(742), Tuint16_t(752), Tuint16_t(47), Tuint16_t(47), Tuint16_t(752), Tuint16_t(47), Tuint16_t(752), Tuint16_t(752), Tuint16_t(752), Tuint16_t(752), Tuint16_t(758), Tuint16_t(758), Tuint16_t(760),
Tuint16_t(752), Tuint16_t(752), Tuint16_t(752), Tuint16_t(752), Tuint16_t(752), Tuint16_t(752), Tuint16_t(752), Tuint16_t(752), Tuint16_t(752), Tuint16_t(752), Tuint16_t(752), Tuint16_t(47), Tuint16_t(752), Tuint16_t(752), Tuint16_t(47), Tuint16_t(748),
// block 75
Tuint16_t(752), Tuint16_t(752), Tuint16_t(752), Tuint16_t(752), Tuint16_t(752), Tuint16_t(752), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45),
Tuint16_t(752), Tuint16_t(752), Tuint16_t(47), Tuint16_t(748), Tuint16_t(47), Tuint16_t(47), Tuint16_t(47), Tuint16_t(47), Tuint16_t(752), Tuint16_t(47), Tuint16_t(752), Tuint16_t(47), Tuint16_t(47), Tuint16_t(752), Tuint16_t(752), Tuint16_t(752),
Tuint16_t(47), Tuint16_t(748), Tuint16_t(752), Tuint16_t(752), Tuint16_t(752), Tuint16_t(752), Tuint16_t(752), Tuint16_t(47), Tuint16_t(752), Tuint16_t(752), Tuint16_t(748), Tuint16_t(748), Tuint16_t(761), Tuint16_t(752), Tuint16_t(752), Tuint16_t(752),
Tuint16_t(47), Tuint16_t(47), Tuint16_t(752), Tuint16_t(752), Tuint16_t(752), Tuint16_t(752), Tuint16_t(752), Tuint16_t(752), Tuint16_t(752), Tuint16_t(752), Tuint16_t(752), Tuint16_t(752), Tuint16_t(752), Tuint16_t(748), Tuint16_t(748), Tuint16_t(752),
Tuint16_t(752), Tuint16_t(752), Tuint16_t(752), Tuint16_t(752), Tuint16_t(748), Tuint16_t(748), Tuint16_t(752), Tuint16_t(752), Tuint16_t(47), Tuint16_t(752), Tuint16_t(752), Tuint16_t(752), Tuint16_t(752), Tuint16_t(752), Tuint16_t(748), Tuint16_t(47),
Tuint16_t(752), Tuint16_t(47), Tuint16_t(752), Tuint16_t(47), Tuint16_t(748), Tuint16_t(752), Tuint16_t(752), Tuint16_t(752), Tuint16_t(752), Tuint16_t(752), Tuint16_t(752), Tuint16_t(752), Tuint16_t(752), Tuint16_t(752), Tuint16_t(752), Tuint16_t(752),
Tuint16_t(752), Tuint16_t(752), Tuint16_t(752), Tuint16_t(752), Tuint16_t(752), Tuint16_t(752), Tuint16_t(752), Tuint16_t(752), Tuint16_t(752), Tuint16_t(47), Tuint16_t(748), Tuint16_t(752), Tuint16_t(752), Tuint16_t(752), Tuint16_t(752), Tuint16_t(752),
Tuint16_t(47), Tuint16_t(47), Tuint16_t(748), Tuint16_t(748), Tuint16_t(47), Tuint16_t(748), Tuint16_t(752), Tuint16_t(47), Tuint16_t(47), Tuint16_t(759), Tuint16_t(748), Tuint16_t(752), Tuint16_t(752), Tuint16_t(748), Tuint16_t(752), Tuint16_t(752),
// block 76
Tuint16_t(752), Tuint16_t(752), Tuint16_t(47), Tuint16_t(752), Tuint16_t(752), Tuint16_t(748), Tuint16_t(45), Tuint16_t(45), Tuint16_t(47), Tuint16_t(47), Tuint16_t(762), Tuint16_t(762), Tuint16_t(759), Tuint16_t(759), Tuint16_t(752), Tuint16_t(47),
Tuint16_t(752), Tuint16_t(752), Tuint16_t(47), Tuint16_t(45), Tuint16_t(47), Tuint16_t(45), Tuint16_t(47), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(47), Tuint16_t(45), Tuint16_t(45),
Tuint16_t(45), Tuint16_t(47), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(748), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45),
Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(47), Tuint16_t(47), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45),
Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(47), Tuint16_t(45), Tuint16_t(45), Tuint16_t(47), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(748), Tuint16_t(45), Tuint16_t(748), Tuint16_t(45),
Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(748), Tuint16_t(748), Tuint16_t(748), Tuint16_t(45), Tuint16_t(748), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45),
Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(47), Tuint16_t(47), Tuint16_t(752), Tuint16_t(752), Tuint16_t(752), Tuint16_t(703), Tuint16_t(704), Tuint16_t(703), Tuint16_t(704), Tuint16_t(703), Tuint16_t(704), Tuint16_t(703), Tuint16_t(704),
Tuint16_t(703), Tuint16_t(704), Tuint16_t(703), Tuint16_t(704), Tuint16_t(703), Tuint16_t(704), Tuint16_t(58), Tuint16_t(58), Tuint16_t(58), Tuint16_t(58), Tuint16_t(58), Tuint16_t(58), Tuint16_t(58), Tuint16_t(58), Tuint16_t(58), Tuint16_t(58),
// block 77
Tuint16_t(58), Tuint16_t(58), Tuint16_t(58), Tuint16_t(58), Tuint16_t(58), Tuint16_t(58), Tuint16_t(58), Tuint16_t(58), Tuint16_t(58), Tuint16_t(58), Tuint16_t(58), Tuint16_t(58), Tuint16_t(58), Tuint16_t(58), Tuint16_t(58), Tuint16_t(58),
Tuint16_t(58), Tuint16_t(58), Tuint16_t(58), Tuint16_t(58), Tuint16_t(45), Tuint16_t(748), Tuint16_t(748), Tuint16_t(748), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45),
Tuint16_t(45), Tuint16_t(47), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45),
Tuint16_t(748), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(748),
Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(744), Tuint16_t(744), Tuint16_t(746), Tuint16_t(747), Tuint16_t(50), Tuint16_t(744), Tuint16_t(744), Tuint16_t(50), Tuint16_t(744), Tuint16_t(50), Tuint16_t(744), Tuint16_t(50), Tuint16_t(50),
Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(744), Tuint16_t(744), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(744), Tuint16_t(744), Tuint16_t(744), Tuint16_t(50),
Tuint16_t(50), Tuint16_t(50), Tuint16_t(744), Tuint16_t(744), Tuint16_t(744), Tuint16_t(744), Tuint16_t(746), Tuint16_t(747), Tuint16_t(746), Tuint16_t(747), Tuint16_t(746), Tuint16_t(747), Tuint16_t(746), Tuint16_t(747), Tuint16_t(746), Tuint16_t(747),
Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50),
// block 78
Tuint16_t(763), Tuint16_t(763), Tuint16_t(763), Tuint16_t(763), Tuint16_t(763), Tuint16_t(763), Tuint16_t(763), Tuint16_t(763), Tuint16_t(763), Tuint16_t(763), Tuint16_t(763), Tuint16_t(763), Tuint16_t(763), Tuint16_t(763), Tuint16_t(763), Tuint16_t(763),
Tuint16_t(763), Tuint16_t(763), Tuint16_t(763), Tuint16_t(763), Tuint16_t(763), Tuint16_t(763), Tuint16_t(763), Tuint16_t(763), Tuint16_t(763), Tuint16_t(763), Tuint16_t(763), Tuint16_t(763), Tuint16_t(763), Tuint16_t(763), Tuint16_t(763), Tuint16_t(763),
Tuint16_t(763), Tuint16_t(763), Tuint16_t(763), Tuint16_t(763), Tuint16_t(763), Tuint16_t(763), Tuint16_t(763), Tuint16_t(763), Tuint16_t(763), Tuint16_t(763), Tuint16_t(763), Tuint16_t(763), Tuint16_t(763), Tuint16_t(763), Tuint16_t(763), Tuint16_t(763),
Tuint16_t(763), Tuint16_t(763), Tuint16_t(763), Tuint16_t(763), Tuint16_t(763), Tuint16_t(763), Tuint16_t(763), Tuint16_t(763), Tuint16_t(763), Tuint16_t(763), Tuint16_t(763), Tuint16_t(763), Tuint16_t(763), Tuint16_t(763), Tuint16_t(763), Tuint16_t(763),
Tuint16_t(763), Tuint16_t(763), Tuint16_t(763), Tuint16_t(763), Tuint16_t(763), Tuint16_t(763), Tuint16_t(763), Tuint16_t(763), Tuint16_t(763), Tuint16_t(763), Tuint16_t(763), Tuint16_t(763), Tuint16_t(763), Tuint16_t(763), Tuint16_t(763), Tuint16_t(763),
Tuint16_t(763), Tuint16_t(763), Tuint16_t(763), Tuint16_t(763), Tuint16_t(763), Tuint16_t(763), Tuint16_t(763), Tuint16_t(763), Tuint16_t(763), Tuint16_t(763), Tuint16_t(763), Tuint16_t(763), Tuint16_t(763), Tuint16_t(763), Tuint16_t(763), Tuint16_t(763),
Tuint16_t(763), Tuint16_t(763), Tuint16_t(763), Tuint16_t(763), Tuint16_t(763), Tuint16_t(763), Tuint16_t(763), Tuint16_t(763), Tuint16_t(763), Tuint16_t(763), Tuint16_t(763), Tuint16_t(763), Tuint16_t(763), Tuint16_t(763), Tuint16_t(763), Tuint16_t(763),
Tuint16_t(763), Tuint16_t(763), Tuint16_t(763), Tuint16_t(763), Tuint16_t(763), Tuint16_t(763), Tuint16_t(763), Tuint16_t(763), Tuint16_t(763), Tuint16_t(763), Tuint16_t(763), Tuint16_t(763), Tuint16_t(763), Tuint16_t(763), Tuint16_t(763), Tuint16_t(763),
// block 79
Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50),
Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50),
Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50),
Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(741), Tuint16_t(741), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50),
Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50),
Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50),
Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50),
Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50),
// block 80
Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(746), Tuint16_t(747), Tuint16_t(746), Tuint16_t(747), Tuint16_t(746), Tuint16_t(747), Tuint16_t(746), Tuint16_t(747), Tuint16_t(746), Tuint16_t(747), Tuint16_t(746), Tuint16_t(747), Tuint16_t(746),
Tuint16_t(747), Tuint16_t(746), Tuint16_t(747), Tuint16_t(746), Tuint16_t(747), Tuint16_t(746), Tuint16_t(747), Tuint16_t(746), Tuint16_t(747), Tuint16_t(50), Tuint16_t(50), Tuint16_t(744), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50),
Tuint16_t(744), Tuint16_t(50), Tuint16_t(50), Tuint16_t(744), Tuint16_t(744), Tuint16_t(744), Tuint16_t(50), Tuint16_t(50), Tuint16_t(744), Tuint16_t(744), Tuint16_t(744), Tuint16_t(744), Tuint16_t(744), Tuint16_t(744), Tuint16_t(744), Tuint16_t(744),
Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(744), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50),
Tuint16_t(744), Tuint16_t(744), Tuint16_t(50), Tuint16_t(50), Tuint16_t(744), Tuint16_t(744), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(744),
Tuint16_t(744), Tuint16_t(744), Tuint16_t(744), Tuint16_t(50), Tuint16_t(744), Tuint16_t(744), Tuint16_t(50), Tuint16_t(50), Tuint16_t(746), Tuint16_t(747), Tuint16_t(746), Tuint16_t(747), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50),
Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(744), Tuint16_t(744), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50),
Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(744), Tuint16_t(50), Tuint16_t(50), Tuint16_t(744), Tuint16_t(744), Tuint16_t(50), Tuint16_t(50), Tuint16_t(746), Tuint16_t(747), Tuint16_t(50), Tuint16_t(50),
// block 81
Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50),
Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50),
Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(744), Tuint16_t(744), Tuint16_t(744), Tuint16_t(744), Tuint16_t(50),
Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(744), Tuint16_t(744), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(744), Tuint16_t(744), Tuint16_t(50), Tuint16_t(50),
Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50),
Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50),
Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(744), Tuint16_t(744), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50),
Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(744), Tuint16_t(744), Tuint16_t(744), Tuint16_t(744), Tuint16_t(744), Tuint16_t(744), Tuint16_t(744),
// block 82
Tuint16_t(744), Tuint16_t(744), Tuint16_t(744), Tuint16_t(744), Tuint16_t(744), Tuint16_t(744), Tuint16_t(744), Tuint16_t(744), Tuint16_t(744), Tuint16_t(744), Tuint16_t(744), Tuint16_t(744), Tuint16_t(744), Tuint16_t(744), Tuint16_t(744), Tuint16_t(744),
Tuint16_t(744), Tuint16_t(744), Tuint16_t(744), Tuint16_t(744), Tuint16_t(744), Tuint16_t(744), Tuint16_t(744), Tuint16_t(744), Tuint16_t(744), Tuint16_t(744), Tuint16_t(744), Tuint16_t(744), Tuint16_t(744), Tuint16_t(744), Tuint16_t(744), Tuint16_t(744),
Tuint16_t(744), Tuint16_t(744), Tuint16_t(744), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(744), Tuint16_t(744), Tuint16_t(744), Tuint16_t(744), Tuint16_t(744), Tuint16_t(744), Tuint16_t(744), Tuint16_t(744), Tuint16_t(50), Tuint16_t(744),
Tuint16_t(744), Tuint16_t(744), Tuint16_t(744), Tuint16_t(744), Tuint16_t(744), Tuint16_t(744), Tuint16_t(744), Tuint16_t(744), Tuint16_t(744), Tuint16_t(744), Tuint16_t(744), Tuint16_t(744), Tuint16_t(744), Tuint16_t(744), Tuint16_t(744), Tuint16_t(744),
Tuint16_t(744), Tuint16_t(744), Tuint16_t(744), Tuint16_t(744), Tuint16_t(744), Tuint16_t(744), Tuint16_t(744), Tuint16_t(744), Tuint16_t(744), Tuint16_t(744), Tuint16_t(744), Tuint16_t(744), Tuint16_t(744), Tuint16_t(744), Tuint16_t(744), Tuint16_t(744),
Tuint16_t(744), Tuint16_t(744), Tuint16_t(744), Tuint16_t(744), Tuint16_t(744), Tuint16_t(744), Tuint16_t(744), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(744), Tuint16_t(50),
Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(744), Tuint16_t(744), Tuint16_t(744), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(744), Tuint16_t(744), Tuint16_t(744), Tuint16_t(50),
Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(744), Tuint16_t(744), Tuint16_t(744), Tuint16_t(744), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50),
// block 83
Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(47), Tuint16_t(47), Tuint16_t(47), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45),
Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(748), Tuint16_t(748), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45),
Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45),
Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50),
Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(45), Tuint16_t(45), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(50), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45),
Tuint16_t(748), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(748), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45),
Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45),
Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(753), Tuint16_t(753), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45),
// block 84
Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45),
Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(753), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45),
Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45),
Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45),
Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45),
Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45),
Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45),
Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(45), Tuint16_t(764), Tuint16_t(45),
// block 85
Tuint16_t(765), Tuint16_t(765), Tuint16_t(765), Tuint16_t(765), Tuint16_t(765), Tuint16_t(765), Tuint16_t(765), Tuint16_t(765), Tuint16_t(765), Tuint16_t(765), Tuint16_t(765), Tuint16_t(765), Tuint16_t(765), Tuint16_t(765), Tuint16_t(765), Tuint16_t(765),
Tuint16_t(765), Tuint16_t(765), Tuint16_t(765), Tuint16_t(765), Tuint16_t(765), Tuint16_t(765), Tuint16_t(765), Tuint16_t(765), Tuint16_t(765), Tuint16_t(765), Tuint16_t(765), Tuint16_t(765), Tuint16_t(765), Tuint16_t(765), Tuint16_t(765), Tuint16_t(765),
Tuint16_t(765), Tuint16_t(765), Tuint16_t(765), Tuint16_t(765), Tuint16_t(765), Tuint16_t(765), Tuint16_t(765), Tuint16_t(765), Tuint16_t(765), Tuint16_t(765), Tuint16_t(765), Tuint16_t(765), Tuint16_t(765), Tuint16_t(765), Tuint16_t(765), Tuint16_t(765),
Tuint16_t(766), Tuint16_t(766), Tuint16_t(766), Tuint16_t(766), Tuint16_t(766), Tuint16_t(766), Tuint16_t(766), Tuint16_t(766), Tuint16_t(766), Tuint16_t(766), Tuint16_t(766), Tuint16_t(766), Tuint16_t(766), Tuint16_t(766), Tuint16_t(766), Tuint16_t(766),
Tuint16_t(766), Tuint16_t(766), Tuint16_t(766), Tuint16_t(766), Tuint16_t(766), Tuint16_t(766), Tuint16_t(766), Tuint16_t(766), Tuint16_t(766), Tuint16_t(766), Tuint16_t(766), Tuint16_t(766), Tuint16_t(766), Tuint16_t(766), Tuint16_t(766), Tuint16_t(766),
Tuint16_t(766), Tuint16_t(766), Tuint16_t(766), Tuint16_t(766), Tuint16_t(766), Tuint16_t(766), Tuint16_t(766), Tuint16_t(766), Tuint16_t(766), Tuint16_t(766), Tuint16_t(766), Tuint16_t(766), Tuint16_t(766), Tuint16_t(766), Tuint16_t(766), Tuint16_t(766),
Tuint16_t(65), Tuint16_t(66), Tuint16_t(767), Tuint16_t(768), Tuint16_t(769), Tuint16_t(770), Tuint16_t(771), Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66), Tuint16_t(772), Tuint16_t(773), Tuint16_t(774),
Tuint16_t(775), Tuint16_t(70), Tuint16_t(65), Tuint16_t(66), Tuint16_t(70), Tuint16_t(65), Tuint16_t(66), Tuint16_t(70), Tuint16_t(70), Tuint16_t(70), Tuint16_t(70), Tuint16_t(70), Tuint16_t(645), Tuint16_t(644), Tuint16_t(776), Tuint16_t(776),
// block 86
Tuint16_t(211), Tuint16_t(212), Tuint16_t(211), Tuint16_t(212), Tuint16_t(211), Tuint16_t(212), Tuint16_t(211), Tuint16_t(212), Tuint16_t(211), Tuint16_t(212), Tuint16_t(211), Tuint16_t(212), Tuint16_t(211), Tuint16_t(212), Tuint16_t(211), Tuint16_t(212),
Tuint16_t(211), Tuint16_t(212), Tuint16_t(211), Tuint16_t(212), Tuint16_t(211), Tuint16_t(212), Tuint16_t(211), Tuint16_t(212), Tuint16_t(211), Tuint16_t(212), Tuint16_t(211), Tuint16_t(212), Tuint16_t(211), Tuint16_t(212), Tuint16_t(211), Tuint16_t(212),
Tuint16_t(211), Tuint16_t(212), Tuint16_t(211), Tuint16_t(212), Tuint16_t(211), Tuint16_t(212), Tuint16_t(211), Tuint16_t(212), Tuint16_t(211), Tuint16_t(212), Tuint16_t(211), Tuint16_t(212), Tuint16_t(211), Tuint16_t(212), Tuint16_t(211), Tuint16_t(212),
Tuint16_t(211), Tuint16_t(212), Tuint16_t(211), Tuint16_t(212), Tuint16_t(211), Tuint16_t(212), Tuint16_t(211), Tuint16_t(212), Tuint16_t(211), Tuint16_t(212), Tuint16_t(211), Tuint16_t(212), Tuint16_t(211), Tuint16_t(212), Tuint16_t(211), Tuint16_t(212),
Tuint16_t(211), Tuint16_t(212), Tuint16_t(211), Tuint16_t(212), Tuint16_t(211), Tuint16_t(212), Tuint16_t(211), Tuint16_t(212), Tuint16_t(211), Tuint16_t(212), Tuint16_t(211), Tuint16_t(212), Tuint16_t(211), Tuint16_t(212), Tuint16_t(211), Tuint16_t(212),
Tuint16_t(211), Tuint16_t(212), Tuint16_t(211), Tuint16_t(212), Tuint16_t(211), Tuint16_t(212), Tuint16_t(211), Tuint16_t(212), Tuint16_t(211), Tuint16_t(212), Tuint16_t(211), Tuint16_t(212), Tuint16_t(211), Tuint16_t(212), Tuint16_t(211), Tuint16_t(212),
Tuint16_t(211), Tuint16_t(212), Tuint16_t(211), Tuint16_t(212), Tuint16_t(777), Tuint16_t(778), Tuint16_t(778), Tuint16_t(778), Tuint16_t(778), Tuint16_t(778), Tuint16_t(778), Tuint16_t(211), Tuint16_t(212), Tuint16_t(211), Tuint16_t(212), Tuint16_t(779),
Tuint16_t(779), Tuint16_t(779), Tuint16_t(211), Tuint16_t(212), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(780), Tuint16_t(780), Tuint16_t(780), Tuint16_t(780), Tuint16_t(781), Tuint16_t(780), Tuint16_t(780),
// block 87
Tuint16_t(782), Tuint16_t(782), Tuint16_t(782), Tuint16_t(782), Tuint16_t(782), Tuint16_t(782), Tuint16_t(782), Tuint16_t(782), Tuint16_t(782), Tuint16_t(782), Tuint16_t(782), Tuint16_t(782), Tuint16_t(782), Tuint16_t(782), Tuint16_t(782), Tuint16_t(782),
Tuint16_t(782), Tuint16_t(782), Tuint16_t(782), Tuint16_t(782), Tuint16_t(782), Tuint16_t(782), Tuint16_t(782), Tuint16_t(782), Tuint16_t(782), Tuint16_t(782), Tuint16_t(782), Tuint16_t(782), Tuint16_t(782), Tuint16_t(782), Tuint16_t(782), Tuint16_t(782),
Tuint16_t(782), Tuint16_t(782), Tuint16_t(782), Tuint16_t(782), Tuint16_t(782), Tuint16_t(782), Tuint16_t(163), Tuint16_t(782), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(782), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(783), Tuint16_t(783), Tuint16_t(783), Tuint16_t(783), Tuint16_t(783), Tuint16_t(783), Tuint16_t(783), Tuint16_t(783), Tuint16_t(783), Tuint16_t(783), Tuint16_t(783), Tuint16_t(783), Tuint16_t(783), Tuint16_t(783), Tuint16_t(783), Tuint16_t(783),
Tuint16_t(783), Tuint16_t(783), Tuint16_t(783), Tuint16_t(783), Tuint16_t(783), Tuint16_t(783), Tuint16_t(783), Tuint16_t(783), Tuint16_t(783), Tuint16_t(783), Tuint16_t(783), Tuint16_t(783), Tuint16_t(783), Tuint16_t(783), Tuint16_t(783), Tuint16_t(783),
Tuint16_t(783), Tuint16_t(783), Tuint16_t(783), Tuint16_t(783), Tuint16_t(783), Tuint16_t(783), Tuint16_t(783), Tuint16_t(783), Tuint16_t(783), Tuint16_t(783), Tuint16_t(783), Tuint16_t(783), Tuint16_t(783), Tuint16_t(783), Tuint16_t(783), Tuint16_t(783),
Tuint16_t(783), Tuint16_t(783), Tuint16_t(783), Tuint16_t(783), Tuint16_t(783), Tuint16_t(783), Tuint16_t(783), Tuint16_t(783), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(784),
Tuint16_t(785), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(786),
// block 88
Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483),
Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(163), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(163),
Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(163), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(163),
Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(163), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(163),
Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(163), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(163),
Tuint16_t(787), Tuint16_t(787), Tuint16_t(787), Tuint16_t(787), Tuint16_t(787), Tuint16_t(787), Tuint16_t(787), Tuint16_t(787), Tuint16_t(787), Tuint16_t(787), Tuint16_t(787), Tuint16_t(787), Tuint16_t(787), Tuint16_t(787), Tuint16_t(787), Tuint16_t(787),
Tuint16_t(787), Tuint16_t(787), Tuint16_t(787), Tuint16_t(787), Tuint16_t(787), Tuint16_t(787), Tuint16_t(787), Tuint16_t(787), Tuint16_t(787), Tuint16_t(787), Tuint16_t(787), Tuint16_t(787), Tuint16_t(787), Tuint16_t(787), Tuint16_t(787), Tuint16_t(787),
// block 89
Tuint16_t(43), Tuint16_t(43), Tuint16_t(788), Tuint16_t(789), Tuint16_t(788), Tuint16_t(789), Tuint16_t(43), Tuint16_t(43), Tuint16_t(43), Tuint16_t(788), Tuint16_t(789), Tuint16_t(43), Tuint16_t(788), Tuint16_t(789), Tuint16_t(43), Tuint16_t(43),
Tuint16_t(43), Tuint16_t(43), Tuint16_t(43), Tuint16_t(43), Tuint16_t(43), Tuint16_t(43), Tuint16_t(43), Tuint16_t(680), Tuint16_t(43), Tuint16_t(43), Tuint16_t(680), Tuint16_t(43), Tuint16_t(788), Tuint16_t(789), Tuint16_t(43), Tuint16_t(43),
Tuint16_t(788), Tuint16_t(789), Tuint16_t(703), Tuint16_t(704), Tuint16_t(703), Tuint16_t(704), Tuint16_t(703), Tuint16_t(704), Tuint16_t(703), Tuint16_t(704), Tuint16_t(43), Tuint16_t(43), Tuint16_t(43), Tuint16_t(43), Tuint16_t(699), Tuint16_t(790),
Tuint16_t(43), Tuint16_t(43), Tuint16_t(43), Tuint16_t(43), Tuint16_t(43), Tuint16_t(43), Tuint16_t(43), Tuint16_t(43), Tuint16_t(43), Tuint16_t(43), Tuint16_t(680), Tuint16_t(680), Tuint16_t(699), Tuint16_t(43), Tuint16_t(43), Tuint16_t(43),
Tuint16_t(680), Tuint16_t(791), Tuint16_t(684), Tuint16_t(792), Tuint16_t(43), Tuint16_t(43), Tuint16_t(43), Tuint16_t(43), Tuint16_t(43), Tuint16_t(43), Tuint16_t(43), Tuint16_t(43), Tuint16_t(791), Tuint16_t(43), Tuint16_t(791), Tuint16_t(791),
Tuint16_t(45), Tuint16_t(45), Tuint16_t(43), Tuint16_t(699), Tuint16_t(699), Tuint16_t(703), Tuint16_t(704), Tuint16_t(703), Tuint16_t(704), Tuint16_t(703), Tuint16_t(704), Tuint16_t(703), Tuint16_t(704), Tuint16_t(680), Tuint16_t(753), Tuint16_t(753),
Tuint16_t(753), Tuint16_t(753), Tuint16_t(753), Tuint16_t(753), Tuint16_t(753), Tuint16_t(753), Tuint16_t(753), Tuint16_t(753), Tuint16_t(753), Tuint16_t(753), Tuint16_t(753), Tuint16_t(753), Tuint16_t(753), Tuint16_t(753), Tuint16_t(753), Tuint16_t(753),
Tuint16_t(753), Tuint16_t(753), Tuint16_t(753), Tuint16_t(753), Tuint16_t(753), Tuint16_t(753), Tuint16_t(753), Tuint16_t(753), Tuint16_t(753), Tuint16_t(753), Tuint16_t(753), Tuint16_t(753), Tuint16_t(753), Tuint16_t(753), Tuint16_t(753), Tuint16_t(753),
// block 90
Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793),
Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(163), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793),
Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793),
Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793),
Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793),
Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793),
Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793),
Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
// block 91
Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793),
Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793),
Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793),
Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793),
Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793),
Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793),
Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793),
Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793),
// block 92
Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793),
Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793),
Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793),
Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793),
Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793),
Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(793), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(794), Tuint16_t(794), Tuint16_t(795), Tuint16_t(795), Tuint16_t(794), Tuint16_t(794), Tuint16_t(794), Tuint16_t(794), Tuint16_t(794), Tuint16_t(794), Tuint16_t(794), Tuint16_t(794), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
// block 93
Tuint16_t(675), Tuint16_t(796), Tuint16_t(797), Tuint16_t(798), Tuint16_t(723), Tuint16_t(799), Tuint16_t(800), Tuint16_t(801), Tuint16_t(802), Tuint16_t(803), Tuint16_t(802), Tuint16_t(803), Tuint16_t(804), Tuint16_t(805), Tuint16_t(804), Tuint16_t(805),
Tuint16_t(802), Tuint16_t(803), Tuint16_t(45), Tuint16_t(806), Tuint16_t(802), Tuint16_t(803), Tuint16_t(802), Tuint16_t(803), Tuint16_t(802), Tuint16_t(803), Tuint16_t(802), Tuint16_t(803), Tuint16_t(807), Tuint16_t(808), Tuint16_t(809), Tuint16_t(809),
Tuint16_t(45), Tuint16_t(801), Tuint16_t(801), Tuint16_t(801), Tuint16_t(801), Tuint16_t(801), Tuint16_t(801), Tuint16_t(801), Tuint16_t(801), Tuint16_t(801), Tuint16_t(810), Tuint16_t(810), Tuint16_t(810), Tuint16_t(810), Tuint16_t(811), Tuint16_t(811),
Tuint16_t(812), Tuint16_t(813), Tuint16_t(813), Tuint16_t(813), Tuint16_t(813), Tuint16_t(813), Tuint16_t(723), Tuint16_t(814), Tuint16_t(801), Tuint16_t(801), Tuint16_t(801), Tuint16_t(815), Tuint16_t(816), Tuint16_t(817), Tuint16_t(818), Tuint16_t(818),
Tuint16_t(163), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819),
Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819),
Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819),
Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819),
// block 94
Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819),
Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(163), Tuint16_t(163), Tuint16_t(820), Tuint16_t(820), Tuint16_t(821), Tuint16_t(821), Tuint16_t(822), Tuint16_t(822), Tuint16_t(819),
Tuint16_t(823), Tuint16_t(824), Tuint16_t(824), Tuint16_t(824), Tuint16_t(824), Tuint16_t(824), Tuint16_t(824), Tuint16_t(824), Tuint16_t(824), Tuint16_t(824), Tuint16_t(824), Tuint16_t(824), Tuint16_t(824), Tuint16_t(824), Tuint16_t(824), Tuint16_t(824),
Tuint16_t(824), Tuint16_t(824), Tuint16_t(824), Tuint16_t(824), Tuint16_t(824), Tuint16_t(824), Tuint16_t(824), Tuint16_t(824), Tuint16_t(824), Tuint16_t(824), Tuint16_t(824), Tuint16_t(824), Tuint16_t(824), Tuint16_t(824), Tuint16_t(824), Tuint16_t(824),
Tuint16_t(824), Tuint16_t(824), Tuint16_t(824), Tuint16_t(824), Tuint16_t(824), Tuint16_t(824), Tuint16_t(824), Tuint16_t(824), Tuint16_t(824), Tuint16_t(824), Tuint16_t(824), Tuint16_t(824), Tuint16_t(824), Tuint16_t(824), Tuint16_t(824), Tuint16_t(824),
Tuint16_t(824), Tuint16_t(824), Tuint16_t(824), Tuint16_t(824), Tuint16_t(824), Tuint16_t(824), Tuint16_t(824), Tuint16_t(824), Tuint16_t(824), Tuint16_t(824), Tuint16_t(824), Tuint16_t(824), Tuint16_t(824), Tuint16_t(824), Tuint16_t(824), Tuint16_t(824),
Tuint16_t(824), Tuint16_t(824), Tuint16_t(824), Tuint16_t(824), Tuint16_t(824), Tuint16_t(824), Tuint16_t(824), Tuint16_t(824), Tuint16_t(824), Tuint16_t(824), Tuint16_t(824), Tuint16_t(824), Tuint16_t(824), Tuint16_t(824), Tuint16_t(824), Tuint16_t(824),
Tuint16_t(824), Tuint16_t(824), Tuint16_t(824), Tuint16_t(824), Tuint16_t(824), Tuint16_t(824), Tuint16_t(824), Tuint16_t(824), Tuint16_t(824), Tuint16_t(824), Tuint16_t(824), Tuint16_t(825), Tuint16_t(826), Tuint16_t(827), Tuint16_t(827), Tuint16_t(824),
// block 95
Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(828), Tuint16_t(828), Tuint16_t(828), Tuint16_t(828), Tuint16_t(828), Tuint16_t(828), Tuint16_t(828), Tuint16_t(828), Tuint16_t(828), Tuint16_t(828), Tuint16_t(828),
Tuint16_t(828), Tuint16_t(828), Tuint16_t(828), Tuint16_t(828), Tuint16_t(828), Tuint16_t(828), Tuint16_t(828), Tuint16_t(828), Tuint16_t(828), Tuint16_t(828), Tuint16_t(828), Tuint16_t(828), Tuint16_t(828), Tuint16_t(828), Tuint16_t(828), Tuint16_t(828),
Tuint16_t(828), Tuint16_t(828), Tuint16_t(828), Tuint16_t(828), Tuint16_t(828), Tuint16_t(828), Tuint16_t(828), Tuint16_t(828), Tuint16_t(828), Tuint16_t(828), Tuint16_t(828), Tuint16_t(828), Tuint16_t(828), Tuint16_t(828), Tuint16_t(828), Tuint16_t(828),
Tuint16_t(163), Tuint16_t(829), Tuint16_t(829), Tuint16_t(829), Tuint16_t(829), Tuint16_t(829), Tuint16_t(829), Tuint16_t(829), Tuint16_t(829), Tuint16_t(829), Tuint16_t(829), Tuint16_t(829), Tuint16_t(829), Tuint16_t(829), Tuint16_t(829), Tuint16_t(829),
Tuint16_t(829), Tuint16_t(829), Tuint16_t(829), Tuint16_t(829), Tuint16_t(829), Tuint16_t(829), Tuint16_t(829), Tuint16_t(829), Tuint16_t(829), Tuint16_t(829), Tuint16_t(829), Tuint16_t(829), Tuint16_t(829), Tuint16_t(829), Tuint16_t(829), Tuint16_t(829),
Tuint16_t(829), Tuint16_t(829), Tuint16_t(829), Tuint16_t(829), Tuint16_t(829), Tuint16_t(829), Tuint16_t(829), Tuint16_t(829), Tuint16_t(829), Tuint16_t(829), Tuint16_t(829), Tuint16_t(829), Tuint16_t(829), Tuint16_t(829), Tuint16_t(829), Tuint16_t(829),
Tuint16_t(829), Tuint16_t(829), Tuint16_t(829), Tuint16_t(829), Tuint16_t(830), Tuint16_t(829), Tuint16_t(829), Tuint16_t(829), Tuint16_t(829), Tuint16_t(829), Tuint16_t(829), Tuint16_t(829), Tuint16_t(829), Tuint16_t(829), Tuint16_t(829), Tuint16_t(829),
Tuint16_t(829), Tuint16_t(829), Tuint16_t(829), Tuint16_t(829), Tuint16_t(829), Tuint16_t(829), Tuint16_t(829), Tuint16_t(829), Tuint16_t(829), Tuint16_t(829), Tuint16_t(829), Tuint16_t(829), Tuint16_t(829), Tuint16_t(829), Tuint16_t(829), Tuint16_t(829),
// block 96
Tuint16_t(829), Tuint16_t(829), Tuint16_t(829), Tuint16_t(829), Tuint16_t(829), Tuint16_t(829), Tuint16_t(829), Tuint16_t(829), Tuint16_t(829), Tuint16_t(829), Tuint16_t(829), Tuint16_t(829), Tuint16_t(829), Tuint16_t(829), Tuint16_t(829), Tuint16_t(163),
Tuint16_t(831), Tuint16_t(831), Tuint16_t(832), Tuint16_t(832), Tuint16_t(832), Tuint16_t(832), Tuint16_t(831), Tuint16_t(831), Tuint16_t(831), Tuint16_t(831), Tuint16_t(831), Tuint16_t(831), Tuint16_t(831), Tuint16_t(831), Tuint16_t(831), Tuint16_t(831),
Tuint16_t(828), Tuint16_t(828), Tuint16_t(828), Tuint16_t(828), Tuint16_t(828), Tuint16_t(828), Tuint16_t(828), Tuint16_t(828), Tuint16_t(828), Tuint16_t(828), Tuint16_t(828), Tuint16_t(828), Tuint16_t(828), Tuint16_t(828), Tuint16_t(828), Tuint16_t(828),
Tuint16_t(828), Tuint16_t(828), Tuint16_t(828), Tuint16_t(828), Tuint16_t(828), Tuint16_t(828), Tuint16_t(828), Tuint16_t(828), Tuint16_t(828), Tuint16_t(828), Tuint16_t(828), Tuint16_t(828), Tuint16_t(828), Tuint16_t(828), Tuint16_t(828), Tuint16_t(828),
Tuint16_t(818), Tuint16_t(818), Tuint16_t(818), Tuint16_t(818), Tuint16_t(818), Tuint16_t(818), Tuint16_t(818), Tuint16_t(818), Tuint16_t(818), Tuint16_t(818), Tuint16_t(818), Tuint16_t(818), Tuint16_t(818), Tuint16_t(818), Tuint16_t(818), Tuint16_t(818),
Tuint16_t(818), Tuint16_t(818), Tuint16_t(818), Tuint16_t(818), Tuint16_t(818), Tuint16_t(818), Tuint16_t(818), Tuint16_t(818), Tuint16_t(818), Tuint16_t(818), Tuint16_t(818), Tuint16_t(818), Tuint16_t(818), Tuint16_t(818), Tuint16_t(818), Tuint16_t(818),
Tuint16_t(818), Tuint16_t(818), Tuint16_t(818), Tuint16_t(818), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(824), Tuint16_t(824), Tuint16_t(824), Tuint16_t(824), Tuint16_t(824), Tuint16_t(824), Tuint16_t(824), Tuint16_t(824), Tuint16_t(824), Tuint16_t(824), Tuint16_t(824), Tuint16_t(824), Tuint16_t(824), Tuint16_t(824), Tuint16_t(824), Tuint16_t(824),
// block 97
Tuint16_t(833), Tuint16_t(833), Tuint16_t(833), Tuint16_t(833), Tuint16_t(833), Tuint16_t(833), Tuint16_t(833), Tuint16_t(833), Tuint16_t(833), Tuint16_t(833), Tuint16_t(833), Tuint16_t(833), Tuint16_t(833), Tuint16_t(833), Tuint16_t(833), Tuint16_t(833),
Tuint16_t(833), Tuint16_t(833), Tuint16_t(833), Tuint16_t(833), Tuint16_t(833), Tuint16_t(833), Tuint16_t(833), Tuint16_t(833), Tuint16_t(833), Tuint16_t(833), Tuint16_t(833), Tuint16_t(833), Tuint16_t(833), Tuint16_t(834), Tuint16_t(834), Tuint16_t(163),
Tuint16_t(832), Tuint16_t(832), Tuint16_t(832), Tuint16_t(832), Tuint16_t(832), Tuint16_t(832), Tuint16_t(832), Tuint16_t(832), Tuint16_t(832), Tuint16_t(832), Tuint16_t(831), Tuint16_t(831), Tuint16_t(831), Tuint16_t(831), Tuint16_t(831), Tuint16_t(831),
Tuint16_t(831), Tuint16_t(831), Tuint16_t(831), Tuint16_t(831), Tuint16_t(831), Tuint16_t(831), Tuint16_t(831), Tuint16_t(831), Tuint16_t(831), Tuint16_t(831), Tuint16_t(831), Tuint16_t(831), Tuint16_t(831), Tuint16_t(831), Tuint16_t(831), Tuint16_t(831),
Tuint16_t(831), Tuint16_t(831), Tuint16_t(831), Tuint16_t(831), Tuint16_t(831), Tuint16_t(831), Tuint16_t(831), Tuint16_t(831), Tuint16_t(835), Tuint16_t(835), Tuint16_t(835), Tuint16_t(835), Tuint16_t(835), Tuint16_t(835), Tuint16_t(835), Tuint16_t(835),
Tuint16_t(723), Tuint16_t(58), Tuint16_t(58), Tuint16_t(58), Tuint16_t(58), Tuint16_t(58), Tuint16_t(58), Tuint16_t(58), Tuint16_t(58), Tuint16_t(58), Tuint16_t(58), Tuint16_t(58), Tuint16_t(58), Tuint16_t(58), Tuint16_t(58), Tuint16_t(58),
Tuint16_t(833), Tuint16_t(833), Tuint16_t(833), Tuint16_t(833), Tuint16_t(833), Tuint16_t(833), Tuint16_t(833), Tuint16_t(833), Tuint16_t(833), Tuint16_t(833), Tuint16_t(833), Tuint16_t(833), Tuint16_t(833), Tuint16_t(833), Tuint16_t(833), Tuint16_t(833),
Tuint16_t(833), Tuint16_t(833), Tuint16_t(833), Tuint16_t(833), Tuint16_t(833), Tuint16_t(833), Tuint16_t(833), Tuint16_t(833), Tuint16_t(833), Tuint16_t(833), Tuint16_t(833), Tuint16_t(833), Tuint16_t(834), Tuint16_t(834), Tuint16_t(834), Tuint16_t(460),
// block 98
Tuint16_t(832), Tuint16_t(832), Tuint16_t(832), Tuint16_t(832), Tuint16_t(832), Tuint16_t(832), Tuint16_t(832), Tuint16_t(832), Tuint16_t(832), Tuint16_t(832), Tuint16_t(831), Tuint16_t(831), Tuint16_t(831), Tuint16_t(831), Tuint16_t(831), Tuint16_t(831),
Tuint16_t(831), Tuint16_t(831), Tuint16_t(831), Tuint16_t(831), Tuint16_t(831), Tuint16_t(831), Tuint16_t(831), Tuint16_t(836), Tuint16_t(831), Tuint16_t(836), Tuint16_t(831), Tuint16_t(831), Tuint16_t(831), Tuint16_t(831), Tuint16_t(831), Tuint16_t(831),
Tuint16_t(831), Tuint16_t(831), Tuint16_t(831), Tuint16_t(831), Tuint16_t(831), Tuint16_t(831), Tuint16_t(831), Tuint16_t(831), Tuint16_t(831), Tuint16_t(831), Tuint16_t(831), Tuint16_t(831), Tuint16_t(831), Tuint16_t(831), Tuint16_t(831), Tuint16_t(831),
Tuint16_t(831), Tuint16_t(58), Tuint16_t(58), Tuint16_t(58), Tuint16_t(58), Tuint16_t(58), Tuint16_t(58), Tuint16_t(58), Tuint16_t(58), Tuint16_t(58), Tuint16_t(58), Tuint16_t(58), Tuint16_t(58), Tuint16_t(58), Tuint16_t(58), Tuint16_t(58),
Tuint16_t(831), Tuint16_t(831), Tuint16_t(831), Tuint16_t(831), Tuint16_t(831), Tuint16_t(831), Tuint16_t(831), Tuint16_t(831), Tuint16_t(831), Tuint16_t(831), Tuint16_t(831), Tuint16_t(831), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723),
Tuint16_t(837), Tuint16_t(837), Tuint16_t(837), Tuint16_t(837), Tuint16_t(837), Tuint16_t(837), Tuint16_t(837), Tuint16_t(837), Tuint16_t(837), Tuint16_t(837), Tuint16_t(837), Tuint16_t(837), Tuint16_t(837), Tuint16_t(837), Tuint16_t(837), Tuint16_t(837),
Tuint16_t(837), Tuint16_t(837), Tuint16_t(837), Tuint16_t(837), Tuint16_t(837), Tuint16_t(837), Tuint16_t(837), Tuint16_t(837), Tuint16_t(837), Tuint16_t(837), Tuint16_t(837), Tuint16_t(837), Tuint16_t(837), Tuint16_t(837), Tuint16_t(837), Tuint16_t(837),
Tuint16_t(837), Tuint16_t(837), Tuint16_t(837), Tuint16_t(837), Tuint16_t(837), Tuint16_t(837), Tuint16_t(837), Tuint16_t(837), Tuint16_t(837), Tuint16_t(837), Tuint16_t(837), Tuint16_t(837), Tuint16_t(837), Tuint16_t(837), Tuint16_t(837), Tuint16_t(831),
// block 99
Tuint16_t(837), Tuint16_t(837), Tuint16_t(837), Tuint16_t(837), Tuint16_t(837), Tuint16_t(837), Tuint16_t(837), Tuint16_t(837), Tuint16_t(837), Tuint16_t(837), Tuint16_t(837), Tuint16_t(837), Tuint16_t(837), Tuint16_t(837), Tuint16_t(837), Tuint16_t(837),
Tuint16_t(837), Tuint16_t(837), Tuint16_t(837), Tuint16_t(837), Tuint16_t(837), Tuint16_t(837), Tuint16_t(837), Tuint16_t(837), Tuint16_t(837), Tuint16_t(837), Tuint16_t(837), Tuint16_t(837), Tuint16_t(837), Tuint16_t(837), Tuint16_t(837), Tuint16_t(837),
Tuint16_t(837), Tuint16_t(837), Tuint16_t(837), Tuint16_t(837), Tuint16_t(837), Tuint16_t(837), Tuint16_t(837), Tuint16_t(837), Tuint16_t(837), Tuint16_t(837), Tuint16_t(837), Tuint16_t(837), Tuint16_t(837), Tuint16_t(837), Tuint16_t(837), Tuint16_t(837),
Tuint16_t(837), Tuint16_t(837), Tuint16_t(837), Tuint16_t(837), Tuint16_t(837), Tuint16_t(837), Tuint16_t(837), Tuint16_t(837), Tuint16_t(837), Tuint16_t(837), Tuint16_t(837), Tuint16_t(837), Tuint16_t(837), Tuint16_t(837), Tuint16_t(837), Tuint16_t(837),
Tuint16_t(837), Tuint16_t(837), Tuint16_t(837), Tuint16_t(837), Tuint16_t(837), Tuint16_t(837), Tuint16_t(837), Tuint16_t(837), Tuint16_t(837), Tuint16_t(837), Tuint16_t(837), Tuint16_t(837), Tuint16_t(837), Tuint16_t(837), Tuint16_t(837), Tuint16_t(837),
Tuint16_t(837), Tuint16_t(837), Tuint16_t(837), Tuint16_t(837), Tuint16_t(837), Tuint16_t(837), Tuint16_t(837), Tuint16_t(837), Tuint16_t(831), Tuint16_t(831), Tuint16_t(831), Tuint16_t(831), Tuint16_t(831), Tuint16_t(831), Tuint16_t(831), Tuint16_t(831),
Tuint16_t(831), Tuint16_t(831), Tuint16_t(831), Tuint16_t(831), Tuint16_t(831), Tuint16_t(831), Tuint16_t(831), Tuint16_t(831), Tuint16_t(831), Tuint16_t(831), Tuint16_t(831), Tuint16_t(831), Tuint16_t(831), Tuint16_t(831), Tuint16_t(831), Tuint16_t(831),
Tuint16_t(831), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(831), Tuint16_t(831), Tuint16_t(831), Tuint16_t(831), Tuint16_t(831),
// block 100
Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460),
Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460),
Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460),
Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460),
Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460),
Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(723), Tuint16_t(723),
Tuint16_t(831), Tuint16_t(831), Tuint16_t(831), Tuint16_t(831), Tuint16_t(831), Tuint16_t(831), Tuint16_t(831), Tuint16_t(831), Tuint16_t(831), Tuint16_t(831), Tuint16_t(831), Tuint16_t(831), Tuint16_t(831), Tuint16_t(831), Tuint16_t(831), Tuint16_t(831),
Tuint16_t(831), Tuint16_t(831), Tuint16_t(831), Tuint16_t(831), Tuint16_t(831), Tuint16_t(831), Tuint16_t(831), Tuint16_t(831), Tuint16_t(831), Tuint16_t(831), Tuint16_t(831), Tuint16_t(831), Tuint16_t(831), Tuint16_t(831), Tuint16_t(831), Tuint16_t(723),
// block 101
Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838),
Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838),
Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838),
Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838),
Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838),
Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838),
Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838),
Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838),
// block 102
Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838),
Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838),
Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838),
Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838),
Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723),
Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723),
Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723),
Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723),
// block 103
Tuint16_t(839), Tuint16_t(839), Tuint16_t(839), Tuint16_t(839), Tuint16_t(839), Tuint16_t(839), Tuint16_t(839), Tuint16_t(839), Tuint16_t(839), Tuint16_t(839), Tuint16_t(839), Tuint16_t(839), Tuint16_t(839), Tuint16_t(839), Tuint16_t(839), Tuint16_t(839),
Tuint16_t(839), Tuint16_t(839), Tuint16_t(839), Tuint16_t(839), Tuint16_t(839), Tuint16_t(840), Tuint16_t(839), Tuint16_t(839), Tuint16_t(839), Tuint16_t(839), Tuint16_t(839), Tuint16_t(839), Tuint16_t(839), Tuint16_t(839), Tuint16_t(839), Tuint16_t(839),
Tuint16_t(839), Tuint16_t(839), Tuint16_t(839), Tuint16_t(839), Tuint16_t(839), Tuint16_t(839), Tuint16_t(839), Tuint16_t(839), Tuint16_t(839), Tuint16_t(839), Tuint16_t(839), Tuint16_t(839), Tuint16_t(839), Tuint16_t(839), Tuint16_t(839), Tuint16_t(839),
Tuint16_t(839), Tuint16_t(839), Tuint16_t(839), Tuint16_t(839), Tuint16_t(839), Tuint16_t(839), Tuint16_t(839), Tuint16_t(839), Tuint16_t(839), Tuint16_t(839), Tuint16_t(839), Tuint16_t(839), Tuint16_t(839), Tuint16_t(839), Tuint16_t(839), Tuint16_t(839),
Tuint16_t(839), Tuint16_t(839), Tuint16_t(839), Tuint16_t(839), Tuint16_t(839), Tuint16_t(839), Tuint16_t(839), Tuint16_t(839), Tuint16_t(839), Tuint16_t(839), Tuint16_t(839), Tuint16_t(839), Tuint16_t(839), Tuint16_t(839), Tuint16_t(839), Tuint16_t(839),
Tuint16_t(839), Tuint16_t(839), Tuint16_t(839), Tuint16_t(839), Tuint16_t(839), Tuint16_t(839), Tuint16_t(839), Tuint16_t(839), Tuint16_t(839), Tuint16_t(839), Tuint16_t(839), Tuint16_t(839), Tuint16_t(839), Tuint16_t(839), Tuint16_t(839), Tuint16_t(839),
Tuint16_t(839), Tuint16_t(839), Tuint16_t(839), Tuint16_t(839), Tuint16_t(839), Tuint16_t(839), Tuint16_t(839), Tuint16_t(839), Tuint16_t(839), Tuint16_t(839), Tuint16_t(839), Tuint16_t(839), Tuint16_t(839), Tuint16_t(839), Tuint16_t(839), Tuint16_t(839),
Tuint16_t(839), Tuint16_t(839), Tuint16_t(839), Tuint16_t(839), Tuint16_t(839), Tuint16_t(839), Tuint16_t(839), Tuint16_t(839), Tuint16_t(839), Tuint16_t(839), Tuint16_t(839), Tuint16_t(839), Tuint16_t(839), Tuint16_t(839), Tuint16_t(839), Tuint16_t(839),
// block 104
Tuint16_t(839), Tuint16_t(839), Tuint16_t(839), Tuint16_t(839), Tuint16_t(839), Tuint16_t(839), Tuint16_t(839), Tuint16_t(839), Tuint16_t(839), Tuint16_t(839), Tuint16_t(839), Tuint16_t(839), Tuint16_t(839), Tuint16_t(839), Tuint16_t(839), Tuint16_t(839),
Tuint16_t(839), Tuint16_t(839), Tuint16_t(839), Tuint16_t(839), Tuint16_t(839), Tuint16_t(839), Tuint16_t(839), Tuint16_t(839), Tuint16_t(839), Tuint16_t(839), Tuint16_t(839), Tuint16_t(839), Tuint16_t(839), Tuint16_t(839), Tuint16_t(839), Tuint16_t(839),
Tuint16_t(839), Tuint16_t(839), Tuint16_t(839), Tuint16_t(839), Tuint16_t(839), Tuint16_t(839), Tuint16_t(839), Tuint16_t(839), Tuint16_t(839), Tuint16_t(839), Tuint16_t(839), Tuint16_t(839), Tuint16_t(839), Tuint16_t(839), Tuint16_t(839), Tuint16_t(839),
Tuint16_t(839), Tuint16_t(839), Tuint16_t(839), Tuint16_t(839), Tuint16_t(839), Tuint16_t(839), Tuint16_t(839), Tuint16_t(839), Tuint16_t(839), Tuint16_t(839), Tuint16_t(839), Tuint16_t(839), Tuint16_t(839), Tuint16_t(839), Tuint16_t(839), Tuint16_t(839),
Tuint16_t(839), Tuint16_t(839), Tuint16_t(839), Tuint16_t(839), Tuint16_t(839), Tuint16_t(839), Tuint16_t(839), Tuint16_t(839), Tuint16_t(839), Tuint16_t(839), Tuint16_t(839), Tuint16_t(839), Tuint16_t(839), Tuint16_t(839), Tuint16_t(839), Tuint16_t(839),
Tuint16_t(839), Tuint16_t(839), Tuint16_t(839), Tuint16_t(839), Tuint16_t(839), Tuint16_t(839), Tuint16_t(839), Tuint16_t(839), Tuint16_t(839), Tuint16_t(839), Tuint16_t(839), Tuint16_t(839), Tuint16_t(839), Tuint16_t(839), Tuint16_t(839), Tuint16_t(839),
Tuint16_t(839), Tuint16_t(839), Tuint16_t(839), Tuint16_t(839), Tuint16_t(839), Tuint16_t(839), Tuint16_t(839), Tuint16_t(839), Tuint16_t(839), Tuint16_t(839), Tuint16_t(839), Tuint16_t(839), Tuint16_t(839), Tuint16_t(839), Tuint16_t(839), Tuint16_t(839),
Tuint16_t(839), Tuint16_t(839), Tuint16_t(839), Tuint16_t(839), Tuint16_t(839), Tuint16_t(839), Tuint16_t(839), Tuint16_t(839), Tuint16_t(839), Tuint16_t(839), Tuint16_t(839), Tuint16_t(839), Tuint16_t(839), Tuint16_t(839), Tuint16_t(839), Tuint16_t(839),
// block 105
Tuint16_t(839), Tuint16_t(839), Tuint16_t(839), Tuint16_t(839), Tuint16_t(839), Tuint16_t(839), Tuint16_t(839), Tuint16_t(839), Tuint16_t(839), Tuint16_t(839), Tuint16_t(839), Tuint16_t(839), Tuint16_t(839), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(841), Tuint16_t(841), Tuint16_t(841), Tuint16_t(841), Tuint16_t(841), Tuint16_t(841), Tuint16_t(841), Tuint16_t(841), Tuint16_t(841), Tuint16_t(841), Tuint16_t(841), Tuint16_t(841), Tuint16_t(841), Tuint16_t(841), Tuint16_t(841), Tuint16_t(841),
Tuint16_t(841), Tuint16_t(841), Tuint16_t(841), Tuint16_t(841), Tuint16_t(841), Tuint16_t(841), Tuint16_t(841), Tuint16_t(841), Tuint16_t(841), Tuint16_t(841), Tuint16_t(841), Tuint16_t(841), Tuint16_t(841), Tuint16_t(841), Tuint16_t(841), Tuint16_t(841),
Tuint16_t(841), Tuint16_t(841), Tuint16_t(841), Tuint16_t(841), Tuint16_t(841), Tuint16_t(841), Tuint16_t(841), Tuint16_t(841), Tuint16_t(841), Tuint16_t(841), Tuint16_t(841), Tuint16_t(841), Tuint16_t(841), Tuint16_t(841), Tuint16_t(841), Tuint16_t(841),
Tuint16_t(841), Tuint16_t(841), Tuint16_t(841), Tuint16_t(841), Tuint16_t(841), Tuint16_t(841), Tuint16_t(841), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(842), Tuint16_t(842), Tuint16_t(842), Tuint16_t(842), Tuint16_t(842), Tuint16_t(842), Tuint16_t(842), Tuint16_t(842), Tuint16_t(842), Tuint16_t(842), Tuint16_t(842), Tuint16_t(842), Tuint16_t(842), Tuint16_t(842), Tuint16_t(842), Tuint16_t(842),
Tuint16_t(842), Tuint16_t(842), Tuint16_t(842), Tuint16_t(842), Tuint16_t(842), Tuint16_t(842), Tuint16_t(842), Tuint16_t(842), Tuint16_t(842), Tuint16_t(842), Tuint16_t(842), Tuint16_t(842), Tuint16_t(842), Tuint16_t(842), Tuint16_t(842), Tuint16_t(842),
Tuint16_t(842), Tuint16_t(842), Tuint16_t(842), Tuint16_t(842), Tuint16_t(842), Tuint16_t(842), Tuint16_t(842), Tuint16_t(842), Tuint16_t(843), Tuint16_t(843), Tuint16_t(843), Tuint16_t(843), Tuint16_t(843), Tuint16_t(843), Tuint16_t(844), Tuint16_t(845),
// block 106
Tuint16_t(846), Tuint16_t(846), Tuint16_t(846), Tuint16_t(846), Tuint16_t(846), Tuint16_t(846), Tuint16_t(846), Tuint16_t(846), Tuint16_t(846), Tuint16_t(846), Tuint16_t(846), Tuint16_t(846), Tuint16_t(846), Tuint16_t(846), Tuint16_t(846), Tuint16_t(846),
Tuint16_t(846), Tuint16_t(846), Tuint16_t(846), Tuint16_t(846), Tuint16_t(846), Tuint16_t(846), Tuint16_t(846), Tuint16_t(846), Tuint16_t(846), Tuint16_t(846), Tuint16_t(846), Tuint16_t(846), Tuint16_t(846), Tuint16_t(846), Tuint16_t(846), Tuint16_t(846),
Tuint16_t(846), Tuint16_t(846), Tuint16_t(846), Tuint16_t(846), Tuint16_t(846), Tuint16_t(846), Tuint16_t(846), Tuint16_t(846), Tuint16_t(846), Tuint16_t(846), Tuint16_t(846), Tuint16_t(846), Tuint16_t(846), Tuint16_t(846), Tuint16_t(846), Tuint16_t(846),
Tuint16_t(846), Tuint16_t(846), Tuint16_t(846), Tuint16_t(846), Tuint16_t(846), Tuint16_t(846), Tuint16_t(846), Tuint16_t(846), Tuint16_t(846), Tuint16_t(846), Tuint16_t(846), Tuint16_t(846), Tuint16_t(846), Tuint16_t(846), Tuint16_t(846), Tuint16_t(846),
Tuint16_t(846), Tuint16_t(846), Tuint16_t(846), Tuint16_t(846), Tuint16_t(846), Tuint16_t(846), Tuint16_t(846), Tuint16_t(846), Tuint16_t(846), Tuint16_t(846), Tuint16_t(846), Tuint16_t(846), Tuint16_t(846), Tuint16_t(846), Tuint16_t(846), Tuint16_t(846),
Tuint16_t(846), Tuint16_t(846), Tuint16_t(846), Tuint16_t(846), Tuint16_t(846), Tuint16_t(846), Tuint16_t(846), Tuint16_t(846), Tuint16_t(846), Tuint16_t(846), Tuint16_t(846), Tuint16_t(846), Tuint16_t(846), Tuint16_t(846), Tuint16_t(846), Tuint16_t(846),
Tuint16_t(846), Tuint16_t(846), Tuint16_t(846), Tuint16_t(846), Tuint16_t(846), Tuint16_t(846), Tuint16_t(846), Tuint16_t(846), Tuint16_t(846), Tuint16_t(846), Tuint16_t(846), Tuint16_t(846), Tuint16_t(846), Tuint16_t(846), Tuint16_t(846), Tuint16_t(846),
Tuint16_t(846), Tuint16_t(846), Tuint16_t(846), Tuint16_t(846), Tuint16_t(846), Tuint16_t(846), Tuint16_t(846), Tuint16_t(846), Tuint16_t(846), Tuint16_t(846), Tuint16_t(846), Tuint16_t(846), Tuint16_t(846), Tuint16_t(846), Tuint16_t(846), Tuint16_t(846),
// block 107
Tuint16_t(846), Tuint16_t(846), Tuint16_t(846), Tuint16_t(846), Tuint16_t(846), Tuint16_t(846), Tuint16_t(846), Tuint16_t(846), Tuint16_t(846), Tuint16_t(846), Tuint16_t(846), Tuint16_t(846), Tuint16_t(847), Tuint16_t(848), Tuint16_t(849), Tuint16_t(849),
Tuint16_t(846), Tuint16_t(846), Tuint16_t(846), Tuint16_t(846), Tuint16_t(846), Tuint16_t(846), Tuint16_t(846), Tuint16_t(846), Tuint16_t(846), Tuint16_t(846), Tuint16_t(846), Tuint16_t(846), Tuint16_t(846), Tuint16_t(846), Tuint16_t(846), Tuint16_t(846),
Tuint16_t(850), Tuint16_t(850), Tuint16_t(850), Tuint16_t(850), Tuint16_t(850), Tuint16_t(850), Tuint16_t(850), Tuint16_t(850), Tuint16_t(850), Tuint16_t(850), Tuint16_t(846), Tuint16_t(846), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(240), Tuint16_t(241), Tuint16_t(240), Tuint16_t(241), Tuint16_t(240), Tuint16_t(241), Tuint16_t(240), Tuint16_t(241), Tuint16_t(240), Tuint16_t(241), Tuint16_t(851), Tuint16_t(852), Tuint16_t(240), Tuint16_t(241), Tuint16_t(240), Tuint16_t(241),
Tuint16_t(240), Tuint16_t(241), Tuint16_t(240), Tuint16_t(241), Tuint16_t(240), Tuint16_t(241), Tuint16_t(240), Tuint16_t(241), Tuint16_t(240), Tuint16_t(241), Tuint16_t(240), Tuint16_t(241), Tuint16_t(240), Tuint16_t(241), Tuint16_t(240), Tuint16_t(241),
Tuint16_t(240), Tuint16_t(241), Tuint16_t(240), Tuint16_t(241), Tuint16_t(240), Tuint16_t(241), Tuint16_t(240), Tuint16_t(241), Tuint16_t(240), Tuint16_t(241), Tuint16_t(240), Tuint16_t(241), Tuint16_t(240), Tuint16_t(241), Tuint16_t(853), Tuint16_t(246),
Tuint16_t(248), Tuint16_t(248), Tuint16_t(248), Tuint16_t(854), Tuint16_t(787), Tuint16_t(787), Tuint16_t(787), Tuint16_t(787), Tuint16_t(787), Tuint16_t(787), Tuint16_t(787), Tuint16_t(787), Tuint16_t(855), Tuint16_t(855), Tuint16_t(854), Tuint16_t(856),
// block 108
Tuint16_t(240), Tuint16_t(241), Tuint16_t(240), Tuint16_t(241), Tuint16_t(240), Tuint16_t(241), Tuint16_t(240), Tuint16_t(241), Tuint16_t(240), Tuint16_t(241), Tuint16_t(240), Tuint16_t(241), Tuint16_t(240), Tuint16_t(241), Tuint16_t(240), Tuint16_t(241),
Tuint16_t(240), Tuint16_t(241), Tuint16_t(240), Tuint16_t(241), Tuint16_t(240), Tuint16_t(241), Tuint16_t(240), Tuint16_t(241), Tuint16_t(240), Tuint16_t(241), Tuint16_t(240), Tuint16_t(241), Tuint16_t(857), Tuint16_t(857), Tuint16_t(787), Tuint16_t(787),
Tuint16_t(858), Tuint16_t(858), Tuint16_t(858), Tuint16_t(858), Tuint16_t(858), Tuint16_t(858), Tuint16_t(858), Tuint16_t(858), Tuint16_t(858), Tuint16_t(858), Tuint16_t(858), Tuint16_t(858), Tuint16_t(858), Tuint16_t(858), Tuint16_t(858), Tuint16_t(858),
Tuint16_t(858), Tuint16_t(858), Tuint16_t(858), Tuint16_t(858), Tuint16_t(858), Tuint16_t(858), Tuint16_t(858), Tuint16_t(858), Tuint16_t(858), Tuint16_t(858), Tuint16_t(858), Tuint16_t(858), Tuint16_t(858), Tuint16_t(858), Tuint16_t(858), Tuint16_t(858),
Tuint16_t(858), Tuint16_t(858), Tuint16_t(858), Tuint16_t(858), Tuint16_t(858), Tuint16_t(858), Tuint16_t(858), Tuint16_t(858), Tuint16_t(858), Tuint16_t(858), Tuint16_t(858), Tuint16_t(858), Tuint16_t(858), Tuint16_t(858), Tuint16_t(858), Tuint16_t(858),
Tuint16_t(858), Tuint16_t(858), Tuint16_t(858), Tuint16_t(858), Tuint16_t(858), Tuint16_t(858), Tuint16_t(858), Tuint16_t(858), Tuint16_t(858), Tuint16_t(858), Tuint16_t(858), Tuint16_t(858), Tuint16_t(858), Tuint16_t(858), Tuint16_t(858), Tuint16_t(858),
Tuint16_t(858), Tuint16_t(858), Tuint16_t(858), Tuint16_t(858), Tuint16_t(858), Tuint16_t(858), Tuint16_t(859), Tuint16_t(859), Tuint16_t(859), Tuint16_t(859), Tuint16_t(859), Tuint16_t(859), Tuint16_t(859), Tuint16_t(859), Tuint16_t(859), Tuint16_t(859),
Tuint16_t(860), Tuint16_t(860), Tuint16_t(861), Tuint16_t(862), Tuint16_t(863), Tuint16_t(863), Tuint16_t(863), Tuint16_t(862), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
// block 109
Tuint16_t(864), Tuint16_t(864), Tuint16_t(864), Tuint16_t(864), Tuint16_t(864), Tuint16_t(864), Tuint16_t(864), Tuint16_t(864), Tuint16_t(46), Tuint16_t(46), Tuint16_t(46), Tuint16_t(46), Tuint16_t(46), Tuint16_t(46), Tuint16_t(46), Tuint16_t(46),
Tuint16_t(46), Tuint16_t(46), Tuint16_t(46), Tuint16_t(46), Tuint16_t(46), Tuint16_t(46), Tuint16_t(46), Tuint16_t(149), Tuint16_t(149), Tuint16_t(149), Tuint16_t(149), Tuint16_t(149), Tuint16_t(149), Tuint16_t(149), Tuint16_t(149), Tuint16_t(149),
Tuint16_t(46), Tuint16_t(46), Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66),
Tuint16_t(70), Tuint16_t(70), Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66),
Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66),
Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66),
Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66),
Tuint16_t(644), Tuint16_t(70), Tuint16_t(70), Tuint16_t(70), Tuint16_t(70), Tuint16_t(70), Tuint16_t(70), Tuint16_t(70), Tuint16_t(70), Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66), Tuint16_t(865), Tuint16_t(65), Tuint16_t(66),
// block 110
Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66), Tuint16_t(149), Tuint16_t(866), Tuint16_t(866), Tuint16_t(65), Tuint16_t(66), Tuint16_t(867), Tuint16_t(70), Tuint16_t(92),
Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66), Tuint16_t(868), Tuint16_t(70), Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66),
Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66), Tuint16_t(869), Tuint16_t(870), Tuint16_t(871), Tuint16_t(872), Tuint16_t(869), Tuint16_t(70),
Tuint16_t(873), Tuint16_t(874), Tuint16_t(875), Tuint16_t(876), Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66),
Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66), Tuint16_t(877), Tuint16_t(878), Tuint16_t(879), Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(65), Tuint16_t(66), Tuint16_t(163), Tuint16_t(70), Tuint16_t(163), Tuint16_t(70), Tuint16_t(65), Tuint16_t(66), Tuint16_t(65), Tuint16_t(66), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(163), Tuint16_t(163), Tuint16_t(880), Tuint16_t(880), Tuint16_t(880), Tuint16_t(65), Tuint16_t(66), Tuint16_t(92), Tuint16_t(147), Tuint16_t(147), Tuint16_t(70), Tuint16_t(92), Tuint16_t(92), Tuint16_t(92), Tuint16_t(92), Tuint16_t(92),
// block 111
Tuint16_t(881), Tuint16_t(881), Tuint16_t(882), Tuint16_t(881), Tuint16_t(881), Tuint16_t(881), Tuint16_t(883), Tuint16_t(881), Tuint16_t(881), Tuint16_t(881), Tuint16_t(881), Tuint16_t(882), Tuint16_t(881), Tuint16_t(881), Tuint16_t(881), Tuint16_t(881),
Tuint16_t(881), Tuint16_t(881), Tuint16_t(881), Tuint16_t(881), Tuint16_t(881), Tuint16_t(881), Tuint16_t(881), Tuint16_t(881), Tuint16_t(881), Tuint16_t(881), Tuint16_t(881), Tuint16_t(881), Tuint16_t(881), Tuint16_t(881), Tuint16_t(881), Tuint16_t(881),
Tuint16_t(881), Tuint16_t(881), Tuint16_t(881), Tuint16_t(884), Tuint16_t(884), Tuint16_t(882), Tuint16_t(882), Tuint16_t(884), Tuint16_t(885), Tuint16_t(885), Tuint16_t(885), Tuint16_t(885), Tuint16_t(883), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(886), Tuint16_t(886), Tuint16_t(886), Tuint16_t(887), Tuint16_t(887), Tuint16_t(887), Tuint16_t(888), Tuint16_t(888), Tuint16_t(889), Tuint16_t(890), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(891), Tuint16_t(891), Tuint16_t(891), Tuint16_t(891), Tuint16_t(891), Tuint16_t(891), Tuint16_t(891), Tuint16_t(891), Tuint16_t(891), Tuint16_t(891), Tuint16_t(891), Tuint16_t(891), Tuint16_t(891), Tuint16_t(891), Tuint16_t(891), Tuint16_t(891),
Tuint16_t(891), Tuint16_t(891), Tuint16_t(891), Tuint16_t(891), Tuint16_t(891), Tuint16_t(891), Tuint16_t(891), Tuint16_t(891), Tuint16_t(891), Tuint16_t(891), Tuint16_t(891), Tuint16_t(891), Tuint16_t(891), Tuint16_t(891), Tuint16_t(891), Tuint16_t(891),
Tuint16_t(891), Tuint16_t(891), Tuint16_t(891), Tuint16_t(891), Tuint16_t(891), Tuint16_t(891), Tuint16_t(891), Tuint16_t(891), Tuint16_t(891), Tuint16_t(891), Tuint16_t(891), Tuint16_t(891), Tuint16_t(891), Tuint16_t(891), Tuint16_t(891), Tuint16_t(891),
Tuint16_t(891), Tuint16_t(891), Tuint16_t(891), Tuint16_t(891), Tuint16_t(892), Tuint16_t(892), Tuint16_t(893), Tuint16_t(893), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
// block 112
Tuint16_t(894), Tuint16_t(894), Tuint16_t(895), Tuint16_t(895), Tuint16_t(895), Tuint16_t(895), Tuint16_t(895), Tuint16_t(895), Tuint16_t(895), Tuint16_t(895), Tuint16_t(895), Tuint16_t(895), Tuint16_t(895), Tuint16_t(895), Tuint16_t(895), Tuint16_t(895),
Tuint16_t(895), Tuint16_t(895), Tuint16_t(895), Tuint16_t(895), Tuint16_t(895), Tuint16_t(895), Tuint16_t(895), Tuint16_t(895), Tuint16_t(895), Tuint16_t(895), Tuint16_t(895), Tuint16_t(895), Tuint16_t(895), Tuint16_t(895), Tuint16_t(895), Tuint16_t(895),
Tuint16_t(895), Tuint16_t(895), Tuint16_t(895), Tuint16_t(895), Tuint16_t(895), Tuint16_t(895), Tuint16_t(895), Tuint16_t(895), Tuint16_t(895), Tuint16_t(895), Tuint16_t(895), Tuint16_t(895), Tuint16_t(895), Tuint16_t(895), Tuint16_t(895), Tuint16_t(895),
Tuint16_t(895), Tuint16_t(895), Tuint16_t(895), Tuint16_t(895), Tuint16_t(894), Tuint16_t(894), Tuint16_t(894), Tuint16_t(894), Tuint16_t(894), Tuint16_t(894), Tuint16_t(894), Tuint16_t(894), Tuint16_t(894), Tuint16_t(894), Tuint16_t(894), Tuint16_t(894),
Tuint16_t(894), Tuint16_t(894), Tuint16_t(894), Tuint16_t(894), Tuint16_t(896), Tuint16_t(897), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(898), Tuint16_t(898),
Tuint16_t(899), Tuint16_t(899), Tuint16_t(899), Tuint16_t(899), Tuint16_t(899), Tuint16_t(899), Tuint16_t(899), Tuint16_t(899), Tuint16_t(899), Tuint16_t(899), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(336), Tuint16_t(336), Tuint16_t(336), Tuint16_t(336), Tuint16_t(336), Tuint16_t(336), Tuint16_t(336), Tuint16_t(336), Tuint16_t(336), Tuint16_t(336), Tuint16_t(336), Tuint16_t(336), Tuint16_t(336), Tuint16_t(336), Tuint16_t(336), Tuint16_t(336),
Tuint16_t(336), Tuint16_t(900), Tuint16_t(335), Tuint16_t(901), Tuint16_t(335), Tuint16_t(335), Tuint16_t(335), Tuint16_t(335), Tuint16_t(343), Tuint16_t(343), Tuint16_t(343), Tuint16_t(335), Tuint16_t(343), Tuint16_t(335), Tuint16_t(335), Tuint16_t(333),
// block 113
Tuint16_t(902), Tuint16_t(902), Tuint16_t(902), Tuint16_t(902), Tuint16_t(902), Tuint16_t(902), Tuint16_t(902), Tuint16_t(902), Tuint16_t(902), Tuint16_t(902), Tuint16_t(903), Tuint16_t(903), Tuint16_t(903), Tuint16_t(903), Tuint16_t(903), Tuint16_t(903),
Tuint16_t(903), Tuint16_t(903), Tuint16_t(903), Tuint16_t(903), Tuint16_t(903), Tuint16_t(903), Tuint16_t(903), Tuint16_t(903), Tuint16_t(903), Tuint16_t(903), Tuint16_t(903), Tuint16_t(903), Tuint16_t(903), Tuint16_t(903), Tuint16_t(903), Tuint16_t(903),
Tuint16_t(903), Tuint16_t(903), Tuint16_t(903), Tuint16_t(903), Tuint16_t(903), Tuint16_t(903), Tuint16_t(904), Tuint16_t(904), Tuint16_t(904), Tuint16_t(904), Tuint16_t(904), Tuint16_t(905), Tuint16_t(905), Tuint16_t(905), Tuint16_t(906), Tuint16_t(907),
Tuint16_t(908), Tuint16_t(908), Tuint16_t(908), Tuint16_t(908), Tuint16_t(908), Tuint16_t(908), Tuint16_t(908), Tuint16_t(908), Tuint16_t(908), Tuint16_t(908), Tuint16_t(908), Tuint16_t(908), Tuint16_t(908), Tuint16_t(908), Tuint16_t(908), Tuint16_t(908),
Tuint16_t(908), Tuint16_t(908), Tuint16_t(908), Tuint16_t(908), Tuint16_t(908), Tuint16_t(908), Tuint16_t(908), Tuint16_t(909), Tuint16_t(909), Tuint16_t(909), Tuint16_t(909), Tuint16_t(909), Tuint16_t(909), Tuint16_t(909), Tuint16_t(909), Tuint16_t(909),
Tuint16_t(909), Tuint16_t(909), Tuint16_t(910), Tuint16_t(911), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(912),
Tuint16_t(478), Tuint16_t(478), Tuint16_t(478), Tuint16_t(478), Tuint16_t(478), Tuint16_t(478), Tuint16_t(478), Tuint16_t(478), Tuint16_t(478), Tuint16_t(478), Tuint16_t(478), Tuint16_t(478), Tuint16_t(478), Tuint16_t(478), Tuint16_t(478), Tuint16_t(478),
Tuint16_t(478), Tuint16_t(478), Tuint16_t(478), Tuint16_t(478), Tuint16_t(478), Tuint16_t(478), Tuint16_t(478), Tuint16_t(478), Tuint16_t(478), Tuint16_t(478), Tuint16_t(478), Tuint16_t(478), Tuint16_t(478), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
// block 114
Tuint16_t(913), Tuint16_t(913), Tuint16_t(913), Tuint16_t(914), Tuint16_t(915), Tuint16_t(915), Tuint16_t(915), Tuint16_t(915), Tuint16_t(915), Tuint16_t(915), Tuint16_t(915), Tuint16_t(915), Tuint16_t(915), Tuint16_t(915), Tuint16_t(915), Tuint16_t(915),
Tuint16_t(915), Tuint16_t(915), Tuint16_t(915), Tuint16_t(915), Tuint16_t(915), Tuint16_t(915), Tuint16_t(915), Tuint16_t(915), Tuint16_t(915), Tuint16_t(915), Tuint16_t(915), Tuint16_t(915), Tuint16_t(915), Tuint16_t(915), Tuint16_t(915), Tuint16_t(915),
Tuint16_t(915), Tuint16_t(915), Tuint16_t(915), Tuint16_t(915), Tuint16_t(915), Tuint16_t(915), Tuint16_t(915), Tuint16_t(915), Tuint16_t(915), Tuint16_t(915), Tuint16_t(915), Tuint16_t(915), Tuint16_t(915), Tuint16_t(915), Tuint16_t(915), Tuint16_t(915),
Tuint16_t(915), Tuint16_t(915), Tuint16_t(915), Tuint16_t(916), Tuint16_t(914), Tuint16_t(914), Tuint16_t(913), Tuint16_t(913), Tuint16_t(913), Tuint16_t(913), Tuint16_t(914), Tuint16_t(914), Tuint16_t(913), Tuint16_t(913), Tuint16_t(914), Tuint16_t(914),
Tuint16_t(917), Tuint16_t(918), Tuint16_t(918), Tuint16_t(918), Tuint16_t(918), Tuint16_t(918), Tuint16_t(918), Tuint16_t(919), Tuint16_t(920), Tuint16_t(920), Tuint16_t(918), Tuint16_t(918), Tuint16_t(918), Tuint16_t(918), Tuint16_t(163), Tuint16_t(921),
Tuint16_t(922), Tuint16_t(922), Tuint16_t(922), Tuint16_t(922), Tuint16_t(922), Tuint16_t(922), Tuint16_t(922), Tuint16_t(922), Tuint16_t(922), Tuint16_t(922), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(918), Tuint16_t(918),
Tuint16_t(461), Tuint16_t(461), Tuint16_t(461), Tuint16_t(461), Tuint16_t(461), Tuint16_t(471), Tuint16_t(923), Tuint16_t(461), Tuint16_t(461), Tuint16_t(461), Tuint16_t(461), Tuint16_t(461), Tuint16_t(461), Tuint16_t(461), Tuint16_t(461), Tuint16_t(461),
Tuint16_t(472), Tuint16_t(472), Tuint16_t(472), Tuint16_t(472), Tuint16_t(472), Tuint16_t(472), Tuint16_t(472), Tuint16_t(472), Tuint16_t(472), Tuint16_t(472), Tuint16_t(461), Tuint16_t(461), Tuint16_t(461), Tuint16_t(461), Tuint16_t(461), Tuint16_t(163),
// block 115
Tuint16_t(924), Tuint16_t(924), Tuint16_t(924), Tuint16_t(924), Tuint16_t(924), Tuint16_t(924), Tuint16_t(924), Tuint16_t(924), Tuint16_t(924), Tuint16_t(924), Tuint16_t(924), Tuint16_t(924), Tuint16_t(924), Tuint16_t(924), Tuint16_t(924), Tuint16_t(924),
Tuint16_t(924), Tuint16_t(924), Tuint16_t(924), Tuint16_t(924), Tuint16_t(924), Tuint16_t(924), Tuint16_t(924), Tuint16_t(924), Tuint16_t(924), Tuint16_t(924), Tuint16_t(924), Tuint16_t(924), Tuint16_t(924), Tuint16_t(924), Tuint16_t(924), Tuint16_t(924),
Tuint16_t(924), Tuint16_t(924), Tuint16_t(924), Tuint16_t(924), Tuint16_t(924), Tuint16_t(924), Tuint16_t(924), Tuint16_t(924), Tuint16_t(924), Tuint16_t(925), Tuint16_t(925), Tuint16_t(925), Tuint16_t(925), Tuint16_t(925), Tuint16_t(925), Tuint16_t(926),
Tuint16_t(926), Tuint16_t(925), Tuint16_t(925), Tuint16_t(926), Tuint16_t(926), Tuint16_t(925), Tuint16_t(925), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(924), Tuint16_t(924), Tuint16_t(924), Tuint16_t(925), Tuint16_t(924), Tuint16_t(924), Tuint16_t(924), Tuint16_t(924), Tuint16_t(924), Tuint16_t(924), Tuint16_t(924), Tuint16_t(924), Tuint16_t(925), Tuint16_t(926), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(927), Tuint16_t(927), Tuint16_t(927), Tuint16_t(927), Tuint16_t(927), Tuint16_t(927), Tuint16_t(927), Tuint16_t(927), Tuint16_t(927), Tuint16_t(927), Tuint16_t(163), Tuint16_t(163), Tuint16_t(928), Tuint16_t(929), Tuint16_t(929), Tuint16_t(929),
Tuint16_t(461), Tuint16_t(461), Tuint16_t(461), Tuint16_t(461), Tuint16_t(461), Tuint16_t(461), Tuint16_t(461), Tuint16_t(461), Tuint16_t(461), Tuint16_t(461), Tuint16_t(461), Tuint16_t(461), Tuint16_t(461), Tuint16_t(461), Tuint16_t(461), Tuint16_t(461),
Tuint16_t(923), Tuint16_t(461), Tuint16_t(461), Tuint16_t(461), Tuint16_t(461), Tuint16_t(461), Tuint16_t(461), Tuint16_t(473), Tuint16_t(473), Tuint16_t(473), Tuint16_t(461), Tuint16_t(470), Tuint16_t(471), Tuint16_t(470), Tuint16_t(461), Tuint16_t(461),
// block 116
Tuint16_t(930), Tuint16_t(930), Tuint16_t(930), Tuint16_t(930), Tuint16_t(930), Tuint16_t(930), Tuint16_t(930), Tuint16_t(930), Tuint16_t(930), Tuint16_t(930), Tuint16_t(930), Tuint16_t(930), Tuint16_t(930), Tuint16_t(930), Tuint16_t(930), Tuint16_t(930),
Tuint16_t(930), Tuint16_t(930), Tuint16_t(930), Tuint16_t(930), Tuint16_t(930), Tuint16_t(930), Tuint16_t(930), Tuint16_t(930), Tuint16_t(930), Tuint16_t(930), Tuint16_t(930), Tuint16_t(930), Tuint16_t(930), Tuint16_t(930), Tuint16_t(930), Tuint16_t(930),
Tuint16_t(930), Tuint16_t(930), Tuint16_t(930), Tuint16_t(930), Tuint16_t(930), Tuint16_t(930), Tuint16_t(930), Tuint16_t(930), Tuint16_t(930), Tuint16_t(930), Tuint16_t(930), Tuint16_t(930), Tuint16_t(930), Tuint16_t(930), Tuint16_t(930), Tuint16_t(930),
Tuint16_t(931), Tuint16_t(930), Tuint16_t(931), Tuint16_t(931), Tuint16_t(931), Tuint16_t(932), Tuint16_t(932), Tuint16_t(931), Tuint16_t(931), Tuint16_t(932), Tuint16_t(930), Tuint16_t(932), Tuint16_t(932), Tuint16_t(930), Tuint16_t(931), Tuint16_t(933),
Tuint16_t(934), Tuint16_t(933), Tuint16_t(934), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(930), Tuint16_t(930), Tuint16_t(935), Tuint16_t(936), Tuint16_t(937),
Tuint16_t(938), Tuint16_t(938), Tuint16_t(938), Tuint16_t(938), Tuint16_t(938), Tuint16_t(938), Tuint16_t(938), Tuint16_t(938), Tuint16_t(938), Tuint16_t(938), Tuint16_t(938), Tuint16_t(939), Tuint16_t(940), Tuint16_t(940), Tuint16_t(939), Tuint16_t(939),
Tuint16_t(941), Tuint16_t(941), Tuint16_t(938), Tuint16_t(942), Tuint16_t(942), Tuint16_t(939), Tuint16_t(943), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
// block 117
Tuint16_t(163), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(163), Tuint16_t(163), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(163),
Tuint16_t(163), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(163), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(163),
Tuint16_t(70), Tuint16_t(70), Tuint16_t(70), Tuint16_t(70), Tuint16_t(70), Tuint16_t(70), Tuint16_t(70), Tuint16_t(70), Tuint16_t(70), Tuint16_t(70), Tuint16_t(70), Tuint16_t(70), Tuint16_t(70), Tuint16_t(70), Tuint16_t(70), Tuint16_t(70),
Tuint16_t(70), Tuint16_t(70), Tuint16_t(70), Tuint16_t(70), Tuint16_t(70), Tuint16_t(70), Tuint16_t(70), Tuint16_t(70), Tuint16_t(70), Tuint16_t(70), Tuint16_t(70), Tuint16_t(70), Tuint16_t(70), Tuint16_t(70), Tuint16_t(70), Tuint16_t(70),
Tuint16_t(70), Tuint16_t(70), Tuint16_t(70), Tuint16_t(944), Tuint16_t(70), Tuint16_t(70), Tuint16_t(70), Tuint16_t(70), Tuint16_t(70), Tuint16_t(70), Tuint16_t(70), Tuint16_t(866), Tuint16_t(147), Tuint16_t(147), Tuint16_t(147), Tuint16_t(147),
Tuint16_t(70), Tuint16_t(70), Tuint16_t(70), Tuint16_t(70), Tuint16_t(70), Tuint16_t(221), Tuint16_t(70), Tuint16_t(70), Tuint16_t(70), Tuint16_t(945), Tuint16_t(46), Tuint16_t(46), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(946), Tuint16_t(946), Tuint16_t(946), Tuint16_t(946), Tuint16_t(946), Tuint16_t(946), Tuint16_t(946), Tuint16_t(946), Tuint16_t(946), Tuint16_t(946), Tuint16_t(946), Tuint16_t(946), Tuint16_t(946), Tuint16_t(946), Tuint16_t(946), Tuint16_t(946),
// block 118
Tuint16_t(946), Tuint16_t(946), Tuint16_t(946), Tuint16_t(946), Tuint16_t(946), Tuint16_t(946), Tuint16_t(946), Tuint16_t(946), Tuint16_t(946), Tuint16_t(946), Tuint16_t(946), Tuint16_t(946), Tuint16_t(946), Tuint16_t(946), Tuint16_t(946), Tuint16_t(946),
Tuint16_t(946), Tuint16_t(946), Tuint16_t(946), Tuint16_t(946), Tuint16_t(946), Tuint16_t(946), Tuint16_t(946), Tuint16_t(946), Tuint16_t(946), Tuint16_t(946), Tuint16_t(946), Tuint16_t(946), Tuint16_t(946), Tuint16_t(946), Tuint16_t(946), Tuint16_t(946),
Tuint16_t(946), Tuint16_t(946), Tuint16_t(946), Tuint16_t(946), Tuint16_t(946), Tuint16_t(946), Tuint16_t(946), Tuint16_t(946), Tuint16_t(946), Tuint16_t(946), Tuint16_t(946), Tuint16_t(946), Tuint16_t(946), Tuint16_t(946), Tuint16_t(946), Tuint16_t(946),
Tuint16_t(946), Tuint16_t(946), Tuint16_t(946), Tuint16_t(946), Tuint16_t(946), Tuint16_t(946), Tuint16_t(946), Tuint16_t(946), Tuint16_t(946), Tuint16_t(946), Tuint16_t(946), Tuint16_t(946), Tuint16_t(946), Tuint16_t(946), Tuint16_t(946), Tuint16_t(946),
Tuint16_t(938), Tuint16_t(938), Tuint16_t(938), Tuint16_t(938), Tuint16_t(938), Tuint16_t(938), Tuint16_t(938), Tuint16_t(938), Tuint16_t(938), Tuint16_t(938), Tuint16_t(938), Tuint16_t(938), Tuint16_t(938), Tuint16_t(938), Tuint16_t(938), Tuint16_t(938),
Tuint16_t(938), Tuint16_t(938), Tuint16_t(938), Tuint16_t(938), Tuint16_t(938), Tuint16_t(938), Tuint16_t(938), Tuint16_t(938), Tuint16_t(938), Tuint16_t(938), Tuint16_t(938), Tuint16_t(938), Tuint16_t(938), Tuint16_t(938), Tuint16_t(938), Tuint16_t(938),
Tuint16_t(938), Tuint16_t(938), Tuint16_t(938), Tuint16_t(939), Tuint16_t(939), Tuint16_t(940), Tuint16_t(939), Tuint16_t(939), Tuint16_t(940), Tuint16_t(939), Tuint16_t(939), Tuint16_t(941), Tuint16_t(947), Tuint16_t(943), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(948), Tuint16_t(948), Tuint16_t(948), Tuint16_t(948), Tuint16_t(948), Tuint16_t(948), Tuint16_t(948), Tuint16_t(948), Tuint16_t(948), Tuint16_t(948), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
// block 119
Tuint16_t(949), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950),
Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(949), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950),
Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950),
Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(949), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950),
Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950),
Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(949), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950),
Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950),
Tuint16_t(949), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950),
// block 120
Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(949), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950),
Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950),
Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(949), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950),
Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950),
Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(949), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950),
Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950),
Tuint16_t(949), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950),
Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(949), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950),
// block 121
Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950),
Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(949), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950),
Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950),
Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(949), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950),
Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950),
Tuint16_t(949), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950),
Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(949), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950),
Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950),
// block 122
Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(949), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950),
Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950),
Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(949), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950),
Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950),
Tuint16_t(949), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950),
Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(949), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950),
Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950),
Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(949), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950),
// block 123
Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950),
Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(949), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950),
Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950),
Tuint16_t(949), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950),
Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(949), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950),
Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950),
Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(949), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950),
Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950),
// block 124
Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(949), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950),
Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950),
Tuint16_t(949), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950),
Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(949), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950),
Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950),
Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(949), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950),
Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950),
Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(949), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950),
// block 125
Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950),
Tuint16_t(949), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950),
Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(949), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950),
Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950),
Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(949), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950),
Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950),
Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(949), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950),
Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950),
// block 126
Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(949), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950),
Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950),
Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(950), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(481), Tuint16_t(481), Tuint16_t(481), Tuint16_t(481), Tuint16_t(481), Tuint16_t(481), Tuint16_t(481), Tuint16_t(481), Tuint16_t(481), Tuint16_t(481), Tuint16_t(481), Tuint16_t(481), Tuint16_t(481), Tuint16_t(481), Tuint16_t(481), Tuint16_t(481),
Tuint16_t(481), Tuint16_t(481), Tuint16_t(481), Tuint16_t(481), Tuint16_t(481), Tuint16_t(481), Tuint16_t(481), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(482), Tuint16_t(482), Tuint16_t(482), Tuint16_t(482), Tuint16_t(482),
Tuint16_t(482), Tuint16_t(482), Tuint16_t(482), Tuint16_t(482), Tuint16_t(482), Tuint16_t(482), Tuint16_t(482), Tuint16_t(482), Tuint16_t(482), Tuint16_t(482), Tuint16_t(482), Tuint16_t(482), Tuint16_t(482), Tuint16_t(482), Tuint16_t(482), Tuint16_t(482),
Tuint16_t(482), Tuint16_t(482), Tuint16_t(482), Tuint16_t(482), Tuint16_t(482), Tuint16_t(482), Tuint16_t(482), Tuint16_t(482), Tuint16_t(482), Tuint16_t(482), Tuint16_t(482), Tuint16_t(482), Tuint16_t(482), Tuint16_t(482), Tuint16_t(482), Tuint16_t(482),
Tuint16_t(482), Tuint16_t(482), Tuint16_t(482), Tuint16_t(482), Tuint16_t(482), Tuint16_t(482), Tuint16_t(482), Tuint16_t(482), Tuint16_t(482), Tuint16_t(482), Tuint16_t(482), Tuint16_t(482), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
// block 127
Tuint16_t(951), Tuint16_t(951), Tuint16_t(951), Tuint16_t(951), Tuint16_t(951), Tuint16_t(951), Tuint16_t(951), Tuint16_t(951), Tuint16_t(951), Tuint16_t(951), Tuint16_t(951), Tuint16_t(951), Tuint16_t(951), Tuint16_t(951), Tuint16_t(951), Tuint16_t(951),
Tuint16_t(951), Tuint16_t(951), Tuint16_t(951), Tuint16_t(951), Tuint16_t(951), Tuint16_t(951), Tuint16_t(951), Tuint16_t(951), Tuint16_t(951), Tuint16_t(951), Tuint16_t(951), Tuint16_t(951), Tuint16_t(951), Tuint16_t(951), Tuint16_t(951), Tuint16_t(951),
Tuint16_t(951), Tuint16_t(951), Tuint16_t(951), Tuint16_t(951), Tuint16_t(951), Tuint16_t(951), Tuint16_t(951), Tuint16_t(951), Tuint16_t(951), Tuint16_t(951), Tuint16_t(951), Tuint16_t(951), Tuint16_t(951), Tuint16_t(951), Tuint16_t(951), Tuint16_t(951),
Tuint16_t(951), Tuint16_t(951), Tuint16_t(951), Tuint16_t(951), Tuint16_t(951), Tuint16_t(951), Tuint16_t(951), Tuint16_t(951), Tuint16_t(951), Tuint16_t(951), Tuint16_t(951), Tuint16_t(951), Tuint16_t(951), Tuint16_t(951), Tuint16_t(951), Tuint16_t(951),
Tuint16_t(951), Tuint16_t(951), Tuint16_t(951), Tuint16_t(951), Tuint16_t(951), Tuint16_t(951), Tuint16_t(951), Tuint16_t(951), Tuint16_t(951), Tuint16_t(951), Tuint16_t(951), Tuint16_t(951), Tuint16_t(951), Tuint16_t(951), Tuint16_t(951), Tuint16_t(951),
Tuint16_t(951), Tuint16_t(951), Tuint16_t(951), Tuint16_t(951), Tuint16_t(951), Tuint16_t(951), Tuint16_t(951), Tuint16_t(951), Tuint16_t(951), Tuint16_t(951), Tuint16_t(951), Tuint16_t(951), Tuint16_t(951), Tuint16_t(951), Tuint16_t(951), Tuint16_t(951),
Tuint16_t(951), Tuint16_t(951), Tuint16_t(951), Tuint16_t(951), Tuint16_t(951), Tuint16_t(951), Tuint16_t(951), Tuint16_t(951), Tuint16_t(951), Tuint16_t(951), Tuint16_t(951), Tuint16_t(951), Tuint16_t(951), Tuint16_t(951), Tuint16_t(951), Tuint16_t(951),
Tuint16_t(951), Tuint16_t(951), Tuint16_t(951), Tuint16_t(951), Tuint16_t(951), Tuint16_t(951), Tuint16_t(951), Tuint16_t(951), Tuint16_t(951), Tuint16_t(951), Tuint16_t(951), Tuint16_t(951), Tuint16_t(951), Tuint16_t(951), Tuint16_t(951), Tuint16_t(951),
// block 128
Tuint16_t(952), Tuint16_t(952), Tuint16_t(952), Tuint16_t(952), Tuint16_t(952), Tuint16_t(952), Tuint16_t(952), Tuint16_t(952), Tuint16_t(952), Tuint16_t(952), Tuint16_t(952), Tuint16_t(952), Tuint16_t(952), Tuint16_t(952), Tuint16_t(952), Tuint16_t(952),
Tuint16_t(952), Tuint16_t(952), Tuint16_t(952), Tuint16_t(952), Tuint16_t(952), Tuint16_t(952), Tuint16_t(952), Tuint16_t(952), Tuint16_t(952), Tuint16_t(952), Tuint16_t(952), Tuint16_t(952), Tuint16_t(952), Tuint16_t(952), Tuint16_t(952), Tuint16_t(952),
Tuint16_t(952), Tuint16_t(952), Tuint16_t(952), Tuint16_t(952), Tuint16_t(952), Tuint16_t(952), Tuint16_t(952), Tuint16_t(952), Tuint16_t(952), Tuint16_t(952), Tuint16_t(952), Tuint16_t(952), Tuint16_t(952), Tuint16_t(952), Tuint16_t(952), Tuint16_t(952),
Tuint16_t(952), Tuint16_t(952), Tuint16_t(952), Tuint16_t(952), Tuint16_t(952), Tuint16_t(952), Tuint16_t(952), Tuint16_t(952), Tuint16_t(952), Tuint16_t(952), Tuint16_t(952), Tuint16_t(952), Tuint16_t(952), Tuint16_t(952), Tuint16_t(952), Tuint16_t(952),
Tuint16_t(952), Tuint16_t(952), Tuint16_t(952), Tuint16_t(952), Tuint16_t(952), Tuint16_t(952), Tuint16_t(952), Tuint16_t(952), Tuint16_t(952), Tuint16_t(952), Tuint16_t(952), Tuint16_t(952), Tuint16_t(952), Tuint16_t(952), Tuint16_t(952), Tuint16_t(952),
Tuint16_t(952), Tuint16_t(952), Tuint16_t(952), Tuint16_t(952), Tuint16_t(952), Tuint16_t(952), Tuint16_t(952), Tuint16_t(952), Tuint16_t(952), Tuint16_t(952), Tuint16_t(952), Tuint16_t(952), Tuint16_t(952), Tuint16_t(952), Tuint16_t(952), Tuint16_t(952),
Tuint16_t(952), Tuint16_t(952), Tuint16_t(952), Tuint16_t(952), Tuint16_t(952), Tuint16_t(952), Tuint16_t(952), Tuint16_t(952), Tuint16_t(952), Tuint16_t(952), Tuint16_t(952), Tuint16_t(952), Tuint16_t(952), Tuint16_t(952), Tuint16_t(952), Tuint16_t(952),
Tuint16_t(952), Tuint16_t(952), Tuint16_t(952), Tuint16_t(952), Tuint16_t(952), Tuint16_t(952), Tuint16_t(952), Tuint16_t(952), Tuint16_t(952), Tuint16_t(952), Tuint16_t(952), Tuint16_t(952), Tuint16_t(952), Tuint16_t(952), Tuint16_t(952), Tuint16_t(952),
// block 129
Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953),
Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953),
Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953),
Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953),
Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953),
Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953),
Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953),
Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953),
// block 130
Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(838), Tuint16_t(838),
Tuint16_t(953), Tuint16_t(838), Tuint16_t(953), Tuint16_t(838), Tuint16_t(838), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(838),
Tuint16_t(953), Tuint16_t(838), Tuint16_t(953), Tuint16_t(838), Tuint16_t(838), Tuint16_t(953), Tuint16_t(953), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953),
Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953),
Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953),
Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953),
Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953),
// block 131
Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953),
Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953),
Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953),
Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953),
Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953),
Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
// block 132
Tuint16_t(652), Tuint16_t(652), Tuint16_t(652), Tuint16_t(652), Tuint16_t(652), Tuint16_t(652), Tuint16_t(652), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(257), Tuint16_t(257), Tuint16_t(257), Tuint16_t(257), Tuint16_t(257), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(270), Tuint16_t(265), Tuint16_t(270),
Tuint16_t(270), Tuint16_t(270), Tuint16_t(270), Tuint16_t(270), Tuint16_t(270), Tuint16_t(270), Tuint16_t(270), Tuint16_t(270), Tuint16_t(270), Tuint16_t(954), Tuint16_t(270), Tuint16_t(270), Tuint16_t(270), Tuint16_t(270), Tuint16_t(270), Tuint16_t(270),
Tuint16_t(270), Tuint16_t(270), Tuint16_t(270), Tuint16_t(270), Tuint16_t(270), Tuint16_t(270), Tuint16_t(270), Tuint16_t(262), Tuint16_t(270), Tuint16_t(270), Tuint16_t(270), Tuint16_t(270), Tuint16_t(270), Tuint16_t(262), Tuint16_t(270), Tuint16_t(262),
Tuint16_t(270), Tuint16_t(270), Tuint16_t(262), Tuint16_t(270), Tuint16_t(270), Tuint16_t(262), Tuint16_t(270), Tuint16_t(270), Tuint16_t(270), Tuint16_t(270), Tuint16_t(270), Tuint16_t(270), Tuint16_t(270), Tuint16_t(270), Tuint16_t(270), Tuint16_t(270),
Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286),
Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286),
Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286),
// block 133
Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286),
Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286),
Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286),
Tuint16_t(286), Tuint16_t(286), Tuint16_t(331), Tuint16_t(331), Tuint16_t(331), Tuint16_t(331), Tuint16_t(331), Tuint16_t(331), Tuint16_t(331), Tuint16_t(331), Tuint16_t(331), Tuint16_t(331), Tuint16_t(331), Tuint16_t(331), Tuint16_t(331), Tuint16_t(331),
Tuint16_t(331), Tuint16_t(331), Tuint16_t(331), Tuint16_t(302), Tuint16_t(302), Tuint16_t(302), Tuint16_t(302), Tuint16_t(302), Tuint16_t(302), Tuint16_t(302), Tuint16_t(302), Tuint16_t(302), Tuint16_t(302), Tuint16_t(302), Tuint16_t(302), Tuint16_t(302),
Tuint16_t(302), Tuint16_t(302), Tuint16_t(302), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286),
Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286),
Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286),
// block 134
Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286),
Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286),
Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286),
Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286),
Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286),
Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(955), Tuint16_t(955),
Tuint16_t(955), Tuint16_t(955), Tuint16_t(955), Tuint16_t(955), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286),
Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286),
// block 135
Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286),
Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286),
Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286),
Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286),
Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286),
Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286),
Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286),
Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286),
// block 136
Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286),
Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286),
Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286),
Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(956), Tuint16_t(957),
Tuint16_t(280), Tuint16_t(280), Tuint16_t(280), Tuint16_t(280), Tuint16_t(280), Tuint16_t(280), Tuint16_t(280), Tuint16_t(280), Tuint16_t(280), Tuint16_t(280), Tuint16_t(280), Tuint16_t(280), Tuint16_t(280), Tuint16_t(280), Tuint16_t(280), Tuint16_t(280),
Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286),
Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286),
Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286),
// block 137
Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286),
Tuint16_t(302), Tuint16_t(302), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286),
Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286),
Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286),
Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(302), Tuint16_t(302), Tuint16_t(302), Tuint16_t(302), Tuint16_t(302), Tuint16_t(302), Tuint16_t(302), Tuint16_t(280),
Tuint16_t(958), Tuint16_t(958), Tuint16_t(958), Tuint16_t(958), Tuint16_t(958), Tuint16_t(958), Tuint16_t(958), Tuint16_t(958), Tuint16_t(958), Tuint16_t(958), Tuint16_t(958), Tuint16_t(958), Tuint16_t(958), Tuint16_t(958), Tuint16_t(958), Tuint16_t(958),
Tuint16_t(958), Tuint16_t(958), Tuint16_t(958), Tuint16_t(958), Tuint16_t(958), Tuint16_t(958), Tuint16_t(958), Tuint16_t(958), Tuint16_t(958), Tuint16_t(958), Tuint16_t(958), Tuint16_t(958), Tuint16_t(958), Tuint16_t(958), Tuint16_t(958), Tuint16_t(958),
Tuint16_t(286), Tuint16_t(286), Tuint16_t(959), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(955), Tuint16_t(955), Tuint16_t(277), Tuint16_t(960), Tuint16_t(280), Tuint16_t(280),
// block 138
Tuint16_t(961), Tuint16_t(961), Tuint16_t(961), Tuint16_t(961), Tuint16_t(961), Tuint16_t(961), Tuint16_t(961), Tuint16_t(961), Tuint16_t(961), Tuint16_t(961), Tuint16_t(961), Tuint16_t(961), Tuint16_t(961), Tuint16_t(961), Tuint16_t(961), Tuint16_t(962),
Tuint16_t(963), Tuint16_t(963), Tuint16_t(963), Tuint16_t(964), Tuint16_t(963), Tuint16_t(963), Tuint16_t(963), Tuint16_t(965), Tuint16_t(966), Tuint16_t(963), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(154), Tuint16_t(154), Tuint16_t(154), Tuint16_t(154), Tuint16_t(154), Tuint16_t(154), Tuint16_t(154), Tuint16_t(154), Tuint16_t(154), Tuint16_t(154), Tuint16_t(154), Tuint16_t(154), Tuint16_t(154), Tuint16_t(154), Tuint16_t(855), Tuint16_t(855),
Tuint16_t(963), Tuint16_t(967), Tuint16_t(967), Tuint16_t(700), Tuint16_t(700), Tuint16_t(965), Tuint16_t(966), Tuint16_t(965), Tuint16_t(966), Tuint16_t(965), Tuint16_t(966), Tuint16_t(965), Tuint16_t(966), Tuint16_t(965), Tuint16_t(966), Tuint16_t(965),
Tuint16_t(966), Tuint16_t(968), Tuint16_t(969), Tuint16_t(968), Tuint16_t(969), Tuint16_t(798), Tuint16_t(798), Tuint16_t(965), Tuint16_t(966), Tuint16_t(963), Tuint16_t(963), Tuint16_t(963), Tuint16_t(963), Tuint16_t(700), Tuint16_t(700), Tuint16_t(700),
Tuint16_t(970), Tuint16_t(166), Tuint16_t(971), Tuint16_t(163), Tuint16_t(166), Tuint16_t(972), Tuint16_t(973), Tuint16_t(973), Tuint16_t(967), Tuint16_t(974), Tuint16_t(975), Tuint16_t(974), Tuint16_t(975), Tuint16_t(974), Tuint16_t(975), Tuint16_t(976),
Tuint16_t(963), Tuint16_t(977), Tuint16_t(713), Tuint16_t(978), Tuint16_t(979), Tuint16_t(979), Tuint16_t(715), Tuint16_t(163), Tuint16_t(977), Tuint16_t(431), Tuint16_t(976), Tuint16_t(963), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(955), Tuint16_t(286), Tuint16_t(955), Tuint16_t(286), Tuint16_t(955), Tuint16_t(302), Tuint16_t(955), Tuint16_t(286), Tuint16_t(955), Tuint16_t(286), Tuint16_t(955), Tuint16_t(286), Tuint16_t(955), Tuint16_t(286), Tuint16_t(955), Tuint16_t(286),
// block 139
Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286),
Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286),
Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286),
Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286),
Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286),
Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286),
Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286),
Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(286), Tuint16_t(302), Tuint16_t(302), Tuint16_t(51),
// block 140
Tuint16_t(163), Tuint16_t(973), Tuint16_t(980), Tuint16_t(976), Tuint16_t(431), Tuint16_t(976), Tuint16_t(963), Tuint16_t(981), Tuint16_t(974), Tuint16_t(975), Tuint16_t(963), Tuint16_t(713), Tuint16_t(970), Tuint16_t(982), Tuint16_t(971), Tuint16_t(983),
Tuint16_t(984), Tuint16_t(984), Tuint16_t(984), Tuint16_t(984), Tuint16_t(984), Tuint16_t(984), Tuint16_t(984), Tuint16_t(984), Tuint16_t(984), Tuint16_t(984), Tuint16_t(972), Tuint16_t(166), Tuint16_t(979), Tuint16_t(715), Tuint16_t(979), Tuint16_t(973),
Tuint16_t(963), Tuint16_t(985), Tuint16_t(985), Tuint16_t(985), Tuint16_t(985), Tuint16_t(985), Tuint16_t(985), Tuint16_t(59), Tuint16_t(59), Tuint16_t(59), Tuint16_t(59), Tuint16_t(59), Tuint16_t(59), Tuint16_t(59), Tuint16_t(59), Tuint16_t(59),
Tuint16_t(59), Tuint16_t(59), Tuint16_t(59), Tuint16_t(59), Tuint16_t(59), Tuint16_t(59), Tuint16_t(59), Tuint16_t(59), Tuint16_t(59), Tuint16_t(59), Tuint16_t(59), Tuint16_t(974), Tuint16_t(977), Tuint16_t(975), Tuint16_t(986), Tuint16_t(700),
Tuint16_t(46), Tuint16_t(987), Tuint16_t(987), Tuint16_t(987), Tuint16_t(987), Tuint16_t(987), Tuint16_t(987), Tuint16_t(62), Tuint16_t(62), Tuint16_t(62), Tuint16_t(62), Tuint16_t(62), Tuint16_t(62), Tuint16_t(62), Tuint16_t(62), Tuint16_t(62),
Tuint16_t(62), Tuint16_t(62), Tuint16_t(62), Tuint16_t(62), Tuint16_t(62), Tuint16_t(62), Tuint16_t(62), Tuint16_t(62), Tuint16_t(62), Tuint16_t(62), Tuint16_t(62), Tuint16_t(974), Tuint16_t(715), Tuint16_t(975), Tuint16_t(715), Tuint16_t(974),
Tuint16_t(975), Tuint16_t(988), Tuint16_t(989), Tuint16_t(990), Tuint16_t(991), Tuint16_t(825), Tuint16_t(824), Tuint16_t(824), Tuint16_t(824), Tuint16_t(824), Tuint16_t(824), Tuint16_t(824), Tuint16_t(824), Tuint16_t(824), Tuint16_t(824), Tuint16_t(824),
Tuint16_t(826), Tuint16_t(824), Tuint16_t(824), Tuint16_t(824), Tuint16_t(824), Tuint16_t(824), Tuint16_t(824), Tuint16_t(824), Tuint16_t(824), Tuint16_t(824), Tuint16_t(824), Tuint16_t(824), Tuint16_t(824), Tuint16_t(824), Tuint16_t(824), Tuint16_t(824),
// block 141
Tuint16_t(824), Tuint16_t(824), Tuint16_t(824), Tuint16_t(824), Tuint16_t(824), Tuint16_t(824), Tuint16_t(824), Tuint16_t(824), Tuint16_t(824), Tuint16_t(824), Tuint16_t(824), Tuint16_t(824), Tuint16_t(824), Tuint16_t(824), Tuint16_t(824), Tuint16_t(824),
Tuint16_t(824), Tuint16_t(824), Tuint16_t(824), Tuint16_t(824), Tuint16_t(824), Tuint16_t(824), Tuint16_t(824), Tuint16_t(824), Tuint16_t(824), Tuint16_t(824), Tuint16_t(824), Tuint16_t(824), Tuint16_t(824), Tuint16_t(824), Tuint16_t(992), Tuint16_t(992),
Tuint16_t(830), Tuint16_t(829), Tuint16_t(829), Tuint16_t(829), Tuint16_t(829), Tuint16_t(829), Tuint16_t(829), Tuint16_t(829), Tuint16_t(829), Tuint16_t(829), Tuint16_t(829), Tuint16_t(829), Tuint16_t(829), Tuint16_t(829), Tuint16_t(829), Tuint16_t(829),
Tuint16_t(829), Tuint16_t(829), Tuint16_t(829), Tuint16_t(829), Tuint16_t(829), Tuint16_t(829), Tuint16_t(829), Tuint16_t(829), Tuint16_t(829), Tuint16_t(829), Tuint16_t(829), Tuint16_t(829), Tuint16_t(829), Tuint16_t(829), Tuint16_t(829), Tuint16_t(163),
Tuint16_t(163), Tuint16_t(163), Tuint16_t(829), Tuint16_t(829), Tuint16_t(829), Tuint16_t(829), Tuint16_t(829), Tuint16_t(829), Tuint16_t(163), Tuint16_t(163), Tuint16_t(829), Tuint16_t(829), Tuint16_t(829), Tuint16_t(829), Tuint16_t(829), Tuint16_t(829),
Tuint16_t(163), Tuint16_t(163), Tuint16_t(829), Tuint16_t(829), Tuint16_t(829), Tuint16_t(829), Tuint16_t(829), Tuint16_t(829), Tuint16_t(163), Tuint16_t(163), Tuint16_t(829), Tuint16_t(829), Tuint16_t(829), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(431), Tuint16_t(431), Tuint16_t(715), Tuint16_t(46), Tuint16_t(723), Tuint16_t(431), Tuint16_t(431), Tuint16_t(163), Tuint16_t(723), Tuint16_t(715), Tuint16_t(715), Tuint16_t(715), Tuint16_t(715), Tuint16_t(723), Tuint16_t(723), Tuint16_t(163),
Tuint16_t(707), Tuint16_t(707), Tuint16_t(707), Tuint16_t(707), Tuint16_t(707), Tuint16_t(707), Tuint16_t(707), Tuint16_t(707), Tuint16_t(707), Tuint16_t(993), Tuint16_t(993), Tuint16_t(993), Tuint16_t(723), Tuint16_t(723), Tuint16_t(958), Tuint16_t(958),
// block 142
Tuint16_t(994), Tuint16_t(994), Tuint16_t(994), Tuint16_t(994), Tuint16_t(994), Tuint16_t(994), Tuint16_t(994), Tuint16_t(994), Tuint16_t(994), Tuint16_t(994), Tuint16_t(994), Tuint16_t(994), Tuint16_t(163), Tuint16_t(994), Tuint16_t(994), Tuint16_t(994),
Tuint16_t(994), Tuint16_t(994), Tuint16_t(994), Tuint16_t(994), Tuint16_t(994), Tuint16_t(994), Tuint16_t(994), Tuint16_t(994), Tuint16_t(994), Tuint16_t(994), Tuint16_t(994), Tuint16_t(994), Tuint16_t(994), Tuint16_t(994), Tuint16_t(994), Tuint16_t(994),
Tuint16_t(994), Tuint16_t(994), Tuint16_t(994), Tuint16_t(994), Tuint16_t(994), Tuint16_t(994), Tuint16_t(994), Tuint16_t(163), Tuint16_t(994), Tuint16_t(994), Tuint16_t(994), Tuint16_t(994), Tuint16_t(994), Tuint16_t(994), Tuint16_t(994), Tuint16_t(994),
Tuint16_t(994), Tuint16_t(994), Tuint16_t(994), Tuint16_t(994), Tuint16_t(994), Tuint16_t(994), Tuint16_t(994), Tuint16_t(994), Tuint16_t(994), Tuint16_t(994), Tuint16_t(994), Tuint16_t(163), Tuint16_t(994), Tuint16_t(994), Tuint16_t(163), Tuint16_t(994),
Tuint16_t(994), Tuint16_t(994), Tuint16_t(994), Tuint16_t(994), Tuint16_t(994), Tuint16_t(994), Tuint16_t(994), Tuint16_t(994), Tuint16_t(994), Tuint16_t(994), Tuint16_t(994), Tuint16_t(994), Tuint16_t(994), Tuint16_t(994), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(994), Tuint16_t(994), Tuint16_t(994), Tuint16_t(994), Tuint16_t(994), Tuint16_t(994), Tuint16_t(994), Tuint16_t(994), Tuint16_t(994), Tuint16_t(994), Tuint16_t(994), Tuint16_t(994), Tuint16_t(994), Tuint16_t(994), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
// block 143
Tuint16_t(994), Tuint16_t(994), Tuint16_t(994), Tuint16_t(994), Tuint16_t(994), Tuint16_t(994), Tuint16_t(994), Tuint16_t(994), Tuint16_t(994), Tuint16_t(994), Tuint16_t(994), Tuint16_t(994), Tuint16_t(994), Tuint16_t(994), Tuint16_t(994), Tuint16_t(994),
Tuint16_t(994), Tuint16_t(994), Tuint16_t(994), Tuint16_t(994), Tuint16_t(994), Tuint16_t(994), Tuint16_t(994), Tuint16_t(994), Tuint16_t(994), Tuint16_t(994), Tuint16_t(994), Tuint16_t(994), Tuint16_t(994), Tuint16_t(994), Tuint16_t(994), Tuint16_t(994),
Tuint16_t(994), Tuint16_t(994), Tuint16_t(994), Tuint16_t(994), Tuint16_t(994), Tuint16_t(994), Tuint16_t(994), Tuint16_t(994), Tuint16_t(994), Tuint16_t(994), Tuint16_t(994), Tuint16_t(994), Tuint16_t(994), Tuint16_t(994), Tuint16_t(994), Tuint16_t(994),
Tuint16_t(994), Tuint16_t(994), Tuint16_t(994), Tuint16_t(994), Tuint16_t(994), Tuint16_t(994), Tuint16_t(994), Tuint16_t(994), Tuint16_t(994), Tuint16_t(994), Tuint16_t(994), Tuint16_t(994), Tuint16_t(994), Tuint16_t(994), Tuint16_t(994), Tuint16_t(994),
Tuint16_t(994), Tuint16_t(994), Tuint16_t(994), Tuint16_t(994), Tuint16_t(994), Tuint16_t(994), Tuint16_t(994), Tuint16_t(994), Tuint16_t(994), Tuint16_t(994), Tuint16_t(994), Tuint16_t(994), Tuint16_t(994), Tuint16_t(994), Tuint16_t(994), Tuint16_t(994),
Tuint16_t(994), Tuint16_t(994), Tuint16_t(994), Tuint16_t(994), Tuint16_t(994), Tuint16_t(994), Tuint16_t(994), Tuint16_t(994), Tuint16_t(994), Tuint16_t(994), Tuint16_t(994), Tuint16_t(994), Tuint16_t(994), Tuint16_t(994), Tuint16_t(994), Tuint16_t(994),
Tuint16_t(994), Tuint16_t(994), Tuint16_t(994), Tuint16_t(994), Tuint16_t(994), Tuint16_t(994), Tuint16_t(994), Tuint16_t(994), Tuint16_t(994), Tuint16_t(994), Tuint16_t(994), Tuint16_t(994), Tuint16_t(994), Tuint16_t(994), Tuint16_t(994), Tuint16_t(994),
Tuint16_t(994), Tuint16_t(994), Tuint16_t(994), Tuint16_t(994), Tuint16_t(994), Tuint16_t(994), Tuint16_t(994), Tuint16_t(994), Tuint16_t(994), Tuint16_t(994), Tuint16_t(994), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
// block 144
Tuint16_t(995), Tuint16_t(996), Tuint16_t(997), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(998), Tuint16_t(998), Tuint16_t(998), Tuint16_t(998), Tuint16_t(998), Tuint16_t(998), Tuint16_t(998), Tuint16_t(998), Tuint16_t(998),
Tuint16_t(998), Tuint16_t(998), Tuint16_t(998), Tuint16_t(998), Tuint16_t(998), Tuint16_t(998), Tuint16_t(998), Tuint16_t(998), Tuint16_t(998), Tuint16_t(998), Tuint16_t(998), Tuint16_t(998), Tuint16_t(998), Tuint16_t(998), Tuint16_t(998), Tuint16_t(998),
Tuint16_t(998), Tuint16_t(998), Tuint16_t(998), Tuint16_t(998), Tuint16_t(998), Tuint16_t(998), Tuint16_t(998), Tuint16_t(998), Tuint16_t(998), Tuint16_t(998), Tuint16_t(998), Tuint16_t(998), Tuint16_t(998), Tuint16_t(998), Tuint16_t(998), Tuint16_t(998),
Tuint16_t(998), Tuint16_t(998), Tuint16_t(998), Tuint16_t(998), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(999), Tuint16_t(999), Tuint16_t(999), Tuint16_t(999), Tuint16_t(999), Tuint16_t(999), Tuint16_t(999), Tuint16_t(999), Tuint16_t(999),
Tuint16_t(1000), Tuint16_t(1000), Tuint16_t(1000), Tuint16_t(1000), Tuint16_t(1000), Tuint16_t(1000), Tuint16_t(1000), Tuint16_t(1000), Tuint16_t(1000), Tuint16_t(1000), Tuint16_t(1000), Tuint16_t(1000), Tuint16_t(1000), Tuint16_t(1000), Tuint16_t(1000), Tuint16_t(1000),
Tuint16_t(1000), Tuint16_t(1000), Tuint16_t(1000), Tuint16_t(1000), Tuint16_t(1000), Tuint16_t(1000), Tuint16_t(1000), Tuint16_t(1000), Tuint16_t(1000), Tuint16_t(1000), Tuint16_t(1000), Tuint16_t(1000), Tuint16_t(1000), Tuint16_t(1000), Tuint16_t(1000), Tuint16_t(1000),
Tuint16_t(1000), Tuint16_t(1000), Tuint16_t(1000), Tuint16_t(1000), Tuint16_t(1000), Tuint16_t(1000), Tuint16_t(1000), Tuint16_t(1000), Tuint16_t(1000), Tuint16_t(1000), Tuint16_t(1000), Tuint16_t(1000), Tuint16_t(1000), Tuint16_t(1000), Tuint16_t(1000), Tuint16_t(1000),
Tuint16_t(1000), Tuint16_t(1000), Tuint16_t(1000), Tuint16_t(1000), Tuint16_t(1000), Tuint16_t(1001), Tuint16_t(1001), Tuint16_t(1001), Tuint16_t(1001), Tuint16_t(1002), Tuint16_t(1002), Tuint16_t(1002), Tuint16_t(1002), Tuint16_t(1002), Tuint16_t(1002), Tuint16_t(1002),
// block 145
Tuint16_t(1002), Tuint16_t(1002), Tuint16_t(1002), Tuint16_t(1002), Tuint16_t(1002), Tuint16_t(1002), Tuint16_t(1002), Tuint16_t(1002), Tuint16_t(1002), Tuint16_t(1002), Tuint16_t(1001), Tuint16_t(1001), Tuint16_t(1002), Tuint16_t(1003), Tuint16_t(1003), Tuint16_t(163),
Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(1002), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460),
Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460),
Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(158), Tuint16_t(163), Tuint16_t(163),
// block 146
Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
// block 147
Tuint16_t(1004), Tuint16_t(1004), Tuint16_t(1004), Tuint16_t(1004), Tuint16_t(1004), Tuint16_t(1004), Tuint16_t(1004), Tuint16_t(1004), Tuint16_t(1004), Tuint16_t(1004), Tuint16_t(1004), Tuint16_t(1004), Tuint16_t(1004), Tuint16_t(1004), Tuint16_t(1004), Tuint16_t(1004),
Tuint16_t(1004), Tuint16_t(1004), Tuint16_t(1004), Tuint16_t(1004), Tuint16_t(1004), Tuint16_t(1004), Tuint16_t(1004), Tuint16_t(1004), Tuint16_t(1004), Tuint16_t(1004), Tuint16_t(1004), Tuint16_t(1004), Tuint16_t(1004), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(1005), Tuint16_t(1005), Tuint16_t(1005), Tuint16_t(1005), Tuint16_t(1005), Tuint16_t(1005), Tuint16_t(1005), Tuint16_t(1005), Tuint16_t(1005), Tuint16_t(1005), Tuint16_t(1005), Tuint16_t(1005), Tuint16_t(1005), Tuint16_t(1005), Tuint16_t(1005), Tuint16_t(1005),
Tuint16_t(1005), Tuint16_t(1005), Tuint16_t(1005), Tuint16_t(1005), Tuint16_t(1005), Tuint16_t(1005), Tuint16_t(1005), Tuint16_t(1005), Tuint16_t(1005), Tuint16_t(1005), Tuint16_t(1005), Tuint16_t(1005), Tuint16_t(1005), Tuint16_t(1005), Tuint16_t(1005), Tuint16_t(1005),
Tuint16_t(1005), Tuint16_t(1005), Tuint16_t(1005), Tuint16_t(1005), Tuint16_t(1005), Tuint16_t(1005), Tuint16_t(1005), Tuint16_t(1005), Tuint16_t(1005), Tuint16_t(1005), Tuint16_t(1005), Tuint16_t(1005), Tuint16_t(1005), Tuint16_t(1005), Tuint16_t(1005), Tuint16_t(1005),
Tuint16_t(1005), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(1006), Tuint16_t(1007), Tuint16_t(1007), Tuint16_t(1007), Tuint16_t(1007), Tuint16_t(1007), Tuint16_t(1007), Tuint16_t(1007), Tuint16_t(1007), Tuint16_t(1007), Tuint16_t(1007), Tuint16_t(1007), Tuint16_t(1007), Tuint16_t(1007), Tuint16_t(1007), Tuint16_t(1007),
Tuint16_t(1007), Tuint16_t(1007), Tuint16_t(1007), Tuint16_t(1007), Tuint16_t(1007), Tuint16_t(1007), Tuint16_t(1007), Tuint16_t(1007), Tuint16_t(1007), Tuint16_t(1007), Tuint16_t(1007), Tuint16_t(1007), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
// block 148
Tuint16_t(1008), Tuint16_t(1008), Tuint16_t(1008), Tuint16_t(1008), Tuint16_t(1008), Tuint16_t(1008), Tuint16_t(1008), Tuint16_t(1008), Tuint16_t(1008), Tuint16_t(1008), Tuint16_t(1008), Tuint16_t(1008), Tuint16_t(1008), Tuint16_t(1008), Tuint16_t(1008), Tuint16_t(1008),
Tuint16_t(1008), Tuint16_t(1008), Tuint16_t(1008), Tuint16_t(1008), Tuint16_t(1008), Tuint16_t(1008), Tuint16_t(1008), Tuint16_t(1008), Tuint16_t(1008), Tuint16_t(1008), Tuint16_t(1008), Tuint16_t(1008), Tuint16_t(1008), Tuint16_t(1008), Tuint16_t(1008), Tuint16_t(1008),
Tuint16_t(1009), Tuint16_t(1009), Tuint16_t(1009), Tuint16_t(1009), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(1008), Tuint16_t(1008), Tuint16_t(1008),
Tuint16_t(1010), Tuint16_t(1010), Tuint16_t(1010), Tuint16_t(1010), Tuint16_t(1010), Tuint16_t(1010), Tuint16_t(1010), Tuint16_t(1010), Tuint16_t(1010), Tuint16_t(1010), Tuint16_t(1010), Tuint16_t(1010), Tuint16_t(1010), Tuint16_t(1010), Tuint16_t(1010), Tuint16_t(1010),
Tuint16_t(1010), Tuint16_t(1011), Tuint16_t(1010), Tuint16_t(1010), Tuint16_t(1010), Tuint16_t(1010), Tuint16_t(1010), Tuint16_t(1010), Tuint16_t(1010), Tuint16_t(1010), Tuint16_t(1011), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(1012), Tuint16_t(1012), Tuint16_t(1012), Tuint16_t(1012), Tuint16_t(1012), Tuint16_t(1012), Tuint16_t(1012), Tuint16_t(1012), Tuint16_t(1012), Tuint16_t(1012), Tuint16_t(1012), Tuint16_t(1012), Tuint16_t(1012), Tuint16_t(1012), Tuint16_t(1012), Tuint16_t(1012),
Tuint16_t(1012), Tuint16_t(1012), Tuint16_t(1012), Tuint16_t(1012), Tuint16_t(1012), Tuint16_t(1012), Tuint16_t(1012), Tuint16_t(1012), Tuint16_t(1012), Tuint16_t(1012), Tuint16_t(1012), Tuint16_t(1012), Tuint16_t(1012), Tuint16_t(1012), Tuint16_t(1012), Tuint16_t(1012),
Tuint16_t(1012), Tuint16_t(1012), Tuint16_t(1012), Tuint16_t(1012), Tuint16_t(1012), Tuint16_t(1012), Tuint16_t(1013), Tuint16_t(1013), Tuint16_t(1013), Tuint16_t(1013), Tuint16_t(1013), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
// block 149
Tuint16_t(1014), Tuint16_t(1014), Tuint16_t(1014), Tuint16_t(1014), Tuint16_t(1014), Tuint16_t(1014), Tuint16_t(1014), Tuint16_t(1014), Tuint16_t(1014), Tuint16_t(1014), Tuint16_t(1014), Tuint16_t(1014), Tuint16_t(1014), Tuint16_t(1014), Tuint16_t(1014), Tuint16_t(1014),
Tuint16_t(1014), Tuint16_t(1014), Tuint16_t(1014), Tuint16_t(1014), Tuint16_t(1014), Tuint16_t(1014), Tuint16_t(1014), Tuint16_t(1014), Tuint16_t(1014), Tuint16_t(1014), Tuint16_t(1014), Tuint16_t(1014), Tuint16_t(1014), Tuint16_t(1014), Tuint16_t(163), Tuint16_t(1015),
Tuint16_t(1016), Tuint16_t(1016), Tuint16_t(1016), Tuint16_t(1016), Tuint16_t(1016), Tuint16_t(1016), Tuint16_t(1016), Tuint16_t(1016), Tuint16_t(1016), Tuint16_t(1016), Tuint16_t(1016), Tuint16_t(1016), Tuint16_t(1016), Tuint16_t(1016), Tuint16_t(1016), Tuint16_t(1016),
Tuint16_t(1016), Tuint16_t(1016), Tuint16_t(1016), Tuint16_t(1016), Tuint16_t(1016), Tuint16_t(1016), Tuint16_t(1016), Tuint16_t(1016), Tuint16_t(1016), Tuint16_t(1016), Tuint16_t(1016), Tuint16_t(1016), Tuint16_t(1016), Tuint16_t(1016), Tuint16_t(1016), Tuint16_t(1016),
Tuint16_t(1016), Tuint16_t(1016), Tuint16_t(1016), Tuint16_t(1016), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(1016), Tuint16_t(1016), Tuint16_t(1016), Tuint16_t(1016), Tuint16_t(1016), Tuint16_t(1016), Tuint16_t(1016), Tuint16_t(1016),
Tuint16_t(1017), Tuint16_t(1018), Tuint16_t(1018), Tuint16_t(1018), Tuint16_t(1018), Tuint16_t(1018), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
// block 150
Tuint16_t(1019), Tuint16_t(1019), Tuint16_t(1019), Tuint16_t(1019), Tuint16_t(1019), Tuint16_t(1019), Tuint16_t(1019), Tuint16_t(1019), Tuint16_t(1019), Tuint16_t(1019), Tuint16_t(1019), Tuint16_t(1019), Tuint16_t(1019), Tuint16_t(1019), Tuint16_t(1019), Tuint16_t(1019),
Tuint16_t(1019), Tuint16_t(1019), Tuint16_t(1019), Tuint16_t(1019), Tuint16_t(1019), Tuint16_t(1019), Tuint16_t(1019), Tuint16_t(1019), Tuint16_t(1019), Tuint16_t(1019), Tuint16_t(1019), Tuint16_t(1019), Tuint16_t(1019), Tuint16_t(1019), Tuint16_t(1019), Tuint16_t(1019),
Tuint16_t(1019), Tuint16_t(1019), Tuint16_t(1019), Tuint16_t(1019), Tuint16_t(1019), Tuint16_t(1019), Tuint16_t(1019), Tuint16_t(1019), Tuint16_t(1020), Tuint16_t(1020), Tuint16_t(1020), Tuint16_t(1020), Tuint16_t(1020), Tuint16_t(1020), Tuint16_t(1020), Tuint16_t(1020),
Tuint16_t(1020), Tuint16_t(1020), Tuint16_t(1020), Tuint16_t(1020), Tuint16_t(1020), Tuint16_t(1020), Tuint16_t(1020), Tuint16_t(1020), Tuint16_t(1020), Tuint16_t(1020), Tuint16_t(1020), Tuint16_t(1020), Tuint16_t(1020), Tuint16_t(1020), Tuint16_t(1020), Tuint16_t(1020),
Tuint16_t(1020), Tuint16_t(1020), Tuint16_t(1020), Tuint16_t(1020), Tuint16_t(1020), Tuint16_t(1020), Tuint16_t(1020), Tuint16_t(1020), Tuint16_t(1020), Tuint16_t(1020), Tuint16_t(1020), Tuint16_t(1020), Tuint16_t(1020), Tuint16_t(1020), Tuint16_t(1020), Tuint16_t(1020),
Tuint16_t(1021), Tuint16_t(1021), Tuint16_t(1021), Tuint16_t(1021), Tuint16_t(1021), Tuint16_t(1021), Tuint16_t(1021), Tuint16_t(1021), Tuint16_t(1021), Tuint16_t(1021), Tuint16_t(1021), Tuint16_t(1021), Tuint16_t(1021), Tuint16_t(1021), Tuint16_t(1021), Tuint16_t(1021),
Tuint16_t(1021), Tuint16_t(1021), Tuint16_t(1021), Tuint16_t(1021), Tuint16_t(1021), Tuint16_t(1021), Tuint16_t(1021), Tuint16_t(1021), Tuint16_t(1021), Tuint16_t(1021), Tuint16_t(1021), Tuint16_t(1021), Tuint16_t(1021), Tuint16_t(1021), Tuint16_t(1021), Tuint16_t(1021),
Tuint16_t(1021), Tuint16_t(1021), Tuint16_t(1021), Tuint16_t(1021), Tuint16_t(1021), Tuint16_t(1021), Tuint16_t(1021), Tuint16_t(1021), Tuint16_t(1021), Tuint16_t(1021), Tuint16_t(1021), Tuint16_t(1021), Tuint16_t(1021), Tuint16_t(1021), Tuint16_t(1021), Tuint16_t(1021),
// block 151
Tuint16_t(1022), Tuint16_t(1022), Tuint16_t(1022), Tuint16_t(1022), Tuint16_t(1022), Tuint16_t(1022), Tuint16_t(1022), Tuint16_t(1022), Tuint16_t(1022), Tuint16_t(1022), Tuint16_t(1022), Tuint16_t(1022), Tuint16_t(1022), Tuint16_t(1022), Tuint16_t(1022), Tuint16_t(1022),
Tuint16_t(1022), Tuint16_t(1022), Tuint16_t(1022), Tuint16_t(1022), Tuint16_t(1022), Tuint16_t(1022), Tuint16_t(1022), Tuint16_t(1022), Tuint16_t(1022), Tuint16_t(1022), Tuint16_t(1022), Tuint16_t(1022), Tuint16_t(1022), Tuint16_t(1022), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(1023), Tuint16_t(1023), Tuint16_t(1023), Tuint16_t(1023), Tuint16_t(1023), Tuint16_t(1023), Tuint16_t(1023), Tuint16_t(1023), Tuint16_t(1023), Tuint16_t(1023), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(1024), Tuint16_t(1024), Tuint16_t(1024), Tuint16_t(1024), Tuint16_t(1024), Tuint16_t(1024), Tuint16_t(1024), Tuint16_t(1024), Tuint16_t(1024), Tuint16_t(1024), Tuint16_t(1024), Tuint16_t(1024), Tuint16_t(1024), Tuint16_t(1024), Tuint16_t(1024), Tuint16_t(1024),
Tuint16_t(1024), Tuint16_t(1024), Tuint16_t(1024), Tuint16_t(1024), Tuint16_t(1024), Tuint16_t(1024), Tuint16_t(1024), Tuint16_t(1024), Tuint16_t(1024), Tuint16_t(1024), Tuint16_t(1024), Tuint16_t(1024), Tuint16_t(1024), Tuint16_t(1024), Tuint16_t(1024), Tuint16_t(1024),
Tuint16_t(1024), Tuint16_t(1024), Tuint16_t(1024), Tuint16_t(1024), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(1025), Tuint16_t(1025), Tuint16_t(1025), Tuint16_t(1025), Tuint16_t(1025), Tuint16_t(1025), Tuint16_t(1025), Tuint16_t(1025),
Tuint16_t(1025), Tuint16_t(1025), Tuint16_t(1025), Tuint16_t(1025), Tuint16_t(1025), Tuint16_t(1025), Tuint16_t(1025), Tuint16_t(1025), Tuint16_t(1025), Tuint16_t(1025), Tuint16_t(1025), Tuint16_t(1025), Tuint16_t(1025), Tuint16_t(1025), Tuint16_t(1025), Tuint16_t(1025),
Tuint16_t(1025), Tuint16_t(1025), Tuint16_t(1025), Tuint16_t(1025), Tuint16_t(1025), Tuint16_t(1025), Tuint16_t(1025), Tuint16_t(1025), Tuint16_t(1025), Tuint16_t(1025), Tuint16_t(1025), Tuint16_t(1025), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
// block 152
Tuint16_t(1026), Tuint16_t(1026), Tuint16_t(1026), Tuint16_t(1026), Tuint16_t(1026), Tuint16_t(1026), Tuint16_t(1026), Tuint16_t(1026), Tuint16_t(1026), Tuint16_t(1026), Tuint16_t(1026), Tuint16_t(1026), Tuint16_t(1026), Tuint16_t(1026), Tuint16_t(1026), Tuint16_t(1026),
Tuint16_t(1026), Tuint16_t(1026), Tuint16_t(1026), Tuint16_t(1026), Tuint16_t(1026), Tuint16_t(1026), Tuint16_t(1026), Tuint16_t(1026), Tuint16_t(1026), Tuint16_t(1026), Tuint16_t(1026), Tuint16_t(1026), Tuint16_t(1026), Tuint16_t(1026), Tuint16_t(1026), Tuint16_t(1026),
Tuint16_t(1026), Tuint16_t(1026), Tuint16_t(1026), Tuint16_t(1026), Tuint16_t(1026), Tuint16_t(1026), Tuint16_t(1026), Tuint16_t(1026), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(1027), Tuint16_t(1027), Tuint16_t(1027), Tuint16_t(1027), Tuint16_t(1027), Tuint16_t(1027), Tuint16_t(1027), Tuint16_t(1027), Tuint16_t(1027), Tuint16_t(1027), Tuint16_t(1027), Tuint16_t(1027), Tuint16_t(1027), Tuint16_t(1027), Tuint16_t(1027), Tuint16_t(1027),
Tuint16_t(1027), Tuint16_t(1027), Tuint16_t(1027), Tuint16_t(1027), Tuint16_t(1027), Tuint16_t(1027), Tuint16_t(1027), Tuint16_t(1027), Tuint16_t(1027), Tuint16_t(1027), Tuint16_t(1027), Tuint16_t(1027), Tuint16_t(1027), Tuint16_t(1027), Tuint16_t(1027), Tuint16_t(1027),
Tuint16_t(1027), Tuint16_t(1027), Tuint16_t(1027), Tuint16_t(1027), Tuint16_t(1027), Tuint16_t(1027), Tuint16_t(1027), Tuint16_t(1027), Tuint16_t(1027), Tuint16_t(1027), Tuint16_t(1027), Tuint16_t(1027), Tuint16_t(1027), Tuint16_t(1027), Tuint16_t(1027), Tuint16_t(1027),
Tuint16_t(1027), Tuint16_t(1027), Tuint16_t(1027), Tuint16_t(1027), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(1028),
Tuint16_t(1029), Tuint16_t(1029), Tuint16_t(1029), Tuint16_t(1029), Tuint16_t(1029), Tuint16_t(1029), Tuint16_t(1029), Tuint16_t(1029), Tuint16_t(1029), Tuint16_t(1029), Tuint16_t(1029), Tuint16_t(163), Tuint16_t(1029), Tuint16_t(1029), Tuint16_t(1029), Tuint16_t(1029),
// block 153
Tuint16_t(1029), Tuint16_t(1029), Tuint16_t(1029), Tuint16_t(1029), Tuint16_t(1029), Tuint16_t(1029), Tuint16_t(1029), Tuint16_t(1029), Tuint16_t(1029), Tuint16_t(1029), Tuint16_t(1029), Tuint16_t(163), Tuint16_t(1029), Tuint16_t(1029), Tuint16_t(1029), Tuint16_t(1029),
Tuint16_t(1029), Tuint16_t(1029), Tuint16_t(1029), Tuint16_t(163), Tuint16_t(1029), Tuint16_t(1029), Tuint16_t(163), Tuint16_t(1030), Tuint16_t(1030), Tuint16_t(1030), Tuint16_t(1030), Tuint16_t(1030), Tuint16_t(1030), Tuint16_t(1030), Tuint16_t(1030), Tuint16_t(1030),
Tuint16_t(1030), Tuint16_t(1030), Tuint16_t(163), Tuint16_t(1030), Tuint16_t(1030), Tuint16_t(1030), Tuint16_t(1030), Tuint16_t(1030), Tuint16_t(1030), Tuint16_t(1030), Tuint16_t(1030), Tuint16_t(1030), Tuint16_t(1030), Tuint16_t(1030), Tuint16_t(1030), Tuint16_t(1030),
Tuint16_t(1030), Tuint16_t(1030), Tuint16_t(163), Tuint16_t(1030), Tuint16_t(1030), Tuint16_t(1030), Tuint16_t(1030), Tuint16_t(1030), Tuint16_t(1030), Tuint16_t(1030), Tuint16_t(163), Tuint16_t(1030), Tuint16_t(1030), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
// block 154
Tuint16_t(1031), Tuint16_t(1031), Tuint16_t(1031), Tuint16_t(1031), Tuint16_t(1031), Tuint16_t(1031), Tuint16_t(1031), Tuint16_t(1031), Tuint16_t(1031), Tuint16_t(1031), Tuint16_t(1031), Tuint16_t(1031), Tuint16_t(1031), Tuint16_t(1031), Tuint16_t(1031), Tuint16_t(1031),
Tuint16_t(1031), Tuint16_t(1031), Tuint16_t(1031), Tuint16_t(1031), Tuint16_t(1031), Tuint16_t(1031), Tuint16_t(1031), Tuint16_t(1031), Tuint16_t(1031), Tuint16_t(1031), Tuint16_t(1031), Tuint16_t(1031), Tuint16_t(1031), Tuint16_t(1031), Tuint16_t(1031), Tuint16_t(1031),
Tuint16_t(1031), Tuint16_t(1031), Tuint16_t(1031), Tuint16_t(1031), Tuint16_t(1031), Tuint16_t(1031), Tuint16_t(1031), Tuint16_t(1031), Tuint16_t(1031), Tuint16_t(1031), Tuint16_t(1031), Tuint16_t(1031), Tuint16_t(1031), Tuint16_t(1031), Tuint16_t(1031), Tuint16_t(1031),
Tuint16_t(1031), Tuint16_t(1031), Tuint16_t(1031), Tuint16_t(1031), Tuint16_t(1031), Tuint16_t(1031), Tuint16_t(1031), Tuint16_t(1031), Tuint16_t(1031), Tuint16_t(1031), Tuint16_t(1031), Tuint16_t(1031), Tuint16_t(1031), Tuint16_t(1031), Tuint16_t(1031), Tuint16_t(1031),
Tuint16_t(1031), Tuint16_t(1031), Tuint16_t(1031), Tuint16_t(1031), Tuint16_t(1031), Tuint16_t(1031), Tuint16_t(1031), Tuint16_t(1031), Tuint16_t(1031), Tuint16_t(1031), Tuint16_t(1031), Tuint16_t(1031), Tuint16_t(1031), Tuint16_t(1031), Tuint16_t(1031), Tuint16_t(1031),
Tuint16_t(1031), Tuint16_t(1031), Tuint16_t(1031), Tuint16_t(1031), Tuint16_t(1031), Tuint16_t(1031), Tuint16_t(1031), Tuint16_t(1031), Tuint16_t(1031), Tuint16_t(1031), Tuint16_t(1031), Tuint16_t(1031), Tuint16_t(1031), Tuint16_t(1031), Tuint16_t(1031), Tuint16_t(1031),
Tuint16_t(1031), Tuint16_t(1031), Tuint16_t(1031), Tuint16_t(1031), Tuint16_t(1031), Tuint16_t(1031), Tuint16_t(1031), Tuint16_t(1031), Tuint16_t(1031), Tuint16_t(1031), Tuint16_t(1031), Tuint16_t(1031), Tuint16_t(1031), Tuint16_t(1031), Tuint16_t(1031), Tuint16_t(1031),
Tuint16_t(1031), Tuint16_t(1031), Tuint16_t(1031), Tuint16_t(1031), Tuint16_t(1031), Tuint16_t(1031), Tuint16_t(1031), Tuint16_t(1031), Tuint16_t(1031), Tuint16_t(1031), Tuint16_t(1031), Tuint16_t(1031), Tuint16_t(1031), Tuint16_t(1031), Tuint16_t(1031), Tuint16_t(1031),
// block 155
Tuint16_t(1031), Tuint16_t(1031), Tuint16_t(1031), Tuint16_t(1031), Tuint16_t(1031), Tuint16_t(1031), Tuint16_t(1031), Tuint16_t(1031), Tuint16_t(1031), Tuint16_t(1031), Tuint16_t(1031), Tuint16_t(1031), Tuint16_t(1031), Tuint16_t(1031), Tuint16_t(1031), Tuint16_t(1031),
Tuint16_t(1031), Tuint16_t(1031), Tuint16_t(1031), Tuint16_t(1031), Tuint16_t(1031), Tuint16_t(1031), Tuint16_t(1031), Tuint16_t(1031), Tuint16_t(1031), Tuint16_t(1031), Tuint16_t(1031), Tuint16_t(1031), Tuint16_t(1031), Tuint16_t(1031), Tuint16_t(1031), Tuint16_t(1031),
Tuint16_t(1031), Tuint16_t(1031), Tuint16_t(1031), Tuint16_t(1031), Tuint16_t(1031), Tuint16_t(1031), Tuint16_t(1031), Tuint16_t(1031), Tuint16_t(1031), Tuint16_t(1031), Tuint16_t(1031), Tuint16_t(1031), Tuint16_t(1031), Tuint16_t(1031), Tuint16_t(1031), Tuint16_t(1031),
Tuint16_t(1031), Tuint16_t(1031), Tuint16_t(1031), Tuint16_t(1031), Tuint16_t(1031), Tuint16_t(1031), Tuint16_t(1031), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(1031), Tuint16_t(1031), Tuint16_t(1031), Tuint16_t(1031), Tuint16_t(1031), Tuint16_t(1031), Tuint16_t(1031), Tuint16_t(1031), Tuint16_t(1031), Tuint16_t(1031), Tuint16_t(1031), Tuint16_t(1031), Tuint16_t(1031), Tuint16_t(1031), Tuint16_t(1031), Tuint16_t(1031),
Tuint16_t(1031), Tuint16_t(1031), Tuint16_t(1031), Tuint16_t(1031), Tuint16_t(1031), Tuint16_t(1031), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(1031), Tuint16_t(1031), Tuint16_t(1031), Tuint16_t(1031), Tuint16_t(1031), Tuint16_t(1031), Tuint16_t(1031), Tuint16_t(1031), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
// block 156
Tuint16_t(147), Tuint16_t(1032), Tuint16_t(1032), Tuint16_t(147), Tuint16_t(147), Tuint16_t(147), Tuint16_t(163), Tuint16_t(147), Tuint16_t(147), Tuint16_t(147), Tuint16_t(147), Tuint16_t(147), Tuint16_t(147), Tuint16_t(147), Tuint16_t(147), Tuint16_t(147),
Tuint16_t(147), Tuint16_t(147), Tuint16_t(147), Tuint16_t(147), Tuint16_t(147), Tuint16_t(147), Tuint16_t(147), Tuint16_t(147), Tuint16_t(147), Tuint16_t(147), Tuint16_t(147), Tuint16_t(147), Tuint16_t(147), Tuint16_t(147), Tuint16_t(147), Tuint16_t(147),
Tuint16_t(147), Tuint16_t(147), Tuint16_t(147), Tuint16_t(147), Tuint16_t(147), Tuint16_t(147), Tuint16_t(147), Tuint16_t(147), Tuint16_t(147), Tuint16_t(147), Tuint16_t(147), Tuint16_t(147), Tuint16_t(147), Tuint16_t(147), Tuint16_t(147), Tuint16_t(147),
Tuint16_t(147), Tuint16_t(163), Tuint16_t(147), Tuint16_t(147), Tuint16_t(147), Tuint16_t(147), Tuint16_t(147), Tuint16_t(147), Tuint16_t(147), Tuint16_t(147), Tuint16_t(147), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
// block 157
Tuint16_t(1033), Tuint16_t(1033), Tuint16_t(1033), Tuint16_t(1033), Tuint16_t(1033), Tuint16_t(1033), Tuint16_t(262), Tuint16_t(262), Tuint16_t(1033), Tuint16_t(262), Tuint16_t(1033), Tuint16_t(1033), Tuint16_t(1033), Tuint16_t(1033), Tuint16_t(1033), Tuint16_t(1033),
Tuint16_t(1033), Tuint16_t(1033), Tuint16_t(1033), Tuint16_t(1033), Tuint16_t(1033), Tuint16_t(1033), Tuint16_t(1033), Tuint16_t(1033), Tuint16_t(1033), Tuint16_t(1033), Tuint16_t(1033), Tuint16_t(1033), Tuint16_t(1033), Tuint16_t(1033), Tuint16_t(1033), Tuint16_t(1033),
Tuint16_t(1033), Tuint16_t(1033), Tuint16_t(1033), Tuint16_t(1033), Tuint16_t(1033), Tuint16_t(1033), Tuint16_t(1033), Tuint16_t(1033), Tuint16_t(1033), Tuint16_t(1033), Tuint16_t(1033), Tuint16_t(1033), Tuint16_t(1033), Tuint16_t(1033), Tuint16_t(1033), Tuint16_t(1033),
Tuint16_t(1033), Tuint16_t(1033), Tuint16_t(1033), Tuint16_t(1033), Tuint16_t(1033), Tuint16_t(1033), Tuint16_t(262), Tuint16_t(1033), Tuint16_t(1033), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(1033), Tuint16_t(262), Tuint16_t(262), Tuint16_t(1033),
Tuint16_t(1034), Tuint16_t(1034), Tuint16_t(1034), Tuint16_t(1034), Tuint16_t(1034), Tuint16_t(1034), Tuint16_t(1034), Tuint16_t(1034), Tuint16_t(1034), Tuint16_t(1034), Tuint16_t(1034), Tuint16_t(1034), Tuint16_t(1034), Tuint16_t(1034), Tuint16_t(1034), Tuint16_t(1034),
Tuint16_t(1034), Tuint16_t(1034), Tuint16_t(1034), Tuint16_t(1034), Tuint16_t(1034), Tuint16_t(1034), Tuint16_t(262), Tuint16_t(1035), Tuint16_t(1036), Tuint16_t(1036), Tuint16_t(1036), Tuint16_t(1036), Tuint16_t(1036), Tuint16_t(1036), Tuint16_t(1036), Tuint16_t(1036),
Tuint16_t(1037), Tuint16_t(1037), Tuint16_t(1037), Tuint16_t(1037), Tuint16_t(1037), Tuint16_t(1037), Tuint16_t(1037), Tuint16_t(1037), Tuint16_t(1037), Tuint16_t(1037), Tuint16_t(1037), Tuint16_t(1037), Tuint16_t(1037), Tuint16_t(1037), Tuint16_t(1037), Tuint16_t(1037),
Tuint16_t(1037), Tuint16_t(1037), Tuint16_t(1037), Tuint16_t(1037), Tuint16_t(1037), Tuint16_t(1037), Tuint16_t(1037), Tuint16_t(1038), Tuint16_t(1038), Tuint16_t(1039), Tuint16_t(1039), Tuint16_t(1039), Tuint16_t(1039), Tuint16_t(1039), Tuint16_t(1039), Tuint16_t(1039),
// block 158
Tuint16_t(1040), Tuint16_t(1040), Tuint16_t(1040), Tuint16_t(1040), Tuint16_t(1040), Tuint16_t(1040), Tuint16_t(1040), Tuint16_t(1040), Tuint16_t(1040), Tuint16_t(1040), Tuint16_t(1040), Tuint16_t(1040), Tuint16_t(1040), Tuint16_t(1040), Tuint16_t(1040), Tuint16_t(1040),
Tuint16_t(1040), Tuint16_t(1040), Tuint16_t(1040), Tuint16_t(1040), Tuint16_t(1040), Tuint16_t(1040), Tuint16_t(1040), Tuint16_t(1040), Tuint16_t(1040), Tuint16_t(1040), Tuint16_t(1040), Tuint16_t(1040), Tuint16_t(1040), Tuint16_t(1040), Tuint16_t(1040), Tuint16_t(262),
Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(1041), Tuint16_t(1041), Tuint16_t(1041), Tuint16_t(1041), Tuint16_t(1041), Tuint16_t(1041), Tuint16_t(1041), Tuint16_t(1041), Tuint16_t(1041),
Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262),
Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262),
Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262),
Tuint16_t(1042), Tuint16_t(1042), Tuint16_t(1042), Tuint16_t(1042), Tuint16_t(1042), Tuint16_t(1042), Tuint16_t(1042), Tuint16_t(1042), Tuint16_t(1042), Tuint16_t(1042), Tuint16_t(1042), Tuint16_t(1042), Tuint16_t(1042), Tuint16_t(1042), Tuint16_t(1042), Tuint16_t(1042),
Tuint16_t(1042), Tuint16_t(1042), Tuint16_t(1042), Tuint16_t(262), Tuint16_t(1042), Tuint16_t(1042), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(1043), Tuint16_t(1043), Tuint16_t(1043), Tuint16_t(1043), Tuint16_t(1043),
// block 159
Tuint16_t(1044), Tuint16_t(1044), Tuint16_t(1044), Tuint16_t(1044), Tuint16_t(1044), Tuint16_t(1044), Tuint16_t(1044), Tuint16_t(1044), Tuint16_t(1044), Tuint16_t(1044), Tuint16_t(1044), Tuint16_t(1044), Tuint16_t(1044), Tuint16_t(1044), Tuint16_t(1044), Tuint16_t(1044),
Tuint16_t(1044), Tuint16_t(1044), Tuint16_t(1044), Tuint16_t(1044), Tuint16_t(1044), Tuint16_t(1044), Tuint16_t(1045), Tuint16_t(1045), Tuint16_t(1045), Tuint16_t(1045), Tuint16_t(1045), Tuint16_t(1045), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(1046),
Tuint16_t(1047), Tuint16_t(1047), Tuint16_t(1047), Tuint16_t(1047), Tuint16_t(1047), Tuint16_t(1047), Tuint16_t(1047), Tuint16_t(1047), Tuint16_t(1047), Tuint16_t(1047), Tuint16_t(1047), Tuint16_t(1047), Tuint16_t(1047), Tuint16_t(1047), Tuint16_t(1047), Tuint16_t(1047),
Tuint16_t(1047), Tuint16_t(1047), Tuint16_t(1047), Tuint16_t(1047), Tuint16_t(1047), Tuint16_t(1047), Tuint16_t(1047), Tuint16_t(1047), Tuint16_t(1047), Tuint16_t(1047), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(1048),
Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262),
Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262),
Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262),
Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262),
// block 160
Tuint16_t(1049), Tuint16_t(1049), Tuint16_t(1049), Tuint16_t(1049), Tuint16_t(1049), Tuint16_t(1049), Tuint16_t(1049), Tuint16_t(1049), Tuint16_t(1049), Tuint16_t(1049), Tuint16_t(1049), Tuint16_t(1049), Tuint16_t(1049), Tuint16_t(1049), Tuint16_t(1049), Tuint16_t(1049),
Tuint16_t(1049), Tuint16_t(1049), Tuint16_t(1049), Tuint16_t(1049), Tuint16_t(1049), Tuint16_t(1049), Tuint16_t(1049), Tuint16_t(1049), Tuint16_t(1049), Tuint16_t(1049), Tuint16_t(1049), Tuint16_t(1049), Tuint16_t(1049), Tuint16_t(1049), Tuint16_t(1049), Tuint16_t(1049),
Tuint16_t(1050), Tuint16_t(1050), Tuint16_t(1050), Tuint16_t(1050), Tuint16_t(1050), Tuint16_t(1050), Tuint16_t(1050), Tuint16_t(1050), Tuint16_t(1050), Tuint16_t(1050), Tuint16_t(1050), Tuint16_t(1050), Tuint16_t(1050), Tuint16_t(1050), Tuint16_t(1050), Tuint16_t(1050),
Tuint16_t(1050), Tuint16_t(1050), Tuint16_t(1050), Tuint16_t(1050), Tuint16_t(1050), Tuint16_t(1050), Tuint16_t(1050), Tuint16_t(1050), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(1051), Tuint16_t(1051), Tuint16_t(1050), Tuint16_t(1050),
Tuint16_t(1051), Tuint16_t(1051), Tuint16_t(1051), Tuint16_t(1051), Tuint16_t(1051), Tuint16_t(1051), Tuint16_t(1051), Tuint16_t(1051), Tuint16_t(1051), Tuint16_t(1051), Tuint16_t(1051), Tuint16_t(1051), Tuint16_t(1051), Tuint16_t(1051), Tuint16_t(1051), Tuint16_t(1051),
Tuint16_t(262), Tuint16_t(262), Tuint16_t(1051), Tuint16_t(1051), Tuint16_t(1051), Tuint16_t(1051), Tuint16_t(1051), Tuint16_t(1051), Tuint16_t(1051), Tuint16_t(1051), Tuint16_t(1051), Tuint16_t(1051), Tuint16_t(1051), Tuint16_t(1051), Tuint16_t(1051), Tuint16_t(1051),
Tuint16_t(1051), Tuint16_t(1051), Tuint16_t(1051), Tuint16_t(1051), Tuint16_t(1051), Tuint16_t(1051), Tuint16_t(1051), Tuint16_t(1051), Tuint16_t(1051), Tuint16_t(1051), Tuint16_t(1051), Tuint16_t(1051), Tuint16_t(1051), Tuint16_t(1051), Tuint16_t(1051), Tuint16_t(1051),
Tuint16_t(1051), Tuint16_t(1051), Tuint16_t(1051), Tuint16_t(1051), Tuint16_t(1051), Tuint16_t(1051), Tuint16_t(1051), Tuint16_t(1051), Tuint16_t(1051), Tuint16_t(1051), Tuint16_t(1051), Tuint16_t(1051), Tuint16_t(1051), Tuint16_t(1051), Tuint16_t(1051), Tuint16_t(1051),
// block 161
Tuint16_t(1052), Tuint16_t(1053), Tuint16_t(1053), Tuint16_t(1053), Tuint16_t(262), Tuint16_t(1053), Tuint16_t(1053), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(1053), Tuint16_t(1053), Tuint16_t(1053), Tuint16_t(1053),
Tuint16_t(1052), Tuint16_t(1052), Tuint16_t(1052), Tuint16_t(1052), Tuint16_t(262), Tuint16_t(1052), Tuint16_t(1052), Tuint16_t(1052), Tuint16_t(262), Tuint16_t(1052), Tuint16_t(1052), Tuint16_t(1052), Tuint16_t(1052), Tuint16_t(1052), Tuint16_t(1052), Tuint16_t(1052),
Tuint16_t(1052), Tuint16_t(1052), Tuint16_t(1052), Tuint16_t(1052), Tuint16_t(1052), Tuint16_t(1052), Tuint16_t(1052), Tuint16_t(1052), Tuint16_t(1052), Tuint16_t(1052), Tuint16_t(1052), Tuint16_t(1052), Tuint16_t(1052), Tuint16_t(1052), Tuint16_t(1052), Tuint16_t(1052),
Tuint16_t(1052), Tuint16_t(1052), Tuint16_t(1052), Tuint16_t(1052), Tuint16_t(1052), Tuint16_t(1052), Tuint16_t(262), Tuint16_t(262), Tuint16_t(1054), Tuint16_t(1054), Tuint16_t(1054), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(1055),
Tuint16_t(1056), Tuint16_t(1056), Tuint16_t(1056), Tuint16_t(1056), Tuint16_t(1056), Tuint16_t(1056), Tuint16_t(1056), Tuint16_t(1056), Tuint16_t(1056), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262),
Tuint16_t(1057), Tuint16_t(1057), Tuint16_t(1057), Tuint16_t(1057), Tuint16_t(1057), Tuint16_t(1057), Tuint16_t(1058), Tuint16_t(1058), Tuint16_t(1057), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262),
Tuint16_t(1059), Tuint16_t(1059), Tuint16_t(1059), Tuint16_t(1059), Tuint16_t(1059), Tuint16_t(1059), Tuint16_t(1059), Tuint16_t(1059), Tuint16_t(1059), Tuint16_t(1059), Tuint16_t(1059), Tuint16_t(1059), Tuint16_t(1059), Tuint16_t(1059), Tuint16_t(1059), Tuint16_t(1059),
Tuint16_t(1059), Tuint16_t(1059), Tuint16_t(1059), Tuint16_t(1059), Tuint16_t(1059), Tuint16_t(1059), Tuint16_t(1059), Tuint16_t(1059), Tuint16_t(1059), Tuint16_t(1059), Tuint16_t(1059), Tuint16_t(1059), Tuint16_t(1059), Tuint16_t(1060), Tuint16_t(1060), Tuint16_t(1061),
// block 162
Tuint16_t(1062), Tuint16_t(1062), Tuint16_t(1062), Tuint16_t(1062), Tuint16_t(1062), Tuint16_t(1062), Tuint16_t(1062), Tuint16_t(1062), Tuint16_t(1062), Tuint16_t(1062), Tuint16_t(1062), Tuint16_t(1062), Tuint16_t(1062), Tuint16_t(1062), Tuint16_t(1062), Tuint16_t(1062),
Tuint16_t(1062), Tuint16_t(1062), Tuint16_t(1062), Tuint16_t(1062), Tuint16_t(1062), Tuint16_t(1062), Tuint16_t(1062), Tuint16_t(1062), Tuint16_t(1062), Tuint16_t(1062), Tuint16_t(1062), Tuint16_t(1062), Tuint16_t(1062), Tuint16_t(1063), Tuint16_t(1063), Tuint16_t(1063),
Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262),
Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262),
Tuint16_t(1064), Tuint16_t(1064), Tuint16_t(1064), Tuint16_t(1064), Tuint16_t(1064), Tuint16_t(1064), Tuint16_t(1064), Tuint16_t(1064), Tuint16_t(1065), Tuint16_t(1064), Tuint16_t(1064), Tuint16_t(1064), Tuint16_t(1064), Tuint16_t(1064), Tuint16_t(1064), Tuint16_t(1064),
Tuint16_t(1064), Tuint16_t(1064), Tuint16_t(1064), Tuint16_t(1064), Tuint16_t(1064), Tuint16_t(1064), Tuint16_t(1064), Tuint16_t(1064), Tuint16_t(1064), Tuint16_t(1064), Tuint16_t(1064), Tuint16_t(1064), Tuint16_t(1064), Tuint16_t(1064), Tuint16_t(1064), Tuint16_t(1064),
Tuint16_t(1064), Tuint16_t(1064), Tuint16_t(1064), Tuint16_t(1064), Tuint16_t(1064), Tuint16_t(1066), Tuint16_t(1066), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(1067), Tuint16_t(1067), Tuint16_t(1067), Tuint16_t(1067), Tuint16_t(1067),
Tuint16_t(1068), Tuint16_t(1068), Tuint16_t(1069), Tuint16_t(1068), Tuint16_t(1068), Tuint16_t(1068), Tuint16_t(1070), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262),
// block 163
Tuint16_t(1071), Tuint16_t(1071), Tuint16_t(1071), Tuint16_t(1071), Tuint16_t(1071), Tuint16_t(1071), Tuint16_t(1071), Tuint16_t(1071), Tuint16_t(1071), Tuint16_t(1071), Tuint16_t(1071), Tuint16_t(1071), Tuint16_t(1071), Tuint16_t(1071), Tuint16_t(1071), Tuint16_t(1071),
Tuint16_t(1071), Tuint16_t(1071), Tuint16_t(1071), Tuint16_t(1071), Tuint16_t(1071), Tuint16_t(1071), Tuint16_t(1071), Tuint16_t(1071), Tuint16_t(1071), Tuint16_t(1071), Tuint16_t(1071), Tuint16_t(1071), Tuint16_t(1071), Tuint16_t(1071), Tuint16_t(1071), Tuint16_t(1071),
Tuint16_t(1071), Tuint16_t(1071), Tuint16_t(1071), Tuint16_t(1071), Tuint16_t(1071), Tuint16_t(1071), Tuint16_t(1071), Tuint16_t(1071), Tuint16_t(1071), Tuint16_t(1071), Tuint16_t(1071), Tuint16_t(1071), Tuint16_t(1071), Tuint16_t(1071), Tuint16_t(1071), Tuint16_t(1071),
Tuint16_t(1071), Tuint16_t(1071), Tuint16_t(1071), Tuint16_t(1071), Tuint16_t(1071), Tuint16_t(1071), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(1072), Tuint16_t(1073), Tuint16_t(1073), Tuint16_t(1073), Tuint16_t(1073), Tuint16_t(1073), Tuint16_t(1073),
Tuint16_t(1074), Tuint16_t(1074), Tuint16_t(1074), Tuint16_t(1074), Tuint16_t(1074), Tuint16_t(1074), Tuint16_t(1074), Tuint16_t(1074), Tuint16_t(1074), Tuint16_t(1074), Tuint16_t(1074), Tuint16_t(1074), Tuint16_t(1074), Tuint16_t(1074), Tuint16_t(1074), Tuint16_t(1074),
Tuint16_t(1074), Tuint16_t(1074), Tuint16_t(1074), Tuint16_t(1074), Tuint16_t(1074), Tuint16_t(1074), Tuint16_t(262), Tuint16_t(262), Tuint16_t(1075), Tuint16_t(1075), Tuint16_t(1075), Tuint16_t(1075), Tuint16_t(1075), Tuint16_t(1075), Tuint16_t(1075), Tuint16_t(1075),
Tuint16_t(1076), Tuint16_t(1076), Tuint16_t(1076), Tuint16_t(1076), Tuint16_t(1076), Tuint16_t(1076), Tuint16_t(1076), Tuint16_t(1076), Tuint16_t(1076), Tuint16_t(1076), Tuint16_t(1076), Tuint16_t(1076), Tuint16_t(1076), Tuint16_t(1076), Tuint16_t(1076), Tuint16_t(1076),
Tuint16_t(1076), Tuint16_t(1076), Tuint16_t(1076), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(1077), Tuint16_t(1077), Tuint16_t(1077), Tuint16_t(1077), Tuint16_t(1077), Tuint16_t(1077), Tuint16_t(1077), Tuint16_t(1077),
// block 164
Tuint16_t(1078), Tuint16_t(1078), Tuint16_t(1078), Tuint16_t(1078), Tuint16_t(1078), Tuint16_t(1078), Tuint16_t(1078), Tuint16_t(1078), Tuint16_t(1078), Tuint16_t(1078), Tuint16_t(1078), Tuint16_t(1078), Tuint16_t(1078), Tuint16_t(1078), Tuint16_t(1078), Tuint16_t(1078),
Tuint16_t(1078), Tuint16_t(1078), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(1079), Tuint16_t(1079), Tuint16_t(1079), Tuint16_t(1079), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262),
Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(1080), Tuint16_t(1080), Tuint16_t(1080), Tuint16_t(1080), Tuint16_t(1080), Tuint16_t(1080), Tuint16_t(1080),
Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262),
Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262),
Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262),
Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262),
Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262),
// block 165
Tuint16_t(1081), Tuint16_t(1081), Tuint16_t(1081), Tuint16_t(1081), Tuint16_t(1081), Tuint16_t(1081), Tuint16_t(1081), Tuint16_t(1081), Tuint16_t(1081), Tuint16_t(1081), Tuint16_t(1081), Tuint16_t(1081), Tuint16_t(1081), Tuint16_t(1081), Tuint16_t(1081), Tuint16_t(1081),
Tuint16_t(1081), Tuint16_t(1081), Tuint16_t(1081), Tuint16_t(1081), Tuint16_t(1081), Tuint16_t(1081), Tuint16_t(1081), Tuint16_t(1081), Tuint16_t(1081), Tuint16_t(1081), Tuint16_t(1081), Tuint16_t(1081), Tuint16_t(1081), Tuint16_t(1081), Tuint16_t(1081), Tuint16_t(1081),
Tuint16_t(1081), Tuint16_t(1081), Tuint16_t(1081), Tuint16_t(1081), Tuint16_t(1081), Tuint16_t(1081), Tuint16_t(1081), Tuint16_t(1081), Tuint16_t(1081), Tuint16_t(1081), Tuint16_t(1081), Tuint16_t(1081), Tuint16_t(1081), Tuint16_t(1081), Tuint16_t(1081), Tuint16_t(1081),
Tuint16_t(1081), Tuint16_t(1081), Tuint16_t(1081), Tuint16_t(1081), Tuint16_t(1081), Tuint16_t(1081), Tuint16_t(1081), Tuint16_t(1081), Tuint16_t(1081), Tuint16_t(1081), Tuint16_t(1081), Tuint16_t(1081), Tuint16_t(1081), Tuint16_t(1081), Tuint16_t(1081), Tuint16_t(1081),
Tuint16_t(1081), Tuint16_t(1081), Tuint16_t(1081), Tuint16_t(1081), Tuint16_t(1081), Tuint16_t(1081), Tuint16_t(1081), Tuint16_t(1081), Tuint16_t(1081), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262),
Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262),
Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262),
Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262),
// block 166
Tuint16_t(1082), Tuint16_t(1082), Tuint16_t(1082), Tuint16_t(1082), Tuint16_t(1082), Tuint16_t(1082), Tuint16_t(1082), Tuint16_t(1082), Tuint16_t(1082), Tuint16_t(1082), Tuint16_t(1082), Tuint16_t(1082), Tuint16_t(1082), Tuint16_t(1082), Tuint16_t(1082), Tuint16_t(1082),
Tuint16_t(1082), Tuint16_t(1082), Tuint16_t(1082), Tuint16_t(1082), Tuint16_t(1082), Tuint16_t(1082), Tuint16_t(1082), Tuint16_t(1082), Tuint16_t(1082), Tuint16_t(1082), Tuint16_t(1082), Tuint16_t(1082), Tuint16_t(1082), Tuint16_t(1082), Tuint16_t(1082), Tuint16_t(1082),
Tuint16_t(1082), Tuint16_t(1082), Tuint16_t(1082), Tuint16_t(1082), Tuint16_t(1082), Tuint16_t(1082), Tuint16_t(1082), Tuint16_t(1082), Tuint16_t(1082), Tuint16_t(1082), Tuint16_t(1082), Tuint16_t(1082), Tuint16_t(1082), Tuint16_t(1082), Tuint16_t(1082), Tuint16_t(1082),
Tuint16_t(1082), Tuint16_t(1082), Tuint16_t(1082), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262),
Tuint16_t(1083), Tuint16_t(1083), Tuint16_t(1083), Tuint16_t(1083), Tuint16_t(1083), Tuint16_t(1083), Tuint16_t(1083), Tuint16_t(1083), Tuint16_t(1083), Tuint16_t(1083), Tuint16_t(1083), Tuint16_t(1083), Tuint16_t(1083), Tuint16_t(1083), Tuint16_t(1083), Tuint16_t(1083),
Tuint16_t(1083), Tuint16_t(1083), Tuint16_t(1083), Tuint16_t(1083), Tuint16_t(1083), Tuint16_t(1083), Tuint16_t(1083), Tuint16_t(1083), Tuint16_t(1083), Tuint16_t(1083), Tuint16_t(1083), Tuint16_t(1083), Tuint16_t(1083), Tuint16_t(1083), Tuint16_t(1083), Tuint16_t(1083),
Tuint16_t(1083), Tuint16_t(1083), Tuint16_t(1083), Tuint16_t(1083), Tuint16_t(1083), Tuint16_t(1083), Tuint16_t(1083), Tuint16_t(1083), Tuint16_t(1083), Tuint16_t(1083), Tuint16_t(1083), Tuint16_t(1083), Tuint16_t(1083), Tuint16_t(1083), Tuint16_t(1083), Tuint16_t(1083),
Tuint16_t(1083), Tuint16_t(1083), Tuint16_t(1083), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(1084), Tuint16_t(1084), Tuint16_t(1084), Tuint16_t(1084), Tuint16_t(1084), Tuint16_t(1084),
// block 167
Tuint16_t(1085), Tuint16_t(1085), Tuint16_t(1085), Tuint16_t(1085), Tuint16_t(1085), Tuint16_t(1085), Tuint16_t(1085), Tuint16_t(1085), Tuint16_t(1085), Tuint16_t(1085), Tuint16_t(1085), Tuint16_t(1085), Tuint16_t(1085), Tuint16_t(1085), Tuint16_t(1085), Tuint16_t(1085),
Tuint16_t(1085), Tuint16_t(1085), Tuint16_t(1085), Tuint16_t(1085), Tuint16_t(1085), Tuint16_t(1085), Tuint16_t(1085), Tuint16_t(1085), Tuint16_t(1085), Tuint16_t(1085), Tuint16_t(1085), Tuint16_t(1085), Tuint16_t(1085), Tuint16_t(1085), Tuint16_t(1085), Tuint16_t(1085),
Tuint16_t(1085), Tuint16_t(1085), Tuint16_t(1086), Tuint16_t(1086), Tuint16_t(1087), Tuint16_t(1087), Tuint16_t(1087), Tuint16_t(1087), Tuint16_t(302), Tuint16_t(302), Tuint16_t(302), Tuint16_t(302), Tuint16_t(302), Tuint16_t(302), Tuint16_t(302), Tuint16_t(302),
Tuint16_t(1088), Tuint16_t(1088), Tuint16_t(1088), Tuint16_t(1088), Tuint16_t(1088), Tuint16_t(1088), Tuint16_t(1088), Tuint16_t(1088), Tuint16_t(1088), Tuint16_t(1088), Tuint16_t(302), Tuint16_t(302), Tuint16_t(302), Tuint16_t(302), Tuint16_t(302), Tuint16_t(302),
Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262),
Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262),
Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262),
Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262),
// block 168
Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262),
Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262),
Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262),
Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262),
Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262),
Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262),
Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262),
Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262),
// block 169
Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262),
Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262),
Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262),
Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262),
Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262),
Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262),
Tuint16_t(1089), Tuint16_t(1089), Tuint16_t(1089), Tuint16_t(1089), Tuint16_t(1089), Tuint16_t(1089), Tuint16_t(1089), Tuint16_t(1089), Tuint16_t(1089), Tuint16_t(1089), Tuint16_t(1089), Tuint16_t(1089), Tuint16_t(1089), Tuint16_t(1089), Tuint16_t(1089), Tuint16_t(1089),
Tuint16_t(1089), Tuint16_t(1089), Tuint16_t(1089), Tuint16_t(1089), Tuint16_t(1089), Tuint16_t(1089), Tuint16_t(1089), Tuint16_t(1089), Tuint16_t(1089), Tuint16_t(1089), Tuint16_t(1089), Tuint16_t(1089), Tuint16_t(1089), Tuint16_t(1089), Tuint16_t(1089), Tuint16_t(262),
// block 170
Tuint16_t(1090), Tuint16_t(1090), Tuint16_t(1090), Tuint16_t(1090), Tuint16_t(1090), Tuint16_t(1090), Tuint16_t(1090), Tuint16_t(1090), Tuint16_t(1090), Tuint16_t(1090), Tuint16_t(1090), Tuint16_t(1090), Tuint16_t(1090), Tuint16_t(1090), Tuint16_t(1090), Tuint16_t(1090),
Tuint16_t(1090), Tuint16_t(1090), Tuint16_t(1090), Tuint16_t(1090), Tuint16_t(1090), Tuint16_t(1090), Tuint16_t(1090), Tuint16_t(1090), Tuint16_t(1090), Tuint16_t(1090), Tuint16_t(1090), Tuint16_t(1090), Tuint16_t(1090), Tuint16_t(1090), Tuint16_t(1090), Tuint16_t(1090),
Tuint16_t(1090), Tuint16_t(1090), Tuint16_t(1090), Tuint16_t(1090), Tuint16_t(1090), Tuint16_t(1090), Tuint16_t(1090), Tuint16_t(1090), Tuint16_t(1090), Tuint16_t(1090), Tuint16_t(262), Tuint16_t(1091), Tuint16_t(1091), Tuint16_t(1092), Tuint16_t(262), Tuint16_t(262),
Tuint16_t(1090), Tuint16_t(1090), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262),
Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262),
Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262),
Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262),
Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262),
// block 171
Tuint16_t(1093), Tuint16_t(1093), Tuint16_t(1093), Tuint16_t(1093), Tuint16_t(1093), Tuint16_t(1093), Tuint16_t(1093), Tuint16_t(1093), Tuint16_t(1093), Tuint16_t(1093), Tuint16_t(1093), Tuint16_t(1093), Tuint16_t(1093), Tuint16_t(1093), Tuint16_t(1093), Tuint16_t(1093),
Tuint16_t(1093), Tuint16_t(1093), Tuint16_t(1093), Tuint16_t(1093), Tuint16_t(1093), Tuint16_t(1093), Tuint16_t(1093), Tuint16_t(1093), Tuint16_t(1093), Tuint16_t(1093), Tuint16_t(1093), Tuint16_t(1093), Tuint16_t(1093), Tuint16_t(1094), Tuint16_t(1094), Tuint16_t(1094),
Tuint16_t(1094), Tuint16_t(1094), Tuint16_t(1094), Tuint16_t(1094), Tuint16_t(1094), Tuint16_t(1094), Tuint16_t(1094), Tuint16_t(1093), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262),
Tuint16_t(1095), Tuint16_t(1095), Tuint16_t(1095), Tuint16_t(1095), Tuint16_t(1095), Tuint16_t(1095), Tuint16_t(1095), Tuint16_t(1095), Tuint16_t(1095), Tuint16_t(1095), Tuint16_t(1095), Tuint16_t(1095), Tuint16_t(1095), Tuint16_t(1095), Tuint16_t(1095), Tuint16_t(1095),
Tuint16_t(1095), Tuint16_t(1095), Tuint16_t(1095), Tuint16_t(1095), Tuint16_t(1095), Tuint16_t(1095), Tuint16_t(1096), Tuint16_t(1096), Tuint16_t(1096), Tuint16_t(1096), Tuint16_t(1096), Tuint16_t(1096), Tuint16_t(1096), Tuint16_t(1096), Tuint16_t(1096), Tuint16_t(1096),
Tuint16_t(1096), Tuint16_t(1097), Tuint16_t(1097), Tuint16_t(1097), Tuint16_t(1097), Tuint16_t(1098), Tuint16_t(1098), Tuint16_t(1098), Tuint16_t(1098), Tuint16_t(1098), Tuint16_t(302), Tuint16_t(302), Tuint16_t(302), Tuint16_t(302), Tuint16_t(302), Tuint16_t(302),
Tuint16_t(302), Tuint16_t(302), Tuint16_t(302), Tuint16_t(302), Tuint16_t(302), Tuint16_t(302), Tuint16_t(302), Tuint16_t(302), Tuint16_t(302), Tuint16_t(302), Tuint16_t(302), Tuint16_t(302), Tuint16_t(302), Tuint16_t(302), Tuint16_t(302), Tuint16_t(302),
Tuint16_t(1099), Tuint16_t(1099), Tuint16_t(1099), Tuint16_t(1099), Tuint16_t(1099), Tuint16_t(1099), Tuint16_t(1099), Tuint16_t(1099), Tuint16_t(1099), Tuint16_t(1099), Tuint16_t(1099), Tuint16_t(1099), Tuint16_t(1099), Tuint16_t(1099), Tuint16_t(1099), Tuint16_t(1099),
// block 172
Tuint16_t(1099), Tuint16_t(1099), Tuint16_t(1100), Tuint16_t(1100), Tuint16_t(1100), Tuint16_t(1100), Tuint16_t(1101), Tuint16_t(1101), Tuint16_t(1101), Tuint16_t(1101), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262),
Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262),
Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262),
Tuint16_t(1102), Tuint16_t(1102), Tuint16_t(1102), Tuint16_t(1102), Tuint16_t(1102), Tuint16_t(1102), Tuint16_t(1102), Tuint16_t(1102), Tuint16_t(1102), Tuint16_t(1102), Tuint16_t(1102), Tuint16_t(1102), Tuint16_t(1102), Tuint16_t(1102), Tuint16_t(1102), Tuint16_t(1102),
Tuint16_t(1102), Tuint16_t(1102), Tuint16_t(1102), Tuint16_t(1102), Tuint16_t(1102), Tuint16_t(1103), Tuint16_t(1103), Tuint16_t(1103), Tuint16_t(1103), Tuint16_t(1103), Tuint16_t(1103), Tuint16_t(1103), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262),
Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262),
Tuint16_t(1104), Tuint16_t(1104), Tuint16_t(1104), Tuint16_t(1104), Tuint16_t(1104), Tuint16_t(1104), Tuint16_t(1104), Tuint16_t(1104), Tuint16_t(1104), Tuint16_t(1104), Tuint16_t(1104), Tuint16_t(1104), Tuint16_t(1104), Tuint16_t(1104), Tuint16_t(1104), Tuint16_t(1104),
Tuint16_t(1104), Tuint16_t(1104), Tuint16_t(1104), Tuint16_t(1104), Tuint16_t(1104), Tuint16_t(1104), Tuint16_t(1104), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262),
// block 173
Tuint16_t(1105), Tuint16_t(1106), Tuint16_t(1105), Tuint16_t(1107), Tuint16_t(1107), Tuint16_t(1107), Tuint16_t(1107), Tuint16_t(1107), Tuint16_t(1107), Tuint16_t(1107), Tuint16_t(1107), Tuint16_t(1107), Tuint16_t(1107), Tuint16_t(1107), Tuint16_t(1107), Tuint16_t(1107),
Tuint16_t(1107), Tuint16_t(1107), Tuint16_t(1107), Tuint16_t(1107), Tuint16_t(1107), Tuint16_t(1107), Tuint16_t(1107), Tuint16_t(1107), Tuint16_t(1107), Tuint16_t(1107), Tuint16_t(1107), Tuint16_t(1107), Tuint16_t(1107), Tuint16_t(1107), Tuint16_t(1107), Tuint16_t(1107),
Tuint16_t(1107), Tuint16_t(1107), Tuint16_t(1107), Tuint16_t(1107), Tuint16_t(1107), Tuint16_t(1107), Tuint16_t(1107), Tuint16_t(1107), Tuint16_t(1107), Tuint16_t(1107), Tuint16_t(1107), Tuint16_t(1107), Tuint16_t(1107), Tuint16_t(1107), Tuint16_t(1107), Tuint16_t(1107),
Tuint16_t(1107), Tuint16_t(1107), Tuint16_t(1107), Tuint16_t(1107), Tuint16_t(1107), Tuint16_t(1107), Tuint16_t(1107), Tuint16_t(1107), Tuint16_t(1106), Tuint16_t(1106), Tuint16_t(1106), Tuint16_t(1106), Tuint16_t(1106), Tuint16_t(1106), Tuint16_t(1106), Tuint16_t(1106),
Tuint16_t(1106), Tuint16_t(1106), Tuint16_t(1106), Tuint16_t(1106), Tuint16_t(1106), Tuint16_t(1106), Tuint16_t(1108), Tuint16_t(1109), Tuint16_t(1109), Tuint16_t(1110), Tuint16_t(1110), Tuint16_t(1110), Tuint16_t(1110), Tuint16_t(1110), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(163), Tuint16_t(163), Tuint16_t(1111), Tuint16_t(1111), Tuint16_t(1111), Tuint16_t(1111), Tuint16_t(1111), Tuint16_t(1111), Tuint16_t(1111), Tuint16_t(1111), Tuint16_t(1111), Tuint16_t(1111), Tuint16_t(1111), Tuint16_t(1111), Tuint16_t(1111), Tuint16_t(1111),
Tuint16_t(1111), Tuint16_t(1111), Tuint16_t(1111), Tuint16_t(1111), Tuint16_t(1111), Tuint16_t(1111), Tuint16_t(1112), Tuint16_t(1112), Tuint16_t(1112), Tuint16_t(1112), Tuint16_t(1112), Tuint16_t(1112), Tuint16_t(1112), Tuint16_t(1112), Tuint16_t(1112), Tuint16_t(1112),
Tuint16_t(1108), Tuint16_t(1107), Tuint16_t(1107), Tuint16_t(1106), Tuint16_t(1106), Tuint16_t(1107), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(1113),
// block 174
Tuint16_t(1114), Tuint16_t(1114), Tuint16_t(1115), Tuint16_t(1116), Tuint16_t(1116), Tuint16_t(1116), Tuint16_t(1116), Tuint16_t(1116), Tuint16_t(1116), Tuint16_t(1116), Tuint16_t(1116), Tuint16_t(1116), Tuint16_t(1116), Tuint16_t(1116), Tuint16_t(1116), Tuint16_t(1116),
Tuint16_t(1116), Tuint16_t(1116), Tuint16_t(1116), Tuint16_t(1116), Tuint16_t(1116), Tuint16_t(1116), Tuint16_t(1116), Tuint16_t(1116), Tuint16_t(1116), Tuint16_t(1116), Tuint16_t(1116), Tuint16_t(1116), Tuint16_t(1116), Tuint16_t(1116), Tuint16_t(1116), Tuint16_t(1116),
Tuint16_t(1116), Tuint16_t(1116), Tuint16_t(1116), Tuint16_t(1116), Tuint16_t(1116), Tuint16_t(1116), Tuint16_t(1116), Tuint16_t(1116), Tuint16_t(1116), Tuint16_t(1116), Tuint16_t(1116), Tuint16_t(1116), Tuint16_t(1116), Tuint16_t(1116), Tuint16_t(1116), Tuint16_t(1116),
Tuint16_t(1115), Tuint16_t(1115), Tuint16_t(1115), Tuint16_t(1117), Tuint16_t(1117), Tuint16_t(1117), Tuint16_t(1117), Tuint16_t(1115), Tuint16_t(1115), Tuint16_t(1118), Tuint16_t(1119), Tuint16_t(1120), Tuint16_t(1120), Tuint16_t(1121), Tuint16_t(1122), Tuint16_t(1122),
Tuint16_t(1122), Tuint16_t(1122), Tuint16_t(1117), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(1121), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(1123), Tuint16_t(1123), Tuint16_t(1123), Tuint16_t(1123), Tuint16_t(1123), Tuint16_t(1123), Tuint16_t(1123), Tuint16_t(1123), Tuint16_t(1123), Tuint16_t(1123), Tuint16_t(1123), Tuint16_t(1123), Tuint16_t(1123), Tuint16_t(1123), Tuint16_t(1123), Tuint16_t(1123),
Tuint16_t(1123), Tuint16_t(1123), Tuint16_t(1123), Tuint16_t(1123), Tuint16_t(1123), Tuint16_t(1123), Tuint16_t(1123), Tuint16_t(1123), Tuint16_t(1123), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(1124), Tuint16_t(1124), Tuint16_t(1124), Tuint16_t(1124), Tuint16_t(1124), Tuint16_t(1124), Tuint16_t(1124), Tuint16_t(1124), Tuint16_t(1124), Tuint16_t(1124), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
// block 175
Tuint16_t(1125), Tuint16_t(1125), Tuint16_t(1125), Tuint16_t(1126), Tuint16_t(1126), Tuint16_t(1126), Tuint16_t(1126), Tuint16_t(1126), Tuint16_t(1126), Tuint16_t(1126), Tuint16_t(1126), Tuint16_t(1126), Tuint16_t(1126), Tuint16_t(1126), Tuint16_t(1126), Tuint16_t(1126),
Tuint16_t(1126), Tuint16_t(1126), Tuint16_t(1126), Tuint16_t(1126), Tuint16_t(1126), Tuint16_t(1126), Tuint16_t(1126), Tuint16_t(1126), Tuint16_t(1126), Tuint16_t(1126), Tuint16_t(1126), Tuint16_t(1126), Tuint16_t(1126), Tuint16_t(1126), Tuint16_t(1126), Tuint16_t(1126),
Tuint16_t(1126), Tuint16_t(1126), Tuint16_t(1126), Tuint16_t(1126), Tuint16_t(1126), Tuint16_t(1126), Tuint16_t(1126), Tuint16_t(1125), Tuint16_t(1125), Tuint16_t(1125), Tuint16_t(1125), Tuint16_t(1125), Tuint16_t(1127), Tuint16_t(1125), Tuint16_t(1125), Tuint16_t(1125),
Tuint16_t(1125), Tuint16_t(1125), Tuint16_t(1125), Tuint16_t(1128), Tuint16_t(1128), Tuint16_t(163), Tuint16_t(1129), Tuint16_t(1129), Tuint16_t(1129), Tuint16_t(1129), Tuint16_t(1129), Tuint16_t(1129), Tuint16_t(1129), Tuint16_t(1129), Tuint16_t(1129), Tuint16_t(1129),
Tuint16_t(1130), Tuint16_t(1131), Tuint16_t(1131), Tuint16_t(1131), Tuint16_t(1126), Tuint16_t(1127), Tuint16_t(1127), Tuint16_t(1126), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(1132), Tuint16_t(1132), Tuint16_t(1132), Tuint16_t(1132), Tuint16_t(1132), Tuint16_t(1132), Tuint16_t(1132), Tuint16_t(1132), Tuint16_t(1132), Tuint16_t(1132), Tuint16_t(1132), Tuint16_t(1132), Tuint16_t(1132), Tuint16_t(1132), Tuint16_t(1132), Tuint16_t(1132),
Tuint16_t(1132), Tuint16_t(1132), Tuint16_t(1132), Tuint16_t(1132), Tuint16_t(1132), Tuint16_t(1132), Tuint16_t(1132), Tuint16_t(1132), Tuint16_t(1132), Tuint16_t(1132), Tuint16_t(1132), Tuint16_t(1132), Tuint16_t(1132), Tuint16_t(1132), Tuint16_t(1132), Tuint16_t(1132),
Tuint16_t(1132), Tuint16_t(1132), Tuint16_t(1132), Tuint16_t(1133), Tuint16_t(1134), Tuint16_t(1134), Tuint16_t(1132), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
// block 176
Tuint16_t(1135), Tuint16_t(1135), Tuint16_t(1136), Tuint16_t(1137), Tuint16_t(1137), Tuint16_t(1137), Tuint16_t(1137), Tuint16_t(1137), Tuint16_t(1137), Tuint16_t(1137), Tuint16_t(1137), Tuint16_t(1137), Tuint16_t(1137), Tuint16_t(1137), Tuint16_t(1137), Tuint16_t(1137),
Tuint16_t(1137), Tuint16_t(1137), Tuint16_t(1137), Tuint16_t(1137), Tuint16_t(1137), Tuint16_t(1137), Tuint16_t(1137), Tuint16_t(1137), Tuint16_t(1137), Tuint16_t(1137), Tuint16_t(1137), Tuint16_t(1137), Tuint16_t(1137), Tuint16_t(1137), Tuint16_t(1137), Tuint16_t(1137),
Tuint16_t(1137), Tuint16_t(1137), Tuint16_t(1137), Tuint16_t(1137), Tuint16_t(1137), Tuint16_t(1137), Tuint16_t(1137), Tuint16_t(1137), Tuint16_t(1137), Tuint16_t(1137), Tuint16_t(1137), Tuint16_t(1137), Tuint16_t(1137), Tuint16_t(1137), Tuint16_t(1137), Tuint16_t(1137),
Tuint16_t(1137), Tuint16_t(1137), Tuint16_t(1137), Tuint16_t(1136), Tuint16_t(1136), Tuint16_t(1136), Tuint16_t(1135), Tuint16_t(1135), Tuint16_t(1135), Tuint16_t(1135), Tuint16_t(1135), Tuint16_t(1135), Tuint16_t(1135), Tuint16_t(1135), Tuint16_t(1135), Tuint16_t(1136),
Tuint16_t(1138), Tuint16_t(1137), Tuint16_t(1139), Tuint16_t(1139), Tuint16_t(1137), Tuint16_t(1140), Tuint16_t(1140), Tuint16_t(1141), Tuint16_t(1141), Tuint16_t(1142), Tuint16_t(1143), Tuint16_t(1143), Tuint16_t(1143), Tuint16_t(1140), Tuint16_t(1136), Tuint16_t(1135),
Tuint16_t(1144), Tuint16_t(1144), Tuint16_t(1144), Tuint16_t(1144), Tuint16_t(1144), Tuint16_t(1144), Tuint16_t(1144), Tuint16_t(1144), Tuint16_t(1144), Tuint16_t(1144), Tuint16_t(1137), Tuint16_t(1141), Tuint16_t(1137), Tuint16_t(1141), Tuint16_t(1140), Tuint16_t(1140),
Tuint16_t(163), Tuint16_t(1145), Tuint16_t(1145), Tuint16_t(1145), Tuint16_t(1145), Tuint16_t(1145), Tuint16_t(1145), Tuint16_t(1145), Tuint16_t(1145), Tuint16_t(1145), Tuint16_t(1145), Tuint16_t(1145), Tuint16_t(1145), Tuint16_t(1145), Tuint16_t(1145), Tuint16_t(1145),
Tuint16_t(1145), Tuint16_t(1145), Tuint16_t(1145), Tuint16_t(1145), Tuint16_t(1145), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
// block 177
Tuint16_t(1146), Tuint16_t(1146), Tuint16_t(1146), Tuint16_t(1146), Tuint16_t(1146), Tuint16_t(1146), Tuint16_t(1146), Tuint16_t(1146), Tuint16_t(1146), Tuint16_t(1146), Tuint16_t(1146), Tuint16_t(1146), Tuint16_t(1146), Tuint16_t(1146), Tuint16_t(1146), Tuint16_t(1146),
Tuint16_t(1146), Tuint16_t(1146), Tuint16_t(163), Tuint16_t(1146), Tuint16_t(1146), Tuint16_t(1146), Tuint16_t(1146), Tuint16_t(1146), Tuint16_t(1146), Tuint16_t(1146), Tuint16_t(1146), Tuint16_t(1146), Tuint16_t(1146), Tuint16_t(1146), Tuint16_t(1146), Tuint16_t(1146),
Tuint16_t(1146), Tuint16_t(1146), Tuint16_t(1146), Tuint16_t(1146), Tuint16_t(1146), Tuint16_t(1146), Tuint16_t(1146), Tuint16_t(1146), Tuint16_t(1146), Tuint16_t(1146), Tuint16_t(1146), Tuint16_t(1146), Tuint16_t(1147), Tuint16_t(1147), Tuint16_t(1147), Tuint16_t(1148),
Tuint16_t(1148), Tuint16_t(1148), Tuint16_t(1147), Tuint16_t(1147), Tuint16_t(1148), Tuint16_t(1149), Tuint16_t(1150), Tuint16_t(1148), Tuint16_t(1151), Tuint16_t(1151), Tuint16_t(1152), Tuint16_t(1151), Tuint16_t(1151), Tuint16_t(1153), Tuint16_t(1148), Tuint16_t(163),
Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
// block 178
Tuint16_t(1154), Tuint16_t(1154), Tuint16_t(1154), Tuint16_t(1154), Tuint16_t(1154), Tuint16_t(1154), Tuint16_t(1154), Tuint16_t(163), Tuint16_t(1154), Tuint16_t(163), Tuint16_t(1154), Tuint16_t(1154), Tuint16_t(1154), Tuint16_t(1154), Tuint16_t(163), Tuint16_t(1154),
Tuint16_t(1154), Tuint16_t(1154), Tuint16_t(1154), Tuint16_t(1154), Tuint16_t(1154), Tuint16_t(1154), Tuint16_t(1154), Tuint16_t(1154), Tuint16_t(1154), Tuint16_t(1154), Tuint16_t(1154), Tuint16_t(1154), Tuint16_t(1154), Tuint16_t(1154), Tuint16_t(163), Tuint16_t(1154),
Tuint16_t(1154), Tuint16_t(1154), Tuint16_t(1154), Tuint16_t(1154), Tuint16_t(1154), Tuint16_t(1154), Tuint16_t(1154), Tuint16_t(1154), Tuint16_t(1154), Tuint16_t(1155), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(1156), Tuint16_t(1156), Tuint16_t(1156), Tuint16_t(1156), Tuint16_t(1156), Tuint16_t(1156), Tuint16_t(1156), Tuint16_t(1156), Tuint16_t(1156), Tuint16_t(1156), Tuint16_t(1156), Tuint16_t(1156), Tuint16_t(1156), Tuint16_t(1156), Tuint16_t(1156), Tuint16_t(1156),
Tuint16_t(1156), Tuint16_t(1156), Tuint16_t(1156), Tuint16_t(1156), Tuint16_t(1156), Tuint16_t(1156), Tuint16_t(1156), Tuint16_t(1156), Tuint16_t(1156), Tuint16_t(1156), Tuint16_t(1156), Tuint16_t(1156), Tuint16_t(1156), Tuint16_t(1156), Tuint16_t(1156), Tuint16_t(1156),
Tuint16_t(1156), Tuint16_t(1156), Tuint16_t(1156), Tuint16_t(1156), Tuint16_t(1156), Tuint16_t(1156), Tuint16_t(1156), Tuint16_t(1156), Tuint16_t(1156), Tuint16_t(1156), Tuint16_t(1156), Tuint16_t(1156), Tuint16_t(1156), Tuint16_t(1156), Tuint16_t(1156), Tuint16_t(1157),
Tuint16_t(1158), Tuint16_t(1158), Tuint16_t(1158), Tuint16_t(1157), Tuint16_t(1157), Tuint16_t(1157), Tuint16_t(1157), Tuint16_t(1157), Tuint16_t(1157), Tuint16_t(1159), Tuint16_t(1160), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(1161), Tuint16_t(1161), Tuint16_t(1161), Tuint16_t(1161), Tuint16_t(1161), Tuint16_t(1161), Tuint16_t(1161), Tuint16_t(1161), Tuint16_t(1161), Tuint16_t(1161), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
// block 179
Tuint16_t(1162), Tuint16_t(1163), Tuint16_t(1164), Tuint16_t(1165), Tuint16_t(163), Tuint16_t(1166), Tuint16_t(1166), Tuint16_t(1166), Tuint16_t(1166), Tuint16_t(1166), Tuint16_t(1166), Tuint16_t(1166), Tuint16_t(1166), Tuint16_t(163), Tuint16_t(163), Tuint16_t(1166),
Tuint16_t(1166), Tuint16_t(163), Tuint16_t(163), Tuint16_t(1166), Tuint16_t(1166), Tuint16_t(1166), Tuint16_t(1166), Tuint16_t(1166), Tuint16_t(1166), Tuint16_t(1166), Tuint16_t(1166), Tuint16_t(1166), Tuint16_t(1166), Tuint16_t(1166), Tuint16_t(1166), Tuint16_t(1166),
Tuint16_t(1166), Tuint16_t(1166), Tuint16_t(1166), Tuint16_t(1166), Tuint16_t(1166), Tuint16_t(1166), Tuint16_t(1166), Tuint16_t(1166), Tuint16_t(1166), Tuint16_t(163), Tuint16_t(1166), Tuint16_t(1166), Tuint16_t(1166), Tuint16_t(1166), Tuint16_t(1166), Tuint16_t(1166),
Tuint16_t(1166), Tuint16_t(163), Tuint16_t(1166), Tuint16_t(1166), Tuint16_t(163), Tuint16_t(1166), Tuint16_t(1166), Tuint16_t(1166), Tuint16_t(1166), Tuint16_t(1166), Tuint16_t(163), Tuint16_t(1167), Tuint16_t(1168), Tuint16_t(1166), Tuint16_t(1169), Tuint16_t(1164),
Tuint16_t(1162), Tuint16_t(1164), Tuint16_t(1164), Tuint16_t(1164), Tuint16_t(1164), Tuint16_t(163), Tuint16_t(163), Tuint16_t(1164), Tuint16_t(1164), Tuint16_t(163), Tuint16_t(163), Tuint16_t(1164), Tuint16_t(1164), Tuint16_t(1170), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(1166), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(1169), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(1171), Tuint16_t(1166), Tuint16_t(1166),
Tuint16_t(1166), Tuint16_t(1166), Tuint16_t(1164), Tuint16_t(1164), Tuint16_t(163), Tuint16_t(163), Tuint16_t(1172), Tuint16_t(1172), Tuint16_t(1172), Tuint16_t(1172), Tuint16_t(1172), Tuint16_t(1172), Tuint16_t(1172), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(1172), Tuint16_t(1172), Tuint16_t(1172), Tuint16_t(1172), Tuint16_t(1172), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
// block 180
Tuint16_t(1173), Tuint16_t(1173), Tuint16_t(1173), Tuint16_t(1173), Tuint16_t(1173), Tuint16_t(1173), Tuint16_t(1173), Tuint16_t(1173), Tuint16_t(1173), Tuint16_t(1173), Tuint16_t(1173), Tuint16_t(1173), Tuint16_t(1173), Tuint16_t(1173), Tuint16_t(1173), Tuint16_t(1173),
Tuint16_t(1173), Tuint16_t(1173), Tuint16_t(1173), Tuint16_t(1173), Tuint16_t(1173), Tuint16_t(1173), Tuint16_t(1173), Tuint16_t(1173), Tuint16_t(1173), Tuint16_t(1173), Tuint16_t(1173), Tuint16_t(1173), Tuint16_t(1173), Tuint16_t(1173), Tuint16_t(1173), Tuint16_t(1173),
Tuint16_t(1173), Tuint16_t(1173), Tuint16_t(1173), Tuint16_t(1173), Tuint16_t(1173), Tuint16_t(1173), Tuint16_t(1173), Tuint16_t(1173), Tuint16_t(1173), Tuint16_t(1173), Tuint16_t(1173), Tuint16_t(1173), Tuint16_t(1173), Tuint16_t(1173), Tuint16_t(1173), Tuint16_t(1173),
Tuint16_t(1173), Tuint16_t(1173), Tuint16_t(1173), Tuint16_t(1173), Tuint16_t(1173), Tuint16_t(1174), Tuint16_t(1174), Tuint16_t(1174), Tuint16_t(1175), Tuint16_t(1175), Tuint16_t(1175), Tuint16_t(1175), Tuint16_t(1175), Tuint16_t(1175), Tuint16_t(1175), Tuint16_t(1175),
Tuint16_t(1174), Tuint16_t(1174), Tuint16_t(1176), Tuint16_t(1175), Tuint16_t(1175), Tuint16_t(1174), Tuint16_t(1177), Tuint16_t(1173), Tuint16_t(1173), Tuint16_t(1173), Tuint16_t(1173), Tuint16_t(1178), Tuint16_t(1178), Tuint16_t(1179), Tuint16_t(1180), Tuint16_t(1180),
Tuint16_t(1181), Tuint16_t(1181), Tuint16_t(1181), Tuint16_t(1181), Tuint16_t(1181), Tuint16_t(1181), Tuint16_t(1181), Tuint16_t(1181), Tuint16_t(1181), Tuint16_t(1181), Tuint16_t(1179), Tuint16_t(1179), Tuint16_t(163), Tuint16_t(1180), Tuint16_t(1182), Tuint16_t(1173),
Tuint16_t(1173), Tuint16_t(1173), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
// block 181
Tuint16_t(1183), Tuint16_t(1183), Tuint16_t(1183), Tuint16_t(1183), Tuint16_t(1183), Tuint16_t(1183), Tuint16_t(1183), Tuint16_t(1183), Tuint16_t(1183), Tuint16_t(1183), Tuint16_t(1183), Tuint16_t(1183), Tuint16_t(1183), Tuint16_t(1183), Tuint16_t(1183), Tuint16_t(1183),
Tuint16_t(1183), Tuint16_t(1183), Tuint16_t(1183), Tuint16_t(1183), Tuint16_t(1183), Tuint16_t(1183), Tuint16_t(1183), Tuint16_t(1183), Tuint16_t(1183), Tuint16_t(1183), Tuint16_t(1183), Tuint16_t(1183), Tuint16_t(1183), Tuint16_t(1183), Tuint16_t(1183), Tuint16_t(1183),
Tuint16_t(1183), Tuint16_t(1183), Tuint16_t(1183), Tuint16_t(1183), Tuint16_t(1183), Tuint16_t(1183), Tuint16_t(1183), Tuint16_t(1183), Tuint16_t(1183), Tuint16_t(1183), Tuint16_t(1183), Tuint16_t(1183), Tuint16_t(1183), Tuint16_t(1183), Tuint16_t(1183), Tuint16_t(1183),
Tuint16_t(1184), Tuint16_t(1185), Tuint16_t(1185), Tuint16_t(1186), Tuint16_t(1186), Tuint16_t(1186), Tuint16_t(1186), Tuint16_t(1186), Tuint16_t(1186), Tuint16_t(1185), Tuint16_t(1186), Tuint16_t(1185), Tuint16_t(1185), Tuint16_t(1184), Tuint16_t(1185), Tuint16_t(1186),
Tuint16_t(1186), Tuint16_t(1185), Tuint16_t(1187), Tuint16_t(1188), Tuint16_t(1183), Tuint16_t(1183), Tuint16_t(1189), Tuint16_t(1183), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(1190), Tuint16_t(1190), Tuint16_t(1190), Tuint16_t(1190), Tuint16_t(1190), Tuint16_t(1190), Tuint16_t(1190), Tuint16_t(1190), Tuint16_t(1190), Tuint16_t(1190), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
// block 182
Tuint16_t(1191), Tuint16_t(1191), Tuint16_t(1191), Tuint16_t(1191), Tuint16_t(1191), Tuint16_t(1191), Tuint16_t(1191), Tuint16_t(1191), Tuint16_t(1191), Tuint16_t(1191), Tuint16_t(1191), Tuint16_t(1191), Tuint16_t(1191), Tuint16_t(1191), Tuint16_t(1191), Tuint16_t(1191),
Tuint16_t(1191), Tuint16_t(1191), Tuint16_t(1191), Tuint16_t(1191), Tuint16_t(1191), Tuint16_t(1191), Tuint16_t(1191), Tuint16_t(1191), Tuint16_t(1191), Tuint16_t(1191), Tuint16_t(1191), Tuint16_t(1191), Tuint16_t(1191), Tuint16_t(1191), Tuint16_t(1191), Tuint16_t(1191),
Tuint16_t(1191), Tuint16_t(1191), Tuint16_t(1191), Tuint16_t(1191), Tuint16_t(1191), Tuint16_t(1191), Tuint16_t(1191), Tuint16_t(1191), Tuint16_t(1191), Tuint16_t(1191), Tuint16_t(1191), Tuint16_t(1191), Tuint16_t(1191), Tuint16_t(1191), Tuint16_t(1191), Tuint16_t(1192),
Tuint16_t(1193), Tuint16_t(1193), Tuint16_t(1194), Tuint16_t(1194), Tuint16_t(1194), Tuint16_t(1194), Tuint16_t(163), Tuint16_t(163), Tuint16_t(1193), Tuint16_t(1193), Tuint16_t(1193), Tuint16_t(1193), Tuint16_t(1194), Tuint16_t(1194), Tuint16_t(1193), Tuint16_t(1195),
Tuint16_t(1196), Tuint16_t(1197), Tuint16_t(1198), Tuint16_t(1198), Tuint16_t(1199), Tuint16_t(1199), Tuint16_t(1200), Tuint16_t(1200), Tuint16_t(1200), Tuint16_t(1198), Tuint16_t(1198), Tuint16_t(1198), Tuint16_t(1198), Tuint16_t(1198), Tuint16_t(1198), Tuint16_t(1198),
Tuint16_t(1198), Tuint16_t(1198), Tuint16_t(1198), Tuint16_t(1198), Tuint16_t(1198), Tuint16_t(1198), Tuint16_t(1198), Tuint16_t(1198), Tuint16_t(1191), Tuint16_t(1191), Tuint16_t(1191), Tuint16_t(1191), Tuint16_t(1194), Tuint16_t(1194), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
// block 183
Tuint16_t(1201), Tuint16_t(1201), Tuint16_t(1201), Tuint16_t(1201), Tuint16_t(1201), Tuint16_t(1201), Tuint16_t(1201), Tuint16_t(1201), Tuint16_t(1201), Tuint16_t(1201), Tuint16_t(1201), Tuint16_t(1201), Tuint16_t(1201), Tuint16_t(1201), Tuint16_t(1201), Tuint16_t(1201),
Tuint16_t(1201), Tuint16_t(1201), Tuint16_t(1201), Tuint16_t(1201), Tuint16_t(1201), Tuint16_t(1201), Tuint16_t(1201), Tuint16_t(1201), Tuint16_t(1201), Tuint16_t(1201), Tuint16_t(1201), Tuint16_t(1201), Tuint16_t(1201), Tuint16_t(1201), Tuint16_t(1201), Tuint16_t(1201),
Tuint16_t(1201), Tuint16_t(1201), Tuint16_t(1201), Tuint16_t(1201), Tuint16_t(1201), Tuint16_t(1201), Tuint16_t(1201), Tuint16_t(1201), Tuint16_t(1201), Tuint16_t(1201), Tuint16_t(1201), Tuint16_t(1201), Tuint16_t(1201), Tuint16_t(1201), Tuint16_t(1201), Tuint16_t(1201),
Tuint16_t(1202), Tuint16_t(1202), Tuint16_t(1202), Tuint16_t(1203), Tuint16_t(1203), Tuint16_t(1203), Tuint16_t(1203), Tuint16_t(1203), Tuint16_t(1203), Tuint16_t(1203), Tuint16_t(1203), Tuint16_t(1202), Tuint16_t(1202), Tuint16_t(1203), Tuint16_t(1202), Tuint16_t(1204),
Tuint16_t(1203), Tuint16_t(1205), Tuint16_t(1205), Tuint16_t(1206), Tuint16_t(1201), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(1207), Tuint16_t(1207), Tuint16_t(1207), Tuint16_t(1207), Tuint16_t(1207), Tuint16_t(1207), Tuint16_t(1207), Tuint16_t(1207), Tuint16_t(1207), Tuint16_t(1207), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(530), Tuint16_t(530), Tuint16_t(530), Tuint16_t(530), Tuint16_t(530), Tuint16_t(530), Tuint16_t(530), Tuint16_t(530), Tuint16_t(530), Tuint16_t(530), Tuint16_t(530), Tuint16_t(530), Tuint16_t(530), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
// block 184
Tuint16_t(1208), Tuint16_t(1208), Tuint16_t(1208), Tuint16_t(1208), Tuint16_t(1208), Tuint16_t(1208), Tuint16_t(1208), Tuint16_t(1208), Tuint16_t(1208), Tuint16_t(1208), Tuint16_t(1208), Tuint16_t(1208), Tuint16_t(1208), Tuint16_t(1208), Tuint16_t(1208), Tuint16_t(1208),
Tuint16_t(1208), Tuint16_t(1208), Tuint16_t(1208), Tuint16_t(1208), Tuint16_t(1208), Tuint16_t(1208), Tuint16_t(1208), Tuint16_t(1208), Tuint16_t(1208), Tuint16_t(1208), Tuint16_t(1208), Tuint16_t(1208), Tuint16_t(1208), Tuint16_t(1208), Tuint16_t(1208), Tuint16_t(1208),
Tuint16_t(1208), Tuint16_t(1208), Tuint16_t(1208), Tuint16_t(1208), Tuint16_t(1208), Tuint16_t(1208), Tuint16_t(1208), Tuint16_t(1208), Tuint16_t(1208), Tuint16_t(1208), Tuint16_t(1208), Tuint16_t(1209), Tuint16_t(1210), Tuint16_t(1209), Tuint16_t(1210), Tuint16_t(1210),
Tuint16_t(1209), Tuint16_t(1209), Tuint16_t(1209), Tuint16_t(1209), Tuint16_t(1209), Tuint16_t(1209), Tuint16_t(1211), Tuint16_t(1212), Tuint16_t(1208), Tuint16_t(1213), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(1214), Tuint16_t(1214), Tuint16_t(1214), Tuint16_t(1214), Tuint16_t(1214), Tuint16_t(1214), Tuint16_t(1214), Tuint16_t(1214), Tuint16_t(1214), Tuint16_t(1214), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
// block 185
Tuint16_t(1215), Tuint16_t(1215), Tuint16_t(1215), Tuint16_t(1215), Tuint16_t(1215), Tuint16_t(1215), Tuint16_t(1215), Tuint16_t(1215), Tuint16_t(1215), Tuint16_t(1215), Tuint16_t(1215), Tuint16_t(1215), Tuint16_t(1215), Tuint16_t(1215), Tuint16_t(1215), Tuint16_t(1215),
Tuint16_t(1215), Tuint16_t(1215), Tuint16_t(1215), Tuint16_t(1215), Tuint16_t(1215), Tuint16_t(1215), Tuint16_t(1215), Tuint16_t(1215), Tuint16_t(1215), Tuint16_t(1215), Tuint16_t(1215), Tuint16_t(163), Tuint16_t(163), Tuint16_t(1216), Tuint16_t(1216), Tuint16_t(1216),
Tuint16_t(1217), Tuint16_t(1217), Tuint16_t(1216), Tuint16_t(1216), Tuint16_t(1216), Tuint16_t(1216), Tuint16_t(1218), Tuint16_t(1216), Tuint16_t(1216), Tuint16_t(1216), Tuint16_t(1216), Tuint16_t(1219), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(1220), Tuint16_t(1220), Tuint16_t(1220), Tuint16_t(1220), Tuint16_t(1220), Tuint16_t(1220), Tuint16_t(1220), Tuint16_t(1220), Tuint16_t(1220), Tuint16_t(1220), Tuint16_t(1221), Tuint16_t(1221), Tuint16_t(1222), Tuint16_t(1222), Tuint16_t(1222), Tuint16_t(1223),
Tuint16_t(1215), Tuint16_t(1215), Tuint16_t(1215), Tuint16_t(1215), Tuint16_t(1215), Tuint16_t(1215), Tuint16_t(1215), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
// block 186
Tuint16_t(1224), Tuint16_t(1224), Tuint16_t(1224), Tuint16_t(1224), Tuint16_t(1224), Tuint16_t(1224), Tuint16_t(1224), Tuint16_t(1224), Tuint16_t(1224), Tuint16_t(1224), Tuint16_t(1224), Tuint16_t(1224), Tuint16_t(1224), Tuint16_t(1224), Tuint16_t(1224), Tuint16_t(1224),
Tuint16_t(1224), Tuint16_t(1224), Tuint16_t(1224), Tuint16_t(1224), Tuint16_t(1224), Tuint16_t(1224), Tuint16_t(1224), Tuint16_t(1224), Tuint16_t(1224), Tuint16_t(1224), Tuint16_t(1224), Tuint16_t(1224), Tuint16_t(1224), Tuint16_t(1224), Tuint16_t(1224), Tuint16_t(1224),
Tuint16_t(1224), Tuint16_t(1224), Tuint16_t(1224), Tuint16_t(1224), Tuint16_t(1224), Tuint16_t(1224), Tuint16_t(1224), Tuint16_t(1224), Tuint16_t(1224), Tuint16_t(1224), Tuint16_t(1224), Tuint16_t(1224), Tuint16_t(1225), Tuint16_t(1225), Tuint16_t(1225), Tuint16_t(1226),
Tuint16_t(1226), Tuint16_t(1226), Tuint16_t(1226), Tuint16_t(1226), Tuint16_t(1226), Tuint16_t(1226), Tuint16_t(1226), Tuint16_t(1226), Tuint16_t(1225), Tuint16_t(1227), Tuint16_t(1228), Tuint16_t(1229), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
// block 187
Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(1230), Tuint16_t(1230), Tuint16_t(1230), Tuint16_t(1230), Tuint16_t(1230), Tuint16_t(1230), Tuint16_t(1230), Tuint16_t(1230), Tuint16_t(1230), Tuint16_t(1230), Tuint16_t(1230), Tuint16_t(1230), Tuint16_t(1230), Tuint16_t(1230), Tuint16_t(1230), Tuint16_t(1230),
Tuint16_t(1230), Tuint16_t(1230), Tuint16_t(1230), Tuint16_t(1230), Tuint16_t(1230), Tuint16_t(1230), Tuint16_t(1230), Tuint16_t(1230), Tuint16_t(1230), Tuint16_t(1230), Tuint16_t(1230), Tuint16_t(1230), Tuint16_t(1230), Tuint16_t(1230), Tuint16_t(1230), Tuint16_t(1230),
Tuint16_t(1231), Tuint16_t(1231), Tuint16_t(1231), Tuint16_t(1231), Tuint16_t(1231), Tuint16_t(1231), Tuint16_t(1231), Tuint16_t(1231), Tuint16_t(1231), Tuint16_t(1231), Tuint16_t(1231), Tuint16_t(1231), Tuint16_t(1231), Tuint16_t(1231), Tuint16_t(1231), Tuint16_t(1231),
Tuint16_t(1231), Tuint16_t(1231), Tuint16_t(1231), Tuint16_t(1231), Tuint16_t(1231), Tuint16_t(1231), Tuint16_t(1231), Tuint16_t(1231), Tuint16_t(1231), Tuint16_t(1231), Tuint16_t(1231), Tuint16_t(1231), Tuint16_t(1231), Tuint16_t(1231), Tuint16_t(1231), Tuint16_t(1231),
Tuint16_t(1232), Tuint16_t(1232), Tuint16_t(1232), Tuint16_t(1232), Tuint16_t(1232), Tuint16_t(1232), Tuint16_t(1232), Tuint16_t(1232), Tuint16_t(1232), Tuint16_t(1232), Tuint16_t(1233), Tuint16_t(1233), Tuint16_t(1233), Tuint16_t(1233), Tuint16_t(1233), Tuint16_t(1233),
Tuint16_t(1233), Tuint16_t(1233), Tuint16_t(1233), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(1234),
// block 188
Tuint16_t(1235), Tuint16_t(1235), Tuint16_t(1235), Tuint16_t(1235), Tuint16_t(1235), Tuint16_t(1235), Tuint16_t(1235), Tuint16_t(163), Tuint16_t(163), Tuint16_t(1235), Tuint16_t(163), Tuint16_t(163), Tuint16_t(1235), Tuint16_t(1235), Tuint16_t(1235), Tuint16_t(1235),
Tuint16_t(1235), Tuint16_t(1235), Tuint16_t(1235), Tuint16_t(1235), Tuint16_t(163), Tuint16_t(1235), Tuint16_t(1235), Tuint16_t(163), Tuint16_t(1235), Tuint16_t(1235), Tuint16_t(1235), Tuint16_t(1235), Tuint16_t(1235), Tuint16_t(1235), Tuint16_t(1235), Tuint16_t(1235),
Tuint16_t(1235), Tuint16_t(1235), Tuint16_t(1235), Tuint16_t(1235), Tuint16_t(1235), Tuint16_t(1235), Tuint16_t(1235), Tuint16_t(1235), Tuint16_t(1235), Tuint16_t(1235), Tuint16_t(1235), Tuint16_t(1235), Tuint16_t(1235), Tuint16_t(1235), Tuint16_t(1235), Tuint16_t(1235),
Tuint16_t(1236), Tuint16_t(1237), Tuint16_t(1237), Tuint16_t(1237), Tuint16_t(1237), Tuint16_t(1237), Tuint16_t(163), Tuint16_t(1237), Tuint16_t(1237), Tuint16_t(163), Tuint16_t(163), Tuint16_t(1238), Tuint16_t(1238), Tuint16_t(1239), Tuint16_t(1240), Tuint16_t(1241),
Tuint16_t(1237), Tuint16_t(1241), Tuint16_t(1237), Tuint16_t(1242), Tuint16_t(1243), Tuint16_t(1244), Tuint16_t(1243), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(1245), Tuint16_t(1245), Tuint16_t(1245), Tuint16_t(1245), Tuint16_t(1245), Tuint16_t(1245), Tuint16_t(1245), Tuint16_t(1245), Tuint16_t(1245), Tuint16_t(1245), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
// block 189
Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(1246), Tuint16_t(1246), Tuint16_t(1246), Tuint16_t(1246), Tuint16_t(1246), Tuint16_t(1246), Tuint16_t(1246), Tuint16_t(1246), Tuint16_t(163), Tuint16_t(163), Tuint16_t(1246), Tuint16_t(1246), Tuint16_t(1246), Tuint16_t(1246), Tuint16_t(1246), Tuint16_t(1246),
Tuint16_t(1246), Tuint16_t(1246), Tuint16_t(1246), Tuint16_t(1246), Tuint16_t(1246), Tuint16_t(1246), Tuint16_t(1246), Tuint16_t(1246), Tuint16_t(1246), Tuint16_t(1246), Tuint16_t(1246), Tuint16_t(1246), Tuint16_t(1246), Tuint16_t(1246), Tuint16_t(1246), Tuint16_t(1246),
Tuint16_t(1246), Tuint16_t(1246), Tuint16_t(1246), Tuint16_t(1246), Tuint16_t(1246), Tuint16_t(1246), Tuint16_t(1246), Tuint16_t(1246), Tuint16_t(1246), Tuint16_t(1246), Tuint16_t(1246), Tuint16_t(1246), Tuint16_t(1246), Tuint16_t(1246), Tuint16_t(1246), Tuint16_t(1246),
Tuint16_t(1246), Tuint16_t(1247), Tuint16_t(1247), Tuint16_t(1247), Tuint16_t(1248), Tuint16_t(1248), Tuint16_t(1248), Tuint16_t(1248), Tuint16_t(163), Tuint16_t(163), Tuint16_t(1248), Tuint16_t(1248), Tuint16_t(1247), Tuint16_t(1247), Tuint16_t(1247), Tuint16_t(1247),
Tuint16_t(1249), Tuint16_t(1246), Tuint16_t(1250), Tuint16_t(1246), Tuint16_t(1247), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
// block 190
Tuint16_t(1251), Tuint16_t(1252), Tuint16_t(1252), Tuint16_t(1252), Tuint16_t(1252), Tuint16_t(1252), Tuint16_t(1252), Tuint16_t(1253), Tuint16_t(1253), Tuint16_t(1252), Tuint16_t(1252), Tuint16_t(1251), Tuint16_t(1251), Tuint16_t(1251), Tuint16_t(1251), Tuint16_t(1251),
Tuint16_t(1251), Tuint16_t(1251), Tuint16_t(1251), Tuint16_t(1251), Tuint16_t(1251), Tuint16_t(1251), Tuint16_t(1251), Tuint16_t(1251), Tuint16_t(1251), Tuint16_t(1251), Tuint16_t(1251), Tuint16_t(1251), Tuint16_t(1251), Tuint16_t(1251), Tuint16_t(1251), Tuint16_t(1251),
Tuint16_t(1251), Tuint16_t(1251), Tuint16_t(1251), Tuint16_t(1251), Tuint16_t(1251), Tuint16_t(1251), Tuint16_t(1251), Tuint16_t(1251), Tuint16_t(1251), Tuint16_t(1251), Tuint16_t(1251), Tuint16_t(1251), Tuint16_t(1251), Tuint16_t(1251), Tuint16_t(1251), Tuint16_t(1251),
Tuint16_t(1251), Tuint16_t(1251), Tuint16_t(1251), Tuint16_t(1254), Tuint16_t(1255), Tuint16_t(1252), Tuint16_t(1252), Tuint16_t(1252), Tuint16_t(1252), Tuint16_t(1256), Tuint16_t(1257), Tuint16_t(1252), Tuint16_t(1252), Tuint16_t(1252), Tuint16_t(1252), Tuint16_t(1258),
Tuint16_t(1258), Tuint16_t(1258), Tuint16_t(1259), Tuint16_t(1259), Tuint16_t(1258), Tuint16_t(1258), Tuint16_t(1258), Tuint16_t(1255), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(1260), Tuint16_t(1261), Tuint16_t(1261), Tuint16_t(1261), Tuint16_t(1261), Tuint16_t(1261), Tuint16_t(1261), Tuint16_t(1262), Tuint16_t(1262), Tuint16_t(1261), Tuint16_t(1261), Tuint16_t(1261), Tuint16_t(1260), Tuint16_t(1260), Tuint16_t(1260), Tuint16_t(1260),
Tuint16_t(1260), Tuint16_t(1260), Tuint16_t(1260), Tuint16_t(1260), Tuint16_t(1260), Tuint16_t(1260), Tuint16_t(1260), Tuint16_t(1260), Tuint16_t(1260), Tuint16_t(1260), Tuint16_t(1260), Tuint16_t(1260), Tuint16_t(1260), Tuint16_t(1260), Tuint16_t(1260), Tuint16_t(1260),
Tuint16_t(1260), Tuint16_t(1260), Tuint16_t(1260), Tuint16_t(1260), Tuint16_t(1260), Tuint16_t(1260), Tuint16_t(1260), Tuint16_t(1260), Tuint16_t(1260), Tuint16_t(1260), Tuint16_t(1260), Tuint16_t(1260), Tuint16_t(1260), Tuint16_t(1260), Tuint16_t(1260), Tuint16_t(1260),
// block 191
Tuint16_t(1260), Tuint16_t(1260), Tuint16_t(1260), Tuint16_t(1260), Tuint16_t(1263), Tuint16_t(1263), Tuint16_t(1263), Tuint16_t(1263), Tuint16_t(1263), Tuint16_t(1263), Tuint16_t(1261), Tuint16_t(1261), Tuint16_t(1261), Tuint16_t(1261), Tuint16_t(1261), Tuint16_t(1261),
Tuint16_t(1261), Tuint16_t(1261), Tuint16_t(1261), Tuint16_t(1261), Tuint16_t(1261), Tuint16_t(1261), Tuint16_t(1261), Tuint16_t(1262), Tuint16_t(1264), Tuint16_t(1265), Tuint16_t(1266), Tuint16_t(1267), Tuint16_t(1267), Tuint16_t(1260), Tuint16_t(1266), Tuint16_t(1266),
Tuint16_t(1266), Tuint16_t(1268), Tuint16_t(1268), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495), Tuint16_t(495),
Tuint16_t(1269), Tuint16_t(1269), Tuint16_t(1269), Tuint16_t(1269), Tuint16_t(1269), Tuint16_t(1269), Tuint16_t(1269), Tuint16_t(1269), Tuint16_t(1269), Tuint16_t(1269), Tuint16_t(1269), Tuint16_t(1269), Tuint16_t(1269), Tuint16_t(1269), Tuint16_t(1269), Tuint16_t(1269),
Tuint16_t(1269), Tuint16_t(1269), Tuint16_t(1269), Tuint16_t(1269), Tuint16_t(1269), Tuint16_t(1269), Tuint16_t(1269), Tuint16_t(1269), Tuint16_t(1269), Tuint16_t(1269), Tuint16_t(1269), Tuint16_t(1269), Tuint16_t(1269), Tuint16_t(1269), Tuint16_t(1269), Tuint16_t(1269),
Tuint16_t(1269), Tuint16_t(1269), Tuint16_t(1269), Tuint16_t(1269), Tuint16_t(1269), Tuint16_t(1269), Tuint16_t(1269), Tuint16_t(1269), Tuint16_t(1269), Tuint16_t(1269), Tuint16_t(1269), Tuint16_t(1269), Tuint16_t(1269), Tuint16_t(1269), Tuint16_t(1269), Tuint16_t(1269),
Tuint16_t(1269), Tuint16_t(1269), Tuint16_t(1269), Tuint16_t(1269), Tuint16_t(1269), Tuint16_t(1269), Tuint16_t(1269), Tuint16_t(1269), Tuint16_t(1269), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
// block 192
Tuint16_t(1270), Tuint16_t(1270), Tuint16_t(1270), Tuint16_t(1270), Tuint16_t(1270), Tuint16_t(1270), Tuint16_t(1270), Tuint16_t(1270), Tuint16_t(1270), Tuint16_t(163), Tuint16_t(1270), Tuint16_t(1270), Tuint16_t(1270), Tuint16_t(1270), Tuint16_t(1270), Tuint16_t(1270),
Tuint16_t(1270), Tuint16_t(1270), Tuint16_t(1270), Tuint16_t(1270), Tuint16_t(1270), Tuint16_t(1270), Tuint16_t(1270), Tuint16_t(1270), Tuint16_t(1270), Tuint16_t(1270), Tuint16_t(1270), Tuint16_t(1270), Tuint16_t(1270), Tuint16_t(1270), Tuint16_t(1270), Tuint16_t(1270),
Tuint16_t(1270), Tuint16_t(1270), Tuint16_t(1270), Tuint16_t(1270), Tuint16_t(1270), Tuint16_t(1270), Tuint16_t(1270), Tuint16_t(1270), Tuint16_t(1270), Tuint16_t(1270), Tuint16_t(1270), Tuint16_t(1270), Tuint16_t(1270), Tuint16_t(1270), Tuint16_t(1270), Tuint16_t(1271),
Tuint16_t(1272), Tuint16_t(1272), Tuint16_t(1272), Tuint16_t(1272), Tuint16_t(1272), Tuint16_t(1272), Tuint16_t(1272), Tuint16_t(163), Tuint16_t(1272), Tuint16_t(1272), Tuint16_t(1272), Tuint16_t(1272), Tuint16_t(1272), Tuint16_t(1272), Tuint16_t(1271), Tuint16_t(1273),
Tuint16_t(1270), Tuint16_t(1274), Tuint16_t(1274), Tuint16_t(1275), Tuint16_t(1276), Tuint16_t(1276), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(1277), Tuint16_t(1277), Tuint16_t(1277), Tuint16_t(1277), Tuint16_t(1277), Tuint16_t(1277), Tuint16_t(1277), Tuint16_t(1277), Tuint16_t(1277), Tuint16_t(1277), Tuint16_t(1278), Tuint16_t(1278), Tuint16_t(1278), Tuint16_t(1278), Tuint16_t(1278), Tuint16_t(1278),
Tuint16_t(1278), Tuint16_t(1278), Tuint16_t(1278), Tuint16_t(1278), Tuint16_t(1278), Tuint16_t(1278), Tuint16_t(1278), Tuint16_t(1278), Tuint16_t(1278), Tuint16_t(1278), Tuint16_t(1278), Tuint16_t(1278), Tuint16_t(1278), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(1279), Tuint16_t(1280), Tuint16_t(1281), Tuint16_t(1281), Tuint16_t(1281), Tuint16_t(1281), Tuint16_t(1281), Tuint16_t(1281), Tuint16_t(1281), Tuint16_t(1281), Tuint16_t(1281), Tuint16_t(1281), Tuint16_t(1281), Tuint16_t(1281), Tuint16_t(1281), Tuint16_t(1281),
// block 193
Tuint16_t(1281), Tuint16_t(1281), Tuint16_t(1281), Tuint16_t(1281), Tuint16_t(1281), Tuint16_t(1281), Tuint16_t(1281), Tuint16_t(1281), Tuint16_t(1281), Tuint16_t(1281), Tuint16_t(1281), Tuint16_t(1281), Tuint16_t(1281), Tuint16_t(1281), Tuint16_t(1281), Tuint16_t(1281),
Tuint16_t(163), Tuint16_t(163), Tuint16_t(1282), Tuint16_t(1282), Tuint16_t(1282), Tuint16_t(1282), Tuint16_t(1282), Tuint16_t(1282), Tuint16_t(1282), Tuint16_t(1282), Tuint16_t(1282), Tuint16_t(1282), Tuint16_t(1282), Tuint16_t(1282), Tuint16_t(1282), Tuint16_t(1282),
Tuint16_t(1282), Tuint16_t(1282), Tuint16_t(1282), Tuint16_t(1282), Tuint16_t(1282), Tuint16_t(1282), Tuint16_t(1282), Tuint16_t(1282), Tuint16_t(163), Tuint16_t(1283), Tuint16_t(1282), Tuint16_t(1282), Tuint16_t(1282), Tuint16_t(1282), Tuint16_t(1282), Tuint16_t(1282),
Tuint16_t(1282), Tuint16_t(1283), Tuint16_t(1282), Tuint16_t(1282), Tuint16_t(1283), Tuint16_t(1282), Tuint16_t(1282), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
// block 194
Tuint16_t(1284), Tuint16_t(1284), Tuint16_t(1284), Tuint16_t(1284), Tuint16_t(1284), Tuint16_t(1284), Tuint16_t(1284), Tuint16_t(163), Tuint16_t(1284), Tuint16_t(1284), Tuint16_t(163), Tuint16_t(1284), Tuint16_t(1284), Tuint16_t(1284), Tuint16_t(1284), Tuint16_t(1284),
Tuint16_t(1284), Tuint16_t(1284), Tuint16_t(1284), Tuint16_t(1284), Tuint16_t(1284), Tuint16_t(1284), Tuint16_t(1284), Tuint16_t(1284), Tuint16_t(1284), Tuint16_t(1284), Tuint16_t(1284), Tuint16_t(1284), Tuint16_t(1284), Tuint16_t(1284), Tuint16_t(1284), Tuint16_t(1284),
Tuint16_t(1284), Tuint16_t(1284), Tuint16_t(1284), Tuint16_t(1284), Tuint16_t(1284), Tuint16_t(1284), Tuint16_t(1284), Tuint16_t(1284), Tuint16_t(1284), Tuint16_t(1284), Tuint16_t(1284), Tuint16_t(1284), Tuint16_t(1284), Tuint16_t(1284), Tuint16_t(1284), Tuint16_t(1284),
Tuint16_t(1284), Tuint16_t(1285), Tuint16_t(1285), Tuint16_t(1285), Tuint16_t(1285), Tuint16_t(1285), Tuint16_t(1285), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(1285), Tuint16_t(163), Tuint16_t(1285), Tuint16_t(1285), Tuint16_t(163), Tuint16_t(1285),
Tuint16_t(1285), Tuint16_t(1285), Tuint16_t(1286), Tuint16_t(1285), Tuint16_t(1287), Tuint16_t(1287), Tuint16_t(1288), Tuint16_t(1285), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(1289), Tuint16_t(1289), Tuint16_t(1289), Tuint16_t(1289), Tuint16_t(1289), Tuint16_t(1289), Tuint16_t(1289), Tuint16_t(1289), Tuint16_t(1289), Tuint16_t(1289), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(1290), Tuint16_t(1290), Tuint16_t(1290), Tuint16_t(1290), Tuint16_t(1290), Tuint16_t(1290), Tuint16_t(163), Tuint16_t(1290), Tuint16_t(1290), Tuint16_t(163), Tuint16_t(1290), Tuint16_t(1290), Tuint16_t(1290), Tuint16_t(1290), Tuint16_t(1290), Tuint16_t(1290),
Tuint16_t(1290), Tuint16_t(1290), Tuint16_t(1290), Tuint16_t(1290), Tuint16_t(1290), Tuint16_t(1290), Tuint16_t(1290), Tuint16_t(1290), Tuint16_t(1290), Tuint16_t(1290), Tuint16_t(1290), Tuint16_t(1290), Tuint16_t(1290), Tuint16_t(1290), Tuint16_t(1290), Tuint16_t(1290),
// block 195
Tuint16_t(1290), Tuint16_t(1290), Tuint16_t(1290), Tuint16_t(1290), Tuint16_t(1290), Tuint16_t(1290), Tuint16_t(1290), Tuint16_t(1290), Tuint16_t(1290), Tuint16_t(1290), Tuint16_t(1291), Tuint16_t(1291), Tuint16_t(1291), Tuint16_t(1291), Tuint16_t(1291), Tuint16_t(163),
Tuint16_t(1292), Tuint16_t(1292), Tuint16_t(163), Tuint16_t(1291), Tuint16_t(1291), Tuint16_t(1292), Tuint16_t(1291), Tuint16_t(1293), Tuint16_t(1290), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(1294), Tuint16_t(1294), Tuint16_t(1294), Tuint16_t(1294), Tuint16_t(1294), Tuint16_t(1294), Tuint16_t(1294), Tuint16_t(1294), Tuint16_t(1294), Tuint16_t(1294), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
// block 196
Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(1295), Tuint16_t(1295), Tuint16_t(1295), Tuint16_t(1295), Tuint16_t(1295), Tuint16_t(1295), Tuint16_t(1295), Tuint16_t(1295), Tuint16_t(1295), Tuint16_t(1295), Tuint16_t(1295), Tuint16_t(1295), Tuint16_t(1295), Tuint16_t(1295), Tuint16_t(1295), Tuint16_t(1295),
Tuint16_t(1295), Tuint16_t(1295), Tuint16_t(1295), Tuint16_t(1296), Tuint16_t(1296), Tuint16_t(1297), Tuint16_t(1297), Tuint16_t(1298), Tuint16_t(1298), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
// block 197
Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(842), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(1299), Tuint16_t(1299), Tuint16_t(1299), Tuint16_t(1299), Tuint16_t(1299), Tuint16_t(1299), Tuint16_t(1299), Tuint16_t(1299), Tuint16_t(1299), Tuint16_t(1299), Tuint16_t(1299), Tuint16_t(1299), Tuint16_t(1299), Tuint16_t(1299), Tuint16_t(1299), Tuint16_t(1299),
Tuint16_t(388), Tuint16_t(388), Tuint16_t(1299), Tuint16_t(388), Tuint16_t(1299), Tuint16_t(390), Tuint16_t(390), Tuint16_t(390), Tuint16_t(390), Tuint16_t(390), Tuint16_t(390), Tuint16_t(390), Tuint16_t(390), Tuint16_t(391), Tuint16_t(391), Tuint16_t(391),
Tuint16_t(391), Tuint16_t(390), Tuint16_t(390), Tuint16_t(390), Tuint16_t(390), Tuint16_t(390), Tuint16_t(390), Tuint16_t(390), Tuint16_t(390), Tuint16_t(390), Tuint16_t(390), Tuint16_t(390), Tuint16_t(390), Tuint16_t(390), Tuint16_t(390), Tuint16_t(390),
Tuint16_t(390), Tuint16_t(390), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(1300),
// block 198
Tuint16_t(1301), Tuint16_t(1301), Tuint16_t(1301), Tuint16_t(1301), Tuint16_t(1301), Tuint16_t(1301), Tuint16_t(1301), Tuint16_t(1301), Tuint16_t(1301), Tuint16_t(1301), Tuint16_t(1301), Tuint16_t(1301), Tuint16_t(1301), Tuint16_t(1301), Tuint16_t(1301), Tuint16_t(1301),
Tuint16_t(1301), Tuint16_t(1301), Tuint16_t(1301), Tuint16_t(1301), Tuint16_t(1301), Tuint16_t(1301), Tuint16_t(1301), Tuint16_t(1301), Tuint16_t(1301), Tuint16_t(1301), Tuint16_t(1301), Tuint16_t(1301), Tuint16_t(1301), Tuint16_t(1301), Tuint16_t(1301), Tuint16_t(1301),
Tuint16_t(1301), Tuint16_t(1301), Tuint16_t(1301), Tuint16_t(1301), Tuint16_t(1301), Tuint16_t(1301), Tuint16_t(1301), Tuint16_t(1301), Tuint16_t(1301), Tuint16_t(1301), Tuint16_t(1301), Tuint16_t(1301), Tuint16_t(1301), Tuint16_t(1301), Tuint16_t(1301), Tuint16_t(1301),
Tuint16_t(1301), Tuint16_t(1301), Tuint16_t(1301), Tuint16_t(1301), Tuint16_t(1301), Tuint16_t(1301), Tuint16_t(1301), Tuint16_t(1301), Tuint16_t(1301), Tuint16_t(1301), Tuint16_t(1301), Tuint16_t(1301), Tuint16_t(1301), Tuint16_t(1301), Tuint16_t(1301), Tuint16_t(1301),
Tuint16_t(1301), Tuint16_t(1301), Tuint16_t(1301), Tuint16_t(1301), Tuint16_t(1301), Tuint16_t(1301), Tuint16_t(1301), Tuint16_t(1301), Tuint16_t(1301), Tuint16_t(1301), Tuint16_t(1301), Tuint16_t(1301), Tuint16_t(1301), Tuint16_t(1301), Tuint16_t(1301), Tuint16_t(1301),
Tuint16_t(1301), Tuint16_t(1301), Tuint16_t(1301), Tuint16_t(1301), Tuint16_t(1301), Tuint16_t(1301), Tuint16_t(1301), Tuint16_t(1301), Tuint16_t(1301), Tuint16_t(1301), Tuint16_t(1301), Tuint16_t(1301), Tuint16_t(1301), Tuint16_t(1301), Tuint16_t(1301), Tuint16_t(1301),
Tuint16_t(1301), Tuint16_t(1301), Tuint16_t(1301), Tuint16_t(1301), Tuint16_t(1301), Tuint16_t(1301), Tuint16_t(1301), Tuint16_t(1301), Tuint16_t(1301), Tuint16_t(1301), Tuint16_t(1301), Tuint16_t(1301), Tuint16_t(1301), Tuint16_t(1301), Tuint16_t(1301), Tuint16_t(1301),
Tuint16_t(1301), Tuint16_t(1301), Tuint16_t(1301), Tuint16_t(1301), Tuint16_t(1301), Tuint16_t(1301), Tuint16_t(1301), Tuint16_t(1301), Tuint16_t(1301), Tuint16_t(1301), Tuint16_t(1301), Tuint16_t(1301), Tuint16_t(1301), Tuint16_t(1301), Tuint16_t(1301), Tuint16_t(1301),
// block 199
Tuint16_t(1301), Tuint16_t(1301), Tuint16_t(1301), Tuint16_t(1301), Tuint16_t(1301), Tuint16_t(1301), Tuint16_t(1301), Tuint16_t(1301), Tuint16_t(1301), Tuint16_t(1301), Tuint16_t(1301), Tuint16_t(1301), Tuint16_t(1301), Tuint16_t(1301), Tuint16_t(1301), Tuint16_t(1301),
Tuint16_t(1301), Tuint16_t(1301), Tuint16_t(1301), Tuint16_t(1301), Tuint16_t(1301), Tuint16_t(1301), Tuint16_t(1301), Tuint16_t(1301), Tuint16_t(1301), Tuint16_t(1301), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
// block 200
Tuint16_t(1302), Tuint16_t(1302), Tuint16_t(1302), Tuint16_t(1302), Tuint16_t(1302), Tuint16_t(1302), Tuint16_t(1302), Tuint16_t(1302), Tuint16_t(1302), Tuint16_t(1302), Tuint16_t(1302), Tuint16_t(1302), Tuint16_t(1302), Tuint16_t(1302), Tuint16_t(1302), Tuint16_t(1302),
Tuint16_t(1302), Tuint16_t(1302), Tuint16_t(1302), Tuint16_t(1302), Tuint16_t(1302), Tuint16_t(1302), Tuint16_t(1302), Tuint16_t(1302), Tuint16_t(1302), Tuint16_t(1302), Tuint16_t(1302), Tuint16_t(1302), Tuint16_t(1302), Tuint16_t(1302), Tuint16_t(1302), Tuint16_t(1302),
Tuint16_t(1302), Tuint16_t(1302), Tuint16_t(1302), Tuint16_t(1302), Tuint16_t(1302), Tuint16_t(1302), Tuint16_t(1302), Tuint16_t(1302), Tuint16_t(1302), Tuint16_t(1302), Tuint16_t(1302), Tuint16_t(1302), Tuint16_t(1302), Tuint16_t(1302), Tuint16_t(1302), Tuint16_t(1302),
Tuint16_t(1302), Tuint16_t(1302), Tuint16_t(1302), Tuint16_t(1302), Tuint16_t(1302), Tuint16_t(1302), Tuint16_t(1302), Tuint16_t(1302), Tuint16_t(1302), Tuint16_t(1302), Tuint16_t(1302), Tuint16_t(1302), Tuint16_t(1302), Tuint16_t(1302), Tuint16_t(1302), Tuint16_t(1302),
Tuint16_t(1302), Tuint16_t(1302), Tuint16_t(1302), Tuint16_t(1302), Tuint16_t(1302), Tuint16_t(1302), Tuint16_t(1302), Tuint16_t(1302), Tuint16_t(1302), Tuint16_t(1302), Tuint16_t(1302), Tuint16_t(1302), Tuint16_t(1302), Tuint16_t(1302), Tuint16_t(1302), Tuint16_t(1302),
Tuint16_t(1302), Tuint16_t(1302), Tuint16_t(1302), Tuint16_t(1302), Tuint16_t(1302), Tuint16_t(1302), Tuint16_t(1302), Tuint16_t(1302), Tuint16_t(1302), Tuint16_t(1302), Tuint16_t(1302), Tuint16_t(1302), Tuint16_t(1302), Tuint16_t(1302), Tuint16_t(1302), Tuint16_t(1302),
Tuint16_t(1302), Tuint16_t(1302), Tuint16_t(1302), Tuint16_t(1302), Tuint16_t(1302), Tuint16_t(1302), Tuint16_t(1302), Tuint16_t(1302), Tuint16_t(1302), Tuint16_t(1302), Tuint16_t(1302), Tuint16_t(1302), Tuint16_t(1302), Tuint16_t(1302), Tuint16_t(1302), Tuint16_t(163),
Tuint16_t(1303), Tuint16_t(1303), Tuint16_t(1303), Tuint16_t(1303), Tuint16_t(1303), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
// block 201
Tuint16_t(1301), Tuint16_t(1301), Tuint16_t(1301), Tuint16_t(1301), Tuint16_t(1301), Tuint16_t(1301), Tuint16_t(1301), Tuint16_t(1301), Tuint16_t(1301), Tuint16_t(1301), Tuint16_t(1301), Tuint16_t(1301), Tuint16_t(1301), Tuint16_t(1301), Tuint16_t(1301), Tuint16_t(1301),
Tuint16_t(1301), Tuint16_t(1301), Tuint16_t(1301), Tuint16_t(1301), Tuint16_t(1301), Tuint16_t(1301), Tuint16_t(1301), Tuint16_t(1301), Tuint16_t(1301), Tuint16_t(1301), Tuint16_t(1301), Tuint16_t(1301), Tuint16_t(1301), Tuint16_t(1301), Tuint16_t(1301), Tuint16_t(1301),
Tuint16_t(1301), Tuint16_t(1301), Tuint16_t(1301), Tuint16_t(1301), Tuint16_t(1301), Tuint16_t(1301), Tuint16_t(1301), Tuint16_t(1301), Tuint16_t(1301), Tuint16_t(1301), Tuint16_t(1301), Tuint16_t(1301), Tuint16_t(1301), Tuint16_t(1301), Tuint16_t(1301), Tuint16_t(1301),
Tuint16_t(1301), Tuint16_t(1301), Tuint16_t(1301), Tuint16_t(1301), Tuint16_t(1301), Tuint16_t(1301), Tuint16_t(1301), Tuint16_t(1301), Tuint16_t(1301), Tuint16_t(1301), Tuint16_t(1301), Tuint16_t(1301), Tuint16_t(1301), Tuint16_t(1301), Tuint16_t(1301), Tuint16_t(1301),
Tuint16_t(1301), Tuint16_t(1301), Tuint16_t(1301), Tuint16_t(1301), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
// block 202
Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(1304), Tuint16_t(1304), Tuint16_t(1304), Tuint16_t(1304), Tuint16_t(1304), Tuint16_t(1304), Tuint16_t(1304), Tuint16_t(1304), Tuint16_t(1304), Tuint16_t(1304), Tuint16_t(1304), Tuint16_t(1304), Tuint16_t(1304), Tuint16_t(1304), Tuint16_t(1304), Tuint16_t(1304),
Tuint16_t(1304), Tuint16_t(1304), Tuint16_t(1304), Tuint16_t(1304), Tuint16_t(1304), Tuint16_t(1304), Tuint16_t(1304), Tuint16_t(1304), Tuint16_t(1304), Tuint16_t(1304), Tuint16_t(1304), Tuint16_t(1304), Tuint16_t(1304), Tuint16_t(1304), Tuint16_t(1304), Tuint16_t(1304),
Tuint16_t(1304), Tuint16_t(1304), Tuint16_t(1304), Tuint16_t(1304), Tuint16_t(1304), Tuint16_t(1304), Tuint16_t(1304), Tuint16_t(1304), Tuint16_t(1304), Tuint16_t(1304), Tuint16_t(1304), Tuint16_t(1304), Tuint16_t(1304), Tuint16_t(1304), Tuint16_t(1304), Tuint16_t(1304),
Tuint16_t(1304), Tuint16_t(1304), Tuint16_t(1304), Tuint16_t(1304), Tuint16_t(1304), Tuint16_t(1304), Tuint16_t(1304), Tuint16_t(1304), Tuint16_t(1304), Tuint16_t(1304), Tuint16_t(1304), Tuint16_t(1304), Tuint16_t(1304), Tuint16_t(1304), Tuint16_t(1304), Tuint16_t(1304),
Tuint16_t(1304), Tuint16_t(1304), Tuint16_t(1304), Tuint16_t(1304), Tuint16_t(1304), Tuint16_t(1304), Tuint16_t(1304), Tuint16_t(1304), Tuint16_t(1304), Tuint16_t(1304), Tuint16_t(1304), Tuint16_t(1304), Tuint16_t(1304), Tuint16_t(1304), Tuint16_t(1304), Tuint16_t(1304),
Tuint16_t(1304), Tuint16_t(1304), Tuint16_t(1304), Tuint16_t(1304), Tuint16_t(1304), Tuint16_t(1304), Tuint16_t(1304), Tuint16_t(1304), Tuint16_t(1304), Tuint16_t(1304), Tuint16_t(1304), Tuint16_t(1304), Tuint16_t(1304), Tuint16_t(1304), Tuint16_t(1304), Tuint16_t(1304),
Tuint16_t(1304), Tuint16_t(1305), Tuint16_t(1305), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
// block 203
Tuint16_t(1306), Tuint16_t(1306), Tuint16_t(1306), Tuint16_t(1306), Tuint16_t(1306), Tuint16_t(1306), Tuint16_t(1306), Tuint16_t(1306), Tuint16_t(1306), Tuint16_t(1306), Tuint16_t(1306), Tuint16_t(1306), Tuint16_t(1306), Tuint16_t(1306), Tuint16_t(1306), Tuint16_t(1306),
Tuint16_t(1306), Tuint16_t(1306), Tuint16_t(1306), Tuint16_t(1306), Tuint16_t(1306), Tuint16_t(1306), Tuint16_t(1306), Tuint16_t(1306), Tuint16_t(1306), Tuint16_t(1306), Tuint16_t(1306), Tuint16_t(1306), Tuint16_t(1306), Tuint16_t(1306), Tuint16_t(1306), Tuint16_t(1306),
Tuint16_t(1306), Tuint16_t(1306), Tuint16_t(1306), Tuint16_t(1306), Tuint16_t(1306), Tuint16_t(1306), Tuint16_t(1306), Tuint16_t(1306), Tuint16_t(1306), Tuint16_t(1306), Tuint16_t(1306), Tuint16_t(1306), Tuint16_t(1306), Tuint16_t(1306), Tuint16_t(1306), Tuint16_t(1306),
Tuint16_t(1306), Tuint16_t(1306), Tuint16_t(1306), Tuint16_t(1306), Tuint16_t(1306), Tuint16_t(1306), Tuint16_t(1306), Tuint16_t(1306), Tuint16_t(1306), Tuint16_t(1306), Tuint16_t(1306), Tuint16_t(1306), Tuint16_t(1306), Tuint16_t(1306), Tuint16_t(1306), Tuint16_t(1306),
Tuint16_t(1306), Tuint16_t(1306), Tuint16_t(1306), Tuint16_t(1306), Tuint16_t(1306), Tuint16_t(1306), Tuint16_t(1306), Tuint16_t(1306), Tuint16_t(1306), Tuint16_t(1306), Tuint16_t(1306), Tuint16_t(1306), Tuint16_t(1306), Tuint16_t(1306), Tuint16_t(1306), Tuint16_t(1306),
Tuint16_t(1306), Tuint16_t(1306), Tuint16_t(1306), Tuint16_t(1306), Tuint16_t(1306), Tuint16_t(1306), Tuint16_t(1306), Tuint16_t(1306), Tuint16_t(1306), Tuint16_t(1306), Tuint16_t(1306), Tuint16_t(1306), Tuint16_t(1306), Tuint16_t(1306), Tuint16_t(1306), Tuint16_t(1306),
Tuint16_t(1306), Tuint16_t(1306), Tuint16_t(1306), Tuint16_t(1306), Tuint16_t(1306), Tuint16_t(1306), Tuint16_t(1306), Tuint16_t(1306), Tuint16_t(1306), Tuint16_t(1306), Tuint16_t(1306), Tuint16_t(1306), Tuint16_t(1306), Tuint16_t(1306), Tuint16_t(1306), Tuint16_t(1306),
Tuint16_t(1306), Tuint16_t(1306), Tuint16_t(1306), Tuint16_t(1306), Tuint16_t(1306), Tuint16_t(1306), Tuint16_t(1306), Tuint16_t(1306), Tuint16_t(1306), Tuint16_t(1306), Tuint16_t(1306), Tuint16_t(1306), Tuint16_t(1306), Tuint16_t(1306), Tuint16_t(1306), Tuint16_t(1306),
// block 204
Tuint16_t(1306), Tuint16_t(1306), Tuint16_t(1306), Tuint16_t(1306), Tuint16_t(1306), Tuint16_t(1306), Tuint16_t(1306), Tuint16_t(1306), Tuint16_t(1306), Tuint16_t(1306), Tuint16_t(1306), Tuint16_t(1306), Tuint16_t(1306), Tuint16_t(1306), Tuint16_t(1306), Tuint16_t(1306),
Tuint16_t(1306), Tuint16_t(1306), Tuint16_t(1306), Tuint16_t(1306), Tuint16_t(1306), Tuint16_t(1306), Tuint16_t(1306), Tuint16_t(1306), Tuint16_t(1306), Tuint16_t(1306), Tuint16_t(1306), Tuint16_t(1306), Tuint16_t(1306), Tuint16_t(1306), Tuint16_t(1306), Tuint16_t(1306),
Tuint16_t(1306), Tuint16_t(1306), Tuint16_t(1306), Tuint16_t(1306), Tuint16_t(1306), Tuint16_t(1306), Tuint16_t(1306), Tuint16_t(1306), Tuint16_t(1306), Tuint16_t(1306), Tuint16_t(1306), Tuint16_t(1306), Tuint16_t(1306), Tuint16_t(1306), Tuint16_t(1306), Tuint16_t(163),
Tuint16_t(1307), Tuint16_t(1307), Tuint16_t(1307), Tuint16_t(1307), Tuint16_t(1307), Tuint16_t(1307), Tuint16_t(1307), Tuint16_t(1307), Tuint16_t(1307), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
// block 205
Tuint16_t(1308), Tuint16_t(1308), Tuint16_t(1308), Tuint16_t(1308), Tuint16_t(1308), Tuint16_t(1308), Tuint16_t(1308), Tuint16_t(1308), Tuint16_t(1308), Tuint16_t(1308), Tuint16_t(1308), Tuint16_t(1308), Tuint16_t(1308), Tuint16_t(1308), Tuint16_t(1308), Tuint16_t(1308),
Tuint16_t(1308), Tuint16_t(1308), Tuint16_t(1308), Tuint16_t(1308), Tuint16_t(1308), Tuint16_t(1308), Tuint16_t(1308), Tuint16_t(1308), Tuint16_t(1308), Tuint16_t(1308), Tuint16_t(1308), Tuint16_t(1308), Tuint16_t(1308), Tuint16_t(1308), Tuint16_t(1308), Tuint16_t(1308),
Tuint16_t(1308), Tuint16_t(1308), Tuint16_t(1308), Tuint16_t(1308), Tuint16_t(1308), Tuint16_t(1308), Tuint16_t(1308), Tuint16_t(1308), Tuint16_t(1308), Tuint16_t(1308), Tuint16_t(1308), Tuint16_t(1308), Tuint16_t(1308), Tuint16_t(1308), Tuint16_t(1308), Tuint16_t(1308),
Tuint16_t(1308), Tuint16_t(1308), Tuint16_t(1308), Tuint16_t(1308), Tuint16_t(1308), Tuint16_t(1308), Tuint16_t(1308), Tuint16_t(1308), Tuint16_t(1308), Tuint16_t(1308), Tuint16_t(1308), Tuint16_t(1308), Tuint16_t(1308), Tuint16_t(1308), Tuint16_t(1308), Tuint16_t(1308),
Tuint16_t(1308), Tuint16_t(1308), Tuint16_t(1308), Tuint16_t(1308), Tuint16_t(1308), Tuint16_t(1308), Tuint16_t(1308), Tuint16_t(1308), Tuint16_t(1308), Tuint16_t(1308), Tuint16_t(1308), Tuint16_t(1308), Tuint16_t(1308), Tuint16_t(1308), Tuint16_t(1308), Tuint16_t(1308),
Tuint16_t(1308), Tuint16_t(1308), Tuint16_t(1308), Tuint16_t(1308), Tuint16_t(1308), Tuint16_t(1308), Tuint16_t(1308), Tuint16_t(1308), Tuint16_t(1308), Tuint16_t(1308), Tuint16_t(1308), Tuint16_t(1308), Tuint16_t(1308), Tuint16_t(1308), Tuint16_t(1308), Tuint16_t(1308),
Tuint16_t(1308), Tuint16_t(1308), Tuint16_t(1308), Tuint16_t(1308), Tuint16_t(1308), Tuint16_t(1308), Tuint16_t(1308), Tuint16_t(1308), Tuint16_t(1308), Tuint16_t(1308), Tuint16_t(1308), Tuint16_t(1308), Tuint16_t(1308), Tuint16_t(1308), Tuint16_t(1308), Tuint16_t(1308),
Tuint16_t(1308), Tuint16_t(1308), Tuint16_t(1308), Tuint16_t(1308), Tuint16_t(1308), Tuint16_t(1308), Tuint16_t(1308), Tuint16_t(1308), Tuint16_t(1308), Tuint16_t(1308), Tuint16_t(1308), Tuint16_t(1308), Tuint16_t(1308), Tuint16_t(1308), Tuint16_t(1308), Tuint16_t(1308),
// block 206
Tuint16_t(1308), Tuint16_t(1308), Tuint16_t(1308), Tuint16_t(1308), Tuint16_t(1308), Tuint16_t(1308), Tuint16_t(1308), Tuint16_t(1308), Tuint16_t(1308), Tuint16_t(1308), Tuint16_t(1308), Tuint16_t(1308), Tuint16_t(1308), Tuint16_t(1308), Tuint16_t(1308), Tuint16_t(1308),
Tuint16_t(1308), Tuint16_t(1308), Tuint16_t(1308), Tuint16_t(1308), Tuint16_t(1308), Tuint16_t(1308), Tuint16_t(1308), Tuint16_t(1308), Tuint16_t(1308), Tuint16_t(1308), Tuint16_t(1308), Tuint16_t(1308), Tuint16_t(1308), Tuint16_t(1308), Tuint16_t(1308), Tuint16_t(1308),
Tuint16_t(1308), Tuint16_t(1308), Tuint16_t(1308), Tuint16_t(1308), Tuint16_t(1308), Tuint16_t(1308), Tuint16_t(1308), Tuint16_t(1308), Tuint16_t(1308), Tuint16_t(1308), Tuint16_t(1308), Tuint16_t(1308), Tuint16_t(1308), Tuint16_t(1308), Tuint16_t(1308), Tuint16_t(1308),
Tuint16_t(1308), Tuint16_t(1308), Tuint16_t(1308), Tuint16_t(1308), Tuint16_t(1308), Tuint16_t(1308), Tuint16_t(1308), Tuint16_t(1308), Tuint16_t(1308), Tuint16_t(1308), Tuint16_t(1308), Tuint16_t(1308), Tuint16_t(1308), Tuint16_t(1308), Tuint16_t(1308), Tuint16_t(1308),
Tuint16_t(1308), Tuint16_t(1308), Tuint16_t(1308), Tuint16_t(1308), Tuint16_t(1308), Tuint16_t(1308), Tuint16_t(1308), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
// block 207
Tuint16_t(858), Tuint16_t(858), Tuint16_t(858), Tuint16_t(858), Tuint16_t(858), Tuint16_t(858), Tuint16_t(858), Tuint16_t(858), Tuint16_t(858), Tuint16_t(858), Tuint16_t(858), Tuint16_t(858), Tuint16_t(858), Tuint16_t(858), Tuint16_t(858), Tuint16_t(858),
Tuint16_t(858), Tuint16_t(858), Tuint16_t(858), Tuint16_t(858), Tuint16_t(858), Tuint16_t(858), Tuint16_t(858), Tuint16_t(858), Tuint16_t(858), Tuint16_t(858), Tuint16_t(858), Tuint16_t(858), Tuint16_t(858), Tuint16_t(858), Tuint16_t(858), Tuint16_t(858),
Tuint16_t(858), Tuint16_t(858), Tuint16_t(858), Tuint16_t(858), Tuint16_t(858), Tuint16_t(858), Tuint16_t(858), Tuint16_t(858), Tuint16_t(858), Tuint16_t(858), Tuint16_t(858), Tuint16_t(858), Tuint16_t(858), Tuint16_t(858), Tuint16_t(858), Tuint16_t(858),
Tuint16_t(858), Tuint16_t(858), Tuint16_t(858), Tuint16_t(858), Tuint16_t(858), Tuint16_t(858), Tuint16_t(858), Tuint16_t(858), Tuint16_t(858), Tuint16_t(858), Tuint16_t(858), Tuint16_t(858), Tuint16_t(858), Tuint16_t(858), Tuint16_t(858), Tuint16_t(858),
Tuint16_t(858), Tuint16_t(858), Tuint16_t(858), Tuint16_t(858), Tuint16_t(858), Tuint16_t(858), Tuint16_t(858), Tuint16_t(858), Tuint16_t(858), Tuint16_t(858), Tuint16_t(858), Tuint16_t(858), Tuint16_t(858), Tuint16_t(858), Tuint16_t(858), Tuint16_t(858),
Tuint16_t(858), Tuint16_t(858), Tuint16_t(858), Tuint16_t(858), Tuint16_t(858), Tuint16_t(858), Tuint16_t(858), Tuint16_t(858), Tuint16_t(858), Tuint16_t(858), Tuint16_t(858), Tuint16_t(858), Tuint16_t(858), Tuint16_t(858), Tuint16_t(858), Tuint16_t(858),
Tuint16_t(858), Tuint16_t(858), Tuint16_t(858), Tuint16_t(858), Tuint16_t(858), Tuint16_t(858), Tuint16_t(858), Tuint16_t(858), Tuint16_t(858), Tuint16_t(858), Tuint16_t(858), Tuint16_t(858), Tuint16_t(858), Tuint16_t(858), Tuint16_t(858), Tuint16_t(858),
Tuint16_t(858), Tuint16_t(858), Tuint16_t(858), Tuint16_t(858), Tuint16_t(858), Tuint16_t(858), Tuint16_t(858), Tuint16_t(858), Tuint16_t(858), Tuint16_t(858), Tuint16_t(858), Tuint16_t(858), Tuint16_t(858), Tuint16_t(858), Tuint16_t(858), Tuint16_t(858),
// block 208
Tuint16_t(858), Tuint16_t(858), Tuint16_t(858), Tuint16_t(858), Tuint16_t(858), Tuint16_t(858), Tuint16_t(858), Tuint16_t(858), Tuint16_t(858), Tuint16_t(858), Tuint16_t(858), Tuint16_t(858), Tuint16_t(858), Tuint16_t(858), Tuint16_t(858), Tuint16_t(858),
Tuint16_t(858), Tuint16_t(858), Tuint16_t(858), Tuint16_t(858), Tuint16_t(858), Tuint16_t(858), Tuint16_t(858), Tuint16_t(858), Tuint16_t(858), Tuint16_t(858), Tuint16_t(858), Tuint16_t(858), Tuint16_t(858), Tuint16_t(858), Tuint16_t(858), Tuint16_t(858),
Tuint16_t(858), Tuint16_t(858), Tuint16_t(858), Tuint16_t(858), Tuint16_t(858), Tuint16_t(858), Tuint16_t(858), Tuint16_t(858), Tuint16_t(858), Tuint16_t(858), Tuint16_t(858), Tuint16_t(858), Tuint16_t(858), Tuint16_t(858), Tuint16_t(858), Tuint16_t(858),
Tuint16_t(858), Tuint16_t(858), Tuint16_t(858), Tuint16_t(858), Tuint16_t(858), Tuint16_t(858), Tuint16_t(858), Tuint16_t(858), Tuint16_t(858), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(1309), Tuint16_t(1309), Tuint16_t(1309), Tuint16_t(1309), Tuint16_t(1309), Tuint16_t(1309), Tuint16_t(1309), Tuint16_t(1309), Tuint16_t(1309), Tuint16_t(1309), Tuint16_t(1309), Tuint16_t(1309), Tuint16_t(1309), Tuint16_t(1309), Tuint16_t(1309), Tuint16_t(1309),
Tuint16_t(1309), Tuint16_t(1309), Tuint16_t(1309), Tuint16_t(1309), Tuint16_t(1309), Tuint16_t(1309), Tuint16_t(1309), Tuint16_t(1309), Tuint16_t(1309), Tuint16_t(1309), Tuint16_t(1309), Tuint16_t(1309), Tuint16_t(1309), Tuint16_t(1309), Tuint16_t(1309), Tuint16_t(163),
Tuint16_t(1310), Tuint16_t(1310), Tuint16_t(1310), Tuint16_t(1310), Tuint16_t(1310), Tuint16_t(1310), Tuint16_t(1310), Tuint16_t(1310), Tuint16_t(1310), Tuint16_t(1310), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(1311), Tuint16_t(1311),
Tuint16_t(1312), Tuint16_t(1312), Tuint16_t(1312), Tuint16_t(1312), Tuint16_t(1312), Tuint16_t(1312), Tuint16_t(1312), Tuint16_t(1312), Tuint16_t(1312), Tuint16_t(1312), Tuint16_t(1312), Tuint16_t(1312), Tuint16_t(1312), Tuint16_t(1312), Tuint16_t(1312), Tuint16_t(1312),
// block 209
Tuint16_t(1312), Tuint16_t(1312), Tuint16_t(1312), Tuint16_t(1312), Tuint16_t(1312), Tuint16_t(1312), Tuint16_t(1312), Tuint16_t(1312), Tuint16_t(1312), Tuint16_t(1312), Tuint16_t(1312), Tuint16_t(1312), Tuint16_t(1312), Tuint16_t(1312), Tuint16_t(1312), Tuint16_t(1312),
Tuint16_t(1312), Tuint16_t(1312), Tuint16_t(1312), Tuint16_t(1312), Tuint16_t(1312), Tuint16_t(1312), Tuint16_t(1312), Tuint16_t(1312), Tuint16_t(1312), Tuint16_t(1312), Tuint16_t(1312), Tuint16_t(1312), Tuint16_t(1312), Tuint16_t(1312), Tuint16_t(1312), Tuint16_t(1312),
Tuint16_t(1312), Tuint16_t(1312), Tuint16_t(1312), Tuint16_t(1312), Tuint16_t(1312), Tuint16_t(1312), Tuint16_t(1312), Tuint16_t(1312), Tuint16_t(1312), Tuint16_t(1312), Tuint16_t(1312), Tuint16_t(1312), Tuint16_t(1312), Tuint16_t(1312), Tuint16_t(1312), Tuint16_t(1312),
Tuint16_t(1312), Tuint16_t(1312), Tuint16_t(1312), Tuint16_t(1312), Tuint16_t(1312), Tuint16_t(1312), Tuint16_t(1312), Tuint16_t(1312), Tuint16_t(1312), Tuint16_t(1312), Tuint16_t(1312), Tuint16_t(1312), Tuint16_t(1312), Tuint16_t(1312), Tuint16_t(1312), Tuint16_t(163),
Tuint16_t(1313), Tuint16_t(1313), Tuint16_t(1313), Tuint16_t(1313), Tuint16_t(1313), Tuint16_t(1313), Tuint16_t(1313), Tuint16_t(1313), Tuint16_t(1313), Tuint16_t(1313), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(1314), Tuint16_t(1314), Tuint16_t(1314), Tuint16_t(1314), Tuint16_t(1314), Tuint16_t(1314), Tuint16_t(1314), Tuint16_t(1314), Tuint16_t(1314), Tuint16_t(1314), Tuint16_t(1314), Tuint16_t(1314), Tuint16_t(1314), Tuint16_t(1314), Tuint16_t(1314), Tuint16_t(1314),
Tuint16_t(1314), Tuint16_t(1314), Tuint16_t(1314), Tuint16_t(1314), Tuint16_t(1314), Tuint16_t(1314), Tuint16_t(1314), Tuint16_t(1314), Tuint16_t(1314), Tuint16_t(1314), Tuint16_t(1314), Tuint16_t(1314), Tuint16_t(1314), Tuint16_t(1314), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(1315), Tuint16_t(1315), Tuint16_t(1315), Tuint16_t(1315), Tuint16_t(1315), Tuint16_t(1316), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
// block 210
Tuint16_t(1317), Tuint16_t(1317), Tuint16_t(1317), Tuint16_t(1317), Tuint16_t(1317), Tuint16_t(1317), Tuint16_t(1317), Tuint16_t(1317), Tuint16_t(1317), Tuint16_t(1317), Tuint16_t(1317), Tuint16_t(1317), Tuint16_t(1317), Tuint16_t(1317), Tuint16_t(1317), Tuint16_t(1317),
Tuint16_t(1317), Tuint16_t(1317), Tuint16_t(1317), Tuint16_t(1317), Tuint16_t(1317), Tuint16_t(1317), Tuint16_t(1317), Tuint16_t(1317), Tuint16_t(1317), Tuint16_t(1317), Tuint16_t(1317), Tuint16_t(1317), Tuint16_t(1317), Tuint16_t(1317), Tuint16_t(1317), Tuint16_t(1317),
Tuint16_t(1317), Tuint16_t(1317), Tuint16_t(1317), Tuint16_t(1317), Tuint16_t(1317), Tuint16_t(1317), Tuint16_t(1317), Tuint16_t(1317), Tuint16_t(1317), Tuint16_t(1317), Tuint16_t(1317), Tuint16_t(1317), Tuint16_t(1317), Tuint16_t(1317), Tuint16_t(1317), Tuint16_t(1317),
Tuint16_t(1318), Tuint16_t(1318), Tuint16_t(1318), Tuint16_t(1318), Tuint16_t(1318), Tuint16_t(1318), Tuint16_t(1318), Tuint16_t(1319), Tuint16_t(1319), Tuint16_t(1320), Tuint16_t(1321), Tuint16_t(1321), Tuint16_t(1322), Tuint16_t(1322), Tuint16_t(1322), Tuint16_t(1322),
Tuint16_t(1323), Tuint16_t(1323), Tuint16_t(1324), Tuint16_t(1324), Tuint16_t(1319), Tuint16_t(1322), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(1325), Tuint16_t(1325), Tuint16_t(1325), Tuint16_t(1325), Tuint16_t(1325), Tuint16_t(1325), Tuint16_t(1325), Tuint16_t(1325), Tuint16_t(1325), Tuint16_t(1325), Tuint16_t(163), Tuint16_t(1326), Tuint16_t(1326), Tuint16_t(1326), Tuint16_t(1326), Tuint16_t(1326),
Tuint16_t(1326), Tuint16_t(1326), Tuint16_t(163), Tuint16_t(1317), Tuint16_t(1317), Tuint16_t(1317), Tuint16_t(1317), Tuint16_t(1317), Tuint16_t(1317), Tuint16_t(1317), Tuint16_t(1317), Tuint16_t(1317), Tuint16_t(1317), Tuint16_t(1317), Tuint16_t(1317), Tuint16_t(1317),
Tuint16_t(1317), Tuint16_t(1317), Tuint16_t(1317), Tuint16_t(1317), Tuint16_t(1317), Tuint16_t(1317), Tuint16_t(1317), Tuint16_t(1317), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(1317), Tuint16_t(1317), Tuint16_t(1317),
// block 211
Tuint16_t(1317), Tuint16_t(1317), Tuint16_t(1317), Tuint16_t(1317), Tuint16_t(1317), Tuint16_t(1317), Tuint16_t(1317), Tuint16_t(1317), Tuint16_t(1317), Tuint16_t(1317), Tuint16_t(1317), Tuint16_t(1317), Tuint16_t(1317), Tuint16_t(1317), Tuint16_t(1317), Tuint16_t(1317),
Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
// block 212
Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(1327), Tuint16_t(1327), Tuint16_t(1327), Tuint16_t(1327), Tuint16_t(1327), Tuint16_t(1327), Tuint16_t(1327), Tuint16_t(1327), Tuint16_t(1327), Tuint16_t(1327), Tuint16_t(1327), Tuint16_t(1327), Tuint16_t(1327), Tuint16_t(1327), Tuint16_t(1327), Tuint16_t(1327),
Tuint16_t(1327), Tuint16_t(1327), Tuint16_t(1327), Tuint16_t(1327), Tuint16_t(1327), Tuint16_t(1327), Tuint16_t(1327), Tuint16_t(1327), Tuint16_t(1327), Tuint16_t(1327), Tuint16_t(1327), Tuint16_t(1327), Tuint16_t(1327), Tuint16_t(1327), Tuint16_t(1327), Tuint16_t(1327),
Tuint16_t(1328), Tuint16_t(1328), Tuint16_t(1328), Tuint16_t(1328), Tuint16_t(1328), Tuint16_t(1328), Tuint16_t(1328), Tuint16_t(1328), Tuint16_t(1328), Tuint16_t(1328), Tuint16_t(1328), Tuint16_t(1328), Tuint16_t(1328), Tuint16_t(1328), Tuint16_t(1328), Tuint16_t(1328),
Tuint16_t(1328), Tuint16_t(1328), Tuint16_t(1328), Tuint16_t(1328), Tuint16_t(1328), Tuint16_t(1328), Tuint16_t(1328), Tuint16_t(1328), Tuint16_t(1328), Tuint16_t(1328), Tuint16_t(1328), Tuint16_t(1328), Tuint16_t(1328), Tuint16_t(1328), Tuint16_t(1328), Tuint16_t(1328),
// block 213
Tuint16_t(1329), Tuint16_t(1329), Tuint16_t(1329), Tuint16_t(1329), Tuint16_t(1329), Tuint16_t(1329), Tuint16_t(1329), Tuint16_t(1329), Tuint16_t(1329), Tuint16_t(1329), Tuint16_t(1329), Tuint16_t(1329), Tuint16_t(1329), Tuint16_t(1329), Tuint16_t(1329), Tuint16_t(1329),
Tuint16_t(1329), Tuint16_t(1329), Tuint16_t(1329), Tuint16_t(1329), Tuint16_t(1329), Tuint16_t(1329), Tuint16_t(1329), Tuint16_t(1330), Tuint16_t(1331), Tuint16_t(1332), Tuint16_t(1332), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
// block 214
Tuint16_t(1333), Tuint16_t(1333), Tuint16_t(1333), Tuint16_t(1333), Tuint16_t(1333), Tuint16_t(1333), Tuint16_t(1333), Tuint16_t(1333), Tuint16_t(1333), Tuint16_t(1333), Tuint16_t(1333), Tuint16_t(1333), Tuint16_t(1333), Tuint16_t(1333), Tuint16_t(1333), Tuint16_t(1333),
Tuint16_t(1333), Tuint16_t(1333), Tuint16_t(1333), Tuint16_t(1333), Tuint16_t(1333), Tuint16_t(1333), Tuint16_t(1333), Tuint16_t(1333), Tuint16_t(1333), Tuint16_t(1333), Tuint16_t(1333), Tuint16_t(1333), Tuint16_t(1333), Tuint16_t(1333), Tuint16_t(1333), Tuint16_t(1333),
Tuint16_t(1333), Tuint16_t(1333), Tuint16_t(1333), Tuint16_t(1333), Tuint16_t(1333), Tuint16_t(1333), Tuint16_t(1333), Tuint16_t(1333), Tuint16_t(1333), Tuint16_t(1333), Tuint16_t(1333), Tuint16_t(1333), Tuint16_t(1333), Tuint16_t(1333), Tuint16_t(1333), Tuint16_t(1333),
Tuint16_t(1333), Tuint16_t(1333), Tuint16_t(1333), Tuint16_t(1333), Tuint16_t(1333), Tuint16_t(1333), Tuint16_t(1333), Tuint16_t(1333), Tuint16_t(1333), Tuint16_t(1333), Tuint16_t(1333), Tuint16_t(1333), Tuint16_t(1333), Tuint16_t(1333), Tuint16_t(1333), Tuint16_t(1333),
Tuint16_t(1333), Tuint16_t(1333), Tuint16_t(1333), Tuint16_t(1333), Tuint16_t(1333), Tuint16_t(1333), Tuint16_t(1333), Tuint16_t(1333), Tuint16_t(1333), Tuint16_t(1333), Tuint16_t(1333), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(1334),
Tuint16_t(1333), Tuint16_t(1335), Tuint16_t(1335), Tuint16_t(1335), Tuint16_t(1335), Tuint16_t(1335), Tuint16_t(1335), Tuint16_t(1335), Tuint16_t(1335), Tuint16_t(1335), Tuint16_t(1335), Tuint16_t(1335), Tuint16_t(1335), Tuint16_t(1335), Tuint16_t(1335), Tuint16_t(1335),
Tuint16_t(1335), Tuint16_t(1335), Tuint16_t(1335), Tuint16_t(1335), Tuint16_t(1335), Tuint16_t(1335), Tuint16_t(1335), Tuint16_t(1335), Tuint16_t(1335), Tuint16_t(1335), Tuint16_t(1335), Tuint16_t(1335), Tuint16_t(1335), Tuint16_t(1335), Tuint16_t(1335), Tuint16_t(1335),
Tuint16_t(1335), Tuint16_t(1335), Tuint16_t(1335), Tuint16_t(1335), Tuint16_t(1335), Tuint16_t(1335), Tuint16_t(1335), Tuint16_t(1335), Tuint16_t(1335), Tuint16_t(1335), Tuint16_t(1335), Tuint16_t(1335), Tuint16_t(1335), Tuint16_t(1335), Tuint16_t(1335), Tuint16_t(1335),
// block 215
Tuint16_t(1335), Tuint16_t(1335), Tuint16_t(1335), Tuint16_t(1335), Tuint16_t(1335), Tuint16_t(1335), Tuint16_t(1335), Tuint16_t(1335), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(1336),
Tuint16_t(1336), Tuint16_t(1336), Tuint16_t(1336), Tuint16_t(1337), Tuint16_t(1337), Tuint16_t(1337), Tuint16_t(1337), Tuint16_t(1337), Tuint16_t(1337), Tuint16_t(1337), Tuint16_t(1337), Tuint16_t(1337), Tuint16_t(1337), Tuint16_t(1337), Tuint16_t(1337), Tuint16_t(1337),
Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(1338), Tuint16_t(1339), Tuint16_t(1340), Tuint16_t(799), Tuint16_t(1341), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(1342), Tuint16_t(1342), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
// block 216
Tuint16_t(1343), Tuint16_t(1343), Tuint16_t(1343), Tuint16_t(1343), Tuint16_t(1343), Tuint16_t(1343), Tuint16_t(1343), Tuint16_t(1343), Tuint16_t(1343), Tuint16_t(1343), Tuint16_t(1343), Tuint16_t(1343), Tuint16_t(1343), Tuint16_t(1343), Tuint16_t(1343), Tuint16_t(1343),
Tuint16_t(1343), Tuint16_t(1343), Tuint16_t(1343), Tuint16_t(1343), Tuint16_t(1343), Tuint16_t(1343), Tuint16_t(1343), Tuint16_t(1343), Tuint16_t(1343), Tuint16_t(1343), Tuint16_t(1343), Tuint16_t(1343), Tuint16_t(1343), Tuint16_t(1343), Tuint16_t(1343), Tuint16_t(1343),
Tuint16_t(1343), Tuint16_t(1343), Tuint16_t(1343), Tuint16_t(1343), Tuint16_t(1343), Tuint16_t(1343), Tuint16_t(1343), Tuint16_t(1343), Tuint16_t(1343), Tuint16_t(1343), Tuint16_t(1343), Tuint16_t(1343), Tuint16_t(1343), Tuint16_t(1343), Tuint16_t(1343), Tuint16_t(1343),
Tuint16_t(1343), Tuint16_t(1343), Tuint16_t(1343), Tuint16_t(1343), Tuint16_t(1343), Tuint16_t(1343), Tuint16_t(1343), Tuint16_t(1343), Tuint16_t(1343), Tuint16_t(1343), Tuint16_t(1343), Tuint16_t(1343), Tuint16_t(1343), Tuint16_t(1343), Tuint16_t(1343), Tuint16_t(1343),
Tuint16_t(1343), Tuint16_t(1343), Tuint16_t(1343), Tuint16_t(1343), Tuint16_t(1343), Tuint16_t(1343), Tuint16_t(1343), Tuint16_t(1343), Tuint16_t(1343), Tuint16_t(1343), Tuint16_t(1343), Tuint16_t(1343), Tuint16_t(1343), Tuint16_t(1343), Tuint16_t(1343), Tuint16_t(1343),
Tuint16_t(1343), Tuint16_t(1343), Tuint16_t(1343), Tuint16_t(1343), Tuint16_t(1343), Tuint16_t(1343), Tuint16_t(1343), Tuint16_t(1343), Tuint16_t(1343), Tuint16_t(1343), Tuint16_t(1343), Tuint16_t(1343), Tuint16_t(1343), Tuint16_t(1343), Tuint16_t(1343), Tuint16_t(1343),
Tuint16_t(1343), Tuint16_t(1343), Tuint16_t(1343), Tuint16_t(1343), Tuint16_t(1343), Tuint16_t(1343), Tuint16_t(1343), Tuint16_t(1343), Tuint16_t(1343), Tuint16_t(1343), Tuint16_t(1343), Tuint16_t(1343), Tuint16_t(1343), Tuint16_t(1343), Tuint16_t(1343), Tuint16_t(1343),
Tuint16_t(1343), Tuint16_t(1343), Tuint16_t(1343), Tuint16_t(1343), Tuint16_t(1343), Tuint16_t(1343), Tuint16_t(1343), Tuint16_t(1343), Tuint16_t(1343), Tuint16_t(1343), Tuint16_t(1343), Tuint16_t(1343), Tuint16_t(1343), Tuint16_t(1343), Tuint16_t(1343), Tuint16_t(1343),
// block 217
Tuint16_t(1343), Tuint16_t(1343), Tuint16_t(1343), Tuint16_t(1343), Tuint16_t(1343), Tuint16_t(1343), Tuint16_t(1343), Tuint16_t(1343), Tuint16_t(1343), Tuint16_t(1343), Tuint16_t(1343), Tuint16_t(1343), Tuint16_t(1343), Tuint16_t(1343), Tuint16_t(1343), Tuint16_t(1343),
Tuint16_t(1343), Tuint16_t(1343), Tuint16_t(1343), Tuint16_t(1343), Tuint16_t(1343), Tuint16_t(1343), Tuint16_t(1343), Tuint16_t(1343), Tuint16_t(1343), Tuint16_t(1343), Tuint16_t(1343), Tuint16_t(1343), Tuint16_t(1343), Tuint16_t(1343), Tuint16_t(1343), Tuint16_t(1343),
Tuint16_t(1343), Tuint16_t(1343), Tuint16_t(1343), Tuint16_t(1343), Tuint16_t(1343), Tuint16_t(1343), Tuint16_t(1343), Tuint16_t(1343), Tuint16_t(1343), Tuint16_t(1343), Tuint16_t(1343), Tuint16_t(1343), Tuint16_t(1343), Tuint16_t(1343), Tuint16_t(1343), Tuint16_t(1343),
Tuint16_t(1343), Tuint16_t(1343), Tuint16_t(1343), Tuint16_t(1343), Tuint16_t(1343), Tuint16_t(1343), Tuint16_t(1343), Tuint16_t(1343), Tuint16_t(1343), Tuint16_t(1343), Tuint16_t(1343), Tuint16_t(1343), Tuint16_t(1343), Tuint16_t(1343), Tuint16_t(1343), Tuint16_t(1343),
Tuint16_t(1343), Tuint16_t(1343), Tuint16_t(1343), Tuint16_t(1343), Tuint16_t(1343), Tuint16_t(1343), Tuint16_t(1343), Tuint16_t(1343), Tuint16_t(1343), Tuint16_t(1343), Tuint16_t(1343), Tuint16_t(1343), Tuint16_t(1343), Tuint16_t(1343), Tuint16_t(1343), Tuint16_t(1343),
Tuint16_t(1343), Tuint16_t(1343), Tuint16_t(1343), Tuint16_t(1343), Tuint16_t(1343), Tuint16_t(1343), Tuint16_t(1343), Tuint16_t(1343), Tuint16_t(1343), Tuint16_t(1343), Tuint16_t(1343), Tuint16_t(1343), Tuint16_t(1343), Tuint16_t(1343), Tuint16_t(1343), Tuint16_t(1343),
Tuint16_t(1343), Tuint16_t(1343), Tuint16_t(1343), Tuint16_t(1343), Tuint16_t(1343), Tuint16_t(1343), Tuint16_t(1343), Tuint16_t(1343), Tuint16_t(1343), Tuint16_t(1343), Tuint16_t(1343), Tuint16_t(1343), Tuint16_t(1343), Tuint16_t(1343), Tuint16_t(1343), Tuint16_t(1343),
Tuint16_t(1343), Tuint16_t(1343), Tuint16_t(1343), Tuint16_t(1343), Tuint16_t(1343), Tuint16_t(1343), Tuint16_t(1343), Tuint16_t(1343), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
// block 218
Tuint16_t(1344), Tuint16_t(1344), Tuint16_t(1344), Tuint16_t(1344), Tuint16_t(1344), Tuint16_t(1344), Tuint16_t(1344), Tuint16_t(1344), Tuint16_t(1344), Tuint16_t(1344), Tuint16_t(1344), Tuint16_t(1344), Tuint16_t(1344), Tuint16_t(1344), Tuint16_t(1344), Tuint16_t(1344),
Tuint16_t(1344), Tuint16_t(1344), Tuint16_t(1344), Tuint16_t(1344), Tuint16_t(1344), Tuint16_t(1344), Tuint16_t(1344), Tuint16_t(1344), Tuint16_t(1344), Tuint16_t(1344), Tuint16_t(1344), Tuint16_t(1344), Tuint16_t(1344), Tuint16_t(1344), Tuint16_t(1344), Tuint16_t(1344),
Tuint16_t(1344), Tuint16_t(1344), Tuint16_t(1344), Tuint16_t(1344), Tuint16_t(1344), Tuint16_t(1344), Tuint16_t(1344), Tuint16_t(1344), Tuint16_t(1344), Tuint16_t(1344), Tuint16_t(1344), Tuint16_t(1344), Tuint16_t(1344), Tuint16_t(1344), Tuint16_t(1344), Tuint16_t(1344),
Tuint16_t(1344), Tuint16_t(1344), Tuint16_t(1344), Tuint16_t(1344), Tuint16_t(1344), Tuint16_t(1344), Tuint16_t(1344), Tuint16_t(1344), Tuint16_t(1344), Tuint16_t(1344), Tuint16_t(1344), Tuint16_t(1344), Tuint16_t(1344), Tuint16_t(1344), Tuint16_t(1344), Tuint16_t(1344),
Tuint16_t(1344), Tuint16_t(1344), Tuint16_t(1344), Tuint16_t(1344), Tuint16_t(1344), Tuint16_t(1344), Tuint16_t(1344), Tuint16_t(1344), Tuint16_t(1344), Tuint16_t(1344), Tuint16_t(1344), Tuint16_t(1344), Tuint16_t(1344), Tuint16_t(1344), Tuint16_t(1344), Tuint16_t(1344),
Tuint16_t(1344), Tuint16_t(1344), Tuint16_t(1344), Tuint16_t(1344), Tuint16_t(1344), Tuint16_t(1344), Tuint16_t(1344), Tuint16_t(1344), Tuint16_t(1344), Tuint16_t(1344), Tuint16_t(1344), Tuint16_t(1344), Tuint16_t(1344), Tuint16_t(1344), Tuint16_t(1344), Tuint16_t(1344),
Tuint16_t(1344), Tuint16_t(1344), Tuint16_t(1344), Tuint16_t(1344), Tuint16_t(1344), Tuint16_t(1344), Tuint16_t(1344), Tuint16_t(1344), Tuint16_t(1344), Tuint16_t(1344), Tuint16_t(1344), Tuint16_t(1344), Tuint16_t(1344), Tuint16_t(1344), Tuint16_t(1344), Tuint16_t(1344),
Tuint16_t(1344), Tuint16_t(1344), Tuint16_t(1344), Tuint16_t(1344), Tuint16_t(1344), Tuint16_t(1344), Tuint16_t(1344), Tuint16_t(1344), Tuint16_t(1344), Tuint16_t(1344), Tuint16_t(1344), Tuint16_t(1344), Tuint16_t(1344), Tuint16_t(1344), Tuint16_t(1344), Tuint16_t(1344),
// block 219
Tuint16_t(1344), Tuint16_t(1344), Tuint16_t(1344), Tuint16_t(1344), Tuint16_t(1344), Tuint16_t(1344), Tuint16_t(1344), Tuint16_t(1344), Tuint16_t(1344), Tuint16_t(1344), Tuint16_t(1344), Tuint16_t(1344), Tuint16_t(1344), Tuint16_t(1344), Tuint16_t(1344), Tuint16_t(1344),
Tuint16_t(1344), Tuint16_t(1344), Tuint16_t(1344), Tuint16_t(1344), Tuint16_t(1344), Tuint16_t(1344), Tuint16_t(1344), Tuint16_t(1344), Tuint16_t(1344), Tuint16_t(1344), Tuint16_t(1344), Tuint16_t(1344), Tuint16_t(1344), Tuint16_t(1344), Tuint16_t(1344), Tuint16_t(1344),
Tuint16_t(1344), Tuint16_t(1344), Tuint16_t(1344), Tuint16_t(1344), Tuint16_t(1344), Tuint16_t(1344), Tuint16_t(1344), Tuint16_t(1344), Tuint16_t(1344), Tuint16_t(1344), Tuint16_t(1344), Tuint16_t(1344), Tuint16_t(1344), Tuint16_t(1344), Tuint16_t(1344), Tuint16_t(1344),
Tuint16_t(1344), Tuint16_t(1344), Tuint16_t(1344), Tuint16_t(1344), Tuint16_t(1344), Tuint16_t(1344), Tuint16_t(1344), Tuint16_t(1344), Tuint16_t(1344), Tuint16_t(1344), Tuint16_t(1344), Tuint16_t(1344), Tuint16_t(1344), Tuint16_t(1344), Tuint16_t(1344), Tuint16_t(1344),
Tuint16_t(1344), Tuint16_t(1344), Tuint16_t(1344), Tuint16_t(1344), Tuint16_t(1344), Tuint16_t(1344), Tuint16_t(1344), Tuint16_t(1344), Tuint16_t(1344), Tuint16_t(1344), Tuint16_t(1344), Tuint16_t(1344), Tuint16_t(1344), Tuint16_t(1344), Tuint16_t(1344), Tuint16_t(1344),
Tuint16_t(1344), Tuint16_t(1344), Tuint16_t(1344), Tuint16_t(1344), Tuint16_t(1344), Tuint16_t(1344), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
// block 220
Tuint16_t(1343), Tuint16_t(1343), Tuint16_t(1343), Tuint16_t(1343), Tuint16_t(1343), Tuint16_t(1343), Tuint16_t(1343), Tuint16_t(1343), Tuint16_t(1343), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
// block 221
Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(1345), Tuint16_t(1345), Tuint16_t(1345), Tuint16_t(1345), Tuint16_t(163), Tuint16_t(1345), Tuint16_t(1345), Tuint16_t(1345), Tuint16_t(1345), Tuint16_t(1345), Tuint16_t(1345), Tuint16_t(1345), Tuint16_t(163), Tuint16_t(1345), Tuint16_t(1345), Tuint16_t(163),
// block 222
Tuint16_t(824), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819),
Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819),
Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819),
Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819),
Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819),
Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819),
Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819),
Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819),
// block 223
Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819),
Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819),
Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819),
Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819),
Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819),
Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819),
Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819),
Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819),
// block 224
Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819),
Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(819),
Tuint16_t(824), Tuint16_t(824), Tuint16_t(824), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(819), Tuint16_t(819), Tuint16_t(819), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(824), Tuint16_t(824), Tuint16_t(824), Tuint16_t(824), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(1346), Tuint16_t(1346), Tuint16_t(1346), Tuint16_t(1346), Tuint16_t(1346), Tuint16_t(1346), Tuint16_t(1346), Tuint16_t(1346), Tuint16_t(1346), Tuint16_t(1346), Tuint16_t(1346), Tuint16_t(1346), Tuint16_t(1346), Tuint16_t(1346), Tuint16_t(1346), Tuint16_t(1346),
// block 225
Tuint16_t(1346), Tuint16_t(1346), Tuint16_t(1346), Tuint16_t(1346), Tuint16_t(1346), Tuint16_t(1346), Tuint16_t(1346), Tuint16_t(1346), Tuint16_t(1346), Tuint16_t(1346), Tuint16_t(1346), Tuint16_t(1346), Tuint16_t(1346), Tuint16_t(1346), Tuint16_t(1346), Tuint16_t(1346),
Tuint16_t(1346), Tuint16_t(1346), Tuint16_t(1346), Tuint16_t(1346), Tuint16_t(1346), Tuint16_t(1346), Tuint16_t(1346), Tuint16_t(1346), Tuint16_t(1346), Tuint16_t(1346), Tuint16_t(1346), Tuint16_t(1346), Tuint16_t(1346), Tuint16_t(1346), Tuint16_t(1346), Tuint16_t(1346),
Tuint16_t(1346), Tuint16_t(1346), Tuint16_t(1346), Tuint16_t(1346), Tuint16_t(1346), Tuint16_t(1346), Tuint16_t(1346), Tuint16_t(1346), Tuint16_t(1346), Tuint16_t(1346), Tuint16_t(1346), Tuint16_t(1346), Tuint16_t(1346), Tuint16_t(1346), Tuint16_t(1346), Tuint16_t(1346),
Tuint16_t(1346), Tuint16_t(1346), Tuint16_t(1346), Tuint16_t(1346), Tuint16_t(1346), Tuint16_t(1346), Tuint16_t(1346), Tuint16_t(1346), Tuint16_t(1346), Tuint16_t(1346), Tuint16_t(1346), Tuint16_t(1346), Tuint16_t(1346), Tuint16_t(1346), Tuint16_t(1346), Tuint16_t(1346),
Tuint16_t(1346), Tuint16_t(1346), Tuint16_t(1346), Tuint16_t(1346), Tuint16_t(1346), Tuint16_t(1346), Tuint16_t(1346), Tuint16_t(1346), Tuint16_t(1346), Tuint16_t(1346), Tuint16_t(1346), Tuint16_t(1346), Tuint16_t(1346), Tuint16_t(1346), Tuint16_t(1346), Tuint16_t(1346),
Tuint16_t(1346), Tuint16_t(1346), Tuint16_t(1346), Tuint16_t(1346), Tuint16_t(1346), Tuint16_t(1346), Tuint16_t(1346), Tuint16_t(1346), Tuint16_t(1346), Tuint16_t(1346), Tuint16_t(1346), Tuint16_t(1346), Tuint16_t(1346), Tuint16_t(1346), Tuint16_t(1346), Tuint16_t(1346),
Tuint16_t(1346), Tuint16_t(1346), Tuint16_t(1346), Tuint16_t(1346), Tuint16_t(1346), Tuint16_t(1346), Tuint16_t(1346), Tuint16_t(1346), Tuint16_t(1346), Tuint16_t(1346), Tuint16_t(1346), Tuint16_t(1346), Tuint16_t(1346), Tuint16_t(1346), Tuint16_t(1346), Tuint16_t(1346),
Tuint16_t(1346), Tuint16_t(1346), Tuint16_t(1346), Tuint16_t(1346), Tuint16_t(1346), Tuint16_t(1346), Tuint16_t(1346), Tuint16_t(1346), Tuint16_t(1346), Tuint16_t(1346), Tuint16_t(1346), Tuint16_t(1346), Tuint16_t(1346), Tuint16_t(1346), Tuint16_t(1346), Tuint16_t(1346),
// block 226
Tuint16_t(1346), Tuint16_t(1346), Tuint16_t(1346), Tuint16_t(1346), Tuint16_t(1346), Tuint16_t(1346), Tuint16_t(1346), Tuint16_t(1346), Tuint16_t(1346), Tuint16_t(1346), Tuint16_t(1346), Tuint16_t(1346), Tuint16_t(1346), Tuint16_t(1346), Tuint16_t(1346), Tuint16_t(1346),
Tuint16_t(1346), Tuint16_t(1346), Tuint16_t(1346), Tuint16_t(1346), Tuint16_t(1346), Tuint16_t(1346), Tuint16_t(1346), Tuint16_t(1346), Tuint16_t(1346), Tuint16_t(1346), Tuint16_t(1346), Tuint16_t(1346), Tuint16_t(1346), Tuint16_t(1346), Tuint16_t(1346), Tuint16_t(1346),
Tuint16_t(1346), Tuint16_t(1346), Tuint16_t(1346), Tuint16_t(1346), Tuint16_t(1346), Tuint16_t(1346), Tuint16_t(1346), Tuint16_t(1346), Tuint16_t(1346), Tuint16_t(1346), Tuint16_t(1346), Tuint16_t(1346), Tuint16_t(1346), Tuint16_t(1346), Tuint16_t(1346), Tuint16_t(1346),
Tuint16_t(1346), Tuint16_t(1346), Tuint16_t(1346), Tuint16_t(1346), Tuint16_t(1346), Tuint16_t(1346), Tuint16_t(1346), Tuint16_t(1346), Tuint16_t(1346), Tuint16_t(1346), Tuint16_t(1346), Tuint16_t(1346), Tuint16_t(1346), Tuint16_t(1346), Tuint16_t(1346), Tuint16_t(1346),
Tuint16_t(1346), Tuint16_t(1346), Tuint16_t(1346), Tuint16_t(1346), Tuint16_t(1346), Tuint16_t(1346), Tuint16_t(1346), Tuint16_t(1346), Tuint16_t(1346), Tuint16_t(1346), Tuint16_t(1346), Tuint16_t(1346), Tuint16_t(1346), Tuint16_t(1346), Tuint16_t(1346), Tuint16_t(1346),
Tuint16_t(1346), Tuint16_t(1346), Tuint16_t(1346), Tuint16_t(1346), Tuint16_t(1346), Tuint16_t(1346), Tuint16_t(1346), Tuint16_t(1346), Tuint16_t(1346), Tuint16_t(1346), Tuint16_t(1346), Tuint16_t(1346), Tuint16_t(1346), Tuint16_t(1346), Tuint16_t(1346), Tuint16_t(1346),
Tuint16_t(1346), Tuint16_t(1346), Tuint16_t(1346), Tuint16_t(1346), Tuint16_t(1346), Tuint16_t(1346), Tuint16_t(1346), Tuint16_t(1346), Tuint16_t(1346), Tuint16_t(1346), Tuint16_t(1346), Tuint16_t(1346), Tuint16_t(1346), Tuint16_t(1346), Tuint16_t(1346), Tuint16_t(1346),
Tuint16_t(1346), Tuint16_t(1346), Tuint16_t(1346), Tuint16_t(1346), Tuint16_t(1346), Tuint16_t(1346), Tuint16_t(1346), Tuint16_t(1346), Tuint16_t(1346), Tuint16_t(1346), Tuint16_t(1346), Tuint16_t(1346), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
// block 227
Tuint16_t(1347), Tuint16_t(1347), Tuint16_t(1347), Tuint16_t(1347), Tuint16_t(1347), Tuint16_t(1347), Tuint16_t(1347), Tuint16_t(1347), Tuint16_t(1347), Tuint16_t(1347), Tuint16_t(1347), Tuint16_t(1347), Tuint16_t(1347), Tuint16_t(1347), Tuint16_t(1347), Tuint16_t(1347),
Tuint16_t(1347), Tuint16_t(1347), Tuint16_t(1347), Tuint16_t(1347), Tuint16_t(1347), Tuint16_t(1347), Tuint16_t(1347), Tuint16_t(1347), Tuint16_t(1347), Tuint16_t(1347), Tuint16_t(1347), Tuint16_t(1347), Tuint16_t(1347), Tuint16_t(1347), Tuint16_t(1347), Tuint16_t(1347),
Tuint16_t(1347), Tuint16_t(1347), Tuint16_t(1347), Tuint16_t(1347), Tuint16_t(1347), Tuint16_t(1347), Tuint16_t(1347), Tuint16_t(1347), Tuint16_t(1347), Tuint16_t(1347), Tuint16_t(1347), Tuint16_t(1347), Tuint16_t(1347), Tuint16_t(1347), Tuint16_t(1347), Tuint16_t(1347),
Tuint16_t(1347), Tuint16_t(1347), Tuint16_t(1347), Tuint16_t(1347), Tuint16_t(1347), Tuint16_t(1347), Tuint16_t(1347), Tuint16_t(1347), Tuint16_t(1347), Tuint16_t(1347), Tuint16_t(1347), Tuint16_t(1347), Tuint16_t(1347), Tuint16_t(1347), Tuint16_t(1347), Tuint16_t(1347),
Tuint16_t(1347), Tuint16_t(1347), Tuint16_t(1347), Tuint16_t(1347), Tuint16_t(1347), Tuint16_t(1347), Tuint16_t(1347), Tuint16_t(1347), Tuint16_t(1347), Tuint16_t(1347), Tuint16_t(1347), Tuint16_t(1347), Tuint16_t(1347), Tuint16_t(1347), Tuint16_t(1347), Tuint16_t(1347),
Tuint16_t(1347), Tuint16_t(1347), Tuint16_t(1347), Tuint16_t(1347), Tuint16_t(1347), Tuint16_t(1347), Tuint16_t(1347), Tuint16_t(1347), Tuint16_t(1347), Tuint16_t(1347), Tuint16_t(1347), Tuint16_t(1347), Tuint16_t(1347), Tuint16_t(1347), Tuint16_t(1347), Tuint16_t(1347),
Tuint16_t(1347), Tuint16_t(1347), Tuint16_t(1347), Tuint16_t(1347), Tuint16_t(1347), Tuint16_t(1347), Tuint16_t(1347), Tuint16_t(1347), Tuint16_t(1347), Tuint16_t(1347), Tuint16_t(1347), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(1347), Tuint16_t(1347), Tuint16_t(1347), Tuint16_t(1347), Tuint16_t(1347), Tuint16_t(1347), Tuint16_t(1347), Tuint16_t(1347), Tuint16_t(1347), Tuint16_t(1347), Tuint16_t(1347), Tuint16_t(1347), Tuint16_t(1347), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
// block 228
Tuint16_t(1347), Tuint16_t(1347), Tuint16_t(1347), Tuint16_t(1347), Tuint16_t(1347), Tuint16_t(1347), Tuint16_t(1347), Tuint16_t(1347), Tuint16_t(1347), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(1347), Tuint16_t(1347), Tuint16_t(1347), Tuint16_t(1347), Tuint16_t(1347), Tuint16_t(1347), Tuint16_t(1347), Tuint16_t(1347), Tuint16_t(1347), Tuint16_t(1347), Tuint16_t(163), Tuint16_t(163), Tuint16_t(1348), Tuint16_t(1349), Tuint16_t(1350), Tuint16_t(1351),
Tuint16_t(1352), Tuint16_t(1352), Tuint16_t(1352), Tuint16_t(1352), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
// block 229
Tuint16_t(154), Tuint16_t(154), Tuint16_t(154), Tuint16_t(154), Tuint16_t(154), Tuint16_t(154), Tuint16_t(154), Tuint16_t(154), Tuint16_t(154), Tuint16_t(154), Tuint16_t(154), Tuint16_t(154), Tuint16_t(154), Tuint16_t(154), Tuint16_t(154), Tuint16_t(154),
Tuint16_t(154), Tuint16_t(154), Tuint16_t(154), Tuint16_t(154), Tuint16_t(154), Tuint16_t(154), Tuint16_t(154), Tuint16_t(154), Tuint16_t(154), Tuint16_t(154), Tuint16_t(154), Tuint16_t(154), Tuint16_t(154), Tuint16_t(154), Tuint16_t(154), Tuint16_t(154),
Tuint16_t(154), Tuint16_t(154), Tuint16_t(154), Tuint16_t(154), Tuint16_t(154), Tuint16_t(154), Tuint16_t(154), Tuint16_t(154), Tuint16_t(154), Tuint16_t(154), Tuint16_t(154), Tuint16_t(154), Tuint16_t(154), Tuint16_t(154), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(154), Tuint16_t(154), Tuint16_t(154), Tuint16_t(154), Tuint16_t(154), Tuint16_t(154), Tuint16_t(154), Tuint16_t(154), Tuint16_t(154), Tuint16_t(154), Tuint16_t(154), Tuint16_t(154), Tuint16_t(154), Tuint16_t(154), Tuint16_t(154), Tuint16_t(154),
Tuint16_t(154), Tuint16_t(154), Tuint16_t(154), Tuint16_t(154), Tuint16_t(154), Tuint16_t(154), Tuint16_t(154), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460),
Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460),
Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460),
// block 230
Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460),
Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460),
Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460),
Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460),
Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
// block 231
Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460),
Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460),
Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460),
Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460),
Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460),
Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460),
Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460),
Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460),
// block 232
Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460),
Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460),
Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460),
Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460),
Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460),
Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460),
Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460),
Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
// block 233
Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460),
Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460),
Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(163), Tuint16_t(163), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460),
Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460),
Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460),
Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460),
Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(1353), Tuint16_t(1354), Tuint16_t(154), Tuint16_t(154), Tuint16_t(154), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(1355), Tuint16_t(1356), Tuint16_t(1356),
Tuint16_t(1356), Tuint16_t(1356), Tuint16_t(1356), Tuint16_t(51), Tuint16_t(51), Tuint16_t(51), Tuint16_t(51), Tuint16_t(51), Tuint16_t(51), Tuint16_t(51), Tuint16_t(51), Tuint16_t(154), Tuint16_t(154), Tuint16_t(154), Tuint16_t(154), Tuint16_t(154),
// block 234
Tuint16_t(154), Tuint16_t(154), Tuint16_t(154), Tuint16_t(460), Tuint16_t(460), Tuint16_t(154), Tuint16_t(154), Tuint16_t(154), Tuint16_t(154), Tuint16_t(154), Tuint16_t(154), Tuint16_t(154), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460),
Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460),
Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(154), Tuint16_t(154), Tuint16_t(154), Tuint16_t(154), Tuint16_t(460), Tuint16_t(460),
Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460),
Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460),
Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460),
Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(723), Tuint16_t(723), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
// block 235
Tuint16_t(1002), Tuint16_t(1002), Tuint16_t(1002), Tuint16_t(1002), Tuint16_t(1002), Tuint16_t(1002), Tuint16_t(1002), Tuint16_t(1002), Tuint16_t(1002), Tuint16_t(1002), Tuint16_t(1002), Tuint16_t(1002), Tuint16_t(1002), Tuint16_t(1002), Tuint16_t(1002), Tuint16_t(1002),
Tuint16_t(1002), Tuint16_t(1002), Tuint16_t(1002), Tuint16_t(1002), Tuint16_t(1002), Tuint16_t(1002), Tuint16_t(1002), Tuint16_t(1002), Tuint16_t(1002), Tuint16_t(1002), Tuint16_t(1002), Tuint16_t(1002), Tuint16_t(1002), Tuint16_t(1002), Tuint16_t(1002), Tuint16_t(1002),
Tuint16_t(1002), Tuint16_t(1002), Tuint16_t(1002), Tuint16_t(1002), Tuint16_t(1002), Tuint16_t(1002), Tuint16_t(1002), Tuint16_t(1002), Tuint16_t(1002), Tuint16_t(1002), Tuint16_t(1002), Tuint16_t(1002), Tuint16_t(1002), Tuint16_t(1002), Tuint16_t(1002), Tuint16_t(1002),
Tuint16_t(1002), Tuint16_t(1002), Tuint16_t(1002), Tuint16_t(1002), Tuint16_t(1002), Tuint16_t(1002), Tuint16_t(1002), Tuint16_t(1002), Tuint16_t(1002), Tuint16_t(1002), Tuint16_t(1002), Tuint16_t(1002), Tuint16_t(1002), Tuint16_t(1002), Tuint16_t(1002), Tuint16_t(1002),
Tuint16_t(1002), Tuint16_t(1002), Tuint16_t(1357), Tuint16_t(1357), Tuint16_t(1357), Tuint16_t(1002), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
// block 236
Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(835), Tuint16_t(835), Tuint16_t(835), Tuint16_t(835), Tuint16_t(835), Tuint16_t(835), Tuint16_t(835), Tuint16_t(835), Tuint16_t(835), Tuint16_t(835), Tuint16_t(835), Tuint16_t(835), Tuint16_t(835), Tuint16_t(835), Tuint16_t(835), Tuint16_t(835),
Tuint16_t(835), Tuint16_t(835), Tuint16_t(835), Tuint16_t(835), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
// block 237
Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723),
Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723),
Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723),
Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723),
Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723),
Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(832), Tuint16_t(832), Tuint16_t(832), Tuint16_t(832), Tuint16_t(832), Tuint16_t(832), Tuint16_t(832), Tuint16_t(832), Tuint16_t(832), Tuint16_t(832), Tuint16_t(832), Tuint16_t(832), Tuint16_t(832), Tuint16_t(832), Tuint16_t(832), Tuint16_t(832),
Tuint16_t(832), Tuint16_t(832), Tuint16_t(835), Tuint16_t(835), Tuint16_t(835), Tuint16_t(835), Tuint16_t(835), Tuint16_t(835), Tuint16_t(835), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
// block 238
Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724),
Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725),
Tuint16_t(725), Tuint16_t(725), Tuint16_t(736), Tuint16_t(736), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725),
Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724),
Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(725), Tuint16_t(725),
Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(163), Tuint16_t(736), Tuint16_t(736), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725),
Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724),
Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724),
// block 239
Tuint16_t(724), Tuint16_t(724), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(736), Tuint16_t(736), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725),
Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(724), Tuint16_t(163), Tuint16_t(724), Tuint16_t(724),
Tuint16_t(163), Tuint16_t(163), Tuint16_t(724), Tuint16_t(163), Tuint16_t(163), Tuint16_t(724), Tuint16_t(724), Tuint16_t(163), Tuint16_t(163), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(163), Tuint16_t(724), Tuint16_t(724),
Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(163), Tuint16_t(725), Tuint16_t(163), Tuint16_t(725), Tuint16_t(736), Tuint16_t(736),
Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(163), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725),
Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724),
Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725),
Tuint16_t(725), Tuint16_t(725), Tuint16_t(736), Tuint16_t(736), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725),
// block 240
Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(724), Tuint16_t(724), Tuint16_t(163), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(163), Tuint16_t(163), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724),
Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(163), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(163), Tuint16_t(725), Tuint16_t(725),
Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(736), Tuint16_t(736), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725),
Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(724), Tuint16_t(724), Tuint16_t(163), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(163),
Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(163), Tuint16_t(724), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724),
Tuint16_t(724), Tuint16_t(163), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(736), Tuint16_t(736), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725),
Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724),
Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724),
// block 241
Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(736), Tuint16_t(736),
Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725),
Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724),
Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725),
Tuint16_t(725), Tuint16_t(725), Tuint16_t(736), Tuint16_t(736), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725),
Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724),
Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(725), Tuint16_t(725),
Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(736), Tuint16_t(736), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725),
// block 242
Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724),
Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724),
Tuint16_t(724), Tuint16_t(724), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(736), Tuint16_t(736), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725),
Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724),
Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724),
Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(736), Tuint16_t(736),
Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725),
Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724),
// block 243
Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725),
Tuint16_t(725), Tuint16_t(725), Tuint16_t(736), Tuint16_t(736), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725),
Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(163), Tuint16_t(163), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724),
Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724),
Tuint16_t(724), Tuint16_t(1358), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725),
Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(715), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725),
Tuint16_t(725), Tuint16_t(725), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724),
Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(1358), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725),
// block 244
Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725),
Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(715), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724),
Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724),
Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(1358), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725),
Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(715),
Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724),
Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(1358),
Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725),
// block 245
Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(715), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725),
Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724),
Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(724), Tuint16_t(1358), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725),
Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725),
Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(715), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(725), Tuint16_t(724), Tuint16_t(725), Tuint16_t(163), Tuint16_t(163), Tuint16_t(1359), Tuint16_t(1359),
Tuint16_t(1359), Tuint16_t(1359), Tuint16_t(1359), Tuint16_t(1359), Tuint16_t(1359), Tuint16_t(1359), Tuint16_t(1359), Tuint16_t(1359), Tuint16_t(1359), Tuint16_t(1359), Tuint16_t(1359), Tuint16_t(1359), Tuint16_t(1359), Tuint16_t(1359), Tuint16_t(1359), Tuint16_t(1359),
Tuint16_t(1359), Tuint16_t(1359), Tuint16_t(1359), Tuint16_t(1359), Tuint16_t(1359), Tuint16_t(1359), Tuint16_t(1359), Tuint16_t(1359), Tuint16_t(1359), Tuint16_t(1359), Tuint16_t(1359), Tuint16_t(1359), Tuint16_t(1359), Tuint16_t(1359), Tuint16_t(1359), Tuint16_t(1359),
Tuint16_t(1359), Tuint16_t(1359), Tuint16_t(1359), Tuint16_t(1359), Tuint16_t(1359), Tuint16_t(1359), Tuint16_t(1359), Tuint16_t(1359), Tuint16_t(1359), Tuint16_t(1359), Tuint16_t(1359), Tuint16_t(1359), Tuint16_t(1359), Tuint16_t(1359), Tuint16_t(1359), Tuint16_t(1359),
// block 246
Tuint16_t(1360), Tuint16_t(1360), Tuint16_t(1360), Tuint16_t(1360), Tuint16_t(1360), Tuint16_t(1360), Tuint16_t(1360), Tuint16_t(1360), Tuint16_t(1360), Tuint16_t(1360), Tuint16_t(1360), Tuint16_t(1360), Tuint16_t(1360), Tuint16_t(1360), Tuint16_t(1360), Tuint16_t(1360),
Tuint16_t(1360), Tuint16_t(1360), Tuint16_t(1360), Tuint16_t(1360), Tuint16_t(1360), Tuint16_t(1360), Tuint16_t(1360), Tuint16_t(1360), Tuint16_t(1360), Tuint16_t(1360), Tuint16_t(1360), Tuint16_t(1360), Tuint16_t(1360), Tuint16_t(1360), Tuint16_t(1360), Tuint16_t(1360),
Tuint16_t(1360), Tuint16_t(1360), Tuint16_t(1360), Tuint16_t(1360), Tuint16_t(1360), Tuint16_t(1360), Tuint16_t(1360), Tuint16_t(1360), Tuint16_t(1360), Tuint16_t(1360), Tuint16_t(1360), Tuint16_t(1360), Tuint16_t(1360), Tuint16_t(1360), Tuint16_t(1360), Tuint16_t(1360),
Tuint16_t(1360), Tuint16_t(1360), Tuint16_t(1360), Tuint16_t(1360), Tuint16_t(1360), Tuint16_t(1360), Tuint16_t(1360), Tuint16_t(1360), Tuint16_t(1360), Tuint16_t(1360), Tuint16_t(1360), Tuint16_t(1360), Tuint16_t(1360), Tuint16_t(1360), Tuint16_t(1360), Tuint16_t(1360),
Tuint16_t(1360), Tuint16_t(1360), Tuint16_t(1360), Tuint16_t(1360), Tuint16_t(1360), Tuint16_t(1360), Tuint16_t(1360), Tuint16_t(1360), Tuint16_t(1360), Tuint16_t(1360), Tuint16_t(1360), Tuint16_t(1360), Tuint16_t(1360), Tuint16_t(1360), Tuint16_t(1360), Tuint16_t(1360),
Tuint16_t(1360), Tuint16_t(1360), Tuint16_t(1360), Tuint16_t(1360), Tuint16_t(1360), Tuint16_t(1360), Tuint16_t(1360), Tuint16_t(1360), Tuint16_t(1360), Tuint16_t(1360), Tuint16_t(1360), Tuint16_t(1360), Tuint16_t(1360), Tuint16_t(1360), Tuint16_t(1360), Tuint16_t(1360),
Tuint16_t(1360), Tuint16_t(1360), Tuint16_t(1360), Tuint16_t(1360), Tuint16_t(1360), Tuint16_t(1360), Tuint16_t(1360), Tuint16_t(1360), Tuint16_t(1360), Tuint16_t(1360), Tuint16_t(1360), Tuint16_t(1360), Tuint16_t(1360), Tuint16_t(1360), Tuint16_t(1360), Tuint16_t(1360),
Tuint16_t(1360), Tuint16_t(1360), Tuint16_t(1360), Tuint16_t(1360), Tuint16_t(1360), Tuint16_t(1360), Tuint16_t(1360), Tuint16_t(1360), Tuint16_t(1360), Tuint16_t(1360), Tuint16_t(1360), Tuint16_t(1360), Tuint16_t(1360), Tuint16_t(1360), Tuint16_t(1360), Tuint16_t(1360),
// block 247
Tuint16_t(1361), Tuint16_t(1361), Tuint16_t(1361), Tuint16_t(1361), Tuint16_t(1361), Tuint16_t(1361), Tuint16_t(1361), Tuint16_t(1361), Tuint16_t(1361), Tuint16_t(1361), Tuint16_t(1361), Tuint16_t(1361), Tuint16_t(1361), Tuint16_t(1361), Tuint16_t(1361), Tuint16_t(1361),
Tuint16_t(1361), Tuint16_t(1361), Tuint16_t(1361), Tuint16_t(1361), Tuint16_t(1361), Tuint16_t(1361), Tuint16_t(1361), Tuint16_t(1361), Tuint16_t(1361), Tuint16_t(1361), Tuint16_t(1361), Tuint16_t(1361), Tuint16_t(1361), Tuint16_t(1361), Tuint16_t(1361), Tuint16_t(1361),
Tuint16_t(1361), Tuint16_t(1361), Tuint16_t(1361), Tuint16_t(1361), Tuint16_t(1361), Tuint16_t(1361), Tuint16_t(1361), Tuint16_t(1361), Tuint16_t(1361), Tuint16_t(1361), Tuint16_t(1361), Tuint16_t(1361), Tuint16_t(1361), Tuint16_t(1361), Tuint16_t(1361), Tuint16_t(1361),
Tuint16_t(1361), Tuint16_t(1361), Tuint16_t(1361), Tuint16_t(1361), Tuint16_t(1361), Tuint16_t(1361), Tuint16_t(1361), Tuint16_t(1360), Tuint16_t(1360), Tuint16_t(1360), Tuint16_t(1360), Tuint16_t(1361), Tuint16_t(1361), Tuint16_t(1361), Tuint16_t(1361), Tuint16_t(1361),
Tuint16_t(1361), Tuint16_t(1361), Tuint16_t(1361), Tuint16_t(1361), Tuint16_t(1361), Tuint16_t(1361), Tuint16_t(1361), Tuint16_t(1361), Tuint16_t(1361), Tuint16_t(1361), Tuint16_t(1361), Tuint16_t(1361), Tuint16_t(1361), Tuint16_t(1361), Tuint16_t(1361), Tuint16_t(1361),
Tuint16_t(1361), Tuint16_t(1361), Tuint16_t(1361), Tuint16_t(1361), Tuint16_t(1361), Tuint16_t(1361), Tuint16_t(1361), Tuint16_t(1361), Tuint16_t(1361), Tuint16_t(1361), Tuint16_t(1361), Tuint16_t(1361), Tuint16_t(1361), Tuint16_t(1361), Tuint16_t(1361), Tuint16_t(1361),
Tuint16_t(1361), Tuint16_t(1361), Tuint16_t(1361), Tuint16_t(1361), Tuint16_t(1361), Tuint16_t(1361), Tuint16_t(1361), Tuint16_t(1361), Tuint16_t(1361), Tuint16_t(1361), Tuint16_t(1361), Tuint16_t(1361), Tuint16_t(1361), Tuint16_t(1360), Tuint16_t(1360), Tuint16_t(1360),
Tuint16_t(1360), Tuint16_t(1360), Tuint16_t(1360), Tuint16_t(1360), Tuint16_t(1360), Tuint16_t(1361), Tuint16_t(1360), Tuint16_t(1360), Tuint16_t(1360), Tuint16_t(1360), Tuint16_t(1360), Tuint16_t(1360), Tuint16_t(1360), Tuint16_t(1360), Tuint16_t(1360), Tuint16_t(1360),
// block 248
Tuint16_t(1360), Tuint16_t(1360), Tuint16_t(1360), Tuint16_t(1360), Tuint16_t(1361), Tuint16_t(1360), Tuint16_t(1360), Tuint16_t(1362), Tuint16_t(1363), Tuint16_t(1362), Tuint16_t(1362), Tuint16_t(1364), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(1361), Tuint16_t(1361), Tuint16_t(1361), Tuint16_t(1361), Tuint16_t(1361),
Tuint16_t(163), Tuint16_t(1361), Tuint16_t(1361), Tuint16_t(1361), Tuint16_t(1361), Tuint16_t(1361), Tuint16_t(1361), Tuint16_t(1361), Tuint16_t(1361), Tuint16_t(1361), Tuint16_t(1361), Tuint16_t(1361), Tuint16_t(1361), Tuint16_t(1361), Tuint16_t(1361), Tuint16_t(1361),
Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
// block 249
Tuint16_t(70), Tuint16_t(70), Tuint16_t(70), Tuint16_t(70), Tuint16_t(70), Tuint16_t(70), Tuint16_t(70), Tuint16_t(70), Tuint16_t(70), Tuint16_t(70), Tuint16_t(92), Tuint16_t(70), Tuint16_t(70), Tuint16_t(70), Tuint16_t(70), Tuint16_t(70),
Tuint16_t(70), Tuint16_t(70), Tuint16_t(70), Tuint16_t(70), Tuint16_t(70), Tuint16_t(70), Tuint16_t(70), Tuint16_t(70), Tuint16_t(70), Tuint16_t(70), Tuint16_t(643), Tuint16_t(70), Tuint16_t(70), Tuint16_t(70), Tuint16_t(70), Tuint16_t(163),
Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
// block 250
Tuint16_t(1365), Tuint16_t(1365), Tuint16_t(1365), Tuint16_t(1365), Tuint16_t(1365), Tuint16_t(1365), Tuint16_t(1365), Tuint16_t(163), Tuint16_t(1365), Tuint16_t(1365), Tuint16_t(1365), Tuint16_t(1365), Tuint16_t(1365), Tuint16_t(1365), Tuint16_t(1365), Tuint16_t(1365),
Tuint16_t(1365), Tuint16_t(1365), Tuint16_t(1365), Tuint16_t(1365), Tuint16_t(1365), Tuint16_t(1365), Tuint16_t(1365), Tuint16_t(1365), Tuint16_t(1365), Tuint16_t(163), Tuint16_t(163), Tuint16_t(1365), Tuint16_t(1365), Tuint16_t(1365), Tuint16_t(1365), Tuint16_t(1365),
Tuint16_t(1365), Tuint16_t(1365), Tuint16_t(163), Tuint16_t(1365), Tuint16_t(1365), Tuint16_t(163), Tuint16_t(1365), Tuint16_t(1365), Tuint16_t(1365), Tuint16_t(1365), Tuint16_t(1365), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
// block 251
Tuint16_t(1366), Tuint16_t(1366), Tuint16_t(1366), Tuint16_t(1366), Tuint16_t(1366), Tuint16_t(1366), Tuint16_t(1366), Tuint16_t(1366), Tuint16_t(1366), Tuint16_t(1366), Tuint16_t(1366), Tuint16_t(1366), Tuint16_t(1366), Tuint16_t(1366), Tuint16_t(1366), Tuint16_t(1366),
Tuint16_t(1366), Tuint16_t(1366), Tuint16_t(1366), Tuint16_t(1366), Tuint16_t(1366), Tuint16_t(1366), Tuint16_t(1366), Tuint16_t(1366), Tuint16_t(1366), Tuint16_t(1366), Tuint16_t(1366), Tuint16_t(1366), Tuint16_t(1366), Tuint16_t(1366), Tuint16_t(1366), Tuint16_t(1366),
Tuint16_t(1366), Tuint16_t(1366), Tuint16_t(1366), Tuint16_t(1366), Tuint16_t(1366), Tuint16_t(1366), Tuint16_t(1366), Tuint16_t(1366), Tuint16_t(1366), Tuint16_t(1366), Tuint16_t(1366), Tuint16_t(1366), Tuint16_t(1366), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(1367), Tuint16_t(1367), Tuint16_t(1367), Tuint16_t(1367), Tuint16_t(1367), Tuint16_t(1367), Tuint16_t(1367), Tuint16_t(1368), Tuint16_t(1368), Tuint16_t(1368), Tuint16_t(1368), Tuint16_t(1368), Tuint16_t(1369), Tuint16_t(1369), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(1370), Tuint16_t(1370), Tuint16_t(1370), Tuint16_t(1370), Tuint16_t(1370), Tuint16_t(1370), Tuint16_t(1370), Tuint16_t(1370), Tuint16_t(1370), Tuint16_t(1370), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(1366), Tuint16_t(1371),
Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
// block 252
Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(1372), Tuint16_t(1372), Tuint16_t(1372), Tuint16_t(1372), Tuint16_t(1372), Tuint16_t(1372), Tuint16_t(1372), Tuint16_t(1372), Tuint16_t(1372), Tuint16_t(1372), Tuint16_t(1372), Tuint16_t(1372), Tuint16_t(1372), Tuint16_t(1372), Tuint16_t(1372), Tuint16_t(1372),
Tuint16_t(1372), Tuint16_t(1372), Tuint16_t(1372), Tuint16_t(1372), Tuint16_t(1372), Tuint16_t(1372), Tuint16_t(1372), Tuint16_t(1372), Tuint16_t(1372), Tuint16_t(1372), Tuint16_t(1372), Tuint16_t(1372), Tuint16_t(1372), Tuint16_t(1372), Tuint16_t(1373), Tuint16_t(163),
Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(1374), Tuint16_t(1374), Tuint16_t(1374), Tuint16_t(1374), Tuint16_t(1374), Tuint16_t(1374), Tuint16_t(1374), Tuint16_t(1374), Tuint16_t(1374), Tuint16_t(1374), Tuint16_t(1374), Tuint16_t(1374), Tuint16_t(1374), Tuint16_t(1374), Tuint16_t(1374), Tuint16_t(1374),
Tuint16_t(1374), Tuint16_t(1374), Tuint16_t(1374), Tuint16_t(1374), Tuint16_t(1374), Tuint16_t(1374), Tuint16_t(1374), Tuint16_t(1374), Tuint16_t(1374), Tuint16_t(1374), Tuint16_t(1374), Tuint16_t(1374), Tuint16_t(1374), Tuint16_t(1374), Tuint16_t(1374), Tuint16_t(1374),
Tuint16_t(1374), Tuint16_t(1374), Tuint16_t(1374), Tuint16_t(1374), Tuint16_t(1374), Tuint16_t(1374), Tuint16_t(1374), Tuint16_t(1374), Tuint16_t(1374), Tuint16_t(1374), Tuint16_t(1374), Tuint16_t(1374), Tuint16_t(1375), Tuint16_t(1375), Tuint16_t(1375), Tuint16_t(1375),
Tuint16_t(1376), Tuint16_t(1376), Tuint16_t(1376), Tuint16_t(1376), Tuint16_t(1376), Tuint16_t(1376), Tuint16_t(1376), Tuint16_t(1376), Tuint16_t(1376), Tuint16_t(1376), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(1377),
// block 253
Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(163), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(163), Tuint16_t(483), Tuint16_t(483), Tuint16_t(163),
Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(483), Tuint16_t(163),
// block 254
Tuint16_t(1378), Tuint16_t(1378), Tuint16_t(1378), Tuint16_t(1378), Tuint16_t(1378), Tuint16_t(1378), Tuint16_t(1378), Tuint16_t(1378), Tuint16_t(1378), Tuint16_t(1378), Tuint16_t(1378), Tuint16_t(1378), Tuint16_t(1378), Tuint16_t(1378), Tuint16_t(1378), Tuint16_t(1378),
Tuint16_t(1378), Tuint16_t(1378), Tuint16_t(1378), Tuint16_t(1378), Tuint16_t(1378), Tuint16_t(1378), Tuint16_t(1378), Tuint16_t(1378), Tuint16_t(1378), Tuint16_t(1378), Tuint16_t(1378), Tuint16_t(1378), Tuint16_t(1378), Tuint16_t(1378), Tuint16_t(1378), Tuint16_t(1378),
Tuint16_t(1378), Tuint16_t(1378), Tuint16_t(1378), Tuint16_t(1378), Tuint16_t(1378), Tuint16_t(1378), Tuint16_t(1378), Tuint16_t(1378), Tuint16_t(1378), Tuint16_t(1378), Tuint16_t(1378), Tuint16_t(1378), Tuint16_t(1378), Tuint16_t(1378), Tuint16_t(1378), Tuint16_t(1378),
Tuint16_t(1378), Tuint16_t(1378), Tuint16_t(1378), Tuint16_t(1378), Tuint16_t(1378), Tuint16_t(1378), Tuint16_t(1378), Tuint16_t(1378), Tuint16_t(1378), Tuint16_t(1378), Tuint16_t(1378), Tuint16_t(1378), Tuint16_t(1378), Tuint16_t(1378), Tuint16_t(1378), Tuint16_t(1378),
Tuint16_t(1378), Tuint16_t(1378), Tuint16_t(1378), Tuint16_t(1378), Tuint16_t(1378), Tuint16_t(1378), Tuint16_t(1378), Tuint16_t(1378), Tuint16_t(1378), Tuint16_t(1378), Tuint16_t(1378), Tuint16_t(1378), Tuint16_t(1378), Tuint16_t(1378), Tuint16_t(1378), Tuint16_t(1378),
Tuint16_t(1378), Tuint16_t(1378), Tuint16_t(1378), Tuint16_t(1378), Tuint16_t(1378), Tuint16_t(1378), Tuint16_t(1378), Tuint16_t(1378), Tuint16_t(1378), Tuint16_t(1378), Tuint16_t(1378), Tuint16_t(1378), Tuint16_t(1378), Tuint16_t(1378), Tuint16_t(1378), Tuint16_t(1378),
Tuint16_t(1378), Tuint16_t(1378), Tuint16_t(1378), Tuint16_t(1378), Tuint16_t(1378), Tuint16_t(1378), Tuint16_t(1378), Tuint16_t(1378), Tuint16_t(1378), Tuint16_t(1378), Tuint16_t(1378), Tuint16_t(1378), Tuint16_t(1378), Tuint16_t(1378), Tuint16_t(1378), Tuint16_t(1378),
Tuint16_t(1378), Tuint16_t(1378), Tuint16_t(1378), Tuint16_t(1378), Tuint16_t(1378), Tuint16_t(1378), Tuint16_t(1378), Tuint16_t(1378), Tuint16_t(1378), Tuint16_t(1378), Tuint16_t(1378), Tuint16_t(1378), Tuint16_t(1378), Tuint16_t(1378), Tuint16_t(1378), Tuint16_t(1378),
// block 255
Tuint16_t(1378), Tuint16_t(1378), Tuint16_t(1378), Tuint16_t(1378), Tuint16_t(1378), Tuint16_t(1378), Tuint16_t(1378), Tuint16_t(1378), Tuint16_t(1378), Tuint16_t(1378), Tuint16_t(1378), Tuint16_t(1378), Tuint16_t(1378), Tuint16_t(1378), Tuint16_t(1378), Tuint16_t(1378),
Tuint16_t(1378), Tuint16_t(1378), Tuint16_t(1378), Tuint16_t(1378), Tuint16_t(1378), Tuint16_t(1378), Tuint16_t(1378), Tuint16_t(1378), Tuint16_t(1378), Tuint16_t(1378), Tuint16_t(1378), Tuint16_t(1378), Tuint16_t(1378), Tuint16_t(1378), Tuint16_t(1378), Tuint16_t(1378),
Tuint16_t(1378), Tuint16_t(1378), Tuint16_t(1378), Tuint16_t(1378), Tuint16_t(1378), Tuint16_t(1378), Tuint16_t(1378), Tuint16_t(1378), Tuint16_t(1378), Tuint16_t(1378), Tuint16_t(1378), Tuint16_t(1378), Tuint16_t(1378), Tuint16_t(1378), Tuint16_t(1378), Tuint16_t(1378),
Tuint16_t(1378), Tuint16_t(1378), Tuint16_t(1378), Tuint16_t(1378), Tuint16_t(1378), Tuint16_t(1378), Tuint16_t(1378), Tuint16_t(1378), Tuint16_t(1378), Tuint16_t(1378), Tuint16_t(1378), Tuint16_t(1378), Tuint16_t(1378), Tuint16_t(1378), Tuint16_t(1378), Tuint16_t(1378),
Tuint16_t(1378), Tuint16_t(1378), Tuint16_t(1378), Tuint16_t(1378), Tuint16_t(1378), Tuint16_t(262), Tuint16_t(262), Tuint16_t(1379), Tuint16_t(1379), Tuint16_t(1379), Tuint16_t(1379), Tuint16_t(1379), Tuint16_t(1379), Tuint16_t(1379), Tuint16_t(1379), Tuint16_t(1379),
Tuint16_t(1380), Tuint16_t(1380), Tuint16_t(1380), Tuint16_t(1380), Tuint16_t(1380), Tuint16_t(1380), Tuint16_t(1380), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262),
Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262),
Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262),
// block 256
Tuint16_t(1381), Tuint16_t(1381), Tuint16_t(1381), Tuint16_t(1381), Tuint16_t(1381), Tuint16_t(1381), Tuint16_t(1381), Tuint16_t(1381), Tuint16_t(1381), Tuint16_t(1381), Tuint16_t(1381), Tuint16_t(1381), Tuint16_t(1381), Tuint16_t(1381), Tuint16_t(1381), Tuint16_t(1381),
Tuint16_t(1381), Tuint16_t(1381), Tuint16_t(1381), Tuint16_t(1381), Tuint16_t(1381), Tuint16_t(1381), Tuint16_t(1381), Tuint16_t(1381), Tuint16_t(1381), Tuint16_t(1381), Tuint16_t(1381), Tuint16_t(1381), Tuint16_t(1381), Tuint16_t(1381), Tuint16_t(1381), Tuint16_t(1381),
Tuint16_t(1381), Tuint16_t(1381), Tuint16_t(1382), Tuint16_t(1382), Tuint16_t(1382), Tuint16_t(1382), Tuint16_t(1382), Tuint16_t(1382), Tuint16_t(1382), Tuint16_t(1382), Tuint16_t(1382), Tuint16_t(1382), Tuint16_t(1382), Tuint16_t(1382), Tuint16_t(1382), Tuint16_t(1382),
Tuint16_t(1382), Tuint16_t(1382), Tuint16_t(1382), Tuint16_t(1382), Tuint16_t(1382), Tuint16_t(1382), Tuint16_t(1382), Tuint16_t(1382), Tuint16_t(1382), Tuint16_t(1382), Tuint16_t(1382), Tuint16_t(1382), Tuint16_t(1382), Tuint16_t(1382), Tuint16_t(1382), Tuint16_t(1382),
Tuint16_t(1382), Tuint16_t(1382), Tuint16_t(1382), Tuint16_t(1382), Tuint16_t(1383), Tuint16_t(1383), Tuint16_t(1383), Tuint16_t(1384), Tuint16_t(1385), Tuint16_t(1385), Tuint16_t(1385), Tuint16_t(1386), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262),
Tuint16_t(1387), Tuint16_t(1387), Tuint16_t(1387), Tuint16_t(1387), Tuint16_t(1387), Tuint16_t(1387), Tuint16_t(1387), Tuint16_t(1387), Tuint16_t(1387), Tuint16_t(1387), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(1388), Tuint16_t(1388),
Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262),
Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262),
// block 257
Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262),
Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262),
Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262),
Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262),
Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262),
Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262),
Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262),
Tuint16_t(302), Tuint16_t(1389), Tuint16_t(1389), Tuint16_t(1389), Tuint16_t(1389), Tuint16_t(1389), Tuint16_t(1389), Tuint16_t(1389), Tuint16_t(1389), Tuint16_t(1389), Tuint16_t(1389), Tuint16_t(1389), Tuint16_t(1389), Tuint16_t(1389), Tuint16_t(1389), Tuint16_t(1389),
// block 258
Tuint16_t(1389), Tuint16_t(1389), Tuint16_t(1389), Tuint16_t(1389), Tuint16_t(1389), Tuint16_t(1389), Tuint16_t(1389), Tuint16_t(1389), Tuint16_t(1389), Tuint16_t(1389), Tuint16_t(1389), Tuint16_t(1389), Tuint16_t(1389), Tuint16_t(1389), Tuint16_t(1389), Tuint16_t(1389),
Tuint16_t(1389), Tuint16_t(1389), Tuint16_t(1389), Tuint16_t(1389), Tuint16_t(1389), Tuint16_t(1389), Tuint16_t(1389), Tuint16_t(1389), Tuint16_t(1389), Tuint16_t(1389), Tuint16_t(1389), Tuint16_t(1389), Tuint16_t(1389), Tuint16_t(1389), Tuint16_t(1389), Tuint16_t(1389),
Tuint16_t(1389), Tuint16_t(1389), Tuint16_t(1389), Tuint16_t(1389), Tuint16_t(1389), Tuint16_t(1389), Tuint16_t(1389), Tuint16_t(1389), Tuint16_t(1389), Tuint16_t(1389), Tuint16_t(1389), Tuint16_t(1389), Tuint16_t(1390), Tuint16_t(1389), Tuint16_t(1389), Tuint16_t(1389),
Tuint16_t(1391), Tuint16_t(1389), Tuint16_t(1389), Tuint16_t(1389), Tuint16_t(1389), Tuint16_t(302), Tuint16_t(302), Tuint16_t(302), Tuint16_t(302), Tuint16_t(302), Tuint16_t(302), Tuint16_t(302), Tuint16_t(302), Tuint16_t(302), Tuint16_t(302), Tuint16_t(302),
Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262),
Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262),
Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262),
Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262),
// block 259
Tuint16_t(302), Tuint16_t(1389), Tuint16_t(1389), Tuint16_t(1389), Tuint16_t(1389), Tuint16_t(1389), Tuint16_t(1389), Tuint16_t(1389), Tuint16_t(1389), Tuint16_t(1389), Tuint16_t(1389), Tuint16_t(1389), Tuint16_t(1389), Tuint16_t(1389), Tuint16_t(1389), Tuint16_t(1389),
Tuint16_t(1389), Tuint16_t(1389), Tuint16_t(1389), Tuint16_t(1389), Tuint16_t(1389), Tuint16_t(1389), Tuint16_t(1389), Tuint16_t(1389), Tuint16_t(1389), Tuint16_t(1389), Tuint16_t(1389), Tuint16_t(1389), Tuint16_t(1389), Tuint16_t(1389), Tuint16_t(1389), Tuint16_t(1389),
Tuint16_t(1389), Tuint16_t(1389), Tuint16_t(1389), Tuint16_t(1389), Tuint16_t(1389), Tuint16_t(1389), Tuint16_t(1389), Tuint16_t(1389), Tuint16_t(1389), Tuint16_t(1389), Tuint16_t(1389), Tuint16_t(1389), Tuint16_t(1389), Tuint16_t(1389), Tuint16_t(1390), Tuint16_t(1389),
Tuint16_t(1389), Tuint16_t(1389), Tuint16_t(1389), Tuint16_t(1389), Tuint16_t(1389), Tuint16_t(1389), Tuint16_t(1389), Tuint16_t(1389), Tuint16_t(1389), Tuint16_t(1389), Tuint16_t(1389), Tuint16_t(1389), Tuint16_t(1389), Tuint16_t(1389), Tuint16_t(302), Tuint16_t(302),
Tuint16_t(302), Tuint16_t(302), Tuint16_t(302), Tuint16_t(302), Tuint16_t(302), Tuint16_t(302), Tuint16_t(302), Tuint16_t(302), Tuint16_t(302), Tuint16_t(302), Tuint16_t(302), Tuint16_t(302), Tuint16_t(302), Tuint16_t(302), Tuint16_t(302), Tuint16_t(302),
Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262),
Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262),
Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262), Tuint16_t(262),
// block 260
Tuint16_t(1392), Tuint16_t(1392), Tuint16_t(1392), Tuint16_t(1392), Tuint16_t(302), Tuint16_t(1392), Tuint16_t(1392), Tuint16_t(1392), Tuint16_t(1392), Tuint16_t(1392), Tuint16_t(1392), Tuint16_t(1392), Tuint16_t(1392), Tuint16_t(1392), Tuint16_t(1392), Tuint16_t(1392),
Tuint16_t(1392), Tuint16_t(1392), Tuint16_t(1392), Tuint16_t(1392), Tuint16_t(1392), Tuint16_t(1392), Tuint16_t(1392), Tuint16_t(1392), Tuint16_t(1392), Tuint16_t(1392), Tuint16_t(1392), Tuint16_t(1392), Tuint16_t(1392), Tuint16_t(1392), Tuint16_t(1392), Tuint16_t(1392),
Tuint16_t(302), Tuint16_t(1392), Tuint16_t(1392), Tuint16_t(302), Tuint16_t(1392), Tuint16_t(302), Tuint16_t(302), Tuint16_t(1392), Tuint16_t(302), Tuint16_t(1392), Tuint16_t(1392), Tuint16_t(1392), Tuint16_t(1392), Tuint16_t(1392), Tuint16_t(1392), Tuint16_t(1392),
Tuint16_t(1392), Tuint16_t(1392), Tuint16_t(1392), Tuint16_t(302), Tuint16_t(1392), Tuint16_t(1392), Tuint16_t(1392), Tuint16_t(1392), Tuint16_t(302), Tuint16_t(1392), Tuint16_t(302), Tuint16_t(1392), Tuint16_t(302), Tuint16_t(302), Tuint16_t(302), Tuint16_t(302),
Tuint16_t(302), Tuint16_t(302), Tuint16_t(1392), Tuint16_t(302), Tuint16_t(302), Tuint16_t(302), Tuint16_t(302), Tuint16_t(1392), Tuint16_t(302), Tuint16_t(1392), Tuint16_t(302), Tuint16_t(1392), Tuint16_t(302), Tuint16_t(1392), Tuint16_t(1392), Tuint16_t(1392),
Tuint16_t(302), Tuint16_t(1392), Tuint16_t(1392), Tuint16_t(302), Tuint16_t(1392), Tuint16_t(302), Tuint16_t(302), Tuint16_t(1392), Tuint16_t(302), Tuint16_t(1392), Tuint16_t(302), Tuint16_t(1392), Tuint16_t(302), Tuint16_t(1392), Tuint16_t(302), Tuint16_t(1392),
Tuint16_t(302), Tuint16_t(1392), Tuint16_t(1392), Tuint16_t(302), Tuint16_t(1392), Tuint16_t(302), Tuint16_t(302), Tuint16_t(1392), Tuint16_t(1392), Tuint16_t(1392), Tuint16_t(1392), Tuint16_t(302), Tuint16_t(1392), Tuint16_t(1392), Tuint16_t(1392), Tuint16_t(1392),
Tuint16_t(1392), Tuint16_t(1392), Tuint16_t(1392), Tuint16_t(302), Tuint16_t(1392), Tuint16_t(1392), Tuint16_t(1392), Tuint16_t(1392), Tuint16_t(302), Tuint16_t(1392), Tuint16_t(1392), Tuint16_t(1392), Tuint16_t(1392), Tuint16_t(302), Tuint16_t(1392), Tuint16_t(302),
// block 261
Tuint16_t(1392), Tuint16_t(1392), Tuint16_t(1392), Tuint16_t(1392), Tuint16_t(1392), Tuint16_t(1392), Tuint16_t(1392), Tuint16_t(1392), Tuint16_t(1392), Tuint16_t(1392), Tuint16_t(302), Tuint16_t(1392), Tuint16_t(1392), Tuint16_t(1392), Tuint16_t(1392), Tuint16_t(1392),
Tuint16_t(1392), Tuint16_t(1392), Tuint16_t(1392), Tuint16_t(1392), Tuint16_t(1392), Tuint16_t(1392), Tuint16_t(1392), Tuint16_t(1392), Tuint16_t(1392), Tuint16_t(1392), Tuint16_t(1392), Tuint16_t(1392), Tuint16_t(302), Tuint16_t(302), Tuint16_t(302), Tuint16_t(302),
Tuint16_t(302), Tuint16_t(1392), Tuint16_t(1392), Tuint16_t(1392), Tuint16_t(302), Tuint16_t(1392), Tuint16_t(1392), Tuint16_t(1392), Tuint16_t(1392), Tuint16_t(1392), Tuint16_t(302), Tuint16_t(1392), Tuint16_t(1392), Tuint16_t(1392), Tuint16_t(1392), Tuint16_t(1392),
Tuint16_t(1392), Tuint16_t(1392), Tuint16_t(1392), Tuint16_t(1392), Tuint16_t(1392), Tuint16_t(1392), Tuint16_t(1392), Tuint16_t(1392), Tuint16_t(1392), Tuint16_t(1392), Tuint16_t(1392), Tuint16_t(1392), Tuint16_t(302), Tuint16_t(302), Tuint16_t(302), Tuint16_t(302),
Tuint16_t(302), Tuint16_t(302), Tuint16_t(302), Tuint16_t(302), Tuint16_t(302), Tuint16_t(302), Tuint16_t(302), Tuint16_t(302), Tuint16_t(302), Tuint16_t(302), Tuint16_t(302), Tuint16_t(302), Tuint16_t(302), Tuint16_t(302), Tuint16_t(302), Tuint16_t(302),
Tuint16_t(302), Tuint16_t(302), Tuint16_t(302), Tuint16_t(302), Tuint16_t(302), Tuint16_t(302), Tuint16_t(302), Tuint16_t(302), Tuint16_t(302), Tuint16_t(302), Tuint16_t(302), Tuint16_t(302), Tuint16_t(302), Tuint16_t(302), Tuint16_t(302), Tuint16_t(302),
Tuint16_t(302), Tuint16_t(302), Tuint16_t(302), Tuint16_t(302), Tuint16_t(302), Tuint16_t(302), Tuint16_t(302), Tuint16_t(302), Tuint16_t(302), Tuint16_t(302), Tuint16_t(302), Tuint16_t(302), Tuint16_t(302), Tuint16_t(302), Tuint16_t(302), Tuint16_t(302),
Tuint16_t(274), Tuint16_t(274), Tuint16_t(302), Tuint16_t(302), Tuint16_t(302), Tuint16_t(302), Tuint16_t(302), Tuint16_t(302), Tuint16_t(302), Tuint16_t(302), Tuint16_t(302), Tuint16_t(302), Tuint16_t(302), Tuint16_t(302), Tuint16_t(302), Tuint16_t(302),
// block 262
Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1394), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393),
Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393),
Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395),
Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393),
Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393),
Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393),
Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393),
Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393),
// block 263
Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393),
Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395),
Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1395),
Tuint16_t(1395), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393),
Tuint16_t(1395), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1394),
Tuint16_t(1395), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393),
Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393),
Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395),
// block 264
Tuint16_t(54), Tuint16_t(54), Tuint16_t(54), Tuint16_t(54), Tuint16_t(54), Tuint16_t(54), Tuint16_t(54), Tuint16_t(54), Tuint16_t(54), Tuint16_t(54), Tuint16_t(54), Tuint16_t(58), Tuint16_t(58), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393),
Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460),
Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(1393),
Tuint16_t(1396), Tuint16_t(1396), Tuint16_t(1396), Tuint16_t(1396), Tuint16_t(1396), Tuint16_t(1396), Tuint16_t(1396), Tuint16_t(1396), Tuint16_t(1396), Tuint16_t(1396), Tuint16_t(1396), Tuint16_t(1396), Tuint16_t(1396), Tuint16_t(1396), Tuint16_t(1396), Tuint16_t(1396),
Tuint16_t(1396), Tuint16_t(1396), Tuint16_t(1396), Tuint16_t(1396), Tuint16_t(1396), Tuint16_t(1396), Tuint16_t(1396), Tuint16_t(1396), Tuint16_t(1396), Tuint16_t(1396), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460),
Tuint16_t(1396), Tuint16_t(1396), Tuint16_t(1396), Tuint16_t(1396), Tuint16_t(1396), Tuint16_t(1396), Tuint16_t(1396), Tuint16_t(1396), Tuint16_t(1396), Tuint16_t(1396), Tuint16_t(1396), Tuint16_t(1396), Tuint16_t(1396), Tuint16_t(1396), Tuint16_t(1396), Tuint16_t(1396),
Tuint16_t(1396), Tuint16_t(1396), Tuint16_t(1396), Tuint16_t(1396), Tuint16_t(1396), Tuint16_t(1396), Tuint16_t(1396), Tuint16_t(1396), Tuint16_t(1396), Tuint16_t(1396), Tuint16_t(723), Tuint16_t(723), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393),
Tuint16_t(1397), Tuint16_t(1397), Tuint16_t(1396), Tuint16_t(1396), Tuint16_t(1396), Tuint16_t(1396), Tuint16_t(1396), Tuint16_t(1396), Tuint16_t(1396), Tuint16_t(1396), Tuint16_t(1396), Tuint16_t(1396), Tuint16_t(1396), Tuint16_t(1396), Tuint16_t(1397), Tuint16_t(1397),
// block 265
Tuint16_t(1396), Tuint16_t(1396), Tuint16_t(1396), Tuint16_t(1396), Tuint16_t(1396), Tuint16_t(1396), Tuint16_t(1396), Tuint16_t(1396), Tuint16_t(1396), Tuint16_t(1396), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(1398), Tuint16_t(460),
Tuint16_t(460), Tuint16_t(1398), Tuint16_t(1398), Tuint16_t(1398), Tuint16_t(1398), Tuint16_t(1398), Tuint16_t(1398), Tuint16_t(1398), Tuint16_t(1398), Tuint16_t(1398), Tuint16_t(1398), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460),
Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(1393), Tuint16_t(1395), Tuint16_t(1395),
Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395),
Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395),
Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395),
Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1399), Tuint16_t(1399), Tuint16_t(1399), Tuint16_t(1399), Tuint16_t(1399), Tuint16_t(1399), Tuint16_t(1399), Tuint16_t(1399), Tuint16_t(1399), Tuint16_t(1399),
Tuint16_t(1399), Tuint16_t(1399), Tuint16_t(1399), Tuint16_t(1399), Tuint16_t(1399), Tuint16_t(1399), Tuint16_t(1399), Tuint16_t(1399), Tuint16_t(1399), Tuint16_t(1399), Tuint16_t(1399), Tuint16_t(1399), Tuint16_t(1399), Tuint16_t(1399), Tuint16_t(1399), Tuint16_t(1399),
// block 266
Tuint16_t(1400), Tuint16_t(1398), Tuint16_t(1401), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395),
Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(1398), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460),
Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(1398),
Tuint16_t(460), Tuint16_t(460), Tuint16_t(1398), Tuint16_t(1398), Tuint16_t(1398), Tuint16_t(1398), Tuint16_t(1398), Tuint16_t(1401), Tuint16_t(1398), Tuint16_t(1398), Tuint16_t(1398), Tuint16_t(460), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395),
Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(460), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395),
Tuint16_t(1402), Tuint16_t(1402), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395),
Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395),
Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395),
// block 267
Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395),
Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395),
Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395),
Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395),
Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395),
Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395),
Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395),
Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395),
// block 268
Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394),
Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394),
Tuint16_t(1394), Tuint16_t(727), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(727), Tuint16_t(727), Tuint16_t(727), Tuint16_t(727), Tuint16_t(727), Tuint16_t(727), Tuint16_t(727), Tuint16_t(727), Tuint16_t(727), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394),
Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(727), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394),
Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394),
Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394),
Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394),
Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(727), Tuint16_t(1394), Tuint16_t(1394),
// block 269
Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1403), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394),
Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(727), Tuint16_t(727), Tuint16_t(1393), Tuint16_t(727), Tuint16_t(727), Tuint16_t(727), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(727), Tuint16_t(727),
Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394),
Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394),
Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1403), Tuint16_t(1403), Tuint16_t(1403), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1403), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1403), Tuint16_t(1404), Tuint16_t(1404), Tuint16_t(727), Tuint16_t(727), Tuint16_t(1394),
Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(727), Tuint16_t(727), Tuint16_t(727), Tuint16_t(727), Tuint16_t(727), Tuint16_t(727), Tuint16_t(727), Tuint16_t(727), Tuint16_t(727), Tuint16_t(727), Tuint16_t(727), Tuint16_t(727),
Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394),
Tuint16_t(1394), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(727), Tuint16_t(1394), Tuint16_t(727), Tuint16_t(1393), Tuint16_t(727), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1405), Tuint16_t(1405), Tuint16_t(1405), Tuint16_t(1405), Tuint16_t(1405),
// block 270
Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394),
Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394),
Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394),
Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(727),
Tuint16_t(1394), Tuint16_t(727), Tuint16_t(1403), Tuint16_t(1403), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1403), Tuint16_t(1403), Tuint16_t(1403), Tuint16_t(1403), Tuint16_t(1403), Tuint16_t(1403), Tuint16_t(1403), Tuint16_t(1403), Tuint16_t(1403), Tuint16_t(1403),
Tuint16_t(1403), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394),
Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1403), Tuint16_t(1403), Tuint16_t(1403), Tuint16_t(1403), Tuint16_t(1403), Tuint16_t(1403), Tuint16_t(1403), Tuint16_t(1403), Tuint16_t(1403), Tuint16_t(1403),
Tuint16_t(1403), Tuint16_t(1403), Tuint16_t(1403), Tuint16_t(1403), Tuint16_t(1403), Tuint16_t(1403), Tuint16_t(1403), Tuint16_t(1403), Tuint16_t(1403), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1403), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394),
// block 271
Tuint16_t(1394), Tuint16_t(1403), Tuint16_t(1403), Tuint16_t(1403), Tuint16_t(1394), Tuint16_t(1403), Tuint16_t(1403), Tuint16_t(1403), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1403),
Tuint16_t(1394), Tuint16_t(1403), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394),
Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1403), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394),
Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394),
Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394),
Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394),
Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394),
Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(727), Tuint16_t(1393), Tuint16_t(1394),
// block 272
Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394),
Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394),
Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394),
Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(723), Tuint16_t(723),
Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(727), Tuint16_t(727), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1393),
Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394),
Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(727),
Tuint16_t(727), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(727), Tuint16_t(1404), Tuint16_t(1404), Tuint16_t(727), Tuint16_t(727), Tuint16_t(727), Tuint16_t(727), Tuint16_t(1403), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393),
// block 273
Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(727), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(727), Tuint16_t(727), Tuint16_t(727), Tuint16_t(727), Tuint16_t(1393), Tuint16_t(1393),
Tuint16_t(1404), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1403), Tuint16_t(1403), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393),
Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1394), Tuint16_t(727), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(727), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393),
Tuint16_t(1393), Tuint16_t(727), Tuint16_t(727), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(727), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393),
Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(727), Tuint16_t(727), Tuint16_t(727), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393),
Tuint16_t(1393), Tuint16_t(727), Tuint16_t(727), Tuint16_t(727), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(727), Tuint16_t(727), Tuint16_t(727), Tuint16_t(1393),
Tuint16_t(1393), Tuint16_t(727), Tuint16_t(1393), Tuint16_t(727), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(727), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(727),
Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(727), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(727), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394),
// block 274
Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394),
Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394),
Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394),
Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394),
Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1403), Tuint16_t(1403), Tuint16_t(1403), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1403), Tuint16_t(1403), Tuint16_t(1403), Tuint16_t(1403), Tuint16_t(1403),
Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723),
Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723),
Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723),
// block 275
Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394),
Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394),
Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1403), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394),
Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1403), Tuint16_t(1403), Tuint16_t(1403), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394),
Tuint16_t(1403), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(727), Tuint16_t(1403), Tuint16_t(727), Tuint16_t(727), Tuint16_t(727),
Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394),
Tuint16_t(727), Tuint16_t(727), Tuint16_t(727), Tuint16_t(727), Tuint16_t(727), Tuint16_t(727), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(727), Tuint16_t(1393), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395),
Tuint16_t(727), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(727), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395),
// block 276
Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723),
Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723),
Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723),
Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723),
Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723),
Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723),
Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723),
Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395),
// block 277
Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723),
Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723),
Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723),
Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723),
Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723),
Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395),
Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395),
Tuint16_t(1394), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395),
// block 278
Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395),
Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723),
Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723),
Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723),
Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395),
Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395),
Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723),
Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723),
// block 279
Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395),
Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723),
Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(1395), Tuint16_t(1395),
Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395),
Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395),
Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395),
Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395),
Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395),
// block 280
Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(1403), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1403),
Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1403), Tuint16_t(1403), Tuint16_t(1403), Tuint16_t(1403), Tuint16_t(1403), Tuint16_t(1403), Tuint16_t(1403), Tuint16_t(1403),
Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1403), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394),
Tuint16_t(1403), Tuint16_t(1403), Tuint16_t(1403), Tuint16_t(1403), Tuint16_t(1403), Tuint16_t(1403), Tuint16_t(1403), Tuint16_t(1403), Tuint16_t(1403), Tuint16_t(1403), Tuint16_t(1394), Tuint16_t(723), Tuint16_t(1403), Tuint16_t(1403), Tuint16_t(1403), Tuint16_t(1394),
Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(723), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394),
Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394),
Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394),
Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1403), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394),
// block 281
Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394),
Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394),
Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394),
Tuint16_t(1406), Tuint16_t(1406), Tuint16_t(1406), Tuint16_t(1406), Tuint16_t(1394), Tuint16_t(1403), Tuint16_t(1403), Tuint16_t(1394), Tuint16_t(1403), Tuint16_t(1403), Tuint16_t(1394), Tuint16_t(1403), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394),
Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1403), Tuint16_t(1403), Tuint16_t(1403),
Tuint16_t(1394), Tuint16_t(1403), Tuint16_t(1403), Tuint16_t(1403), Tuint16_t(1403), Tuint16_t(1403), Tuint16_t(1403), Tuint16_t(1403), Tuint16_t(1403), Tuint16_t(1403), Tuint16_t(1403), Tuint16_t(1403), Tuint16_t(1403), Tuint16_t(1403), Tuint16_t(1394), Tuint16_t(1394),
Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394),
Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394),
// block 282
Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393),
Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393),
Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393),
Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393),
Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393),
Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395),
Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1393), Tuint16_t(1395), Tuint16_t(1395),
Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395),
// block 283
Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395),
Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394),
Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395),
Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395),
Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1403), Tuint16_t(1403), Tuint16_t(1403), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395),
Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395),
Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1394), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395),
Tuint16_t(1403), Tuint16_t(1403), Tuint16_t(1403), Tuint16_t(1403), Tuint16_t(1403), Tuint16_t(1403), Tuint16_t(1403), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395),
// block 284
Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723),
Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723),
Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723),
Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723),
Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723),
Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723),
Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723),
Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723),
// block 285
Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723),
Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(163), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723),
Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723),
Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723),
Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(723), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(1407), Tuint16_t(1407), Tuint16_t(1407), Tuint16_t(1407), Tuint16_t(1407), Tuint16_t(1407), Tuint16_t(1407), Tuint16_t(1407), Tuint16_t(1407), Tuint16_t(1407), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
// block 286
Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395),
Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395),
Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395),
Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395),
Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395),
Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395),
Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395),
Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(1395), Tuint16_t(958), Tuint16_t(958),
// block 287
Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838),
Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838),
Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838),
Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838),
Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838),
Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838),
Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
// block 288
Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838),
Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838),
Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838),
Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838),
Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838),
Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838),
Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838),
// block 289
Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838),
Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838),
Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838),
Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838),
Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838),
Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838),
Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838),
// block 290
Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838),
Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838),
Tuint16_t(838), Tuint16_t(838), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838),
Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838),
Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838),
Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838),
Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838),
// block 291
Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838),
Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838),
Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838),
Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838),
Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838),
Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838),
Tuint16_t(838), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
// block 292
Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953),
Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(953), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
// block 293
Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(958), Tuint16_t(958),
// block 294
Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838),
Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838),
Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838),
Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838),
Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(838), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163), Tuint16_t(163),
// block 295
Tuint16_t(707), Tuint16_t(712), Tuint16_t(707), Tuint16_t(707), Tuint16_t(707), Tuint16_t(707), Tuint16_t(707), Tuint16_t(707), Tuint16_t(707), Tuint16_t(707), Tuint16_t(707), Tuint16_t(707), Tuint16_t(707), Tuint16_t(707), Tuint16_t(707), Tuint16_t(707),
Tuint16_t(707), Tuint16_t(707), Tuint16_t(707), Tuint16_t(707), Tuint16_t(707), Tuint16_t(707), Tuint16_t(707), Tuint16_t(707), Tuint16_t(707), Tuint16_t(707), Tuint16_t(707), Tuint16_t(707), Tuint16_t(707), Tuint16_t(707), Tuint16_t(707), Tuint16_t(707),
Tuint16_t(1408), Tuint16_t(1408), Tuint16_t(1408), Tuint16_t(1408), Tuint16_t(1408), Tuint16_t(1408), Tuint16_t(1408), Tuint16_t(1408), Tuint16_t(1408), Tuint16_t(1408), Tuint16_t(1408), Tuint16_t(1408), Tuint16_t(1408), Tuint16_t(1408), Tuint16_t(1408), Tuint16_t(1408),
Tuint16_t(1408), Tuint16_t(1408), Tuint16_t(1408), Tuint16_t(1408), Tuint16_t(1408), Tuint16_t(1408), Tuint16_t(1408), Tuint16_t(1408), Tuint16_t(1408), Tuint16_t(1408), Tuint16_t(1408), Tuint16_t(1408), Tuint16_t(1408), Tuint16_t(1408), Tuint16_t(1408), Tuint16_t(1408),
Tuint16_t(1408), Tuint16_t(1408), Tuint16_t(1408), Tuint16_t(1408), Tuint16_t(1408), Tuint16_t(1408), Tuint16_t(1408), Tuint16_t(1408), Tuint16_t(1408), Tuint16_t(1408), Tuint16_t(1408), Tuint16_t(1408), Tuint16_t(1408), Tuint16_t(1408), Tuint16_t(1408), Tuint16_t(1408),
Tuint16_t(1408), Tuint16_t(1408), Tuint16_t(1408), Tuint16_t(1408), Tuint16_t(1408), Tuint16_t(1408), Tuint16_t(1408), Tuint16_t(1408), Tuint16_t(1408), Tuint16_t(1408), Tuint16_t(1408), Tuint16_t(1408), Tuint16_t(1408), Tuint16_t(1408), Tuint16_t(1408), Tuint16_t(1408),
Tuint16_t(1408), Tuint16_t(1408), Tuint16_t(1408), Tuint16_t(1408), Tuint16_t(1408), Tuint16_t(1408), Tuint16_t(1408), Tuint16_t(1408), Tuint16_t(1408), Tuint16_t(1408), Tuint16_t(1408), Tuint16_t(1408), Tuint16_t(1408), Tuint16_t(1408), Tuint16_t(1408), Tuint16_t(1408),
Tuint16_t(1408), Tuint16_t(1408), Tuint16_t(1408), Tuint16_t(1408), Tuint16_t(1408), Tuint16_t(1408), Tuint16_t(1408), Tuint16_t(1408), Tuint16_t(1408), Tuint16_t(1408), Tuint16_t(1408), Tuint16_t(1408), Tuint16_t(1408), Tuint16_t(1408), Tuint16_t(1408), Tuint16_t(1408),
// block 296
Tuint16_t(707), Tuint16_t(707), Tuint16_t(707), Tuint16_t(707), Tuint16_t(707), Tuint16_t(707), Tuint16_t(707), Tuint16_t(707), Tuint16_t(707), Tuint16_t(707), Tuint16_t(707), Tuint16_t(707), Tuint16_t(707), Tuint16_t(707), Tuint16_t(707), Tuint16_t(707),
Tuint16_t(707), Tuint16_t(707), Tuint16_t(707), Tuint16_t(707), Tuint16_t(707), Tuint16_t(707), Tuint16_t(707), Tuint16_t(707), Tuint16_t(707), Tuint16_t(707), Tuint16_t(707), Tuint16_t(707), Tuint16_t(707), Tuint16_t(707), Tuint16_t(707), Tuint16_t(707),
Tuint16_t(707), Tuint16_t(707), Tuint16_t(707), Tuint16_t(707), Tuint16_t(707), Tuint16_t(707), Tuint16_t(707), Tuint16_t(707), Tuint16_t(707), Tuint16_t(707), Tuint16_t(707), Tuint16_t(707), Tuint16_t(707), Tuint16_t(707), Tuint16_t(707), Tuint16_t(707),
Tuint16_t(707), Tuint16_t(707), Tuint16_t(707), Tuint16_t(707), Tuint16_t(707), Tuint16_t(707), Tuint16_t(707), Tuint16_t(707), Tuint16_t(707), Tuint16_t(707), Tuint16_t(707), Tuint16_t(707), Tuint16_t(707), Tuint16_t(707), Tuint16_t(707), Tuint16_t(707),
Tuint16_t(707), Tuint16_t(707), Tuint16_t(707), Tuint16_t(707), Tuint16_t(707), Tuint16_t(707), Tuint16_t(707), Tuint16_t(707), Tuint16_t(707), Tuint16_t(707), Tuint16_t(707), Tuint16_t(707), Tuint16_t(707), Tuint16_t(707), Tuint16_t(707), Tuint16_t(707),
Tuint16_t(707), Tuint16_t(707), Tuint16_t(707), Tuint16_t(707), Tuint16_t(707), Tuint16_t(707), Tuint16_t(707), Tuint16_t(707), Tuint16_t(707), Tuint16_t(707), Tuint16_t(707), Tuint16_t(707), Tuint16_t(707), Tuint16_t(707), Tuint16_t(707), Tuint16_t(707),
Tuint16_t(707), Tuint16_t(707), Tuint16_t(707), Tuint16_t(707), Tuint16_t(707), Tuint16_t(707), Tuint16_t(707), Tuint16_t(707), Tuint16_t(707), Tuint16_t(707), Tuint16_t(707), Tuint16_t(707), Tuint16_t(707), Tuint16_t(707), Tuint16_t(707), Tuint16_t(707),
Tuint16_t(707), Tuint16_t(707), Tuint16_t(707), Tuint16_t(707), Tuint16_t(707), Tuint16_t(707), Tuint16_t(707), Tuint16_t(707), Tuint16_t(707), Tuint16_t(707), Tuint16_t(707), Tuint16_t(707), Tuint16_t(707), Tuint16_t(707), Tuint16_t(707), Tuint16_t(707),
// block 297
Tuint16_t(961), Tuint16_t(961), Tuint16_t(961), Tuint16_t(961), Tuint16_t(961), Tuint16_t(961), Tuint16_t(961), Tuint16_t(961), Tuint16_t(961), Tuint16_t(961), Tuint16_t(961), Tuint16_t(961), Tuint16_t(961), Tuint16_t(961), Tuint16_t(961), Tuint16_t(961),
Tuint16_t(961), Tuint16_t(961), Tuint16_t(961), Tuint16_t(961), Tuint16_t(961), Tuint16_t(961), Tuint16_t(961), Tuint16_t(961), Tuint16_t(961), Tuint16_t(961), Tuint16_t(961), Tuint16_t(961), Tuint16_t(961), Tuint16_t(961), Tuint16_t(961), Tuint16_t(961),
Tuint16_t(961), Tuint16_t(961), Tuint16_t(961), Tuint16_t(961), Tuint16_t(961), Tuint16_t(961), Tuint16_t(961), Tuint16_t(961), Tuint16_t(961), Tuint16_t(961), Tuint16_t(961), Tuint16_t(961), Tuint16_t(961), Tuint16_t(961), Tuint16_t(961), Tuint16_t(961),
Tuint16_t(961), Tuint16_t(961), Tuint16_t(961), Tuint16_t(961), Tuint16_t(961), Tuint16_t(961), Tuint16_t(961), Tuint16_t(961), Tuint16_t(961), Tuint16_t(961), Tuint16_t(961), Tuint16_t(961), Tuint16_t(961), Tuint16_t(961), Tuint16_t(961), Tuint16_t(961),
Tuint16_t(961), Tuint16_t(961), Tuint16_t(961), Tuint16_t(961), Tuint16_t(961), Tuint16_t(961), Tuint16_t(961), Tuint16_t(961), Tuint16_t(961), Tuint16_t(961), Tuint16_t(961), Tuint16_t(961), Tuint16_t(961), Tuint16_t(961), Tuint16_t(961), Tuint16_t(961),
Tuint16_t(961), Tuint16_t(961), Tuint16_t(961), Tuint16_t(961), Tuint16_t(961), Tuint16_t(961), Tuint16_t(961), Tuint16_t(961), Tuint16_t(961), Tuint16_t(961), Tuint16_t(961), Tuint16_t(961), Tuint16_t(961), Tuint16_t(961), Tuint16_t(961), Tuint16_t(961),
Tuint16_t(961), Tuint16_t(961), Tuint16_t(961), Tuint16_t(961), Tuint16_t(961), Tuint16_t(961), Tuint16_t(961), Tuint16_t(961), Tuint16_t(961), Tuint16_t(961), Tuint16_t(961), Tuint16_t(961), Tuint16_t(961), Tuint16_t(961), Tuint16_t(961), Tuint16_t(961),
Tuint16_t(961), Tuint16_t(961), Tuint16_t(961), Tuint16_t(961), Tuint16_t(961), Tuint16_t(961), Tuint16_t(961), Tuint16_t(961), Tuint16_t(961), Tuint16_t(961), Tuint16_t(961), Tuint16_t(961), Tuint16_t(961), Tuint16_t(961), Tuint16_t(961), Tuint16_t(961),
// block 298
Tuint16_t(961), Tuint16_t(961), Tuint16_t(961), Tuint16_t(961), Tuint16_t(961), Tuint16_t(961), Tuint16_t(961), Tuint16_t(961), Tuint16_t(961), Tuint16_t(961), Tuint16_t(961), Tuint16_t(961), Tuint16_t(961), Tuint16_t(961), Tuint16_t(961), Tuint16_t(961),
Tuint16_t(961), Tuint16_t(961), Tuint16_t(961), Tuint16_t(961), Tuint16_t(961), Tuint16_t(961), Tuint16_t(961), Tuint16_t(961), Tuint16_t(961), Tuint16_t(961), Tuint16_t(961), Tuint16_t(961), Tuint16_t(961), Tuint16_t(961), Tuint16_t(961), Tuint16_t(961),
Tuint16_t(961), Tuint16_t(961), Tuint16_t(961), Tuint16_t(961), Tuint16_t(961), Tuint16_t(961), Tuint16_t(961), Tuint16_t(961), Tuint16_t(961), Tuint16_t(961), Tuint16_t(961), Tuint16_t(961), Tuint16_t(961), Tuint16_t(961), Tuint16_t(961), Tuint16_t(961),
Tuint16_t(961), Tuint16_t(961), Tuint16_t(961), Tuint16_t(961), Tuint16_t(961), Tuint16_t(961), Tuint16_t(961), Tuint16_t(961), Tuint16_t(961), Tuint16_t(961), Tuint16_t(961), Tuint16_t(961), Tuint16_t(961), Tuint16_t(961), Tuint16_t(961), Tuint16_t(961),
Tuint16_t(961), Tuint16_t(961), Tuint16_t(961), Tuint16_t(961), Tuint16_t(961), Tuint16_t(961), Tuint16_t(961), Tuint16_t(961), Tuint16_t(961), Tuint16_t(961), Tuint16_t(961), Tuint16_t(961), Tuint16_t(961), Tuint16_t(961), Tuint16_t(961), Tuint16_t(961),
Tuint16_t(961), Tuint16_t(961), Tuint16_t(961), Tuint16_t(961), Tuint16_t(961), Tuint16_t(961), Tuint16_t(961), Tuint16_t(961), Tuint16_t(961), Tuint16_t(961), Tuint16_t(961), Tuint16_t(961), Tuint16_t(961), Tuint16_t(961), Tuint16_t(961), Tuint16_t(961),
Tuint16_t(961), Tuint16_t(961), Tuint16_t(961), Tuint16_t(961), Tuint16_t(961), Tuint16_t(961), Tuint16_t(961), Tuint16_t(961), Tuint16_t(961), Tuint16_t(961), Tuint16_t(961), Tuint16_t(961), Tuint16_t(961), Tuint16_t(961), Tuint16_t(961), Tuint16_t(961),
Tuint16_t(707), Tuint16_t(707), Tuint16_t(707), Tuint16_t(707), Tuint16_t(707), Tuint16_t(707), Tuint16_t(707), Tuint16_t(707), Tuint16_t(707), Tuint16_t(707), Tuint16_t(707), Tuint16_t(707), Tuint16_t(707), Tuint16_t(707), Tuint16_t(707), Tuint16_t(707),
// block 299
Tuint16_t(952), Tuint16_t(952), Tuint16_t(952), Tuint16_t(952), Tuint16_t(952), Tuint16_t(952), Tuint16_t(952), Tuint16_t(952), Tuint16_t(952), Tuint16_t(952), Tuint16_t(952), Tuint16_t(952), Tuint16_t(952), Tuint16_t(952), Tuint16_t(952), Tuint16_t(952),
Tuint16_t(952), Tuint16_t(952), Tuint16_t(952), Tuint16_t(952), Tuint16_t(952), Tuint16_t(952), Tuint16_t(952), Tuint16_t(952), Tuint16_t(952), Tuint16_t(952), Tuint16_t(952), Tuint16_t(952), Tuint16_t(952), Tuint16_t(952), Tuint16_t(952), Tuint16_t(952),
Tuint16_t(952), Tuint16_t(952), Tuint16_t(952), Tuint16_t(952), Tuint16_t(952), Tuint16_t(952), Tuint16_t(952), Tuint16_t(952), Tuint16_t(952), Tuint16_t(952), Tuint16_t(952), Tuint16_t(952), Tuint16_t(952), Tuint16_t(952), Tuint16_t(952), Tuint16_t(952),
Tuint16_t(952), Tuint16_t(952), Tuint16_t(952), Tuint16_t(952), Tuint16_t(952), Tuint16_t(952), Tuint16_t(952), Tuint16_t(952), Tuint16_t(952), Tuint16_t(952), Tuint16_t(952), Tuint16_t(952), Tuint16_t(952), Tuint16_t(952), Tuint16_t(952), Tuint16_t(952),
Tuint16_t(952), Tuint16_t(952), Tuint16_t(952), Tuint16_t(952), Tuint16_t(952), Tuint16_t(952), Tuint16_t(952), Tuint16_t(952), Tuint16_t(952), Tuint16_t(952), Tuint16_t(952), Tuint16_t(952), Tuint16_t(952), Tuint16_t(952), Tuint16_t(952), Tuint16_t(952),
Tuint16_t(952), Tuint16_t(952), Tuint16_t(952), Tuint16_t(952), Tuint16_t(952), Tuint16_t(952), Tuint16_t(952), Tuint16_t(952), Tuint16_t(952), Tuint16_t(952), Tuint16_t(952), Tuint16_t(952), Tuint16_t(952), Tuint16_t(952), Tuint16_t(952), Tuint16_t(952),
Tuint16_t(952), Tuint16_t(952), Tuint16_t(952), Tuint16_t(952), Tuint16_t(952), Tuint16_t(952), Tuint16_t(952), Tuint16_t(952), Tuint16_t(952), Tuint16_t(952), Tuint16_t(952), Tuint16_t(952), Tuint16_t(952), Tuint16_t(952), Tuint16_t(952), Tuint16_t(952),
Tuint16_t(952), Tuint16_t(952), Tuint16_t(952), Tuint16_t(952), Tuint16_t(952), Tuint16_t(952), Tuint16_t(952), Tuint16_t(952), Tuint16_t(952), Tuint16_t(952), Tuint16_t(952), Tuint16_t(952), Tuint16_t(952), Tuint16_t(952), Tuint16_t(958), Tuint16_t(958),
} /* pcre2_ucd.c:2386:16 */
// End of pcre2_ucd.c
// This function is needed only when memmove() is not available.
// End of pcre2_internal.h
// ************************************************
//
// Validate a UTF string *
//
// This function is called (optionally) at the start of compile or match, to
// check that a supposed UTF string is actually valid. The early check means
// that subsequent code can assume it is dealing with a valid string. The check
// can be turned off for maximum performance, but the consequences of supplying an
// invalid string are then undefined.
//
// Arguments:
// string points to the string
// length length of string
// errp pointer to an error position offset variable
//
// Returns: == 0 if the string is a valid UTF string
// != 0 otherwise, setting the offset of the bad character
func X_pcre2_valid_utf_8(tls *libc.TLS, string TPCRE2_SPTR8, length Tsize_t, erroroffset uintptr) int32 { /* pcre2_valid_utf.c:94:1: */
var p TPCRE2_SPTR8
var c Tuint32_t
// ----------------- Check a UTF-8 string -----------------
// Originally, this function checked according to RFC 2279, allowing for values
// in the range 0 to 0x7fffffff, up to 6 bytes long, but ensuring that they were
// in the canonical format. Once somebody had pointed out RFC 3629 to me (it
// obsoletes 2279), additional restrictions were applied. The values are now
// limited to be between 0 and 0x0010ffff, no more than 4 bytes long, and the
// subrange 0xd000 to 0xdfff is excluded. However, the format of 5-byte and 6-byte
// characters is still checked. Error returns are as follows:
//
// PCRE2_ERROR_UTF8_ERR1 Missing 1 byte at the end of the string
// PCRE2_ERROR_UTF8_ERR2 Missing 2 bytes at the end of the string
// PCRE2_ERROR_UTF8_ERR3 Missing 3 bytes at the end of the string
// PCRE2_ERROR_UTF8_ERR4 Missing 4 bytes at the end of the string
// PCRE2_ERROR_UTF8_ERR5 Missing 5 bytes at the end of the string
// PCRE2_ERROR_UTF8_ERR6 2nd-byte's two top bits are not 0x80
// PCRE2_ERROR_UTF8_ERR7 3rd-byte's two top bits are not 0x80
// PCRE2_ERROR_UTF8_ERR8 4th-byte's two top bits are not 0x80
// PCRE2_ERROR_UTF8_ERR9 5th-byte's two top bits are not 0x80
// PCRE2_ERROR_UTF8_ERR10 6th-byte's two top bits are not 0x80
// PCRE2_ERROR_UTF8_ERR11 5-byte character is not permitted by RFC 3629
// PCRE2_ERROR_UTF8_ERR12 6-byte character is not permitted by RFC 3629
// PCRE2_ERROR_UTF8_ERR13 4-byte character with value > 0x10ffff is not permitted
// PCRE2_ERROR_UTF8_ERR14 3-byte character with value 0xd800-0xdfff is not permitted
// PCRE2_ERROR_UTF8_ERR15 Overlong 2-byte sequence
// PCRE2_ERROR_UTF8_ERR16 Overlong 3-byte sequence
// PCRE2_ERROR_UTF8_ERR17 Overlong 4-byte sequence
// PCRE2_ERROR_UTF8_ERR18 Overlong 5-byte sequence (won't ever occur)
// PCRE2_ERROR_UTF8_ERR19 Overlong 6-byte sequence (won't ever occur)
// PCRE2_ERROR_UTF8_ERR20 Isolated 0x80 byte (not within UTF-8 character)
// PCRE2_ERROR_UTF8_ERR21 Byte with the illegal value 0xfe or 0xff
for p = string; length > uint64(0); p++ {
var ab Tuint32_t
var d Tuint32_t
c = Tuint32_t(*(*TPCRE2_UCHAR8)(unsafe.Pointer(p)))
length--
if c < Tuint32_t(128) {
continue
} // ASCII character
if c < Tuint32_t(0xc0) {
*(*Tsize_t)(unsafe.Pointer(erroroffset)) = Tsize_t((int64(p) - int64(string)) / 1)
return -22
}
if c >= Tuint32_t(0xfe) {
*(*Tsize_t)(unsafe.Pointer(erroroffset)) = Tsize_t((int64(p) - int64(string)) / 1)
return -23
}
ab = Tuint32_t(X_pcre2_utf8_table4[c&Tuint32_t(0x3f)]) // Number of additional bytes (1-5)
if length < Tsize_t(ab) {
*(*Tsize_t)(unsafe.Pointer(erroroffset)) = Tsize_t((int64(p) - int64(string)) / 1)
switch Tsize_t(ab) - length {
case uint64(1):
return -3
fallthrough
case uint64(2):
return -4
fallthrough
case uint64(3):
return -5
fallthrough
case uint64(4):
return -6
fallthrough
case uint64(5):
return -7
}
}
length = length - Tsize_t(ab) // Length remaining
// Check top bits in the second byte
if libc.AssignUint32(&d, Tuint32_t(*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PreIncUintptr(&p, 1)))))&Tuint32_t(0xc0) != Tuint32_t(0x80) {
*(*Tsize_t)(unsafe.Pointer(erroroffset)) = Tsize_t(int32((int64(p)-int64(string))/1) - 1)
return -8
}
// For each length, check that the remaining bytes start with the 0x80 bit
// set and not the 0x40 bit. Then check for an overlong sequence, and for the
// excluded range 0xd800 to 0xdfff.
switch ab {
// 2-byte character. No further bytes to check for 0x80. Check first byte
// for for xx00 000x (overlong sequence).
case Tuint32_t(1):
if c&Tuint32_t(0x3e) == Tuint32_t(0) {
*(*Tsize_t)(unsafe.Pointer(erroroffset)) = Tsize_t(int32((int64(p)-int64(string))/1) - 1)
return -17
}
break
// 3-byte character. Check third byte for 0x80. Then check first 2 bytes
// for 1110 0000, xx0x xxxx (overlong sequence) or
// 1110 1101, 1010 xxxx (0xd800 - 0xdfff)
case Tuint32_t(2):
if int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PreIncUintptr(&p, 1))))&0xc0 != 0x80 {
*(*Tsize_t)(unsafe.Pointer(erroroffset)) = Tsize_t(int32((int64(p)-int64(string))/1) - 2)
return -9
}
if c == Tuint32_t(0xe0) && d&Tuint32_t(0x20) == Tuint32_t(0) {
*(*Tsize_t)(unsafe.Pointer(erroroffset)) = Tsize_t(int32((int64(p)-int64(string))/1) - 2)
return -18
}
if c == Tuint32_t(0xed) && d >= Tuint32_t(0xa0) {
*(*Tsize_t)(unsafe.Pointer(erroroffset)) = Tsize_t(int32((int64(p)-int64(string))/1) - 2)
return -16
}
break
// 4-byte character. Check 3rd and 4th bytes for 0x80. Then check first 2
// bytes for for 1111 0000, xx00 xxxx (overlong sequence), then check for a
// character greater than 0x0010ffff (f4 8f bf bf)
case Tuint32_t(3):
if int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PreIncUintptr(&p, 1))))&0xc0 != 0x80 {
*(*Tsize_t)(unsafe.Pointer(erroroffset)) = Tsize_t(int32((int64(p)-int64(string))/1) - 2)
return -9
}
if int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PreIncUintptr(&p, 1))))&0xc0 != 0x80 {
*(*Tsize_t)(unsafe.Pointer(erroroffset)) = Tsize_t(int32((int64(p)-int64(string))/1) - 3)
return -10
}
if c == Tuint32_t(0xf0) && d&Tuint32_t(0x30) == Tuint32_t(0) {
*(*Tsize_t)(unsafe.Pointer(erroroffset)) = Tsize_t(int32((int64(p)-int64(string))/1) - 3)
return -19
}
if c > Tuint32_t(0xf4) || c == Tuint32_t(0xf4) && d > Tuint32_t(0x8f) {
*(*Tsize_t)(unsafe.Pointer(erroroffset)) = Tsize_t(int32((int64(p)-int64(string))/1) - 3)
return -15
}
break
// 5-byte and 6-byte characters are not allowed by RFC 3629, and will be
// rejected by the length test below. However, we do the appropriate tests
// here so that overlong sequences get diagnosed, and also in case there is
// ever an option for handling these larger code points.
// 5-byte character. Check 3rd, 4th, and 5th bytes for 0x80. Then check for
// 1111 1000, xx00 0xxx
case Tuint32_t(4):
if int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PreIncUintptr(&p, 1))))&0xc0 != 0x80 {
*(*Tsize_t)(unsafe.Pointer(erroroffset)) = Tsize_t(int32((int64(p)-int64(string))/1) - 2)
return -9
}
if int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PreIncUintptr(&p, 1))))&0xc0 != 0x80 {
*(*Tsize_t)(unsafe.Pointer(erroroffset)) = Tsize_t(int32((int64(p)-int64(string))/1) - 3)
return -10
}
if int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PreIncUintptr(&p, 1))))&0xc0 != 0x80 {
*(*Tsize_t)(unsafe.Pointer(erroroffset)) = Tsize_t(int32((int64(p)-int64(string))/1) - 4)
return -11
}
if c == Tuint32_t(0xf8) && d&Tuint32_t(0x38) == Tuint32_t(0) {
*(*Tsize_t)(unsafe.Pointer(erroroffset)) = Tsize_t(int32((int64(p)-int64(string))/1) - 4)
return -20
}
break
// 6-byte character. Check 3rd-6th bytes for 0x80. Then check for
// 1111 1100, xx00 00xx.
case Tuint32_t(5):
if int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PreIncUintptr(&p, 1))))&0xc0 != 0x80 {
*(*Tsize_t)(unsafe.Pointer(erroroffset)) = Tsize_t(int32((int64(p)-int64(string))/1) - 2)
return -9
}
if int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PreIncUintptr(&p, 1))))&0xc0 != 0x80 {
*(*Tsize_t)(unsafe.Pointer(erroroffset)) = Tsize_t(int32((int64(p)-int64(string))/1) - 3)
return -10
}
if int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PreIncUintptr(&p, 1))))&0xc0 != 0x80 {
*(*Tsize_t)(unsafe.Pointer(erroroffset)) = Tsize_t(int32((int64(p)-int64(string))/1) - 4)
return -11
}
if int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PreIncUintptr(&p, 1))))&0xc0 != 0x80 {
*(*Tsize_t)(unsafe.Pointer(erroroffset)) = Tsize_t(int32((int64(p)-int64(string))/1) - 5)
return -12
}
if c == Tuint32_t(0xfc) && d&Tuint32_t(0x3c) == Tuint32_t(0) {
*(*Tsize_t)(unsafe.Pointer(erroroffset)) = Tsize_t(int32((int64(p)-int64(string))/1) - 5)
return -21
}
break
}
// Character is valid under RFC 2279, but 4-byte and 5-byte characters are
// excluded by RFC 3629. The pointer p is currently at the last byte of the
// character.
if ab > Tuint32_t(3) {
*(*Tsize_t)(unsafe.Pointer(erroroffset)) = Tsize_t(Tuint32_t(int32((int64(p)-int64(string))/1)) - ab)
if ab == Tuint32_t(4) {
return -13
}
return -14
}
}
return 0
// ----------------- Check a UTF-16 string -----------------
}
// End of pcre2_valid_utf.c
// This function is needed only when memmove() is not available.
// End of pcre2_internal.h
// ************************************************
//
// Match character against an XCLASS *
//
// This function is called to match a character against an extended class that
// might contain codepoints above 255 and/or Unicode properties.
//
// Arguments:
// c the character
// data points to the flag code unit of the XCLASS data
// utf TRUE if in UTF mode
//
// Returns: TRUE if character matches, else FALSE
func X_pcre2_xclass_8(tls *libc.TLS, c Tuint32_t, data TPCRE2_SPTR8, utf TBOOL) TBOOL { /* pcre2_xclass.c:69:1: */
var t TPCRE2_UCHAR8
var negated TBOOL = libc.Bool32(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(data)))&DXCL_NOT != 0)
// In 8 bit mode, this must always be TRUE. Help the compiler to know that.
utf = DTRUE
// Code points < 256 are matched against a bitmap, if one is present. If not,
// we still carry on, because there may be ranges that start below 256 in the
// additional data.
if c < Tuint32_t(256) {
if int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(data)))&DXCL_HASPROP == 0 {
if int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(data)))&DXCL_MAP == 0 {
return negated
}
return libc.Bool32(uint32(*(*Tuint8_t)(unsafe.Pointer(data + uintptr(1) + uintptr(c/Tuint32_t(8)))))&(uint32(1)<<(c&Tuint32_t(7))) != uint32(0))
}
if int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(data)))&DXCL_MAP != 0 && uint32(*(*Tuint8_t)(unsafe.Pointer(data + uintptr(1) + uintptr(c/Tuint32_t(8)))))&(uint32(1)<<(c&Tuint32_t(7))) != uint32(0) {
return libc.BoolInt32(!(negated != 0))
} // char found
}
// First skip the bit map if present. Then match against the list of Unicode
// properties or large chars or ranges that end with a large char. We won't ever
// encounter XCL_PROP or XCL_NOTPROP when UTF support is not compiled.
if int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&data, 1))))&DXCL_MAP != 0 {
data += TPCRE2_SPTR8(uint64(32) / uint64(unsafe.Sizeof(TPCRE2_UCHAR8(0))))
}
for int32(libc.AssignUint8(&t, *(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&data, 1))))) != DXCL_END {
var x Tuint32_t
var y Tuint32_t
if int32(t) == DXCL_SINGLE {
if utf != 0 {
x = Tuint32_t(*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&data, 1))))
if x >= 0xc0 {
if x&0x20 == Tuint32_t(0) {
x = x&0x1f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&data, 1))))&0x3f
} else if x&0x10 == Tuint32_t(0) {
x = x&0x0f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(data)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(data + 1)))&0x3f
data += uintptr(2)
} else if x&0x08 == Tuint32_t(0) {
x = x&0x07<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(data)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(data + 1)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(data + 2)))&0x3f
data += uintptr(3)
} else if x&0x04 == Tuint32_t(0) {
x = x&0x03<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(data)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(data + 1)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(data + 2)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(data + 3)))&0x3f
data += uintptr(4)
} else {
x = x&0x01<<30 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(data)))&0x3f<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(data + 1)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(data + 2)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(data + 3)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(data + 4)))&0x3f
data += uintptr(5)
}
}
// macro generates multiple statements
} else {
x = Tuint32_t(*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&data, 1))))
}
if c == x {
return libc.BoolInt32(!(negated != 0))
}
} else if int32(t) == DXCL_RANGE {
if utf != 0 {
x = Tuint32_t(*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&data, 1))))
if x >= 0xc0 {
if x&0x20 == Tuint32_t(0) {
x = x&0x1f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&data, 1))))&0x3f
} else if x&0x10 == Tuint32_t(0) {
x = x&0x0f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(data)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(data + 1)))&0x3f
data += uintptr(2)
} else if x&0x08 == Tuint32_t(0) {
x = x&0x07<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(data)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(data + 1)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(data + 2)))&0x3f
data += uintptr(3)
} else if x&0x04 == Tuint32_t(0) {
x = x&0x03<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(data)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(data + 1)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(data + 2)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(data + 3)))&0x3f
data += uintptr(4)
} else {
x = x&0x01<<30 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(data)))&0x3f<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(data + 1)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(data + 2)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(data + 3)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(data + 4)))&0x3f
data += uintptr(5)
}
}
// macro generates multiple statements
y = Tuint32_t(*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&data, 1))))
if y >= 0xc0 {
if y&0x20 == Tuint32_t(0) {
y = y&0x1f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&data, 1))))&0x3f
} else if y&0x10 == Tuint32_t(0) {
y = y&0x0f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(data)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(data + 1)))&0x3f
data += uintptr(2)
} else if y&0x08 == Tuint32_t(0) {
y = y&0x07<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(data)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(data + 1)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(data + 2)))&0x3f
data += uintptr(3)
} else if y&0x04 == Tuint32_t(0) {
y = y&0x03<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(data)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(data + 1)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(data + 2)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(data + 3)))&0x3f
data += uintptr(4)
} else {
y = y&0x01<<30 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(data)))&0x3f<<24 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(data + 1)))&0x3f<<18 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(data + 2)))&0x3f<<12 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(data + 3)))&0x3f<<6 | uint32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(data + 4)))&0x3f
data += uintptr(5)
}
}
// macro generates multiple statements
} else {
x = Tuint32_t(*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&data, 1))))
y = Tuint32_t(*(*TPCRE2_UCHAR8)(unsafe.Pointer(libc.PostIncUintptr(&data, 1))))
}
if c >= x && c <= y {
return libc.BoolInt32(!(negated != 0))
}
} else {
var prop uintptr = uintptr(unsafe.Pointer(&X_pcre2_ucd_records_8)) + uintptr(X_pcre2_ucd_stage2_8[int32(X_pcre2_ucd_stage1_8[int32(c)/DUCD_BLOCK_SIZE])*DUCD_BLOCK_SIZE+int32(c)%DUCD_BLOCK_SIZE])*12
var isprop TBOOL = libc.Bool32(int32(t) == DXCL_PROP)
var ok TBOOL
switch int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(data))) {
case DPT_ANY:
if isprop != 0 {
return libc.BoolInt32(!(negated != 0))
}
break
fallthrough
case DPT_LAMP:
if libc.Bool32(int32((*Tucd_record)(unsafe.Pointer(prop)).Fchartype) == ucp_Lu || int32((*Tucd_record)(unsafe.Pointer(prop)).Fchartype) == ucp_Ll || int32((*Tucd_record)(unsafe.Pointer(prop)).Fchartype) == ucp_Lt) == isprop {
return libc.BoolInt32(!(negated != 0))
}
break
fallthrough
case DPT_GC:
if libc.Bool32(Tuint32_t(*(*TPCRE2_UCHAR8)(unsafe.Pointer(data + 1))) == X_pcre2_ucp_gentype_8[(*Tucd_record)(unsafe.Pointer(prop)).Fchartype]) == isprop {
return libc.BoolInt32(!(negated != 0))
}
break
fallthrough
case DPT_PC:
if libc.Bool32(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(data + 1))) == int32((*Tucd_record)(unsafe.Pointer(prop)).Fchartype)) == isprop {
return libc.BoolInt32(!(negated != 0))
}
break
fallthrough
case DPT_SC:
if libc.Bool32(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(data + 1))) == int32((*Tucd_record)(unsafe.Pointer(prop)).Fscript)) == isprop {
return libc.BoolInt32(!(negated != 0))
}
break
fallthrough
case DPT_SCX:
ok = libc.Bool32(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(data + 1))) == int32((*Tucd_record)(unsafe.Pointer(prop)).Fscript) || *(*Tuint32_t)(unsafe.Pointer(uintptr(unsafe.Pointer(&X_pcre2_ucd_script_sets_8)) + uintptr(int32((*Tucd_record)(unsafe.Pointer(prop)).Fscriptx_bidiclass)&DUCD_SCRIPTX_MASK)*4 + uintptr(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(data + 1)))/32)*4))&(uint32(1)<<(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(data + 1)))%32)) != Tuint32_t(0))
if ok == isprop {
return libc.BoolInt32(!(negated != 0))
}
break
fallthrough
case DPT_ALNUM:
if libc.Bool32(X_pcre2_ucp_gentype_8[(*Tucd_record)(unsafe.Pointer(prop)).Fchartype] == ucp_L || X_pcre2_ucp_gentype_8[(*Tucd_record)(unsafe.Pointer(prop)).Fchartype] == ucp_N) == isprop {
return libc.BoolInt32(!(negated != 0))
}
break
fallthrough
// Perl space used to exclude VT, but from Perl 5.18 it is included,
// which means that Perl space and POSIX space are now identical. PCRE
// was changed at release 8.34.
case DPT_SPACE:
fallthrough // Perl space
case DPT_PXSPACE: // POSIX space
switch c {
case Tuint32_t('\011'):
fallthrough
case Tuint32_t('\040'):
fallthrough
case libc.Uint32FromUint8(libc.Uint8FromInt32(160)):
fallthrough
case Tuint32_t(0x1680):
fallthrough /* OGHAM SPACE MARK */
case Tuint32_t(0x180e):
fallthrough /* MONGOLIAN VOWEL SEPARATOR */
case Tuint32_t(0x2000):
fallthrough /* EN QUAD */
case Tuint32_t(0x2001):
fallthrough /* EM QUAD */
case Tuint32_t(0x2002):
fallthrough /* EN SPACE */
case Tuint32_t(0x2003):
fallthrough /* EM SPACE */
case Tuint32_t(0x2004):
fallthrough /* THREE-PER-EM SPACE */
case Tuint32_t(0x2005):
fallthrough /* FOUR-PER-EM SPACE */
case Tuint32_t(0x2006):
fallthrough /* SIX-PER-EM SPACE */
case Tuint32_t(0x2007):
fallthrough /* FIGURE SPACE */
case Tuint32_t(0x2008):
fallthrough /* PUNCTUATION SPACE */
case Tuint32_t(0x2009):
fallthrough /* THIN SPACE */
case Tuint32_t(0x200A):
fallthrough /* HAIR SPACE */
case Tuint32_t(0x202f):
fallthrough /* NARROW NO-BREAK SPACE */
case Tuint32_t(0x205f):
fallthrough /* MEDIUM MATHEMATICAL SPACE */
case Tuint32_t(0x3000):
fallthrough
case Tuint32_t('\012'):
fallthrough
case Tuint32_t('\013'):
fallthrough
case Tuint32_t('\014'):
fallthrough
case Tuint32_t('\015'):
fallthrough
case libc.Uint32FromUint8(libc.Uint8FromInt32(133)):
fallthrough
case Tuint32_t(0x2028):
fallthrough /* LINE SEPARATOR */
case Tuint32_t(0x2029):
if isprop != 0 {
return libc.BoolInt32(!(negated != 0))
}
break
fallthrough
default:
if libc.Bool32(X_pcre2_ucp_gentype_8[(*Tucd_record)(unsafe.Pointer(prop)).Fchartype] == ucp_Z) == isprop {
return libc.BoolInt32(!(negated != 0))
}
break
}
break
fallthrough
case DPT_WORD:
if libc.Bool32(X_pcre2_ucp_gentype_8[(*Tucd_record)(unsafe.Pointer(prop)).Fchartype] == ucp_L || X_pcre2_ucp_gentype_8[(*Tucd_record)(unsafe.Pointer(prop)).Fchartype] == ucp_N || c == Tuint32_t('\137')) ==
isprop {
return libc.BoolInt32(!(negated != 0))
}
break
fallthrough
case DPT_UCNC:
if c < Tuint32_t(0xa0) {
if libc.Bool32(c == Tuint32_t('\044') || c == Tuint32_t('\100') || c == Tuint32_t('\140')) == isprop {
return libc.BoolInt32(!(negated != 0))
}
} else {
if libc.Bool32(c < Tuint32_t(0xd800) || c > Tuint32_t(0xdfff)) == isprop {
return libc.BoolInt32(!(negated != 0))
}
}
break
fallthrough
case DPT_BIDICL:
if libc.Bool32(int32((*Tucd_record)(unsafe.Pointer(prop)).Fscriptx_bidiclass)>>DUCD_BIDICLASS_SHIFT == int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(data + 1)))) == isprop {
return libc.BoolInt32(!(negated != 0))
}
break
fallthrough
case DPT_BOOL:
ok = libc.Bool32(*(*Tuint32_t)(unsafe.Pointer(uintptr(unsafe.Pointer(&X_pcre2_ucd_boolprop_sets_8)) + uintptr(int32((*Tucd_record)(unsafe.Pointer(prop)).Fbprops)&DUCD_BPROPS_MASK)*4 + uintptr(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(data + 1)))/32)*4))&(uint32(1)<<(int32(*(*TPCRE2_UCHAR8)(unsafe.Pointer(data + 1)))%32)) != Tuint32_t(0))
if ok == isprop {
return libc.BoolInt32(!(negated != 0))
}
break
fallthrough
// The following three properties can occur only in an XCLASS, as there
// is no \p or \P coding for them.
// Graphic character. Implement this as not Z (space or separator) and
// not C (other), except for Cf (format) with a few exceptions. This seems
// to be what Perl does. The exceptional characters are:
//
// U+061C Arabic Letter Mark
// U+180E Mongolian Vowel Separator
// U+2066 - U+2069 Various "isolate"s
//
case DPT_PXGRAPH:
if libc.Bool32(X_pcre2_ucp_gentype_8[(*Tucd_record)(unsafe.Pointer(prop)).Fchartype] != ucp_Z && (X_pcre2_ucp_gentype_8[(*Tucd_record)(unsafe.Pointer(prop)).Fchartype] != ucp_C || int32((*Tucd_record)(unsafe.Pointer(prop)).Fchartype) == ucp_Cf && c != Tuint32_t(0x061c) && c != Tuint32_t(0x180e) && (c < Tuint32_t(0x2066) || c > Tuint32_t(0x2069)))) == isprop {
return libc.BoolInt32(!(negated != 0))
}
break
fallthrough
// Printable character: same as graphic, with the addition of Zs, i.e.
// not Zl and not Zp, and U+180E.
case DPT_PXPRINT:
if libc.Bool32(int32((*Tucd_record)(unsafe.Pointer(prop)).Fchartype) != ucp_Zl && int32((*Tucd_record)(unsafe.Pointer(prop)).Fchartype) != ucp_Zp && (X_pcre2_ucp_gentype_8[(*Tucd_record)(unsafe.Pointer(prop)).Fchartype] != ucp_C || int32((*Tucd_record)(unsafe.Pointer(prop)).Fchartype) == ucp_Cf && c != Tuint32_t(0x061c) && (c < Tuint32_t(0x2066) || c > Tuint32_t(0x2069)))) == isprop {
return libc.BoolInt32(!(negated != 0))
}
break
fallthrough
// Punctuation: all Unicode punctuation, plus ASCII characters that
// Unicode treats as symbols rather than punctuation, for Perl
// compatibility (these are $+<=>^`|~).
case DPT_PXPUNCT:
if libc.Bool32(X_pcre2_ucp_gentype_8[(*Tucd_record)(unsafe.Pointer(prop)).Fchartype] == ucp_P || c < Tuint32_t(128) && X_pcre2_ucp_gentype_8[(*Tucd_record)(unsafe.Pointer(prop)).Fchartype] == ucp_S) == isprop {
return libc.BoolInt32(!(negated != 0))
}
break
fallthrough
// This should never occur, but compilers may mutter if there is no
// default.
default:
return DFALSE
}
data += uintptr(2)
}
}
return negated // char did not match
}
// End of pcre2_xclass.c
func init() {
*(*func(*libc.TLS, Tsize_t, uintptr) uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&X_pcre2_default_compile_context_8)) + 0)) = default_malloc // pcre2_context.c:134:5:
*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&X_pcre2_default_compile_context_8)) + 8)) = default_free // pcre2_context.c:134:21:
*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&X_pcre2_default_compile_context_8)) + 40 /* .tables */)) = uintptr(unsafe.Pointer(&X_pcre2_default_tables_8)) // pcre2_context.c:137:3:
*(*func(*libc.TLS, Tsize_t, uintptr) uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&X_pcre2_default_compile_context_8)) + 0)) = default_malloc // pcre2_context.c:134:5:
*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&X_pcre2_default_compile_context_8)) + 8)) = default_free // pcre2_context.c:134:21:
*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&X_pcre2_default_compile_context_8)) + 40 /* .tables */)) = uintptr(unsafe.Pointer(&X_pcre2_default_tables_8)) // pcre2_context.c:137:3:
*(*func(*libc.TLS, Tsize_t, uintptr) uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&X_pcre2_default_convert_context_8)) + 0)) = default_malloc // pcre2_context.c:198:5:
*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&X_pcre2_default_convert_context_8)) + 8)) = default_free // pcre2_context.c:198:21:
*(*func(*libc.TLS, Tsize_t, uintptr) uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&X_pcre2_default_convert_context_8)) + 0)) = default_malloc // pcre2_context.c:198:5:
*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&X_pcre2_default_convert_context_8)) + 8)) = default_free // pcre2_context.c:198:21:
*(*func(*libc.TLS, Tsize_t, uintptr) uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&X_pcre2_default_match_context_8)) + 0)) = default_malloc // pcre2_context.c:164:5:
*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&X_pcre2_default_match_context_8)) + 8)) = default_free // pcre2_context.c:164:21:
*(*func(*libc.TLS, Tsize_t, uintptr) uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&X_pcre2_default_match_context_8)) + 0)) = default_malloc // pcre2_context.c:164:5:
*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&X_pcre2_default_match_context_8)) + 8)) = default_free // pcre2_context.c:164:21:
}
var ts1 = "\x00MARK\x00ACCEPT\x00F\x00FAIL\x00COMMIT\x00PRUNE\x00SKIP\x00THEN\x00pla\x00plb\x00napla\x00naplb\x00nla\x00nlb\x00positive_lookahead\x00positive_lookbehind\x00non_atomic_positive_lookahead\x00non_atomic_positive_lookbehind\x00negative_lookahead\x00negative_lookbehind\x00atomic\x00sr\x00asr\x00script_run\x00atomic_script_run\x00alpha\x00lower\x00upper\x00alnum\x00ascii\x00blank\x00cntrl\x00digit\x00graph\x00print\x00punct\x00space\x00word\x00xdigit\x00UTF8)\x00UTF)\x00UCP)\x00NOTEMPTY)\x00NOTEMPTY_ATSTART)\x00NO_AUTO_POSSESS)\x00NO_DOTSTAR_ANCHOR)\x00NO_JIT)\x00NO_START_OPT)\x00LIMIT_HEAP=\x00LIMIT_MATCH=\x00LIMIT_DEPTH=\x00LIMIT_RECURSION=\x00CR)\x00LF)\x00CRLF)\x00ANY)\x00NUL)\x00ANYCRLF)\x00BSR_ANYCRLF)\x00BSR_UNICODE)\x00bidiclass\x00bc\x00script\x00sc\x00scriptextensions\x00scx\x00[:<:]]\x00[:>:]]\x00Q\\E\x00VERSION\x00DEFINE\x00Z\x0010.40 2022-04-14\x0010.402022-04-14\x00\\?*+|.^${}[]()\x00(){}123456789\x00(*NUL)\x00]\x00:]\x00\\\x00[\x00^\x00alnum:alpha:ascii:blank:cntrl:digit:graph:lower:print:punct:space:upper:word:xdigit:\x00\x00no error\x00\\ at end of pattern\x00\\c at end of pattern\x00unrecognized character follows \\\x00numbers out of order in {} quantifier\x00number too big in {} quantifier\x00missing terminating ] for character class\x00escape sequence is invalid in character class\x00range out of order in character class\x00quantifier does not follow a repeatable item\x00internal error: unexpected repeat\x00unrecognized character after (? or (?-\x00POSIX named classes are supported only within a class\x00POSIX collating elements are not supported\x00missing closing parenthesis\x00reference to non-existent subpattern\x00pattern passed as NULL\x00unrecognised compile-time option bit(s)\x00missing ) after (?# comment\x00parentheses are too deeply nested\x00regular expression is too large\x00failed to allocate heap memory\x00unmatched closing parenthesis\x00internal error: code overflow\x00missing closing parenthesis for condition\x00lookbehind assertion is not fixed length\x00a relative value of zero is not allowed\x00conditional subpattern contains more than two branches\x00assertion expected after (?( or (?(?C)\x00digit expected after (?+ or (?-\x00unknown POSIX class name\x00internal error in pcre2_study(): should not occur\x00this version of PCRE2 does not have Unicode support\x00parentheses are too deeply nested (stack check)\x00character code point value in \\x{} or \\o{} is too large\x00lookbehind is too complicated\x00\\C is not allowed in a lookbehind assertion in UTF-8 mode\x00PCRE2 does not support \\F, \\L, \\l, \\N{name}, \\U, or \\u\x00number after (?C is greater than 255\x00closing parenthesis for (?C expected\x00invalid escape sequence in (*VERB) name\x00unrecognized character after (?P\x00syntax error in subpattern name (missing terminator?)\x00two named subpatterns have the same name (PCRE2_DUPNAMES not set)\x00subpattern name must start with a non-digit\x00this version of PCRE2 does not have support for \\P, \\p, or \\X\x00malformed \\P or \\p sequence\x00unknown property after \\P or \\p\x00subpattern name is too long (maximum 32 code units)\x00too many named subpatterns (maximum 10000)\x00invalid range in character class\x00octal value is greater than \\377 in 8-bit non-UTF-8 mode\x00internal error: overran compiling workspace\x00internal error: previously-checked referenced subpattern not found\x00DEFINE subpattern contains more than one branch\x00missing opening brace after \\o\x00internal error: unknown newline setting\x00\\g is not followed by a braced, angle-bracketed, or quoted name/number or by a plain number\x00(?R (recursive pattern call) must be followed by a closing parenthesis\x00obsolete error (should not occur)\x00(*VERB) not recognized or malformed\x00subpattern number is too big\x00subpattern name expected\x00internal error: parsed pattern overflow\x00non-octal character in \\o{} (closing brace missing?)\x00different names for subpatterns of the same number are not allowed\x00(*MARK) must have an argument\x00non-hex character in \\x{} (closing brace missing?)\x00\\c must be followed by a printable ASCII character\x00\\k is not followed by a braced, angle-bracketed, or quoted name\x00internal error: unknown meta code in check_lookbehinds()\x00\\N is not supported in a class\x00callout string is too long\x00disallowed Unicode code point (>= 0xd800 && <= 0xdfff)\x00using UTF is disabled by the application\x00using UCP is disabled by the application\x00name is too long in (*MARK), (*PRUNE), (*SKIP), or (*THEN)\x00character code point value in \\u.... sequence is too large\x00digits missing in \\x{} or \\o{} or \\N{U+}\x00syntax error or number too big in (?(VERSION condition\x00internal error: unknown opcode in auto_possessify()\x00missing terminating delimiter for callout with string argument\x00unrecognized string delimiter follows (?C\x00using \\C is disabled by the application\x00(?| and/or (?J: or (?x: parentheses are too deeply nested\x00using \\C is disabled in this PCRE2 library\x00regular expression is too complicated\x00lookbehind assertion is too long\x00pattern string is longer than the limit set by the application\x00internal error: unknown code in parsed pattern\x00internal error: bad code value in parsed_skip()\x00PCRE2_EXTRA_ALLOW_SURROGATE_ESCAPES is not allowed in UTF-16 mode\x00invalid option bits with PCRE2_LITERAL\x00\\N{U+dddd} is supported only in Unicode (UTF) mode\x00invalid hyphen in option setting\x00(*alpha_assertion) not recognized\x00script runs require Unicode support, which this version of PCRE2 does not have\x00too many capturing groups (maximum 65535)\x00atomic assertion expected after (?( or (?(?C)\x00\\K is not allowed in lookarounds (but see PCRE2_EXTRA_ALLOW_LOOKAROUND_BSK)\x00\x00no error\x00no match\x00partial match\x00UTF-8 error: 1 byte missing at end\x00UTF-8 error: 2 bytes missing at end\x00UTF-8 error: 3 bytes missing at end\x00UTF-8 error: 4 bytes missing at end\x00UTF-8 error: 5 bytes missing at end\x00UTF-8 error: byte 2 top bits not 0x80\x00UTF-8 error: byte 3 top bits not 0x80\x00UTF-8 error: byte 4 top bits not 0x80\x00UTF-8 error: byte 5 top bits not 0x80\x00UTF-8 error: byte 6 top bits not 0x80\x00UTF-8 error: 5-byte character is not allowed (RFC 3629)\x00UTF-8 error: 6-byte character is not allowed (RFC 3629)\x00UTF-8 error: code points greater than 0x10ffff are not defined\x00UTF-8 error: code points 0xd800-0xdfff are not defined\x00UTF-8 error: overlong 2-byte sequence\x00UTF-8 error: overlong 3-byte sequence\x00UTF-8 error: overlong 4-byte sequence\x00UTF-8 error: overlong 5-byte sequence\x00UTF-8 error: overlong 6-byte sequence\x00UTF-8 error: isolated byte with 0x80 bit set\x00UTF-8 error: illegal byte (0xfe or 0xff)\x00UTF-16 error: missing low surrogate at end\x00UTF-16 error: invalid low surrogate\x00UTF-16 error: isolated low surrogate\x00UTF-32 error: code points 0xd800-0xdfff are not defined\x00UTF-32 error: code points greater than 0x10ffff are not defined\x00bad data value\x00patterns do not all use the same character tables\x00magic number missing\x00pattern compiled in wrong mode: 8/16/32-bit error\x00bad offset value\x00bad option value\x00invalid replacement string\x00bad offset into UTF string\x00callout error code\x00invalid data in workspace for DFA restart\x00too much recursion for DFA matching\x00backreference condition or recursion test is not supported for DFA matching\x00function is not supported for DFA matching\x00pattern contains an item that is not supported for DFA matching\x00workspace size exceeded in DFA matching\x00internal error - pattern overwritten?\x00bad JIT option\x00JIT stack limit reached\x00match limit exceeded\x00no more memory\x00unknown substring\x00non-unique substring name\x00NULL argument passed with non-zero length\x00nested recursion at the same subject position\x00matching depth limit exceeded\x00requested value is not available\x00requested value is not set\x00offset limit set without PCRE2_USE_OFFSET_LIMIT\x00bad escape sequence in replacement string\x00expected closing curly bracket in replacement string\x00bad substitution in replacement string\x00match with end before start or start moved backwards is not supported\x00too many replacements (more than INT_MAX)\x00bad serialized data\x00heap limit exceeded\x00invalid syntax\x00internal error - duplicate substitution match\x00PCRE2_MATCH_INVALID_UTF is not supported for DFA matching\x00\x00\x00\x00JIT is not supported\x00MARK\x00adlam\x00adlm\x00aghb\x00ahex\x00ahom\x00alpha\x00alphabetic\x00anatolianhieroglyphs\x00any\x00arab\x00arabic\x00armenian\x00armi\x00armn\x00ascii\x00asciihexdigit\x00avestan\x00avst\x00bali\x00balinese\x00bamu\x00bamum\x00bass\x00bassavah\x00batak\x00batk\x00beng\x00bengali\x00bhaiksuki\x00bhks\x00bidial\x00bidian\x00bidib\x00bidibn\x00bidic\x00bidicontrol\x00bidics\x00bidien\x00bidies\x00bidiet\x00bidifsi\x00bidil\x00bidilre\x00bidilri\x00bidilro\x00bidim\x00bidimirrored\x00bidinsm\x00bidion\x00bidipdf\x00bidipdi\x00bidir\x00bidirle\x00bidirli\x00bidirlo\x00bidis\x00bidiws\x00bopo\x00bopomofo\x00brah\x00brahmi\x00brai\x00braille\x00bugi\x00buginese\x00buhd\x00buhid\x00c\x00cakm\x00canadianaboriginal\x00cans\x00cari\x00carian\x00cased\x00caseignorable\x00caucasianalbanian\x00cc\x00cf\x00chakma\x00cham\x00changeswhencasefolded\x00changeswhencasemapped\x00changeswhenlowercased\x00changeswhentitlecased\x00changeswhenuppercased\x00cher\x00cherokee\x00chorasmian\x00chrs\x00ci\x00cn\x00co\x00common\x00copt\x00coptic\x00cpmn\x00cprt\x00cs\x00cuneiform\x00cwcf\x00cwcm\x00cwl\x00cwt\x00cwu\x00cypriot\x00cyprominoan\x00cyrillic\x00cyrl\x00dash\x00defaultignorablecodepoint\x00dep\x00deprecated\x00deseret\x00deva\x00devanagari\x00di\x00dia\x00diacritic\x00diak\x00divesakuru\x00dogr\x00dogra\x00dsrt\x00dupl\x00duployan\x00ebase\x00ecomp\x00egyp\x00egyptianhieroglyphs\x00elba\x00elbasan\x00elym\x00elymaic\x00emod\x00emoji\x00emojicomponent\x00emojimodifier\x00emojimodifierbase\x00emojipresentation\x00epres\x00ethi\x00ethiopic\x00ext\x00extendedpictographic\x00extender\x00extpict\x00geor\x00georgian\x00glag\x00glagolitic\x00gong\x00gonm\x00goth\x00gothic\x00gran\x00grantha\x00graphemebase\x00graphemeextend\x00graphemelink\x00grbase\x00greek\x00grek\x00grext\x00grlink\x00gujarati\x00gujr\x00gunjalagondi\x00gurmukhi\x00guru\x00han\x00hang\x00hangul\x00hani\x00hanifirohingya\x00hano\x00hanunoo\x00hatr\x00hatran\x00hebr\x00hebrew\x00hex\x00hexdigit\x00hira\x00hiragana\x00hluw\x00hmng\x00hmnp\x00hung\x00idc\x00idcontinue\x00ideo\x00ideographic\x00ids\x00idsb\x00idsbinaryoperator\x00idst\x00idstart\x00idstrinaryoperator\x00imperialaramaic\x00inherited\x00inscriptionalpahlavi\x00inscriptionalparthian\x00ital\x00java\x00javanese\x00joinc\x00joincontrol\x00kaithi\x00kali\x00kana\x00kannada\x00katakana\x00kayahli\x00khar\x00kharoshthi\x00khitansmallscript\x00khmer\x00khmr\x00khoj\x00khojki\x00khudawadi\x00kits\x00knda\x00kthi\x00l\x00l&\x00lana\x00lao\x00laoo\x00latin\x00latn\x00lc\x00lepc\x00lepcha\x00limb\x00limbu\x00lina\x00linb\x00lineara\x00linearb\x00lisu\x00ll\x00lm\x00lo\x00loe\x00logicalorderexception\x00lower\x00lowercase\x00lt\x00lu\x00lyci\x00lycian\x00lydi\x00lydian\x00m\x00mahajani\x00mahj\x00maka\x00makasar\x00malayalam\x00mand\x00mandaic\x00mani\x00manichaean\x00marc\x00marchen\x00masaramgondi\x00math\x00mc\x00me\x00medefaidrin\x00medf\x00meeteimayek\x00mend\x00mendekikakui\x00merc\x00mero\x00meroiticcursive\x00meroitichieroglyphs\x00miao\x00mlym\x00mn\x00modi\x00mong\x00mongolian\x00mro\x00mroo\x00mtei\x00mult\x00multani\x00myanmar\x00mymr\x00n\x00nabataean\x00nand\x00nandinagari\x00narb\x00nbat\x00nchar\x00nd\x00newa\x00newtailue\x00nko\x00nkoo\x00nl\x00no\x00noncharactercodepoint\x00nshu\x00nushu\x00nyiakengpuachuehmong\x00ogam\x00ogham\x00olchiki\x00olck\x00oldhungarian\x00olditalic\x00oldnortharabian\x00oldpermic\x00oldpersian\x00oldsogdian\x00oldsoutharabian\x00oldturkic\x00olduyghur\x00oriya\x00orkh\x00orya\x00osage\x00osge\x00osma\x00osmanya\x00ougr\x00p\x00pahawhhmong\x00palm\x00palmyrene\x00patsyn\x00patternsyntax\x00patternwhitespace\x00patws\x00pauc\x00paucinhau\x00pc\x00pcm\x00pd\x00pe\x00perm\x00pf\x00phag\x00phagspa\x00phli\x00phlp\x00phnx\x00phoenician\x00pi\x00plrd\x00po\x00prependedconcatenationmark\x00prti\x00ps\x00psalterpahlavi\x00qaac\x00qaai\x00qmark\x00quotationmark\x00radical\x00regionalindicator\x00rejang\x00ri\x00rjng\x00rohg\x00runic\x00runr\x00s\x00samaritan\x00samr\x00sarb\x00saur\x00saurashtra\x00sc\x00sd\x00sentenceterminal\x00sgnw\x00sharada\x00shavian\x00shaw\x00shrd\x00sidd\x00siddham\x00signwriting\x00sind\x00sinh\x00sinhala\x00sk\x00sm\x00so\x00softdotted\x00sogd\x00sogdian\x00sogo\x00sora\x00sorasompeng\x00soyo\x00soyombo\x00space\x00sterm\x00sund\x00sundanese\x00sylo\x00sylotinagri\x00syrc\x00syriac\x00tagalog\x00tagb\x00tagbanwa\x00taile\x00taitham\x00taiviet\x00takr\x00takri\x00tale\x00talu\x00tamil\x00taml\x00tang\x00tangsa\x00tangut\x00tavt\x00telu\x00telugu\x00term\x00terminalpunctuation\x00tfng\x00tglg\x00thaa\x00thaana\x00thai\x00tibetan\x00tibt\x00tifinagh\x00tirh\x00tirhuta\x00tnsa\x00toto\x00ugar\x00ugaritic\x00uideo\x00unifiedideograph\x00unknown\x00upper\x00uppercase\x00vai\x00vaii\x00variationselector\x00vith\x00vithkuqi\x00vs\x00wancho\x00wara\x00warangciti\x00wcho\x00whitespace\x00wspace\x00xan\x00xidc\x00xidcontinue\x00xids\x00xidstart\x00xpeo\x00xps\x00xsp\x00xsux\x00xuc\x00xwd\x00yezi\x00yezidi\x00yi\x00yiii\x00z\x00zanabazarsquare\x00zanb\x00zinh\x00zl\x00zp\x00zs\x00zyyy\x00zzzz\x00\x0014.0.0\x00"
var ts = (*reflect.StringHeader)(unsafe.Pointer(&ts1)).Data