Skip to main content

generate/automata/
mod.rs

1/// This file is auto-generated by `static-automata`. Do not edit.
2pub struct Iri {
3	state: u32,
4}
5impl Iri {
6	pub const fn new() -> Self {
7		Self { state: 0u32 }
8	}
9	pub const fn push(&mut self, token: char) -> bool {
10		self.state = match self.state {
11			0u32 => match token {
12				'A'..='Z' | 'a'..='z' => 1u32,
13				_ => return false,
14			},
15			1u32 => match token {
16				'+' | '-'..='.' | '0'..='9' | 'A'..='Z' | 'a'..='z' => 1u32,
17				':' => 2u32,
18				_ => return false,
19			},
20			2u32 => match token {
21				'!'
22				| '$'
23				| '&'..='.'
24				| '0'..=';'
25				| '='
26				| '@'..='Z'
27				| '_'
28				| 'a'..='z'
29				| '~'
30				| '\u{a0}'..='\u{d7ff}'
31				| '豈'..='﷏'
32				| 'ﷰ'..='\u{ffef}'
33				| '𐀀'..='\u{1fffd}'
34				| '𠀀'..='\u{2fffd}'
35				| '𰀀'..='\u{3fffd}'
36				| '\u{40000}'..='\u{4fffd}'
37				| '\u{50000}'..='\u{5fffd}'
38				| '\u{60000}'..='\u{6fffd}'
39				| '\u{70000}'..='\u{7fffd}'
40				| '\u{80000}'..='\u{8fffd}'
41				| '\u{90000}'..='\u{9fffd}'
42				| '\u{a0000}'..='\u{afffd}'
43				| '\u{b0000}'..='\u{bfffd}'
44				| '\u{c0000}'..='\u{cfffd}'
45				| '\u{d0000}'..='\u{dfffd}'
46				| '\u{e1000}'..='\u{efffd}' => 3u32,
47				'#' => 4u32,
48				'%' => 5u32,
49				'/' => 6u32,
50				'?' => 7u32,
51				_ => return false,
52			},
53			3u32 => match token {
54				'!'
55				| '$'
56				| '&'..=';'
57				| '='
58				| '@'..='Z'
59				| '_'
60				| 'a'..='z'
61				| '~'
62				| '\u{a0}'..='\u{d7ff}'
63				| '豈'..='﷏'
64				| 'ﷰ'..='\u{ffef}'
65				| '𐀀'..='\u{1fffd}'
66				| '𠀀'..='\u{2fffd}'
67				| '𰀀'..='\u{3fffd}'
68				| '\u{40000}'..='\u{4fffd}'
69				| '\u{50000}'..='\u{5fffd}'
70				| '\u{60000}'..='\u{6fffd}'
71				| '\u{70000}'..='\u{7fffd}'
72				| '\u{80000}'..='\u{8fffd}'
73				| '\u{90000}'..='\u{9fffd}'
74				| '\u{a0000}'..='\u{afffd}'
75				| '\u{b0000}'..='\u{bfffd}'
76				| '\u{c0000}'..='\u{cfffd}'
77				| '\u{d0000}'..='\u{dfffd}'
78				| '\u{e1000}'..='\u{efffd}' => 3u32,
79				'#' => 4u32,
80				'%' => 5u32,
81				'?' => 7u32,
82				_ => return false,
83			},
84			4u32 => match token {
85				'!'
86				| '$'
87				| '&'..=';'
88				| '='
89				| '?'..='Z'
90				| '_'
91				| 'a'..='z'
92				| '~'
93				| '\u{a0}'..='\u{d7ff}'
94				| '豈'..='﷏'
95				| 'ﷰ'..='\u{ffef}'
96				| '𐀀'..='\u{1fffd}'
97				| '𠀀'..='\u{2fffd}'
98				| '𰀀'..='\u{3fffd}'
99				| '\u{40000}'..='\u{4fffd}'
100				| '\u{50000}'..='\u{5fffd}'
101				| '\u{60000}'..='\u{6fffd}'
102				| '\u{70000}'..='\u{7fffd}'
103				| '\u{80000}'..='\u{8fffd}'
104				| '\u{90000}'..='\u{9fffd}'
105				| '\u{a0000}'..='\u{afffd}'
106				| '\u{b0000}'..='\u{bfffd}'
107				| '\u{c0000}'..='\u{cfffd}'
108				| '\u{d0000}'..='\u{dfffd}'
109				| '\u{e1000}'..='\u{efffd}' => 4u32,
110				'%' => 8u32,
111				_ => return false,
112			},
113			5u32 => match token {
114				'0'..='9' | 'A'..='F' | 'a'..='f' => 9u32,
115				_ => return false,
116			},
117			6u32 => match token {
118				'!'
119				| '$'
120				| '&'..='.'
121				| '0'..=';'
122				| '='
123				| '@'..='Z'
124				| '_'
125				| 'a'..='z'
126				| '~'
127				| '\u{a0}'..='\u{d7ff}'
128				| '豈'..='﷏'
129				| 'ﷰ'..='\u{ffef}'
130				| '𐀀'..='\u{1fffd}'
131				| '𠀀'..='\u{2fffd}'
132				| '𰀀'..='\u{3fffd}'
133				| '\u{40000}'..='\u{4fffd}'
134				| '\u{50000}'..='\u{5fffd}'
135				| '\u{60000}'..='\u{6fffd}'
136				| '\u{70000}'..='\u{7fffd}'
137				| '\u{80000}'..='\u{8fffd}'
138				| '\u{90000}'..='\u{9fffd}'
139				| '\u{a0000}'..='\u{afffd}'
140				| '\u{b0000}'..='\u{bfffd}'
141				| '\u{c0000}'..='\u{cfffd}'
142				| '\u{d0000}'..='\u{dfffd}'
143				| '\u{e1000}'..='\u{efffd}' => 3u32,
144				'#' => 4u32,
145				'%' => 5u32,
146				'/' => 10u32,
147				'?' => 7u32,
148				_ => return false,
149			},
150			7u32 => match token {
151				'!'
152				| '$'
153				| '&'..=';'
154				| '='
155				| '?'..='Z'
156				| '_'
157				| 'a'..='z'
158				| '~'
159				| '\u{a0}'..='﷏'
160				| 'ﷰ'..='\u{ffef}'
161				| '𐀀'..='\u{1fffd}'
162				| '𠀀'..='\u{2fffd}'
163				| '𰀀'..='\u{3fffd}'
164				| '\u{40000}'..='\u{4fffd}'
165				| '\u{50000}'..='\u{5fffd}'
166				| '\u{60000}'..='\u{6fffd}'
167				| '\u{70000}'..='\u{7fffd}'
168				| '\u{80000}'..='\u{8fffd}'
169				| '\u{90000}'..='\u{9fffd}'
170				| '\u{a0000}'..='\u{afffd}'
171				| '\u{b0000}'..='\u{bfffd}'
172				| '\u{c0000}'..='\u{cfffd}'
173				| '\u{d0000}'..='\u{dfffd}'
174				| '\u{e1000}'..='\u{efffd}'
175				| '\u{f0000}'..='\u{ffffd}'
176				| '\u{100000}'..='\u{10fffd}' => 7u32,
177				'#' => 4u32,
178				'%' => 11u32,
179				_ => return false,
180			},
181			8u32 => match token {
182				'0'..='9' | 'A'..='F' | 'a'..='f' => 13u32,
183				_ => return false,
184			},
185			9u32 => match token {
186				'0'..='9' | 'A'..='F' | 'a'..='f' => 3u32,
187				_ => return false,
188			},
189			10u32 => match token {
190				'!'
191				| '$'
192				| '&'..='.'
193				| ';'
194				| '='
195				| 'A'..='Z'
196				| '_'
197				| 'a'..='z'
198				| '~'
199				| '\u{a0}'..='\u{d7ff}'
200				| '豈'..='﷏'
201				| 'ﷰ'..='\u{ffef}'
202				| '𐀀'..='\u{1fffd}'
203				| '𠀀'..='\u{2fffd}'
204				| '𰀀'..='\u{3fffd}'
205				| '\u{40000}'..='\u{4fffd}'
206				| '\u{50000}'..='\u{5fffd}'
207				| '\u{60000}'..='\u{6fffd}'
208				| '\u{70000}'..='\u{7fffd}'
209				| '\u{80000}'..='\u{8fffd}'
210				| '\u{90000}'..='\u{9fffd}'
211				| '\u{a0000}'..='\u{afffd}'
212				| '\u{b0000}'..='\u{bfffd}'
213				| '\u{c0000}'..='\u{cfffd}'
214				| '\u{d0000}'..='\u{dfffd}'
215				| '\u{e1000}'..='\u{efffd}' => 14u32,
216				'#' => 4u32,
217				'%' => 15u32,
218				'/' => 3u32,
219				'0' => 16u32,
220				'1' => 17u32,
221				'2' => 18u32,
222				'3'..='9' => 19u32,
223				':' => 20u32,
224				'?' => 7u32,
225				'@' => 21u32,
226				'[' => 22u32,
227				_ => return false,
228			},
229			11u32 => match token {
230				'0'..='9' | 'A'..='F' | 'a'..='f' => 12u32,
231				_ => return false,
232			},
233			12u32 => match token {
234				'0'..='9' | 'A'..='F' | 'a'..='f' => 7u32,
235				_ => return false,
236			},
237			13u32 => match token {
238				'0'..='9' | 'A'..='F' | 'a'..='f' => 4u32,
239				_ => return false,
240			},
241			14u32 => match token {
242				'!'
243				| '$'
244				| '&'..='.'
245				| '0'..='9'
246				| ';'
247				| '='
248				| 'A'..='Z'
249				| '_'
250				| 'a'..='z'
251				| '~'
252				| '\u{a0}'..='\u{d7ff}'
253				| '豈'..='﷏'
254				| 'ﷰ'..='\u{ffef}'
255				| '𐀀'..='\u{1fffd}'
256				| '𠀀'..='\u{2fffd}'
257				| '𰀀'..='\u{3fffd}'
258				| '\u{40000}'..='\u{4fffd}'
259				| '\u{50000}'..='\u{5fffd}'
260				| '\u{60000}'..='\u{6fffd}'
261				| '\u{70000}'..='\u{7fffd}'
262				| '\u{80000}'..='\u{8fffd}'
263				| '\u{90000}'..='\u{9fffd}'
264				| '\u{a0000}'..='\u{afffd}'
265				| '\u{b0000}'..='\u{bfffd}'
266				| '\u{c0000}'..='\u{cfffd}'
267				| '\u{d0000}'..='\u{dfffd}'
268				| '\u{e1000}'..='\u{efffd}' => 14u32,
269				'#' => 4u32,
270				'%' => 15u32,
271				'/' => 3u32,
272				':' => 20u32,
273				'?' => 7u32,
274				'@' => 21u32,
275				_ => return false,
276			},
277			15u32 => match token {
278				'0'..='9' | 'A'..='F' | 'a'..='f' => 23u32,
279				_ => return false,
280			},
281			16u32 => match token {
282				'!'
283				| '$'
284				| '&'..='-'
285				| '0'..='9'
286				| ';'
287				| '='
288				| 'A'..='Z'
289				| '_'
290				| 'a'..='z'
291				| '~'
292				| '\u{a0}'..='\u{d7ff}'
293				| '豈'..='﷏'
294				| 'ﷰ'..='\u{ffef}'
295				| '𐀀'..='\u{1fffd}'
296				| '𠀀'..='\u{2fffd}'
297				| '𰀀'..='\u{3fffd}'
298				| '\u{40000}'..='\u{4fffd}'
299				| '\u{50000}'..='\u{5fffd}'
300				| '\u{60000}'..='\u{6fffd}'
301				| '\u{70000}'..='\u{7fffd}'
302				| '\u{80000}'..='\u{8fffd}'
303				| '\u{90000}'..='\u{9fffd}'
304				| '\u{a0000}'..='\u{afffd}'
305				| '\u{b0000}'..='\u{bfffd}'
306				| '\u{c0000}'..='\u{cfffd}'
307				| '\u{d0000}'..='\u{dfffd}'
308				| '\u{e1000}'..='\u{efffd}' => 14u32,
309				'#' => 4u32,
310				'%' => 15u32,
311				'.' => 24u32,
312				'/' => 3u32,
313				':' => 20u32,
314				'?' => 7u32,
315				'@' => 21u32,
316				_ => return false,
317			},
318			17u32 => match token {
319				'!'
320				| '$'
321				| '&'..='-'
322				| ';'
323				| '='
324				| 'A'..='Z'
325				| '_'
326				| 'a'..='z'
327				| '~'
328				| '\u{a0}'..='\u{d7ff}'
329				| '豈'..='﷏'
330				| 'ﷰ'..='\u{ffef}'
331				| '𐀀'..='\u{1fffd}'
332				| '𠀀'..='\u{2fffd}'
333				| '𰀀'..='\u{3fffd}'
334				| '\u{40000}'..='\u{4fffd}'
335				| '\u{50000}'..='\u{5fffd}'
336				| '\u{60000}'..='\u{6fffd}'
337				| '\u{70000}'..='\u{7fffd}'
338				| '\u{80000}'..='\u{8fffd}'
339				| '\u{90000}'..='\u{9fffd}'
340				| '\u{a0000}'..='\u{afffd}'
341				| '\u{b0000}'..='\u{bfffd}'
342				| '\u{c0000}'..='\u{cfffd}'
343				| '\u{d0000}'..='\u{dfffd}'
344				| '\u{e1000}'..='\u{efffd}' => 14u32,
345				'#' => 4u32,
346				'%' => 15u32,
347				'.' => 24u32,
348				'/' => 3u32,
349				'0'..='9' => 19u32,
350				':' => 20u32,
351				'?' => 7u32,
352				'@' => 21u32,
353				_ => return false,
354			},
355			18u32 => match token {
356				'!'
357				| '$'
358				| '&'..='-'
359				| ';'
360				| '='
361				| 'A'..='Z'
362				| '_'
363				| 'a'..='z'
364				| '~'
365				| '\u{a0}'..='\u{d7ff}'
366				| '豈'..='﷏'
367				| 'ﷰ'..='\u{ffef}'
368				| '𐀀'..='\u{1fffd}'
369				| '𠀀'..='\u{2fffd}'
370				| '𰀀'..='\u{3fffd}'
371				| '\u{40000}'..='\u{4fffd}'
372				| '\u{50000}'..='\u{5fffd}'
373				| '\u{60000}'..='\u{6fffd}'
374				| '\u{70000}'..='\u{7fffd}'
375				| '\u{80000}'..='\u{8fffd}'
376				| '\u{90000}'..='\u{9fffd}'
377				| '\u{a0000}'..='\u{afffd}'
378				| '\u{b0000}'..='\u{bfffd}'
379				| '\u{c0000}'..='\u{cfffd}'
380				| '\u{d0000}'..='\u{dfffd}'
381				| '\u{e1000}'..='\u{efffd}' => 14u32,
382				'#' => 4u32,
383				'%' => 15u32,
384				'.' => 24u32,
385				'/' => 3u32,
386				'0'..='4' => 19u32,
387				'5' => 25u32,
388				'6'..='9' => 16u32,
389				':' => 20u32,
390				'?' => 7u32,
391				'@' => 21u32,
392				_ => return false,
393			},
394			19u32 => match token {
395				'!'
396				| '$'
397				| '&'..='-'
398				| ';'
399				| '='
400				| 'A'..='Z'
401				| '_'
402				| 'a'..='z'
403				| '~'
404				| '\u{a0}'..='\u{d7ff}'
405				| '豈'..='﷏'
406				| 'ﷰ'..='\u{ffef}'
407				| '𐀀'..='\u{1fffd}'
408				| '𠀀'..='\u{2fffd}'
409				| '𰀀'..='\u{3fffd}'
410				| '\u{40000}'..='\u{4fffd}'
411				| '\u{50000}'..='\u{5fffd}'
412				| '\u{60000}'..='\u{6fffd}'
413				| '\u{70000}'..='\u{7fffd}'
414				| '\u{80000}'..='\u{8fffd}'
415				| '\u{90000}'..='\u{9fffd}'
416				| '\u{a0000}'..='\u{afffd}'
417				| '\u{b0000}'..='\u{bfffd}'
418				| '\u{c0000}'..='\u{cfffd}'
419				| '\u{d0000}'..='\u{dfffd}'
420				| '\u{e1000}'..='\u{efffd}' => 14u32,
421				'#' => 4u32,
422				'%' => 15u32,
423				'.' => 24u32,
424				'/' => 3u32,
425				'0'..='9' => 16u32,
426				':' => 20u32,
427				'?' => 7u32,
428				'@' => 21u32,
429				_ => return false,
430			},
431			20u32 => match token {
432				'!'
433				| '$'
434				| '&'..='.'
435				| ':'..=';'
436				| '='
437				| 'A'..='Z'
438				| '_'
439				| 'a'..='z'
440				| '~'
441				| '\u{a0}'..='\u{d7ff}'
442				| '豈'..='﷏'
443				| 'ﷰ'..='\u{ffef}'
444				| '𐀀'..='\u{1fffd}'
445				| '𠀀'..='\u{2fffd}'
446				| '𰀀'..='\u{3fffd}'
447				| '\u{40000}'..='\u{4fffd}'
448				| '\u{50000}'..='\u{5fffd}'
449				| '\u{60000}'..='\u{6fffd}'
450				| '\u{70000}'..='\u{7fffd}'
451				| '\u{80000}'..='\u{8fffd}'
452				| '\u{90000}'..='\u{9fffd}'
453				| '\u{a0000}'..='\u{afffd}'
454				| '\u{b0000}'..='\u{bfffd}'
455				| '\u{c0000}'..='\u{cfffd}'
456				| '\u{d0000}'..='\u{dfffd}'
457				| '\u{e1000}'..='\u{efffd}' => 26u32,
458				'#' => 4u32,
459				'%' => 27u32,
460				'/' => 3u32,
461				'0'..='9' => 20u32,
462				'?' => 7u32,
463				'@' => 21u32,
464				_ => return false,
465			},
466			21u32 => match token {
467				'!'
468				| '$'
469				| '&'..='.'
470				| ';'
471				| '='
472				| 'A'..='Z'
473				| '_'
474				| 'a'..='z'
475				| '~'
476				| '\u{a0}'..='\u{d7ff}'
477				| '豈'..='﷏'
478				| 'ﷰ'..='\u{ffef}'
479				| '𐀀'..='\u{1fffd}'
480				| '𠀀'..='\u{2fffd}'
481				| '𰀀'..='\u{3fffd}'
482				| '\u{40000}'..='\u{4fffd}'
483				| '\u{50000}'..='\u{5fffd}'
484				| '\u{60000}'..='\u{6fffd}'
485				| '\u{70000}'..='\u{7fffd}'
486				| '\u{80000}'..='\u{8fffd}'
487				| '\u{90000}'..='\u{9fffd}'
488				| '\u{a0000}'..='\u{afffd}'
489				| '\u{b0000}'..='\u{bfffd}'
490				| '\u{c0000}'..='\u{cfffd}'
491				| '\u{d0000}'..='\u{dfffd}'
492				| '\u{e1000}'..='\u{efffd}' => 28u32,
493				'#' => 4u32,
494				'%' => 29u32,
495				'/' => 3u32,
496				'0' => 30u32,
497				'1' => 31u32,
498				'2' => 32u32,
499				'3'..='9' => 33u32,
500				':' => 34u32,
501				'?' => 7u32,
502				'[' => 22u32,
503				_ => return false,
504			},
505			22u32 => match token {
506				'0'..='9' | 'A'..='F' | 'a'..='f' => 35u32,
507				':' => 36u32,
508				'V' | 'v' => 37u32,
509				_ => return false,
510			},
511			23u32 => match token {
512				'0'..='9' | 'A'..='F' | 'a'..='f' => 14u32,
513				_ => return false,
514			},
515			24u32 => match token {
516				'!'
517				| '$'
518				| '&'..='.'
519				| ';'
520				| '='
521				| 'A'..='Z'
522				| '_'
523				| 'a'..='z'
524				| '~'
525				| '\u{a0}'..='\u{d7ff}'
526				| '豈'..='﷏'
527				| 'ﷰ'..='\u{ffef}'
528				| '𐀀'..='\u{1fffd}'
529				| '𠀀'..='\u{2fffd}'
530				| '𰀀'..='\u{3fffd}'
531				| '\u{40000}'..='\u{4fffd}'
532				| '\u{50000}'..='\u{5fffd}'
533				| '\u{60000}'..='\u{6fffd}'
534				| '\u{70000}'..='\u{7fffd}'
535				| '\u{80000}'..='\u{8fffd}'
536				| '\u{90000}'..='\u{9fffd}'
537				| '\u{a0000}'..='\u{afffd}'
538				| '\u{b0000}'..='\u{bfffd}'
539				| '\u{c0000}'..='\u{cfffd}'
540				| '\u{d0000}'..='\u{dfffd}'
541				| '\u{e1000}'..='\u{efffd}' => 14u32,
542				'#' => 4u32,
543				'%' => 15u32,
544				'/' => 3u32,
545				'0' => 208u32,
546				'1' => 209u32,
547				'2' => 210u32,
548				'3'..='9' => 211u32,
549				':' => 20u32,
550				'?' => 7u32,
551				'@' => 21u32,
552				_ => return false,
553			},
554			25u32 => match token {
555				'!'
556				| '$'
557				| '&'..='-'
558				| '6'..='9'
559				| ';'
560				| '='
561				| 'A'..='Z'
562				| '_'
563				| 'a'..='z'
564				| '~'
565				| '\u{a0}'..='\u{d7ff}'
566				| '豈'..='﷏'
567				| 'ﷰ'..='\u{ffef}'
568				| '𐀀'..='\u{1fffd}'
569				| '𠀀'..='\u{2fffd}'
570				| '𰀀'..='\u{3fffd}'
571				| '\u{40000}'..='\u{4fffd}'
572				| '\u{50000}'..='\u{5fffd}'
573				| '\u{60000}'..='\u{6fffd}'
574				| '\u{70000}'..='\u{7fffd}'
575				| '\u{80000}'..='\u{8fffd}'
576				| '\u{90000}'..='\u{9fffd}'
577				| '\u{a0000}'..='\u{afffd}'
578				| '\u{b0000}'..='\u{bfffd}'
579				| '\u{c0000}'..='\u{cfffd}'
580				| '\u{d0000}'..='\u{dfffd}'
581				| '\u{e1000}'..='\u{efffd}' => 14u32,
582				'#' => 4u32,
583				'%' => 15u32,
584				'.' => 24u32,
585				'/' => 3u32,
586				'0'..='5' => 16u32,
587				':' => 20u32,
588				'?' => 7u32,
589				'@' => 21u32,
590				_ => return false,
591			},
592			26u32 => match token {
593				'!'
594				| '$'
595				| '&'..='.'
596				| '0'..=';'
597				| '='
598				| 'A'..='Z'
599				| '_'
600				| 'a'..='z'
601				| '~'
602				| '\u{a0}'..='\u{d7ff}'
603				| '豈'..='﷏'
604				| 'ﷰ'..='\u{ffef}'
605				| '𐀀'..='\u{1fffd}'
606				| '𠀀'..='\u{2fffd}'
607				| '𰀀'..='\u{3fffd}'
608				| '\u{40000}'..='\u{4fffd}'
609				| '\u{50000}'..='\u{5fffd}'
610				| '\u{60000}'..='\u{6fffd}'
611				| '\u{70000}'..='\u{7fffd}'
612				| '\u{80000}'..='\u{8fffd}'
613				| '\u{90000}'..='\u{9fffd}'
614				| '\u{a0000}'..='\u{afffd}'
615				| '\u{b0000}'..='\u{bfffd}'
616				| '\u{c0000}'..='\u{cfffd}'
617				| '\u{d0000}'..='\u{dfffd}'
618				| '\u{e1000}'..='\u{efffd}' => 26u32,
619				'%' => 27u32,
620				'@' => 21u32,
621				_ => return false,
622			},
623			27u32 => match token {
624				'0'..='9' | 'A'..='F' | 'a'..='f' => 207u32,
625				_ => return false,
626			},
627			28u32 => match token {
628				'!'
629				| '$'
630				| '&'..='.'
631				| '0'..='9'
632				| ';'
633				| '='
634				| 'A'..='Z'
635				| '_'
636				| 'a'..='z'
637				| '~'
638				| '\u{a0}'..='\u{d7ff}'
639				| '豈'..='﷏'
640				| 'ﷰ'..='\u{ffef}'
641				| '𐀀'..='\u{1fffd}'
642				| '𠀀'..='\u{2fffd}'
643				| '𰀀'..='\u{3fffd}'
644				| '\u{40000}'..='\u{4fffd}'
645				| '\u{50000}'..='\u{5fffd}'
646				| '\u{60000}'..='\u{6fffd}'
647				| '\u{70000}'..='\u{7fffd}'
648				| '\u{80000}'..='\u{8fffd}'
649				| '\u{90000}'..='\u{9fffd}'
650				| '\u{a0000}'..='\u{afffd}'
651				| '\u{b0000}'..='\u{bfffd}'
652				| '\u{c0000}'..='\u{cfffd}'
653				| '\u{d0000}'..='\u{dfffd}'
654				| '\u{e1000}'..='\u{efffd}' => 28u32,
655				'#' => 4u32,
656				'%' => 29u32,
657				'/' => 3u32,
658				':' => 34u32,
659				'?' => 7u32,
660				_ => return false,
661			},
662			29u32 => match token {
663				'0'..='9' | 'A'..='F' | 'a'..='f' => 38u32,
664				_ => return false,
665			},
666			30u32 => match token {
667				'!'
668				| '$'
669				| '&'..='-'
670				| '0'..='9'
671				| ';'
672				| '='
673				| 'A'..='Z'
674				| '_'
675				| 'a'..='z'
676				| '~'
677				| '\u{a0}'..='\u{d7ff}'
678				| '豈'..='﷏'
679				| 'ﷰ'..='\u{ffef}'
680				| '𐀀'..='\u{1fffd}'
681				| '𠀀'..='\u{2fffd}'
682				| '𰀀'..='\u{3fffd}'
683				| '\u{40000}'..='\u{4fffd}'
684				| '\u{50000}'..='\u{5fffd}'
685				| '\u{60000}'..='\u{6fffd}'
686				| '\u{70000}'..='\u{7fffd}'
687				| '\u{80000}'..='\u{8fffd}'
688				| '\u{90000}'..='\u{9fffd}'
689				| '\u{a0000}'..='\u{afffd}'
690				| '\u{b0000}'..='\u{bfffd}'
691				| '\u{c0000}'..='\u{cfffd}'
692				| '\u{d0000}'..='\u{dfffd}'
693				| '\u{e1000}'..='\u{efffd}' => 28u32,
694				'#' => 4u32,
695				'%' => 29u32,
696				'.' => 39u32,
697				'/' => 3u32,
698				':' => 34u32,
699				'?' => 7u32,
700				_ => return false,
701			},
702			31u32 => match token {
703				'!'
704				| '$'
705				| '&'..='-'
706				| ';'
707				| '='
708				| 'A'..='Z'
709				| '_'
710				| 'a'..='z'
711				| '~'
712				| '\u{a0}'..='\u{d7ff}'
713				| '豈'..='﷏'
714				| 'ﷰ'..='\u{ffef}'
715				| '𐀀'..='\u{1fffd}'
716				| '𠀀'..='\u{2fffd}'
717				| '𰀀'..='\u{3fffd}'
718				| '\u{40000}'..='\u{4fffd}'
719				| '\u{50000}'..='\u{5fffd}'
720				| '\u{60000}'..='\u{6fffd}'
721				| '\u{70000}'..='\u{7fffd}'
722				| '\u{80000}'..='\u{8fffd}'
723				| '\u{90000}'..='\u{9fffd}'
724				| '\u{a0000}'..='\u{afffd}'
725				| '\u{b0000}'..='\u{bfffd}'
726				| '\u{c0000}'..='\u{cfffd}'
727				| '\u{d0000}'..='\u{dfffd}'
728				| '\u{e1000}'..='\u{efffd}' => 28u32,
729				'#' => 4u32,
730				'%' => 29u32,
731				'.' => 39u32,
732				'/' => 3u32,
733				'0'..='9' => 33u32,
734				':' => 34u32,
735				'?' => 7u32,
736				_ => return false,
737			},
738			32u32 => match token {
739				'!'
740				| '$'
741				| '&'..='-'
742				| ';'
743				| '='
744				| 'A'..='Z'
745				| '_'
746				| 'a'..='z'
747				| '~'
748				| '\u{a0}'..='\u{d7ff}'
749				| '豈'..='﷏'
750				| 'ﷰ'..='\u{ffef}'
751				| '𐀀'..='\u{1fffd}'
752				| '𠀀'..='\u{2fffd}'
753				| '𰀀'..='\u{3fffd}'
754				| '\u{40000}'..='\u{4fffd}'
755				| '\u{50000}'..='\u{5fffd}'
756				| '\u{60000}'..='\u{6fffd}'
757				| '\u{70000}'..='\u{7fffd}'
758				| '\u{80000}'..='\u{8fffd}'
759				| '\u{90000}'..='\u{9fffd}'
760				| '\u{a0000}'..='\u{afffd}'
761				| '\u{b0000}'..='\u{bfffd}'
762				| '\u{c0000}'..='\u{cfffd}'
763				| '\u{d0000}'..='\u{dfffd}'
764				| '\u{e1000}'..='\u{efffd}' => 28u32,
765				'#' => 4u32,
766				'%' => 29u32,
767				'.' => 39u32,
768				'/' => 3u32,
769				'0'..='4' => 33u32,
770				'5' => 40u32,
771				'6'..='9' => 30u32,
772				':' => 34u32,
773				'?' => 7u32,
774				_ => return false,
775			},
776			33u32 => match token {
777				'!'
778				| '$'
779				| '&'..='-'
780				| ';'
781				| '='
782				| 'A'..='Z'
783				| '_'
784				| 'a'..='z'
785				| '~'
786				| '\u{a0}'..='\u{d7ff}'
787				| '豈'..='﷏'
788				| 'ﷰ'..='\u{ffef}'
789				| '𐀀'..='\u{1fffd}'
790				| '𠀀'..='\u{2fffd}'
791				| '𰀀'..='\u{3fffd}'
792				| '\u{40000}'..='\u{4fffd}'
793				| '\u{50000}'..='\u{5fffd}'
794				| '\u{60000}'..='\u{6fffd}'
795				| '\u{70000}'..='\u{7fffd}'
796				| '\u{80000}'..='\u{8fffd}'
797				| '\u{90000}'..='\u{9fffd}'
798				| '\u{a0000}'..='\u{afffd}'
799				| '\u{b0000}'..='\u{bfffd}'
800				| '\u{c0000}'..='\u{cfffd}'
801				| '\u{d0000}'..='\u{dfffd}'
802				| '\u{e1000}'..='\u{efffd}' => 28u32,
803				'#' => 4u32,
804				'%' => 29u32,
805				'.' => 39u32,
806				'/' => 3u32,
807				'0'..='9' => 30u32,
808				':' => 34u32,
809				'?' => 7u32,
810				_ => return false,
811			},
812			34u32 => match token {
813				'#' => 4u32,
814				'/' => 3u32,
815				'0'..='9' => 34u32,
816				'?' => 7u32,
817				_ => return false,
818			},
819			35u32 => match token {
820				'0'..='9' | 'A'..='F' | 'a'..='f' => 41u32,
821				':' => 42u32,
822				_ => return false,
823			},
824			36u32 => match token {
825				':' => 43u32,
826				_ => return false,
827			},
828			37u32 => match token {
829				'0'..='9' | 'A'..='F' | 'a'..='f' => 44u32,
830				_ => return false,
831			},
832			38u32 => match token {
833				'0'..='9' | 'A'..='F' | 'a'..='f' => 28u32,
834				_ => return false,
835			},
836			39u32 => match token {
837				'!'
838				| '$'
839				| '&'..='.'
840				| ';'
841				| '='
842				| 'A'..='Z'
843				| '_'
844				| 'a'..='z'
845				| '~'
846				| '\u{a0}'..='\u{d7ff}'
847				| '豈'..='﷏'
848				| 'ﷰ'..='\u{ffef}'
849				| '𐀀'..='\u{1fffd}'
850				| '𠀀'..='\u{2fffd}'
851				| '𰀀'..='\u{3fffd}'
852				| '\u{40000}'..='\u{4fffd}'
853				| '\u{50000}'..='\u{5fffd}'
854				| '\u{60000}'..='\u{6fffd}'
855				| '\u{70000}'..='\u{7fffd}'
856				| '\u{80000}'..='\u{8fffd}'
857				| '\u{90000}'..='\u{9fffd}'
858				| '\u{a0000}'..='\u{afffd}'
859				| '\u{b0000}'..='\u{bfffd}'
860				| '\u{c0000}'..='\u{cfffd}'
861				| '\u{d0000}'..='\u{dfffd}'
862				| '\u{e1000}'..='\u{efffd}' => 28u32,
863				'#' => 4u32,
864				'%' => 29u32,
865				'/' => 3u32,
866				'0' => 193u32,
867				'1' => 194u32,
868				'2' => 195u32,
869				'3'..='9' => 196u32,
870				':' => 34u32,
871				'?' => 7u32,
872				_ => return false,
873			},
874			40u32 => match token {
875				'!'
876				| '$'
877				| '&'..='-'
878				| '6'..='9'
879				| ';'
880				| '='
881				| 'A'..='Z'
882				| '_'
883				| 'a'..='z'
884				| '~'
885				| '\u{a0}'..='\u{d7ff}'
886				| '豈'..='﷏'
887				| 'ﷰ'..='\u{ffef}'
888				| '𐀀'..='\u{1fffd}'
889				| '𠀀'..='\u{2fffd}'
890				| '𰀀'..='\u{3fffd}'
891				| '\u{40000}'..='\u{4fffd}'
892				| '\u{50000}'..='\u{5fffd}'
893				| '\u{60000}'..='\u{6fffd}'
894				| '\u{70000}'..='\u{7fffd}'
895				| '\u{80000}'..='\u{8fffd}'
896				| '\u{90000}'..='\u{9fffd}'
897				| '\u{a0000}'..='\u{afffd}'
898				| '\u{b0000}'..='\u{bfffd}'
899				| '\u{c0000}'..='\u{cfffd}'
900				| '\u{d0000}'..='\u{dfffd}'
901				| '\u{e1000}'..='\u{efffd}' => 28u32,
902				'#' => 4u32,
903				'%' => 29u32,
904				'.' => 39u32,
905				'/' => 3u32,
906				'0'..='5' => 30u32,
907				':' => 34u32,
908				'?' => 7u32,
909				_ => return false,
910			},
911			41u32 => match token {
912				'0'..='9' | 'A'..='F' | 'a'..='f' => 48u32,
913				':' => 42u32,
914				_ => return false,
915			},
916			42u32 => match token {
917				'0'..='9' | 'A'..='F' | 'a'..='f' => 49u32,
918				':' => 50u32,
919				_ => return false,
920			},
921			43u32 => match token {
922				'0' => 180u32,
923				'1' => 181u32,
924				'2' => 182u32,
925				'3'..='9' => 183u32,
926				'A'..='F' | 'a'..='f' => 184u32,
927				']' => 47u32,
928				_ => return false,
929			},
930			44u32 => match token {
931				'.' => 45u32,
932				'0'..='9' | 'A'..='F' | 'a'..='f' => 44u32,
933				_ => return false,
934			},
935			45u32 => match token {
936				'!' | '$' | '&'..='.' | '0'..=';' | '=' | 'A'..='Z' | '_' | 'a'..='z' | '~' => {
937					46u32
938				}
939				_ => return false,
940			},
941			46u32 => match token {
942				'!' | '$' | '&'..='.' | '0'..=';' | '=' | 'A'..='Z' | '_' | 'a'..='z' | '~' => {
943					46u32
944				}
945				']' => 47u32,
946				_ => return false,
947			},
948			47u32 => match token {
949				'#' => 4u32,
950				'/' => 3u32,
951				':' => 34u32,
952				'?' => 7u32,
953				_ => return false,
954			},
955			48u32 => match token {
956				'0'..='9' | 'A'..='F' | 'a'..='f' => 51u32,
957				':' => 42u32,
958				_ => return false,
959			},
960			49u32 => match token {
961				'0'..='9' | 'A'..='F' | 'a'..='f' => 52u32,
962				':' => 53u32,
963				_ => return false,
964			},
965			50u32 => match token {
966				'0' => 54u32,
967				'1' => 55u32,
968				'2' => 56u32,
969				'3'..='9' => 57u32,
970				'A'..='F' | 'a'..='f' => 58u32,
971				']' => 47u32,
972				_ => return false,
973			},
974			51u32 => match token {
975				':' => 42u32,
976				_ => return false,
977			},
978			52u32 => match token {
979				'0'..='9' | 'A'..='F' | 'a'..='f' => 59u32,
980				':' => 53u32,
981				_ => return false,
982			},
983			53u32 => match token {
984				'0'..='9' | 'A'..='F' | 'a'..='f' => 60u32,
985				':' => 61u32,
986				_ => return false,
987			},
988			54u32 => match token {
989				'.' => 111u32,
990				'0'..='9' | 'A'..='F' | 'a'..='f' => 172u32,
991				':' => 173u32,
992				']' => 47u32,
993				_ => return false,
994			},
995			55u32 => match token {
996				'.' => 111u32,
997				'0'..='9' => 174u32,
998				':' => 173u32,
999				'A'..='F' | 'a'..='f' => 172u32,
1000				']' => 47u32,
1001				_ => return false,
1002			},
1003			56u32 => match token {
1004				'.' => 111u32,
1005				'0'..='4' => 174u32,
1006				'5' => 175u32,
1007				'6'..='9' => 176u32,
1008				':' => 173u32,
1009				'A'..='F' | 'a'..='f' => 172u32,
1010				']' => 47u32,
1011				_ => return false,
1012			},
1013			57u32 => match token {
1014				'.' => 111u32,
1015				'0'..='9' => 176u32,
1016				':' => 173u32,
1017				'A'..='F' | 'a'..='f' => 172u32,
1018				']' => 47u32,
1019				_ => return false,
1020			},
1021			58u32 => match token {
1022				'0'..='9' | 'A'..='F' | 'a'..='f' => 172u32,
1023				':' => 173u32,
1024				']' => 47u32,
1025				_ => return false,
1026			},
1027			59u32 => match token {
1028				'0'..='9' | 'A'..='F' | 'a'..='f' => 62u32,
1029				':' => 53u32,
1030				_ => return false,
1031			},
1032			60u32 => match token {
1033				'0'..='9' | 'A'..='F' | 'a'..='f' => 63u32,
1034				':' => 64u32,
1035				_ => return false,
1036			},
1037			61u32 => match token {
1038				'0' => 65u32,
1039				'1' => 66u32,
1040				'2' => 67u32,
1041				'3'..='9' => 68u32,
1042				'A'..='F' | 'a'..='f' => 69u32,
1043				']' => 47u32,
1044				_ => return false,
1045			},
1046			62u32 => match token {
1047				':' => 53u32,
1048				_ => return false,
1049			},
1050			63u32 => match token {
1051				'0'..='9' | 'A'..='F' | 'a'..='f' => 70u32,
1052				':' => 64u32,
1053				_ => return false,
1054			},
1055			64u32 => match token {
1056				'0'..='9' | 'A'..='F' | 'a'..='f' => 71u32,
1057				':' => 72u32,
1058				_ => return false,
1059			},
1060			65u32 => match token {
1061				'.' => 111u32,
1062				'0'..='9' | 'A'..='F' | 'a'..='f' => 164u32,
1063				':' => 165u32,
1064				']' => 47u32,
1065				_ => return false,
1066			},
1067			66u32 => match token {
1068				'.' => 111u32,
1069				'0'..='9' => 166u32,
1070				':' => 165u32,
1071				'A'..='F' | 'a'..='f' => 164u32,
1072				']' => 47u32,
1073				_ => return false,
1074			},
1075			67u32 => match token {
1076				'.' => 111u32,
1077				'0'..='4' => 166u32,
1078				'5' => 167u32,
1079				'6'..='9' => 168u32,
1080				':' => 165u32,
1081				'A'..='F' | 'a'..='f' => 164u32,
1082				']' => 47u32,
1083				_ => return false,
1084			},
1085			68u32 => match token {
1086				'.' => 111u32,
1087				'0'..='9' => 168u32,
1088				':' => 165u32,
1089				'A'..='F' | 'a'..='f' => 164u32,
1090				']' => 47u32,
1091				_ => return false,
1092			},
1093			69u32 => match token {
1094				'0'..='9' | 'A'..='F' | 'a'..='f' => 164u32,
1095				':' => 165u32,
1096				']' => 47u32,
1097				_ => return false,
1098			},
1099			70u32 => match token {
1100				'0'..='9' | 'A'..='F' | 'a'..='f' => 73u32,
1101				':' => 64u32,
1102				_ => return false,
1103			},
1104			71u32 => match token {
1105				'0'..='9' | 'A'..='F' | 'a'..='f' => 74u32,
1106				':' => 75u32,
1107				_ => return false,
1108			},
1109			72u32 => match token {
1110				'0' => 76u32,
1111				'1' => 77u32,
1112				'2' => 78u32,
1113				'3'..='9' => 79u32,
1114				'A'..='F' | 'a'..='f' => 80u32,
1115				']' => 47u32,
1116				_ => return false,
1117			},
1118			73u32 => match token {
1119				':' => 64u32,
1120				_ => return false,
1121			},
1122			74u32 => match token {
1123				'0'..='9' | 'A'..='F' | 'a'..='f' => 81u32,
1124				':' => 75u32,
1125				_ => return false,
1126			},
1127			75u32 => match token {
1128				'0'..='9' | 'A'..='F' | 'a'..='f' => 82u32,
1129				':' => 83u32,
1130				_ => return false,
1131			},
1132			76u32 => match token {
1133				'.' => 111u32,
1134				'0'..='9' | 'A'..='F' | 'a'..='f' => 156u32,
1135				':' => 157u32,
1136				']' => 47u32,
1137				_ => return false,
1138			},
1139			77u32 => match token {
1140				'.' => 111u32,
1141				'0'..='9' => 158u32,
1142				':' => 157u32,
1143				'A'..='F' | 'a'..='f' => 156u32,
1144				']' => 47u32,
1145				_ => return false,
1146			},
1147			78u32 => match token {
1148				'.' => 111u32,
1149				'0'..='4' => 158u32,
1150				'5' => 159u32,
1151				'6'..='9' => 160u32,
1152				':' => 157u32,
1153				'A'..='F' | 'a'..='f' => 156u32,
1154				']' => 47u32,
1155				_ => return false,
1156			},
1157			79u32 => match token {
1158				'.' => 111u32,
1159				'0'..='9' => 160u32,
1160				':' => 157u32,
1161				'A'..='F' | 'a'..='f' => 156u32,
1162				']' => 47u32,
1163				_ => return false,
1164			},
1165			80u32 => match token {
1166				'0'..='9' | 'A'..='F' | 'a'..='f' => 156u32,
1167				':' => 157u32,
1168				']' => 47u32,
1169				_ => return false,
1170			},
1171			81u32 => match token {
1172				'0'..='9' | 'A'..='F' | 'a'..='f' => 84u32,
1173				':' => 75u32,
1174				_ => return false,
1175			},
1176			82u32 => match token {
1177				'0'..='9' | 'A'..='F' | 'a'..='f' => 85u32,
1178				':' => 86u32,
1179				_ => return false,
1180			},
1181			83u32 => match token {
1182				'0' => 87u32,
1183				'1' => 88u32,
1184				'2' => 89u32,
1185				'3'..='9' => 90u32,
1186				'A'..='F' | 'a'..='f' => 91u32,
1187				']' => 47u32,
1188				_ => return false,
1189			},
1190			84u32 => match token {
1191				':' => 75u32,
1192				_ => return false,
1193			},
1194			85u32 => match token {
1195				'0'..='9' | 'A'..='F' | 'a'..='f' => 92u32,
1196				':' => 86u32,
1197				_ => return false,
1198			},
1199			86u32 => match token {
1200				'0'..='9' | 'A'..='F' | 'a'..='f' => 93u32,
1201				':' => 94u32,
1202				_ => return false,
1203			},
1204			87u32 => match token {
1205				'.' => 111u32,
1206				'0'..='9' | 'A'..='F' | 'a'..='f' => 148u32,
1207				':' => 149u32,
1208				']' => 47u32,
1209				_ => return false,
1210			},
1211			88u32 => match token {
1212				'.' => 111u32,
1213				'0'..='9' => 150u32,
1214				':' => 149u32,
1215				'A'..='F' | 'a'..='f' => 148u32,
1216				']' => 47u32,
1217				_ => return false,
1218			},
1219			89u32 => match token {
1220				'.' => 111u32,
1221				'0'..='4' => 150u32,
1222				'5' => 151u32,
1223				'6'..='9' => 152u32,
1224				':' => 149u32,
1225				'A'..='F' | 'a'..='f' => 148u32,
1226				']' => 47u32,
1227				_ => return false,
1228			},
1229			90u32 => match token {
1230				'.' => 111u32,
1231				'0'..='9' => 152u32,
1232				':' => 149u32,
1233				'A'..='F' | 'a'..='f' => 148u32,
1234				']' => 47u32,
1235				_ => return false,
1236			},
1237			91u32 => match token {
1238				'0'..='9' | 'A'..='F' | 'a'..='f' => 148u32,
1239				':' => 149u32,
1240				']' => 47u32,
1241				_ => return false,
1242			},
1243			92u32 => match token {
1244				'0'..='9' | 'A'..='F' | 'a'..='f' => 95u32,
1245				':' => 86u32,
1246				_ => return false,
1247			},
1248			93u32 => match token {
1249				'0'..='9' | 'A'..='F' | 'a'..='f' => 96u32,
1250				':' => 97u32,
1251				_ => return false,
1252			},
1253			94u32 => match token {
1254				'0' => 98u32,
1255				'1' => 99u32,
1256				'2' => 100u32,
1257				'3'..='9' => 101u32,
1258				'A'..='F' | 'a'..='f' => 102u32,
1259				']' => 47u32,
1260				_ => return false,
1261			},
1262			95u32 => match token {
1263				':' => 86u32,
1264				_ => return false,
1265			},
1266			96u32 => match token {
1267				'0'..='9' | 'A'..='F' | 'a'..='f' => 103u32,
1268				':' => 97u32,
1269				_ => return false,
1270			},
1271			97u32 => match token {
1272				'0' => 104u32,
1273				'1' => 105u32,
1274				'2' => 106u32,
1275				'3'..='9' => 107u32,
1276				':' => 108u32,
1277				'A'..='F' | 'a'..='f' => 109u32,
1278				_ => return false,
1279			},
1280			98u32 => match token {
1281				'.' => 111u32,
1282				'0'..='9' | 'A'..='F' | 'a'..='f' => 140u32,
1283				':' => 141u32,
1284				']' => 47u32,
1285				_ => return false,
1286			},
1287			99u32 => match token {
1288				'.' => 111u32,
1289				'0'..='9' => 142u32,
1290				':' => 141u32,
1291				'A'..='F' | 'a'..='f' => 140u32,
1292				']' => 47u32,
1293				_ => return false,
1294			},
1295			100u32 => match token {
1296				'.' => 111u32,
1297				'0'..='4' => 142u32,
1298				'5' => 143u32,
1299				'6'..='9' => 144u32,
1300				':' => 141u32,
1301				'A'..='F' | 'a'..='f' => 140u32,
1302				']' => 47u32,
1303				_ => return false,
1304			},
1305			101u32 => match token {
1306				'.' => 111u32,
1307				'0'..='9' => 144u32,
1308				':' => 141u32,
1309				'A'..='F' | 'a'..='f' => 140u32,
1310				']' => 47u32,
1311				_ => return false,
1312			},
1313			102u32 => match token {
1314				'0'..='9' | 'A'..='F' | 'a'..='f' => 140u32,
1315				':' => 141u32,
1316				']' => 47u32,
1317				_ => return false,
1318			},
1319			103u32 => match token {
1320				'0'..='9' | 'A'..='F' | 'a'..='f' => 110u32,
1321				':' => 97u32,
1322				_ => return false,
1323			},
1324			104u32 => match token {
1325				'.' => 111u32,
1326				'0'..='9' | 'A'..='F' | 'a'..='f' => 112u32,
1327				':' => 113u32,
1328				_ => return false,
1329			},
1330			105u32 => match token {
1331				'.' => 111u32,
1332				'0'..='9' => 114u32,
1333				':' => 113u32,
1334				'A'..='F' | 'a'..='f' => 112u32,
1335				_ => return false,
1336			},
1337			106u32 => match token {
1338				'.' => 111u32,
1339				'0'..='4' => 114u32,
1340				'5' => 115u32,
1341				'6'..='9' => 116u32,
1342				':' => 113u32,
1343				'A'..='F' | 'a'..='f' => 112u32,
1344				_ => return false,
1345			},
1346			107u32 => match token {
1347				'.' => 111u32,
1348				'0'..='9' => 116u32,
1349				':' => 113u32,
1350				'A'..='F' | 'a'..='f' => 112u32,
1351				_ => return false,
1352			},
1353			108u32 => match token {
1354				'0'..='9' | 'A'..='F' | 'a'..='f' => 117u32,
1355				']' => 47u32,
1356				_ => return false,
1357			},
1358			109u32 => match token {
1359				'0'..='9' | 'A'..='F' | 'a'..='f' => 112u32,
1360				':' => 113u32,
1361				_ => return false,
1362			},
1363			110u32 => match token {
1364				':' => 97u32,
1365				_ => return false,
1366			},
1367			111u32 => match token {
1368				'0' => 123u32,
1369				'1' => 124u32,
1370				'2' => 125u32,
1371				'3'..='9' => 126u32,
1372				_ => return false,
1373			},
1374			112u32 => match token {
1375				'0'..='9' | 'A'..='F' | 'a'..='f' => 118u32,
1376				':' => 113u32,
1377				_ => return false,
1378			},
1379			113u32 => match token {
1380				'0'..='9' | 'A'..='F' | 'a'..='f' => 117u32,
1381				':' => 119u32,
1382				_ => return false,
1383			},
1384			114u32 => match token {
1385				'.' => 111u32,
1386				'0'..='9' => 139u32,
1387				':' => 113u32,
1388				'A'..='F' | 'a'..='f' => 118u32,
1389				_ => return false,
1390			},
1391			115u32 => match token {
1392				'.' => 111u32,
1393				'0'..='5' => 139u32,
1394				'6'..='9' | 'A'..='F' | 'a'..='f' => 118u32,
1395				':' => 113u32,
1396				_ => return false,
1397			},
1398			116u32 => match token {
1399				'.' => 111u32,
1400				'0'..='9' | 'A'..='F' | 'a'..='f' => 118u32,
1401				':' => 113u32,
1402				_ => return false,
1403			},
1404			117u32 => match token {
1405				'0'..='9' | 'A'..='F' | 'a'..='f' => 121u32,
1406				']' => 47u32,
1407				_ => return false,
1408			},
1409			118u32 => match token {
1410				'0'..='9' | 'A'..='F' | 'a'..='f' => 120u32,
1411				':' => 113u32,
1412				_ => return false,
1413			},
1414			119u32 => match token {
1415				']' => 47u32,
1416				_ => return false,
1417			},
1418			120u32 => match token {
1419				':' => 113u32,
1420				_ => return false,
1421			},
1422			121u32 => match token {
1423				'0'..='9' | 'A'..='F' | 'a'..='f' => 122u32,
1424				']' => 47u32,
1425				_ => return false,
1426			},
1427			122u32 => match token {
1428				'0'..='9' | 'A'..='F' | 'a'..='f' => 119u32,
1429				']' => 47u32,
1430				_ => return false,
1431			},
1432			123u32 => match token {
1433				'.' => 127u32,
1434				_ => return false,
1435			},
1436			124u32 => match token {
1437				'.' => 127u32,
1438				'0'..='9' => 126u32,
1439				_ => return false,
1440			},
1441			125u32 => match token {
1442				'.' => 127u32,
1443				'0'..='4' => 126u32,
1444				'5' => 128u32,
1445				'6'..='9' => 123u32,
1446				_ => return false,
1447			},
1448			126u32 => match token {
1449				'.' => 127u32,
1450				'0'..='9' => 123u32,
1451				_ => return false,
1452			},
1453			127u32 => match token {
1454				'0' => 129u32,
1455				'1' => 130u32,
1456				'2' => 131u32,
1457				'3'..='9' => 132u32,
1458				_ => return false,
1459			},
1460			128u32 => match token {
1461				'.' => 127u32,
1462				'0'..='5' => 123u32,
1463				_ => return false,
1464			},
1465			129u32 => match token {
1466				'.' => 133u32,
1467				_ => return false,
1468			},
1469			130u32 => match token {
1470				'.' => 133u32,
1471				'0'..='9' => 132u32,
1472				_ => return false,
1473			},
1474			131u32 => match token {
1475				'.' => 133u32,
1476				'0'..='4' => 132u32,
1477				'5' => 134u32,
1478				'6'..='9' => 129u32,
1479				_ => return false,
1480			},
1481			132u32 => match token {
1482				'.' => 133u32,
1483				'0'..='9' => 129u32,
1484				_ => return false,
1485			},
1486			133u32 => match token {
1487				'0' => 119u32,
1488				'1' => 135u32,
1489				'2' => 136u32,
1490				'3'..='9' => 137u32,
1491				_ => return false,
1492			},
1493			134u32 => match token {
1494				'.' => 133u32,
1495				'0'..='5' => 129u32,
1496				_ => return false,
1497			},
1498			135u32 => match token {
1499				'0'..='9' => 137u32,
1500				']' => 47u32,
1501				_ => return false,
1502			},
1503			136u32 => match token {
1504				'0'..='4' => 137u32,
1505				'5' => 138u32,
1506				'6'..='9' => 119u32,
1507				']' => 47u32,
1508				_ => return false,
1509			},
1510			137u32 => match token {
1511				'0'..='9' => 119u32,
1512				']' => 47u32,
1513				_ => return false,
1514			},
1515			138u32 => match token {
1516				'0'..='5' => 119u32,
1517				']' => 47u32,
1518				_ => return false,
1519			},
1520			139u32 => match token {
1521				'.' => 111u32,
1522				'0'..='9' | 'A'..='F' | 'a'..='f' => 120u32,
1523				':' => 113u32,
1524				_ => return false,
1525			},
1526			140u32 => match token {
1527				'0'..='9' | 'A'..='F' | 'a'..='f' => 145u32,
1528				':' => 141u32,
1529				']' => 47u32,
1530				_ => return false,
1531			},
1532			141u32 => match token {
1533				'0'..='9' | 'A'..='F' | 'a'..='f' => 117u32,
1534				_ => return false,
1535			},
1536			142u32 => match token {
1537				'.' => 111u32,
1538				'0'..='9' => 147u32,
1539				':' => 141u32,
1540				'A'..='F' | 'a'..='f' => 145u32,
1541				']' => 47u32,
1542				_ => return false,
1543			},
1544			143u32 => match token {
1545				'.' => 111u32,
1546				'0'..='5' => 147u32,
1547				'6'..='9' | 'A'..='F' | 'a'..='f' => 145u32,
1548				':' => 141u32,
1549				']' => 47u32,
1550				_ => return false,
1551			},
1552			144u32 => match token {
1553				'.' => 111u32,
1554				'0'..='9' | 'A'..='F' | 'a'..='f' => 145u32,
1555				':' => 141u32,
1556				']' => 47u32,
1557				_ => return false,
1558			},
1559			145u32 => match token {
1560				'0'..='9' | 'A'..='F' | 'a'..='f' => 146u32,
1561				':' => 141u32,
1562				']' => 47u32,
1563				_ => return false,
1564			},
1565			146u32 => match token {
1566				':' => 141u32,
1567				']' => 47u32,
1568				_ => return false,
1569			},
1570			147u32 => match token {
1571				'.' => 111u32,
1572				'0'..='9' | 'A'..='F' | 'a'..='f' => 146u32,
1573				':' => 141u32,
1574				']' => 47u32,
1575				_ => return false,
1576			},
1577			148u32 => match token {
1578				'0'..='9' | 'A'..='F' | 'a'..='f' => 153u32,
1579				':' => 149u32,
1580				']' => 47u32,
1581				_ => return false,
1582			},
1583			149u32 => match token {
1584				'0' => 98u32,
1585				'1' => 99u32,
1586				'2' => 100u32,
1587				'3'..='9' => 101u32,
1588				'A'..='F' | 'a'..='f' => 102u32,
1589				_ => return false,
1590			},
1591			150u32 => match token {
1592				'.' => 111u32,
1593				'0'..='9' => 155u32,
1594				':' => 149u32,
1595				'A'..='F' | 'a'..='f' => 153u32,
1596				']' => 47u32,
1597				_ => return false,
1598			},
1599			151u32 => match token {
1600				'.' => 111u32,
1601				'0'..='5' => 155u32,
1602				'6'..='9' | 'A'..='F' | 'a'..='f' => 153u32,
1603				':' => 149u32,
1604				']' => 47u32,
1605				_ => return false,
1606			},
1607			152u32 => match token {
1608				'.' => 111u32,
1609				'0'..='9' | 'A'..='F' | 'a'..='f' => 153u32,
1610				':' => 149u32,
1611				']' => 47u32,
1612				_ => return false,
1613			},
1614			153u32 => match token {
1615				'0'..='9' | 'A'..='F' | 'a'..='f' => 154u32,
1616				':' => 149u32,
1617				']' => 47u32,
1618				_ => return false,
1619			},
1620			154u32 => match token {
1621				':' => 149u32,
1622				']' => 47u32,
1623				_ => return false,
1624			},
1625			155u32 => match token {
1626				'.' => 111u32,
1627				'0'..='9' | 'A'..='F' | 'a'..='f' => 154u32,
1628				':' => 149u32,
1629				']' => 47u32,
1630				_ => return false,
1631			},
1632			156u32 => match token {
1633				'0'..='9' | 'A'..='F' | 'a'..='f' => 161u32,
1634				':' => 157u32,
1635				']' => 47u32,
1636				_ => return false,
1637			},
1638			157u32 => match token {
1639				'0' => 87u32,
1640				'1' => 88u32,
1641				'2' => 89u32,
1642				'3'..='9' => 90u32,
1643				'A'..='F' | 'a'..='f' => 91u32,
1644				_ => return false,
1645			},
1646			158u32 => match token {
1647				'.' => 111u32,
1648				'0'..='9' => 163u32,
1649				':' => 157u32,
1650				'A'..='F' | 'a'..='f' => 161u32,
1651				']' => 47u32,
1652				_ => return false,
1653			},
1654			159u32 => match token {
1655				'.' => 111u32,
1656				'0'..='5' => 163u32,
1657				'6'..='9' | 'A'..='F' | 'a'..='f' => 161u32,
1658				':' => 157u32,
1659				']' => 47u32,
1660				_ => return false,
1661			},
1662			160u32 => match token {
1663				'.' => 111u32,
1664				'0'..='9' | 'A'..='F' | 'a'..='f' => 161u32,
1665				':' => 157u32,
1666				']' => 47u32,
1667				_ => return false,
1668			},
1669			161u32 => match token {
1670				'0'..='9' | 'A'..='F' | 'a'..='f' => 162u32,
1671				':' => 157u32,
1672				']' => 47u32,
1673				_ => return false,
1674			},
1675			162u32 => match token {
1676				':' => 157u32,
1677				']' => 47u32,
1678				_ => return false,
1679			},
1680			163u32 => match token {
1681				'.' => 111u32,
1682				'0'..='9' | 'A'..='F' | 'a'..='f' => 162u32,
1683				':' => 157u32,
1684				']' => 47u32,
1685				_ => return false,
1686			},
1687			164u32 => match token {
1688				'0'..='9' | 'A'..='F' | 'a'..='f' => 169u32,
1689				':' => 165u32,
1690				']' => 47u32,
1691				_ => return false,
1692			},
1693			165u32 => match token {
1694				'0' => 76u32,
1695				'1' => 77u32,
1696				'2' => 78u32,
1697				'3'..='9' => 79u32,
1698				'A'..='F' | 'a'..='f' => 80u32,
1699				_ => return false,
1700			},
1701			166u32 => match token {
1702				'.' => 111u32,
1703				'0'..='9' => 171u32,
1704				':' => 165u32,
1705				'A'..='F' | 'a'..='f' => 169u32,
1706				']' => 47u32,
1707				_ => return false,
1708			},
1709			167u32 => match token {
1710				'.' => 111u32,
1711				'0'..='5' => 171u32,
1712				'6'..='9' | 'A'..='F' | 'a'..='f' => 169u32,
1713				':' => 165u32,
1714				']' => 47u32,
1715				_ => return false,
1716			},
1717			168u32 => match token {
1718				'.' => 111u32,
1719				'0'..='9' | 'A'..='F' | 'a'..='f' => 169u32,
1720				':' => 165u32,
1721				']' => 47u32,
1722				_ => return false,
1723			},
1724			169u32 => match token {
1725				'0'..='9' | 'A'..='F' | 'a'..='f' => 170u32,
1726				':' => 165u32,
1727				']' => 47u32,
1728				_ => return false,
1729			},
1730			170u32 => match token {
1731				':' => 165u32,
1732				']' => 47u32,
1733				_ => return false,
1734			},
1735			171u32 => match token {
1736				'.' => 111u32,
1737				'0'..='9' | 'A'..='F' | 'a'..='f' => 170u32,
1738				':' => 165u32,
1739				']' => 47u32,
1740				_ => return false,
1741			},
1742			172u32 => match token {
1743				'0'..='9' | 'A'..='F' | 'a'..='f' => 177u32,
1744				':' => 173u32,
1745				']' => 47u32,
1746				_ => return false,
1747			},
1748			173u32 => match token {
1749				'0' => 65u32,
1750				'1' => 66u32,
1751				'2' => 67u32,
1752				'3'..='9' => 68u32,
1753				'A'..='F' | 'a'..='f' => 69u32,
1754				_ => return false,
1755			},
1756			174u32 => match token {
1757				'.' => 111u32,
1758				'0'..='9' => 179u32,
1759				':' => 173u32,
1760				'A'..='F' | 'a'..='f' => 177u32,
1761				']' => 47u32,
1762				_ => return false,
1763			},
1764			175u32 => match token {
1765				'.' => 111u32,
1766				'0'..='5' => 179u32,
1767				'6'..='9' | 'A'..='F' | 'a'..='f' => 177u32,
1768				':' => 173u32,
1769				']' => 47u32,
1770				_ => return false,
1771			},
1772			176u32 => match token {
1773				'.' => 111u32,
1774				'0'..='9' | 'A'..='F' | 'a'..='f' => 177u32,
1775				':' => 173u32,
1776				']' => 47u32,
1777				_ => return false,
1778			},
1779			177u32 => match token {
1780				'0'..='9' | 'A'..='F' | 'a'..='f' => 178u32,
1781				':' => 173u32,
1782				']' => 47u32,
1783				_ => return false,
1784			},
1785			178u32 => match token {
1786				':' => 173u32,
1787				']' => 47u32,
1788				_ => return false,
1789			},
1790			179u32 => match token {
1791				'.' => 111u32,
1792				'0'..='9' | 'A'..='F' | 'a'..='f' => 178u32,
1793				':' => 173u32,
1794				']' => 47u32,
1795				_ => return false,
1796			},
1797			180u32 => match token {
1798				'.' => 111u32,
1799				'0'..='9' | 'A'..='F' | 'a'..='f' => 185u32,
1800				':' => 186u32,
1801				']' => 47u32,
1802				_ => return false,
1803			},
1804			181u32 => match token {
1805				'.' => 111u32,
1806				'0'..='9' => 187u32,
1807				':' => 186u32,
1808				'A'..='F' | 'a'..='f' => 185u32,
1809				']' => 47u32,
1810				_ => return false,
1811			},
1812			182u32 => match token {
1813				'.' => 111u32,
1814				'0'..='4' => 187u32,
1815				'5' => 188u32,
1816				'6'..='9' => 189u32,
1817				':' => 186u32,
1818				'A'..='F' | 'a'..='f' => 185u32,
1819				']' => 47u32,
1820				_ => return false,
1821			},
1822			183u32 => match token {
1823				'.' => 111u32,
1824				'0'..='9' => 189u32,
1825				':' => 186u32,
1826				'A'..='F' | 'a'..='f' => 185u32,
1827				']' => 47u32,
1828				_ => return false,
1829			},
1830			184u32 => match token {
1831				'0'..='9' | 'A'..='F' | 'a'..='f' => 185u32,
1832				':' => 186u32,
1833				']' => 47u32,
1834				_ => return false,
1835			},
1836			185u32 => match token {
1837				'0'..='9' | 'A'..='F' | 'a'..='f' => 190u32,
1838				':' => 186u32,
1839				']' => 47u32,
1840				_ => return false,
1841			},
1842			186u32 => match token {
1843				'0' => 54u32,
1844				'1' => 55u32,
1845				'2' => 56u32,
1846				'3'..='9' => 57u32,
1847				'A'..='F' | 'a'..='f' => 58u32,
1848				_ => return false,
1849			},
1850			187u32 => match token {
1851				'.' => 111u32,
1852				'0'..='9' => 192u32,
1853				':' => 186u32,
1854				'A'..='F' | 'a'..='f' => 190u32,
1855				']' => 47u32,
1856				_ => return false,
1857			},
1858			188u32 => match token {
1859				'.' => 111u32,
1860				'0'..='5' => 192u32,
1861				'6'..='9' | 'A'..='F' | 'a'..='f' => 190u32,
1862				':' => 186u32,
1863				']' => 47u32,
1864				_ => return false,
1865			},
1866			189u32 => match token {
1867				'.' => 111u32,
1868				'0'..='9' | 'A'..='F' | 'a'..='f' => 190u32,
1869				':' => 186u32,
1870				']' => 47u32,
1871				_ => return false,
1872			},
1873			190u32 => match token {
1874				'0'..='9' | 'A'..='F' | 'a'..='f' => 191u32,
1875				':' => 186u32,
1876				']' => 47u32,
1877				_ => return false,
1878			},
1879			191u32 => match token {
1880				':' => 186u32,
1881				']' => 47u32,
1882				_ => return false,
1883			},
1884			192u32 => match token {
1885				'.' => 111u32,
1886				'0'..='9' | 'A'..='F' | 'a'..='f' => 191u32,
1887				':' => 186u32,
1888				']' => 47u32,
1889				_ => return false,
1890			},
1891			193u32 => match token {
1892				'!'
1893				| '$'
1894				| '&'..='-'
1895				| '0'..='9'
1896				| ';'
1897				| '='
1898				| 'A'..='Z'
1899				| '_'
1900				| 'a'..='z'
1901				| '~'
1902				| '\u{a0}'..='\u{d7ff}'
1903				| '豈'..='﷏'
1904				| 'ﷰ'..='\u{ffef}'
1905				| '𐀀'..='\u{1fffd}'
1906				| '𠀀'..='\u{2fffd}'
1907				| '𰀀'..='\u{3fffd}'
1908				| '\u{40000}'..='\u{4fffd}'
1909				| '\u{50000}'..='\u{5fffd}'
1910				| '\u{60000}'..='\u{6fffd}'
1911				| '\u{70000}'..='\u{7fffd}'
1912				| '\u{80000}'..='\u{8fffd}'
1913				| '\u{90000}'..='\u{9fffd}'
1914				| '\u{a0000}'..='\u{afffd}'
1915				| '\u{b0000}'..='\u{bfffd}'
1916				| '\u{c0000}'..='\u{cfffd}'
1917				| '\u{d0000}'..='\u{dfffd}'
1918				| '\u{e1000}'..='\u{efffd}' => 28u32,
1919				'#' => 4u32,
1920				'%' => 29u32,
1921				'.' => 197u32,
1922				'/' => 3u32,
1923				':' => 34u32,
1924				'?' => 7u32,
1925				_ => return false,
1926			},
1927			194u32 => match token {
1928				'!'
1929				| '$'
1930				| '&'..='-'
1931				| ';'
1932				| '='
1933				| 'A'..='Z'
1934				| '_'
1935				| 'a'..='z'
1936				| '~'
1937				| '\u{a0}'..='\u{d7ff}'
1938				| '豈'..='﷏'
1939				| 'ﷰ'..='\u{ffef}'
1940				| '𐀀'..='\u{1fffd}'
1941				| '𠀀'..='\u{2fffd}'
1942				| '𰀀'..='\u{3fffd}'
1943				| '\u{40000}'..='\u{4fffd}'
1944				| '\u{50000}'..='\u{5fffd}'
1945				| '\u{60000}'..='\u{6fffd}'
1946				| '\u{70000}'..='\u{7fffd}'
1947				| '\u{80000}'..='\u{8fffd}'
1948				| '\u{90000}'..='\u{9fffd}'
1949				| '\u{a0000}'..='\u{afffd}'
1950				| '\u{b0000}'..='\u{bfffd}'
1951				| '\u{c0000}'..='\u{cfffd}'
1952				| '\u{d0000}'..='\u{dfffd}'
1953				| '\u{e1000}'..='\u{efffd}' => 28u32,
1954				'#' => 4u32,
1955				'%' => 29u32,
1956				'.' => 197u32,
1957				'/' => 3u32,
1958				'0'..='9' => 196u32,
1959				':' => 34u32,
1960				'?' => 7u32,
1961				_ => return false,
1962			},
1963			195u32 => match token {
1964				'!'
1965				| '$'
1966				| '&'..='-'
1967				| ';'
1968				| '='
1969				| 'A'..='Z'
1970				| '_'
1971				| 'a'..='z'
1972				| '~'
1973				| '\u{a0}'..='\u{d7ff}'
1974				| '豈'..='﷏'
1975				| 'ﷰ'..='\u{ffef}'
1976				| '𐀀'..='\u{1fffd}'
1977				| '𠀀'..='\u{2fffd}'
1978				| '𰀀'..='\u{3fffd}'
1979				| '\u{40000}'..='\u{4fffd}'
1980				| '\u{50000}'..='\u{5fffd}'
1981				| '\u{60000}'..='\u{6fffd}'
1982				| '\u{70000}'..='\u{7fffd}'
1983				| '\u{80000}'..='\u{8fffd}'
1984				| '\u{90000}'..='\u{9fffd}'
1985				| '\u{a0000}'..='\u{afffd}'
1986				| '\u{b0000}'..='\u{bfffd}'
1987				| '\u{c0000}'..='\u{cfffd}'
1988				| '\u{d0000}'..='\u{dfffd}'
1989				| '\u{e1000}'..='\u{efffd}' => 28u32,
1990				'#' => 4u32,
1991				'%' => 29u32,
1992				'.' => 197u32,
1993				'/' => 3u32,
1994				'0'..='4' => 196u32,
1995				'5' => 198u32,
1996				'6'..='9' => 193u32,
1997				':' => 34u32,
1998				'?' => 7u32,
1999				_ => return false,
2000			},
2001			196u32 => match token {
2002				'!'
2003				| '$'
2004				| '&'..='-'
2005				| ';'
2006				| '='
2007				| 'A'..='Z'
2008				| '_'
2009				| 'a'..='z'
2010				| '~'
2011				| '\u{a0}'..='\u{d7ff}'
2012				| '豈'..='﷏'
2013				| 'ﷰ'..='\u{ffef}'
2014				| '𐀀'..='\u{1fffd}'
2015				| '𠀀'..='\u{2fffd}'
2016				| '𰀀'..='\u{3fffd}'
2017				| '\u{40000}'..='\u{4fffd}'
2018				| '\u{50000}'..='\u{5fffd}'
2019				| '\u{60000}'..='\u{6fffd}'
2020				| '\u{70000}'..='\u{7fffd}'
2021				| '\u{80000}'..='\u{8fffd}'
2022				| '\u{90000}'..='\u{9fffd}'
2023				| '\u{a0000}'..='\u{afffd}'
2024				| '\u{b0000}'..='\u{bfffd}'
2025				| '\u{c0000}'..='\u{cfffd}'
2026				| '\u{d0000}'..='\u{dfffd}'
2027				| '\u{e1000}'..='\u{efffd}' => 28u32,
2028				'#' => 4u32,
2029				'%' => 29u32,
2030				'.' => 197u32,
2031				'/' => 3u32,
2032				'0'..='9' => 193u32,
2033				':' => 34u32,
2034				'?' => 7u32,
2035				_ => return false,
2036			},
2037			197u32 => match token {
2038				'!'
2039				| '$'
2040				| '&'..='.'
2041				| ';'
2042				| '='
2043				| 'A'..='Z'
2044				| '_'
2045				| 'a'..='z'
2046				| '~'
2047				| '\u{a0}'..='\u{d7ff}'
2048				| '豈'..='﷏'
2049				| 'ﷰ'..='\u{ffef}'
2050				| '𐀀'..='\u{1fffd}'
2051				| '𠀀'..='\u{2fffd}'
2052				| '𰀀'..='\u{3fffd}'
2053				| '\u{40000}'..='\u{4fffd}'
2054				| '\u{50000}'..='\u{5fffd}'
2055				| '\u{60000}'..='\u{6fffd}'
2056				| '\u{70000}'..='\u{7fffd}'
2057				| '\u{80000}'..='\u{8fffd}'
2058				| '\u{90000}'..='\u{9fffd}'
2059				| '\u{a0000}'..='\u{afffd}'
2060				| '\u{b0000}'..='\u{bfffd}'
2061				| '\u{c0000}'..='\u{cfffd}'
2062				| '\u{d0000}'..='\u{dfffd}'
2063				| '\u{e1000}'..='\u{efffd}' => 28u32,
2064				'#' => 4u32,
2065				'%' => 29u32,
2066				'/' => 3u32,
2067				'0' => 199u32,
2068				'1' => 200u32,
2069				'2' => 201u32,
2070				'3'..='9' => 202u32,
2071				':' => 34u32,
2072				'?' => 7u32,
2073				_ => return false,
2074			},
2075			198u32 => match token {
2076				'!'
2077				| '$'
2078				| '&'..='-'
2079				| '6'..='9'
2080				| ';'
2081				| '='
2082				| 'A'..='Z'
2083				| '_'
2084				| 'a'..='z'
2085				| '~'
2086				| '\u{a0}'..='\u{d7ff}'
2087				| '豈'..='﷏'
2088				| 'ﷰ'..='\u{ffef}'
2089				| '𐀀'..='\u{1fffd}'
2090				| '𠀀'..='\u{2fffd}'
2091				| '𰀀'..='\u{3fffd}'
2092				| '\u{40000}'..='\u{4fffd}'
2093				| '\u{50000}'..='\u{5fffd}'
2094				| '\u{60000}'..='\u{6fffd}'
2095				| '\u{70000}'..='\u{7fffd}'
2096				| '\u{80000}'..='\u{8fffd}'
2097				| '\u{90000}'..='\u{9fffd}'
2098				| '\u{a0000}'..='\u{afffd}'
2099				| '\u{b0000}'..='\u{bfffd}'
2100				| '\u{c0000}'..='\u{cfffd}'
2101				| '\u{d0000}'..='\u{dfffd}'
2102				| '\u{e1000}'..='\u{efffd}' => 28u32,
2103				'#' => 4u32,
2104				'%' => 29u32,
2105				'.' => 197u32,
2106				'/' => 3u32,
2107				'0'..='5' => 193u32,
2108				':' => 34u32,
2109				'?' => 7u32,
2110				_ => return false,
2111			},
2112			199u32 => match token {
2113				'!'
2114				| '$'
2115				| '&'..='-'
2116				| '0'..='9'
2117				| ';'
2118				| '='
2119				| 'A'..='Z'
2120				| '_'
2121				| 'a'..='z'
2122				| '~'
2123				| '\u{a0}'..='\u{d7ff}'
2124				| '豈'..='﷏'
2125				| 'ﷰ'..='\u{ffef}'
2126				| '𐀀'..='\u{1fffd}'
2127				| '𠀀'..='\u{2fffd}'
2128				| '𰀀'..='\u{3fffd}'
2129				| '\u{40000}'..='\u{4fffd}'
2130				| '\u{50000}'..='\u{5fffd}'
2131				| '\u{60000}'..='\u{6fffd}'
2132				| '\u{70000}'..='\u{7fffd}'
2133				| '\u{80000}'..='\u{8fffd}'
2134				| '\u{90000}'..='\u{9fffd}'
2135				| '\u{a0000}'..='\u{afffd}'
2136				| '\u{b0000}'..='\u{bfffd}'
2137				| '\u{c0000}'..='\u{cfffd}'
2138				| '\u{d0000}'..='\u{dfffd}'
2139				| '\u{e1000}'..='\u{efffd}' => 28u32,
2140				'#' => 4u32,
2141				'%' => 29u32,
2142				'.' => 203u32,
2143				'/' => 3u32,
2144				':' => 34u32,
2145				'?' => 7u32,
2146				_ => return false,
2147			},
2148			200u32 => match token {
2149				'!'
2150				| '$'
2151				| '&'..='-'
2152				| ';'
2153				| '='
2154				| 'A'..='Z'
2155				| '_'
2156				| 'a'..='z'
2157				| '~'
2158				| '\u{a0}'..='\u{d7ff}'
2159				| '豈'..='﷏'
2160				| 'ﷰ'..='\u{ffef}'
2161				| '𐀀'..='\u{1fffd}'
2162				| '𠀀'..='\u{2fffd}'
2163				| '𰀀'..='\u{3fffd}'
2164				| '\u{40000}'..='\u{4fffd}'
2165				| '\u{50000}'..='\u{5fffd}'
2166				| '\u{60000}'..='\u{6fffd}'
2167				| '\u{70000}'..='\u{7fffd}'
2168				| '\u{80000}'..='\u{8fffd}'
2169				| '\u{90000}'..='\u{9fffd}'
2170				| '\u{a0000}'..='\u{afffd}'
2171				| '\u{b0000}'..='\u{bfffd}'
2172				| '\u{c0000}'..='\u{cfffd}'
2173				| '\u{d0000}'..='\u{dfffd}'
2174				| '\u{e1000}'..='\u{efffd}' => 28u32,
2175				'#' => 4u32,
2176				'%' => 29u32,
2177				'.' => 203u32,
2178				'/' => 3u32,
2179				'0'..='9' => 202u32,
2180				':' => 34u32,
2181				'?' => 7u32,
2182				_ => return false,
2183			},
2184			201u32 => match token {
2185				'!'
2186				| '$'
2187				| '&'..='-'
2188				| ';'
2189				| '='
2190				| 'A'..='Z'
2191				| '_'
2192				| 'a'..='z'
2193				| '~'
2194				| '\u{a0}'..='\u{d7ff}'
2195				| '豈'..='﷏'
2196				| 'ﷰ'..='\u{ffef}'
2197				| '𐀀'..='\u{1fffd}'
2198				| '𠀀'..='\u{2fffd}'
2199				| '𰀀'..='\u{3fffd}'
2200				| '\u{40000}'..='\u{4fffd}'
2201				| '\u{50000}'..='\u{5fffd}'
2202				| '\u{60000}'..='\u{6fffd}'
2203				| '\u{70000}'..='\u{7fffd}'
2204				| '\u{80000}'..='\u{8fffd}'
2205				| '\u{90000}'..='\u{9fffd}'
2206				| '\u{a0000}'..='\u{afffd}'
2207				| '\u{b0000}'..='\u{bfffd}'
2208				| '\u{c0000}'..='\u{cfffd}'
2209				| '\u{d0000}'..='\u{dfffd}'
2210				| '\u{e1000}'..='\u{efffd}' => 28u32,
2211				'#' => 4u32,
2212				'%' => 29u32,
2213				'.' => 203u32,
2214				'/' => 3u32,
2215				'0'..='4' => 202u32,
2216				'5' => 204u32,
2217				'6'..='9' => 199u32,
2218				':' => 34u32,
2219				'?' => 7u32,
2220				_ => return false,
2221			},
2222			202u32 => match token {
2223				'!'
2224				| '$'
2225				| '&'..='-'
2226				| ';'
2227				| '='
2228				| 'A'..='Z'
2229				| '_'
2230				| 'a'..='z'
2231				| '~'
2232				| '\u{a0}'..='\u{d7ff}'
2233				| '豈'..='﷏'
2234				| 'ﷰ'..='\u{ffef}'
2235				| '𐀀'..='\u{1fffd}'
2236				| '𠀀'..='\u{2fffd}'
2237				| '𰀀'..='\u{3fffd}'
2238				| '\u{40000}'..='\u{4fffd}'
2239				| '\u{50000}'..='\u{5fffd}'
2240				| '\u{60000}'..='\u{6fffd}'
2241				| '\u{70000}'..='\u{7fffd}'
2242				| '\u{80000}'..='\u{8fffd}'
2243				| '\u{90000}'..='\u{9fffd}'
2244				| '\u{a0000}'..='\u{afffd}'
2245				| '\u{b0000}'..='\u{bfffd}'
2246				| '\u{c0000}'..='\u{cfffd}'
2247				| '\u{d0000}'..='\u{dfffd}'
2248				| '\u{e1000}'..='\u{efffd}' => 28u32,
2249				'#' => 4u32,
2250				'%' => 29u32,
2251				'.' => 203u32,
2252				'/' => 3u32,
2253				'0'..='9' => 199u32,
2254				':' => 34u32,
2255				'?' => 7u32,
2256				_ => return false,
2257			},
2258			203u32 => match token {
2259				'!'
2260				| '$'
2261				| '&'..='.'
2262				| '0'..='1'
2263				| '3'..='9'
2264				| ';'
2265				| '='
2266				| 'A'..='Z'
2267				| '_'
2268				| 'a'..='z'
2269				| '~'
2270				| '\u{a0}'..='\u{d7ff}'
2271				| '豈'..='﷏'
2272				| 'ﷰ'..='\u{ffef}'
2273				| '𐀀'..='\u{1fffd}'
2274				| '𠀀'..='\u{2fffd}'
2275				| '𰀀'..='\u{3fffd}'
2276				| '\u{40000}'..='\u{4fffd}'
2277				| '\u{50000}'..='\u{5fffd}'
2278				| '\u{60000}'..='\u{6fffd}'
2279				| '\u{70000}'..='\u{7fffd}'
2280				| '\u{80000}'..='\u{8fffd}'
2281				| '\u{90000}'..='\u{9fffd}'
2282				| '\u{a0000}'..='\u{afffd}'
2283				| '\u{b0000}'..='\u{bfffd}'
2284				| '\u{c0000}'..='\u{cfffd}'
2285				| '\u{d0000}'..='\u{dfffd}'
2286				| '\u{e1000}'..='\u{efffd}' => 28u32,
2287				'#' => 4u32,
2288				'%' => 29u32,
2289				'/' => 3u32,
2290				'2' => 205u32,
2291				':' => 34u32,
2292				'?' => 7u32,
2293				_ => return false,
2294			},
2295			204u32 => match token {
2296				'!'
2297				| '$'
2298				| '&'..='-'
2299				| '6'..='9'
2300				| ';'
2301				| '='
2302				| 'A'..='Z'
2303				| '_'
2304				| 'a'..='z'
2305				| '~'
2306				| '\u{a0}'..='\u{d7ff}'
2307				| '豈'..='﷏'
2308				| 'ﷰ'..='\u{ffef}'
2309				| '𐀀'..='\u{1fffd}'
2310				| '𠀀'..='\u{2fffd}'
2311				| '𰀀'..='\u{3fffd}'
2312				| '\u{40000}'..='\u{4fffd}'
2313				| '\u{50000}'..='\u{5fffd}'
2314				| '\u{60000}'..='\u{6fffd}'
2315				| '\u{70000}'..='\u{7fffd}'
2316				| '\u{80000}'..='\u{8fffd}'
2317				| '\u{90000}'..='\u{9fffd}'
2318				| '\u{a0000}'..='\u{afffd}'
2319				| '\u{b0000}'..='\u{bfffd}'
2320				| '\u{c0000}'..='\u{cfffd}'
2321				| '\u{d0000}'..='\u{dfffd}'
2322				| '\u{e1000}'..='\u{efffd}' => 28u32,
2323				'#' => 4u32,
2324				'%' => 29u32,
2325				'.' => 203u32,
2326				'/' => 3u32,
2327				'0'..='5' => 199u32,
2328				':' => 34u32,
2329				'?' => 7u32,
2330				_ => return false,
2331			},
2332			205u32 => match token {
2333				'!'
2334				| '$'
2335				| '&'..='.'
2336				| '0'..='4'
2337				| '6'..='9'
2338				| ';'
2339				| '='
2340				| 'A'..='Z'
2341				| '_'
2342				| 'a'..='z'
2343				| '~'
2344				| '\u{a0}'..='\u{d7ff}'
2345				| '豈'..='﷏'
2346				| 'ﷰ'..='\u{ffef}'
2347				| '𐀀'..='\u{1fffd}'
2348				| '𠀀'..='\u{2fffd}'
2349				| '𰀀'..='\u{3fffd}'
2350				| '\u{40000}'..='\u{4fffd}'
2351				| '\u{50000}'..='\u{5fffd}'
2352				| '\u{60000}'..='\u{6fffd}'
2353				| '\u{70000}'..='\u{7fffd}'
2354				| '\u{80000}'..='\u{8fffd}'
2355				| '\u{90000}'..='\u{9fffd}'
2356				| '\u{a0000}'..='\u{afffd}'
2357				| '\u{b0000}'..='\u{bfffd}'
2358				| '\u{c0000}'..='\u{cfffd}'
2359				| '\u{d0000}'..='\u{dfffd}'
2360				| '\u{e1000}'..='\u{efffd}' => 28u32,
2361				'#' => 4u32,
2362				'%' => 29u32,
2363				'/' => 3u32,
2364				'5' => 206u32,
2365				':' => 34u32,
2366				'?' => 7u32,
2367				_ => return false,
2368			},
2369			206u32 => match token {
2370				'!'
2371				| '$'
2372				| '&'..='.'
2373				| '0'..='9'
2374				| ';'
2375				| '='
2376				| 'A'..='Z'
2377				| '_'
2378				| 'a'..='z'
2379				| '~'
2380				| '\u{a0}'..='\u{d7ff}'
2381				| '豈'..='﷏'
2382				| 'ﷰ'..='\u{ffef}'
2383				| '𐀀'..='\u{1fffd}'
2384				| '𠀀'..='\u{2fffd}'
2385				| '𰀀'..='\u{3fffd}'
2386				| '\u{40000}'..='\u{4fffd}'
2387				| '\u{50000}'..='\u{5fffd}'
2388				| '\u{60000}'..='\u{6fffd}'
2389				| '\u{70000}'..='\u{7fffd}'
2390				| '\u{80000}'..='\u{8fffd}'
2391				| '\u{90000}'..='\u{9fffd}'
2392				| '\u{a0000}'..='\u{afffd}'
2393				| '\u{b0000}'..='\u{bfffd}'
2394				| '\u{c0000}'..='\u{cfffd}'
2395				| '\u{d0000}'..='\u{dfffd}'
2396				| '\u{e1000}'..='\u{efffd}' => 28u32,
2397				'#' => 4u32,
2398				'%' => 29u32,
2399				'/' => 3u32,
2400				':' => 34u32,
2401				'?' => 7u32,
2402				_ => return false,
2403			},
2404			207u32 => match token {
2405				'0'..='9' | 'A'..='F' | 'a'..='f' => 26u32,
2406				_ => return false,
2407			},
2408			208u32 => match token {
2409				'!'
2410				| '$'
2411				| '&'..='-'
2412				| '0'..='9'
2413				| ';'
2414				| '='
2415				| 'A'..='Z'
2416				| '_'
2417				| 'a'..='z'
2418				| '~'
2419				| '\u{a0}'..='\u{d7ff}'
2420				| '豈'..='﷏'
2421				| 'ﷰ'..='\u{ffef}'
2422				| '𐀀'..='\u{1fffd}'
2423				| '𠀀'..='\u{2fffd}'
2424				| '𰀀'..='\u{3fffd}'
2425				| '\u{40000}'..='\u{4fffd}'
2426				| '\u{50000}'..='\u{5fffd}'
2427				| '\u{60000}'..='\u{6fffd}'
2428				| '\u{70000}'..='\u{7fffd}'
2429				| '\u{80000}'..='\u{8fffd}'
2430				| '\u{90000}'..='\u{9fffd}'
2431				| '\u{a0000}'..='\u{afffd}'
2432				| '\u{b0000}'..='\u{bfffd}'
2433				| '\u{c0000}'..='\u{cfffd}'
2434				| '\u{d0000}'..='\u{dfffd}'
2435				| '\u{e1000}'..='\u{efffd}' => 14u32,
2436				'#' => 4u32,
2437				'%' => 15u32,
2438				'.' => 212u32,
2439				'/' => 3u32,
2440				':' => 20u32,
2441				'?' => 7u32,
2442				'@' => 21u32,
2443				_ => return false,
2444			},
2445			209u32 => match token {
2446				'!'
2447				| '$'
2448				| '&'..='-'
2449				| ';'
2450				| '='
2451				| 'A'..='Z'
2452				| '_'
2453				| 'a'..='z'
2454				| '~'
2455				| '\u{a0}'..='\u{d7ff}'
2456				| '豈'..='﷏'
2457				| 'ﷰ'..='\u{ffef}'
2458				| '𐀀'..='\u{1fffd}'
2459				| '𠀀'..='\u{2fffd}'
2460				| '𰀀'..='\u{3fffd}'
2461				| '\u{40000}'..='\u{4fffd}'
2462				| '\u{50000}'..='\u{5fffd}'
2463				| '\u{60000}'..='\u{6fffd}'
2464				| '\u{70000}'..='\u{7fffd}'
2465				| '\u{80000}'..='\u{8fffd}'
2466				| '\u{90000}'..='\u{9fffd}'
2467				| '\u{a0000}'..='\u{afffd}'
2468				| '\u{b0000}'..='\u{bfffd}'
2469				| '\u{c0000}'..='\u{cfffd}'
2470				| '\u{d0000}'..='\u{dfffd}'
2471				| '\u{e1000}'..='\u{efffd}' => 14u32,
2472				'#' => 4u32,
2473				'%' => 15u32,
2474				'.' => 212u32,
2475				'/' => 3u32,
2476				'0'..='9' => 211u32,
2477				':' => 20u32,
2478				'?' => 7u32,
2479				'@' => 21u32,
2480				_ => return false,
2481			},
2482			210u32 => match token {
2483				'!'
2484				| '$'
2485				| '&'..='-'
2486				| ';'
2487				| '='
2488				| 'A'..='Z'
2489				| '_'
2490				| 'a'..='z'
2491				| '~'
2492				| '\u{a0}'..='\u{d7ff}'
2493				| '豈'..='﷏'
2494				| 'ﷰ'..='\u{ffef}'
2495				| '𐀀'..='\u{1fffd}'
2496				| '𠀀'..='\u{2fffd}'
2497				| '𰀀'..='\u{3fffd}'
2498				| '\u{40000}'..='\u{4fffd}'
2499				| '\u{50000}'..='\u{5fffd}'
2500				| '\u{60000}'..='\u{6fffd}'
2501				| '\u{70000}'..='\u{7fffd}'
2502				| '\u{80000}'..='\u{8fffd}'
2503				| '\u{90000}'..='\u{9fffd}'
2504				| '\u{a0000}'..='\u{afffd}'
2505				| '\u{b0000}'..='\u{bfffd}'
2506				| '\u{c0000}'..='\u{cfffd}'
2507				| '\u{d0000}'..='\u{dfffd}'
2508				| '\u{e1000}'..='\u{efffd}' => 14u32,
2509				'#' => 4u32,
2510				'%' => 15u32,
2511				'.' => 212u32,
2512				'/' => 3u32,
2513				'0'..='4' => 211u32,
2514				'5' => 213u32,
2515				'6'..='9' => 208u32,
2516				':' => 20u32,
2517				'?' => 7u32,
2518				'@' => 21u32,
2519				_ => return false,
2520			},
2521			211u32 => match token {
2522				'!'
2523				| '$'
2524				| '&'..='-'
2525				| ';'
2526				| '='
2527				| 'A'..='Z'
2528				| '_'
2529				| 'a'..='z'
2530				| '~'
2531				| '\u{a0}'..='\u{d7ff}'
2532				| '豈'..='﷏'
2533				| 'ﷰ'..='\u{ffef}'
2534				| '𐀀'..='\u{1fffd}'
2535				| '𠀀'..='\u{2fffd}'
2536				| '𰀀'..='\u{3fffd}'
2537				| '\u{40000}'..='\u{4fffd}'
2538				| '\u{50000}'..='\u{5fffd}'
2539				| '\u{60000}'..='\u{6fffd}'
2540				| '\u{70000}'..='\u{7fffd}'
2541				| '\u{80000}'..='\u{8fffd}'
2542				| '\u{90000}'..='\u{9fffd}'
2543				| '\u{a0000}'..='\u{afffd}'
2544				| '\u{b0000}'..='\u{bfffd}'
2545				| '\u{c0000}'..='\u{cfffd}'
2546				| '\u{d0000}'..='\u{dfffd}'
2547				| '\u{e1000}'..='\u{efffd}' => 14u32,
2548				'#' => 4u32,
2549				'%' => 15u32,
2550				'.' => 212u32,
2551				'/' => 3u32,
2552				'0'..='9' => 208u32,
2553				':' => 20u32,
2554				'?' => 7u32,
2555				'@' => 21u32,
2556				_ => return false,
2557			},
2558			212u32 => match token {
2559				'!'
2560				| '$'
2561				| '&'..='.'
2562				| ';'
2563				| '='
2564				| 'A'..='Z'
2565				| '_'
2566				| 'a'..='z'
2567				| '~'
2568				| '\u{a0}'..='\u{d7ff}'
2569				| '豈'..='﷏'
2570				| 'ﷰ'..='\u{ffef}'
2571				| '𐀀'..='\u{1fffd}'
2572				| '𠀀'..='\u{2fffd}'
2573				| '𰀀'..='\u{3fffd}'
2574				| '\u{40000}'..='\u{4fffd}'
2575				| '\u{50000}'..='\u{5fffd}'
2576				| '\u{60000}'..='\u{6fffd}'
2577				| '\u{70000}'..='\u{7fffd}'
2578				| '\u{80000}'..='\u{8fffd}'
2579				| '\u{90000}'..='\u{9fffd}'
2580				| '\u{a0000}'..='\u{afffd}'
2581				| '\u{b0000}'..='\u{bfffd}'
2582				| '\u{c0000}'..='\u{cfffd}'
2583				| '\u{d0000}'..='\u{dfffd}'
2584				| '\u{e1000}'..='\u{efffd}' => 14u32,
2585				'#' => 4u32,
2586				'%' => 15u32,
2587				'/' => 3u32,
2588				'0' => 214u32,
2589				'1' => 215u32,
2590				'2' => 216u32,
2591				'3'..='9' => 217u32,
2592				':' => 20u32,
2593				'?' => 7u32,
2594				'@' => 21u32,
2595				_ => return false,
2596			},
2597			213u32 => match token {
2598				'!'
2599				| '$'
2600				| '&'..='-'
2601				| '6'..='9'
2602				| ';'
2603				| '='
2604				| 'A'..='Z'
2605				| '_'
2606				| 'a'..='z'
2607				| '~'
2608				| '\u{a0}'..='\u{d7ff}'
2609				| '豈'..='﷏'
2610				| 'ﷰ'..='\u{ffef}'
2611				| '𐀀'..='\u{1fffd}'
2612				| '𠀀'..='\u{2fffd}'
2613				| '𰀀'..='\u{3fffd}'
2614				| '\u{40000}'..='\u{4fffd}'
2615				| '\u{50000}'..='\u{5fffd}'
2616				| '\u{60000}'..='\u{6fffd}'
2617				| '\u{70000}'..='\u{7fffd}'
2618				| '\u{80000}'..='\u{8fffd}'
2619				| '\u{90000}'..='\u{9fffd}'
2620				| '\u{a0000}'..='\u{afffd}'
2621				| '\u{b0000}'..='\u{bfffd}'
2622				| '\u{c0000}'..='\u{cfffd}'
2623				| '\u{d0000}'..='\u{dfffd}'
2624				| '\u{e1000}'..='\u{efffd}' => 14u32,
2625				'#' => 4u32,
2626				'%' => 15u32,
2627				'.' => 212u32,
2628				'/' => 3u32,
2629				'0'..='5' => 208u32,
2630				':' => 20u32,
2631				'?' => 7u32,
2632				'@' => 21u32,
2633				_ => return false,
2634			},
2635			214u32 => match token {
2636				'!'
2637				| '$'
2638				| '&'..='-'
2639				| '0'..='9'
2640				| ';'
2641				| '='
2642				| 'A'..='Z'
2643				| '_'
2644				| 'a'..='z'
2645				| '~'
2646				| '\u{a0}'..='\u{d7ff}'
2647				| '豈'..='﷏'
2648				| 'ﷰ'..='\u{ffef}'
2649				| '𐀀'..='\u{1fffd}'
2650				| '𠀀'..='\u{2fffd}'
2651				| '𰀀'..='\u{3fffd}'
2652				| '\u{40000}'..='\u{4fffd}'
2653				| '\u{50000}'..='\u{5fffd}'
2654				| '\u{60000}'..='\u{6fffd}'
2655				| '\u{70000}'..='\u{7fffd}'
2656				| '\u{80000}'..='\u{8fffd}'
2657				| '\u{90000}'..='\u{9fffd}'
2658				| '\u{a0000}'..='\u{afffd}'
2659				| '\u{b0000}'..='\u{bfffd}'
2660				| '\u{c0000}'..='\u{cfffd}'
2661				| '\u{d0000}'..='\u{dfffd}'
2662				| '\u{e1000}'..='\u{efffd}' => 14u32,
2663				'#' => 4u32,
2664				'%' => 15u32,
2665				'.' => 218u32,
2666				'/' => 3u32,
2667				':' => 20u32,
2668				'?' => 7u32,
2669				'@' => 21u32,
2670				_ => return false,
2671			},
2672			215u32 => match token {
2673				'!'
2674				| '$'
2675				| '&'..='-'
2676				| ';'
2677				| '='
2678				| 'A'..='Z'
2679				| '_'
2680				| 'a'..='z'
2681				| '~'
2682				| '\u{a0}'..='\u{d7ff}'
2683				| '豈'..='﷏'
2684				| 'ﷰ'..='\u{ffef}'
2685				| '𐀀'..='\u{1fffd}'
2686				| '𠀀'..='\u{2fffd}'
2687				| '𰀀'..='\u{3fffd}'
2688				| '\u{40000}'..='\u{4fffd}'
2689				| '\u{50000}'..='\u{5fffd}'
2690				| '\u{60000}'..='\u{6fffd}'
2691				| '\u{70000}'..='\u{7fffd}'
2692				| '\u{80000}'..='\u{8fffd}'
2693				| '\u{90000}'..='\u{9fffd}'
2694				| '\u{a0000}'..='\u{afffd}'
2695				| '\u{b0000}'..='\u{bfffd}'
2696				| '\u{c0000}'..='\u{cfffd}'
2697				| '\u{d0000}'..='\u{dfffd}'
2698				| '\u{e1000}'..='\u{efffd}' => 14u32,
2699				'#' => 4u32,
2700				'%' => 15u32,
2701				'.' => 218u32,
2702				'/' => 3u32,
2703				'0'..='9' => 217u32,
2704				':' => 20u32,
2705				'?' => 7u32,
2706				'@' => 21u32,
2707				_ => return false,
2708			},
2709			216u32 => match token {
2710				'!'
2711				| '$'
2712				| '&'..='-'
2713				| ';'
2714				| '='
2715				| 'A'..='Z'
2716				| '_'
2717				| 'a'..='z'
2718				| '~'
2719				| '\u{a0}'..='\u{d7ff}'
2720				| '豈'..='﷏'
2721				| 'ﷰ'..='\u{ffef}'
2722				| '𐀀'..='\u{1fffd}'
2723				| '𠀀'..='\u{2fffd}'
2724				| '𰀀'..='\u{3fffd}'
2725				| '\u{40000}'..='\u{4fffd}'
2726				| '\u{50000}'..='\u{5fffd}'
2727				| '\u{60000}'..='\u{6fffd}'
2728				| '\u{70000}'..='\u{7fffd}'
2729				| '\u{80000}'..='\u{8fffd}'
2730				| '\u{90000}'..='\u{9fffd}'
2731				| '\u{a0000}'..='\u{afffd}'
2732				| '\u{b0000}'..='\u{bfffd}'
2733				| '\u{c0000}'..='\u{cfffd}'
2734				| '\u{d0000}'..='\u{dfffd}'
2735				| '\u{e1000}'..='\u{efffd}' => 14u32,
2736				'#' => 4u32,
2737				'%' => 15u32,
2738				'.' => 218u32,
2739				'/' => 3u32,
2740				'0'..='4' => 217u32,
2741				'5' => 219u32,
2742				'6'..='9' => 214u32,
2743				':' => 20u32,
2744				'?' => 7u32,
2745				'@' => 21u32,
2746				_ => return false,
2747			},
2748			217u32 => match token {
2749				'!'
2750				| '$'
2751				| '&'..='-'
2752				| ';'
2753				| '='
2754				| 'A'..='Z'
2755				| '_'
2756				| 'a'..='z'
2757				| '~'
2758				| '\u{a0}'..='\u{d7ff}'
2759				| '豈'..='﷏'
2760				| 'ﷰ'..='\u{ffef}'
2761				| '𐀀'..='\u{1fffd}'
2762				| '𠀀'..='\u{2fffd}'
2763				| '𰀀'..='\u{3fffd}'
2764				| '\u{40000}'..='\u{4fffd}'
2765				| '\u{50000}'..='\u{5fffd}'
2766				| '\u{60000}'..='\u{6fffd}'
2767				| '\u{70000}'..='\u{7fffd}'
2768				| '\u{80000}'..='\u{8fffd}'
2769				| '\u{90000}'..='\u{9fffd}'
2770				| '\u{a0000}'..='\u{afffd}'
2771				| '\u{b0000}'..='\u{bfffd}'
2772				| '\u{c0000}'..='\u{cfffd}'
2773				| '\u{d0000}'..='\u{dfffd}'
2774				| '\u{e1000}'..='\u{efffd}' => 14u32,
2775				'#' => 4u32,
2776				'%' => 15u32,
2777				'.' => 218u32,
2778				'/' => 3u32,
2779				'0'..='9' => 214u32,
2780				':' => 20u32,
2781				'?' => 7u32,
2782				'@' => 21u32,
2783				_ => return false,
2784			},
2785			218u32 => match token {
2786				'!'
2787				| '$'
2788				| '&'..='.'
2789				| '0'..='1'
2790				| '3'..='9'
2791				| ';'
2792				| '='
2793				| 'A'..='Z'
2794				| '_'
2795				| 'a'..='z'
2796				| '~'
2797				| '\u{a0}'..='\u{d7ff}'
2798				| '豈'..='﷏'
2799				| 'ﷰ'..='\u{ffef}'
2800				| '𐀀'..='\u{1fffd}'
2801				| '𠀀'..='\u{2fffd}'
2802				| '𰀀'..='\u{3fffd}'
2803				| '\u{40000}'..='\u{4fffd}'
2804				| '\u{50000}'..='\u{5fffd}'
2805				| '\u{60000}'..='\u{6fffd}'
2806				| '\u{70000}'..='\u{7fffd}'
2807				| '\u{80000}'..='\u{8fffd}'
2808				| '\u{90000}'..='\u{9fffd}'
2809				| '\u{a0000}'..='\u{afffd}'
2810				| '\u{b0000}'..='\u{bfffd}'
2811				| '\u{c0000}'..='\u{cfffd}'
2812				| '\u{d0000}'..='\u{dfffd}'
2813				| '\u{e1000}'..='\u{efffd}' => 14u32,
2814				'#' => 4u32,
2815				'%' => 15u32,
2816				'/' => 3u32,
2817				'2' => 220u32,
2818				':' => 20u32,
2819				'?' => 7u32,
2820				'@' => 21u32,
2821				_ => return false,
2822			},
2823			219u32 => match token {
2824				'!'
2825				| '$'
2826				| '&'..='-'
2827				| '6'..='9'
2828				| ';'
2829				| '='
2830				| 'A'..='Z'
2831				| '_'
2832				| 'a'..='z'
2833				| '~'
2834				| '\u{a0}'..='\u{d7ff}'
2835				| '豈'..='﷏'
2836				| 'ﷰ'..='\u{ffef}'
2837				| '𐀀'..='\u{1fffd}'
2838				| '𠀀'..='\u{2fffd}'
2839				| '𰀀'..='\u{3fffd}'
2840				| '\u{40000}'..='\u{4fffd}'
2841				| '\u{50000}'..='\u{5fffd}'
2842				| '\u{60000}'..='\u{6fffd}'
2843				| '\u{70000}'..='\u{7fffd}'
2844				| '\u{80000}'..='\u{8fffd}'
2845				| '\u{90000}'..='\u{9fffd}'
2846				| '\u{a0000}'..='\u{afffd}'
2847				| '\u{b0000}'..='\u{bfffd}'
2848				| '\u{c0000}'..='\u{cfffd}'
2849				| '\u{d0000}'..='\u{dfffd}'
2850				| '\u{e1000}'..='\u{efffd}' => 14u32,
2851				'#' => 4u32,
2852				'%' => 15u32,
2853				'.' => 218u32,
2854				'/' => 3u32,
2855				'0'..='5' => 214u32,
2856				':' => 20u32,
2857				'?' => 7u32,
2858				'@' => 21u32,
2859				_ => return false,
2860			},
2861			220u32 => match token {
2862				'!'
2863				| '$'
2864				| '&'..='.'
2865				| '0'..='4'
2866				| '6'..='9'
2867				| ';'
2868				| '='
2869				| 'A'..='Z'
2870				| '_'
2871				| 'a'..='z'
2872				| '~'
2873				| '\u{a0}'..='\u{d7ff}'
2874				| '豈'..='﷏'
2875				| 'ﷰ'..='\u{ffef}'
2876				| '𐀀'..='\u{1fffd}'
2877				| '𠀀'..='\u{2fffd}'
2878				| '𰀀'..='\u{3fffd}'
2879				| '\u{40000}'..='\u{4fffd}'
2880				| '\u{50000}'..='\u{5fffd}'
2881				| '\u{60000}'..='\u{6fffd}'
2882				| '\u{70000}'..='\u{7fffd}'
2883				| '\u{80000}'..='\u{8fffd}'
2884				| '\u{90000}'..='\u{9fffd}'
2885				| '\u{a0000}'..='\u{afffd}'
2886				| '\u{b0000}'..='\u{bfffd}'
2887				| '\u{c0000}'..='\u{cfffd}'
2888				| '\u{d0000}'..='\u{dfffd}'
2889				| '\u{e1000}'..='\u{efffd}' => 14u32,
2890				'#' => 4u32,
2891				'%' => 15u32,
2892				'/' => 3u32,
2893				'5' => 221u32,
2894				':' => 20u32,
2895				'?' => 7u32,
2896				'@' => 21u32,
2897				_ => return false,
2898			},
2899			221u32 => match token {
2900				'!'
2901				| '$'
2902				| '&'..='.'
2903				| '0'..='9'
2904				| ';'
2905				| '='
2906				| 'A'..='Z'
2907				| '_'
2908				| 'a'..='z'
2909				| '~'
2910				| '\u{a0}'..='\u{d7ff}'
2911				| '豈'..='﷏'
2912				| 'ﷰ'..='\u{ffef}'
2913				| '𐀀'..='\u{1fffd}'
2914				| '𠀀'..='\u{2fffd}'
2915				| '𰀀'..='\u{3fffd}'
2916				| '\u{40000}'..='\u{4fffd}'
2917				| '\u{50000}'..='\u{5fffd}'
2918				| '\u{60000}'..='\u{6fffd}'
2919				| '\u{70000}'..='\u{7fffd}'
2920				| '\u{80000}'..='\u{8fffd}'
2921				| '\u{90000}'..='\u{9fffd}'
2922				| '\u{a0000}'..='\u{afffd}'
2923				| '\u{b0000}'..='\u{bfffd}'
2924				| '\u{c0000}'..='\u{cfffd}'
2925				| '\u{d0000}'..='\u{dfffd}'
2926				| '\u{e1000}'..='\u{efffd}' => 14u32,
2927				'#' => 4u32,
2928				'%' => 15u32,
2929				'/' => 3u32,
2930				':' => 20u32,
2931				'?' => 7u32,
2932				'@' => 21u32,
2933				_ => return false,
2934			},
2935			_ => unreachable!(),
2936		};
2937		true
2938	}
2939	pub const fn is_accepting(&self) -> bool {
2940		matches!(
2941			self.state,
2942			2u32 | 3u32
2943				| 4u32 | 6u32
2944				| 7u32 | 10u32
2945				| 14u32 | 16u32
2946				| 17u32 | 18u32
2947				| 19u32 | 20u32
2948				| 21u32 | 24u32
2949				| 25u32 | 28u32
2950				| 30u32 | 31u32
2951				| 32u32 | 33u32
2952				| 34u32 | 39u32
2953				| 40u32 | 47u32
2954				| 193u32 | 194u32
2955				| 195u32 | 196u32
2956				| 197u32 | 198u32
2957				| 199u32 | 200u32
2958				| 201u32 | 202u32
2959				| 203u32 | 204u32
2960				| 205u32 | 206u32
2961				| 208u32 | 209u32
2962				| 210u32 | 211u32
2963				| 212u32 | 213u32
2964				| 214u32 | 215u32
2965				| 216u32 | 217u32
2966				| 218u32 | 219u32
2967				| 220u32 | 221u32
2968		)
2969	}
2970	pub const fn validate_str(s: &str) -> bool {
2971		Self::validate_bytes(s.as_bytes())
2972	}
2973	pub const fn validate_bytes(bytes: &[u8]) -> bool {
2974		let mut i = 0;
2975		let mut automaton = Self::new();
2976		while i < bytes.len() {
2977			match ::static_automata::decode_utf8_char(bytes, i) {
2978				Ok((c, len)) => {
2979					if !automaton.push(c) {
2980						return false;
2981					}
2982					i += len;
2983				}
2984				Err(_) => return false,
2985			}
2986		}
2987		automaton.is_accepting()
2988	}
2989}