pax_global_header00006660000000000000000000000064134061435150014514gustar00rootroot0000000000000052 comment=0cd00a9f0a5e5607d5ef9a294c260f77a74e3b5a go-syslog-2.0.0/000077500000000000000000000000001340614351500134365ustar00rootroot00000000000000go-syslog-2.0.0/.circleci/000077500000000000000000000000001340614351500152715ustar00rootroot00000000000000go-syslog-2.0.0/.circleci/config.yml000066400000000000000000000016461340614351500172700ustar00rootroot00000000000000version: 2 jobs: test: docker: - image: circleci/golang:1.11 environment: GOCACHE: /tmp/go-cache GOFLAGS: "-mod=readonly -p=4" working_directory: "/go/src/github.com/influxdata/go-syslog" steps: - checkout - restore_cache: name: Restoring caches keys: - go-syslog-gocache-{{ .Branch }}-{{ .Revision }} - go-syslog-modules-{{ checksum "go.sum" }} - run: make GO_ARGS="-timeout 20s -coverprofile cover.out -race -v" tests - save_cache: name: Caching GOCACHE key: go-syslog-gocache-{{ .Branch }}-{{ .Revision }} paths: - /tmp/go-cache when: always - save_cache: name: Caching modules key: go-syslog-modules-{{ checksum "go.sum" }} paths: - /go/pkg/mod when: always workflows: version: 2 testing: jobs: - testgo-syslog-2.0.0/.gitignore000066400000000000000000000000561340614351500154270ustar00rootroot00000000000000debug.test docs/*.png .vscode/ *.out *.htmlgo-syslog-2.0.0/LICENSE000066400000000000000000000020641340614351500144450ustar00rootroot00000000000000The MIT License Copyright (c) 2018, InfluxData Inc. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.go-syslog-2.0.0/README.md000066400000000000000000000214641340614351500147240ustar00rootroot00000000000000[![MIT License](http://img.shields.io/badge/license-MIT-blue.svg?style=for-the-badge)](LICENSE) **A parser for syslog messages**. > [Blazing fast](#Performances) RFC5424-compliant parsers To wrap up, this package provides: - a RFC5424-compliant parser - a RFC5424-compliant builder - a parser which works on streams for syslog with [octet counting](https://tools.ietf.org/html/rfc5425#section-4.3) framing technique - a parser which works on streams for syslog with [non-transparent](https://tools.ietf.org/html/rfc6587#section-3.4.2) framing technique This library provides the pieces to parse syslog messages transported following various RFCs. For example: - TLS with octet count ([RFC5425](https://tools.ietf.org/html/rfc5425)) - TCP with non-transparent framing or with octet count ([RFC 6587](https://tools.ietf.org/html/rfc6587)) - UDP carrying one message per packet ([RFC5426](https://tools.ietf.org/html/rfc5426)) ## Installation ``` go get github.com/influxdata/go-syslog ``` ## Docs [![Documentation](https://img.shields.io/badge/godoc-reference-blue.svg?style=for-the-badge)](http://godoc.org/github.com/influxdata/go-syslog) The [docs](docs/) directory contains `.dot` files representing the FSM parts of a [RFC5424](https://tools.ietf.org/html/rfc5424) syslog message and also the ones representing the other transport parsers. ## Usage Suppose you want to parse a given sequence of bytes as a RFC5424 message. ```go i := []byte(`<165>4 2018-10-11T22:14:15.003Z mymach.it e - 1 [ex@32473 iut="3"] An application event log entry...`) p := rfc5424.NewParser() m, e := p.Parse(i, nil) ``` This results in `m` being equal to: ```go // (*rfc5424.SyslogMessage)({ // priority: (*uint8)(165), // facility: (*uint8)(20), // severity: (*uint8)(5), // version: (uint16) 4, // timestamp: (*time.Time)(2018-10-11 22:14:15.003 +0000 UTC), // hostname: (*string)((len=9) "mymach.it"), // appname: (*string)((len=1) "e"), // procID: (*string)(), // msgID: (*string)((len=1) "1"), // structuredData: (*map[string]map[string]string)((len=1) { // (string) (len=8) "ex@32473": (map[string]string) (len=1) { // (string) (len=3) "iut": (string) (len=1) "3" // } // }), // message: (*string)((len=33) "An application event log entry...") // }) ``` And `e` being equal to `nil`, since the `i` is a perfectly valid RFC5424 message. ### Best effort mode RFC5424 parser has the ability to perform partial matches (until it can). With this mode enabled, when the parsing process errors out it returns the message collected until that position, and the error that caused the parser to stop. Notice that in this modality the output is returned _iff_ it represents a minimally valid message - ie., a message containing almost a priority field in `[1,191]` within angular brackets, followed by a version in `]0,999]`. Let's look at an example. ```go bestEffortOn := true i := []byte("<1>1 A - - - - - -") p := NewParser() m, e := p.Parse(i, &bestEffortOn) ``` This results in `m` being equal to the following `SyslogMessage` instance. ```go // (*rfc5424.SyslogMessage)({ // priority: (*uint8)(1), // facility: (*uint8)(0), // severity: (*uint8)(1), // version: (uint16) 1, // timestamp: (*time.Time)(), // hostname: (*string)(), // appname: (*string)(), // procID: (*string)(), // msgID: (*string)(), // structuredData: (*map[string]map[string]string)(), // message: (*string)() // }) ``` And, at the same time, in `e` reporting the error that actually stopped the parser. ```go expecting a RFC3339MICRO timestamp or a nil value [col 5] ``` Both `m` and `e` have a value since at the column the parser stopped it already was able to construct a minimally valid `SyslogMessage`. ### Builder This library also provides a builder to construct valid syslog messages. Notice that its API ignores input values that does not match the grammar. Let's have a look to an example. ```go msg := &SyslogMessage{} msg.SetTimestamp("not a RFC3339MICRO timestamp") msg.Valid() // Not yet a valid message (try msg.Valid()) msg.SetPriority(191) msg.SetVersion(1) msg.Valid() // Now it is minimally valid ``` Printing `msg` you will verify it contains a `nil` timestamp (since an invalid one has been given). ```go // (*rfc5424.SyslogMessage)({ // priority: (*uint8)(191), // facility: (*uint8)(23), // severity: (*uint8)(7), // version: (uint16) 1, // timestamp: (*time.Time)(), // hostname: (*string)(), // appname: (*string)(), // procID: (*string)(), // msgID: (*string)(), // structuredData: (*map[string]map[string]string)(), // message: (*string)() // }) ``` Finally you can serialize the message into a string. ```go str, _ := msg.String() // <191>1 - - - - - - ``` ## Message transfer Excluding encapsulating one message for packet in packet protocols there are two ways to transfer syslog messages over streams. The older - ie., the **non-transparent** framing - and the newer one - ie., the **octet counting** framing - which is reliable and has not been seen to cause problems noted with the non-transparent one. This library provide stream parsers for both. ### Octet counting In short, [RFC5425](https://tools.ietf.org/html/rfc5425#section-4.3) and [RFC6587](), aside from the protocol considerations, describe a **transparent framing** technique for syslog messages that uses the **octect counting** technique - ie., the message lenght of the incoming message. Each syslog message is sent with a prefix representing the number of bytes it is made of. This [package](./octetcounting) parses messages stream following such rule. To quickly understand how to use it please have a look at the [example file](./octetcounting/example_test.go). ### Non transparent The [RFC6587](https://tools.ietf.org/html/rfc6587#section-3.4.2) also describes the **non-transparent framing** transport of syslog messages. In such case the messages are separated by a trailer, usually a line feed. This [package](./nontransparent) parses message stream following such [technique](https://tools.ietf.org/html/rfc6587#section-3.4.2). To quickly understand how to use it please have a look at the [example file](./nontransparent/example_test.go). Things we do not support: - trailers other than `LF` or `NUL` - trailer which length is greater than 1 byte - trailer change on a frame-by-frame basis ## Performances To run the benchmark execute the following command. ```bash make bench ``` On my machine[1](#mymachine) this are the results obtained in best effort mode. ``` [no]_empty_input__________________________________-4 30000000 253 ns/op 224 B/op 3 allocs/op [no]_multiple_syslog_messages_on_multiple_lines___-4 20000000 433 ns/op 304 B/op 12 allocs/op [no]_impossible_timestamp_________________________-4 10000000 1080 ns/op 528 B/op 11 allocs/op [no]_malformed_structured_data____________________-4 20000000 552 ns/op 400 B/op 12 allocs/op [no]_with_duplicated_structured_data_id___________-4 5000000 1246 ns/op 688 B/op 17 allocs/op [ok]_minimal______________________________________-4 30000000 264 ns/op 247 B/op 9 allocs/op [ok]_average_message______________________________-4 5000000 1984 ns/op 1536 B/op 26 allocs/op [ok]_complicated_message__________________________-4 5000000 1644 ns/op 1280 B/op 25 allocs/op [ok]_very_long_message____________________________-4 2000000 3826 ns/op 2464 B/op 28 allocs/op [ok]_all_max_length_and_complete__________________-4 3000000 2792 ns/op 1888 B/op 28 allocs/op [ok]_all_max_length_except_structured_data_and_mes-4 5000000 1830 ns/op 883 B/op 13 allocs/op [ok]_minimal_with_message_containing_newline______-4 20000000 294 ns/op 250 B/op 10 allocs/op [ok]_w/o_procid,_w/o_structured_data,_with_message-4 10000000 956 ns/op 364 B/op 11 allocs/op [ok]_minimal_with_UTF-8_message___________________-4 20000000 586 ns/op 359 B/op 10 allocs/op [ok]_with_structured_data_id,_w/o_structured_data_-4 10000000 998 ns/op 592 B/op 14 allocs/op [ok]_with_multiple_structured_data________________-4 5000000 1538 ns/op 1232 B/op 22 allocs/op [ok]_with_escaped_backslash_within_structured_data-4 5000000 1316 ns/op 920 B/op 20 allocs/op [ok]_with_UTF-8_structured_data_param_value,_with_-4 5000000 1580 ns/op 1050 B/op 21 allocs/op ``` As you can see it takes: * ~250ns to parse the smallest legal message * ~2µs to parse an average legal message * ~4µs to parse a very long legal message Other RFC5424 implementations, like this [one](https://github.com/roguelazer/rust-syslog-rfc5424) in Rust, spend 8µs to parse an average legal message. _TBD: comparation against other golang parsers_. --- * [1]: Intel Core i7-7600U CPU @ 2.80GHzgo-syslog-2.0.0/docs/000077500000000000000000000000001340614351500143665ustar00rootroot00000000000000go-syslog-2.0.0/docs/nontransparent.dot000066400000000000000000000011521340614351500201510ustar00rootroot00000000000000digraph nontransparent { rankdir=LR; node [ shape = point ]; ENTRY; en_1; node [ shape = circle, height = 0.2 ]; node [ fixedsize = true, height = 0.65, shape = doublecircle ]; 3; node [ shape = circle ]; 1 -> 2 [ label = "'<' / on_init" ]; 2 -> 2 [ label = "1..'\\t', '\\v'..255, '\\n'(!27:13), 0(!27:13)" ]; 2 -> 3 [ label = "'\\n'(27:13), 0(28:13) / on_trailer" ]; 3 -> 2 [ label = "1..'\\t', '\\v'..';', '='..255, '\\n'(!27:13), 0(!27:13)" ]; 3 -> 2 [ label = "'<' / on_init" ]; 3 -> 3 [ label = "'\\n'(27:13), 0(28:13) / on_trailer" ]; ENTRY -> 1 [ label = "IN" ]; en_1 -> 1 [ label = "main" ]; } go-syslog-2.0.0/docs/rfc5424.dot000066400000000000000000004262451340614351500162040ustar00rootroot00000000000000digraph rfc5424 { rankdir=LR; node [ shape = point ]; ENTRY; en_607; en_1; eof_1; eof_2; eof_3; eof_4; eof_5; eof_6; eof_7; eof_8; eof_9; eof_10; eof_11; eof_12; eof_13; eof_14; eof_15; eof_16; eof_17; eof_18; eof_19; eof_20; eof_21; eof_22; eof_23; eof_24; eof_25; eof_26; eof_27; eof_28; eof_29; eof_30; eof_31; eof_32; eof_33; eof_34; eof_35; eof_36; eof_37; eof_38; eof_39; eof_40; eof_41; eof_42; eof_43; eof_44; eof_45; eof_46; eof_47; eof_48; eof_49; eof_50; eof_51; eof_52; eof_53; eof_54; eof_55; eof_56; eof_57; eof_58; eof_59; eof_60; eof_61; eof_62; eof_63; eof_64; eof_65; eof_66; eof_67; eof_68; eof_69; eof_70; eof_71; eof_72; eof_73; eof_74; eof_75; eof_76; eof_77; eof_78; eof_79; eof_80; eof_81; eof_82; eof_83; eof_84; eof_85; eof_86; eof_87; eof_88; eof_89; eof_90; eof_91; eof_92; eof_93; eof_94; eof_95; eof_96; eof_97; eof_98; eof_99; eof_100; eof_101; eof_102; eof_103; eof_104; eof_105; eof_106; eof_107; eof_108; eof_109; eof_110; eof_111; eof_112; eof_113; eof_114; eof_115; eof_116; eof_117; eof_118; eof_119; eof_120; eof_121; eof_122; eof_123; eof_124; eof_125; eof_126; eof_127; eof_128; eof_129; eof_130; eof_131; eof_132; eof_133; eof_134; eof_135; eof_136; eof_137; eof_138; eof_139; eof_140; eof_141; eof_142; eof_143; eof_144; eof_145; eof_146; eof_147; eof_148; eof_149; eof_150; eof_151; eof_152; eof_153; eof_154; eof_155; eof_156; eof_157; eof_158; eof_159; eof_160; eof_161; eof_162; eof_163; eof_164; eof_165; eof_166; eof_167; eof_168; eof_169; eof_170; eof_171; eof_172; eof_173; eof_174; eof_175; eof_176; eof_177; eof_178; eof_179; eof_180; eof_181; eof_182; eof_183; eof_184; eof_185; eof_186; eof_187; eof_188; eof_189; eof_190; eof_191; eof_192; eof_193; eof_194; eof_195; eof_196; eof_197; eof_198; eof_199; eof_200; eof_201; eof_202; eof_203; eof_204; eof_205; eof_206; eof_207; eof_208; eof_209; eof_210; eof_211; eof_212; eof_213; eof_214; eof_215; eof_216; eof_217; eof_218; eof_219; eof_220; eof_221; eof_222; eof_223; eof_224; eof_225; eof_226; eof_227; eof_228; eof_229; eof_230; eof_231; eof_232; eof_233; eof_234; eof_235; eof_236; eof_237; eof_238; eof_239; eof_240; eof_241; eof_242; eof_243; eof_244; eof_245; eof_246; eof_247; eof_248; eof_249; eof_250; eof_251; eof_252; eof_253; eof_254; eof_255; eof_256; eof_257; eof_258; eof_259; eof_260; eof_261; eof_262; eof_263; eof_264; eof_265; eof_266; eof_267; eof_268; eof_269; eof_270; eof_271; eof_272; eof_273; eof_274; eof_275; eof_276; eof_277; eof_278; eof_279; eof_280; eof_281; eof_282; eof_283; eof_284; eof_285; eof_286; eof_287; eof_288; eof_289; eof_290; eof_291; eof_292; eof_293; eof_294; eof_295; eof_296; eof_297; eof_298; eof_299; eof_300; eof_301; eof_302; eof_303; eof_304; eof_305; eof_306; eof_307; eof_308; eof_309; eof_310; eof_311; eof_312; eof_313; eof_314; eof_315; eof_316; eof_317; eof_318; eof_319; eof_320; eof_321; eof_322; eof_323; eof_324; eof_325; eof_326; eof_327; eof_328; eof_329; eof_330; eof_331; eof_332; eof_333; eof_334; eof_335; eof_336; eof_337; eof_338; eof_339; eof_340; eof_341; eof_342; eof_343; eof_344; eof_345; eof_346; eof_347; eof_348; eof_349; eof_350; eof_351; eof_352; eof_353; eof_354; eof_355; eof_356; eof_357; eof_358; eof_359; eof_360; eof_361; eof_362; eof_363; eof_364; eof_365; eof_366; eof_367; eof_368; eof_369; eof_370; eof_371; eof_372; eof_373; eof_374; eof_375; eof_376; eof_377; eof_378; eof_379; eof_380; eof_381; eof_382; eof_383; eof_384; eof_385; eof_386; eof_387; eof_388; eof_389; eof_390; eof_391; eof_392; eof_393; eof_394; eof_395; eof_396; eof_397; eof_398; eof_399; eof_400; eof_401; eof_402; eof_403; eof_404; eof_405; eof_406; eof_407; eof_408; eof_409; eof_410; eof_411; eof_412; eof_413; eof_414; eof_415; eof_416; eof_417; eof_418; eof_419; eof_420; eof_421; eof_422; eof_423; eof_424; eof_425; eof_426; eof_427; eof_428; eof_429; eof_430; eof_431; eof_432; eof_433; eof_434; eof_435; eof_436; eof_437; eof_438; eof_439; eof_440; eof_441; eof_442; eof_443; eof_444; eof_445; eof_446; eof_447; eof_448; eof_449; eof_450; eof_451; eof_452; eof_453; eof_454; eof_455; eof_456; eof_457; eof_458; eof_459; eof_460; eof_461; eof_462; eof_463; eof_464; eof_465; eof_466; eof_467; eof_468; eof_469; eof_470; eof_471; eof_472; eof_473; eof_474; eof_475; eof_476; eof_477; eof_478; eof_479; eof_480; eof_481; eof_482; eof_483; eof_484; eof_485; eof_486; eof_487; eof_488; eof_489; eof_490; eof_491; eof_492; eof_493; eof_494; eof_495; eof_496; eof_497; eof_498; eof_499; eof_500; eof_501; eof_502; eof_503; eof_504; eof_505; eof_506; eof_507; eof_508; eof_509; eof_510; eof_511; eof_512; eof_513; eof_514; eof_515; eof_516; eof_517; eof_518; eof_519; eof_520; eof_521; eof_522; eof_523; eof_524; eof_525; eof_526; eof_527; eof_528; eof_529; eof_530; eof_531; eof_532; eof_533; eof_534; eof_535; eof_536; eof_537; eof_538; eof_539; eof_540; eof_541; eof_542; eof_543; eof_544; eof_545; eof_546; eof_547; eof_548; eof_549; eof_550; eof_551; eof_552; eof_553; eof_554; eof_555; eof_556; eof_557; eof_558; eof_559; eof_560; eof_561; eof_562; eof_563; eof_564; eof_565; eof_566; eof_567; eof_568; eof_569; eof_570; eof_571; eof_572; eof_573; eof_574; eof_575; eof_576; eof_577; eof_578; eof_579; eof_580; eof_581; eof_582; eof_583; eof_584; eof_585; eof_586; eof_587; eof_588; eof_589; eof_590; eof_591; eof_592; eof_593; eof_594; eof_595; eof_596; eof_597; eof_598; eof_599; eof_600; eof_601; eof_602; eof_604; eof_605; node [ shape = circle, height = 0.2 ]; err_1 [ label=""]; err_2 [ label=""]; err_3 [ label=""]; err_4 [ label=""]; err_5 [ label=""]; err_6 [ label=""]; err_7 [ label=""]; err_8 [ label=""]; err_9 [ label=""]; err_10 [ label=""]; err_11 [ label=""]; err_12 [ label=""]; err_13 [ label=""]; err_14 [ label=""]; err_15 [ label=""]; err_16 [ label=""]; err_17 [ label=""]; err_18 [ label=""]; err_19 [ label=""]; err_20 [ label=""]; err_21 [ label=""]; err_22 [ label=""]; err_23 [ label=""]; err_24 [ label=""]; err_25 [ label=""]; err_26 [ label=""]; err_27 [ label=""]; err_28 [ label=""]; err_29 [ label=""]; err_30 [ label=""]; err_31 [ label=""]; err_32 [ label=""]; err_33 [ label=""]; err_34 [ label=""]; err_35 [ label=""]; err_36 [ label=""]; err_37 [ label=""]; err_38 [ label=""]; err_39 [ label=""]; err_40 [ label=""]; err_41 [ label=""]; err_42 [ label=""]; err_43 [ label=""]; err_44 [ label=""]; err_45 [ label=""]; err_46 [ label=""]; err_47 [ label=""]; err_48 [ label=""]; err_49 [ label=""]; err_50 [ label=""]; err_51 [ label=""]; err_52 [ label=""]; err_53 [ label=""]; err_54 [ label=""]; err_55 [ label=""]; err_56 [ label=""]; err_57 [ label=""]; err_58 [ label=""]; err_59 [ label=""]; err_60 [ label=""]; err_61 [ label=""]; err_62 [ label=""]; err_63 [ label=""]; err_64 [ label=""]; err_65 [ label=""]; err_66 [ label=""]; err_67 [ label=""]; err_68 [ label=""]; err_69 [ label=""]; err_70 [ label=""]; err_71 [ label=""]; err_72 [ label=""]; err_73 [ label=""]; err_74 [ label=""]; err_75 [ label=""]; err_76 [ label=""]; err_77 [ label=""]; err_78 [ label=""]; err_79 [ label=""]; err_80 [ label=""]; err_81 [ label=""]; err_82 [ label=""]; err_83 [ label=""]; err_84 [ label=""]; err_85 [ label=""]; err_86 [ label=""]; err_87 [ label=""]; err_88 [ label=""]; err_89 [ label=""]; err_90 [ label=""]; err_91 [ label=""]; err_92 [ label=""]; err_93 [ label=""]; err_94 [ label=""]; err_95 [ label=""]; err_96 [ label=""]; err_97 [ label=""]; err_98 [ label=""]; err_99 [ label=""]; err_100 [ label=""]; err_101 [ label=""]; err_102 [ label=""]; err_103 [ label=""]; err_104 [ label=""]; err_105 [ label=""]; err_106 [ label=""]; err_107 [ label=""]; err_108 [ label=""]; err_109 [ label=""]; err_110 [ label=""]; err_111 [ label=""]; err_112 [ label=""]; err_113 [ label=""]; err_114 [ label=""]; err_115 [ label=""]; err_116 [ label=""]; err_117 [ label=""]; err_118 [ label=""]; err_119 [ label=""]; err_120 [ label=""]; err_121 [ label=""]; err_122 [ label=""]; err_123 [ label=""]; err_124 [ label=""]; err_125 [ label=""]; err_126 [ label=""]; err_127 [ label=""]; err_128 [ label=""]; err_129 [ label=""]; err_130 [ label=""]; err_131 [ label=""]; err_132 [ label=""]; err_133 [ label=""]; err_134 [ label=""]; err_135 [ label=""]; err_136 [ label=""]; err_137 [ label=""]; err_138 [ label=""]; err_139 [ label=""]; err_140 [ label=""]; err_141 [ label=""]; err_142 [ label=""]; err_143 [ label=""]; err_144 [ label=""]; err_145 [ label=""]; err_146 [ label=""]; err_147 [ label=""]; err_148 [ label=""]; err_149 [ label=""]; err_150 [ label=""]; err_151 [ label=""]; err_152 [ label=""]; err_153 [ label=""]; err_154 [ label=""]; err_155 [ label=""]; err_156 [ label=""]; err_157 [ label=""]; err_158 [ label=""]; err_159 [ label=""]; err_160 [ label=""]; err_161 [ label=""]; err_162 [ label=""]; err_163 [ label=""]; err_164 [ label=""]; err_165 [ label=""]; err_166 [ label=""]; err_167 [ label=""]; err_168 [ label=""]; err_169 [ label=""]; err_170 [ label=""]; err_171 [ label=""]; err_172 [ label=""]; err_173 [ label=""]; err_174 [ label=""]; err_175 [ label=""]; err_176 [ label=""]; err_177 [ label=""]; err_178 [ label=""]; err_179 [ label=""]; err_180 [ label=""]; err_181 [ label=""]; err_182 [ label=""]; err_183 [ label=""]; err_184 [ label=""]; err_185 [ label=""]; err_186 [ label=""]; err_187 [ label=""]; err_188 [ label=""]; err_189 [ label=""]; err_190 [ label=""]; err_191 [ label=""]; err_192 [ label=""]; err_193 [ label=""]; err_194 [ label=""]; err_195 [ label=""]; err_196 [ label=""]; err_197 [ label=""]; err_198 [ label=""]; err_199 [ label=""]; err_200 [ label=""]; err_201 [ label=""]; err_202 [ label=""]; err_203 [ label=""]; err_204 [ label=""]; err_205 [ label=""]; err_206 [ label=""]; err_207 [ label=""]; err_208 [ label=""]; err_209 [ label=""]; err_210 [ label=""]; err_211 [ label=""]; err_212 [ label=""]; err_213 [ label=""]; err_214 [ label=""]; err_215 [ label=""]; err_216 [ label=""]; err_217 [ label=""]; err_218 [ label=""]; err_219 [ label=""]; err_220 [ label=""]; err_221 [ label=""]; err_222 [ label=""]; err_223 [ label=""]; err_224 [ label=""]; err_225 [ label=""]; err_226 [ label=""]; err_227 [ label=""]; err_228 [ label=""]; err_229 [ label=""]; err_230 [ label=""]; err_231 [ label=""]; err_232 [ label=""]; err_233 [ label=""]; err_234 [ label=""]; err_235 [ label=""]; err_236 [ label=""]; err_237 [ label=""]; err_238 [ label=""]; err_239 [ label=""]; err_240 [ label=""]; err_241 [ label=""]; err_242 [ label=""]; err_243 [ label=""]; err_244 [ label=""]; err_245 [ label=""]; err_246 [ label=""]; err_247 [ label=""]; err_248 [ label=""]; err_249 [ label=""]; err_250 [ label=""]; err_251 [ label=""]; err_252 [ label=""]; err_253 [ label=""]; err_254 [ label=""]; err_255 [ label=""]; err_256 [ label=""]; err_257 [ label=""]; err_258 [ label=""]; err_259 [ label=""]; err_260 [ label=""]; err_261 [ label=""]; err_262 [ label=""]; err_263 [ label=""]; err_264 [ label=""]; err_265 [ label=""]; err_266 [ label=""]; err_267 [ label=""]; err_268 [ label=""]; err_269 [ label=""]; err_270 [ label=""]; err_271 [ label=""]; err_272 [ label=""]; err_273 [ label=""]; err_274 [ label=""]; err_275 [ label=""]; err_276 [ label=""]; err_277 [ label=""]; err_278 [ label=""]; err_279 [ label=""]; err_280 [ label=""]; err_281 [ label=""]; err_282 [ label=""]; err_283 [ label=""]; err_284 [ label=""]; err_285 [ label=""]; err_286 [ label=""]; err_287 [ label=""]; err_288 [ label=""]; err_289 [ label=""]; err_290 [ label=""]; err_291 [ label=""]; err_292 [ label=""]; err_293 [ label=""]; err_294 [ label=""]; err_295 [ label=""]; err_296 [ label=""]; err_297 [ label=""]; err_298 [ label=""]; err_299 [ label=""]; err_300 [ label=""]; err_301 [ label=""]; err_302 [ label=""]; err_303 [ label=""]; err_304 [ label=""]; err_305 [ label=""]; err_306 [ label=""]; err_307 [ label=""]; err_308 [ label=""]; err_309 [ label=""]; err_310 [ label=""]; err_311 [ label=""]; err_312 [ label=""]; err_313 [ label=""]; err_314 [ label=""]; err_315 [ label=""]; err_316 [ label=""]; err_317 [ label=""]; err_318 [ label=""]; err_319 [ label=""]; err_320 [ label=""]; err_321 [ label=""]; err_322 [ label=""]; err_323 [ label=""]; err_324 [ label=""]; err_325 [ label=""]; err_326 [ label=""]; err_327 [ label=""]; err_328 [ label=""]; err_329 [ label=""]; err_330 [ label=""]; err_331 [ label=""]; err_332 [ label=""]; err_333 [ label=""]; err_334 [ label=""]; err_335 [ label=""]; err_336 [ label=""]; err_337 [ label=""]; err_338 [ label=""]; err_339 [ label=""]; err_340 [ label=""]; err_341 [ label=""]; err_342 [ label=""]; err_343 [ label=""]; err_344 [ label=""]; err_345 [ label=""]; err_346 [ label=""]; err_347 [ label=""]; err_348 [ label=""]; err_349 [ label=""]; err_350 [ label=""]; err_351 [ label=""]; err_352 [ label=""]; err_353 [ label=""]; err_354 [ label=""]; err_355 [ label=""]; err_356 [ label=""]; err_357 [ label=""]; err_358 [ label=""]; err_359 [ label=""]; err_360 [ label=""]; err_361 [ label=""]; err_362 [ label=""]; err_363 [ label=""]; err_364 [ label=""]; err_365 [ label=""]; err_366 [ label=""]; err_367 [ label=""]; err_368 [ label=""]; err_369 [ label=""]; err_370 [ label=""]; err_371 [ label=""]; err_372 [ label=""]; err_373 [ label=""]; err_374 [ label=""]; err_375 [ label=""]; err_376 [ label=""]; err_377 [ label=""]; err_378 [ label=""]; err_379 [ label=""]; err_380 [ label=""]; err_381 [ label=""]; err_382 [ label=""]; err_383 [ label=""]; err_384 [ label=""]; err_385 [ label=""]; err_386 [ label=""]; err_387 [ label=""]; err_388 [ label=""]; err_389 [ label=""]; err_390 [ label=""]; err_391 [ label=""]; err_392 [ label=""]; err_393 [ label=""]; err_394 [ label=""]; err_395 [ label=""]; err_396 [ label=""]; err_397 [ label=""]; err_398 [ label=""]; err_399 [ label=""]; err_400 [ label=""]; err_401 [ label=""]; err_402 [ label=""]; err_403 [ label=""]; err_404 [ label=""]; err_405 [ label=""]; err_406 [ label=""]; err_407 [ label=""]; err_408 [ label=""]; err_409 [ label=""]; err_410 [ label=""]; err_411 [ label=""]; err_412 [ label=""]; err_413 [ label=""]; err_414 [ label=""]; err_415 [ label=""]; err_416 [ label=""]; err_417 [ label=""]; err_418 [ label=""]; err_419 [ label=""]; err_420 [ label=""]; err_421 [ label=""]; err_422 [ label=""]; err_423 [ label=""]; err_424 [ label=""]; err_425 [ label=""]; err_426 [ label=""]; err_427 [ label=""]; err_428 [ label=""]; err_429 [ label=""]; err_430 [ label=""]; err_431 [ label=""]; err_432 [ label=""]; err_433 [ label=""]; err_434 [ label=""]; err_435 [ label=""]; err_436 [ label=""]; err_437 [ label=""]; err_438 [ label=""]; err_439 [ label=""]; err_440 [ label=""]; err_441 [ label=""]; err_442 [ label=""]; err_443 [ label=""]; err_444 [ label=""]; err_445 [ label=""]; err_446 [ label=""]; err_447 [ label=""]; err_448 [ label=""]; err_449 [ label=""]; err_450 [ label=""]; err_451 [ label=""]; err_452 [ label=""]; err_453 [ label=""]; err_454 [ label=""]; err_455 [ label=""]; err_456 [ label=""]; err_457 [ label=""]; err_458 [ label=""]; err_459 [ label=""]; err_460 [ label=""]; err_461 [ label=""]; err_462 [ label=""]; err_463 [ label=""]; err_464 [ label=""]; err_465 [ label=""]; err_466 [ label=""]; err_467 [ label=""]; err_468 [ label=""]; err_469 [ label=""]; err_470 [ label=""]; err_471 [ label=""]; err_472 [ label=""]; err_473 [ label=""]; err_474 [ label=""]; err_475 [ label=""]; err_476 [ label=""]; err_477 [ label=""]; err_478 [ label=""]; err_479 [ label=""]; err_480 [ label=""]; err_481 [ label=""]; err_482 [ label=""]; err_483 [ label=""]; err_484 [ label=""]; err_485 [ label=""]; err_486 [ label=""]; err_487 [ label=""]; err_488 [ label=""]; err_489 [ label=""]; err_490 [ label=""]; err_491 [ label=""]; err_492 [ label=""]; err_493 [ label=""]; err_494 [ label=""]; err_495 [ label=""]; err_496 [ label=""]; err_497 [ label=""]; err_498 [ label=""]; err_499 [ label=""]; err_500 [ label=""]; err_501 [ label=""]; err_502 [ label=""]; err_503 [ label=""]; err_504 [ label=""]; err_505 [ label=""]; err_506 [ label=""]; err_507 [ label=""]; err_508 [ label=""]; err_509 [ label=""]; err_510 [ label=""]; err_511 [ label=""]; err_512 [ label=""]; err_513 [ label=""]; err_514 [ label=""]; err_515 [ label=""]; err_516 [ label=""]; err_517 [ label=""]; err_518 [ label=""]; err_519 [ label=""]; err_520 [ label=""]; err_521 [ label=""]; err_522 [ label=""]; err_523 [ label=""]; err_524 [ label=""]; err_525 [ label=""]; err_526 [ label=""]; err_527 [ label=""]; err_528 [ label=""]; err_529 [ label=""]; err_530 [ label=""]; err_531 [ label=""]; err_532 [ label=""]; err_533 [ label=""]; err_534 [ label=""]; err_535 [ label=""]; err_536 [ label=""]; err_537 [ label=""]; err_538 [ label=""]; err_539 [ label=""]; err_540 [ label=""]; err_541 [ label=""]; err_542 [ label=""]; err_543 [ label=""]; err_544 [ label=""]; err_545 [ label=""]; err_546 [ label=""]; err_547 [ label=""]; err_548 [ label=""]; err_549 [ label=""]; err_550 [ label=""]; err_551 [ label=""]; err_552 [ label=""]; err_553 [ label=""]; err_554 [ label=""]; err_555 [ label=""]; err_556 [ label=""]; err_557 [ label=""]; err_558 [ label=""]; err_559 [ label=""]; err_560 [ label=""]; err_561 [ label=""]; err_562 [ label=""]; err_563 [ label=""]; err_564 [ label=""]; err_565 [ label=""]; err_566 [ label=""]; err_567 [ label=""]; err_568 [ label=""]; err_569 [ label=""]; err_570 [ label=""]; err_571 [ label=""]; err_572 [ label=""]; err_573 [ label=""]; err_574 [ label=""]; err_575 [ label=""]; err_576 [ label=""]; err_577 [ label=""]; err_578 [ label=""]; err_579 [ label=""]; err_580 [ label=""]; err_581 [ label=""]; err_582 [ label=""]; err_583 [ label=""]; err_584 [ label=""]; err_585 [ label=""]; err_586 [ label=""]; err_587 [ label=""]; err_588 [ label=""]; err_589 [ label=""]; err_590 [ label=""]; err_591 [ label=""]; err_592 [ label=""]; err_593 [ label=""]; err_594 [ label=""]; err_595 [ label=""]; err_596 [ label=""]; err_597 [ label=""]; err_598 [ label=""]; err_599 [ label=""]; err_600 [ label=""]; err_601 [ label=""]; err_602 [ label=""]; err_603 [ label=""]; err_604 [ label=""]; err_605 [ label=""]; err_606 [ label=""]; node [ fixedsize = true, height = 0.65, shape = doublecircle ]; 603; 604; 605; 606; 607; node [ shape = circle ]; 1 -> 2 [ label = "'<'" ]; 1 -> err_1 [ label = "DEF / err_pri" ]; 2 -> 3 [ label = "'0' / mark" ]; 2 -> 600 [ label = "'1' / mark" ]; 2 -> 601 [ label = "'2'..'9' / mark" ]; 2 -> err_2 [ label = "DEF / err_prival, err_pri, err_parse" ]; 3 -> 4 [ label = "'>' / set_prival" ]; 3 -> err_3 [ label = "DEF / set_prival, err_prival, err_pri, err_parse" ]; 4 -> 5 [ label = "'1'..'9' / mark" ]; 4 -> err_4 [ label = "DEF / err_version, err_parse" ]; 5 -> 6 [ label = "SP / set_version" ]; 5 -> 598 [ label = "'0'..'9' / set_version" ]; 5 -> err_5 [ label = "DEF / set_version, err_parse" ]; 6 -> 7 [ label = "'-'" ]; 6 -> 561 [ label = "'0'..'9' / mark" ]; 6 -> err_6 [ label = "DEF / err_timestamp, err_parse" ]; 7 -> 8 [ label = "SP" ]; 7 -> err_7 [ label = "DEF / err_parse" ]; 8 -> 9 [ label = "'!'..'~' / mark" ]; 8 -> err_8 [ label = "DEF / err_hostname, err_parse" ]; 9 -> 10 [ label = "SP / set_hostname" ]; 9 -> 307 [ label = "'!'..'~'" ]; 9 -> err_9 [ label = "DEF / err_hostname, err_parse" ]; 10 -> 11 [ label = "'!'..'~' / mark" ]; 10 -> err_10 [ label = "DEF / err_appname, err_parse" ]; 11 -> 12 [ label = "SP / set_appname" ]; 11 -> 260 [ label = "'!'..'~'" ]; 11 -> err_11 [ label = "DEF / err_appname, err_parse" ]; 12 -> 13 [ label = "'!'..'~' / mark" ]; 12 -> err_12 [ label = "DEF / err_procid, err_parse" ]; 13 -> 14 [ label = "SP / set_procid" ]; 13 -> 133 [ label = "'!'..'~'" ]; 13 -> err_13 [ label = "DEF / err_procid, err_parse" ]; 14 -> 15 [ label = "'!'..'~' / mark" ]; 14 -> err_14 [ label = "DEF / err_msgid, err_parse" ]; 15 -> 16 [ label = "SP / set_msgid" ]; 15 -> 102 [ label = "'!'..'~'" ]; 15 -> err_15 [ label = "DEF / err_msgid" ]; 16 -> 603 [ label = "'-'" ]; 16 -> 24 [ label = "'[' / ini_elements" ]; 16 -> err_16 [ label = "DEF / err_structureddata" ]; 17 -> 605 [ label = "128..191" ]; 17 -> err_17 [ label = "DEF / err_msg, err_parse" ]; 18 -> 17 [ label = "160..191" ]; 18 -> err_18 [ label = "DEF / err_msg, err_parse" ]; 19 -> 17 [ label = "128..191" ]; 19 -> err_19 [ label = "DEF / err_msg, err_parse" ]; 20 -> 17 [ label = "128..159" ]; 20 -> err_20 [ label = "DEF / err_msg, err_parse" ]; 21 -> 19 [ label = "144..191" ]; 21 -> err_21 [ label = "DEF / err_msg, err_parse" ]; 22 -> 19 [ label = "128..191" ]; 22 -> err_22 [ label = "DEF / err_msg, err_parse" ]; 23 -> 19 [ label = "128..143" ]; 23 -> err_23 [ label = "DEF / err_msg, err_parse" ]; 24 -> 25 [ label = "'!', '#'..'<', '>'..'\\', '^'..'~' / mark" ]; 24 -> err_24 [ label = "DEF / err_sdid, err_structureddata" ]; 25 -> 26 [ label = "SP / set_id" ]; 25 -> 71 [ label = "'!', '#'..'<', '>'..'\\', '^'..'~'" ]; 25 -> 606 [ label = "']' / set_id" ]; 25 -> err_25 [ label = "DEF / set_id, err_sdid, err_structureddata" ]; 26 -> 27 [ label = "'!', '#'..'<', '>'..'\\', '^'..'~' / ini_sdparam, mark" ]; 26 -> err_26 [ label = "DEF / err_sdparam, err_structureddata" ]; 27 -> 28 [ label = "'!', '#'..'<', '>'..'\\', '^'..'~'" ]; 27 -> 59 [ label = "'=' / set_paramname" ]; 27 -> err_27 [ label = "DEF / err_sdparam, err_structureddata" ]; 28 -> 29 [ label = "'!', '#'..'<', '>'..'\\', '^'..'~'" ]; 28 -> 59 [ label = "'=' / set_paramname" ]; 28 -> err_28 [ label = "DEF / err_sdparam, err_structureddata" ]; 29 -> 30 [ label = "'!', '#'..'<', '>'..'\\', '^'..'~'" ]; 29 -> 59 [ label = "'=' / set_paramname" ]; 29 -> err_29 [ label = "DEF / err_sdparam, err_structureddata" ]; 30 -> 31 [ label = "'!', '#'..'<', '>'..'\\', '^'..'~'" ]; 30 -> 59 [ label = "'=' / set_paramname" ]; 30 -> err_30 [ label = "DEF / err_sdparam, err_structureddata" ]; 31 -> 32 [ label = "'!', '#'..'<', '>'..'\\', '^'..'~'" ]; 31 -> 59 [ label = "'=' / set_paramname" ]; 31 -> err_31 [ label = "DEF / err_sdparam, err_structureddata" ]; 32 -> 33 [ label = "'!', '#'..'<', '>'..'\\', '^'..'~'" ]; 32 -> 59 [ label = "'=' / set_paramname" ]; 32 -> err_32 [ label = "DEF / err_sdparam, err_structureddata" ]; 33 -> 34 [ label = "'!', '#'..'<', '>'..'\\', '^'..'~'" ]; 33 -> 59 [ label = "'=' / set_paramname" ]; 33 -> err_33 [ label = "DEF / err_sdparam, err_structureddata" ]; 34 -> 35 [ label = "'!', '#'..'<', '>'..'\\', '^'..'~'" ]; 34 -> 59 [ label = "'=' / set_paramname" ]; 34 -> err_34 [ label = "DEF / err_sdparam, err_structureddata" ]; 35 -> 36 [ label = "'!', '#'..'<', '>'..'\\', '^'..'~'" ]; 35 -> 59 [ label = "'=' / set_paramname" ]; 35 -> err_35 [ label = "DEF / err_sdparam, err_structureddata" ]; 36 -> 37 [ label = "'!', '#'..'<', '>'..'\\', '^'..'~'" ]; 36 -> 59 [ label = "'=' / set_paramname" ]; 36 -> err_36 [ label = "DEF / err_sdparam, err_structureddata" ]; 37 -> 38 [ label = "'!', '#'..'<', '>'..'\\', '^'..'~'" ]; 37 -> 59 [ label = "'=' / set_paramname" ]; 37 -> err_37 [ label = "DEF / err_sdparam, err_structureddata" ]; 38 -> 39 [ label = "'!', '#'..'<', '>'..'\\', '^'..'~'" ]; 38 -> 59 [ label = "'=' / set_paramname" ]; 38 -> err_38 [ label = "DEF / err_sdparam, err_structureddata" ]; 39 -> 40 [ label = "'!', '#'..'<', '>'..'\\', '^'..'~'" ]; 39 -> 59 [ label = "'=' / set_paramname" ]; 39 -> err_39 [ label = "DEF / err_sdparam, err_structureddata" ]; 40 -> 41 [ label = "'!', '#'..'<', '>'..'\\', '^'..'~'" ]; 40 -> 59 [ label = "'=' / set_paramname" ]; 40 -> err_40 [ label = "DEF / err_sdparam, err_structureddata" ]; 41 -> 42 [ label = "'!', '#'..'<', '>'..'\\', '^'..'~'" ]; 41 -> 59 [ label = "'=' / set_paramname" ]; 41 -> err_41 [ label = "DEF / err_sdparam, err_structureddata" ]; 42 -> 43 [ label = "'!', '#'..'<', '>'..'\\', '^'..'~'" ]; 42 -> 59 [ label = "'=' / set_paramname" ]; 42 -> err_42 [ label = "DEF / err_sdparam, err_structureddata" ]; 43 -> 44 [ label = "'!', '#'..'<', '>'..'\\', '^'..'~'" ]; 43 -> 59 [ label = "'=' / set_paramname" ]; 43 -> err_43 [ label = "DEF / err_sdparam, err_structureddata" ]; 44 -> 45 [ label = "'!', '#'..'<', '>'..'\\', '^'..'~'" ]; 44 -> 59 [ label = "'=' / set_paramname" ]; 44 -> err_44 [ label = "DEF / err_sdparam, err_structureddata" ]; 45 -> 46 [ label = "'!', '#'..'<', '>'..'\\', '^'..'~'" ]; 45 -> 59 [ label = "'=' / set_paramname" ]; 45 -> err_45 [ label = "DEF / err_sdparam, err_structureddata" ]; 46 -> 47 [ label = "'!', '#'..'<', '>'..'\\', '^'..'~'" ]; 46 -> 59 [ label = "'=' / set_paramname" ]; 46 -> err_46 [ label = "DEF / err_sdparam, err_structureddata" ]; 47 -> 48 [ label = "'!', '#'..'<', '>'..'\\', '^'..'~'" ]; 47 -> 59 [ label = "'=' / set_paramname" ]; 47 -> err_47 [ label = "DEF / err_sdparam, err_structureddata" ]; 48 -> 49 [ label = "'!', '#'..'<', '>'..'\\', '^'..'~'" ]; 48 -> 59 [ label = "'=' / set_paramname" ]; 48 -> err_48 [ label = "DEF / err_sdparam, err_structureddata" ]; 49 -> 50 [ label = "'!', '#'..'<', '>'..'\\', '^'..'~'" ]; 49 -> 59 [ label = "'=' / set_paramname" ]; 49 -> err_49 [ label = "DEF / err_sdparam, err_structureddata" ]; 50 -> 51 [ label = "'!', '#'..'<', '>'..'\\', '^'..'~'" ]; 50 -> 59 [ label = "'=' / set_paramname" ]; 50 -> err_50 [ label = "DEF / err_sdparam, err_structureddata" ]; 51 -> 52 [ label = "'!', '#'..'<', '>'..'\\', '^'..'~'" ]; 51 -> 59 [ label = "'=' / set_paramname" ]; 51 -> err_51 [ label = "DEF / err_sdparam, err_structureddata" ]; 52 -> 53 [ label = "'!', '#'..'<', '>'..'\\', '^'..'~'" ]; 52 -> 59 [ label = "'=' / set_paramname" ]; 52 -> err_52 [ label = "DEF / err_sdparam, err_structureddata" ]; 53 -> 54 [ label = "'!', '#'..'<', '>'..'\\', '^'..'~'" ]; 53 -> 59 [ label = "'=' / set_paramname" ]; 53 -> err_53 [ label = "DEF / err_sdparam, err_structureddata" ]; 54 -> 55 [ label = "'!', '#'..'<', '>'..'\\', '^'..'~'" ]; 54 -> 59 [ label = "'=' / set_paramname" ]; 54 -> err_54 [ label = "DEF / err_sdparam, err_structureddata" ]; 55 -> 56 [ label = "'!', '#'..'<', '>'..'\\', '^'..'~'" ]; 55 -> 59 [ label = "'=' / set_paramname" ]; 55 -> err_55 [ label = "DEF / err_sdparam, err_structureddata" ]; 56 -> 57 [ label = "'!', '#'..'<', '>'..'\\', '^'..'~'" ]; 56 -> 59 [ label = "'=' / set_paramname" ]; 56 -> err_56 [ label = "DEF / err_sdparam, err_structureddata" ]; 57 -> 58 [ label = "'!', '#'..'<', '>'..'\\', '^'..'~'" ]; 57 -> 59 [ label = "'=' / set_paramname" ]; 57 -> err_57 [ label = "DEF / err_sdparam, err_structureddata" ]; 58 -> 59 [ label = "'=' / set_paramname" ]; 58 -> err_58 [ label = "DEF / err_sdparam, err_structureddata" ]; 59 -> 60 [ label = "'\"'" ]; 59 -> err_59 [ label = "DEF / err_sdparam, err_structureddata" ]; 60 -> 62 [ label = "'\"' / mark, set_paramvalue" ]; 60 -> 63 [ label = "'\\' / mark, add_slash" ]; 60 -> err_60 [ label = "']', 128..193, 245..255 / err_escape, err_sdparam, err_structureddata" ]; 60 -> 64 [ label = "194..223 / mark" ]; 60 -> 65 [ label = "224 / mark" ]; 60 -> 66 [ label = "225..236, 238..239 / mark" ]; 60 -> 67 [ label = "237 / mark" ]; 60 -> 68 [ label = "240 / mark" ]; 60 -> 69 [ label = "241..243 / mark" ]; 60 -> 70 [ label = "244 / mark" ]; 60 -> 61 [ label = "DEF / mark" ]; 61 -> 62 [ label = "'\"' / set_paramvalue" ]; 61 -> 63 [ label = "'\\' / add_slash" ]; 61 -> err_61 [ label = "']', 128..193, 245..255 / err_escape, err_sdparam, err_structureddata" ]; 61 -> 64 [ label = "194..223" ]; 61 -> 65 [ label = "224" ]; 61 -> 66 [ label = "225..236, 238..239" ]; 61 -> 67 [ label = "237" ]; 61 -> 68 [ label = "240" ]; 61 -> 69 [ label = "241..243" ]; 61 -> 70 [ label = "244" ]; 61 -> 61 [ label = "DEF" ]; 62 -> 26 [ label = "SP" ]; 62 -> 606 [ label = "']'" ]; 62 -> err_62 [ label = "DEF / err_sdparam, err_structureddata" ]; 63 -> 61 [ label = "'\"', '\\'..']'" ]; 63 -> err_63 [ label = "DEF / err_escape, err_sdparam, err_structureddata" ]; 64 -> 61 [ label = "128..191" ]; 64 -> err_64 [ label = "DEF / err_sdparam, err_structureddata" ]; 65 -> 64 [ label = "160..191" ]; 65 -> err_65 [ label = "DEF / err_sdparam, err_structureddata" ]; 66 -> 64 [ label = "128..191" ]; 66 -> err_66 [ label = "DEF / err_sdparam, err_structureddata" ]; 67 -> 64 [ label = "128..159" ]; 67 -> err_67 [ label = "DEF / err_sdparam, err_structureddata" ]; 68 -> 66 [ label = "144..191" ]; 68 -> err_68 [ label = "DEF / err_sdparam, err_structureddata" ]; 69 -> 66 [ label = "128..191" ]; 69 -> err_69 [ label = "DEF / err_sdparam, err_structureddata" ]; 70 -> 66 [ label = "128..143" ]; 70 -> err_70 [ label = "DEF / err_sdparam, err_structureddata" ]; 71 -> 26 [ label = "SP / set_id" ]; 71 -> 72 [ label = "'!', '#'..'<', '>'..'\\', '^'..'~'" ]; 71 -> 606 [ label = "']' / set_id" ]; 71 -> err_71 [ label = "DEF / set_id, err_sdid, err_structureddata" ]; 72 -> 26 [ label = "SP / set_id" ]; 72 -> 73 [ label = "'!', '#'..'<', '>'..'\\', '^'..'~'" ]; 72 -> 606 [ label = "']' / set_id" ]; 72 -> err_72 [ label = "DEF / set_id, err_sdid, err_structureddata" ]; 73 -> 26 [ label = "SP / set_id" ]; 73 -> 74 [ label = "'!', '#'..'<', '>'..'\\', '^'..'~'" ]; 73 -> 606 [ label = "']' / set_id" ]; 73 -> err_73 [ label = "DEF / set_id, err_sdid, err_structureddata" ]; 74 -> 26 [ label = "SP / set_id" ]; 74 -> 75 [ label = "'!', '#'..'<', '>'..'\\', '^'..'~'" ]; 74 -> 606 [ label = "']' / set_id" ]; 74 -> err_74 [ label = "DEF / set_id, err_sdid, err_structureddata" ]; 75 -> 26 [ label = "SP / set_id" ]; 75 -> 76 [ label = "'!', '#'..'<', '>'..'\\', '^'..'~'" ]; 75 -> 606 [ label = "']' / set_id" ]; 75 -> err_75 [ label = "DEF / set_id, err_sdid, err_structureddata" ]; 76 -> 26 [ label = "SP / set_id" ]; 76 -> 77 [ label = "'!', '#'..'<', '>'..'\\', '^'..'~'" ]; 76 -> 606 [ label = "']' / set_id" ]; 76 -> err_76 [ label = "DEF / set_id, err_sdid, err_structureddata" ]; 77 -> 26 [ label = "SP / set_id" ]; 77 -> 78 [ label = "'!', '#'..'<', '>'..'\\', '^'..'~'" ]; 77 -> 606 [ label = "']' / set_id" ]; 77 -> err_77 [ label = "DEF / set_id, err_sdid, err_structureddata" ]; 78 -> 26 [ label = "SP / set_id" ]; 78 -> 79 [ label = "'!', '#'..'<', '>'..'\\', '^'..'~'" ]; 78 -> 606 [ label = "']' / set_id" ]; 78 -> err_78 [ label = "DEF / set_id, err_sdid, err_structureddata" ]; 79 -> 26 [ label = "SP / set_id" ]; 79 -> 80 [ label = "'!', '#'..'<', '>'..'\\', '^'..'~'" ]; 79 -> 606 [ label = "']' / set_id" ]; 79 -> err_79 [ label = "DEF / set_id, err_sdid, err_structureddata" ]; 80 -> 26 [ label = "SP / set_id" ]; 80 -> 81 [ label = "'!', '#'..'<', '>'..'\\', '^'..'~'" ]; 80 -> 606 [ label = "']' / set_id" ]; 80 -> err_80 [ label = "DEF / set_id, err_sdid, err_structureddata" ]; 81 -> 26 [ label = "SP / set_id" ]; 81 -> 82 [ label = "'!', '#'..'<', '>'..'\\', '^'..'~'" ]; 81 -> 606 [ label = "']' / set_id" ]; 81 -> err_81 [ label = "DEF / set_id, err_sdid, err_structureddata" ]; 82 -> 26 [ label = "SP / set_id" ]; 82 -> 83 [ label = "'!', '#'..'<', '>'..'\\', '^'..'~'" ]; 82 -> 606 [ label = "']' / set_id" ]; 82 -> err_82 [ label = "DEF / set_id, err_sdid, err_structureddata" ]; 83 -> 26 [ label = "SP / set_id" ]; 83 -> 84 [ label = "'!', '#'..'<', '>'..'\\', '^'..'~'" ]; 83 -> 606 [ label = "']' / set_id" ]; 83 -> err_83 [ label = "DEF / set_id, err_sdid, err_structureddata" ]; 84 -> 26 [ label = "SP / set_id" ]; 84 -> 85 [ label = "'!', '#'..'<', '>'..'\\', '^'..'~'" ]; 84 -> 606 [ label = "']' / set_id" ]; 84 -> err_84 [ label = "DEF / set_id, err_sdid, err_structureddata" ]; 85 -> 26 [ label = "SP / set_id" ]; 85 -> 86 [ label = "'!', '#'..'<', '>'..'\\', '^'..'~'" ]; 85 -> 606 [ label = "']' / set_id" ]; 85 -> err_85 [ label = "DEF / set_id, err_sdid, err_structureddata" ]; 86 -> 26 [ label = "SP / set_id" ]; 86 -> 87 [ label = "'!', '#'..'<', '>'..'\\', '^'..'~'" ]; 86 -> 606 [ label = "']' / set_id" ]; 86 -> err_86 [ label = "DEF / set_id, err_sdid, err_structureddata" ]; 87 -> 26 [ label = "SP / set_id" ]; 87 -> 88 [ label = "'!', '#'..'<', '>'..'\\', '^'..'~'" ]; 87 -> 606 [ label = "']' / set_id" ]; 87 -> err_87 [ label = "DEF / set_id, err_sdid, err_structureddata" ]; 88 -> 26 [ label = "SP / set_id" ]; 88 -> 89 [ label = "'!', '#'..'<', '>'..'\\', '^'..'~'" ]; 88 -> 606 [ label = "']' / set_id" ]; 88 -> err_88 [ label = "DEF / set_id, err_sdid, err_structureddata" ]; 89 -> 26 [ label = "SP / set_id" ]; 89 -> 90 [ label = "'!', '#'..'<', '>'..'\\', '^'..'~'" ]; 89 -> 606 [ label = "']' / set_id" ]; 89 -> err_89 [ label = "DEF / set_id, err_sdid, err_structureddata" ]; 90 -> 26 [ label = "SP / set_id" ]; 90 -> 91 [ label = "'!', '#'..'<', '>'..'\\', '^'..'~'" ]; 90 -> 606 [ label = "']' / set_id" ]; 90 -> err_90 [ label = "DEF / set_id, err_sdid, err_structureddata" ]; 91 -> 26 [ label = "SP / set_id" ]; 91 -> 92 [ label = "'!', '#'..'<', '>'..'\\', '^'..'~'" ]; 91 -> 606 [ label = "']' / set_id" ]; 91 -> err_91 [ label = "DEF / set_id, err_sdid, err_structureddata" ]; 92 -> 26 [ label = "SP / set_id" ]; 92 -> 93 [ label = "'!', '#'..'<', '>'..'\\', '^'..'~'" ]; 92 -> 606 [ label = "']' / set_id" ]; 92 -> err_92 [ label = "DEF / set_id, err_sdid, err_structureddata" ]; 93 -> 26 [ label = "SP / set_id" ]; 93 -> 94 [ label = "'!', '#'..'<', '>'..'\\', '^'..'~'" ]; 93 -> 606 [ label = "']' / set_id" ]; 93 -> err_93 [ label = "DEF / set_id, err_sdid, err_structureddata" ]; 94 -> 26 [ label = "SP / set_id" ]; 94 -> 95 [ label = "'!', '#'..'<', '>'..'\\', '^'..'~'" ]; 94 -> 606 [ label = "']' / set_id" ]; 94 -> err_94 [ label = "DEF / set_id, err_sdid, err_structureddata" ]; 95 -> 26 [ label = "SP / set_id" ]; 95 -> 96 [ label = "'!', '#'..'<', '>'..'\\', '^'..'~'" ]; 95 -> 606 [ label = "']' / set_id" ]; 95 -> err_95 [ label = "DEF / set_id, err_sdid, err_structureddata" ]; 96 -> 26 [ label = "SP / set_id" ]; 96 -> 97 [ label = "'!', '#'..'<', '>'..'\\', '^'..'~'" ]; 96 -> 606 [ label = "']' / set_id" ]; 96 -> err_96 [ label = "DEF / set_id, err_sdid, err_structureddata" ]; 97 -> 26 [ label = "SP / set_id" ]; 97 -> 98 [ label = "'!', '#'..'<', '>'..'\\', '^'..'~'" ]; 97 -> 606 [ label = "']' / set_id" ]; 97 -> err_97 [ label = "DEF / set_id, err_sdid, err_structureddata" ]; 98 -> 26 [ label = "SP / set_id" ]; 98 -> 99 [ label = "'!', '#'..'<', '>'..'\\', '^'..'~'" ]; 98 -> 606 [ label = "']' / set_id" ]; 98 -> err_98 [ label = "DEF / set_id, err_sdid, err_structureddata" ]; 99 -> 26 [ label = "SP / set_id" ]; 99 -> 100 [ label = "'!', '#'..'<', '>'..'\\', '^'..'~'" ]; 99 -> 606 [ label = "']' / set_id" ]; 99 -> err_99 [ label = "DEF / set_id, err_sdid, err_structureddata" ]; 100 -> 26 [ label = "SP / set_id" ]; 100 -> 101 [ label = "'!', '#'..'<', '>'..'\\', '^'..'~'" ]; 100 -> 606 [ label = "']' / set_id" ]; 100 -> err_100 [ label = "DEF / set_id, err_sdid, err_structureddata" ]; 101 -> 26 [ label = "SP / set_id" ]; 101 -> 606 [ label = "']' / set_id" ]; 101 -> err_101 [ label = "DEF / set_id, err_sdid, err_structureddata" ]; 102 -> 16 [ label = "SP / set_msgid" ]; 102 -> 103 [ label = "'!'..'~'" ]; 102 -> err_102 [ label = "DEF / err_msgid" ]; 103 -> 16 [ label = "SP / set_msgid" ]; 103 -> 104 [ label = "'!'..'~'" ]; 103 -> err_103 [ label = "DEF / err_msgid" ]; 104 -> 16 [ label = "SP / set_msgid" ]; 104 -> 105 [ label = "'!'..'~'" ]; 104 -> err_104 [ label = "DEF / err_msgid" ]; 105 -> 16 [ label = "SP / set_msgid" ]; 105 -> 106 [ label = "'!'..'~'" ]; 105 -> err_105 [ label = "DEF / err_msgid" ]; 106 -> 16 [ label = "SP / set_msgid" ]; 106 -> 107 [ label = "'!'..'~'" ]; 106 -> err_106 [ label = "DEF / err_msgid" ]; 107 -> 16 [ label = "SP / set_msgid" ]; 107 -> 108 [ label = "'!'..'~'" ]; 107 -> err_107 [ label = "DEF / err_msgid" ]; 108 -> 16 [ label = "SP / set_msgid" ]; 108 -> 109 [ label = "'!'..'~'" ]; 108 -> err_108 [ label = "DEF / err_msgid" ]; 109 -> 16 [ label = "SP / set_msgid" ]; 109 -> 110 [ label = "'!'..'~'" ]; 109 -> err_109 [ label = "DEF / err_msgid" ]; 110 -> 16 [ label = "SP / set_msgid" ]; 110 -> 111 [ label = "'!'..'~'" ]; 110 -> err_110 [ label = "DEF / err_msgid" ]; 111 -> 16 [ label = "SP / set_msgid" ]; 111 -> 112 [ label = "'!'..'~'" ]; 111 -> err_111 [ label = "DEF / err_msgid" ]; 112 -> 16 [ label = "SP / set_msgid" ]; 112 -> 113 [ label = "'!'..'~'" ]; 112 -> err_112 [ label = "DEF / err_msgid" ]; 113 -> 16 [ label = "SP / set_msgid" ]; 113 -> 114 [ label = "'!'..'~'" ]; 113 -> err_113 [ label = "DEF / err_msgid" ]; 114 -> 16 [ label = "SP / set_msgid" ]; 114 -> 115 [ label = "'!'..'~'" ]; 114 -> err_114 [ label = "DEF / err_msgid" ]; 115 -> 16 [ label = "SP / set_msgid" ]; 115 -> 116 [ label = "'!'..'~'" ]; 115 -> err_115 [ label = "DEF / err_msgid" ]; 116 -> 16 [ label = "SP / set_msgid" ]; 116 -> 117 [ label = "'!'..'~'" ]; 116 -> err_116 [ label = "DEF / err_msgid" ]; 117 -> 16 [ label = "SP / set_msgid" ]; 117 -> 118 [ label = "'!'..'~'" ]; 117 -> err_117 [ label = "DEF / err_msgid" ]; 118 -> 16 [ label = "SP / set_msgid" ]; 118 -> 119 [ label = "'!'..'~'" ]; 118 -> err_118 [ label = "DEF / err_msgid" ]; 119 -> 16 [ label = "SP / set_msgid" ]; 119 -> 120 [ label = "'!'..'~'" ]; 119 -> err_119 [ label = "DEF / err_msgid" ]; 120 -> 16 [ label = "SP / set_msgid" ]; 120 -> 121 [ label = "'!'..'~'" ]; 120 -> err_120 [ label = "DEF / err_msgid" ]; 121 -> 16 [ label = "SP / set_msgid" ]; 121 -> 122 [ label = "'!'..'~'" ]; 121 -> err_121 [ label = "DEF / err_msgid" ]; 122 -> 16 [ label = "SP / set_msgid" ]; 122 -> 123 [ label = "'!'..'~'" ]; 122 -> err_122 [ label = "DEF / err_msgid" ]; 123 -> 16 [ label = "SP / set_msgid" ]; 123 -> 124 [ label = "'!'..'~'" ]; 123 -> err_123 [ label = "DEF / err_msgid" ]; 124 -> 16 [ label = "SP / set_msgid" ]; 124 -> 125 [ label = "'!'..'~'" ]; 124 -> err_124 [ label = "DEF / err_msgid" ]; 125 -> 16 [ label = "SP / set_msgid" ]; 125 -> 126 [ label = "'!'..'~'" ]; 125 -> err_125 [ label = "DEF / err_msgid" ]; 126 -> 16 [ label = "SP / set_msgid" ]; 126 -> 127 [ label = "'!'..'~'" ]; 126 -> err_126 [ label = "DEF / err_msgid" ]; 127 -> 16 [ label = "SP / set_msgid" ]; 127 -> 128 [ label = "'!'..'~'" ]; 127 -> err_127 [ label = "DEF / err_msgid" ]; 128 -> 16 [ label = "SP / set_msgid" ]; 128 -> 129 [ label = "'!'..'~'" ]; 128 -> err_128 [ label = "DEF / err_msgid" ]; 129 -> 16 [ label = "SP / set_msgid" ]; 129 -> 130 [ label = "'!'..'~'" ]; 129 -> err_129 [ label = "DEF / err_msgid" ]; 130 -> 16 [ label = "SP / set_msgid" ]; 130 -> 131 [ label = "'!'..'~'" ]; 130 -> err_130 [ label = "DEF / err_msgid" ]; 131 -> 16 [ label = "SP / set_msgid" ]; 131 -> 132 [ label = "'!'..'~'" ]; 131 -> err_131 [ label = "DEF / err_msgid" ]; 132 -> 16 [ label = "SP / set_msgid" ]; 132 -> err_132 [ label = "DEF / err_msgid" ]; 133 -> 14 [ label = "SP / set_procid" ]; 133 -> 134 [ label = "'!'..'~'" ]; 133 -> err_133 [ label = "DEF / err_procid, err_parse" ]; 134 -> 14 [ label = "SP / set_procid" ]; 134 -> 135 [ label = "'!'..'~'" ]; 134 -> err_134 [ label = "DEF / err_procid, err_parse" ]; 135 -> 14 [ label = "SP / set_procid" ]; 135 -> 136 [ label = "'!'..'~'" ]; 135 -> err_135 [ label = "DEF / err_procid, err_parse" ]; 136 -> 14 [ label = "SP / set_procid" ]; 136 -> 137 [ label = "'!'..'~'" ]; 136 -> err_136 [ label = "DEF / err_procid, err_parse" ]; 137 -> 14 [ label = "SP / set_procid" ]; 137 -> 138 [ label = "'!'..'~'" ]; 137 -> err_137 [ label = "DEF / err_procid, err_parse" ]; 138 -> 14 [ label = "SP / set_procid" ]; 138 -> 139 [ label = "'!'..'~'" ]; 138 -> err_138 [ label = "DEF / err_procid, err_parse" ]; 139 -> 14 [ label = "SP / set_procid" ]; 139 -> 140 [ label = "'!'..'~'" ]; 139 -> err_139 [ label = "DEF / err_procid, err_parse" ]; 140 -> 14 [ label = "SP / set_procid" ]; 140 -> 141 [ label = "'!'..'~'" ]; 140 -> err_140 [ label = "DEF / err_procid, err_parse" ]; 141 -> 14 [ label = "SP / set_procid" ]; 141 -> 142 [ label = "'!'..'~'" ]; 141 -> err_141 [ label = "DEF / err_procid, err_parse" ]; 142 -> 14 [ label = "SP / set_procid" ]; 142 -> 143 [ label = "'!'..'~'" ]; 142 -> err_142 [ label = "DEF / err_procid, err_parse" ]; 143 -> 14 [ label = "SP / set_procid" ]; 143 -> 144 [ label = "'!'..'~'" ]; 143 -> err_143 [ label = "DEF / err_procid, err_parse" ]; 144 -> 14 [ label = "SP / set_procid" ]; 144 -> 145 [ label = "'!'..'~'" ]; 144 -> err_144 [ label = "DEF / err_procid, err_parse" ]; 145 -> 14 [ label = "SP / set_procid" ]; 145 -> 146 [ label = "'!'..'~'" ]; 145 -> err_145 [ label = "DEF / err_procid, err_parse" ]; 146 -> 14 [ label = "SP / set_procid" ]; 146 -> 147 [ label = "'!'..'~'" ]; 146 -> err_146 [ label = "DEF / err_procid, err_parse" ]; 147 -> 14 [ label = "SP / set_procid" ]; 147 -> 148 [ label = "'!'..'~'" ]; 147 -> err_147 [ label = "DEF / err_procid, err_parse" ]; 148 -> 14 [ label = "SP / set_procid" ]; 148 -> 149 [ label = "'!'..'~'" ]; 148 -> err_148 [ label = "DEF / err_procid, err_parse" ]; 149 -> 14 [ label = "SP / set_procid" ]; 149 -> 150 [ label = "'!'..'~'" ]; 149 -> err_149 [ label = "DEF / err_procid, err_parse" ]; 150 -> 14 [ label = "SP / set_procid" ]; 150 -> 151 [ label = "'!'..'~'" ]; 150 -> err_150 [ label = "DEF / err_procid, err_parse" ]; 151 -> 14 [ label = "SP / set_procid" ]; 151 -> 152 [ label = "'!'..'~'" ]; 151 -> err_151 [ label = "DEF / err_procid, err_parse" ]; 152 -> 14 [ label = "SP / set_procid" ]; 152 -> 153 [ label = "'!'..'~'" ]; 152 -> err_152 [ label = "DEF / err_procid, err_parse" ]; 153 -> 14 [ label = "SP / set_procid" ]; 153 -> 154 [ label = "'!'..'~'" ]; 153 -> err_153 [ label = "DEF / err_procid, err_parse" ]; 154 -> 14 [ label = "SP / set_procid" ]; 154 -> 155 [ label = "'!'..'~'" ]; 154 -> err_154 [ label = "DEF / err_procid, err_parse" ]; 155 -> 14 [ label = "SP / set_procid" ]; 155 -> 156 [ label = "'!'..'~'" ]; 155 -> err_155 [ label = "DEF / err_procid, err_parse" ]; 156 -> 14 [ label = "SP / set_procid" ]; 156 -> 157 [ label = "'!'..'~'" ]; 156 -> err_156 [ label = "DEF / err_procid, err_parse" ]; 157 -> 14 [ label = "SP / set_procid" ]; 157 -> 158 [ label = "'!'..'~'" ]; 157 -> err_157 [ label = "DEF / err_procid, err_parse" ]; 158 -> 14 [ label = "SP / set_procid" ]; 158 -> 159 [ label = "'!'..'~'" ]; 158 -> err_158 [ label = "DEF / err_procid, err_parse" ]; 159 -> 14 [ label = "SP / set_procid" ]; 159 -> 160 [ label = "'!'..'~'" ]; 159 -> err_159 [ label = "DEF / err_procid, err_parse" ]; 160 -> 14 [ label = "SP / set_procid" ]; 160 -> 161 [ label = "'!'..'~'" ]; 160 -> err_160 [ label = "DEF / err_procid, err_parse" ]; 161 -> 14 [ label = "SP / set_procid" ]; 161 -> 162 [ label = "'!'..'~'" ]; 161 -> err_161 [ label = "DEF / err_procid, err_parse" ]; 162 -> 14 [ label = "SP / set_procid" ]; 162 -> 163 [ label = "'!'..'~'" ]; 162 -> err_162 [ label = "DEF / err_procid, err_parse" ]; 163 -> 14 [ label = "SP / set_procid" ]; 163 -> 164 [ label = "'!'..'~'" ]; 163 -> err_163 [ label = "DEF / err_procid, err_parse" ]; 164 -> 14 [ label = "SP / set_procid" ]; 164 -> 165 [ label = "'!'..'~'" ]; 164 -> err_164 [ label = "DEF / err_procid, err_parse" ]; 165 -> 14 [ label = "SP / set_procid" ]; 165 -> 166 [ label = "'!'..'~'" ]; 165 -> err_165 [ label = "DEF / err_procid, err_parse" ]; 166 -> 14 [ label = "SP / set_procid" ]; 166 -> 167 [ label = "'!'..'~'" ]; 166 -> err_166 [ label = "DEF / err_procid, err_parse" ]; 167 -> 14 [ label = "SP / set_procid" ]; 167 -> 168 [ label = "'!'..'~'" ]; 167 -> err_167 [ label = "DEF / err_procid, err_parse" ]; 168 -> 14 [ label = "SP / set_procid" ]; 168 -> 169 [ label = "'!'..'~'" ]; 168 -> err_168 [ label = "DEF / err_procid, err_parse" ]; 169 -> 14 [ label = "SP / set_procid" ]; 169 -> 170 [ label = "'!'..'~'" ]; 169 -> err_169 [ label = "DEF / err_procid, err_parse" ]; 170 -> 14 [ label = "SP / set_procid" ]; 170 -> 171 [ label = "'!'..'~'" ]; 170 -> err_170 [ label = "DEF / err_procid, err_parse" ]; 171 -> 14 [ label = "SP / set_procid" ]; 171 -> 172 [ label = "'!'..'~'" ]; 171 -> err_171 [ label = "DEF / err_procid, err_parse" ]; 172 -> 14 [ label = "SP / set_procid" ]; 172 -> 173 [ label = "'!'..'~'" ]; 172 -> err_172 [ label = "DEF / err_procid, err_parse" ]; 173 -> 14 [ label = "SP / set_procid" ]; 173 -> 174 [ label = "'!'..'~'" ]; 173 -> err_173 [ label = "DEF / err_procid, err_parse" ]; 174 -> 14 [ label = "SP / set_procid" ]; 174 -> 175 [ label = "'!'..'~'" ]; 174 -> err_174 [ label = "DEF / err_procid, err_parse" ]; 175 -> 14 [ label = "SP / set_procid" ]; 175 -> 176 [ label = "'!'..'~'" ]; 175 -> err_175 [ label = "DEF / err_procid, err_parse" ]; 176 -> 14 [ label = "SP / set_procid" ]; 176 -> 177 [ label = "'!'..'~'" ]; 176 -> err_176 [ label = "DEF / err_procid, err_parse" ]; 177 -> 14 [ label = "SP / set_procid" ]; 177 -> 178 [ label = "'!'..'~'" ]; 177 -> err_177 [ label = "DEF / err_procid, err_parse" ]; 178 -> 14 [ label = "SP / set_procid" ]; 178 -> 179 [ label = "'!'..'~'" ]; 178 -> err_178 [ label = "DEF / err_procid, err_parse" ]; 179 -> 14 [ label = "SP / set_procid" ]; 179 -> 180 [ label = "'!'..'~'" ]; 179 -> err_179 [ label = "DEF / err_procid, err_parse" ]; 180 -> 14 [ label = "SP / set_procid" ]; 180 -> 181 [ label = "'!'..'~'" ]; 180 -> err_180 [ label = "DEF / err_procid, err_parse" ]; 181 -> 14 [ label = "SP / set_procid" ]; 181 -> 182 [ label = "'!'..'~'" ]; 181 -> err_181 [ label = "DEF / err_procid, err_parse" ]; 182 -> 14 [ label = "SP / set_procid" ]; 182 -> 183 [ label = "'!'..'~'" ]; 182 -> err_182 [ label = "DEF / err_procid, err_parse" ]; 183 -> 14 [ label = "SP / set_procid" ]; 183 -> 184 [ label = "'!'..'~'" ]; 183 -> err_183 [ label = "DEF / err_procid, err_parse" ]; 184 -> 14 [ label = "SP / set_procid" ]; 184 -> 185 [ label = "'!'..'~'" ]; 184 -> err_184 [ label = "DEF / err_procid, err_parse" ]; 185 -> 14 [ label = "SP / set_procid" ]; 185 -> 186 [ label = "'!'..'~'" ]; 185 -> err_185 [ label = "DEF / err_procid, err_parse" ]; 186 -> 14 [ label = "SP / set_procid" ]; 186 -> 187 [ label = "'!'..'~'" ]; 186 -> err_186 [ label = "DEF / err_procid, err_parse" ]; 187 -> 14 [ label = "SP / set_procid" ]; 187 -> 188 [ label = "'!'..'~'" ]; 187 -> err_187 [ label = "DEF / err_procid, err_parse" ]; 188 -> 14 [ label = "SP / set_procid" ]; 188 -> 189 [ label = "'!'..'~'" ]; 188 -> err_188 [ label = "DEF / err_procid, err_parse" ]; 189 -> 14 [ label = "SP / set_procid" ]; 189 -> 190 [ label = "'!'..'~'" ]; 189 -> err_189 [ label = "DEF / err_procid, err_parse" ]; 190 -> 14 [ label = "SP / set_procid" ]; 190 -> 191 [ label = "'!'..'~'" ]; 190 -> err_190 [ label = "DEF / err_procid, err_parse" ]; 191 -> 14 [ label = "SP / set_procid" ]; 191 -> 192 [ label = "'!'..'~'" ]; 191 -> err_191 [ label = "DEF / err_procid, err_parse" ]; 192 -> 14 [ label = "SP / set_procid" ]; 192 -> 193 [ label = "'!'..'~'" ]; 192 -> err_192 [ label = "DEF / err_procid, err_parse" ]; 193 -> 14 [ label = "SP / set_procid" ]; 193 -> 194 [ label = "'!'..'~'" ]; 193 -> err_193 [ label = "DEF / err_procid, err_parse" ]; 194 -> 14 [ label = "SP / set_procid" ]; 194 -> 195 [ label = "'!'..'~'" ]; 194 -> err_194 [ label = "DEF / err_procid, err_parse" ]; 195 -> 14 [ label = "SP / set_procid" ]; 195 -> 196 [ label = "'!'..'~'" ]; 195 -> err_195 [ label = "DEF / err_procid, err_parse" ]; 196 -> 14 [ label = "SP / set_procid" ]; 196 -> 197 [ label = "'!'..'~'" ]; 196 -> err_196 [ label = "DEF / err_procid, err_parse" ]; 197 -> 14 [ label = "SP / set_procid" ]; 197 -> 198 [ label = "'!'..'~'" ]; 197 -> err_197 [ label = "DEF / err_procid, err_parse" ]; 198 -> 14 [ label = "SP / set_procid" ]; 198 -> 199 [ label = "'!'..'~'" ]; 198 -> err_198 [ label = "DEF / err_procid, err_parse" ]; 199 -> 14 [ label = "SP / set_procid" ]; 199 -> 200 [ label = "'!'..'~'" ]; 199 -> err_199 [ label = "DEF / err_procid, err_parse" ]; 200 -> 14 [ label = "SP / set_procid" ]; 200 -> 201 [ label = "'!'..'~'" ]; 200 -> err_200 [ label = "DEF / err_procid, err_parse" ]; 201 -> 14 [ label = "SP / set_procid" ]; 201 -> 202 [ label = "'!'..'~'" ]; 201 -> err_201 [ label = "DEF / err_procid, err_parse" ]; 202 -> 14 [ label = "SP / set_procid" ]; 202 -> 203 [ label = "'!'..'~'" ]; 202 -> err_202 [ label = "DEF / err_procid, err_parse" ]; 203 -> 14 [ label = "SP / set_procid" ]; 203 -> 204 [ label = "'!'..'~'" ]; 203 -> err_203 [ label = "DEF / err_procid, err_parse" ]; 204 -> 14 [ label = "SP / set_procid" ]; 204 -> 205 [ label = "'!'..'~'" ]; 204 -> err_204 [ label = "DEF / err_procid, err_parse" ]; 205 -> 14 [ label = "SP / set_procid" ]; 205 -> 206 [ label = "'!'..'~'" ]; 205 -> err_205 [ label = "DEF / err_procid, err_parse" ]; 206 -> 14 [ label = "SP / set_procid" ]; 206 -> 207 [ label = "'!'..'~'" ]; 206 -> err_206 [ label = "DEF / err_procid, err_parse" ]; 207 -> 14 [ label = "SP / set_procid" ]; 207 -> 208 [ label = "'!'..'~'" ]; 207 -> err_207 [ label = "DEF / err_procid, err_parse" ]; 208 -> 14 [ label = "SP / set_procid" ]; 208 -> 209 [ label = "'!'..'~'" ]; 208 -> err_208 [ label = "DEF / err_procid, err_parse" ]; 209 -> 14 [ label = "SP / set_procid" ]; 209 -> 210 [ label = "'!'..'~'" ]; 209 -> err_209 [ label = "DEF / err_procid, err_parse" ]; 210 -> 14 [ label = "SP / set_procid" ]; 210 -> 211 [ label = "'!'..'~'" ]; 210 -> err_210 [ label = "DEF / err_procid, err_parse" ]; 211 -> 14 [ label = "SP / set_procid" ]; 211 -> 212 [ label = "'!'..'~'" ]; 211 -> err_211 [ label = "DEF / err_procid, err_parse" ]; 212 -> 14 [ label = "SP / set_procid" ]; 212 -> 213 [ label = "'!'..'~'" ]; 212 -> err_212 [ label = "DEF / err_procid, err_parse" ]; 213 -> 14 [ label = "SP / set_procid" ]; 213 -> 214 [ label = "'!'..'~'" ]; 213 -> err_213 [ label = "DEF / err_procid, err_parse" ]; 214 -> 14 [ label = "SP / set_procid" ]; 214 -> 215 [ label = "'!'..'~'" ]; 214 -> err_214 [ label = "DEF / err_procid, err_parse" ]; 215 -> 14 [ label = "SP / set_procid" ]; 215 -> 216 [ label = "'!'..'~'" ]; 215 -> err_215 [ label = "DEF / err_procid, err_parse" ]; 216 -> 14 [ label = "SP / set_procid" ]; 216 -> 217 [ label = "'!'..'~'" ]; 216 -> err_216 [ label = "DEF / err_procid, err_parse" ]; 217 -> 14 [ label = "SP / set_procid" ]; 217 -> 218 [ label = "'!'..'~'" ]; 217 -> err_217 [ label = "DEF / err_procid, err_parse" ]; 218 -> 14 [ label = "SP / set_procid" ]; 218 -> 219 [ label = "'!'..'~'" ]; 218 -> err_218 [ label = "DEF / err_procid, err_parse" ]; 219 -> 14 [ label = "SP / set_procid" ]; 219 -> 220 [ label = "'!'..'~'" ]; 219 -> err_219 [ label = "DEF / err_procid, err_parse" ]; 220 -> 14 [ label = "SP / set_procid" ]; 220 -> 221 [ label = "'!'..'~'" ]; 220 -> err_220 [ label = "DEF / err_procid, err_parse" ]; 221 -> 14 [ label = "SP / set_procid" ]; 221 -> 222 [ label = "'!'..'~'" ]; 221 -> err_221 [ label = "DEF / err_procid, err_parse" ]; 222 -> 14 [ label = "SP / set_procid" ]; 222 -> 223 [ label = "'!'..'~'" ]; 222 -> err_222 [ label = "DEF / err_procid, err_parse" ]; 223 -> 14 [ label = "SP / set_procid" ]; 223 -> 224 [ label = "'!'..'~'" ]; 223 -> err_223 [ label = "DEF / err_procid, err_parse" ]; 224 -> 14 [ label = "SP / set_procid" ]; 224 -> 225 [ label = "'!'..'~'" ]; 224 -> err_224 [ label = "DEF / err_procid, err_parse" ]; 225 -> 14 [ label = "SP / set_procid" ]; 225 -> 226 [ label = "'!'..'~'" ]; 225 -> err_225 [ label = "DEF / err_procid, err_parse" ]; 226 -> 14 [ label = "SP / set_procid" ]; 226 -> 227 [ label = "'!'..'~'" ]; 226 -> err_226 [ label = "DEF / err_procid, err_parse" ]; 227 -> 14 [ label = "SP / set_procid" ]; 227 -> 228 [ label = "'!'..'~'" ]; 227 -> err_227 [ label = "DEF / err_procid, err_parse" ]; 228 -> 14 [ label = "SP / set_procid" ]; 228 -> 229 [ label = "'!'..'~'" ]; 228 -> err_228 [ label = "DEF / err_procid, err_parse" ]; 229 -> 14 [ label = "SP / set_procid" ]; 229 -> 230 [ label = "'!'..'~'" ]; 229 -> err_229 [ label = "DEF / err_procid, err_parse" ]; 230 -> 14 [ label = "SP / set_procid" ]; 230 -> 231 [ label = "'!'..'~'" ]; 230 -> err_230 [ label = "DEF / err_procid, err_parse" ]; 231 -> 14 [ label = "SP / set_procid" ]; 231 -> 232 [ label = "'!'..'~'" ]; 231 -> err_231 [ label = "DEF / err_procid, err_parse" ]; 232 -> 14 [ label = "SP / set_procid" ]; 232 -> 233 [ label = "'!'..'~'" ]; 232 -> err_232 [ label = "DEF / err_procid, err_parse" ]; 233 -> 14 [ label = "SP / set_procid" ]; 233 -> 234 [ label = "'!'..'~'" ]; 233 -> err_233 [ label = "DEF / err_procid, err_parse" ]; 234 -> 14 [ label = "SP / set_procid" ]; 234 -> 235 [ label = "'!'..'~'" ]; 234 -> err_234 [ label = "DEF / err_procid, err_parse" ]; 235 -> 14 [ label = "SP / set_procid" ]; 235 -> 236 [ label = "'!'..'~'" ]; 235 -> err_235 [ label = "DEF / err_procid, err_parse" ]; 236 -> 14 [ label = "SP / set_procid" ]; 236 -> 237 [ label = "'!'..'~'" ]; 236 -> err_236 [ label = "DEF / err_procid, err_parse" ]; 237 -> 14 [ label = "SP / set_procid" ]; 237 -> 238 [ label = "'!'..'~'" ]; 237 -> err_237 [ label = "DEF / err_procid, err_parse" ]; 238 -> 14 [ label = "SP / set_procid" ]; 238 -> 239 [ label = "'!'..'~'" ]; 238 -> err_238 [ label = "DEF / err_procid, err_parse" ]; 239 -> 14 [ label = "SP / set_procid" ]; 239 -> 240 [ label = "'!'..'~'" ]; 239 -> err_239 [ label = "DEF / err_procid, err_parse" ]; 240 -> 14 [ label = "SP / set_procid" ]; 240 -> 241 [ label = "'!'..'~'" ]; 240 -> err_240 [ label = "DEF / err_procid, err_parse" ]; 241 -> 14 [ label = "SP / set_procid" ]; 241 -> 242 [ label = "'!'..'~'" ]; 241 -> err_241 [ label = "DEF / err_procid, err_parse" ]; 242 -> 14 [ label = "SP / set_procid" ]; 242 -> 243 [ label = "'!'..'~'" ]; 242 -> err_242 [ label = "DEF / err_procid, err_parse" ]; 243 -> 14 [ label = "SP / set_procid" ]; 243 -> 244 [ label = "'!'..'~'" ]; 243 -> err_243 [ label = "DEF / err_procid, err_parse" ]; 244 -> 14 [ label = "SP / set_procid" ]; 244 -> 245 [ label = "'!'..'~'" ]; 244 -> err_244 [ label = "DEF / err_procid, err_parse" ]; 245 -> 14 [ label = "SP / set_procid" ]; 245 -> 246 [ label = "'!'..'~'" ]; 245 -> err_245 [ label = "DEF / err_procid, err_parse" ]; 246 -> 14 [ label = "SP / set_procid" ]; 246 -> 247 [ label = "'!'..'~'" ]; 246 -> err_246 [ label = "DEF / err_procid, err_parse" ]; 247 -> 14 [ label = "SP / set_procid" ]; 247 -> 248 [ label = "'!'..'~'" ]; 247 -> err_247 [ label = "DEF / err_procid, err_parse" ]; 248 -> 14 [ label = "SP / set_procid" ]; 248 -> 249 [ label = "'!'..'~'" ]; 248 -> err_248 [ label = "DEF / err_procid, err_parse" ]; 249 -> 14 [ label = "SP / set_procid" ]; 249 -> 250 [ label = "'!'..'~'" ]; 249 -> err_249 [ label = "DEF / err_procid, err_parse" ]; 250 -> 14 [ label = "SP / set_procid" ]; 250 -> 251 [ label = "'!'..'~'" ]; 250 -> err_250 [ label = "DEF / err_procid, err_parse" ]; 251 -> 14 [ label = "SP / set_procid" ]; 251 -> 252 [ label = "'!'..'~'" ]; 251 -> err_251 [ label = "DEF / err_procid, err_parse" ]; 252 -> 14 [ label = "SP / set_procid" ]; 252 -> 253 [ label = "'!'..'~'" ]; 252 -> err_252 [ label = "DEF / err_procid, err_parse" ]; 253 -> 14 [ label = "SP / set_procid" ]; 253 -> 254 [ label = "'!'..'~'" ]; 253 -> err_253 [ label = "DEF / err_procid, err_parse" ]; 254 -> 14 [ label = "SP / set_procid" ]; 254 -> 255 [ label = "'!'..'~'" ]; 254 -> err_254 [ label = "DEF / err_procid, err_parse" ]; 255 -> 14 [ label = "SP / set_procid" ]; 255 -> 256 [ label = "'!'..'~'" ]; 255 -> err_255 [ label = "DEF / err_procid, err_parse" ]; 256 -> 14 [ label = "SP / set_procid" ]; 256 -> 257 [ label = "'!'..'~'" ]; 256 -> err_256 [ label = "DEF / err_procid, err_parse" ]; 257 -> 14 [ label = "SP / set_procid" ]; 257 -> 258 [ label = "'!'..'~'" ]; 257 -> err_257 [ label = "DEF / err_procid, err_parse" ]; 258 -> 14 [ label = "SP / set_procid" ]; 258 -> 259 [ label = "'!'..'~'" ]; 258 -> err_258 [ label = "DEF / err_procid, err_parse" ]; 259 -> 14 [ label = "SP / set_procid" ]; 259 -> err_259 [ label = "DEF / err_procid, err_parse" ]; 260 -> 12 [ label = "SP / set_appname" ]; 260 -> 261 [ label = "'!'..'~'" ]; 260 -> err_260 [ label = "DEF / err_appname, err_parse" ]; 261 -> 12 [ label = "SP / set_appname" ]; 261 -> 262 [ label = "'!'..'~'" ]; 261 -> err_261 [ label = "DEF / err_appname, err_parse" ]; 262 -> 12 [ label = "SP / set_appname" ]; 262 -> 263 [ label = "'!'..'~'" ]; 262 -> err_262 [ label = "DEF / err_appname, err_parse" ]; 263 -> 12 [ label = "SP / set_appname" ]; 263 -> 264 [ label = "'!'..'~'" ]; 263 -> err_263 [ label = "DEF / err_appname, err_parse" ]; 264 -> 12 [ label = "SP / set_appname" ]; 264 -> 265 [ label = "'!'..'~'" ]; 264 -> err_264 [ label = "DEF / err_appname, err_parse" ]; 265 -> 12 [ label = "SP / set_appname" ]; 265 -> 266 [ label = "'!'..'~'" ]; 265 -> err_265 [ label = "DEF / err_appname, err_parse" ]; 266 -> 12 [ label = "SP / set_appname" ]; 266 -> 267 [ label = "'!'..'~'" ]; 266 -> err_266 [ label = "DEF / err_appname, err_parse" ]; 267 -> 12 [ label = "SP / set_appname" ]; 267 -> 268 [ label = "'!'..'~'" ]; 267 -> err_267 [ label = "DEF / err_appname, err_parse" ]; 268 -> 12 [ label = "SP / set_appname" ]; 268 -> 269 [ label = "'!'..'~'" ]; 268 -> err_268 [ label = "DEF / err_appname, err_parse" ]; 269 -> 12 [ label = "SP / set_appname" ]; 269 -> 270 [ label = "'!'..'~'" ]; 269 -> err_269 [ label = "DEF / err_appname, err_parse" ]; 270 -> 12 [ label = "SP / set_appname" ]; 270 -> 271 [ label = "'!'..'~'" ]; 270 -> err_270 [ label = "DEF / err_appname, err_parse" ]; 271 -> 12 [ label = "SP / set_appname" ]; 271 -> 272 [ label = "'!'..'~'" ]; 271 -> err_271 [ label = "DEF / err_appname, err_parse" ]; 272 -> 12 [ label = "SP / set_appname" ]; 272 -> 273 [ label = "'!'..'~'" ]; 272 -> err_272 [ label = "DEF / err_appname, err_parse" ]; 273 -> 12 [ label = "SP / set_appname" ]; 273 -> 274 [ label = "'!'..'~'" ]; 273 -> err_273 [ label = "DEF / err_appname, err_parse" ]; 274 -> 12 [ label = "SP / set_appname" ]; 274 -> 275 [ label = "'!'..'~'" ]; 274 -> err_274 [ label = "DEF / err_appname, err_parse" ]; 275 -> 12 [ label = "SP / set_appname" ]; 275 -> 276 [ label = "'!'..'~'" ]; 275 -> err_275 [ label = "DEF / err_appname, err_parse" ]; 276 -> 12 [ label = "SP / set_appname" ]; 276 -> 277 [ label = "'!'..'~'" ]; 276 -> err_276 [ label = "DEF / err_appname, err_parse" ]; 277 -> 12 [ label = "SP / set_appname" ]; 277 -> 278 [ label = "'!'..'~'" ]; 277 -> err_277 [ label = "DEF / err_appname, err_parse" ]; 278 -> 12 [ label = "SP / set_appname" ]; 278 -> 279 [ label = "'!'..'~'" ]; 278 -> err_278 [ label = "DEF / err_appname, err_parse" ]; 279 -> 12 [ label = "SP / set_appname" ]; 279 -> 280 [ label = "'!'..'~'" ]; 279 -> err_279 [ label = "DEF / err_appname, err_parse" ]; 280 -> 12 [ label = "SP / set_appname" ]; 280 -> 281 [ label = "'!'..'~'" ]; 280 -> err_280 [ label = "DEF / err_appname, err_parse" ]; 281 -> 12 [ label = "SP / set_appname" ]; 281 -> 282 [ label = "'!'..'~'" ]; 281 -> err_281 [ label = "DEF / err_appname, err_parse" ]; 282 -> 12 [ label = "SP / set_appname" ]; 282 -> 283 [ label = "'!'..'~'" ]; 282 -> err_282 [ label = "DEF / err_appname, err_parse" ]; 283 -> 12 [ label = "SP / set_appname" ]; 283 -> 284 [ label = "'!'..'~'" ]; 283 -> err_283 [ label = "DEF / err_appname, err_parse" ]; 284 -> 12 [ label = "SP / set_appname" ]; 284 -> 285 [ label = "'!'..'~'" ]; 284 -> err_284 [ label = "DEF / err_appname, err_parse" ]; 285 -> 12 [ label = "SP / set_appname" ]; 285 -> 286 [ label = "'!'..'~'" ]; 285 -> err_285 [ label = "DEF / err_appname, err_parse" ]; 286 -> 12 [ label = "SP / set_appname" ]; 286 -> 287 [ label = "'!'..'~'" ]; 286 -> err_286 [ label = "DEF / err_appname, err_parse" ]; 287 -> 12 [ label = "SP / set_appname" ]; 287 -> 288 [ label = "'!'..'~'" ]; 287 -> err_287 [ label = "DEF / err_appname, err_parse" ]; 288 -> 12 [ label = "SP / set_appname" ]; 288 -> 289 [ label = "'!'..'~'" ]; 288 -> err_288 [ label = "DEF / err_appname, err_parse" ]; 289 -> 12 [ label = "SP / set_appname" ]; 289 -> 290 [ label = "'!'..'~'" ]; 289 -> err_289 [ label = "DEF / err_appname, err_parse" ]; 290 -> 12 [ label = "SP / set_appname" ]; 290 -> 291 [ label = "'!'..'~'" ]; 290 -> err_290 [ label = "DEF / err_appname, err_parse" ]; 291 -> 12 [ label = "SP / set_appname" ]; 291 -> 292 [ label = "'!'..'~'" ]; 291 -> err_291 [ label = "DEF / err_appname, err_parse" ]; 292 -> 12 [ label = "SP / set_appname" ]; 292 -> 293 [ label = "'!'..'~'" ]; 292 -> err_292 [ label = "DEF / err_appname, err_parse" ]; 293 -> 12 [ label = "SP / set_appname" ]; 293 -> 294 [ label = "'!'..'~'" ]; 293 -> err_293 [ label = "DEF / err_appname, err_parse" ]; 294 -> 12 [ label = "SP / set_appname" ]; 294 -> 295 [ label = "'!'..'~'" ]; 294 -> err_294 [ label = "DEF / err_appname, err_parse" ]; 295 -> 12 [ label = "SP / set_appname" ]; 295 -> 296 [ label = "'!'..'~'" ]; 295 -> err_295 [ label = "DEF / err_appname, err_parse" ]; 296 -> 12 [ label = "SP / set_appname" ]; 296 -> 297 [ label = "'!'..'~'" ]; 296 -> err_296 [ label = "DEF / err_appname, err_parse" ]; 297 -> 12 [ label = "SP / set_appname" ]; 297 -> 298 [ label = "'!'..'~'" ]; 297 -> err_297 [ label = "DEF / err_appname, err_parse" ]; 298 -> 12 [ label = "SP / set_appname" ]; 298 -> 299 [ label = "'!'..'~'" ]; 298 -> err_298 [ label = "DEF / err_appname, err_parse" ]; 299 -> 12 [ label = "SP / set_appname" ]; 299 -> 300 [ label = "'!'..'~'" ]; 299 -> err_299 [ label = "DEF / err_appname, err_parse" ]; 300 -> 12 [ label = "SP / set_appname" ]; 300 -> 301 [ label = "'!'..'~'" ]; 300 -> err_300 [ label = "DEF / err_appname, err_parse" ]; 301 -> 12 [ label = "SP / set_appname" ]; 301 -> 302 [ label = "'!'..'~'" ]; 301 -> err_301 [ label = "DEF / err_appname, err_parse" ]; 302 -> 12 [ label = "SP / set_appname" ]; 302 -> 303 [ label = "'!'..'~'" ]; 302 -> err_302 [ label = "DEF / err_appname, err_parse" ]; 303 -> 12 [ label = "SP / set_appname" ]; 303 -> 304 [ label = "'!'..'~'" ]; 303 -> err_303 [ label = "DEF / err_appname, err_parse" ]; 304 -> 12 [ label = "SP / set_appname" ]; 304 -> 305 [ label = "'!'..'~'" ]; 304 -> err_304 [ label = "DEF / err_appname, err_parse" ]; 305 -> 12 [ label = "SP / set_appname" ]; 305 -> 306 [ label = "'!'..'~'" ]; 305 -> err_305 [ label = "DEF / err_appname, err_parse" ]; 306 -> 12 [ label = "SP / set_appname" ]; 306 -> err_306 [ label = "DEF / err_appname, err_parse" ]; 307 -> 10 [ label = "SP / set_hostname" ]; 307 -> 308 [ label = "'!'..'~'" ]; 307 -> err_307 [ label = "DEF / err_hostname, err_parse" ]; 308 -> 10 [ label = "SP / set_hostname" ]; 308 -> 309 [ label = "'!'..'~'" ]; 308 -> err_308 [ label = "DEF / err_hostname, err_parse" ]; 309 -> 10 [ label = "SP / set_hostname" ]; 309 -> 310 [ label = "'!'..'~'" ]; 309 -> err_309 [ label = "DEF / err_hostname, err_parse" ]; 310 -> 10 [ label = "SP / set_hostname" ]; 310 -> 311 [ label = "'!'..'~'" ]; 310 -> err_310 [ label = "DEF / err_hostname, err_parse" ]; 311 -> 10 [ label = "SP / set_hostname" ]; 311 -> 312 [ label = "'!'..'~'" ]; 311 -> err_311 [ label = "DEF / err_hostname, err_parse" ]; 312 -> 10 [ label = "SP / set_hostname" ]; 312 -> 313 [ label = "'!'..'~'" ]; 312 -> err_312 [ label = "DEF / err_hostname, err_parse" ]; 313 -> 10 [ label = "SP / set_hostname" ]; 313 -> 314 [ label = "'!'..'~'" ]; 313 -> err_313 [ label = "DEF / err_hostname, err_parse" ]; 314 -> 10 [ label = "SP / set_hostname" ]; 314 -> 315 [ label = "'!'..'~'" ]; 314 -> err_314 [ label = "DEF / err_hostname, err_parse" ]; 315 -> 10 [ label = "SP / set_hostname" ]; 315 -> 316 [ label = "'!'..'~'" ]; 315 -> err_315 [ label = "DEF / err_hostname, err_parse" ]; 316 -> 10 [ label = "SP / set_hostname" ]; 316 -> 317 [ label = "'!'..'~'" ]; 316 -> err_316 [ label = "DEF / err_hostname, err_parse" ]; 317 -> 10 [ label = "SP / set_hostname" ]; 317 -> 318 [ label = "'!'..'~'" ]; 317 -> err_317 [ label = "DEF / err_hostname, err_parse" ]; 318 -> 10 [ label = "SP / set_hostname" ]; 318 -> 319 [ label = "'!'..'~'" ]; 318 -> err_318 [ label = "DEF / err_hostname, err_parse" ]; 319 -> 10 [ label = "SP / set_hostname" ]; 319 -> 320 [ label = "'!'..'~'" ]; 319 -> err_319 [ label = "DEF / err_hostname, err_parse" ]; 320 -> 10 [ label = "SP / set_hostname" ]; 320 -> 321 [ label = "'!'..'~'" ]; 320 -> err_320 [ label = "DEF / err_hostname, err_parse" ]; 321 -> 10 [ label = "SP / set_hostname" ]; 321 -> 322 [ label = "'!'..'~'" ]; 321 -> err_321 [ label = "DEF / err_hostname, err_parse" ]; 322 -> 10 [ label = "SP / set_hostname" ]; 322 -> 323 [ label = "'!'..'~'" ]; 322 -> err_322 [ label = "DEF / err_hostname, err_parse" ]; 323 -> 10 [ label = "SP / set_hostname" ]; 323 -> 324 [ label = "'!'..'~'" ]; 323 -> err_323 [ label = "DEF / err_hostname, err_parse" ]; 324 -> 10 [ label = "SP / set_hostname" ]; 324 -> 325 [ label = "'!'..'~'" ]; 324 -> err_324 [ label = "DEF / err_hostname, err_parse" ]; 325 -> 10 [ label = "SP / set_hostname" ]; 325 -> 326 [ label = "'!'..'~'" ]; 325 -> err_325 [ label = "DEF / err_hostname, err_parse" ]; 326 -> 10 [ label = "SP / set_hostname" ]; 326 -> 327 [ label = "'!'..'~'" ]; 326 -> err_326 [ label = "DEF / err_hostname, err_parse" ]; 327 -> 10 [ label = "SP / set_hostname" ]; 327 -> 328 [ label = "'!'..'~'" ]; 327 -> err_327 [ label = "DEF / err_hostname, err_parse" ]; 328 -> 10 [ label = "SP / set_hostname" ]; 328 -> 329 [ label = "'!'..'~'" ]; 328 -> err_328 [ label = "DEF / err_hostname, err_parse" ]; 329 -> 10 [ label = "SP / set_hostname" ]; 329 -> 330 [ label = "'!'..'~'" ]; 329 -> err_329 [ label = "DEF / err_hostname, err_parse" ]; 330 -> 10 [ label = "SP / set_hostname" ]; 330 -> 331 [ label = "'!'..'~'" ]; 330 -> err_330 [ label = "DEF / err_hostname, err_parse" ]; 331 -> 10 [ label = "SP / set_hostname" ]; 331 -> 332 [ label = "'!'..'~'" ]; 331 -> err_331 [ label = "DEF / err_hostname, err_parse" ]; 332 -> 10 [ label = "SP / set_hostname" ]; 332 -> 333 [ label = "'!'..'~'" ]; 332 -> err_332 [ label = "DEF / err_hostname, err_parse" ]; 333 -> 10 [ label = "SP / set_hostname" ]; 333 -> 334 [ label = "'!'..'~'" ]; 333 -> err_333 [ label = "DEF / err_hostname, err_parse" ]; 334 -> 10 [ label = "SP / set_hostname" ]; 334 -> 335 [ label = "'!'..'~'" ]; 334 -> err_334 [ label = "DEF / err_hostname, err_parse" ]; 335 -> 10 [ label = "SP / set_hostname" ]; 335 -> 336 [ label = "'!'..'~'" ]; 335 -> err_335 [ label = "DEF / err_hostname, err_parse" ]; 336 -> 10 [ label = "SP / set_hostname" ]; 336 -> 337 [ label = "'!'..'~'" ]; 336 -> err_336 [ label = "DEF / err_hostname, err_parse" ]; 337 -> 10 [ label = "SP / set_hostname" ]; 337 -> 338 [ label = "'!'..'~'" ]; 337 -> err_337 [ label = "DEF / err_hostname, err_parse" ]; 338 -> 10 [ label = "SP / set_hostname" ]; 338 -> 339 [ label = "'!'..'~'" ]; 338 -> err_338 [ label = "DEF / err_hostname, err_parse" ]; 339 -> 10 [ label = "SP / set_hostname" ]; 339 -> 340 [ label = "'!'..'~'" ]; 339 -> err_339 [ label = "DEF / err_hostname, err_parse" ]; 340 -> 10 [ label = "SP / set_hostname" ]; 340 -> 341 [ label = "'!'..'~'" ]; 340 -> err_340 [ label = "DEF / err_hostname, err_parse" ]; 341 -> 10 [ label = "SP / set_hostname" ]; 341 -> 342 [ label = "'!'..'~'" ]; 341 -> err_341 [ label = "DEF / err_hostname, err_parse" ]; 342 -> 10 [ label = "SP / set_hostname" ]; 342 -> 343 [ label = "'!'..'~'" ]; 342 -> err_342 [ label = "DEF / err_hostname, err_parse" ]; 343 -> 10 [ label = "SP / set_hostname" ]; 343 -> 344 [ label = "'!'..'~'" ]; 343 -> err_343 [ label = "DEF / err_hostname, err_parse" ]; 344 -> 10 [ label = "SP / set_hostname" ]; 344 -> 345 [ label = "'!'..'~'" ]; 344 -> err_344 [ label = "DEF / err_hostname, err_parse" ]; 345 -> 10 [ label = "SP / set_hostname" ]; 345 -> 346 [ label = "'!'..'~'" ]; 345 -> err_345 [ label = "DEF / err_hostname, err_parse" ]; 346 -> 10 [ label = "SP / set_hostname" ]; 346 -> 347 [ label = "'!'..'~'" ]; 346 -> err_346 [ label = "DEF / err_hostname, err_parse" ]; 347 -> 10 [ label = "SP / set_hostname" ]; 347 -> 348 [ label = "'!'..'~'" ]; 347 -> err_347 [ label = "DEF / err_hostname, err_parse" ]; 348 -> 10 [ label = "SP / set_hostname" ]; 348 -> 349 [ label = "'!'..'~'" ]; 348 -> err_348 [ label = "DEF / err_hostname, err_parse" ]; 349 -> 10 [ label = "SP / set_hostname" ]; 349 -> 350 [ label = "'!'..'~'" ]; 349 -> err_349 [ label = "DEF / err_hostname, err_parse" ]; 350 -> 10 [ label = "SP / set_hostname" ]; 350 -> 351 [ label = "'!'..'~'" ]; 350 -> err_350 [ label = "DEF / err_hostname, err_parse" ]; 351 -> 10 [ label = "SP / set_hostname" ]; 351 -> 352 [ label = "'!'..'~'" ]; 351 -> err_351 [ label = "DEF / err_hostname, err_parse" ]; 352 -> 10 [ label = "SP / set_hostname" ]; 352 -> 353 [ label = "'!'..'~'" ]; 352 -> err_352 [ label = "DEF / err_hostname, err_parse" ]; 353 -> 10 [ label = "SP / set_hostname" ]; 353 -> 354 [ label = "'!'..'~'" ]; 353 -> err_353 [ label = "DEF / err_hostname, err_parse" ]; 354 -> 10 [ label = "SP / set_hostname" ]; 354 -> 355 [ label = "'!'..'~'" ]; 354 -> err_354 [ label = "DEF / err_hostname, err_parse" ]; 355 -> 10 [ label = "SP / set_hostname" ]; 355 -> 356 [ label = "'!'..'~'" ]; 355 -> err_355 [ label = "DEF / err_hostname, err_parse" ]; 356 -> 10 [ label = "SP / set_hostname" ]; 356 -> 357 [ label = "'!'..'~'" ]; 356 -> err_356 [ label = "DEF / err_hostname, err_parse" ]; 357 -> 10 [ label = "SP / set_hostname" ]; 357 -> 358 [ label = "'!'..'~'" ]; 357 -> err_357 [ label = "DEF / err_hostname, err_parse" ]; 358 -> 10 [ label = "SP / set_hostname" ]; 358 -> 359 [ label = "'!'..'~'" ]; 358 -> err_358 [ label = "DEF / err_hostname, err_parse" ]; 359 -> 10 [ label = "SP / set_hostname" ]; 359 -> 360 [ label = "'!'..'~'" ]; 359 -> err_359 [ label = "DEF / err_hostname, err_parse" ]; 360 -> 10 [ label = "SP / set_hostname" ]; 360 -> 361 [ label = "'!'..'~'" ]; 360 -> err_360 [ label = "DEF / err_hostname, err_parse" ]; 361 -> 10 [ label = "SP / set_hostname" ]; 361 -> 362 [ label = "'!'..'~'" ]; 361 -> err_361 [ label = "DEF / err_hostname, err_parse" ]; 362 -> 10 [ label = "SP / set_hostname" ]; 362 -> 363 [ label = "'!'..'~'" ]; 362 -> err_362 [ label = "DEF / err_hostname, err_parse" ]; 363 -> 10 [ label = "SP / set_hostname" ]; 363 -> 364 [ label = "'!'..'~'" ]; 363 -> err_363 [ label = "DEF / err_hostname, err_parse" ]; 364 -> 10 [ label = "SP / set_hostname" ]; 364 -> 365 [ label = "'!'..'~'" ]; 364 -> err_364 [ label = "DEF / err_hostname, err_parse" ]; 365 -> 10 [ label = "SP / set_hostname" ]; 365 -> 366 [ label = "'!'..'~'" ]; 365 -> err_365 [ label = "DEF / err_hostname, err_parse" ]; 366 -> 10 [ label = "SP / set_hostname" ]; 366 -> 367 [ label = "'!'..'~'" ]; 366 -> err_366 [ label = "DEF / err_hostname, err_parse" ]; 367 -> 10 [ label = "SP / set_hostname" ]; 367 -> 368 [ label = "'!'..'~'" ]; 367 -> err_367 [ label = "DEF / err_hostname, err_parse" ]; 368 -> 10 [ label = "SP / set_hostname" ]; 368 -> 369 [ label = "'!'..'~'" ]; 368 -> err_368 [ label = "DEF / err_hostname, err_parse" ]; 369 -> 10 [ label = "SP / set_hostname" ]; 369 -> 370 [ label = "'!'..'~'" ]; 369 -> err_369 [ label = "DEF / err_hostname, err_parse" ]; 370 -> 10 [ label = "SP / set_hostname" ]; 370 -> 371 [ label = "'!'..'~'" ]; 370 -> err_370 [ label = "DEF / err_hostname, err_parse" ]; 371 -> 10 [ label = "SP / set_hostname" ]; 371 -> 372 [ label = "'!'..'~'" ]; 371 -> err_371 [ label = "DEF / err_hostname, err_parse" ]; 372 -> 10 [ label = "SP / set_hostname" ]; 372 -> 373 [ label = "'!'..'~'" ]; 372 -> err_372 [ label = "DEF / err_hostname, err_parse" ]; 373 -> 10 [ label = "SP / set_hostname" ]; 373 -> 374 [ label = "'!'..'~'" ]; 373 -> err_373 [ label = "DEF / err_hostname, err_parse" ]; 374 -> 10 [ label = "SP / set_hostname" ]; 374 -> 375 [ label = "'!'..'~'" ]; 374 -> err_374 [ label = "DEF / err_hostname, err_parse" ]; 375 -> 10 [ label = "SP / set_hostname" ]; 375 -> 376 [ label = "'!'..'~'" ]; 375 -> err_375 [ label = "DEF / err_hostname, err_parse" ]; 376 -> 10 [ label = "SP / set_hostname" ]; 376 -> 377 [ label = "'!'..'~'" ]; 376 -> err_376 [ label = "DEF / err_hostname, err_parse" ]; 377 -> 10 [ label = "SP / set_hostname" ]; 377 -> 378 [ label = "'!'..'~'" ]; 377 -> err_377 [ label = "DEF / err_hostname, err_parse" ]; 378 -> 10 [ label = "SP / set_hostname" ]; 378 -> 379 [ label = "'!'..'~'" ]; 378 -> err_378 [ label = "DEF / err_hostname, err_parse" ]; 379 -> 10 [ label = "SP / set_hostname" ]; 379 -> 380 [ label = "'!'..'~'" ]; 379 -> err_379 [ label = "DEF / err_hostname, err_parse" ]; 380 -> 10 [ label = "SP / set_hostname" ]; 380 -> 381 [ label = "'!'..'~'" ]; 380 -> err_380 [ label = "DEF / err_hostname, err_parse" ]; 381 -> 10 [ label = "SP / set_hostname" ]; 381 -> 382 [ label = "'!'..'~'" ]; 381 -> err_381 [ label = "DEF / err_hostname, err_parse" ]; 382 -> 10 [ label = "SP / set_hostname" ]; 382 -> 383 [ label = "'!'..'~'" ]; 382 -> err_382 [ label = "DEF / err_hostname, err_parse" ]; 383 -> 10 [ label = "SP / set_hostname" ]; 383 -> 384 [ label = "'!'..'~'" ]; 383 -> err_383 [ label = "DEF / err_hostname, err_parse" ]; 384 -> 10 [ label = "SP / set_hostname" ]; 384 -> 385 [ label = "'!'..'~'" ]; 384 -> err_384 [ label = "DEF / err_hostname, err_parse" ]; 385 -> 10 [ label = "SP / set_hostname" ]; 385 -> 386 [ label = "'!'..'~'" ]; 385 -> err_385 [ label = "DEF / err_hostname, err_parse" ]; 386 -> 10 [ label = "SP / set_hostname" ]; 386 -> 387 [ label = "'!'..'~'" ]; 386 -> err_386 [ label = "DEF / err_hostname, err_parse" ]; 387 -> 10 [ label = "SP / set_hostname" ]; 387 -> 388 [ label = "'!'..'~'" ]; 387 -> err_387 [ label = "DEF / err_hostname, err_parse" ]; 388 -> 10 [ label = "SP / set_hostname" ]; 388 -> 389 [ label = "'!'..'~'" ]; 388 -> err_388 [ label = "DEF / err_hostname, err_parse" ]; 389 -> 10 [ label = "SP / set_hostname" ]; 389 -> 390 [ label = "'!'..'~'" ]; 389 -> err_389 [ label = "DEF / err_hostname, err_parse" ]; 390 -> 10 [ label = "SP / set_hostname" ]; 390 -> 391 [ label = "'!'..'~'" ]; 390 -> err_390 [ label = "DEF / err_hostname, err_parse" ]; 391 -> 10 [ label = "SP / set_hostname" ]; 391 -> 392 [ label = "'!'..'~'" ]; 391 -> err_391 [ label = "DEF / err_hostname, err_parse" ]; 392 -> 10 [ label = "SP / set_hostname" ]; 392 -> 393 [ label = "'!'..'~'" ]; 392 -> err_392 [ label = "DEF / err_hostname, err_parse" ]; 393 -> 10 [ label = "SP / set_hostname" ]; 393 -> 394 [ label = "'!'..'~'" ]; 393 -> err_393 [ label = "DEF / err_hostname, err_parse" ]; 394 -> 10 [ label = "SP / set_hostname" ]; 394 -> 395 [ label = "'!'..'~'" ]; 394 -> err_394 [ label = "DEF / err_hostname, err_parse" ]; 395 -> 10 [ label = "SP / set_hostname" ]; 395 -> 396 [ label = "'!'..'~'" ]; 395 -> err_395 [ label = "DEF / err_hostname, err_parse" ]; 396 -> 10 [ label = "SP / set_hostname" ]; 396 -> 397 [ label = "'!'..'~'" ]; 396 -> err_396 [ label = "DEF / err_hostname, err_parse" ]; 397 -> 10 [ label = "SP / set_hostname" ]; 397 -> 398 [ label = "'!'..'~'" ]; 397 -> err_397 [ label = "DEF / err_hostname, err_parse" ]; 398 -> 10 [ label = "SP / set_hostname" ]; 398 -> 399 [ label = "'!'..'~'" ]; 398 -> err_398 [ label = "DEF / err_hostname, err_parse" ]; 399 -> 10 [ label = "SP / set_hostname" ]; 399 -> 400 [ label = "'!'..'~'" ]; 399 -> err_399 [ label = "DEF / err_hostname, err_parse" ]; 400 -> 10 [ label = "SP / set_hostname" ]; 400 -> 401 [ label = "'!'..'~'" ]; 400 -> err_400 [ label = "DEF / err_hostname, err_parse" ]; 401 -> 10 [ label = "SP / set_hostname" ]; 401 -> 402 [ label = "'!'..'~'" ]; 401 -> err_401 [ label = "DEF / err_hostname, err_parse" ]; 402 -> 10 [ label = "SP / set_hostname" ]; 402 -> 403 [ label = "'!'..'~'" ]; 402 -> err_402 [ label = "DEF / err_hostname, err_parse" ]; 403 -> 10 [ label = "SP / set_hostname" ]; 403 -> 404 [ label = "'!'..'~'" ]; 403 -> err_403 [ label = "DEF / err_hostname, err_parse" ]; 404 -> 10 [ label = "SP / set_hostname" ]; 404 -> 405 [ label = "'!'..'~'" ]; 404 -> err_404 [ label = "DEF / err_hostname, err_parse" ]; 405 -> 10 [ label = "SP / set_hostname" ]; 405 -> 406 [ label = "'!'..'~'" ]; 405 -> err_405 [ label = "DEF / err_hostname, err_parse" ]; 406 -> 10 [ label = "SP / set_hostname" ]; 406 -> 407 [ label = "'!'..'~'" ]; 406 -> err_406 [ label = "DEF / err_hostname, err_parse" ]; 407 -> 10 [ label = "SP / set_hostname" ]; 407 -> 408 [ label = "'!'..'~'" ]; 407 -> err_407 [ label = "DEF / err_hostname, err_parse" ]; 408 -> 10 [ label = "SP / set_hostname" ]; 408 -> 409 [ label = "'!'..'~'" ]; 408 -> err_408 [ label = "DEF / err_hostname, err_parse" ]; 409 -> 10 [ label = "SP / set_hostname" ]; 409 -> 410 [ label = "'!'..'~'" ]; 409 -> err_409 [ label = "DEF / err_hostname, err_parse" ]; 410 -> 10 [ label = "SP / set_hostname" ]; 410 -> 411 [ label = "'!'..'~'" ]; 410 -> err_410 [ label = "DEF / err_hostname, err_parse" ]; 411 -> 10 [ label = "SP / set_hostname" ]; 411 -> 412 [ label = "'!'..'~'" ]; 411 -> err_411 [ label = "DEF / err_hostname, err_parse" ]; 412 -> 10 [ label = "SP / set_hostname" ]; 412 -> 413 [ label = "'!'..'~'" ]; 412 -> err_412 [ label = "DEF / err_hostname, err_parse" ]; 413 -> 10 [ label = "SP / set_hostname" ]; 413 -> 414 [ label = "'!'..'~'" ]; 413 -> err_413 [ label = "DEF / err_hostname, err_parse" ]; 414 -> 10 [ label = "SP / set_hostname" ]; 414 -> 415 [ label = "'!'..'~'" ]; 414 -> err_414 [ label = "DEF / err_hostname, err_parse" ]; 415 -> 10 [ label = "SP / set_hostname" ]; 415 -> 416 [ label = "'!'..'~'" ]; 415 -> err_415 [ label = "DEF / err_hostname, err_parse" ]; 416 -> 10 [ label = "SP / set_hostname" ]; 416 -> 417 [ label = "'!'..'~'" ]; 416 -> err_416 [ label = "DEF / err_hostname, err_parse" ]; 417 -> 10 [ label = "SP / set_hostname" ]; 417 -> 418 [ label = "'!'..'~'" ]; 417 -> err_417 [ label = "DEF / err_hostname, err_parse" ]; 418 -> 10 [ label = "SP / set_hostname" ]; 418 -> 419 [ label = "'!'..'~'" ]; 418 -> err_418 [ label = "DEF / err_hostname, err_parse" ]; 419 -> 10 [ label = "SP / set_hostname" ]; 419 -> 420 [ label = "'!'..'~'" ]; 419 -> err_419 [ label = "DEF / err_hostname, err_parse" ]; 420 -> 10 [ label = "SP / set_hostname" ]; 420 -> 421 [ label = "'!'..'~'" ]; 420 -> err_420 [ label = "DEF / err_hostname, err_parse" ]; 421 -> 10 [ label = "SP / set_hostname" ]; 421 -> 422 [ label = "'!'..'~'" ]; 421 -> err_421 [ label = "DEF / err_hostname, err_parse" ]; 422 -> 10 [ label = "SP / set_hostname" ]; 422 -> 423 [ label = "'!'..'~'" ]; 422 -> err_422 [ label = "DEF / err_hostname, err_parse" ]; 423 -> 10 [ label = "SP / set_hostname" ]; 423 -> 424 [ label = "'!'..'~'" ]; 423 -> err_423 [ label = "DEF / err_hostname, err_parse" ]; 424 -> 10 [ label = "SP / set_hostname" ]; 424 -> 425 [ label = "'!'..'~'" ]; 424 -> err_424 [ label = "DEF / err_hostname, err_parse" ]; 425 -> 10 [ label = "SP / set_hostname" ]; 425 -> 426 [ label = "'!'..'~'" ]; 425 -> err_425 [ label = "DEF / err_hostname, err_parse" ]; 426 -> 10 [ label = "SP / set_hostname" ]; 426 -> 427 [ label = "'!'..'~'" ]; 426 -> err_426 [ label = "DEF / err_hostname, err_parse" ]; 427 -> 10 [ label = "SP / set_hostname" ]; 427 -> 428 [ label = "'!'..'~'" ]; 427 -> err_427 [ label = "DEF / err_hostname, err_parse" ]; 428 -> 10 [ label = "SP / set_hostname" ]; 428 -> 429 [ label = "'!'..'~'" ]; 428 -> err_428 [ label = "DEF / err_hostname, err_parse" ]; 429 -> 10 [ label = "SP / set_hostname" ]; 429 -> 430 [ label = "'!'..'~'" ]; 429 -> err_429 [ label = "DEF / err_hostname, err_parse" ]; 430 -> 10 [ label = "SP / set_hostname" ]; 430 -> 431 [ label = "'!'..'~'" ]; 430 -> err_430 [ label = "DEF / err_hostname, err_parse" ]; 431 -> 10 [ label = "SP / set_hostname" ]; 431 -> 432 [ label = "'!'..'~'" ]; 431 -> err_431 [ label = "DEF / err_hostname, err_parse" ]; 432 -> 10 [ label = "SP / set_hostname" ]; 432 -> 433 [ label = "'!'..'~'" ]; 432 -> err_432 [ label = "DEF / err_hostname, err_parse" ]; 433 -> 10 [ label = "SP / set_hostname" ]; 433 -> 434 [ label = "'!'..'~'" ]; 433 -> err_433 [ label = "DEF / err_hostname, err_parse" ]; 434 -> 10 [ label = "SP / set_hostname" ]; 434 -> 435 [ label = "'!'..'~'" ]; 434 -> err_434 [ label = "DEF / err_hostname, err_parse" ]; 435 -> 10 [ label = "SP / set_hostname" ]; 435 -> 436 [ label = "'!'..'~'" ]; 435 -> err_435 [ label = "DEF / err_hostname, err_parse" ]; 436 -> 10 [ label = "SP / set_hostname" ]; 436 -> 437 [ label = "'!'..'~'" ]; 436 -> err_436 [ label = "DEF / err_hostname, err_parse" ]; 437 -> 10 [ label = "SP / set_hostname" ]; 437 -> 438 [ label = "'!'..'~'" ]; 437 -> err_437 [ label = "DEF / err_hostname, err_parse" ]; 438 -> 10 [ label = "SP / set_hostname" ]; 438 -> 439 [ label = "'!'..'~'" ]; 438 -> err_438 [ label = "DEF / err_hostname, err_parse" ]; 439 -> 10 [ label = "SP / set_hostname" ]; 439 -> 440 [ label = "'!'..'~'" ]; 439 -> err_439 [ label = "DEF / err_hostname, err_parse" ]; 440 -> 10 [ label = "SP / set_hostname" ]; 440 -> 441 [ label = "'!'..'~'" ]; 440 -> err_440 [ label = "DEF / err_hostname, err_parse" ]; 441 -> 10 [ label = "SP / set_hostname" ]; 441 -> 442 [ label = "'!'..'~'" ]; 441 -> err_441 [ label = "DEF / err_hostname, err_parse" ]; 442 -> 10 [ label = "SP / set_hostname" ]; 442 -> 443 [ label = "'!'..'~'" ]; 442 -> err_442 [ label = "DEF / err_hostname, err_parse" ]; 443 -> 10 [ label = "SP / set_hostname" ]; 443 -> 444 [ label = "'!'..'~'" ]; 443 -> err_443 [ label = "DEF / err_hostname, err_parse" ]; 444 -> 10 [ label = "SP / set_hostname" ]; 444 -> 445 [ label = "'!'..'~'" ]; 444 -> err_444 [ label = "DEF / err_hostname, err_parse" ]; 445 -> 10 [ label = "SP / set_hostname" ]; 445 -> 446 [ label = "'!'..'~'" ]; 445 -> err_445 [ label = "DEF / err_hostname, err_parse" ]; 446 -> 10 [ label = "SP / set_hostname" ]; 446 -> 447 [ label = "'!'..'~'" ]; 446 -> err_446 [ label = "DEF / err_hostname, err_parse" ]; 447 -> 10 [ label = "SP / set_hostname" ]; 447 -> 448 [ label = "'!'..'~'" ]; 447 -> err_447 [ label = "DEF / err_hostname, err_parse" ]; 448 -> 10 [ label = "SP / set_hostname" ]; 448 -> 449 [ label = "'!'..'~'" ]; 448 -> err_448 [ label = "DEF / err_hostname, err_parse" ]; 449 -> 10 [ label = "SP / set_hostname" ]; 449 -> 450 [ label = "'!'..'~'" ]; 449 -> err_449 [ label = "DEF / err_hostname, err_parse" ]; 450 -> 10 [ label = "SP / set_hostname" ]; 450 -> 451 [ label = "'!'..'~'" ]; 450 -> err_450 [ label = "DEF / err_hostname, err_parse" ]; 451 -> 10 [ label = "SP / set_hostname" ]; 451 -> 452 [ label = "'!'..'~'" ]; 451 -> err_451 [ label = "DEF / err_hostname, err_parse" ]; 452 -> 10 [ label = "SP / set_hostname" ]; 452 -> 453 [ label = "'!'..'~'" ]; 452 -> err_452 [ label = "DEF / err_hostname, err_parse" ]; 453 -> 10 [ label = "SP / set_hostname" ]; 453 -> 454 [ label = "'!'..'~'" ]; 453 -> err_453 [ label = "DEF / err_hostname, err_parse" ]; 454 -> 10 [ label = "SP / set_hostname" ]; 454 -> 455 [ label = "'!'..'~'" ]; 454 -> err_454 [ label = "DEF / err_hostname, err_parse" ]; 455 -> 10 [ label = "SP / set_hostname" ]; 455 -> 456 [ label = "'!'..'~'" ]; 455 -> err_455 [ label = "DEF / err_hostname, err_parse" ]; 456 -> 10 [ label = "SP / set_hostname" ]; 456 -> 457 [ label = "'!'..'~'" ]; 456 -> err_456 [ label = "DEF / err_hostname, err_parse" ]; 457 -> 10 [ label = "SP / set_hostname" ]; 457 -> 458 [ label = "'!'..'~'" ]; 457 -> err_457 [ label = "DEF / err_hostname, err_parse" ]; 458 -> 10 [ label = "SP / set_hostname" ]; 458 -> 459 [ label = "'!'..'~'" ]; 458 -> err_458 [ label = "DEF / err_hostname, err_parse" ]; 459 -> 10 [ label = "SP / set_hostname" ]; 459 -> 460 [ label = "'!'..'~'" ]; 459 -> err_459 [ label = "DEF / err_hostname, err_parse" ]; 460 -> 10 [ label = "SP / set_hostname" ]; 460 -> 461 [ label = "'!'..'~'" ]; 460 -> err_460 [ label = "DEF / err_hostname, err_parse" ]; 461 -> 10 [ label = "SP / set_hostname" ]; 461 -> 462 [ label = "'!'..'~'" ]; 461 -> err_461 [ label = "DEF / err_hostname, err_parse" ]; 462 -> 10 [ label = "SP / set_hostname" ]; 462 -> 463 [ label = "'!'..'~'" ]; 462 -> err_462 [ label = "DEF / err_hostname, err_parse" ]; 463 -> 10 [ label = "SP / set_hostname" ]; 463 -> 464 [ label = "'!'..'~'" ]; 463 -> err_463 [ label = "DEF / err_hostname, err_parse" ]; 464 -> 10 [ label = "SP / set_hostname" ]; 464 -> 465 [ label = "'!'..'~'" ]; 464 -> err_464 [ label = "DEF / err_hostname, err_parse" ]; 465 -> 10 [ label = "SP / set_hostname" ]; 465 -> 466 [ label = "'!'..'~'" ]; 465 -> err_465 [ label = "DEF / err_hostname, err_parse" ]; 466 -> 10 [ label = "SP / set_hostname" ]; 466 -> 467 [ label = "'!'..'~'" ]; 466 -> err_466 [ label = "DEF / err_hostname, err_parse" ]; 467 -> 10 [ label = "SP / set_hostname" ]; 467 -> 468 [ label = "'!'..'~'" ]; 467 -> err_467 [ label = "DEF / err_hostname, err_parse" ]; 468 -> 10 [ label = "SP / set_hostname" ]; 468 -> 469 [ label = "'!'..'~'" ]; 468 -> err_468 [ label = "DEF / err_hostname, err_parse" ]; 469 -> 10 [ label = "SP / set_hostname" ]; 469 -> 470 [ label = "'!'..'~'" ]; 469 -> err_469 [ label = "DEF / err_hostname, err_parse" ]; 470 -> 10 [ label = "SP / set_hostname" ]; 470 -> 471 [ label = "'!'..'~'" ]; 470 -> err_470 [ label = "DEF / err_hostname, err_parse" ]; 471 -> 10 [ label = "SP / set_hostname" ]; 471 -> 472 [ label = "'!'..'~'" ]; 471 -> err_471 [ label = "DEF / err_hostname, err_parse" ]; 472 -> 10 [ label = "SP / set_hostname" ]; 472 -> 473 [ label = "'!'..'~'" ]; 472 -> err_472 [ label = "DEF / err_hostname, err_parse" ]; 473 -> 10 [ label = "SP / set_hostname" ]; 473 -> 474 [ label = "'!'..'~'" ]; 473 -> err_473 [ label = "DEF / err_hostname, err_parse" ]; 474 -> 10 [ label = "SP / set_hostname" ]; 474 -> 475 [ label = "'!'..'~'" ]; 474 -> err_474 [ label = "DEF / err_hostname, err_parse" ]; 475 -> 10 [ label = "SP / set_hostname" ]; 475 -> 476 [ label = "'!'..'~'" ]; 475 -> err_475 [ label = "DEF / err_hostname, err_parse" ]; 476 -> 10 [ label = "SP / set_hostname" ]; 476 -> 477 [ label = "'!'..'~'" ]; 476 -> err_476 [ label = "DEF / err_hostname, err_parse" ]; 477 -> 10 [ label = "SP / set_hostname" ]; 477 -> 478 [ label = "'!'..'~'" ]; 477 -> err_477 [ label = "DEF / err_hostname, err_parse" ]; 478 -> 10 [ label = "SP / set_hostname" ]; 478 -> 479 [ label = "'!'..'~'" ]; 478 -> err_478 [ label = "DEF / err_hostname, err_parse" ]; 479 -> 10 [ label = "SP / set_hostname" ]; 479 -> 480 [ label = "'!'..'~'" ]; 479 -> err_479 [ label = "DEF / err_hostname, err_parse" ]; 480 -> 10 [ label = "SP / set_hostname" ]; 480 -> 481 [ label = "'!'..'~'" ]; 480 -> err_480 [ label = "DEF / err_hostname, err_parse" ]; 481 -> 10 [ label = "SP / set_hostname" ]; 481 -> 482 [ label = "'!'..'~'" ]; 481 -> err_481 [ label = "DEF / err_hostname, err_parse" ]; 482 -> 10 [ label = "SP / set_hostname" ]; 482 -> 483 [ label = "'!'..'~'" ]; 482 -> err_482 [ label = "DEF / err_hostname, err_parse" ]; 483 -> 10 [ label = "SP / set_hostname" ]; 483 -> 484 [ label = "'!'..'~'" ]; 483 -> err_483 [ label = "DEF / err_hostname, err_parse" ]; 484 -> 10 [ label = "SP / set_hostname" ]; 484 -> 485 [ label = "'!'..'~'" ]; 484 -> err_484 [ label = "DEF / err_hostname, err_parse" ]; 485 -> 10 [ label = "SP / set_hostname" ]; 485 -> 486 [ label = "'!'..'~'" ]; 485 -> err_485 [ label = "DEF / err_hostname, err_parse" ]; 486 -> 10 [ label = "SP / set_hostname" ]; 486 -> 487 [ label = "'!'..'~'" ]; 486 -> err_486 [ label = "DEF / err_hostname, err_parse" ]; 487 -> 10 [ label = "SP / set_hostname" ]; 487 -> 488 [ label = "'!'..'~'" ]; 487 -> err_487 [ label = "DEF / err_hostname, err_parse" ]; 488 -> 10 [ label = "SP / set_hostname" ]; 488 -> 489 [ label = "'!'..'~'" ]; 488 -> err_488 [ label = "DEF / err_hostname, err_parse" ]; 489 -> 10 [ label = "SP / set_hostname" ]; 489 -> 490 [ label = "'!'..'~'" ]; 489 -> err_489 [ label = "DEF / err_hostname, err_parse" ]; 490 -> 10 [ label = "SP / set_hostname" ]; 490 -> 491 [ label = "'!'..'~'" ]; 490 -> err_490 [ label = "DEF / err_hostname, err_parse" ]; 491 -> 10 [ label = "SP / set_hostname" ]; 491 -> 492 [ label = "'!'..'~'" ]; 491 -> err_491 [ label = "DEF / err_hostname, err_parse" ]; 492 -> 10 [ label = "SP / set_hostname" ]; 492 -> 493 [ label = "'!'..'~'" ]; 492 -> err_492 [ label = "DEF / err_hostname, err_parse" ]; 493 -> 10 [ label = "SP / set_hostname" ]; 493 -> 494 [ label = "'!'..'~'" ]; 493 -> err_493 [ label = "DEF / err_hostname, err_parse" ]; 494 -> 10 [ label = "SP / set_hostname" ]; 494 -> 495 [ label = "'!'..'~'" ]; 494 -> err_494 [ label = "DEF / err_hostname, err_parse" ]; 495 -> 10 [ label = "SP / set_hostname" ]; 495 -> 496 [ label = "'!'..'~'" ]; 495 -> err_495 [ label = "DEF / err_hostname, err_parse" ]; 496 -> 10 [ label = "SP / set_hostname" ]; 496 -> 497 [ label = "'!'..'~'" ]; 496 -> err_496 [ label = "DEF / err_hostname, err_parse" ]; 497 -> 10 [ label = "SP / set_hostname" ]; 497 -> 498 [ label = "'!'..'~'" ]; 497 -> err_497 [ label = "DEF / err_hostname, err_parse" ]; 498 -> 10 [ label = "SP / set_hostname" ]; 498 -> 499 [ label = "'!'..'~'" ]; 498 -> err_498 [ label = "DEF / err_hostname, err_parse" ]; 499 -> 10 [ label = "SP / set_hostname" ]; 499 -> 500 [ label = "'!'..'~'" ]; 499 -> err_499 [ label = "DEF / err_hostname, err_parse" ]; 500 -> 10 [ label = "SP / set_hostname" ]; 500 -> 501 [ label = "'!'..'~'" ]; 500 -> err_500 [ label = "DEF / err_hostname, err_parse" ]; 501 -> 10 [ label = "SP / set_hostname" ]; 501 -> 502 [ label = "'!'..'~'" ]; 501 -> err_501 [ label = "DEF / err_hostname, err_parse" ]; 502 -> 10 [ label = "SP / set_hostname" ]; 502 -> 503 [ label = "'!'..'~'" ]; 502 -> err_502 [ label = "DEF / err_hostname, err_parse" ]; 503 -> 10 [ label = "SP / set_hostname" ]; 503 -> 504 [ label = "'!'..'~'" ]; 503 -> err_503 [ label = "DEF / err_hostname, err_parse" ]; 504 -> 10 [ label = "SP / set_hostname" ]; 504 -> 505 [ label = "'!'..'~'" ]; 504 -> err_504 [ label = "DEF / err_hostname, err_parse" ]; 505 -> 10 [ label = "SP / set_hostname" ]; 505 -> 506 [ label = "'!'..'~'" ]; 505 -> err_505 [ label = "DEF / err_hostname, err_parse" ]; 506 -> 10 [ label = "SP / set_hostname" ]; 506 -> 507 [ label = "'!'..'~'" ]; 506 -> err_506 [ label = "DEF / err_hostname, err_parse" ]; 507 -> 10 [ label = "SP / set_hostname" ]; 507 -> 508 [ label = "'!'..'~'" ]; 507 -> err_507 [ label = "DEF / err_hostname, err_parse" ]; 508 -> 10 [ label = "SP / set_hostname" ]; 508 -> 509 [ label = "'!'..'~'" ]; 508 -> err_508 [ label = "DEF / err_hostname, err_parse" ]; 509 -> 10 [ label = "SP / set_hostname" ]; 509 -> 510 [ label = "'!'..'~'" ]; 509 -> err_509 [ label = "DEF / err_hostname, err_parse" ]; 510 -> 10 [ label = "SP / set_hostname" ]; 510 -> 511 [ label = "'!'..'~'" ]; 510 -> err_510 [ label = "DEF / err_hostname, err_parse" ]; 511 -> 10 [ label = "SP / set_hostname" ]; 511 -> 512 [ label = "'!'..'~'" ]; 511 -> err_511 [ label = "DEF / err_hostname, err_parse" ]; 512 -> 10 [ label = "SP / set_hostname" ]; 512 -> 513 [ label = "'!'..'~'" ]; 512 -> err_512 [ label = "DEF / err_hostname, err_parse" ]; 513 -> 10 [ label = "SP / set_hostname" ]; 513 -> 514 [ label = "'!'..'~'" ]; 513 -> err_513 [ label = "DEF / err_hostname, err_parse" ]; 514 -> 10 [ label = "SP / set_hostname" ]; 514 -> 515 [ label = "'!'..'~'" ]; 514 -> err_514 [ label = "DEF / err_hostname, err_parse" ]; 515 -> 10 [ label = "SP / set_hostname" ]; 515 -> 516 [ label = "'!'..'~'" ]; 515 -> err_515 [ label = "DEF / err_hostname, err_parse" ]; 516 -> 10 [ label = "SP / set_hostname" ]; 516 -> 517 [ label = "'!'..'~'" ]; 516 -> err_516 [ label = "DEF / err_hostname, err_parse" ]; 517 -> 10 [ label = "SP / set_hostname" ]; 517 -> 518 [ label = "'!'..'~'" ]; 517 -> err_517 [ label = "DEF / err_hostname, err_parse" ]; 518 -> 10 [ label = "SP / set_hostname" ]; 518 -> 519 [ label = "'!'..'~'" ]; 518 -> err_518 [ label = "DEF / err_hostname, err_parse" ]; 519 -> 10 [ label = "SP / set_hostname" ]; 519 -> 520 [ label = "'!'..'~'" ]; 519 -> err_519 [ label = "DEF / err_hostname, err_parse" ]; 520 -> 10 [ label = "SP / set_hostname" ]; 520 -> 521 [ label = "'!'..'~'" ]; 520 -> err_520 [ label = "DEF / err_hostname, err_parse" ]; 521 -> 10 [ label = "SP / set_hostname" ]; 521 -> 522 [ label = "'!'..'~'" ]; 521 -> err_521 [ label = "DEF / err_hostname, err_parse" ]; 522 -> 10 [ label = "SP / set_hostname" ]; 522 -> 523 [ label = "'!'..'~'" ]; 522 -> err_522 [ label = "DEF / err_hostname, err_parse" ]; 523 -> 10 [ label = "SP / set_hostname" ]; 523 -> 524 [ label = "'!'..'~'" ]; 523 -> err_523 [ label = "DEF / err_hostname, err_parse" ]; 524 -> 10 [ label = "SP / set_hostname" ]; 524 -> 525 [ label = "'!'..'~'" ]; 524 -> err_524 [ label = "DEF / err_hostname, err_parse" ]; 525 -> 10 [ label = "SP / set_hostname" ]; 525 -> 526 [ label = "'!'..'~'" ]; 525 -> err_525 [ label = "DEF / err_hostname, err_parse" ]; 526 -> 10 [ label = "SP / set_hostname" ]; 526 -> 527 [ label = "'!'..'~'" ]; 526 -> err_526 [ label = "DEF / err_hostname, err_parse" ]; 527 -> 10 [ label = "SP / set_hostname" ]; 527 -> 528 [ label = "'!'..'~'" ]; 527 -> err_527 [ label = "DEF / err_hostname, err_parse" ]; 528 -> 10 [ label = "SP / set_hostname" ]; 528 -> 529 [ label = "'!'..'~'" ]; 528 -> err_528 [ label = "DEF / err_hostname, err_parse" ]; 529 -> 10 [ label = "SP / set_hostname" ]; 529 -> 530 [ label = "'!'..'~'" ]; 529 -> err_529 [ label = "DEF / err_hostname, err_parse" ]; 530 -> 10 [ label = "SP / set_hostname" ]; 530 -> 531 [ label = "'!'..'~'" ]; 530 -> err_530 [ label = "DEF / err_hostname, err_parse" ]; 531 -> 10 [ label = "SP / set_hostname" ]; 531 -> 532 [ label = "'!'..'~'" ]; 531 -> err_531 [ label = "DEF / err_hostname, err_parse" ]; 532 -> 10 [ label = "SP / set_hostname" ]; 532 -> 533 [ label = "'!'..'~'" ]; 532 -> err_532 [ label = "DEF / err_hostname, err_parse" ]; 533 -> 10 [ label = "SP / set_hostname" ]; 533 -> 534 [ label = "'!'..'~'" ]; 533 -> err_533 [ label = "DEF / err_hostname, err_parse" ]; 534 -> 10 [ label = "SP / set_hostname" ]; 534 -> 535 [ label = "'!'..'~'" ]; 534 -> err_534 [ label = "DEF / err_hostname, err_parse" ]; 535 -> 10 [ label = "SP / set_hostname" ]; 535 -> 536 [ label = "'!'..'~'" ]; 535 -> err_535 [ label = "DEF / err_hostname, err_parse" ]; 536 -> 10 [ label = "SP / set_hostname" ]; 536 -> 537 [ label = "'!'..'~'" ]; 536 -> err_536 [ label = "DEF / err_hostname, err_parse" ]; 537 -> 10 [ label = "SP / set_hostname" ]; 537 -> 538 [ label = "'!'..'~'" ]; 537 -> err_537 [ label = "DEF / err_hostname, err_parse" ]; 538 -> 10 [ label = "SP / set_hostname" ]; 538 -> 539 [ label = "'!'..'~'" ]; 538 -> err_538 [ label = "DEF / err_hostname, err_parse" ]; 539 -> 10 [ label = "SP / set_hostname" ]; 539 -> 540 [ label = "'!'..'~'" ]; 539 -> err_539 [ label = "DEF / err_hostname, err_parse" ]; 540 -> 10 [ label = "SP / set_hostname" ]; 540 -> 541 [ label = "'!'..'~'" ]; 540 -> err_540 [ label = "DEF / err_hostname, err_parse" ]; 541 -> 10 [ label = "SP / set_hostname" ]; 541 -> 542 [ label = "'!'..'~'" ]; 541 -> err_541 [ label = "DEF / err_hostname, err_parse" ]; 542 -> 10 [ label = "SP / set_hostname" ]; 542 -> 543 [ label = "'!'..'~'" ]; 542 -> err_542 [ label = "DEF / err_hostname, err_parse" ]; 543 -> 10 [ label = "SP / set_hostname" ]; 543 -> 544 [ label = "'!'..'~'" ]; 543 -> err_543 [ label = "DEF / err_hostname, err_parse" ]; 544 -> 10 [ label = "SP / set_hostname" ]; 544 -> 545 [ label = "'!'..'~'" ]; 544 -> err_544 [ label = "DEF / err_hostname, err_parse" ]; 545 -> 10 [ label = "SP / set_hostname" ]; 545 -> 546 [ label = "'!'..'~'" ]; 545 -> err_545 [ label = "DEF / err_hostname, err_parse" ]; 546 -> 10 [ label = "SP / set_hostname" ]; 546 -> 547 [ label = "'!'..'~'" ]; 546 -> err_546 [ label = "DEF / err_hostname, err_parse" ]; 547 -> 10 [ label = "SP / set_hostname" ]; 547 -> 548 [ label = "'!'..'~'" ]; 547 -> err_547 [ label = "DEF / err_hostname, err_parse" ]; 548 -> 10 [ label = "SP / set_hostname" ]; 548 -> 549 [ label = "'!'..'~'" ]; 548 -> err_548 [ label = "DEF / err_hostname, err_parse" ]; 549 -> 10 [ label = "SP / set_hostname" ]; 549 -> 550 [ label = "'!'..'~'" ]; 549 -> err_549 [ label = "DEF / err_hostname, err_parse" ]; 550 -> 10 [ label = "SP / set_hostname" ]; 550 -> 551 [ label = "'!'..'~'" ]; 550 -> err_550 [ label = "DEF / err_hostname, err_parse" ]; 551 -> 10 [ label = "SP / set_hostname" ]; 551 -> 552 [ label = "'!'..'~'" ]; 551 -> err_551 [ label = "DEF / err_hostname, err_parse" ]; 552 -> 10 [ label = "SP / set_hostname" ]; 552 -> 553 [ label = "'!'..'~'" ]; 552 -> err_552 [ label = "DEF / err_hostname, err_parse" ]; 553 -> 10 [ label = "SP / set_hostname" ]; 553 -> 554 [ label = "'!'..'~'" ]; 553 -> err_553 [ label = "DEF / err_hostname, err_parse" ]; 554 -> 10 [ label = "SP / set_hostname" ]; 554 -> 555 [ label = "'!'..'~'" ]; 554 -> err_554 [ label = "DEF / err_hostname, err_parse" ]; 555 -> 10 [ label = "SP / set_hostname" ]; 555 -> 556 [ label = "'!'..'~'" ]; 555 -> err_555 [ label = "DEF / err_hostname, err_parse" ]; 556 -> 10 [ label = "SP / set_hostname" ]; 556 -> 557 [ label = "'!'..'~'" ]; 556 -> err_556 [ label = "DEF / err_hostname, err_parse" ]; 557 -> 10 [ label = "SP / set_hostname" ]; 557 -> 558 [ label = "'!'..'~'" ]; 557 -> err_557 [ label = "DEF / err_hostname, err_parse" ]; 558 -> 10 [ label = "SP / set_hostname" ]; 558 -> 559 [ label = "'!'..'~'" ]; 558 -> err_558 [ label = "DEF / err_hostname, err_parse" ]; 559 -> 10 [ label = "SP / set_hostname" ]; 559 -> 560 [ label = "'!'..'~'" ]; 559 -> err_559 [ label = "DEF / err_hostname, err_parse" ]; 560 -> 10 [ label = "SP / set_hostname" ]; 560 -> err_560 [ label = "DEF / err_hostname, err_parse" ]; 561 -> 562 [ label = "'0'..'9'" ]; 561 -> err_561 [ label = "DEF / err_timestamp, err_parse" ]; 562 -> 563 [ label = "'0'..'9'" ]; 562 -> err_562 [ label = "DEF / err_timestamp, err_parse" ]; 563 -> 564 [ label = "'0'..'9'" ]; 563 -> err_563 [ label = "DEF / err_timestamp, err_parse" ]; 564 -> 565 [ label = "'-'" ]; 564 -> err_564 [ label = "DEF / err_timestamp, err_parse" ]; 565 -> 566 [ label = "'0'" ]; 565 -> 597 [ label = "'1'" ]; 565 -> err_565 [ label = "DEF / err_timestamp, err_parse" ]; 566 -> 567 [ label = "'1'..'9'" ]; 566 -> err_566 [ label = "DEF / err_timestamp, err_parse" ]; 567 -> 568 [ label = "'-'" ]; 567 -> err_567 [ label = "DEF / err_timestamp, err_parse" ]; 568 -> 569 [ label = "'0'" ]; 568 -> 595 [ label = "'1'..'2'" ]; 568 -> 596 [ label = "'3'" ]; 568 -> err_568 [ label = "DEF / err_timestamp, err_parse" ]; 569 -> 570 [ label = "'1'..'9'" ]; 569 -> err_569 [ label = "DEF / err_timestamp, err_parse" ]; 570 -> 571 [ label = "'T'" ]; 570 -> err_570 [ label = "DEF / err_timestamp, err_parse" ]; 571 -> 572 [ label = "'0'..'1'" ]; 571 -> 594 [ label = "'2'" ]; 571 -> err_571 [ label = "DEF / err_timestamp, err_parse" ]; 572 -> 573 [ label = "'0'..'9'" ]; 572 -> err_572 [ label = "DEF / err_timestamp, err_parse" ]; 573 -> 574 [ label = "':'" ]; 573 -> err_573 [ label = "DEF / err_timestamp, err_parse" ]; 574 -> 575 [ label = "'0'..'5'" ]; 574 -> err_574 [ label = "DEF / err_timestamp, err_parse" ]; 575 -> 576 [ label = "'0'..'9'" ]; 575 -> err_575 [ label = "DEF / err_timestamp, err_parse" ]; 576 -> 577 [ label = "':'" ]; 576 -> err_576 [ label = "DEF / err_timestamp, err_parse" ]; 577 -> 578 [ label = "'0'..'5'" ]; 577 -> err_577 [ label = "DEF / err_timestamp, err_parse" ]; 578 -> 579 [ label = "'0'..'9'" ]; 578 -> err_578 [ label = "DEF / err_timestamp, err_parse" ]; 579 -> 580 [ label = "'+', '-'" ]; 579 -> 587 [ label = "'.'" ]; 579 -> 585 [ label = "'Z'" ]; 579 -> err_579 [ label = "DEF / err_timestamp, err_parse" ]; 580 -> 581 [ label = "'0'..'1'" ]; 580 -> 586 [ label = "'2'" ]; 580 -> err_580 [ label = "DEF / err_timestamp, err_parse" ]; 581 -> 582 [ label = "'0'..'9'" ]; 581 -> err_581 [ label = "DEF / err_timestamp, err_parse" ]; 582 -> 583 [ label = "':'" ]; 582 -> err_582 [ label = "DEF / err_timestamp, err_parse" ]; 583 -> 584 [ label = "'0'..'5'" ]; 583 -> err_583 [ label = "DEF / err_timestamp, err_parse" ]; 584 -> 585 [ label = "'0'..'9'" ]; 584 -> err_584 [ label = "DEF / err_timestamp, err_parse" ]; 585 -> 8 [ label = "SP / set_timestamp" ]; 585 -> err_585 [ label = "DEF / set_timestamp, err_parse" ]; 586 -> 582 [ label = "'0'..'3'" ]; 586 -> err_586 [ label = "DEF / err_timestamp, err_parse" ]; 587 -> 588 [ label = "'0'..'9'" ]; 587 -> err_587 [ label = "DEF / err_timestamp, err_parse" ]; 588 -> 580 [ label = "'+', '-'" ]; 588 -> 589 [ label = "'0'..'9'" ]; 588 -> 585 [ label = "'Z'" ]; 588 -> err_588 [ label = "DEF / err_timestamp, err_parse" ]; 589 -> 580 [ label = "'+', '-'" ]; 589 -> 590 [ label = "'0'..'9'" ]; 589 -> 585 [ label = "'Z'" ]; 589 -> err_589 [ label = "DEF / err_timestamp, err_parse" ]; 590 -> 580 [ label = "'+', '-'" ]; 590 -> 591 [ label = "'0'..'9'" ]; 590 -> 585 [ label = "'Z'" ]; 590 -> err_590 [ label = "DEF / err_timestamp, err_parse" ]; 591 -> 580 [ label = "'+', '-'" ]; 591 -> 592 [ label = "'0'..'9'" ]; 591 -> 585 [ label = "'Z'" ]; 591 -> err_591 [ label = "DEF / err_timestamp, err_parse" ]; 592 -> 580 [ label = "'+', '-'" ]; 592 -> 593 [ label = "'0'..'9'" ]; 592 -> 585 [ label = "'Z'" ]; 592 -> err_592 [ label = "DEF / err_timestamp, err_parse" ]; 593 -> 580 [ label = "'+', '-'" ]; 593 -> 585 [ label = "'Z'" ]; 593 -> err_593 [ label = "DEF / err_timestamp, err_parse" ]; 594 -> 573 [ label = "'0'..'3'" ]; 594 -> err_594 [ label = "DEF / err_timestamp, err_parse" ]; 595 -> 570 [ label = "'0'..'9'" ]; 595 -> err_595 [ label = "DEF / err_timestamp, err_parse" ]; 596 -> 570 [ label = "'0'..'1'" ]; 596 -> err_596 [ label = "DEF / err_timestamp, err_parse" ]; 597 -> 567 [ label = "'0'..'2'" ]; 597 -> err_597 [ label = "DEF / err_timestamp, err_parse" ]; 598 -> 6 [ label = "SP / set_version" ]; 598 -> 599 [ label = "'0'..'9' / set_version" ]; 598 -> err_598 [ label = "DEF / set_version, err_version, err_parse" ]; 599 -> 6 [ label = "SP / set_version" ]; 599 -> err_599 [ label = "DEF / set_version, err_version, err_parse" ]; 600 -> 601 [ label = "'0'..'8' / set_prival" ]; 600 -> 602 [ label = "'9' / set_prival" ]; 600 -> 4 [ label = "'>' / set_prival" ]; 600 -> err_600 [ label = "DEF / set_prival, err_prival, err_pri, err_parse" ]; 601 -> 3 [ label = "'0'..'9' / set_prival" ]; 601 -> 4 [ label = "'>' / set_prival" ]; 601 -> err_601 [ label = "DEF / set_prival, err_prival, err_pri, err_parse" ]; 602 -> 3 [ label = "'0'..'1' / set_prival" ]; 602 -> 4 [ label = "'>' / set_prival" ]; 602 -> err_602 [ label = "DEF / set_prival, err_prival, err_pri, err_parse" ]; 603 -> 604 [ label = "SP" ]; 603 -> err_603 [ label = "DEF / err_parse" ]; 604 -> err_604 [ label = "128..193, 245..255 / err_msg, err_parse" ]; 604 -> 17 [ label = "194..223 / mark, markmsg" ]; 604 -> 18 [ label = "224 / mark, markmsg" ]; 604 -> 19 [ label = "225..236, 238..239 / mark, markmsg" ]; 604 -> 20 [ label = "237 / mark, markmsg" ]; 604 -> 21 [ label = "240 / mark, markmsg" ]; 604 -> 22 [ label = "241..243 / mark, markmsg" ]; 604 -> 23 [ label = "244 / mark, markmsg" ]; 604 -> 605 [ label = "DEF / mark, markmsg" ]; 605 -> err_605 [ label = "128..193, 245..255 / err_msg, err_parse" ]; 605 -> 17 [ label = "194..223" ]; 605 -> 18 [ label = "224" ]; 605 -> 19 [ label = "225..236, 238..239" ]; 605 -> 20 [ label = "237" ]; 605 -> 21 [ label = "240" ]; 605 -> 22 [ label = "241..243" ]; 605 -> 23 [ label = "244" ]; 605 -> 605 [ label = "DEF" ]; 606 -> 604 [ label = "SP" ]; 606 -> 24 [ label = "'['" ]; 606 -> err_606 [ label = "DEF / err_structureddata, err_parse" ]; 607 -> 607 [ label = "0..'\\t', '\\v'..'\\f', 14..255" ]; ENTRY -> 1 [ label = "IN" ]; en_607 -> 607 [ label = "fail" ]; en_1 -> 1 [ label = "main" ]; 1 -> eof_1 [ label = "EOF / err_pri" ]; 2 -> eof_2 [ label = "EOF / err_prival, err_pri, err_parse" ]; 3 -> eof_3 [ label = "EOF / err_prival, err_pri, err_parse" ]; 4 -> eof_4 [ label = "EOF / err_version, err_parse" ]; 5 -> eof_5 [ label = "EOF / set_version, err_parse" ]; 6 -> eof_6 [ label = "EOF / err_timestamp, err_parse" ]; 7 -> eof_7 [ label = "EOF / err_parse" ]; 8 -> eof_8 [ label = "EOF / err_hostname, err_parse" ]; 9 -> eof_9 [ label = "EOF / err_hostname, err_parse" ]; 10 -> eof_10 [ label = "EOF / err_appname, err_parse" ]; 11 -> eof_11 [ label = "EOF / err_appname, err_parse" ]; 12 -> eof_12 [ label = "EOF / err_procid, err_parse" ]; 13 -> eof_13 [ label = "EOF / err_procid, err_parse" ]; 14 -> eof_14 [ label = "EOF / err_msgid, err_parse" ]; 15 -> eof_15 [ label = "EOF / err_msgid" ]; 16 -> eof_16 [ label = "EOF / err_structureddata" ]; 17 -> eof_17 [ label = "EOF / err_msg, err_parse" ]; 18 -> eof_18 [ label = "EOF / err_msg, err_parse" ]; 19 -> eof_19 [ label = "EOF / err_msg, err_parse" ]; 20 -> eof_20 [ label = "EOF / err_msg, err_parse" ]; 21 -> eof_21 [ label = "EOF / err_msg, err_parse" ]; 22 -> eof_22 [ label = "EOF / err_msg, err_parse" ]; 23 -> eof_23 [ label = "EOF / err_msg, err_parse" ]; 24 -> eof_24 [ label = "EOF / err_sdid, err_structureddata" ]; 25 -> eof_25 [ label = "EOF / set_id, err_sdid, err_structureddata" ]; 26 -> eof_26 [ label = "EOF / err_sdparam, err_structureddata" ]; 27 -> eof_27 [ label = "EOF / err_sdparam, err_structureddata" ]; 28 -> eof_28 [ label = "EOF / err_sdparam, err_structureddata" ]; 29 -> eof_29 [ label = "EOF / err_sdparam, err_structureddata" ]; 30 -> eof_30 [ label = "EOF / err_sdparam, err_structureddata" ]; 31 -> eof_31 [ label = "EOF / err_sdparam, err_structureddata" ]; 32 -> eof_32 [ label = "EOF / err_sdparam, err_structureddata" ]; 33 -> eof_33 [ label = "EOF / err_sdparam, err_structureddata" ]; 34 -> eof_34 [ label = "EOF / err_sdparam, err_structureddata" ]; 35 -> eof_35 [ label = "EOF / err_sdparam, err_structureddata" ]; 36 -> eof_36 [ label = "EOF / err_sdparam, err_structureddata" ]; 37 -> eof_37 [ label = "EOF / err_sdparam, err_structureddata" ]; 38 -> eof_38 [ label = "EOF / err_sdparam, err_structureddata" ]; 39 -> eof_39 [ label = "EOF / err_sdparam, err_structureddata" ]; 40 -> eof_40 [ label = "EOF / err_sdparam, err_structureddata" ]; 41 -> eof_41 [ label = "EOF / err_sdparam, err_structureddata" ]; 42 -> eof_42 [ label = "EOF / err_sdparam, err_structureddata" ]; 43 -> eof_43 [ label = "EOF / err_sdparam, err_structureddata" ]; 44 -> eof_44 [ label = "EOF / err_sdparam, err_structureddata" ]; 45 -> eof_45 [ label = "EOF / err_sdparam, err_structureddata" ]; 46 -> eof_46 [ label = "EOF / err_sdparam, err_structureddata" ]; 47 -> eof_47 [ label = "EOF / err_sdparam, err_structureddata" ]; 48 -> eof_48 [ label = "EOF / err_sdparam, err_structureddata" ]; 49 -> eof_49 [ label = "EOF / err_sdparam, err_structureddata" ]; 50 -> eof_50 [ label = "EOF / err_sdparam, err_structureddata" ]; 51 -> eof_51 [ label = "EOF / err_sdparam, err_structureddata" ]; 52 -> eof_52 [ label = "EOF / err_sdparam, err_structureddata" ]; 53 -> eof_53 [ label = "EOF / err_sdparam, err_structureddata" ]; 54 -> eof_54 [ label = "EOF / err_sdparam, err_structureddata" ]; 55 -> eof_55 [ label = "EOF / err_sdparam, err_structureddata" ]; 56 -> eof_56 [ label = "EOF / err_sdparam, err_structureddata" ]; 57 -> eof_57 [ label = "EOF / err_sdparam, err_structureddata" ]; 58 -> eof_58 [ label = "EOF / err_sdparam, err_structureddata" ]; 59 -> eof_59 [ label = "EOF / err_sdparam, err_structureddata" ]; 60 -> eof_60 [ label = "EOF / err_escape, err_sdparam, err_structureddata" ]; 61 -> eof_61 [ label = "EOF / err_escape, err_sdparam, err_structureddata" ]; 62 -> eof_62 [ label = "EOF / err_sdparam, err_structureddata" ]; 63 -> eof_63 [ label = "EOF / err_escape, err_sdparam, err_structureddata" ]; 64 -> eof_64 [ label = "EOF / err_sdparam, err_structureddata" ]; 65 -> eof_65 [ label = "EOF / err_sdparam, err_structureddata" ]; 66 -> eof_66 [ label = "EOF / err_sdparam, err_structureddata" ]; 67 -> eof_67 [ label = "EOF / err_sdparam, err_structureddata" ]; 68 -> eof_68 [ label = "EOF / err_sdparam, err_structureddata" ]; 69 -> eof_69 [ label = "EOF / err_sdparam, err_structureddata" ]; 70 -> eof_70 [ label = "EOF / err_sdparam, err_structureddata" ]; 71 -> eof_71 [ label = "EOF / set_id, err_sdid, err_structureddata" ]; 72 -> eof_72 [ label = "EOF / set_id, err_sdid, err_structureddata" ]; 73 -> eof_73 [ label = "EOF / set_id, err_sdid, err_structureddata" ]; 74 -> eof_74 [ label = "EOF / set_id, err_sdid, err_structureddata" ]; 75 -> eof_75 [ label = "EOF / set_id, err_sdid, err_structureddata" ]; 76 -> eof_76 [ label = "EOF / set_id, err_sdid, err_structureddata" ]; 77 -> eof_77 [ label = "EOF / set_id, err_sdid, err_structureddata" ]; 78 -> eof_78 [ label = "EOF / set_id, err_sdid, err_structureddata" ]; 79 -> eof_79 [ label = "EOF / set_id, err_sdid, err_structureddata" ]; 80 -> eof_80 [ label = "EOF / set_id, err_sdid, err_structureddata" ]; 81 -> eof_81 [ label = "EOF / set_id, err_sdid, err_structureddata" ]; 82 -> eof_82 [ label = "EOF / set_id, err_sdid, err_structureddata" ]; 83 -> eof_83 [ label = "EOF / set_id, err_sdid, err_structureddata" ]; 84 -> eof_84 [ label = "EOF / set_id, err_sdid, err_structureddata" ]; 85 -> eof_85 [ label = "EOF / set_id, err_sdid, err_structureddata" ]; 86 -> eof_86 [ label = "EOF / set_id, err_sdid, err_structureddata" ]; 87 -> eof_87 [ label = "EOF / set_id, err_sdid, err_structureddata" ]; 88 -> eof_88 [ label = "EOF / set_id, err_sdid, err_structureddata" ]; 89 -> eof_89 [ label = "EOF / set_id, err_sdid, err_structureddata" ]; 90 -> eof_90 [ label = "EOF / set_id, err_sdid, err_structureddata" ]; 91 -> eof_91 [ label = "EOF / set_id, err_sdid, err_structureddata" ]; 92 -> eof_92 [ label = "EOF / set_id, err_sdid, err_structureddata" ]; 93 -> eof_93 [ label = "EOF / set_id, err_sdid, err_structureddata" ]; 94 -> eof_94 [ label = "EOF / set_id, err_sdid, err_structureddata" ]; 95 -> eof_95 [ label = "EOF / set_id, err_sdid, err_structureddata" ]; 96 -> eof_96 [ label = "EOF / set_id, err_sdid, err_structureddata" ]; 97 -> eof_97 [ label = "EOF / set_id, err_sdid, err_structureddata" ]; 98 -> eof_98 [ label = "EOF / set_id, err_sdid, err_structureddata" ]; 99 -> eof_99 [ label = "EOF / set_id, err_sdid, err_structureddata" ]; 100 -> eof_100 [ label = "EOF / set_id, err_sdid, err_structureddata" ]; 101 -> eof_101 [ label = "EOF / set_id, err_sdid, err_structureddata" ]; 102 -> eof_102 [ label = "EOF / err_msgid" ]; 103 -> eof_103 [ label = "EOF / err_msgid" ]; 104 -> eof_104 [ label = "EOF / err_msgid" ]; 105 -> eof_105 [ label = "EOF / err_msgid" ]; 106 -> eof_106 [ label = "EOF / err_msgid" ]; 107 -> eof_107 [ label = "EOF / err_msgid" ]; 108 -> eof_108 [ label = "EOF / err_msgid" ]; 109 -> eof_109 [ label = "EOF / err_msgid" ]; 110 -> eof_110 [ label = "EOF / err_msgid" ]; 111 -> eof_111 [ label = "EOF / err_msgid" ]; 112 -> eof_112 [ label = "EOF / err_msgid" ]; 113 -> eof_113 [ label = "EOF / err_msgid" ]; 114 -> eof_114 [ label = "EOF / err_msgid" ]; 115 -> eof_115 [ label = "EOF / err_msgid" ]; 116 -> eof_116 [ label = "EOF / err_msgid" ]; 117 -> eof_117 [ label = "EOF / err_msgid" ]; 118 -> eof_118 [ label = "EOF / err_msgid" ]; 119 -> eof_119 [ label = "EOF / err_msgid" ]; 120 -> eof_120 [ label = "EOF / err_msgid" ]; 121 -> eof_121 [ label = "EOF / err_msgid" ]; 122 -> eof_122 [ label = "EOF / err_msgid" ]; 123 -> eof_123 [ label = "EOF / err_msgid" ]; 124 -> eof_124 [ label = "EOF / err_msgid" ]; 125 -> eof_125 [ label = "EOF / err_msgid" ]; 126 -> eof_126 [ label = "EOF / err_msgid" ]; 127 -> eof_127 [ label = "EOF / err_msgid" ]; 128 -> eof_128 [ label = "EOF / err_msgid" ]; 129 -> eof_129 [ label = "EOF / err_msgid" ]; 130 -> eof_130 [ label = "EOF / err_msgid" ]; 131 -> eof_131 [ label = "EOF / err_msgid" ]; 132 -> eof_132 [ label = "EOF / err_msgid" ]; 133 -> eof_133 [ label = "EOF / err_procid, err_parse" ]; 134 -> eof_134 [ label = "EOF / err_procid, err_parse" ]; 135 -> eof_135 [ label = "EOF / err_procid, err_parse" ]; 136 -> eof_136 [ label = "EOF / err_procid, err_parse" ]; 137 -> eof_137 [ label = "EOF / err_procid, err_parse" ]; 138 -> eof_138 [ label = "EOF / err_procid, err_parse" ]; 139 -> eof_139 [ label = "EOF / err_procid, err_parse" ]; 140 -> eof_140 [ label = "EOF / err_procid, err_parse" ]; 141 -> eof_141 [ label = "EOF / err_procid, err_parse" ]; 142 -> eof_142 [ label = "EOF / err_procid, err_parse" ]; 143 -> eof_143 [ label = "EOF / err_procid, err_parse" ]; 144 -> eof_144 [ label = "EOF / err_procid, err_parse" ]; 145 -> eof_145 [ label = "EOF / err_procid, err_parse" ]; 146 -> eof_146 [ label = "EOF / err_procid, err_parse" ]; 147 -> eof_147 [ label = "EOF / err_procid, err_parse" ]; 148 -> eof_148 [ label = "EOF / err_procid, err_parse" ]; 149 -> eof_149 [ label = "EOF / err_procid, err_parse" ]; 150 -> eof_150 [ label = "EOF / err_procid, err_parse" ]; 151 -> eof_151 [ label = "EOF / err_procid, err_parse" ]; 152 -> eof_152 [ label = "EOF / err_procid, err_parse" ]; 153 -> eof_153 [ label = "EOF / err_procid, err_parse" ]; 154 -> eof_154 [ label = "EOF / err_procid, err_parse" ]; 155 -> eof_155 [ label = "EOF / err_procid, err_parse" ]; 156 -> eof_156 [ label = "EOF / err_procid, err_parse" ]; 157 -> eof_157 [ label = "EOF / err_procid, err_parse" ]; 158 -> eof_158 [ label = "EOF / err_procid, err_parse" ]; 159 -> eof_159 [ label = "EOF / err_procid, err_parse" ]; 160 -> eof_160 [ label = "EOF / err_procid, err_parse" ]; 161 -> eof_161 [ label = "EOF / err_procid, err_parse" ]; 162 -> eof_162 [ label = "EOF / err_procid, err_parse" ]; 163 -> eof_163 [ label = "EOF / err_procid, err_parse" ]; 164 -> eof_164 [ label = "EOF / err_procid, err_parse" ]; 165 -> eof_165 [ label = "EOF / err_procid, err_parse" ]; 166 -> eof_166 [ label = "EOF / err_procid, err_parse" ]; 167 -> eof_167 [ label = "EOF / err_procid, err_parse" ]; 168 -> eof_168 [ label = "EOF / err_procid, err_parse" ]; 169 -> eof_169 [ label = "EOF / err_procid, err_parse" ]; 170 -> eof_170 [ label = "EOF / err_procid, err_parse" ]; 171 -> eof_171 [ label = "EOF / err_procid, err_parse" ]; 172 -> eof_172 [ label = "EOF / err_procid, err_parse" ]; 173 -> eof_173 [ label = "EOF / err_procid, err_parse" ]; 174 -> eof_174 [ label = "EOF / err_procid, err_parse" ]; 175 -> eof_175 [ label = "EOF / err_procid, err_parse" ]; 176 -> eof_176 [ label = "EOF / err_procid, err_parse" ]; 177 -> eof_177 [ label = "EOF / err_procid, err_parse" ]; 178 -> eof_178 [ label = "EOF / err_procid, err_parse" ]; 179 -> eof_179 [ label = "EOF / err_procid, err_parse" ]; 180 -> eof_180 [ label = "EOF / err_procid, err_parse" ]; 181 -> eof_181 [ label = "EOF / err_procid, err_parse" ]; 182 -> eof_182 [ label = "EOF / err_procid, err_parse" ]; 183 -> eof_183 [ label = "EOF / err_procid, err_parse" ]; 184 -> eof_184 [ label = "EOF / err_procid, err_parse" ]; 185 -> eof_185 [ label = "EOF / err_procid, err_parse" ]; 186 -> eof_186 [ label = "EOF / err_procid, err_parse" ]; 187 -> eof_187 [ label = "EOF / err_procid, err_parse" ]; 188 -> eof_188 [ label = "EOF / err_procid, err_parse" ]; 189 -> eof_189 [ label = "EOF / err_procid, err_parse" ]; 190 -> eof_190 [ label = "EOF / err_procid, err_parse" ]; 191 -> eof_191 [ label = "EOF / err_procid, err_parse" ]; 192 -> eof_192 [ label = "EOF / err_procid, err_parse" ]; 193 -> eof_193 [ label = "EOF / err_procid, err_parse" ]; 194 -> eof_194 [ label = "EOF / err_procid, err_parse" ]; 195 -> eof_195 [ label = "EOF / err_procid, err_parse" ]; 196 -> eof_196 [ label = "EOF / err_procid, err_parse" ]; 197 -> eof_197 [ label = "EOF / err_procid, err_parse" ]; 198 -> eof_198 [ label = "EOF / err_procid, err_parse" ]; 199 -> eof_199 [ label = "EOF / err_procid, err_parse" ]; 200 -> eof_200 [ label = "EOF / err_procid, err_parse" ]; 201 -> eof_201 [ label = "EOF / err_procid, err_parse" ]; 202 -> eof_202 [ label = "EOF / err_procid, err_parse" ]; 203 -> eof_203 [ label = "EOF / err_procid, err_parse" ]; 204 -> eof_204 [ label = "EOF / err_procid, err_parse" ]; 205 -> eof_205 [ label = "EOF / err_procid, err_parse" ]; 206 -> eof_206 [ label = "EOF / err_procid, err_parse" ]; 207 -> eof_207 [ label = "EOF / err_procid, err_parse" ]; 208 -> eof_208 [ label = "EOF / err_procid, err_parse" ]; 209 -> eof_209 [ label = "EOF / err_procid, err_parse" ]; 210 -> eof_210 [ label = "EOF / err_procid, err_parse" ]; 211 -> eof_211 [ label = "EOF / err_procid, err_parse" ]; 212 -> eof_212 [ label = "EOF / err_procid, err_parse" ]; 213 -> eof_213 [ label = "EOF / err_procid, err_parse" ]; 214 -> eof_214 [ label = "EOF / err_procid, err_parse" ]; 215 -> eof_215 [ label = "EOF / err_procid, err_parse" ]; 216 -> eof_216 [ label = "EOF / err_procid, err_parse" ]; 217 -> eof_217 [ label = "EOF / err_procid, err_parse" ]; 218 -> eof_218 [ label = "EOF / err_procid, err_parse" ]; 219 -> eof_219 [ label = "EOF / err_procid, err_parse" ]; 220 -> eof_220 [ label = "EOF / err_procid, err_parse" ]; 221 -> eof_221 [ label = "EOF / err_procid, err_parse" ]; 222 -> eof_222 [ label = "EOF / err_procid, err_parse" ]; 223 -> eof_223 [ label = "EOF / err_procid, err_parse" ]; 224 -> eof_224 [ label = "EOF / err_procid, err_parse" ]; 225 -> eof_225 [ label = "EOF / err_procid, err_parse" ]; 226 -> eof_226 [ label = "EOF / err_procid, err_parse" ]; 227 -> eof_227 [ label = "EOF / err_procid, err_parse" ]; 228 -> eof_228 [ label = "EOF / err_procid, err_parse" ]; 229 -> eof_229 [ label = "EOF / err_procid, err_parse" ]; 230 -> eof_230 [ label = "EOF / err_procid, err_parse" ]; 231 -> eof_231 [ label = "EOF / err_procid, err_parse" ]; 232 -> eof_232 [ label = "EOF / err_procid, err_parse" ]; 233 -> eof_233 [ label = "EOF / err_procid, err_parse" ]; 234 -> eof_234 [ label = "EOF / err_procid, err_parse" ]; 235 -> eof_235 [ label = "EOF / err_procid, err_parse" ]; 236 -> eof_236 [ label = "EOF / err_procid, err_parse" ]; 237 -> eof_237 [ label = "EOF / err_procid, err_parse" ]; 238 -> eof_238 [ label = "EOF / err_procid, err_parse" ]; 239 -> eof_239 [ label = "EOF / err_procid, err_parse" ]; 240 -> eof_240 [ label = "EOF / err_procid, err_parse" ]; 241 -> eof_241 [ label = "EOF / err_procid, err_parse" ]; 242 -> eof_242 [ label = "EOF / err_procid, err_parse" ]; 243 -> eof_243 [ label = "EOF / err_procid, err_parse" ]; 244 -> eof_244 [ label = "EOF / err_procid, err_parse" ]; 245 -> eof_245 [ label = "EOF / err_procid, err_parse" ]; 246 -> eof_246 [ label = "EOF / err_procid, err_parse" ]; 247 -> eof_247 [ label = "EOF / err_procid, err_parse" ]; 248 -> eof_248 [ label = "EOF / err_procid, err_parse" ]; 249 -> eof_249 [ label = "EOF / err_procid, err_parse" ]; 250 -> eof_250 [ label = "EOF / err_procid, err_parse" ]; 251 -> eof_251 [ label = "EOF / err_procid, err_parse" ]; 252 -> eof_252 [ label = "EOF / err_procid, err_parse" ]; 253 -> eof_253 [ label = "EOF / err_procid, err_parse" ]; 254 -> eof_254 [ label = "EOF / err_procid, err_parse" ]; 255 -> eof_255 [ label = "EOF / err_procid, err_parse" ]; 256 -> eof_256 [ label = "EOF / err_procid, err_parse" ]; 257 -> eof_257 [ label = "EOF / err_procid, err_parse" ]; 258 -> eof_258 [ label = "EOF / err_procid, err_parse" ]; 259 -> eof_259 [ label = "EOF / err_procid, err_parse" ]; 260 -> eof_260 [ label = "EOF / err_appname, err_parse" ]; 261 -> eof_261 [ label = "EOF / err_appname, err_parse" ]; 262 -> eof_262 [ label = "EOF / err_appname, err_parse" ]; 263 -> eof_263 [ label = "EOF / err_appname, err_parse" ]; 264 -> eof_264 [ label = "EOF / err_appname, err_parse" ]; 265 -> eof_265 [ label = "EOF / err_appname, err_parse" ]; 266 -> eof_266 [ label = "EOF / err_appname, err_parse" ]; 267 -> eof_267 [ label = "EOF / err_appname, err_parse" ]; 268 -> eof_268 [ label = "EOF / err_appname, err_parse" ]; 269 -> eof_269 [ label = "EOF / err_appname, err_parse" ]; 270 -> eof_270 [ label = "EOF / err_appname, err_parse" ]; 271 -> eof_271 [ label = "EOF / err_appname, err_parse" ]; 272 -> eof_272 [ label = "EOF / err_appname, err_parse" ]; 273 -> eof_273 [ label = "EOF / err_appname, err_parse" ]; 274 -> eof_274 [ label = "EOF / err_appname, err_parse" ]; 275 -> eof_275 [ label = "EOF / err_appname, err_parse" ]; 276 -> eof_276 [ label = "EOF / err_appname, err_parse" ]; 277 -> eof_277 [ label = "EOF / err_appname, err_parse" ]; 278 -> eof_278 [ label = "EOF / err_appname, err_parse" ]; 279 -> eof_279 [ label = "EOF / err_appname, err_parse" ]; 280 -> eof_280 [ label = "EOF / err_appname, err_parse" ]; 281 -> eof_281 [ label = "EOF / err_appname, err_parse" ]; 282 -> eof_282 [ label = "EOF / err_appname, err_parse" ]; 283 -> eof_283 [ label = "EOF / err_appname, err_parse" ]; 284 -> eof_284 [ label = "EOF / err_appname, err_parse" ]; 285 -> eof_285 [ label = "EOF / err_appname, err_parse" ]; 286 -> eof_286 [ label = "EOF / err_appname, err_parse" ]; 287 -> eof_287 [ label = "EOF / err_appname, err_parse" ]; 288 -> eof_288 [ label = "EOF / err_appname, err_parse" ]; 289 -> eof_289 [ label = "EOF / err_appname, err_parse" ]; 290 -> eof_290 [ label = "EOF / err_appname, err_parse" ]; 291 -> eof_291 [ label = "EOF / err_appname, err_parse" ]; 292 -> eof_292 [ label = "EOF / err_appname, err_parse" ]; 293 -> eof_293 [ label = "EOF / err_appname, err_parse" ]; 294 -> eof_294 [ label = "EOF / err_appname, err_parse" ]; 295 -> eof_295 [ label = "EOF / err_appname, err_parse" ]; 296 -> eof_296 [ label = "EOF / err_appname, err_parse" ]; 297 -> eof_297 [ label = "EOF / err_appname, err_parse" ]; 298 -> eof_298 [ label = "EOF / err_appname, err_parse" ]; 299 -> eof_299 [ label = "EOF / err_appname, err_parse" ]; 300 -> eof_300 [ label = "EOF / err_appname, err_parse" ]; 301 -> eof_301 [ label = "EOF / err_appname, err_parse" ]; 302 -> eof_302 [ label = "EOF / err_appname, err_parse" ]; 303 -> eof_303 [ label = "EOF / err_appname, err_parse" ]; 304 -> eof_304 [ label = "EOF / err_appname, err_parse" ]; 305 -> eof_305 [ label = "EOF / err_appname, err_parse" ]; 306 -> eof_306 [ label = "EOF / err_appname, err_parse" ]; 307 -> eof_307 [ label = "EOF / err_hostname, err_parse" ]; 308 -> eof_308 [ label = "EOF / err_hostname, err_parse" ]; 309 -> eof_309 [ label = "EOF / err_hostname, err_parse" ]; 310 -> eof_310 [ label = "EOF / err_hostname, err_parse" ]; 311 -> eof_311 [ label = "EOF / err_hostname, err_parse" ]; 312 -> eof_312 [ label = "EOF / err_hostname, err_parse" ]; 313 -> eof_313 [ label = "EOF / err_hostname, err_parse" ]; 314 -> eof_314 [ label = "EOF / err_hostname, err_parse" ]; 315 -> eof_315 [ label = "EOF / err_hostname, err_parse" ]; 316 -> eof_316 [ label = "EOF / err_hostname, err_parse" ]; 317 -> eof_317 [ label = "EOF / err_hostname, err_parse" ]; 318 -> eof_318 [ label = "EOF / err_hostname, err_parse" ]; 319 -> eof_319 [ label = "EOF / err_hostname, err_parse" ]; 320 -> eof_320 [ label = "EOF / err_hostname, err_parse" ]; 321 -> eof_321 [ label = "EOF / err_hostname, err_parse" ]; 322 -> eof_322 [ label = "EOF / err_hostname, err_parse" ]; 323 -> eof_323 [ label = "EOF / err_hostname, err_parse" ]; 324 -> eof_324 [ label = "EOF / err_hostname, err_parse" ]; 325 -> eof_325 [ label = "EOF / err_hostname, err_parse" ]; 326 -> eof_326 [ label = "EOF / err_hostname, err_parse" ]; 327 -> eof_327 [ label = "EOF / err_hostname, err_parse" ]; 328 -> eof_328 [ label = "EOF / err_hostname, err_parse" ]; 329 -> eof_329 [ label = "EOF / err_hostname, err_parse" ]; 330 -> eof_330 [ label = "EOF / err_hostname, err_parse" ]; 331 -> eof_331 [ label = "EOF / err_hostname, err_parse" ]; 332 -> eof_332 [ label = "EOF / err_hostname, err_parse" ]; 333 -> eof_333 [ label = "EOF / err_hostname, err_parse" ]; 334 -> eof_334 [ label = "EOF / err_hostname, err_parse" ]; 335 -> eof_335 [ label = "EOF / err_hostname, err_parse" ]; 336 -> eof_336 [ label = "EOF / err_hostname, err_parse" ]; 337 -> eof_337 [ label = "EOF / err_hostname, err_parse" ]; 338 -> eof_338 [ label = "EOF / err_hostname, err_parse" ]; 339 -> eof_339 [ label = "EOF / err_hostname, err_parse" ]; 340 -> eof_340 [ label = "EOF / err_hostname, err_parse" ]; 341 -> eof_341 [ label = "EOF / err_hostname, err_parse" ]; 342 -> eof_342 [ label = "EOF / err_hostname, err_parse" ]; 343 -> eof_343 [ label = "EOF / err_hostname, err_parse" ]; 344 -> eof_344 [ label = "EOF / err_hostname, err_parse" ]; 345 -> eof_345 [ label = "EOF / err_hostname, err_parse" ]; 346 -> eof_346 [ label = "EOF / err_hostname, err_parse" ]; 347 -> eof_347 [ label = "EOF / err_hostname, err_parse" ]; 348 -> eof_348 [ label = "EOF / err_hostname, err_parse" ]; 349 -> eof_349 [ label = "EOF / err_hostname, err_parse" ]; 350 -> eof_350 [ label = "EOF / err_hostname, err_parse" ]; 351 -> eof_351 [ label = "EOF / err_hostname, err_parse" ]; 352 -> eof_352 [ label = "EOF / err_hostname, err_parse" ]; 353 -> eof_353 [ label = "EOF / err_hostname, err_parse" ]; 354 -> eof_354 [ label = "EOF / err_hostname, err_parse" ]; 355 -> eof_355 [ label = "EOF / err_hostname, err_parse" ]; 356 -> eof_356 [ label = "EOF / err_hostname, err_parse" ]; 357 -> eof_357 [ label = "EOF / err_hostname, err_parse" ]; 358 -> eof_358 [ label = "EOF / err_hostname, err_parse" ]; 359 -> eof_359 [ label = "EOF / err_hostname, err_parse" ]; 360 -> eof_360 [ label = "EOF / err_hostname, err_parse" ]; 361 -> eof_361 [ label = "EOF / err_hostname, err_parse" ]; 362 -> eof_362 [ label = "EOF / err_hostname, err_parse" ]; 363 -> eof_363 [ label = "EOF / err_hostname, err_parse" ]; 364 -> eof_364 [ label = "EOF / err_hostname, err_parse" ]; 365 -> eof_365 [ label = "EOF / err_hostname, err_parse" ]; 366 -> eof_366 [ label = "EOF / err_hostname, err_parse" ]; 367 -> eof_367 [ label = "EOF / err_hostname, err_parse" ]; 368 -> eof_368 [ label = "EOF / err_hostname, err_parse" ]; 369 -> eof_369 [ label = "EOF / err_hostname, err_parse" ]; 370 -> eof_370 [ label = "EOF / err_hostname, err_parse" ]; 371 -> eof_371 [ label = "EOF / err_hostname, err_parse" ]; 372 -> eof_372 [ label = "EOF / err_hostname, err_parse" ]; 373 -> eof_373 [ label = "EOF / err_hostname, err_parse" ]; 374 -> eof_374 [ label = "EOF / err_hostname, err_parse" ]; 375 -> eof_375 [ label = "EOF / err_hostname, err_parse" ]; 376 -> eof_376 [ label = "EOF / err_hostname, err_parse" ]; 377 -> eof_377 [ label = "EOF / err_hostname, err_parse" ]; 378 -> eof_378 [ label = "EOF / err_hostname, err_parse" ]; 379 -> eof_379 [ label = "EOF / err_hostname, err_parse" ]; 380 -> eof_380 [ label = "EOF / err_hostname, err_parse" ]; 381 -> eof_381 [ label = "EOF / err_hostname, err_parse" ]; 382 -> eof_382 [ label = "EOF / err_hostname, err_parse" ]; 383 -> eof_383 [ label = "EOF / err_hostname, err_parse" ]; 384 -> eof_384 [ label = "EOF / err_hostname, err_parse" ]; 385 -> eof_385 [ label = "EOF / err_hostname, err_parse" ]; 386 -> eof_386 [ label = "EOF / err_hostname, err_parse" ]; 387 -> eof_387 [ label = "EOF / err_hostname, err_parse" ]; 388 -> eof_388 [ label = "EOF / err_hostname, err_parse" ]; 389 -> eof_389 [ label = "EOF / err_hostname, err_parse" ]; 390 -> eof_390 [ label = "EOF / err_hostname, err_parse" ]; 391 -> eof_391 [ label = "EOF / err_hostname, err_parse" ]; 392 -> eof_392 [ label = "EOF / err_hostname, err_parse" ]; 393 -> eof_393 [ label = "EOF / err_hostname, err_parse" ]; 394 -> eof_394 [ label = "EOF / err_hostname, err_parse" ]; 395 -> eof_395 [ label = "EOF / err_hostname, err_parse" ]; 396 -> eof_396 [ label = "EOF / err_hostname, err_parse" ]; 397 -> eof_397 [ label = "EOF / err_hostname, err_parse" ]; 398 -> eof_398 [ label = "EOF / err_hostname, err_parse" ]; 399 -> eof_399 [ label = "EOF / err_hostname, err_parse" ]; 400 -> eof_400 [ label = "EOF / err_hostname, err_parse" ]; 401 -> eof_401 [ label = "EOF / err_hostname, err_parse" ]; 402 -> eof_402 [ label = "EOF / err_hostname, err_parse" ]; 403 -> eof_403 [ label = "EOF / err_hostname, err_parse" ]; 404 -> eof_404 [ label = "EOF / err_hostname, err_parse" ]; 405 -> eof_405 [ label = "EOF / err_hostname, err_parse" ]; 406 -> eof_406 [ label = "EOF / err_hostname, err_parse" ]; 407 -> eof_407 [ label = "EOF / err_hostname, err_parse" ]; 408 -> eof_408 [ label = "EOF / err_hostname, err_parse" ]; 409 -> eof_409 [ label = "EOF / err_hostname, err_parse" ]; 410 -> eof_410 [ label = "EOF / err_hostname, err_parse" ]; 411 -> eof_411 [ label = "EOF / err_hostname, err_parse" ]; 412 -> eof_412 [ label = "EOF / err_hostname, err_parse" ]; 413 -> eof_413 [ label = "EOF / err_hostname, err_parse" ]; 414 -> eof_414 [ label = "EOF / err_hostname, err_parse" ]; 415 -> eof_415 [ label = "EOF / err_hostname, err_parse" ]; 416 -> eof_416 [ label = "EOF / err_hostname, err_parse" ]; 417 -> eof_417 [ label = "EOF / err_hostname, err_parse" ]; 418 -> eof_418 [ label = "EOF / err_hostname, err_parse" ]; 419 -> eof_419 [ label = "EOF / err_hostname, err_parse" ]; 420 -> eof_420 [ label = "EOF / err_hostname, err_parse" ]; 421 -> eof_421 [ label = "EOF / err_hostname, err_parse" ]; 422 -> eof_422 [ label = "EOF / err_hostname, err_parse" ]; 423 -> eof_423 [ label = "EOF / err_hostname, err_parse" ]; 424 -> eof_424 [ label = "EOF / err_hostname, err_parse" ]; 425 -> eof_425 [ label = "EOF / err_hostname, err_parse" ]; 426 -> eof_426 [ label = "EOF / err_hostname, err_parse" ]; 427 -> eof_427 [ label = "EOF / err_hostname, err_parse" ]; 428 -> eof_428 [ label = "EOF / err_hostname, err_parse" ]; 429 -> eof_429 [ label = "EOF / err_hostname, err_parse" ]; 430 -> eof_430 [ label = "EOF / err_hostname, err_parse" ]; 431 -> eof_431 [ label = "EOF / err_hostname, err_parse" ]; 432 -> eof_432 [ label = "EOF / err_hostname, err_parse" ]; 433 -> eof_433 [ label = "EOF / err_hostname, err_parse" ]; 434 -> eof_434 [ label = "EOF / err_hostname, err_parse" ]; 435 -> eof_435 [ label = "EOF / err_hostname, err_parse" ]; 436 -> eof_436 [ label = "EOF / err_hostname, err_parse" ]; 437 -> eof_437 [ label = "EOF / err_hostname, err_parse" ]; 438 -> eof_438 [ label = "EOF / err_hostname, err_parse" ]; 439 -> eof_439 [ label = "EOF / err_hostname, err_parse" ]; 440 -> eof_440 [ label = "EOF / err_hostname, err_parse" ]; 441 -> eof_441 [ label = "EOF / err_hostname, err_parse" ]; 442 -> eof_442 [ label = "EOF / err_hostname, err_parse" ]; 443 -> eof_443 [ label = "EOF / err_hostname, err_parse" ]; 444 -> eof_444 [ label = "EOF / err_hostname, err_parse" ]; 445 -> eof_445 [ label = "EOF / err_hostname, err_parse" ]; 446 -> eof_446 [ label = "EOF / err_hostname, err_parse" ]; 447 -> eof_447 [ label = "EOF / err_hostname, err_parse" ]; 448 -> eof_448 [ label = "EOF / err_hostname, err_parse" ]; 449 -> eof_449 [ label = "EOF / err_hostname, err_parse" ]; 450 -> eof_450 [ label = "EOF / err_hostname, err_parse" ]; 451 -> eof_451 [ label = "EOF / err_hostname, err_parse" ]; 452 -> eof_452 [ label = "EOF / err_hostname, err_parse" ]; 453 -> eof_453 [ label = "EOF / err_hostname, err_parse" ]; 454 -> eof_454 [ label = "EOF / err_hostname, err_parse" ]; 455 -> eof_455 [ label = "EOF / err_hostname, err_parse" ]; 456 -> eof_456 [ label = "EOF / err_hostname, err_parse" ]; 457 -> eof_457 [ label = "EOF / err_hostname, err_parse" ]; 458 -> eof_458 [ label = "EOF / err_hostname, err_parse" ]; 459 -> eof_459 [ label = "EOF / err_hostname, err_parse" ]; 460 -> eof_460 [ label = "EOF / err_hostname, err_parse" ]; 461 -> eof_461 [ label = "EOF / err_hostname, err_parse" ]; 462 -> eof_462 [ label = "EOF / err_hostname, err_parse" ]; 463 -> eof_463 [ label = "EOF / err_hostname, err_parse" ]; 464 -> eof_464 [ label = "EOF / err_hostname, err_parse" ]; 465 -> eof_465 [ label = "EOF / err_hostname, err_parse" ]; 466 -> eof_466 [ label = "EOF / err_hostname, err_parse" ]; 467 -> eof_467 [ label = "EOF / err_hostname, err_parse" ]; 468 -> eof_468 [ label = "EOF / err_hostname, err_parse" ]; 469 -> eof_469 [ label = "EOF / err_hostname, err_parse" ]; 470 -> eof_470 [ label = "EOF / err_hostname, err_parse" ]; 471 -> eof_471 [ label = "EOF / err_hostname, err_parse" ]; 472 -> eof_472 [ label = "EOF / err_hostname, err_parse" ]; 473 -> eof_473 [ label = "EOF / err_hostname, err_parse" ]; 474 -> eof_474 [ label = "EOF / err_hostname, err_parse" ]; 475 -> eof_475 [ label = "EOF / err_hostname, err_parse" ]; 476 -> eof_476 [ label = "EOF / err_hostname, err_parse" ]; 477 -> eof_477 [ label = "EOF / err_hostname, err_parse" ]; 478 -> eof_478 [ label = "EOF / err_hostname, err_parse" ]; 479 -> eof_479 [ label = "EOF / err_hostname, err_parse" ]; 480 -> eof_480 [ label = "EOF / err_hostname, err_parse" ]; 481 -> eof_481 [ label = "EOF / err_hostname, err_parse" ]; 482 -> eof_482 [ label = "EOF / err_hostname, err_parse" ]; 483 -> eof_483 [ label = "EOF / err_hostname, err_parse" ]; 484 -> eof_484 [ label = "EOF / err_hostname, err_parse" ]; 485 -> eof_485 [ label = "EOF / err_hostname, err_parse" ]; 486 -> eof_486 [ label = "EOF / err_hostname, err_parse" ]; 487 -> eof_487 [ label = "EOF / err_hostname, err_parse" ]; 488 -> eof_488 [ label = "EOF / err_hostname, err_parse" ]; 489 -> eof_489 [ label = "EOF / err_hostname, err_parse" ]; 490 -> eof_490 [ label = "EOF / err_hostname, err_parse" ]; 491 -> eof_491 [ label = "EOF / err_hostname, err_parse" ]; 492 -> eof_492 [ label = "EOF / err_hostname, err_parse" ]; 493 -> eof_493 [ label = "EOF / err_hostname, err_parse" ]; 494 -> eof_494 [ label = "EOF / err_hostname, err_parse" ]; 495 -> eof_495 [ label = "EOF / err_hostname, err_parse" ]; 496 -> eof_496 [ label = "EOF / err_hostname, err_parse" ]; 497 -> eof_497 [ label = "EOF / err_hostname, err_parse" ]; 498 -> eof_498 [ label = "EOF / err_hostname, err_parse" ]; 499 -> eof_499 [ label = "EOF / err_hostname, err_parse" ]; 500 -> eof_500 [ label = "EOF / err_hostname, err_parse" ]; 501 -> eof_501 [ label = "EOF / err_hostname, err_parse" ]; 502 -> eof_502 [ label = "EOF / err_hostname, err_parse" ]; 503 -> eof_503 [ label = "EOF / err_hostname, err_parse" ]; 504 -> eof_504 [ label = "EOF / err_hostname, err_parse" ]; 505 -> eof_505 [ label = "EOF / err_hostname, err_parse" ]; 506 -> eof_506 [ label = "EOF / err_hostname, err_parse" ]; 507 -> eof_507 [ label = "EOF / err_hostname, err_parse" ]; 508 -> eof_508 [ label = "EOF / err_hostname, err_parse" ]; 509 -> eof_509 [ label = "EOF / err_hostname, err_parse" ]; 510 -> eof_510 [ label = "EOF / err_hostname, err_parse" ]; 511 -> eof_511 [ label = "EOF / err_hostname, err_parse" ]; 512 -> eof_512 [ label = "EOF / err_hostname, err_parse" ]; 513 -> eof_513 [ label = "EOF / err_hostname, err_parse" ]; 514 -> eof_514 [ label = "EOF / err_hostname, err_parse" ]; 515 -> eof_515 [ label = "EOF / err_hostname, err_parse" ]; 516 -> eof_516 [ label = "EOF / err_hostname, err_parse" ]; 517 -> eof_517 [ label = "EOF / err_hostname, err_parse" ]; 518 -> eof_518 [ label = "EOF / err_hostname, err_parse" ]; 519 -> eof_519 [ label = "EOF / err_hostname, err_parse" ]; 520 -> eof_520 [ label = "EOF / err_hostname, err_parse" ]; 521 -> eof_521 [ label = "EOF / err_hostname, err_parse" ]; 522 -> eof_522 [ label = "EOF / err_hostname, err_parse" ]; 523 -> eof_523 [ label = "EOF / err_hostname, err_parse" ]; 524 -> eof_524 [ label = "EOF / err_hostname, err_parse" ]; 525 -> eof_525 [ label = "EOF / err_hostname, err_parse" ]; 526 -> eof_526 [ label = "EOF / err_hostname, err_parse" ]; 527 -> eof_527 [ label = "EOF / err_hostname, err_parse" ]; 528 -> eof_528 [ label = "EOF / err_hostname, err_parse" ]; 529 -> eof_529 [ label = "EOF / err_hostname, err_parse" ]; 530 -> eof_530 [ label = "EOF / err_hostname, err_parse" ]; 531 -> eof_531 [ label = "EOF / err_hostname, err_parse" ]; 532 -> eof_532 [ label = "EOF / err_hostname, err_parse" ]; 533 -> eof_533 [ label = "EOF / err_hostname, err_parse" ]; 534 -> eof_534 [ label = "EOF / err_hostname, err_parse" ]; 535 -> eof_535 [ label = "EOF / err_hostname, err_parse" ]; 536 -> eof_536 [ label = "EOF / err_hostname, err_parse" ]; 537 -> eof_537 [ label = "EOF / err_hostname, err_parse" ]; 538 -> eof_538 [ label = "EOF / err_hostname, err_parse" ]; 539 -> eof_539 [ label = "EOF / err_hostname, err_parse" ]; 540 -> eof_540 [ label = "EOF / err_hostname, err_parse" ]; 541 -> eof_541 [ label = "EOF / err_hostname, err_parse" ]; 542 -> eof_542 [ label = "EOF / err_hostname, err_parse" ]; 543 -> eof_543 [ label = "EOF / err_hostname, err_parse" ]; 544 -> eof_544 [ label = "EOF / err_hostname, err_parse" ]; 545 -> eof_545 [ label = "EOF / err_hostname, err_parse" ]; 546 -> eof_546 [ label = "EOF / err_hostname, err_parse" ]; 547 -> eof_547 [ label = "EOF / err_hostname, err_parse" ]; 548 -> eof_548 [ label = "EOF / err_hostname, err_parse" ]; 549 -> eof_549 [ label = "EOF / err_hostname, err_parse" ]; 550 -> eof_550 [ label = "EOF / err_hostname, err_parse" ]; 551 -> eof_551 [ label = "EOF / err_hostname, err_parse" ]; 552 -> eof_552 [ label = "EOF / err_hostname, err_parse" ]; 553 -> eof_553 [ label = "EOF / err_hostname, err_parse" ]; 554 -> eof_554 [ label = "EOF / err_hostname, err_parse" ]; 555 -> eof_555 [ label = "EOF / err_hostname, err_parse" ]; 556 -> eof_556 [ label = "EOF / err_hostname, err_parse" ]; 557 -> eof_557 [ label = "EOF / err_hostname, err_parse" ]; 558 -> eof_558 [ label = "EOF / err_hostname, err_parse" ]; 559 -> eof_559 [ label = "EOF / err_hostname, err_parse" ]; 560 -> eof_560 [ label = "EOF / err_hostname, err_parse" ]; 561 -> eof_561 [ label = "EOF / err_timestamp, err_parse" ]; 562 -> eof_562 [ label = "EOF / err_timestamp, err_parse" ]; 563 -> eof_563 [ label = "EOF / err_timestamp, err_parse" ]; 564 -> eof_564 [ label = "EOF / err_timestamp, err_parse" ]; 565 -> eof_565 [ label = "EOF / err_timestamp, err_parse" ]; 566 -> eof_566 [ label = "EOF / err_timestamp, err_parse" ]; 567 -> eof_567 [ label = "EOF / err_timestamp, err_parse" ]; 568 -> eof_568 [ label = "EOF / err_timestamp, err_parse" ]; 569 -> eof_569 [ label = "EOF / err_timestamp, err_parse" ]; 570 -> eof_570 [ label = "EOF / err_timestamp, err_parse" ]; 571 -> eof_571 [ label = "EOF / err_timestamp, err_parse" ]; 572 -> eof_572 [ label = "EOF / err_timestamp, err_parse" ]; 573 -> eof_573 [ label = "EOF / err_timestamp, err_parse" ]; 574 -> eof_574 [ label = "EOF / err_timestamp, err_parse" ]; 575 -> eof_575 [ label = "EOF / err_timestamp, err_parse" ]; 576 -> eof_576 [ label = "EOF / err_timestamp, err_parse" ]; 577 -> eof_577 [ label = "EOF / err_timestamp, err_parse" ]; 578 -> eof_578 [ label = "EOF / err_timestamp, err_parse" ]; 579 -> eof_579 [ label = "EOF / err_timestamp, err_parse" ]; 580 -> eof_580 [ label = "EOF / err_timestamp, err_parse" ]; 581 -> eof_581 [ label = "EOF / err_timestamp, err_parse" ]; 582 -> eof_582 [ label = "EOF / err_timestamp, err_parse" ]; 583 -> eof_583 [ label = "EOF / err_timestamp, err_parse" ]; 584 -> eof_584 [ label = "EOF / err_timestamp, err_parse" ]; 585 -> eof_585 [ label = "EOF / set_timestamp, err_parse" ]; 586 -> eof_586 [ label = "EOF / err_timestamp, err_parse" ]; 587 -> eof_587 [ label = "EOF / err_timestamp, err_parse" ]; 588 -> eof_588 [ label = "EOF / err_timestamp, err_parse" ]; 589 -> eof_589 [ label = "EOF / err_timestamp, err_parse" ]; 590 -> eof_590 [ label = "EOF / err_timestamp, err_parse" ]; 591 -> eof_591 [ label = "EOF / err_timestamp, err_parse" ]; 592 -> eof_592 [ label = "EOF / err_timestamp, err_parse" ]; 593 -> eof_593 [ label = "EOF / err_timestamp, err_parse" ]; 594 -> eof_594 [ label = "EOF / err_timestamp, err_parse" ]; 595 -> eof_595 [ label = "EOF / err_timestamp, err_parse" ]; 596 -> eof_596 [ label = "EOF / err_timestamp, err_parse" ]; 597 -> eof_597 [ label = "EOF / err_timestamp, err_parse" ]; 598 -> eof_598 [ label = "EOF / err_version, set_version, err_parse" ]; 599 -> eof_599 [ label = "EOF / err_version, set_version, err_parse" ]; 600 -> eof_600 [ label = "EOF / err_prival, err_pri, err_parse" ]; 601 -> eof_601 [ label = "EOF / err_prival, err_pri, err_parse" ]; 602 -> eof_602 [ label = "EOF / err_prival, err_pri, err_parse" ]; 604 -> eof_604 [ label = "EOF / mark, markmsg, set_msg" ]; 605 -> eof_605 [ label = "EOF / set_msg" ]; } go-syslog-2.0.0/docs/rfc5424_appname.dot000066400000000000000000000176471340614351500177070ustar00rootroot00000000000000digraph rfc5424 { rankdir=LR; node [ shape = point ]; ENTRY; eof_1; eof_2; eof_3; eof_4; eof_5; eof_6; eof_7; eof_8; eof_9; eof_10; eof_11; eof_12; eof_13; eof_14; eof_15; eof_16; eof_17; eof_18; eof_19; eof_20; eof_21; eof_22; eof_23; eof_24; eof_25; eof_26; eof_27; eof_28; eof_29; eof_30; eof_31; eof_32; eof_33; eof_34; eof_35; eof_36; eof_37; eof_38; eof_39; eof_40; eof_41; eof_42; eof_43; eof_44; eof_45; eof_46; eof_47; eof_48; eof_49; node [ shape = circle, height = 0.2 ]; err_1 [ label=""]; err_2 [ label=""]; err_3 [ label=""]; err_4 [ label=""]; err_5 [ label=""]; err_6 [ label=""]; err_7 [ label=""]; err_8 [ label=""]; err_9 [ label=""]; err_10 [ label=""]; err_11 [ label=""]; err_12 [ label=""]; err_13 [ label=""]; err_14 [ label=""]; err_15 [ label=""]; err_16 [ label=""]; err_17 [ label=""]; err_18 [ label=""]; err_19 [ label=""]; err_20 [ label=""]; err_21 [ label=""]; err_22 [ label=""]; err_23 [ label=""]; err_24 [ label=""]; err_25 [ label=""]; err_26 [ label=""]; err_27 [ label=""]; err_28 [ label=""]; err_29 [ label=""]; err_30 [ label=""]; err_31 [ label=""]; err_32 [ label=""]; err_33 [ label=""]; err_34 [ label=""]; err_35 [ label=""]; err_36 [ label=""]; err_37 [ label=""]; err_38 [ label=""]; err_39 [ label=""]; err_40 [ label=""]; err_41 [ label=""]; err_42 [ label=""]; err_43 [ label=""]; err_44 [ label=""]; err_45 [ label=""]; err_46 [ label=""]; err_47 [ label=""]; err_48 [ label=""]; err_49 [ label=""]; node [ fixedsize = true, height = 0.65, shape = doublecircle ]; 2; 3; 4; 5; 6; 7; 8; 9; 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; node [ shape = circle ]; 1 -> 2 [ label = "'!'..'~' / mark" ]; 1 -> err_1 [ label = "DEF / err_appname" ]; 2 -> 3 [ label = "'!'..'~'" ]; 2 -> err_2 [ label = "DEF / err_appname" ]; 3 -> 4 [ label = "'!'..'~'" ]; 3 -> err_3 [ label = "DEF / err_appname" ]; 4 -> 5 [ label = "'!'..'~'" ]; 4 -> err_4 [ label = "DEF / err_appname" ]; 5 -> 6 [ label = "'!'..'~'" ]; 5 -> err_5 [ label = "DEF / err_appname" ]; 6 -> 7 [ label = "'!'..'~'" ]; 6 -> err_6 [ label = "DEF / err_appname" ]; 7 -> 8 [ label = "'!'..'~'" ]; 7 -> err_7 [ label = "DEF / err_appname" ]; 8 -> 9 [ label = "'!'..'~'" ]; 8 -> err_8 [ label = "DEF / err_appname" ]; 9 -> 10 [ label = "'!'..'~'" ]; 9 -> err_9 [ label = "DEF / err_appname" ]; 10 -> 11 [ label = "'!'..'~'" ]; 10 -> err_10 [ label = "DEF / err_appname" ]; 11 -> 12 [ label = "'!'..'~'" ]; 11 -> err_11 [ label = "DEF / err_appname" ]; 12 -> 13 [ label = "'!'..'~'" ]; 12 -> err_12 [ label = "DEF / err_appname" ]; 13 -> 14 [ label = "'!'..'~'" ]; 13 -> err_13 [ label = "DEF / err_appname" ]; 14 -> 15 [ label = "'!'..'~'" ]; 14 -> err_14 [ label = "DEF / err_appname" ]; 15 -> 16 [ label = "'!'..'~'" ]; 15 -> err_15 [ label = "DEF / err_appname" ]; 16 -> 17 [ label = "'!'..'~'" ]; 16 -> err_16 [ label = "DEF / err_appname" ]; 17 -> 18 [ label = "'!'..'~'" ]; 17 -> err_17 [ label = "DEF / err_appname" ]; 18 -> 19 [ label = "'!'..'~'" ]; 18 -> err_18 [ label = "DEF / err_appname" ]; 19 -> 20 [ label = "'!'..'~'" ]; 19 -> err_19 [ label = "DEF / err_appname" ]; 20 -> 21 [ label = "'!'..'~'" ]; 20 -> err_20 [ label = "DEF / err_appname" ]; 21 -> 22 [ label = "'!'..'~'" ]; 21 -> err_21 [ label = "DEF / err_appname" ]; 22 -> 23 [ label = "'!'..'~'" ]; 22 -> err_22 [ label = "DEF / err_appname" ]; 23 -> 24 [ label = "'!'..'~'" ]; 23 -> err_23 [ label = "DEF / err_appname" ]; 24 -> 25 [ label = "'!'..'~'" ]; 24 -> err_24 [ label = "DEF / err_appname" ]; 25 -> 26 [ label = "'!'..'~'" ]; 25 -> err_25 [ label = "DEF / err_appname" ]; 26 -> 27 [ label = "'!'..'~'" ]; 26 -> err_26 [ label = "DEF / err_appname" ]; 27 -> 28 [ label = "'!'..'~'" ]; 27 -> err_27 [ label = "DEF / err_appname" ]; 28 -> 29 [ label = "'!'..'~'" ]; 28 -> err_28 [ label = "DEF / err_appname" ]; 29 -> 30 [ label = "'!'..'~'" ]; 29 -> err_29 [ label = "DEF / err_appname" ]; 30 -> 31 [ label = "'!'..'~'" ]; 30 -> err_30 [ label = "DEF / err_appname" ]; 31 -> 32 [ label = "'!'..'~'" ]; 31 -> err_31 [ label = "DEF / err_appname" ]; 32 -> 33 [ label = "'!'..'~'" ]; 32 -> err_32 [ label = "DEF / err_appname" ]; 33 -> 34 [ label = "'!'..'~'" ]; 33 -> err_33 [ label = "DEF / err_appname" ]; 34 -> 35 [ label = "'!'..'~'" ]; 34 -> err_34 [ label = "DEF / err_appname" ]; 35 -> 36 [ label = "'!'..'~'" ]; 35 -> err_35 [ label = "DEF / err_appname" ]; 36 -> 37 [ label = "'!'..'~'" ]; 36 -> err_36 [ label = "DEF / err_appname" ]; 37 -> 38 [ label = "'!'..'~'" ]; 37 -> err_37 [ label = "DEF / err_appname" ]; 38 -> 39 [ label = "'!'..'~'" ]; 38 -> err_38 [ label = "DEF / err_appname" ]; 39 -> 40 [ label = "'!'..'~'" ]; 39 -> err_39 [ label = "DEF / err_appname" ]; 40 -> 41 [ label = "'!'..'~'" ]; 40 -> err_40 [ label = "DEF / err_appname" ]; 41 -> 42 [ label = "'!'..'~'" ]; 41 -> err_41 [ label = "DEF / err_appname" ]; 42 -> 43 [ label = "'!'..'~'" ]; 42 -> err_42 [ label = "DEF / err_appname" ]; 43 -> 44 [ label = "'!'..'~'" ]; 43 -> err_43 [ label = "DEF / err_appname" ]; 44 -> 45 [ label = "'!'..'~'" ]; 44 -> err_44 [ label = "DEF / err_appname" ]; 45 -> 46 [ label = "'!'..'~'" ]; 45 -> err_45 [ label = "DEF / err_appname" ]; 46 -> 47 [ label = "'!'..'~'" ]; 46 -> err_46 [ label = "DEF / err_appname" ]; 47 -> 48 [ label = "'!'..'~'" ]; 47 -> err_47 [ label = "DEF / err_appname" ]; 48 -> 49 [ label = "'!'..'~'" ]; 48 -> err_48 [ label = "DEF / err_appname" ]; 49 -> err_49 [ label = "DEF / err_appname" ]; ENTRY -> 1 [ label = "IN" ]; 1 -> eof_1 [ label = "EOF / err_appname" ]; 2 -> eof_2 [ label = "EOF / set_appname" ]; 3 -> eof_3 [ label = "EOF / set_appname" ]; 4 -> eof_4 [ label = "EOF / set_appname" ]; 5 -> eof_5 [ label = "EOF / set_appname" ]; 6 -> eof_6 [ label = "EOF / set_appname" ]; 7 -> eof_7 [ label = "EOF / set_appname" ]; 8 -> eof_8 [ label = "EOF / set_appname" ]; 9 -> eof_9 [ label = "EOF / set_appname" ]; 10 -> eof_10 [ label = "EOF / set_appname" ]; 11 -> eof_11 [ label = "EOF / set_appname" ]; 12 -> eof_12 [ label = "EOF / set_appname" ]; 13 -> eof_13 [ label = "EOF / set_appname" ]; 14 -> eof_14 [ label = "EOF / set_appname" ]; 15 -> eof_15 [ label = "EOF / set_appname" ]; 16 -> eof_16 [ label = "EOF / set_appname" ]; 17 -> eof_17 [ label = "EOF / set_appname" ]; 18 -> eof_18 [ label = "EOF / set_appname" ]; 19 -> eof_19 [ label = "EOF / set_appname" ]; 20 -> eof_20 [ label = "EOF / set_appname" ]; 21 -> eof_21 [ label = "EOF / set_appname" ]; 22 -> eof_22 [ label = "EOF / set_appname" ]; 23 -> eof_23 [ label = "EOF / set_appname" ]; 24 -> eof_24 [ label = "EOF / set_appname" ]; 25 -> eof_25 [ label = "EOF / set_appname" ]; 26 -> eof_26 [ label = "EOF / set_appname" ]; 27 -> eof_27 [ label = "EOF / set_appname" ]; 28 -> eof_28 [ label = "EOF / set_appname" ]; 29 -> eof_29 [ label = "EOF / set_appname" ]; 30 -> eof_30 [ label = "EOF / set_appname" ]; 31 -> eof_31 [ label = "EOF / set_appname" ]; 32 -> eof_32 [ label = "EOF / set_appname" ]; 33 -> eof_33 [ label = "EOF / set_appname" ]; 34 -> eof_34 [ label = "EOF / set_appname" ]; 35 -> eof_35 [ label = "EOF / set_appname" ]; 36 -> eof_36 [ label = "EOF / set_appname" ]; 37 -> eof_37 [ label = "EOF / set_appname" ]; 38 -> eof_38 [ label = "EOF / set_appname" ]; 39 -> eof_39 [ label = "EOF / set_appname" ]; 40 -> eof_40 [ label = "EOF / set_appname" ]; 41 -> eof_41 [ label = "EOF / set_appname" ]; 42 -> eof_42 [ label = "EOF / set_appname" ]; 43 -> eof_43 [ label = "EOF / set_appname" ]; 44 -> eof_44 [ label = "EOF / set_appname" ]; 45 -> eof_45 [ label = "EOF / set_appname" ]; 46 -> eof_46 [ label = "EOF / set_appname" ]; 47 -> eof_47 [ label = "EOF / set_appname" ]; 48 -> eof_48 [ label = "EOF / set_appname" ]; 49 -> eof_49 [ label = "EOF / set_appname" ]; } go-syslog-2.0.0/docs/rfc5424_hostname.dot000066400000000000000000001253701340614351500200750ustar00rootroot00000000000000digraph rfc5424 { rankdir=LR; node [ shape = point ]; ENTRY; eof_1; eof_2; eof_3; eof_4; eof_5; eof_6; eof_7; eof_8; eof_9; eof_10; eof_11; eof_12; eof_13; eof_14; eof_15; eof_16; eof_17; eof_18; eof_19; eof_20; eof_21; eof_22; eof_23; eof_24; eof_25; eof_26; eof_27; eof_28; eof_29; eof_30; eof_31; eof_32; eof_33; eof_34; eof_35; eof_36; eof_37; eof_38; eof_39; eof_40; eof_41; eof_42; eof_43; eof_44; eof_45; eof_46; eof_47; eof_48; eof_49; eof_50; eof_51; eof_52; eof_53; eof_54; eof_55; eof_56; eof_57; eof_58; eof_59; eof_60; eof_61; eof_62; eof_63; eof_64; eof_65; eof_66; eof_67; eof_68; eof_69; eof_70; eof_71; eof_72; eof_73; eof_74; eof_75; eof_76; eof_77; eof_78; eof_79; eof_80; eof_81; eof_82; eof_83; eof_84; eof_85; eof_86; eof_87; eof_88; eof_89; eof_90; eof_91; eof_92; eof_93; eof_94; eof_95; eof_96; eof_97; eof_98; eof_99; eof_100; eof_101; eof_102; eof_103; eof_104; eof_105; eof_106; eof_107; eof_108; eof_109; eof_110; eof_111; eof_112; eof_113; eof_114; eof_115; eof_116; eof_117; eof_118; eof_119; eof_120; eof_121; eof_122; eof_123; eof_124; eof_125; eof_126; eof_127; eof_128; eof_129; eof_130; eof_131; eof_132; eof_133; eof_134; eof_135; eof_136; eof_137; eof_138; eof_139; eof_140; eof_141; eof_142; eof_143; eof_144; eof_145; eof_146; eof_147; eof_148; eof_149; eof_150; eof_151; eof_152; eof_153; eof_154; eof_155; eof_156; eof_157; eof_158; eof_159; eof_160; eof_161; eof_162; eof_163; eof_164; eof_165; eof_166; eof_167; eof_168; eof_169; eof_170; eof_171; eof_172; eof_173; eof_174; eof_175; eof_176; eof_177; eof_178; eof_179; eof_180; eof_181; eof_182; eof_183; eof_184; eof_185; eof_186; eof_187; eof_188; eof_189; eof_190; eof_191; eof_192; eof_193; eof_194; eof_195; eof_196; eof_197; eof_198; eof_199; eof_200; eof_201; eof_202; eof_203; eof_204; eof_205; eof_206; eof_207; eof_208; eof_209; eof_210; eof_211; eof_212; eof_213; eof_214; eof_215; eof_216; eof_217; eof_218; eof_219; eof_220; eof_221; eof_222; eof_223; eof_224; eof_225; eof_226; eof_227; eof_228; eof_229; eof_230; eof_231; eof_232; eof_233; eof_234; eof_235; eof_236; eof_237; eof_238; eof_239; eof_240; eof_241; eof_242; eof_243; eof_244; eof_245; eof_246; eof_247; eof_248; eof_249; eof_250; eof_251; eof_252; eof_253; eof_254; eof_255; eof_256; node [ shape = circle, height = 0.2 ]; err_1 [ label=""]; err_2 [ label=""]; err_3 [ label=""]; err_4 [ label=""]; err_5 [ label=""]; err_6 [ label=""]; err_7 [ label=""]; err_8 [ label=""]; err_9 [ label=""]; err_10 [ label=""]; err_11 [ label=""]; err_12 [ label=""]; err_13 [ label=""]; err_14 [ label=""]; err_15 [ label=""]; err_16 [ label=""]; err_17 [ label=""]; err_18 [ label=""]; err_19 [ label=""]; err_20 [ label=""]; err_21 [ label=""]; err_22 [ label=""]; err_23 [ label=""]; err_24 [ label=""]; err_25 [ label=""]; err_26 [ label=""]; err_27 [ label=""]; err_28 [ label=""]; err_29 [ label=""]; err_30 [ label=""]; err_31 [ label=""]; err_32 [ label=""]; err_33 [ label=""]; err_34 [ label=""]; err_35 [ label=""]; err_36 [ label=""]; err_37 [ label=""]; err_38 [ label=""]; err_39 [ label=""]; err_40 [ label=""]; err_41 [ label=""]; err_42 [ label=""]; err_43 [ label=""]; err_44 [ label=""]; err_45 [ label=""]; err_46 [ label=""]; err_47 [ label=""]; err_48 [ label=""]; err_49 [ label=""]; err_50 [ label=""]; err_51 [ label=""]; err_52 [ label=""]; err_53 [ label=""]; err_54 [ label=""]; err_55 [ label=""]; err_56 [ label=""]; err_57 [ label=""]; err_58 [ label=""]; err_59 [ label=""]; err_60 [ label=""]; err_61 [ label=""]; err_62 [ label=""]; err_63 [ label=""]; err_64 [ label=""]; err_65 [ label=""]; err_66 [ label=""]; err_67 [ label=""]; err_68 [ label=""]; err_69 [ label=""]; err_70 [ label=""]; err_71 [ label=""]; err_72 [ label=""]; err_73 [ label=""]; err_74 [ label=""]; err_75 [ label=""]; err_76 [ label=""]; err_77 [ label=""]; err_78 [ label=""]; err_79 [ label=""]; err_80 [ label=""]; err_81 [ label=""]; err_82 [ label=""]; err_83 [ label=""]; err_84 [ label=""]; err_85 [ label=""]; err_86 [ label=""]; err_87 [ label=""]; err_88 [ label=""]; err_89 [ label=""]; err_90 [ label=""]; err_91 [ label=""]; err_92 [ label=""]; err_93 [ label=""]; err_94 [ label=""]; err_95 [ label=""]; err_96 [ label=""]; err_97 [ label=""]; err_98 [ label=""]; err_99 [ label=""]; err_100 [ label=""]; err_101 [ label=""]; err_102 [ label=""]; err_103 [ label=""]; err_104 [ label=""]; err_105 [ label=""]; err_106 [ label=""]; err_107 [ label=""]; err_108 [ label=""]; err_109 [ label=""]; err_110 [ label=""]; err_111 [ label=""]; err_112 [ label=""]; err_113 [ label=""]; err_114 [ label=""]; err_115 [ label=""]; err_116 [ label=""]; err_117 [ label=""]; err_118 [ label=""]; err_119 [ label=""]; err_120 [ label=""]; err_121 [ label=""]; err_122 [ label=""]; err_123 [ label=""]; err_124 [ label=""]; err_125 [ label=""]; err_126 [ label=""]; err_127 [ label=""]; err_128 [ label=""]; err_129 [ label=""]; err_130 [ label=""]; err_131 [ label=""]; err_132 [ label=""]; err_133 [ label=""]; err_134 [ label=""]; err_135 [ label=""]; err_136 [ label=""]; err_137 [ label=""]; err_138 [ label=""]; err_139 [ label=""]; err_140 [ label=""]; err_141 [ label=""]; err_142 [ label=""]; err_143 [ label=""]; err_144 [ label=""]; err_145 [ label=""]; err_146 [ label=""]; err_147 [ label=""]; err_148 [ label=""]; err_149 [ label=""]; err_150 [ label=""]; err_151 [ label=""]; err_152 [ label=""]; err_153 [ label=""]; err_154 [ label=""]; err_155 [ label=""]; err_156 [ label=""]; err_157 [ label=""]; err_158 [ label=""]; err_159 [ label=""]; err_160 [ label=""]; err_161 [ label=""]; err_162 [ label=""]; err_163 [ label=""]; err_164 [ label=""]; err_165 [ label=""]; err_166 [ label=""]; err_167 [ label=""]; err_168 [ label=""]; err_169 [ label=""]; err_170 [ label=""]; err_171 [ label=""]; err_172 [ label=""]; err_173 [ label=""]; err_174 [ label=""]; err_175 [ label=""]; err_176 [ label=""]; err_177 [ label=""]; err_178 [ label=""]; err_179 [ label=""]; err_180 [ label=""]; err_181 [ label=""]; err_182 [ label=""]; err_183 [ label=""]; err_184 [ label=""]; err_185 [ label=""]; err_186 [ label=""]; err_187 [ label=""]; err_188 [ label=""]; err_189 [ label=""]; err_190 [ label=""]; err_191 [ label=""]; err_192 [ label=""]; err_193 [ label=""]; err_194 [ label=""]; err_195 [ label=""]; err_196 [ label=""]; err_197 [ label=""]; err_198 [ label=""]; err_199 [ label=""]; err_200 [ label=""]; err_201 [ label=""]; err_202 [ label=""]; err_203 [ label=""]; err_204 [ label=""]; err_205 [ label=""]; err_206 [ label=""]; err_207 [ label=""]; err_208 [ label=""]; err_209 [ label=""]; err_210 [ label=""]; err_211 [ label=""]; err_212 [ label=""]; err_213 [ label=""]; err_214 [ label=""]; err_215 [ label=""]; err_216 [ label=""]; err_217 [ label=""]; err_218 [ label=""]; err_219 [ label=""]; err_220 [ label=""]; err_221 [ label=""]; err_222 [ label=""]; err_223 [ label=""]; err_224 [ label=""]; err_225 [ label=""]; err_226 [ label=""]; err_227 [ label=""]; err_228 [ label=""]; err_229 [ label=""]; err_230 [ label=""]; err_231 [ label=""]; err_232 [ label=""]; err_233 [ label=""]; err_234 [ label=""]; err_235 [ label=""]; err_236 [ label=""]; err_237 [ label=""]; err_238 [ label=""]; err_239 [ label=""]; err_240 [ label=""]; err_241 [ label=""]; err_242 [ label=""]; err_243 [ label=""]; err_244 [ label=""]; err_245 [ label=""]; err_246 [ label=""]; err_247 [ label=""]; err_248 [ label=""]; err_249 [ label=""]; err_250 [ label=""]; err_251 [ label=""]; err_252 [ label=""]; err_253 [ label=""]; err_254 [ label=""]; err_255 [ label=""]; err_256 [ label=""]; node [ fixedsize = true, height = 0.65, shape = doublecircle ]; 2; 3; 4; 5; 6; 7; 8; 9; 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; 81; 82; 83; 84; 85; 86; 87; 88; 89; 90; 91; 92; 93; 94; 95; 96; 97; 98; 99; 100; 101; 102; 103; 104; 105; 106; 107; 108; 109; 110; 111; 112; 113; 114; 115; 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; 152; 153; 154; 155; 156; 157; 158; 159; 160; 161; 162; 163; 164; 165; 166; 167; 168; 169; 170; 171; 172; 173; 174; 175; 176; 177; 178; 179; 180; 181; 182; 183; 184; 185; 186; 187; 188; 189; 190; 191; 192; 193; 194; 195; 196; 197; 198; 199; 200; 201; 202; 203; 204; 205; 206; 207; 208; 209; 210; 211; 212; 213; 214; 215; 216; 217; 218; 219; 220; 221; 222; 223; 224; 225; 226; 227; 228; 229; 230; 231; 232; 233; 234; 235; 236; 237; 238; 239; 240; 241; 242; 243; 244; 245; 246; 247; 248; 249; 250; 251; 252; 253; 254; 255; 256; node [ shape = circle ]; 1 -> 2 [ label = "'!'..'~' / mark" ]; 1 -> err_1 [ label = "DEF / err_hostname" ]; 2 -> 3 [ label = "'!'..'~'" ]; 2 -> err_2 [ label = "DEF / err_hostname" ]; 3 -> 4 [ label = "'!'..'~'" ]; 3 -> err_3 [ label = "DEF / err_hostname" ]; 4 -> 5 [ label = "'!'..'~'" ]; 4 -> err_4 [ label = "DEF / err_hostname" ]; 5 -> 6 [ label = "'!'..'~'" ]; 5 -> err_5 [ label = "DEF / err_hostname" ]; 6 -> 7 [ label = "'!'..'~'" ]; 6 -> err_6 [ label = "DEF / err_hostname" ]; 7 -> 8 [ label = "'!'..'~'" ]; 7 -> err_7 [ label = "DEF / err_hostname" ]; 8 -> 9 [ label = "'!'..'~'" ]; 8 -> err_8 [ label = "DEF / err_hostname" ]; 9 -> 10 [ label = "'!'..'~'" ]; 9 -> err_9 [ label = "DEF / err_hostname" ]; 10 -> 11 [ label = "'!'..'~'" ]; 10 -> err_10 [ label = "DEF / err_hostname" ]; 11 -> 12 [ label = "'!'..'~'" ]; 11 -> err_11 [ label = "DEF / err_hostname" ]; 12 -> 13 [ label = "'!'..'~'" ]; 12 -> err_12 [ label = "DEF / err_hostname" ]; 13 -> 14 [ label = "'!'..'~'" ]; 13 -> err_13 [ label = "DEF / err_hostname" ]; 14 -> 15 [ label = "'!'..'~'" ]; 14 -> err_14 [ label = "DEF / err_hostname" ]; 15 -> 16 [ label = "'!'..'~'" ]; 15 -> err_15 [ label = "DEF / err_hostname" ]; 16 -> 17 [ label = "'!'..'~'" ]; 16 -> err_16 [ label = "DEF / err_hostname" ]; 17 -> 18 [ label = "'!'..'~'" ]; 17 -> err_17 [ label = "DEF / err_hostname" ]; 18 -> 19 [ label = "'!'..'~'" ]; 18 -> err_18 [ label = "DEF / err_hostname" ]; 19 -> 20 [ label = "'!'..'~'" ]; 19 -> err_19 [ label = "DEF / err_hostname" ]; 20 -> 21 [ label = "'!'..'~'" ]; 20 -> err_20 [ label = "DEF / err_hostname" ]; 21 -> 22 [ label = "'!'..'~'" ]; 21 -> err_21 [ label = "DEF / err_hostname" ]; 22 -> 23 [ label = "'!'..'~'" ]; 22 -> err_22 [ label = "DEF / err_hostname" ]; 23 -> 24 [ label = "'!'..'~'" ]; 23 -> err_23 [ label = "DEF / err_hostname" ]; 24 -> 25 [ label = "'!'..'~'" ]; 24 -> err_24 [ label = "DEF / err_hostname" ]; 25 -> 26 [ label = "'!'..'~'" ]; 25 -> err_25 [ label = "DEF / err_hostname" ]; 26 -> 27 [ label = "'!'..'~'" ]; 26 -> err_26 [ label = "DEF / err_hostname" ]; 27 -> 28 [ label = "'!'..'~'" ]; 27 -> err_27 [ label = "DEF / err_hostname" ]; 28 -> 29 [ label = "'!'..'~'" ]; 28 -> err_28 [ label = "DEF / err_hostname" ]; 29 -> 30 [ label = "'!'..'~'" ]; 29 -> err_29 [ label = "DEF / err_hostname" ]; 30 -> 31 [ label = "'!'..'~'" ]; 30 -> err_30 [ label = "DEF / err_hostname" ]; 31 -> 32 [ label = "'!'..'~'" ]; 31 -> err_31 [ label = "DEF / err_hostname" ]; 32 -> 33 [ label = "'!'..'~'" ]; 32 -> err_32 [ label = "DEF / err_hostname" ]; 33 -> 34 [ label = "'!'..'~'" ]; 33 -> err_33 [ label = "DEF / err_hostname" ]; 34 -> 35 [ label = "'!'..'~'" ]; 34 -> err_34 [ label = "DEF / err_hostname" ]; 35 -> 36 [ label = "'!'..'~'" ]; 35 -> err_35 [ label = "DEF / err_hostname" ]; 36 -> 37 [ label = "'!'..'~'" ]; 36 -> err_36 [ label = "DEF / err_hostname" ]; 37 -> 38 [ label = "'!'..'~'" ]; 37 -> err_37 [ label = "DEF / err_hostname" ]; 38 -> 39 [ label = "'!'..'~'" ]; 38 -> err_38 [ label = "DEF / err_hostname" ]; 39 -> 40 [ label = "'!'..'~'" ]; 39 -> err_39 [ label = "DEF / err_hostname" ]; 40 -> 41 [ label = "'!'..'~'" ]; 40 -> err_40 [ label = "DEF / err_hostname" ]; 41 -> 42 [ label = "'!'..'~'" ]; 41 -> err_41 [ label = "DEF / err_hostname" ]; 42 -> 43 [ label = "'!'..'~'" ]; 42 -> err_42 [ label = "DEF / err_hostname" ]; 43 -> 44 [ label = "'!'..'~'" ]; 43 -> err_43 [ label = "DEF / err_hostname" ]; 44 -> 45 [ label = "'!'..'~'" ]; 44 -> err_44 [ label = "DEF / err_hostname" ]; 45 -> 46 [ label = "'!'..'~'" ]; 45 -> err_45 [ label = "DEF / err_hostname" ]; 46 -> 47 [ label = "'!'..'~'" ]; 46 -> err_46 [ label = "DEF / err_hostname" ]; 47 -> 48 [ label = "'!'..'~'" ]; 47 -> err_47 [ label = "DEF / err_hostname" ]; 48 -> 49 [ label = "'!'..'~'" ]; 48 -> err_48 [ label = "DEF / err_hostname" ]; 49 -> 50 [ label = "'!'..'~'" ]; 49 -> err_49 [ label = "DEF / err_hostname" ]; 50 -> 51 [ label = "'!'..'~'" ]; 50 -> err_50 [ label = "DEF / err_hostname" ]; 51 -> 52 [ label = "'!'..'~'" ]; 51 -> err_51 [ label = "DEF / err_hostname" ]; 52 -> 53 [ label = "'!'..'~'" ]; 52 -> err_52 [ label = "DEF / err_hostname" ]; 53 -> 54 [ label = "'!'..'~'" ]; 53 -> err_53 [ label = "DEF / err_hostname" ]; 54 -> 55 [ label = "'!'..'~'" ]; 54 -> err_54 [ label = "DEF / err_hostname" ]; 55 -> 56 [ label = "'!'..'~'" ]; 55 -> err_55 [ label = "DEF / err_hostname" ]; 56 -> 57 [ label = "'!'..'~'" ]; 56 -> err_56 [ label = "DEF / err_hostname" ]; 57 -> 58 [ label = "'!'..'~'" ]; 57 -> err_57 [ label = "DEF / err_hostname" ]; 58 -> 59 [ label = "'!'..'~'" ]; 58 -> err_58 [ label = "DEF / err_hostname" ]; 59 -> 60 [ label = "'!'..'~'" ]; 59 -> err_59 [ label = "DEF / err_hostname" ]; 60 -> 61 [ label = "'!'..'~'" ]; 60 -> err_60 [ label = "DEF / err_hostname" ]; 61 -> 62 [ label = "'!'..'~'" ]; 61 -> err_61 [ label = "DEF / err_hostname" ]; 62 -> 63 [ label = "'!'..'~'" ]; 62 -> err_62 [ label = "DEF / err_hostname" ]; 63 -> 64 [ label = "'!'..'~'" ]; 63 -> err_63 [ label = "DEF / err_hostname" ]; 64 -> 65 [ label = "'!'..'~'" ]; 64 -> err_64 [ label = "DEF / err_hostname" ]; 65 -> 66 [ label = "'!'..'~'" ]; 65 -> err_65 [ label = "DEF / err_hostname" ]; 66 -> 67 [ label = "'!'..'~'" ]; 66 -> err_66 [ label = "DEF / err_hostname" ]; 67 -> 68 [ label = "'!'..'~'" ]; 67 -> err_67 [ label = "DEF / err_hostname" ]; 68 -> 69 [ label = "'!'..'~'" ]; 68 -> err_68 [ label = "DEF / err_hostname" ]; 69 -> 70 [ label = "'!'..'~'" ]; 69 -> err_69 [ label = "DEF / err_hostname" ]; 70 -> 71 [ label = "'!'..'~'" ]; 70 -> err_70 [ label = "DEF / err_hostname" ]; 71 -> 72 [ label = "'!'..'~'" ]; 71 -> err_71 [ label = "DEF / err_hostname" ]; 72 -> 73 [ label = "'!'..'~'" ]; 72 -> err_72 [ label = "DEF / err_hostname" ]; 73 -> 74 [ label = "'!'..'~'" ]; 73 -> err_73 [ label = "DEF / err_hostname" ]; 74 -> 75 [ label = "'!'..'~'" ]; 74 -> err_74 [ label = "DEF / err_hostname" ]; 75 -> 76 [ label = "'!'..'~'" ]; 75 -> err_75 [ label = "DEF / err_hostname" ]; 76 -> 77 [ label = "'!'..'~'" ]; 76 -> err_76 [ label = "DEF / err_hostname" ]; 77 -> 78 [ label = "'!'..'~'" ]; 77 -> err_77 [ label = "DEF / err_hostname" ]; 78 -> 79 [ label = "'!'..'~'" ]; 78 -> err_78 [ label = "DEF / err_hostname" ]; 79 -> 80 [ label = "'!'..'~'" ]; 79 -> err_79 [ label = "DEF / err_hostname" ]; 80 -> 81 [ label = "'!'..'~'" ]; 80 -> err_80 [ label = "DEF / err_hostname" ]; 81 -> 82 [ label = "'!'..'~'" ]; 81 -> err_81 [ label = "DEF / err_hostname" ]; 82 -> 83 [ label = "'!'..'~'" ]; 82 -> err_82 [ label = "DEF / err_hostname" ]; 83 -> 84 [ label = "'!'..'~'" ]; 83 -> err_83 [ label = "DEF / err_hostname" ]; 84 -> 85 [ label = "'!'..'~'" ]; 84 -> err_84 [ label = "DEF / err_hostname" ]; 85 -> 86 [ label = "'!'..'~'" ]; 85 -> err_85 [ label = "DEF / err_hostname" ]; 86 -> 87 [ label = "'!'..'~'" ]; 86 -> err_86 [ label = "DEF / err_hostname" ]; 87 -> 88 [ label = "'!'..'~'" ]; 87 -> err_87 [ label = "DEF / err_hostname" ]; 88 -> 89 [ label = "'!'..'~'" ]; 88 -> err_88 [ label = "DEF / err_hostname" ]; 89 -> 90 [ label = "'!'..'~'" ]; 89 -> err_89 [ label = "DEF / err_hostname" ]; 90 -> 91 [ label = "'!'..'~'" ]; 90 -> err_90 [ label = "DEF / err_hostname" ]; 91 -> 92 [ label = "'!'..'~'" ]; 91 -> err_91 [ label = "DEF / err_hostname" ]; 92 -> 93 [ label = "'!'..'~'" ]; 92 -> err_92 [ label = "DEF / err_hostname" ]; 93 -> 94 [ label = "'!'..'~'" ]; 93 -> err_93 [ label = "DEF / err_hostname" ]; 94 -> 95 [ label = "'!'..'~'" ]; 94 -> err_94 [ label = "DEF / err_hostname" ]; 95 -> 96 [ label = "'!'..'~'" ]; 95 -> err_95 [ label = "DEF / err_hostname" ]; 96 -> 97 [ label = "'!'..'~'" ]; 96 -> err_96 [ label = "DEF / err_hostname" ]; 97 -> 98 [ label = "'!'..'~'" ]; 97 -> err_97 [ label = "DEF / err_hostname" ]; 98 -> 99 [ label = "'!'..'~'" ]; 98 -> err_98 [ label = "DEF / err_hostname" ]; 99 -> 100 [ label = "'!'..'~'" ]; 99 -> err_99 [ label = "DEF / err_hostname" ]; 100 -> 101 [ label = "'!'..'~'" ]; 100 -> err_100 [ label = "DEF / err_hostname" ]; 101 -> 102 [ label = "'!'..'~'" ]; 101 -> err_101 [ label = "DEF / err_hostname" ]; 102 -> 103 [ label = "'!'..'~'" ]; 102 -> err_102 [ label = "DEF / err_hostname" ]; 103 -> 104 [ label = "'!'..'~'" ]; 103 -> err_103 [ label = "DEF / err_hostname" ]; 104 -> 105 [ label = "'!'..'~'" ]; 104 -> err_104 [ label = "DEF / err_hostname" ]; 105 -> 106 [ label = "'!'..'~'" ]; 105 -> err_105 [ label = "DEF / err_hostname" ]; 106 -> 107 [ label = "'!'..'~'" ]; 106 -> err_106 [ label = "DEF / err_hostname" ]; 107 -> 108 [ label = "'!'..'~'" ]; 107 -> err_107 [ label = "DEF / err_hostname" ]; 108 -> 109 [ label = "'!'..'~'" ]; 108 -> err_108 [ label = "DEF / err_hostname" ]; 109 -> 110 [ label = "'!'..'~'" ]; 109 -> err_109 [ label = "DEF / err_hostname" ]; 110 -> 111 [ label = "'!'..'~'" ]; 110 -> err_110 [ label = "DEF / err_hostname" ]; 111 -> 112 [ label = "'!'..'~'" ]; 111 -> err_111 [ label = "DEF / err_hostname" ]; 112 -> 113 [ label = "'!'..'~'" ]; 112 -> err_112 [ label = "DEF / err_hostname" ]; 113 -> 114 [ label = "'!'..'~'" ]; 113 -> err_113 [ label = "DEF / err_hostname" ]; 114 -> 115 [ label = "'!'..'~'" ]; 114 -> err_114 [ label = "DEF / err_hostname" ]; 115 -> 116 [ label = "'!'..'~'" ]; 115 -> err_115 [ label = "DEF / err_hostname" ]; 116 -> 117 [ label = "'!'..'~'" ]; 116 -> err_116 [ label = "DEF / err_hostname" ]; 117 -> 118 [ label = "'!'..'~'" ]; 117 -> err_117 [ label = "DEF / err_hostname" ]; 118 -> 119 [ label = "'!'..'~'" ]; 118 -> err_118 [ label = "DEF / err_hostname" ]; 119 -> 120 [ label = "'!'..'~'" ]; 119 -> err_119 [ label = "DEF / err_hostname" ]; 120 -> 121 [ label = "'!'..'~'" ]; 120 -> err_120 [ label = "DEF / err_hostname" ]; 121 -> 122 [ label = "'!'..'~'" ]; 121 -> err_121 [ label = "DEF / err_hostname" ]; 122 -> 123 [ label = "'!'..'~'" ]; 122 -> err_122 [ label = "DEF / err_hostname" ]; 123 -> 124 [ label = "'!'..'~'" ]; 123 -> err_123 [ label = "DEF / err_hostname" ]; 124 -> 125 [ label = "'!'..'~'" ]; 124 -> err_124 [ label = "DEF / err_hostname" ]; 125 -> 126 [ label = "'!'..'~'" ]; 125 -> err_125 [ label = "DEF / err_hostname" ]; 126 -> 127 [ label = "'!'..'~'" ]; 126 -> err_126 [ label = "DEF / err_hostname" ]; 127 -> 128 [ label = "'!'..'~'" ]; 127 -> err_127 [ label = "DEF / err_hostname" ]; 128 -> 129 [ label = "'!'..'~'" ]; 128 -> err_128 [ label = "DEF / err_hostname" ]; 129 -> 130 [ label = "'!'..'~'" ]; 129 -> err_129 [ label = "DEF / err_hostname" ]; 130 -> 131 [ label = "'!'..'~'" ]; 130 -> err_130 [ label = "DEF / err_hostname" ]; 131 -> 132 [ label = "'!'..'~'" ]; 131 -> err_131 [ label = "DEF / err_hostname" ]; 132 -> 133 [ label = "'!'..'~'" ]; 132 -> err_132 [ label = "DEF / err_hostname" ]; 133 -> 134 [ label = "'!'..'~'" ]; 133 -> err_133 [ label = "DEF / err_hostname" ]; 134 -> 135 [ label = "'!'..'~'" ]; 134 -> err_134 [ label = "DEF / err_hostname" ]; 135 -> 136 [ label = "'!'..'~'" ]; 135 -> err_135 [ label = "DEF / err_hostname" ]; 136 -> 137 [ label = "'!'..'~'" ]; 136 -> err_136 [ label = "DEF / err_hostname" ]; 137 -> 138 [ label = "'!'..'~'" ]; 137 -> err_137 [ label = "DEF / err_hostname" ]; 138 -> 139 [ label = "'!'..'~'" ]; 138 -> err_138 [ label = "DEF / err_hostname" ]; 139 -> 140 [ label = "'!'..'~'" ]; 139 -> err_139 [ label = "DEF / err_hostname" ]; 140 -> 141 [ label = "'!'..'~'" ]; 140 -> err_140 [ label = "DEF / err_hostname" ]; 141 -> 142 [ label = "'!'..'~'" ]; 141 -> err_141 [ label = "DEF / err_hostname" ]; 142 -> 143 [ label = "'!'..'~'" ]; 142 -> err_142 [ label = "DEF / err_hostname" ]; 143 -> 144 [ label = "'!'..'~'" ]; 143 -> err_143 [ label = "DEF / err_hostname" ]; 144 -> 145 [ label = "'!'..'~'" ]; 144 -> err_144 [ label = "DEF / err_hostname" ]; 145 -> 146 [ label = "'!'..'~'" ]; 145 -> err_145 [ label = "DEF / err_hostname" ]; 146 -> 147 [ label = "'!'..'~'" ]; 146 -> err_146 [ label = "DEF / err_hostname" ]; 147 -> 148 [ label = "'!'..'~'" ]; 147 -> err_147 [ label = "DEF / err_hostname" ]; 148 -> 149 [ label = "'!'..'~'" ]; 148 -> err_148 [ label = "DEF / err_hostname" ]; 149 -> 150 [ label = "'!'..'~'" ]; 149 -> err_149 [ label = "DEF / err_hostname" ]; 150 -> 151 [ label = "'!'..'~'" ]; 150 -> err_150 [ label = "DEF / err_hostname" ]; 151 -> 152 [ label = "'!'..'~'" ]; 151 -> err_151 [ label = "DEF / err_hostname" ]; 152 -> 153 [ label = "'!'..'~'" ]; 152 -> err_152 [ label = "DEF / err_hostname" ]; 153 -> 154 [ label = "'!'..'~'" ]; 153 -> err_153 [ label = "DEF / err_hostname" ]; 154 -> 155 [ label = "'!'..'~'" ]; 154 -> err_154 [ label = "DEF / err_hostname" ]; 155 -> 156 [ label = "'!'..'~'" ]; 155 -> err_155 [ label = "DEF / err_hostname" ]; 156 -> 157 [ label = "'!'..'~'" ]; 156 -> err_156 [ label = "DEF / err_hostname" ]; 157 -> 158 [ label = "'!'..'~'" ]; 157 -> err_157 [ label = "DEF / err_hostname" ]; 158 -> 159 [ label = "'!'..'~'" ]; 158 -> err_158 [ label = "DEF / err_hostname" ]; 159 -> 160 [ label = "'!'..'~'" ]; 159 -> err_159 [ label = "DEF / err_hostname" ]; 160 -> 161 [ label = "'!'..'~'" ]; 160 -> err_160 [ label = "DEF / err_hostname" ]; 161 -> 162 [ label = "'!'..'~'" ]; 161 -> err_161 [ label = "DEF / err_hostname" ]; 162 -> 163 [ label = "'!'..'~'" ]; 162 -> err_162 [ label = "DEF / err_hostname" ]; 163 -> 164 [ label = "'!'..'~'" ]; 163 -> err_163 [ label = "DEF / err_hostname" ]; 164 -> 165 [ label = "'!'..'~'" ]; 164 -> err_164 [ label = "DEF / err_hostname" ]; 165 -> 166 [ label = "'!'..'~'" ]; 165 -> err_165 [ label = "DEF / err_hostname" ]; 166 -> 167 [ label = "'!'..'~'" ]; 166 -> err_166 [ label = "DEF / err_hostname" ]; 167 -> 168 [ label = "'!'..'~'" ]; 167 -> err_167 [ label = "DEF / err_hostname" ]; 168 -> 169 [ label = "'!'..'~'" ]; 168 -> err_168 [ label = "DEF / err_hostname" ]; 169 -> 170 [ label = "'!'..'~'" ]; 169 -> err_169 [ label = "DEF / err_hostname" ]; 170 -> 171 [ label = "'!'..'~'" ]; 170 -> err_170 [ label = "DEF / err_hostname" ]; 171 -> 172 [ label = "'!'..'~'" ]; 171 -> err_171 [ label = "DEF / err_hostname" ]; 172 -> 173 [ label = "'!'..'~'" ]; 172 -> err_172 [ label = "DEF / err_hostname" ]; 173 -> 174 [ label = "'!'..'~'" ]; 173 -> err_173 [ label = "DEF / err_hostname" ]; 174 -> 175 [ label = "'!'..'~'" ]; 174 -> err_174 [ label = "DEF / err_hostname" ]; 175 -> 176 [ label = "'!'..'~'" ]; 175 -> err_175 [ label = "DEF / err_hostname" ]; 176 -> 177 [ label = "'!'..'~'" ]; 176 -> err_176 [ label = "DEF / err_hostname" ]; 177 -> 178 [ label = "'!'..'~'" ]; 177 -> err_177 [ label = "DEF / err_hostname" ]; 178 -> 179 [ label = "'!'..'~'" ]; 178 -> err_178 [ label = "DEF / err_hostname" ]; 179 -> 180 [ label = "'!'..'~'" ]; 179 -> err_179 [ label = "DEF / err_hostname" ]; 180 -> 181 [ label = "'!'..'~'" ]; 180 -> err_180 [ label = "DEF / err_hostname" ]; 181 -> 182 [ label = "'!'..'~'" ]; 181 -> err_181 [ label = "DEF / err_hostname" ]; 182 -> 183 [ label = "'!'..'~'" ]; 182 -> err_182 [ label = "DEF / err_hostname" ]; 183 -> 184 [ label = "'!'..'~'" ]; 183 -> err_183 [ label = "DEF / err_hostname" ]; 184 -> 185 [ label = "'!'..'~'" ]; 184 -> err_184 [ label = "DEF / err_hostname" ]; 185 -> 186 [ label = "'!'..'~'" ]; 185 -> err_185 [ label = "DEF / err_hostname" ]; 186 -> 187 [ label = "'!'..'~'" ]; 186 -> err_186 [ label = "DEF / err_hostname" ]; 187 -> 188 [ label = "'!'..'~'" ]; 187 -> err_187 [ label = "DEF / err_hostname" ]; 188 -> 189 [ label = "'!'..'~'" ]; 188 -> err_188 [ label = "DEF / err_hostname" ]; 189 -> 190 [ label = "'!'..'~'" ]; 189 -> err_189 [ label = "DEF / err_hostname" ]; 190 -> 191 [ label = "'!'..'~'" ]; 190 -> err_190 [ label = "DEF / err_hostname" ]; 191 -> 192 [ label = "'!'..'~'" ]; 191 -> err_191 [ label = "DEF / err_hostname" ]; 192 -> 193 [ label = "'!'..'~'" ]; 192 -> err_192 [ label = "DEF / err_hostname" ]; 193 -> 194 [ label = "'!'..'~'" ]; 193 -> err_193 [ label = "DEF / err_hostname" ]; 194 -> 195 [ label = "'!'..'~'" ]; 194 -> err_194 [ label = "DEF / err_hostname" ]; 195 -> 196 [ label = "'!'..'~'" ]; 195 -> err_195 [ label = "DEF / err_hostname" ]; 196 -> 197 [ label = "'!'..'~'" ]; 196 -> err_196 [ label = "DEF / err_hostname" ]; 197 -> 198 [ label = "'!'..'~'" ]; 197 -> err_197 [ label = "DEF / err_hostname" ]; 198 -> 199 [ label = "'!'..'~'" ]; 198 -> err_198 [ label = "DEF / err_hostname" ]; 199 -> 200 [ label = "'!'..'~'" ]; 199 -> err_199 [ label = "DEF / err_hostname" ]; 200 -> 201 [ label = "'!'..'~'" ]; 200 -> err_200 [ label = "DEF / err_hostname" ]; 201 -> 202 [ label = "'!'..'~'" ]; 201 -> err_201 [ label = "DEF / err_hostname" ]; 202 -> 203 [ label = "'!'..'~'" ]; 202 -> err_202 [ label = "DEF / err_hostname" ]; 203 -> 204 [ label = "'!'..'~'" ]; 203 -> err_203 [ label = "DEF / err_hostname" ]; 204 -> 205 [ label = "'!'..'~'" ]; 204 -> err_204 [ label = "DEF / err_hostname" ]; 205 -> 206 [ label = "'!'..'~'" ]; 205 -> err_205 [ label = "DEF / err_hostname" ]; 206 -> 207 [ label = "'!'..'~'" ]; 206 -> err_206 [ label = "DEF / err_hostname" ]; 207 -> 208 [ label = "'!'..'~'" ]; 207 -> err_207 [ label = "DEF / err_hostname" ]; 208 -> 209 [ label = "'!'..'~'" ]; 208 -> err_208 [ label = "DEF / err_hostname" ]; 209 -> 210 [ label = "'!'..'~'" ]; 209 -> err_209 [ label = "DEF / err_hostname" ]; 210 -> 211 [ label = "'!'..'~'" ]; 210 -> err_210 [ label = "DEF / err_hostname" ]; 211 -> 212 [ label = "'!'..'~'" ]; 211 -> err_211 [ label = "DEF / err_hostname" ]; 212 -> 213 [ label = "'!'..'~'" ]; 212 -> err_212 [ label = "DEF / err_hostname" ]; 213 -> 214 [ label = "'!'..'~'" ]; 213 -> err_213 [ label = "DEF / err_hostname" ]; 214 -> 215 [ label = "'!'..'~'" ]; 214 -> err_214 [ label = "DEF / err_hostname" ]; 215 -> 216 [ label = "'!'..'~'" ]; 215 -> err_215 [ label = "DEF / err_hostname" ]; 216 -> 217 [ label = "'!'..'~'" ]; 216 -> err_216 [ label = "DEF / err_hostname" ]; 217 -> 218 [ label = "'!'..'~'" ]; 217 -> err_217 [ label = "DEF / err_hostname" ]; 218 -> 219 [ label = "'!'..'~'" ]; 218 -> err_218 [ label = "DEF / err_hostname" ]; 219 -> 220 [ label = "'!'..'~'" ]; 219 -> err_219 [ label = "DEF / err_hostname" ]; 220 -> 221 [ label = "'!'..'~'" ]; 220 -> err_220 [ label = "DEF / err_hostname" ]; 221 -> 222 [ label = "'!'..'~'" ]; 221 -> err_221 [ label = "DEF / err_hostname" ]; 222 -> 223 [ label = "'!'..'~'" ]; 222 -> err_222 [ label = "DEF / err_hostname" ]; 223 -> 224 [ label = "'!'..'~'" ]; 223 -> err_223 [ label = "DEF / err_hostname" ]; 224 -> 225 [ label = "'!'..'~'" ]; 224 -> err_224 [ label = "DEF / err_hostname" ]; 225 -> 226 [ label = "'!'..'~'" ]; 225 -> err_225 [ label = "DEF / err_hostname" ]; 226 -> 227 [ label = "'!'..'~'" ]; 226 -> err_226 [ label = "DEF / err_hostname" ]; 227 -> 228 [ label = "'!'..'~'" ]; 227 -> err_227 [ label = "DEF / err_hostname" ]; 228 -> 229 [ label = "'!'..'~'" ]; 228 -> err_228 [ label = "DEF / err_hostname" ]; 229 -> 230 [ label = "'!'..'~'" ]; 229 -> err_229 [ label = "DEF / err_hostname" ]; 230 -> 231 [ label = "'!'..'~'" ]; 230 -> err_230 [ label = "DEF / err_hostname" ]; 231 -> 232 [ label = "'!'..'~'" ]; 231 -> err_231 [ label = "DEF / err_hostname" ]; 232 -> 233 [ label = "'!'..'~'" ]; 232 -> err_232 [ label = "DEF / err_hostname" ]; 233 -> 234 [ label = "'!'..'~'" ]; 233 -> err_233 [ label = "DEF / err_hostname" ]; 234 -> 235 [ label = "'!'..'~'" ]; 234 -> err_234 [ label = "DEF / err_hostname" ]; 235 -> 236 [ label = "'!'..'~'" ]; 235 -> err_235 [ label = "DEF / err_hostname" ]; 236 -> 237 [ label = "'!'..'~'" ]; 236 -> err_236 [ label = "DEF / err_hostname" ]; 237 -> 238 [ label = "'!'..'~'" ]; 237 -> err_237 [ label = "DEF / err_hostname" ]; 238 -> 239 [ label = "'!'..'~'" ]; 238 -> err_238 [ label = "DEF / err_hostname" ]; 239 -> 240 [ label = "'!'..'~'" ]; 239 -> err_239 [ label = "DEF / err_hostname" ]; 240 -> 241 [ label = "'!'..'~'" ]; 240 -> err_240 [ label = "DEF / err_hostname" ]; 241 -> 242 [ label = "'!'..'~'" ]; 241 -> err_241 [ label = "DEF / err_hostname" ]; 242 -> 243 [ label = "'!'..'~'" ]; 242 -> err_242 [ label = "DEF / err_hostname" ]; 243 -> 244 [ label = "'!'..'~'" ]; 243 -> err_243 [ label = "DEF / err_hostname" ]; 244 -> 245 [ label = "'!'..'~'" ]; 244 -> err_244 [ label = "DEF / err_hostname" ]; 245 -> 246 [ label = "'!'..'~'" ]; 245 -> err_245 [ label = "DEF / err_hostname" ]; 246 -> 247 [ label = "'!'..'~'" ]; 246 -> err_246 [ label = "DEF / err_hostname" ]; 247 -> 248 [ label = "'!'..'~'" ]; 247 -> err_247 [ label = "DEF / err_hostname" ]; 248 -> 249 [ label = "'!'..'~'" ]; 248 -> err_248 [ label = "DEF / err_hostname" ]; 249 -> 250 [ label = "'!'..'~'" ]; 249 -> err_249 [ label = "DEF / err_hostname" ]; 250 -> 251 [ label = "'!'..'~'" ]; 250 -> err_250 [ label = "DEF / err_hostname" ]; 251 -> 252 [ label = "'!'..'~'" ]; 251 -> err_251 [ label = "DEF / err_hostname" ]; 252 -> 253 [ label = "'!'..'~'" ]; 252 -> err_252 [ label = "DEF / err_hostname" ]; 253 -> 254 [ label = "'!'..'~'" ]; 253 -> err_253 [ label = "DEF / err_hostname" ]; 254 -> 255 [ label = "'!'..'~'" ]; 254 -> err_254 [ label = "DEF / err_hostname" ]; 255 -> 256 [ label = "'!'..'~'" ]; 255 -> err_255 [ label = "DEF / err_hostname" ]; 256 -> err_256 [ label = "DEF / err_hostname" ]; ENTRY -> 1 [ label = "IN" ]; 1 -> eof_1 [ label = "EOF / err_hostname" ]; 2 -> eof_2 [ label = "EOF / set_hostname" ]; 3 -> eof_3 [ label = "EOF / set_hostname" ]; 4 -> eof_4 [ label = "EOF / set_hostname" ]; 5 -> eof_5 [ label = "EOF / set_hostname" ]; 6 -> eof_6 [ label = "EOF / set_hostname" ]; 7 -> eof_7 [ label = "EOF / set_hostname" ]; 8 -> eof_8 [ label = "EOF / set_hostname" ]; 9 -> eof_9 [ label = "EOF / set_hostname" ]; 10 -> eof_10 [ label = "EOF / set_hostname" ]; 11 -> eof_11 [ label = "EOF / set_hostname" ]; 12 -> eof_12 [ label = "EOF / set_hostname" ]; 13 -> eof_13 [ label = "EOF / set_hostname" ]; 14 -> eof_14 [ label = "EOF / set_hostname" ]; 15 -> eof_15 [ label = "EOF / set_hostname" ]; 16 -> eof_16 [ label = "EOF / set_hostname" ]; 17 -> eof_17 [ label = "EOF / set_hostname" ]; 18 -> eof_18 [ label = "EOF / set_hostname" ]; 19 -> eof_19 [ label = "EOF / set_hostname" ]; 20 -> eof_20 [ label = "EOF / set_hostname" ]; 21 -> eof_21 [ label = "EOF / set_hostname" ]; 22 -> eof_22 [ label = "EOF / set_hostname" ]; 23 -> eof_23 [ label = "EOF / set_hostname" ]; 24 -> eof_24 [ label = "EOF / set_hostname" ]; 25 -> eof_25 [ label = "EOF / set_hostname" ]; 26 -> eof_26 [ label = "EOF / set_hostname" ]; 27 -> eof_27 [ label = "EOF / set_hostname" ]; 28 -> eof_28 [ label = "EOF / set_hostname" ]; 29 -> eof_29 [ label = "EOF / set_hostname" ]; 30 -> eof_30 [ label = "EOF / set_hostname" ]; 31 -> eof_31 [ label = "EOF / set_hostname" ]; 32 -> eof_32 [ label = "EOF / set_hostname" ]; 33 -> eof_33 [ label = "EOF / set_hostname" ]; 34 -> eof_34 [ label = "EOF / set_hostname" ]; 35 -> eof_35 [ label = "EOF / set_hostname" ]; 36 -> eof_36 [ label = "EOF / set_hostname" ]; 37 -> eof_37 [ label = "EOF / set_hostname" ]; 38 -> eof_38 [ label = "EOF / set_hostname" ]; 39 -> eof_39 [ label = "EOF / set_hostname" ]; 40 -> eof_40 [ label = "EOF / set_hostname" ]; 41 -> eof_41 [ label = "EOF / set_hostname" ]; 42 -> eof_42 [ label = "EOF / set_hostname" ]; 43 -> eof_43 [ label = "EOF / set_hostname" ]; 44 -> eof_44 [ label = "EOF / set_hostname" ]; 45 -> eof_45 [ label = "EOF / set_hostname" ]; 46 -> eof_46 [ label = "EOF / set_hostname" ]; 47 -> eof_47 [ label = "EOF / set_hostname" ]; 48 -> eof_48 [ label = "EOF / set_hostname" ]; 49 -> eof_49 [ label = "EOF / set_hostname" ]; 50 -> eof_50 [ label = "EOF / set_hostname" ]; 51 -> eof_51 [ label = "EOF / set_hostname" ]; 52 -> eof_52 [ label = "EOF / set_hostname" ]; 53 -> eof_53 [ label = "EOF / set_hostname" ]; 54 -> eof_54 [ label = "EOF / set_hostname" ]; 55 -> eof_55 [ label = "EOF / set_hostname" ]; 56 -> eof_56 [ label = "EOF / set_hostname" ]; 57 -> eof_57 [ label = "EOF / set_hostname" ]; 58 -> eof_58 [ label = "EOF / set_hostname" ]; 59 -> eof_59 [ label = "EOF / set_hostname" ]; 60 -> eof_60 [ label = "EOF / set_hostname" ]; 61 -> eof_61 [ label = "EOF / set_hostname" ]; 62 -> eof_62 [ label = "EOF / set_hostname" ]; 63 -> eof_63 [ label = "EOF / set_hostname" ]; 64 -> eof_64 [ label = "EOF / set_hostname" ]; 65 -> eof_65 [ label = "EOF / set_hostname" ]; 66 -> eof_66 [ label = "EOF / set_hostname" ]; 67 -> eof_67 [ label = "EOF / set_hostname" ]; 68 -> eof_68 [ label = "EOF / set_hostname" ]; 69 -> eof_69 [ label = "EOF / set_hostname" ]; 70 -> eof_70 [ label = "EOF / set_hostname" ]; 71 -> eof_71 [ label = "EOF / set_hostname" ]; 72 -> eof_72 [ label = "EOF / set_hostname" ]; 73 -> eof_73 [ label = "EOF / set_hostname" ]; 74 -> eof_74 [ label = "EOF / set_hostname" ]; 75 -> eof_75 [ label = "EOF / set_hostname" ]; 76 -> eof_76 [ label = "EOF / set_hostname" ]; 77 -> eof_77 [ label = "EOF / set_hostname" ]; 78 -> eof_78 [ label = "EOF / set_hostname" ]; 79 -> eof_79 [ label = "EOF / set_hostname" ]; 80 -> eof_80 [ label = "EOF / set_hostname" ]; 81 -> eof_81 [ label = "EOF / set_hostname" ]; 82 -> eof_82 [ label = "EOF / set_hostname" ]; 83 -> eof_83 [ label = "EOF / set_hostname" ]; 84 -> eof_84 [ label = "EOF / set_hostname" ]; 85 -> eof_85 [ label = "EOF / set_hostname" ]; 86 -> eof_86 [ label = "EOF / set_hostname" ]; 87 -> eof_87 [ label = "EOF / set_hostname" ]; 88 -> eof_88 [ label = "EOF / set_hostname" ]; 89 -> eof_89 [ label = "EOF / set_hostname" ]; 90 -> eof_90 [ label = "EOF / set_hostname" ]; 91 -> eof_91 [ label = "EOF / set_hostname" ]; 92 -> eof_92 [ label = "EOF / set_hostname" ]; 93 -> eof_93 [ label = "EOF / set_hostname" ]; 94 -> eof_94 [ label = "EOF / set_hostname" ]; 95 -> eof_95 [ label = "EOF / set_hostname" ]; 96 -> eof_96 [ label = "EOF / set_hostname" ]; 97 -> eof_97 [ label = "EOF / set_hostname" ]; 98 -> eof_98 [ label = "EOF / set_hostname" ]; 99 -> eof_99 [ label = "EOF / set_hostname" ]; 100 -> eof_100 [ label = "EOF / set_hostname" ]; 101 -> eof_101 [ label = "EOF / set_hostname" ]; 102 -> eof_102 [ label = "EOF / set_hostname" ]; 103 -> eof_103 [ label = "EOF / set_hostname" ]; 104 -> eof_104 [ label = "EOF / set_hostname" ]; 105 -> eof_105 [ label = "EOF / set_hostname" ]; 106 -> eof_106 [ label = "EOF / set_hostname" ]; 107 -> eof_107 [ label = "EOF / set_hostname" ]; 108 -> eof_108 [ label = "EOF / set_hostname" ]; 109 -> eof_109 [ label = "EOF / set_hostname" ]; 110 -> eof_110 [ label = "EOF / set_hostname" ]; 111 -> eof_111 [ label = "EOF / set_hostname" ]; 112 -> eof_112 [ label = "EOF / set_hostname" ]; 113 -> eof_113 [ label = "EOF / set_hostname" ]; 114 -> eof_114 [ label = "EOF / set_hostname" ]; 115 -> eof_115 [ label = "EOF / set_hostname" ]; 116 -> eof_116 [ label = "EOF / set_hostname" ]; 117 -> eof_117 [ label = "EOF / set_hostname" ]; 118 -> eof_118 [ label = "EOF / set_hostname" ]; 119 -> eof_119 [ label = "EOF / set_hostname" ]; 120 -> eof_120 [ label = "EOF / set_hostname" ]; 121 -> eof_121 [ label = "EOF / set_hostname" ]; 122 -> eof_122 [ label = "EOF / set_hostname" ]; 123 -> eof_123 [ label = "EOF / set_hostname" ]; 124 -> eof_124 [ label = "EOF / set_hostname" ]; 125 -> eof_125 [ label = "EOF / set_hostname" ]; 126 -> eof_126 [ label = "EOF / set_hostname" ]; 127 -> eof_127 [ label = "EOF / set_hostname" ]; 128 -> eof_128 [ label = "EOF / set_hostname" ]; 129 -> eof_129 [ label = "EOF / set_hostname" ]; 130 -> eof_130 [ label = "EOF / set_hostname" ]; 131 -> eof_131 [ label = "EOF / set_hostname" ]; 132 -> eof_132 [ label = "EOF / set_hostname" ]; 133 -> eof_133 [ label = "EOF / set_hostname" ]; 134 -> eof_134 [ label = "EOF / set_hostname" ]; 135 -> eof_135 [ label = "EOF / set_hostname" ]; 136 -> eof_136 [ label = "EOF / set_hostname" ]; 137 -> eof_137 [ label = "EOF / set_hostname" ]; 138 -> eof_138 [ label = "EOF / set_hostname" ]; 139 -> eof_139 [ label = "EOF / set_hostname" ]; 140 -> eof_140 [ label = "EOF / set_hostname" ]; 141 -> eof_141 [ label = "EOF / set_hostname" ]; 142 -> eof_142 [ label = "EOF / set_hostname" ]; 143 -> eof_143 [ label = "EOF / set_hostname" ]; 144 -> eof_144 [ label = "EOF / set_hostname" ]; 145 -> eof_145 [ label = "EOF / set_hostname" ]; 146 -> eof_146 [ label = "EOF / set_hostname" ]; 147 -> eof_147 [ label = "EOF / set_hostname" ]; 148 -> eof_148 [ label = "EOF / set_hostname" ]; 149 -> eof_149 [ label = "EOF / set_hostname" ]; 150 -> eof_150 [ label = "EOF / set_hostname" ]; 151 -> eof_151 [ label = "EOF / set_hostname" ]; 152 -> eof_152 [ label = "EOF / set_hostname" ]; 153 -> eof_153 [ label = "EOF / set_hostname" ]; 154 -> eof_154 [ label = "EOF / set_hostname" ]; 155 -> eof_155 [ label = "EOF / set_hostname" ]; 156 -> eof_156 [ label = "EOF / set_hostname" ]; 157 -> eof_157 [ label = "EOF / set_hostname" ]; 158 -> eof_158 [ label = "EOF / set_hostname" ]; 159 -> eof_159 [ label = "EOF / set_hostname" ]; 160 -> eof_160 [ label = "EOF / set_hostname" ]; 161 -> eof_161 [ label = "EOF / set_hostname" ]; 162 -> eof_162 [ label = "EOF / set_hostname" ]; 163 -> eof_163 [ label = "EOF / set_hostname" ]; 164 -> eof_164 [ label = "EOF / set_hostname" ]; 165 -> eof_165 [ label = "EOF / set_hostname" ]; 166 -> eof_166 [ label = "EOF / set_hostname" ]; 167 -> eof_167 [ label = "EOF / set_hostname" ]; 168 -> eof_168 [ label = "EOF / set_hostname" ]; 169 -> eof_169 [ label = "EOF / set_hostname" ]; 170 -> eof_170 [ label = "EOF / set_hostname" ]; 171 -> eof_171 [ label = "EOF / set_hostname" ]; 172 -> eof_172 [ label = "EOF / set_hostname" ]; 173 -> eof_173 [ label = "EOF / set_hostname" ]; 174 -> eof_174 [ label = "EOF / set_hostname" ]; 175 -> eof_175 [ label = "EOF / set_hostname" ]; 176 -> eof_176 [ label = "EOF / set_hostname" ]; 177 -> eof_177 [ label = "EOF / set_hostname" ]; 178 -> eof_178 [ label = "EOF / set_hostname" ]; 179 -> eof_179 [ label = "EOF / set_hostname" ]; 180 -> eof_180 [ label = "EOF / set_hostname" ]; 181 -> eof_181 [ label = "EOF / set_hostname" ]; 182 -> eof_182 [ label = "EOF / set_hostname" ]; 183 -> eof_183 [ label = "EOF / set_hostname" ]; 184 -> eof_184 [ label = "EOF / set_hostname" ]; 185 -> eof_185 [ label = "EOF / set_hostname" ]; 186 -> eof_186 [ label = "EOF / set_hostname" ]; 187 -> eof_187 [ label = "EOF / set_hostname" ]; 188 -> eof_188 [ label = "EOF / set_hostname" ]; 189 -> eof_189 [ label = "EOF / set_hostname" ]; 190 -> eof_190 [ label = "EOF / set_hostname" ]; 191 -> eof_191 [ label = "EOF / set_hostname" ]; 192 -> eof_192 [ label = "EOF / set_hostname" ]; 193 -> eof_193 [ label = "EOF / set_hostname" ]; 194 -> eof_194 [ label = "EOF / set_hostname" ]; 195 -> eof_195 [ label = "EOF / set_hostname" ]; 196 -> eof_196 [ label = "EOF / set_hostname" ]; 197 -> eof_197 [ label = "EOF / set_hostname" ]; 198 -> eof_198 [ label = "EOF / set_hostname" ]; 199 -> eof_199 [ label = "EOF / set_hostname" ]; 200 -> eof_200 [ label = "EOF / set_hostname" ]; 201 -> eof_201 [ label = "EOF / set_hostname" ]; 202 -> eof_202 [ label = "EOF / set_hostname" ]; 203 -> eof_203 [ label = "EOF / set_hostname" ]; 204 -> eof_204 [ label = "EOF / set_hostname" ]; 205 -> eof_205 [ label = "EOF / set_hostname" ]; 206 -> eof_206 [ label = "EOF / set_hostname" ]; 207 -> eof_207 [ label = "EOF / set_hostname" ]; 208 -> eof_208 [ label = "EOF / set_hostname" ]; 209 -> eof_209 [ label = "EOF / set_hostname" ]; 210 -> eof_210 [ label = "EOF / set_hostname" ]; 211 -> eof_211 [ label = "EOF / set_hostname" ]; 212 -> eof_212 [ label = "EOF / set_hostname" ]; 213 -> eof_213 [ label = "EOF / set_hostname" ]; 214 -> eof_214 [ label = "EOF / set_hostname" ]; 215 -> eof_215 [ label = "EOF / set_hostname" ]; 216 -> eof_216 [ label = "EOF / set_hostname" ]; 217 -> eof_217 [ label = "EOF / set_hostname" ]; 218 -> eof_218 [ label = "EOF / set_hostname" ]; 219 -> eof_219 [ label = "EOF / set_hostname" ]; 220 -> eof_220 [ label = "EOF / set_hostname" ]; 221 -> eof_221 [ label = "EOF / set_hostname" ]; 222 -> eof_222 [ label = "EOF / set_hostname" ]; 223 -> eof_223 [ label = "EOF / set_hostname" ]; 224 -> eof_224 [ label = "EOF / set_hostname" ]; 225 -> eof_225 [ label = "EOF / set_hostname" ]; 226 -> eof_226 [ label = "EOF / set_hostname" ]; 227 -> eof_227 [ label = "EOF / set_hostname" ]; 228 -> eof_228 [ label = "EOF / set_hostname" ]; 229 -> eof_229 [ label = "EOF / set_hostname" ]; 230 -> eof_230 [ label = "EOF / set_hostname" ]; 231 -> eof_231 [ label = "EOF / set_hostname" ]; 232 -> eof_232 [ label = "EOF / set_hostname" ]; 233 -> eof_233 [ label = "EOF / set_hostname" ]; 234 -> eof_234 [ label = "EOF / set_hostname" ]; 235 -> eof_235 [ label = "EOF / set_hostname" ]; 236 -> eof_236 [ label = "EOF / set_hostname" ]; 237 -> eof_237 [ label = "EOF / set_hostname" ]; 238 -> eof_238 [ label = "EOF / set_hostname" ]; 239 -> eof_239 [ label = "EOF / set_hostname" ]; 240 -> eof_240 [ label = "EOF / set_hostname" ]; 241 -> eof_241 [ label = "EOF / set_hostname" ]; 242 -> eof_242 [ label = "EOF / set_hostname" ]; 243 -> eof_243 [ label = "EOF / set_hostname" ]; 244 -> eof_244 [ label = "EOF / set_hostname" ]; 245 -> eof_245 [ label = "EOF / set_hostname" ]; 246 -> eof_246 [ label = "EOF / set_hostname" ]; 247 -> eof_247 [ label = "EOF / set_hostname" ]; 248 -> eof_248 [ label = "EOF / set_hostname" ]; 249 -> eof_249 [ label = "EOF / set_hostname" ]; 250 -> eof_250 [ label = "EOF / set_hostname" ]; 251 -> eof_251 [ label = "EOF / set_hostname" ]; 252 -> eof_252 [ label = "EOF / set_hostname" ]; 253 -> eof_253 [ label = "EOF / set_hostname" ]; 254 -> eof_254 [ label = "EOF / set_hostname" ]; 255 -> eof_255 [ label = "EOF / set_hostname" ]; 256 -> eof_256 [ label = "EOF / set_hostname" ]; } go-syslog-2.0.0/docs/rfc5424_msg.dot000066400000000000000000000040701340614351500170360ustar00rootroot00000000000000digraph rfc5424 { rankdir=LR; node [ shape = point ]; ENTRY; eof_1; eof_2; eof_3; eof_4; eof_5; eof_6; eof_7; eof_8; eof_9; node [ shape = circle, height = 0.2 ]; err_1 [ label=""]; err_2 [ label=""]; err_3 [ label=""]; err_4 [ label=""]; err_5 [ label=""]; err_6 [ label=""]; err_7 [ label=""]; err_8 [ label=""]; err_9 [ label=""]; node [ fixedsize = true, height = 0.65, shape = doublecircle ]; 8; 9; node [ shape = circle ]; 1 -> 9 [ label = "128..191" ]; 1 -> err_1 [ label = "DEF / err_msg" ]; 2 -> 1 [ label = "160..191" ]; 2 -> err_2 [ label = "DEF / err_msg" ]; 3 -> 1 [ label = "128..191" ]; 3 -> err_3 [ label = "DEF / err_msg" ]; 4 -> 1 [ label = "128..159" ]; 4 -> err_4 [ label = "DEF / err_msg" ]; 5 -> 3 [ label = "144..191" ]; 5 -> err_5 [ label = "DEF / err_msg" ]; 6 -> 3 [ label = "128..191" ]; 6 -> err_6 [ label = "DEF / err_msg" ]; 7 -> 3 [ label = "128..143" ]; 7 -> err_7 [ label = "DEF / err_msg" ]; 8 -> err_8 [ label = "128..193, 245..255 / err_msg" ]; 8 -> 1 [ label = "194..223 / mark, markmsg" ]; 8 -> 2 [ label = "224 / mark, markmsg" ]; 8 -> 3 [ label = "225..236, 238..239 / mark, markmsg" ]; 8 -> 4 [ label = "237 / mark, markmsg" ]; 8 -> 5 [ label = "240 / mark, markmsg" ]; 8 -> 6 [ label = "241..243 / mark, markmsg" ]; 8 -> 7 [ label = "244 / mark, markmsg" ]; 8 -> 9 [ label = "DEF / mark, markmsg" ]; 9 -> err_9 [ label = "128..193, 245..255 / err_msg" ]; 9 -> 1 [ label = "194..223" ]; 9 -> 2 [ label = "224" ]; 9 -> 3 [ label = "225..236, 238..239" ]; 9 -> 4 [ label = "237" ]; 9 -> 5 [ label = "240" ]; 9 -> 6 [ label = "241..243" ]; 9 -> 7 [ label = "244" ]; 9 -> 9 [ label = "DEF" ]; ENTRY -> 8 [ label = "IN" ]; 1 -> eof_1 [ label = "EOF / err_msg" ]; 2 -> eof_2 [ label = "EOF / err_msg" ]; 3 -> eof_3 [ label = "EOF / err_msg" ]; 4 -> eof_4 [ label = "EOF / err_msg" ]; 5 -> eof_5 [ label = "EOF / err_msg" ]; 6 -> eof_6 [ label = "EOF / err_msg" ]; 7 -> eof_7 [ label = "EOF / err_msg" ]; 8 -> eof_8 [ label = "EOF / mark, markmsg, set_msg" ]; 9 -> eof_9 [ label = "EOF / set_msg" ]; } go-syslog-2.0.0/docs/rfc5424_msgid.dot000066400000000000000000000123631340614351500173570ustar00rootroot00000000000000digraph rfc5424 { rankdir=LR; node [ shape = point ]; ENTRY; eof_1; eof_2; eof_3; eof_4; eof_5; eof_6; eof_7; eof_8; eof_9; eof_10; eof_11; eof_12; eof_13; eof_14; eof_15; eof_16; eof_17; eof_18; eof_19; eof_20; eof_21; eof_22; eof_23; eof_24; eof_25; eof_26; eof_27; eof_28; eof_29; eof_30; eof_31; eof_32; eof_33; node [ shape = circle, height = 0.2 ]; err_1 [ label=""]; err_2 [ label=""]; err_3 [ label=""]; err_4 [ label=""]; err_5 [ label=""]; err_6 [ label=""]; err_7 [ label=""]; err_8 [ label=""]; err_9 [ label=""]; err_10 [ label=""]; err_11 [ label=""]; err_12 [ label=""]; err_13 [ label=""]; err_14 [ label=""]; err_15 [ label=""]; err_16 [ label=""]; err_17 [ label=""]; err_18 [ label=""]; err_19 [ label=""]; err_20 [ label=""]; err_21 [ label=""]; err_22 [ label=""]; err_23 [ label=""]; err_24 [ label=""]; err_25 [ label=""]; err_26 [ label=""]; err_27 [ label=""]; err_28 [ label=""]; err_29 [ label=""]; err_30 [ label=""]; err_31 [ label=""]; err_32 [ label=""]; err_33 [ label=""]; node [ fixedsize = true, height = 0.65, shape = doublecircle ]; 2; 3; 4; 5; 6; 7; 8; 9; 10; 11; 12; 13; 14; 15; 16; 17; 18; 19; 20; 21; 22; 23; 24; 25; 26; 27; 28; 29; 30; 31; 32; 33; node [ shape = circle ]; 1 -> 2 [ label = "'!'..'~' / mark" ]; 1 -> err_1 [ label = "DEF / err_msgid" ]; 2 -> 3 [ label = "'!'..'~'" ]; 2 -> err_2 [ label = "DEF / err_msgid" ]; 3 -> 4 [ label = "'!'..'~'" ]; 3 -> err_3 [ label = "DEF / err_msgid" ]; 4 -> 5 [ label = "'!'..'~'" ]; 4 -> err_4 [ label = "DEF / err_msgid" ]; 5 -> 6 [ label = "'!'..'~'" ]; 5 -> err_5 [ label = "DEF / err_msgid" ]; 6 -> 7 [ label = "'!'..'~'" ]; 6 -> err_6 [ label = "DEF / err_msgid" ]; 7 -> 8 [ label = "'!'..'~'" ]; 7 -> err_7 [ label = "DEF / err_msgid" ]; 8 -> 9 [ label = "'!'..'~'" ]; 8 -> err_8 [ label = "DEF / err_msgid" ]; 9 -> 10 [ label = "'!'..'~'" ]; 9 -> err_9 [ label = "DEF / err_msgid" ]; 10 -> 11 [ label = "'!'..'~'" ]; 10 -> err_10 [ label = "DEF / err_msgid" ]; 11 -> 12 [ label = "'!'..'~'" ]; 11 -> err_11 [ label = "DEF / err_msgid" ]; 12 -> 13 [ label = "'!'..'~'" ]; 12 -> err_12 [ label = "DEF / err_msgid" ]; 13 -> 14 [ label = "'!'..'~'" ]; 13 -> err_13 [ label = "DEF / err_msgid" ]; 14 -> 15 [ label = "'!'..'~'" ]; 14 -> err_14 [ label = "DEF / err_msgid" ]; 15 -> 16 [ label = "'!'..'~'" ]; 15 -> err_15 [ label = "DEF / err_msgid" ]; 16 -> 17 [ label = "'!'..'~'" ]; 16 -> err_16 [ label = "DEF / err_msgid" ]; 17 -> 18 [ label = "'!'..'~'" ]; 17 -> err_17 [ label = "DEF / err_msgid" ]; 18 -> 19 [ label = "'!'..'~'" ]; 18 -> err_18 [ label = "DEF / err_msgid" ]; 19 -> 20 [ label = "'!'..'~'" ]; 19 -> err_19 [ label = "DEF / err_msgid" ]; 20 -> 21 [ label = "'!'..'~'" ]; 20 -> err_20 [ label = "DEF / err_msgid" ]; 21 -> 22 [ label = "'!'..'~'" ]; 21 -> err_21 [ label = "DEF / err_msgid" ]; 22 -> 23 [ label = "'!'..'~'" ]; 22 -> err_22 [ label = "DEF / err_msgid" ]; 23 -> 24 [ label = "'!'..'~'" ]; 23 -> err_23 [ label = "DEF / err_msgid" ]; 24 -> 25 [ label = "'!'..'~'" ]; 24 -> err_24 [ label = "DEF / err_msgid" ]; 25 -> 26 [ label = "'!'..'~'" ]; 25 -> err_25 [ label = "DEF / err_msgid" ]; 26 -> 27 [ label = "'!'..'~'" ]; 26 -> err_26 [ label = "DEF / err_msgid" ]; 27 -> 28 [ label = "'!'..'~'" ]; 27 -> err_27 [ label = "DEF / err_msgid" ]; 28 -> 29 [ label = "'!'..'~'" ]; 28 -> err_28 [ label = "DEF / err_msgid" ]; 29 -> 30 [ label = "'!'..'~'" ]; 29 -> err_29 [ label = "DEF / err_msgid" ]; 30 -> 31 [ label = "'!'..'~'" ]; 30 -> err_30 [ label = "DEF / err_msgid" ]; 31 -> 32 [ label = "'!'..'~'" ]; 31 -> err_31 [ label = "DEF / err_msgid" ]; 32 -> 33 [ label = "'!'..'~'" ]; 32 -> err_32 [ label = "DEF / err_msgid" ]; 33 -> err_33 [ label = "DEF / err_msgid" ]; ENTRY -> 1 [ label = "IN" ]; 1 -> eof_1 [ label = "EOF / err_msgid" ]; 2 -> eof_2 [ label = "EOF / set_msgid" ]; 3 -> eof_3 [ label = "EOF / set_msgid" ]; 4 -> eof_4 [ label = "EOF / set_msgid" ]; 5 -> eof_5 [ label = "EOF / set_msgid" ]; 6 -> eof_6 [ label = "EOF / set_msgid" ]; 7 -> eof_7 [ label = "EOF / set_msgid" ]; 8 -> eof_8 [ label = "EOF / set_msgid" ]; 9 -> eof_9 [ label = "EOF / set_msgid" ]; 10 -> eof_10 [ label = "EOF / set_msgid" ]; 11 -> eof_11 [ label = "EOF / set_msgid" ]; 12 -> eof_12 [ label = "EOF / set_msgid" ]; 13 -> eof_13 [ label = "EOF / set_msgid" ]; 14 -> eof_14 [ label = "EOF / set_msgid" ]; 15 -> eof_15 [ label = "EOF / set_msgid" ]; 16 -> eof_16 [ label = "EOF / set_msgid" ]; 17 -> eof_17 [ label = "EOF / set_msgid" ]; 18 -> eof_18 [ label = "EOF / set_msgid" ]; 19 -> eof_19 [ label = "EOF / set_msgid" ]; 20 -> eof_20 [ label = "EOF / set_msgid" ]; 21 -> eof_21 [ label = "EOF / set_msgid" ]; 22 -> eof_22 [ label = "EOF / set_msgid" ]; 23 -> eof_23 [ label = "EOF / set_msgid" ]; 24 -> eof_24 [ label = "EOF / set_msgid" ]; 25 -> eof_25 [ label = "EOF / set_msgid" ]; 26 -> eof_26 [ label = "EOF / set_msgid" ]; 27 -> eof_27 [ label = "EOF / set_msgid" ]; 28 -> eof_28 [ label = "EOF / set_msgid" ]; 29 -> eof_29 [ label = "EOF / set_msgid" ]; 30 -> eof_30 [ label = "EOF / set_msgid" ]; 31 -> eof_31 [ label = "EOF / set_msgid" ]; 32 -> eof_32 [ label = "EOF / set_msgid" ]; 33 -> eof_33 [ label = "EOF / set_msgid" ]; } go-syslog-2.0.0/docs/rfc5424_pri.dot000066400000000000000000000027701340614351500170470ustar00rootroot00000000000000digraph rfc5424 { rankdir=LR; node [ shape = point ]; ENTRY; eof_1; eof_2; eof_3; eof_4; eof_5; eof_6; node [ shape = circle, height = 0.2 ]; err_1 [ label=""]; err_2 [ label=""]; err_3 [ label=""]; err_4 [ label=""]; err_5 [ label=""]; err_6 [ label=""]; node [ fixedsize = true, height = 0.65, shape = doublecircle ]; 7; node [ shape = circle ]; 1 -> 2 [ label = "'<'" ]; 1 -> err_1 [ label = "DEF / err_pri" ]; 2 -> 3 [ label = "'0' / mark" ]; 2 -> 4 [ label = "'1' / mark" ]; 2 -> 5 [ label = "'2'..'9' / mark" ]; 2 -> err_2 [ label = "DEF / err_prival, err_pri" ]; 3 -> 7 [ label = "'>' / set_prival" ]; 3 -> err_3 [ label = "DEF / set_prival, err_prival, err_pri" ]; 4 -> 5 [ label = "'0'..'8' / set_prival" ]; 4 -> 6 [ label = "'9' / set_prival" ]; 4 -> 7 [ label = "'>' / set_prival" ]; 4 -> err_4 [ label = "DEF / set_prival, err_prival, err_pri" ]; 5 -> 3 [ label = "'0'..'9' / set_prival" ]; 5 -> 7 [ label = "'>' / set_prival" ]; 5 -> err_5 [ label = "DEF / set_prival, err_prival, err_pri" ]; 6 -> 3 [ label = "'0'..'1' / set_prival" ]; 6 -> 7 [ label = "'>' / set_prival" ]; 6 -> err_6 [ label = "DEF / set_prival, err_prival, err_pri" ]; ENTRY -> 1 [ label = "IN" ]; 1 -> eof_1 [ label = "EOF / err_pri" ]; 2 -> eof_2 [ label = "EOF / err_prival, err_pri" ]; 3 -> eof_3 [ label = "EOF / err_prival, err_pri" ]; 4 -> eof_4 [ label = "EOF / err_prival, err_pri" ]; 5 -> eof_5 [ label = "EOF / err_prival, err_pri" ]; 6 -> eof_6 [ label = "EOF / err_prival, err_pri" ]; } go-syslog-2.0.0/docs/rfc5424_procid.dot000066400000000000000000000512421340614351500175330ustar00rootroot00000000000000digraph rfc5424 { rankdir=LR; node [ shape = point ]; ENTRY; eof_1; eof_2; eof_3; eof_4; eof_5; eof_6; eof_7; eof_8; eof_9; eof_10; eof_11; eof_12; eof_13; eof_14; eof_15; eof_16; eof_17; eof_18; eof_19; eof_20; eof_21; eof_22; eof_23; eof_24; eof_25; eof_26; eof_27; eof_28; eof_29; eof_30; eof_31; eof_32; eof_33; eof_34; eof_35; eof_36; eof_37; eof_38; eof_39; eof_40; eof_41; eof_42; eof_43; eof_44; eof_45; eof_46; eof_47; eof_48; eof_49; eof_50; eof_51; eof_52; eof_53; eof_54; eof_55; eof_56; eof_57; eof_58; eof_59; eof_60; eof_61; eof_62; eof_63; eof_64; eof_65; eof_66; eof_67; eof_68; eof_69; eof_70; eof_71; eof_72; eof_73; eof_74; eof_75; eof_76; eof_77; eof_78; eof_79; eof_80; eof_81; eof_82; eof_83; eof_84; eof_85; eof_86; eof_87; eof_88; eof_89; eof_90; eof_91; eof_92; eof_93; eof_94; eof_95; eof_96; eof_97; eof_98; eof_99; eof_100; eof_101; eof_102; eof_103; eof_104; eof_105; eof_106; eof_107; eof_108; eof_109; eof_110; eof_111; eof_112; eof_113; eof_114; eof_115; eof_116; eof_117; eof_118; eof_119; eof_120; eof_121; eof_122; eof_123; eof_124; eof_125; eof_126; eof_127; eof_128; eof_129; node [ shape = circle, height = 0.2 ]; err_1 [ label=""]; err_2 [ label=""]; err_3 [ label=""]; err_4 [ label=""]; err_5 [ label=""]; err_6 [ label=""]; err_7 [ label=""]; err_8 [ label=""]; err_9 [ label=""]; err_10 [ label=""]; err_11 [ label=""]; err_12 [ label=""]; err_13 [ label=""]; err_14 [ label=""]; err_15 [ label=""]; err_16 [ label=""]; err_17 [ label=""]; err_18 [ label=""]; err_19 [ label=""]; err_20 [ label=""]; err_21 [ label=""]; err_22 [ label=""]; err_23 [ label=""]; err_24 [ label=""]; err_25 [ label=""]; err_26 [ label=""]; err_27 [ label=""]; err_28 [ label=""]; err_29 [ label=""]; err_30 [ label=""]; err_31 [ label=""]; err_32 [ label=""]; err_33 [ label=""]; err_34 [ label=""]; err_35 [ label=""]; err_36 [ label=""]; err_37 [ label=""]; err_38 [ label=""]; err_39 [ label=""]; err_40 [ label=""]; err_41 [ label=""]; err_42 [ label=""]; err_43 [ label=""]; err_44 [ label=""]; err_45 [ label=""]; err_46 [ label=""]; err_47 [ label=""]; err_48 [ label=""]; err_49 [ label=""]; err_50 [ label=""]; err_51 [ label=""]; err_52 [ label=""]; err_53 [ label=""]; err_54 [ label=""]; err_55 [ label=""]; err_56 [ label=""]; err_57 [ label=""]; err_58 [ label=""]; err_59 [ label=""]; err_60 [ label=""]; err_61 [ label=""]; err_62 [ label=""]; err_63 [ label=""]; err_64 [ label=""]; err_65 [ label=""]; err_66 [ label=""]; err_67 [ label=""]; err_68 [ label=""]; err_69 [ label=""]; err_70 [ label=""]; err_71 [ label=""]; err_72 [ label=""]; err_73 [ label=""]; err_74 [ label=""]; err_75 [ label=""]; err_76 [ label=""]; err_77 [ label=""]; err_78 [ label=""]; err_79 [ label=""]; err_80 [ label=""]; err_81 [ label=""]; err_82 [ label=""]; err_83 [ label=""]; err_84 [ label=""]; err_85 [ label=""]; err_86 [ label=""]; err_87 [ label=""]; err_88 [ label=""]; err_89 [ label=""]; err_90 [ label=""]; err_91 [ label=""]; err_92 [ label=""]; err_93 [ label=""]; err_94 [ label=""]; err_95 [ label=""]; err_96 [ label=""]; err_97 [ label=""]; err_98 [ label=""]; err_99 [ label=""]; err_100 [ label=""]; err_101 [ label=""]; err_102 [ label=""]; err_103 [ label=""]; err_104 [ label=""]; err_105 [ label=""]; err_106 [ label=""]; err_107 [ label=""]; err_108 [ label=""]; err_109 [ label=""]; err_110 [ label=""]; err_111 [ label=""]; err_112 [ label=""]; err_113 [ label=""]; err_114 [ label=""]; err_115 [ label=""]; err_116 [ label=""]; err_117 [ label=""]; err_118 [ label=""]; err_119 [ label=""]; err_120 [ label=""]; err_121 [ label=""]; err_122 [ label=""]; err_123 [ label=""]; err_124 [ label=""]; err_125 [ label=""]; err_126 [ label=""]; err_127 [ label=""]; err_128 [ label=""]; err_129 [ label=""]; node [ fixedsize = true, height = 0.65, shape = doublecircle ]; 2; 3; 4; 5; 6; 7; 8; 9; 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; 81; 82; 83; 84; 85; 86; 87; 88; 89; 90; 91; 92; 93; 94; 95; 96; 97; 98; 99; 100; 101; 102; 103; 104; 105; 106; 107; 108; 109; 110; 111; 112; 113; 114; 115; 116; 117; 118; 119; 120; 121; 122; 123; 124; 125; 126; 127; 128; 129; node [ shape = circle ]; 1 -> 2 [ label = "'!'..'~' / mark" ]; 1 -> err_1 [ label = "DEF / err_procid" ]; 2 -> 3 [ label = "'!'..'~'" ]; 2 -> err_2 [ label = "DEF / err_procid" ]; 3 -> 4 [ label = "'!'..'~'" ]; 3 -> err_3 [ label = "DEF / err_procid" ]; 4 -> 5 [ label = "'!'..'~'" ]; 4 -> err_4 [ label = "DEF / err_procid" ]; 5 -> 6 [ label = "'!'..'~'" ]; 5 -> err_5 [ label = "DEF / err_procid" ]; 6 -> 7 [ label = "'!'..'~'" ]; 6 -> err_6 [ label = "DEF / err_procid" ]; 7 -> 8 [ label = "'!'..'~'" ]; 7 -> err_7 [ label = "DEF / err_procid" ]; 8 -> 9 [ label = "'!'..'~'" ]; 8 -> err_8 [ label = "DEF / err_procid" ]; 9 -> 10 [ label = "'!'..'~'" ]; 9 -> err_9 [ label = "DEF / err_procid" ]; 10 -> 11 [ label = "'!'..'~'" ]; 10 -> err_10 [ label = "DEF / err_procid" ]; 11 -> 12 [ label = "'!'..'~'" ]; 11 -> err_11 [ label = "DEF / err_procid" ]; 12 -> 13 [ label = "'!'..'~'" ]; 12 -> err_12 [ label = "DEF / err_procid" ]; 13 -> 14 [ label = "'!'..'~'" ]; 13 -> err_13 [ label = "DEF / err_procid" ]; 14 -> 15 [ label = "'!'..'~'" ]; 14 -> err_14 [ label = "DEF / err_procid" ]; 15 -> 16 [ label = "'!'..'~'" ]; 15 -> err_15 [ label = "DEF / err_procid" ]; 16 -> 17 [ label = "'!'..'~'" ]; 16 -> err_16 [ label = "DEF / err_procid" ]; 17 -> 18 [ label = "'!'..'~'" ]; 17 -> err_17 [ label = "DEF / err_procid" ]; 18 -> 19 [ label = "'!'..'~'" ]; 18 -> err_18 [ label = "DEF / err_procid" ]; 19 -> 20 [ label = "'!'..'~'" ]; 19 -> err_19 [ label = "DEF / err_procid" ]; 20 -> 21 [ label = "'!'..'~'" ]; 20 -> err_20 [ label = "DEF / err_procid" ]; 21 -> 22 [ label = "'!'..'~'" ]; 21 -> err_21 [ label = "DEF / err_procid" ]; 22 -> 23 [ label = "'!'..'~'" ]; 22 -> err_22 [ label = "DEF / err_procid" ]; 23 -> 24 [ label = "'!'..'~'" ]; 23 -> err_23 [ label = "DEF / err_procid" ]; 24 -> 25 [ label = "'!'..'~'" ]; 24 -> err_24 [ label = "DEF / err_procid" ]; 25 -> 26 [ label = "'!'..'~'" ]; 25 -> err_25 [ label = "DEF / err_procid" ]; 26 -> 27 [ label = "'!'..'~'" ]; 26 -> err_26 [ label = "DEF / err_procid" ]; 27 -> 28 [ label = "'!'..'~'" ]; 27 -> err_27 [ label = "DEF / err_procid" ]; 28 -> 29 [ label = "'!'..'~'" ]; 28 -> err_28 [ label = "DEF / err_procid" ]; 29 -> 30 [ label = "'!'..'~'" ]; 29 -> err_29 [ label = "DEF / err_procid" ]; 30 -> 31 [ label = "'!'..'~'" ]; 30 -> err_30 [ label = "DEF / err_procid" ]; 31 -> 32 [ label = "'!'..'~'" ]; 31 -> err_31 [ label = "DEF / err_procid" ]; 32 -> 33 [ label = "'!'..'~'" ]; 32 -> err_32 [ label = "DEF / err_procid" ]; 33 -> 34 [ label = "'!'..'~'" ]; 33 -> err_33 [ label = "DEF / err_procid" ]; 34 -> 35 [ label = "'!'..'~'" ]; 34 -> err_34 [ label = "DEF / err_procid" ]; 35 -> 36 [ label = "'!'..'~'" ]; 35 -> err_35 [ label = "DEF / err_procid" ]; 36 -> 37 [ label = "'!'..'~'" ]; 36 -> err_36 [ label = "DEF / err_procid" ]; 37 -> 38 [ label = "'!'..'~'" ]; 37 -> err_37 [ label = "DEF / err_procid" ]; 38 -> 39 [ label = "'!'..'~'" ]; 38 -> err_38 [ label = "DEF / err_procid" ]; 39 -> 40 [ label = "'!'..'~'" ]; 39 -> err_39 [ label = "DEF / err_procid" ]; 40 -> 41 [ label = "'!'..'~'" ]; 40 -> err_40 [ label = "DEF / err_procid" ]; 41 -> 42 [ label = "'!'..'~'" ]; 41 -> err_41 [ label = "DEF / err_procid" ]; 42 -> 43 [ label = "'!'..'~'" ]; 42 -> err_42 [ label = "DEF / err_procid" ]; 43 -> 44 [ label = "'!'..'~'" ]; 43 -> err_43 [ label = "DEF / err_procid" ]; 44 -> 45 [ label = "'!'..'~'" ]; 44 -> err_44 [ label = "DEF / err_procid" ]; 45 -> 46 [ label = "'!'..'~'" ]; 45 -> err_45 [ label = "DEF / err_procid" ]; 46 -> 47 [ label = "'!'..'~'" ]; 46 -> err_46 [ label = "DEF / err_procid" ]; 47 -> 48 [ label = "'!'..'~'" ]; 47 -> err_47 [ label = "DEF / err_procid" ]; 48 -> 49 [ label = "'!'..'~'" ]; 48 -> err_48 [ label = "DEF / err_procid" ]; 49 -> 50 [ label = "'!'..'~'" ]; 49 -> err_49 [ label = "DEF / err_procid" ]; 50 -> 51 [ label = "'!'..'~'" ]; 50 -> err_50 [ label = "DEF / err_procid" ]; 51 -> 52 [ label = "'!'..'~'" ]; 51 -> err_51 [ label = "DEF / err_procid" ]; 52 -> 53 [ label = "'!'..'~'" ]; 52 -> err_52 [ label = "DEF / err_procid" ]; 53 -> 54 [ label = "'!'..'~'" ]; 53 -> err_53 [ label = "DEF / err_procid" ]; 54 -> 55 [ label = "'!'..'~'" ]; 54 -> err_54 [ label = "DEF / err_procid" ]; 55 -> 56 [ label = "'!'..'~'" ]; 55 -> err_55 [ label = "DEF / err_procid" ]; 56 -> 57 [ label = "'!'..'~'" ]; 56 -> err_56 [ label = "DEF / err_procid" ]; 57 -> 58 [ label = "'!'..'~'" ]; 57 -> err_57 [ label = "DEF / err_procid" ]; 58 -> 59 [ label = "'!'..'~'" ]; 58 -> err_58 [ label = "DEF / err_procid" ]; 59 -> 60 [ label = "'!'..'~'" ]; 59 -> err_59 [ label = "DEF / err_procid" ]; 60 -> 61 [ label = "'!'..'~'" ]; 60 -> err_60 [ label = "DEF / err_procid" ]; 61 -> 62 [ label = "'!'..'~'" ]; 61 -> err_61 [ label = "DEF / err_procid" ]; 62 -> 63 [ label = "'!'..'~'" ]; 62 -> err_62 [ label = "DEF / err_procid" ]; 63 -> 64 [ label = "'!'..'~'" ]; 63 -> err_63 [ label = "DEF / err_procid" ]; 64 -> 65 [ label = "'!'..'~'" ]; 64 -> err_64 [ label = "DEF / err_procid" ]; 65 -> 66 [ label = "'!'..'~'" ]; 65 -> err_65 [ label = "DEF / err_procid" ]; 66 -> 67 [ label = "'!'..'~'" ]; 66 -> err_66 [ label = "DEF / err_procid" ]; 67 -> 68 [ label = "'!'..'~'" ]; 67 -> err_67 [ label = "DEF / err_procid" ]; 68 -> 69 [ label = "'!'..'~'" ]; 68 -> err_68 [ label = "DEF / err_procid" ]; 69 -> 70 [ label = "'!'..'~'" ]; 69 -> err_69 [ label = "DEF / err_procid" ]; 70 -> 71 [ label = "'!'..'~'" ]; 70 -> err_70 [ label = "DEF / err_procid" ]; 71 -> 72 [ label = "'!'..'~'" ]; 71 -> err_71 [ label = "DEF / err_procid" ]; 72 -> 73 [ label = "'!'..'~'" ]; 72 -> err_72 [ label = "DEF / err_procid" ]; 73 -> 74 [ label = "'!'..'~'" ]; 73 -> err_73 [ label = "DEF / err_procid" ]; 74 -> 75 [ label = "'!'..'~'" ]; 74 -> err_74 [ label = "DEF / err_procid" ]; 75 -> 76 [ label = "'!'..'~'" ]; 75 -> err_75 [ label = "DEF / err_procid" ]; 76 -> 77 [ label = "'!'..'~'" ]; 76 -> err_76 [ label = "DEF / err_procid" ]; 77 -> 78 [ label = "'!'..'~'" ]; 77 -> err_77 [ label = "DEF / err_procid" ]; 78 -> 79 [ label = "'!'..'~'" ]; 78 -> err_78 [ label = "DEF / err_procid" ]; 79 -> 80 [ label = "'!'..'~'" ]; 79 -> err_79 [ label = "DEF / err_procid" ]; 80 -> 81 [ label = "'!'..'~'" ]; 80 -> err_80 [ label = "DEF / err_procid" ]; 81 -> 82 [ label = "'!'..'~'" ]; 81 -> err_81 [ label = "DEF / err_procid" ]; 82 -> 83 [ label = "'!'..'~'" ]; 82 -> err_82 [ label = "DEF / err_procid" ]; 83 -> 84 [ label = "'!'..'~'" ]; 83 -> err_83 [ label = "DEF / err_procid" ]; 84 -> 85 [ label = "'!'..'~'" ]; 84 -> err_84 [ label = "DEF / err_procid" ]; 85 -> 86 [ label = "'!'..'~'" ]; 85 -> err_85 [ label = "DEF / err_procid" ]; 86 -> 87 [ label = "'!'..'~'" ]; 86 -> err_86 [ label = "DEF / err_procid" ]; 87 -> 88 [ label = "'!'..'~'" ]; 87 -> err_87 [ label = "DEF / err_procid" ]; 88 -> 89 [ label = "'!'..'~'" ]; 88 -> err_88 [ label = "DEF / err_procid" ]; 89 -> 90 [ label = "'!'..'~'" ]; 89 -> err_89 [ label = "DEF / err_procid" ]; 90 -> 91 [ label = "'!'..'~'" ]; 90 -> err_90 [ label = "DEF / err_procid" ]; 91 -> 92 [ label = "'!'..'~'" ]; 91 -> err_91 [ label = "DEF / err_procid" ]; 92 -> 93 [ label = "'!'..'~'" ]; 92 -> err_92 [ label = "DEF / err_procid" ]; 93 -> 94 [ label = "'!'..'~'" ]; 93 -> err_93 [ label = "DEF / err_procid" ]; 94 -> 95 [ label = "'!'..'~'" ]; 94 -> err_94 [ label = "DEF / err_procid" ]; 95 -> 96 [ label = "'!'..'~'" ]; 95 -> err_95 [ label = "DEF / err_procid" ]; 96 -> 97 [ label = "'!'..'~'" ]; 96 -> err_96 [ label = "DEF / err_procid" ]; 97 -> 98 [ label = "'!'..'~'" ]; 97 -> err_97 [ label = "DEF / err_procid" ]; 98 -> 99 [ label = "'!'..'~'" ]; 98 -> err_98 [ label = "DEF / err_procid" ]; 99 -> 100 [ label = "'!'..'~'" ]; 99 -> err_99 [ label = "DEF / err_procid" ]; 100 -> 101 [ label = "'!'..'~'" ]; 100 -> err_100 [ label = "DEF / err_procid" ]; 101 -> 102 [ label = "'!'..'~'" ]; 101 -> err_101 [ label = "DEF / err_procid" ]; 102 -> 103 [ label = "'!'..'~'" ]; 102 -> err_102 [ label = "DEF / err_procid" ]; 103 -> 104 [ label = "'!'..'~'" ]; 103 -> err_103 [ label = "DEF / err_procid" ]; 104 -> 105 [ label = "'!'..'~'" ]; 104 -> err_104 [ label = "DEF / err_procid" ]; 105 -> 106 [ label = "'!'..'~'" ]; 105 -> err_105 [ label = "DEF / err_procid" ]; 106 -> 107 [ label = "'!'..'~'" ]; 106 -> err_106 [ label = "DEF / err_procid" ]; 107 -> 108 [ label = "'!'..'~'" ]; 107 -> err_107 [ label = "DEF / err_procid" ]; 108 -> 109 [ label = "'!'..'~'" ]; 108 -> err_108 [ label = "DEF / err_procid" ]; 109 -> 110 [ label = "'!'..'~'" ]; 109 -> err_109 [ label = "DEF / err_procid" ]; 110 -> 111 [ label = "'!'..'~'" ]; 110 -> err_110 [ label = "DEF / err_procid" ]; 111 -> 112 [ label = "'!'..'~'" ]; 111 -> err_111 [ label = "DEF / err_procid" ]; 112 -> 113 [ label = "'!'..'~'" ]; 112 -> err_112 [ label = "DEF / err_procid" ]; 113 -> 114 [ label = "'!'..'~'" ]; 113 -> err_113 [ label = "DEF / err_procid" ]; 114 -> 115 [ label = "'!'..'~'" ]; 114 -> err_114 [ label = "DEF / err_procid" ]; 115 -> 116 [ label = "'!'..'~'" ]; 115 -> err_115 [ label = "DEF / err_procid" ]; 116 -> 117 [ label = "'!'..'~'" ]; 116 -> err_116 [ label = "DEF / err_procid" ]; 117 -> 118 [ label = "'!'..'~'" ]; 117 -> err_117 [ label = "DEF / err_procid" ]; 118 -> 119 [ label = "'!'..'~'" ]; 118 -> err_118 [ label = "DEF / err_procid" ]; 119 -> 120 [ label = "'!'..'~'" ]; 119 -> err_119 [ label = "DEF / err_procid" ]; 120 -> 121 [ label = "'!'..'~'" ]; 120 -> err_120 [ label = "DEF / err_procid" ]; 121 -> 122 [ label = "'!'..'~'" ]; 121 -> err_121 [ label = "DEF / err_procid" ]; 122 -> 123 [ label = "'!'..'~'" ]; 122 -> err_122 [ label = "DEF / err_procid" ]; 123 -> 124 [ label = "'!'..'~'" ]; 123 -> err_123 [ label = "DEF / err_procid" ]; 124 -> 125 [ label = "'!'..'~'" ]; 124 -> err_124 [ label = "DEF / err_procid" ]; 125 -> 126 [ label = "'!'..'~'" ]; 125 -> err_125 [ label = "DEF / err_procid" ]; 126 -> 127 [ label = "'!'..'~'" ]; 126 -> err_126 [ label = "DEF / err_procid" ]; 127 -> 128 [ label = "'!'..'~'" ]; 127 -> err_127 [ label = "DEF / err_procid" ]; 128 -> 129 [ label = "'!'..'~'" ]; 128 -> err_128 [ label = "DEF / err_procid" ]; 129 -> err_129 [ label = "DEF / err_procid" ]; ENTRY -> 1 [ label = "IN" ]; 1 -> eof_1 [ label = "EOF / err_procid" ]; 2 -> eof_2 [ label = "EOF / set_procid" ]; 3 -> eof_3 [ label = "EOF / set_procid" ]; 4 -> eof_4 [ label = "EOF / set_procid" ]; 5 -> eof_5 [ label = "EOF / set_procid" ]; 6 -> eof_6 [ label = "EOF / set_procid" ]; 7 -> eof_7 [ label = "EOF / set_procid" ]; 8 -> eof_8 [ label = "EOF / set_procid" ]; 9 -> eof_9 [ label = "EOF / set_procid" ]; 10 -> eof_10 [ label = "EOF / set_procid" ]; 11 -> eof_11 [ label = "EOF / set_procid" ]; 12 -> eof_12 [ label = "EOF / set_procid" ]; 13 -> eof_13 [ label = "EOF / set_procid" ]; 14 -> eof_14 [ label = "EOF / set_procid" ]; 15 -> eof_15 [ label = "EOF / set_procid" ]; 16 -> eof_16 [ label = "EOF / set_procid" ]; 17 -> eof_17 [ label = "EOF / set_procid" ]; 18 -> eof_18 [ label = "EOF / set_procid" ]; 19 -> eof_19 [ label = "EOF / set_procid" ]; 20 -> eof_20 [ label = "EOF / set_procid" ]; 21 -> eof_21 [ label = "EOF / set_procid" ]; 22 -> eof_22 [ label = "EOF / set_procid" ]; 23 -> eof_23 [ label = "EOF / set_procid" ]; 24 -> eof_24 [ label = "EOF / set_procid" ]; 25 -> eof_25 [ label = "EOF / set_procid" ]; 26 -> eof_26 [ label = "EOF / set_procid" ]; 27 -> eof_27 [ label = "EOF / set_procid" ]; 28 -> eof_28 [ label = "EOF / set_procid" ]; 29 -> eof_29 [ label = "EOF / set_procid" ]; 30 -> eof_30 [ label = "EOF / set_procid" ]; 31 -> eof_31 [ label = "EOF / set_procid" ]; 32 -> eof_32 [ label = "EOF / set_procid" ]; 33 -> eof_33 [ label = "EOF / set_procid" ]; 34 -> eof_34 [ label = "EOF / set_procid" ]; 35 -> eof_35 [ label = "EOF / set_procid" ]; 36 -> eof_36 [ label = "EOF / set_procid" ]; 37 -> eof_37 [ label = "EOF / set_procid" ]; 38 -> eof_38 [ label = "EOF / set_procid" ]; 39 -> eof_39 [ label = "EOF / set_procid" ]; 40 -> eof_40 [ label = "EOF / set_procid" ]; 41 -> eof_41 [ label = "EOF / set_procid" ]; 42 -> eof_42 [ label = "EOF / set_procid" ]; 43 -> eof_43 [ label = "EOF / set_procid" ]; 44 -> eof_44 [ label = "EOF / set_procid" ]; 45 -> eof_45 [ label = "EOF / set_procid" ]; 46 -> eof_46 [ label = "EOF / set_procid" ]; 47 -> eof_47 [ label = "EOF / set_procid" ]; 48 -> eof_48 [ label = "EOF / set_procid" ]; 49 -> eof_49 [ label = "EOF / set_procid" ]; 50 -> eof_50 [ label = "EOF / set_procid" ]; 51 -> eof_51 [ label = "EOF / set_procid" ]; 52 -> eof_52 [ label = "EOF / set_procid" ]; 53 -> eof_53 [ label = "EOF / set_procid" ]; 54 -> eof_54 [ label = "EOF / set_procid" ]; 55 -> eof_55 [ label = "EOF / set_procid" ]; 56 -> eof_56 [ label = "EOF / set_procid" ]; 57 -> eof_57 [ label = "EOF / set_procid" ]; 58 -> eof_58 [ label = "EOF / set_procid" ]; 59 -> eof_59 [ label = "EOF / set_procid" ]; 60 -> eof_60 [ label = "EOF / set_procid" ]; 61 -> eof_61 [ label = "EOF / set_procid" ]; 62 -> eof_62 [ label = "EOF / set_procid" ]; 63 -> eof_63 [ label = "EOF / set_procid" ]; 64 -> eof_64 [ label = "EOF / set_procid" ]; 65 -> eof_65 [ label = "EOF / set_procid" ]; 66 -> eof_66 [ label = "EOF / set_procid" ]; 67 -> eof_67 [ label = "EOF / set_procid" ]; 68 -> eof_68 [ label = "EOF / set_procid" ]; 69 -> eof_69 [ label = "EOF / set_procid" ]; 70 -> eof_70 [ label = "EOF / set_procid" ]; 71 -> eof_71 [ label = "EOF / set_procid" ]; 72 -> eof_72 [ label = "EOF / set_procid" ]; 73 -> eof_73 [ label = "EOF / set_procid" ]; 74 -> eof_74 [ label = "EOF / set_procid" ]; 75 -> eof_75 [ label = "EOF / set_procid" ]; 76 -> eof_76 [ label = "EOF / set_procid" ]; 77 -> eof_77 [ label = "EOF / set_procid" ]; 78 -> eof_78 [ label = "EOF / set_procid" ]; 79 -> eof_79 [ label = "EOF / set_procid" ]; 80 -> eof_80 [ label = "EOF / set_procid" ]; 81 -> eof_81 [ label = "EOF / set_procid" ]; 82 -> eof_82 [ label = "EOF / set_procid" ]; 83 -> eof_83 [ label = "EOF / set_procid" ]; 84 -> eof_84 [ label = "EOF / set_procid" ]; 85 -> eof_85 [ label = "EOF / set_procid" ]; 86 -> eof_86 [ label = "EOF / set_procid" ]; 87 -> eof_87 [ label = "EOF / set_procid" ]; 88 -> eof_88 [ label = "EOF / set_procid" ]; 89 -> eof_89 [ label = "EOF / set_procid" ]; 90 -> eof_90 [ label = "EOF / set_procid" ]; 91 -> eof_91 [ label = "EOF / set_procid" ]; 92 -> eof_92 [ label = "EOF / set_procid" ]; 93 -> eof_93 [ label = "EOF / set_procid" ]; 94 -> eof_94 [ label = "EOF / set_procid" ]; 95 -> eof_95 [ label = "EOF / set_procid" ]; 96 -> eof_96 [ label = "EOF / set_procid" ]; 97 -> eof_97 [ label = "EOF / set_procid" ]; 98 -> eof_98 [ label = "EOF / set_procid" ]; 99 -> eof_99 [ label = "EOF / set_procid" ]; 100 -> eof_100 [ label = "EOF / set_procid" ]; 101 -> eof_101 [ label = "EOF / set_procid" ]; 102 -> eof_102 [ label = "EOF / set_procid" ]; 103 -> eof_103 [ label = "EOF / set_procid" ]; 104 -> eof_104 [ label = "EOF / set_procid" ]; 105 -> eof_105 [ label = "EOF / set_procid" ]; 106 -> eof_106 [ label = "EOF / set_procid" ]; 107 -> eof_107 [ label = "EOF / set_procid" ]; 108 -> eof_108 [ label = "EOF / set_procid" ]; 109 -> eof_109 [ label = "EOF / set_procid" ]; 110 -> eof_110 [ label = "EOF / set_procid" ]; 111 -> eof_111 [ label = "EOF / set_procid" ]; 112 -> eof_112 [ label = "EOF / set_procid" ]; 113 -> eof_113 [ label = "EOF / set_procid" ]; 114 -> eof_114 [ label = "EOF / set_procid" ]; 115 -> eof_115 [ label = "EOF / set_procid" ]; 116 -> eof_116 [ label = "EOF / set_procid" ]; 117 -> eof_117 [ label = "EOF / set_procid" ]; 118 -> eof_118 [ label = "EOF / set_procid" ]; 119 -> eof_119 [ label = "EOF / set_procid" ]; 120 -> eof_120 [ label = "EOF / set_procid" ]; 121 -> eof_121 [ label = "EOF / set_procid" ]; 122 -> eof_122 [ label = "EOF / set_procid" ]; 123 -> eof_123 [ label = "EOF / set_procid" ]; 124 -> eof_124 [ label = "EOF / set_procid" ]; 125 -> eof_125 [ label = "EOF / set_procid" ]; 126 -> eof_126 [ label = "EOF / set_procid" ]; 127 -> eof_127 [ label = "EOF / set_procid" ]; 128 -> eof_128 [ label = "EOF / set_procid" ]; 129 -> eof_129 [ label = "EOF / set_procid" ]; } go-syslog-2.0.0/docs/rfc5424_structureddata.dot000066400000000000000000000537331340614351500213200ustar00rootroot00000000000000digraph rfc5424 { rankdir=LR; node [ shape = point ]; ENTRY; eof_1; eof_2; eof_3; eof_4; eof_5; eof_6; eof_7; eof_8; eof_9; eof_10; eof_11; eof_12; eof_13; eof_14; eof_15; eof_16; eof_17; eof_18; eof_19; eof_20; eof_21; eof_22; eof_23; eof_24; eof_25; eof_26; eof_27; eof_28; eof_29; eof_30; eof_31; eof_32; eof_33; eof_34; eof_35; eof_36; eof_37; eof_38; eof_39; eof_40; eof_41; eof_42; eof_43; eof_44; eof_45; eof_46; eof_47; eof_48; eof_49; eof_50; eof_51; eof_52; eof_53; eof_54; eof_55; eof_56; eof_57; eof_58; eof_59; eof_60; eof_61; eof_62; eof_63; eof_64; eof_65; eof_66; eof_67; eof_68; eof_69; eof_70; eof_71; eof_72; eof_73; eof_74; eof_75; eof_76; eof_77; eof_78; eof_79; node [ shape = circle, height = 0.2 ]; err_1 [ label=""]; err_2 [ label=""]; err_3 [ label=""]; err_4 [ label=""]; err_5 [ label=""]; err_6 [ label=""]; err_7 [ label=""]; err_8 [ label=""]; err_9 [ label=""]; err_10 [ label=""]; err_11 [ label=""]; err_12 [ label=""]; err_13 [ label=""]; err_14 [ label=""]; err_15 [ label=""]; err_16 [ label=""]; err_17 [ label=""]; err_18 [ label=""]; err_19 [ label=""]; err_20 [ label=""]; err_21 [ label=""]; err_22 [ label=""]; err_23 [ label=""]; err_24 [ label=""]; err_25 [ label=""]; err_26 [ label=""]; err_27 [ label=""]; err_28 [ label=""]; err_29 [ label=""]; err_30 [ label=""]; err_31 [ label=""]; err_32 [ label=""]; err_33 [ label=""]; err_34 [ label=""]; err_35 [ label=""]; err_36 [ label=""]; err_37 [ label=""]; err_38 [ label=""]; err_39 [ label=""]; err_40 [ label=""]; err_41 [ label=""]; err_42 [ label=""]; err_43 [ label=""]; err_44 [ label=""]; err_45 [ label=""]; err_46 [ label=""]; err_47 [ label=""]; err_48 [ label=""]; err_49 [ label=""]; err_50 [ label=""]; err_51 [ label=""]; err_52 [ label=""]; err_53 [ label=""]; err_54 [ label=""]; err_55 [ label=""]; err_56 [ label=""]; err_57 [ label=""]; err_58 [ label=""]; err_59 [ label=""]; err_60 [ label=""]; err_61 [ label=""]; err_62 [ label=""]; err_63 [ label=""]; err_64 [ label=""]; err_65 [ label=""]; err_66 [ label=""]; err_67 [ label=""]; err_68 [ label=""]; err_69 [ label=""]; err_70 [ label=""]; err_71 [ label=""]; err_72 [ label=""]; err_73 [ label=""]; err_74 [ label=""]; err_75 [ label=""]; err_76 [ label=""]; err_77 [ label=""]; err_78 [ label=""]; err_79 [ label=""]; err_81 [ label=""]; node [ fixedsize = true, height = 0.65, shape = doublecircle ]; 80; 81; node [ shape = circle ]; 1 -> 80 [ label = "'-'" ]; 1 -> 2 [ label = "'[' / ini_elements" ]; 1 -> err_1 [ label = "DEF / err_structureddata" ]; 2 -> 3 [ label = "'!', '#'..'<', '>'..'\\', '^'..'~' / mark" ]; 2 -> err_2 [ label = "DEF / err_sdid, err_structureddata" ]; 3 -> 4 [ label = "SP / set_id" ]; 3 -> 49 [ label = "'!', '#'..'<', '>'..'\\', '^'..'~'" ]; 3 -> 81 [ label = "']' / set_id" ]; 3 -> err_3 [ label = "DEF / set_id, err_sdid, err_structureddata" ]; 4 -> 5 [ label = "'!', '#'..'<', '>'..'\\', '^'..'~' / ini_sdparam, mark" ]; 4 -> err_4 [ label = "DEF / err_sdparam, err_structureddata" ]; 5 -> 6 [ label = "'!', '#'..'<', '>'..'\\', '^'..'~'" ]; 5 -> 37 [ label = "'=' / set_paramname" ]; 5 -> err_5 [ label = "DEF / err_sdparam, err_structureddata" ]; 6 -> 7 [ label = "'!', '#'..'<', '>'..'\\', '^'..'~'" ]; 6 -> 37 [ label = "'=' / set_paramname" ]; 6 -> err_6 [ label = "DEF / err_sdparam, err_structureddata" ]; 7 -> 8 [ label = "'!', '#'..'<', '>'..'\\', '^'..'~'" ]; 7 -> 37 [ label = "'=' / set_paramname" ]; 7 -> err_7 [ label = "DEF / err_sdparam, err_structureddata" ]; 8 -> 9 [ label = "'!', '#'..'<', '>'..'\\', '^'..'~'" ]; 8 -> 37 [ label = "'=' / set_paramname" ]; 8 -> err_8 [ label = "DEF / err_sdparam, err_structureddata" ]; 9 -> 10 [ label = "'!', '#'..'<', '>'..'\\', '^'..'~'" ]; 9 -> 37 [ label = "'=' / set_paramname" ]; 9 -> err_9 [ label = "DEF / err_sdparam, err_structureddata" ]; 10 -> 11 [ label = "'!', '#'..'<', '>'..'\\', '^'..'~'" ]; 10 -> 37 [ label = "'=' / set_paramname" ]; 10 -> err_10 [ label = "DEF / err_sdparam, err_structureddata" ]; 11 -> 12 [ label = "'!', '#'..'<', '>'..'\\', '^'..'~'" ]; 11 -> 37 [ label = "'=' / set_paramname" ]; 11 -> err_11 [ label = "DEF / err_sdparam, err_structureddata" ]; 12 -> 13 [ label = "'!', '#'..'<', '>'..'\\', '^'..'~'" ]; 12 -> 37 [ label = "'=' / set_paramname" ]; 12 -> err_12 [ label = "DEF / err_sdparam, err_structureddata" ]; 13 -> 14 [ label = "'!', '#'..'<', '>'..'\\', '^'..'~'" ]; 13 -> 37 [ label = "'=' / set_paramname" ]; 13 -> err_13 [ label = "DEF / err_sdparam, err_structureddata" ]; 14 -> 15 [ label = "'!', '#'..'<', '>'..'\\', '^'..'~'" ]; 14 -> 37 [ label = "'=' / set_paramname" ]; 14 -> err_14 [ label = "DEF / err_sdparam, err_structureddata" ]; 15 -> 16 [ label = "'!', '#'..'<', '>'..'\\', '^'..'~'" ]; 15 -> 37 [ label = "'=' / set_paramname" ]; 15 -> err_15 [ label = "DEF / err_sdparam, err_structureddata" ]; 16 -> 17 [ label = "'!', '#'..'<', '>'..'\\', '^'..'~'" ]; 16 -> 37 [ label = "'=' / set_paramname" ]; 16 -> err_16 [ label = "DEF / err_sdparam, err_structureddata" ]; 17 -> 18 [ label = "'!', '#'..'<', '>'..'\\', '^'..'~'" ]; 17 -> 37 [ label = "'=' / set_paramname" ]; 17 -> err_17 [ label = "DEF / err_sdparam, err_structureddata" ]; 18 -> 19 [ label = "'!', '#'..'<', '>'..'\\', '^'..'~'" ]; 18 -> 37 [ label = "'=' / set_paramname" ]; 18 -> err_18 [ label = "DEF / err_sdparam, err_structureddata" ]; 19 -> 20 [ label = "'!', '#'..'<', '>'..'\\', '^'..'~'" ]; 19 -> 37 [ label = "'=' / set_paramname" ]; 19 -> err_19 [ label = "DEF / err_sdparam, err_structureddata" ]; 20 -> 21 [ label = "'!', '#'..'<', '>'..'\\', '^'..'~'" ]; 20 -> 37 [ label = "'=' / set_paramname" ]; 20 -> err_20 [ label = "DEF / err_sdparam, err_structureddata" ]; 21 -> 22 [ label = "'!', '#'..'<', '>'..'\\', '^'..'~'" ]; 21 -> 37 [ label = "'=' / set_paramname" ]; 21 -> err_21 [ label = "DEF / err_sdparam, err_structureddata" ]; 22 -> 23 [ label = "'!', '#'..'<', '>'..'\\', '^'..'~'" ]; 22 -> 37 [ label = "'=' / set_paramname" ]; 22 -> err_22 [ label = "DEF / err_sdparam, err_structureddata" ]; 23 -> 24 [ label = "'!', '#'..'<', '>'..'\\', '^'..'~'" ]; 23 -> 37 [ label = "'=' / set_paramname" ]; 23 -> err_23 [ label = "DEF / err_sdparam, err_structureddata" ]; 24 -> 25 [ label = "'!', '#'..'<', '>'..'\\', '^'..'~'" ]; 24 -> 37 [ label = "'=' / set_paramname" ]; 24 -> err_24 [ label = "DEF / err_sdparam, err_structureddata" ]; 25 -> 26 [ label = "'!', '#'..'<', '>'..'\\', '^'..'~'" ]; 25 -> 37 [ label = "'=' / set_paramname" ]; 25 -> err_25 [ label = "DEF / err_sdparam, err_structureddata" ]; 26 -> 27 [ label = "'!', '#'..'<', '>'..'\\', '^'..'~'" ]; 26 -> 37 [ label = "'=' / set_paramname" ]; 26 -> err_26 [ label = "DEF / err_sdparam, err_structureddata" ]; 27 -> 28 [ label = "'!', '#'..'<', '>'..'\\', '^'..'~'" ]; 27 -> 37 [ label = "'=' / set_paramname" ]; 27 -> err_27 [ label = "DEF / err_sdparam, err_structureddata" ]; 28 -> 29 [ label = "'!', '#'..'<', '>'..'\\', '^'..'~'" ]; 28 -> 37 [ label = "'=' / set_paramname" ]; 28 -> err_28 [ label = "DEF / err_sdparam, err_structureddata" ]; 29 -> 30 [ label = "'!', '#'..'<', '>'..'\\', '^'..'~'" ]; 29 -> 37 [ label = "'=' / set_paramname" ]; 29 -> err_29 [ label = "DEF / err_sdparam, err_structureddata" ]; 30 -> 31 [ label = "'!', '#'..'<', '>'..'\\', '^'..'~'" ]; 30 -> 37 [ label = "'=' / set_paramname" ]; 30 -> err_30 [ label = "DEF / err_sdparam, err_structureddata" ]; 31 -> 32 [ label = "'!', '#'..'<', '>'..'\\', '^'..'~'" ]; 31 -> 37 [ label = "'=' / set_paramname" ]; 31 -> err_31 [ label = "DEF / err_sdparam, err_structureddata" ]; 32 -> 33 [ label = "'!', '#'..'<', '>'..'\\', '^'..'~'" ]; 32 -> 37 [ label = "'=' / set_paramname" ]; 32 -> err_32 [ label = "DEF / err_sdparam, err_structureddata" ]; 33 -> 34 [ label = "'!', '#'..'<', '>'..'\\', '^'..'~'" ]; 33 -> 37 [ label = "'=' / set_paramname" ]; 33 -> err_33 [ label = "DEF / err_sdparam, err_structureddata" ]; 34 -> 35 [ label = "'!', '#'..'<', '>'..'\\', '^'..'~'" ]; 34 -> 37 [ label = "'=' / set_paramname" ]; 34 -> err_34 [ label = "DEF / err_sdparam, err_structureddata" ]; 35 -> 36 [ label = "'!', '#'..'<', '>'..'\\', '^'..'~'" ]; 35 -> 37 [ label = "'=' / set_paramname" ]; 35 -> err_35 [ label = "DEF / err_sdparam, err_structureddata" ]; 36 -> 37 [ label = "'=' / set_paramname" ]; 36 -> err_36 [ label = "DEF / err_sdparam, err_structureddata" ]; 37 -> 38 [ label = "'\"'" ]; 37 -> err_37 [ label = "DEF / err_sdparam, err_structureddata" ]; 38 -> 40 [ label = "'\"' / mark, set_paramvalue" ]; 38 -> 41 [ label = "'\\' / mark, add_slash" ]; 38 -> err_38 [ label = "']', 128..193, 245..255 / err_escape, err_sdparam, err_structureddata" ]; 38 -> 42 [ label = "194..223 / mark" ]; 38 -> 43 [ label = "224 / mark" ]; 38 -> 44 [ label = "225..236, 238..239 / mark" ]; 38 -> 45 [ label = "237 / mark" ]; 38 -> 46 [ label = "240 / mark" ]; 38 -> 47 [ label = "241..243 / mark" ]; 38 -> 48 [ label = "244 / mark" ]; 38 -> 39 [ label = "DEF / mark" ]; 39 -> 40 [ label = "'\"' / set_paramvalue" ]; 39 -> 41 [ label = "'\\' / add_slash" ]; 39 -> err_39 [ label = "']', 128..193, 245..255 / err_escape, err_sdparam, err_structureddata" ]; 39 -> 42 [ label = "194..223" ]; 39 -> 43 [ label = "224" ]; 39 -> 44 [ label = "225..236, 238..239" ]; 39 -> 45 [ label = "237" ]; 39 -> 46 [ label = "240" ]; 39 -> 47 [ label = "241..243" ]; 39 -> 48 [ label = "244" ]; 39 -> 39 [ label = "DEF" ]; 40 -> 4 [ label = "SP" ]; 40 -> 81 [ label = "']'" ]; 40 -> err_40 [ label = "DEF / err_sdparam, err_structureddata" ]; 41 -> 39 [ label = "'\"', '\\'..']'" ]; 41 -> err_41 [ label = "DEF / err_escape, err_sdparam, err_structureddata" ]; 42 -> 39 [ label = "128..191" ]; 42 -> err_42 [ label = "DEF / err_sdparam, err_structureddata" ]; 43 -> 42 [ label = "160..191" ]; 43 -> err_43 [ label = "DEF / err_sdparam, err_structureddata" ]; 44 -> 42 [ label = "128..191" ]; 44 -> err_44 [ label = "DEF / err_sdparam, err_structureddata" ]; 45 -> 42 [ label = "128..159" ]; 45 -> err_45 [ label = "DEF / err_sdparam, err_structureddata" ]; 46 -> 44 [ label = "144..191" ]; 46 -> err_46 [ label = "DEF / err_sdparam, err_structureddata" ]; 47 -> 44 [ label = "128..191" ]; 47 -> err_47 [ label = "DEF / err_sdparam, err_structureddata" ]; 48 -> 44 [ label = "128..143" ]; 48 -> err_48 [ label = "DEF / err_sdparam, err_structureddata" ]; 49 -> 4 [ label = "SP / set_id" ]; 49 -> 50 [ label = "'!', '#'..'<', '>'..'\\', '^'..'~'" ]; 49 -> 81 [ label = "']' / set_id" ]; 49 -> err_49 [ label = "DEF / set_id, err_sdid, err_structureddata" ]; 50 -> 4 [ label = "SP / set_id" ]; 50 -> 51 [ label = "'!', '#'..'<', '>'..'\\', '^'..'~'" ]; 50 -> 81 [ label = "']' / set_id" ]; 50 -> err_50 [ label = "DEF / set_id, err_sdid, err_structureddata" ]; 51 -> 4 [ label = "SP / set_id" ]; 51 -> 52 [ label = "'!', '#'..'<', '>'..'\\', '^'..'~'" ]; 51 -> 81 [ label = "']' / set_id" ]; 51 -> err_51 [ label = "DEF / set_id, err_sdid, err_structureddata" ]; 52 -> 4 [ label = "SP / set_id" ]; 52 -> 53 [ label = "'!', '#'..'<', '>'..'\\', '^'..'~'" ]; 52 -> 81 [ label = "']' / set_id" ]; 52 -> err_52 [ label = "DEF / set_id, err_sdid, err_structureddata" ]; 53 -> 4 [ label = "SP / set_id" ]; 53 -> 54 [ label = "'!', '#'..'<', '>'..'\\', '^'..'~'" ]; 53 -> 81 [ label = "']' / set_id" ]; 53 -> err_53 [ label = "DEF / set_id, err_sdid, err_structureddata" ]; 54 -> 4 [ label = "SP / set_id" ]; 54 -> 55 [ label = "'!', '#'..'<', '>'..'\\', '^'..'~'" ]; 54 -> 81 [ label = "']' / set_id" ]; 54 -> err_54 [ label = "DEF / set_id, err_sdid, err_structureddata" ]; 55 -> 4 [ label = "SP / set_id" ]; 55 -> 56 [ label = "'!', '#'..'<', '>'..'\\', '^'..'~'" ]; 55 -> 81 [ label = "']' / set_id" ]; 55 -> err_55 [ label = "DEF / set_id, err_sdid, err_structureddata" ]; 56 -> 4 [ label = "SP / set_id" ]; 56 -> 57 [ label = "'!', '#'..'<', '>'..'\\', '^'..'~'" ]; 56 -> 81 [ label = "']' / set_id" ]; 56 -> err_56 [ label = "DEF / set_id, err_sdid, err_structureddata" ]; 57 -> 4 [ label = "SP / set_id" ]; 57 -> 58 [ label = "'!', '#'..'<', '>'..'\\', '^'..'~'" ]; 57 -> 81 [ label = "']' / set_id" ]; 57 -> err_57 [ label = "DEF / set_id, err_sdid, err_structureddata" ]; 58 -> 4 [ label = "SP / set_id" ]; 58 -> 59 [ label = "'!', '#'..'<', '>'..'\\', '^'..'~'" ]; 58 -> 81 [ label = "']' / set_id" ]; 58 -> err_58 [ label = "DEF / set_id, err_sdid, err_structureddata" ]; 59 -> 4 [ label = "SP / set_id" ]; 59 -> 60 [ label = "'!', '#'..'<', '>'..'\\', '^'..'~'" ]; 59 -> 81 [ label = "']' / set_id" ]; 59 -> err_59 [ label = "DEF / set_id, err_sdid, err_structureddata" ]; 60 -> 4 [ label = "SP / set_id" ]; 60 -> 61 [ label = "'!', '#'..'<', '>'..'\\', '^'..'~'" ]; 60 -> 81 [ label = "']' / set_id" ]; 60 -> err_60 [ label = "DEF / set_id, err_sdid, err_structureddata" ]; 61 -> 4 [ label = "SP / set_id" ]; 61 -> 62 [ label = "'!', '#'..'<', '>'..'\\', '^'..'~'" ]; 61 -> 81 [ label = "']' / set_id" ]; 61 -> err_61 [ label = "DEF / set_id, err_sdid, err_structureddata" ]; 62 -> 4 [ label = "SP / set_id" ]; 62 -> 63 [ label = "'!', '#'..'<', '>'..'\\', '^'..'~'" ]; 62 -> 81 [ label = "']' / set_id" ]; 62 -> err_62 [ label = "DEF / set_id, err_sdid, err_structureddata" ]; 63 -> 4 [ label = "SP / set_id" ]; 63 -> 64 [ label = "'!', '#'..'<', '>'..'\\', '^'..'~'" ]; 63 -> 81 [ label = "']' / set_id" ]; 63 -> err_63 [ label = "DEF / set_id, err_sdid, err_structureddata" ]; 64 -> 4 [ label = "SP / set_id" ]; 64 -> 65 [ label = "'!', '#'..'<', '>'..'\\', '^'..'~'" ]; 64 -> 81 [ label = "']' / set_id" ]; 64 -> err_64 [ label = "DEF / set_id, err_sdid, err_structureddata" ]; 65 -> 4 [ label = "SP / set_id" ]; 65 -> 66 [ label = "'!', '#'..'<', '>'..'\\', '^'..'~'" ]; 65 -> 81 [ label = "']' / set_id" ]; 65 -> err_65 [ label = "DEF / set_id, err_sdid, err_structureddata" ]; 66 -> 4 [ label = "SP / set_id" ]; 66 -> 67 [ label = "'!', '#'..'<', '>'..'\\', '^'..'~'" ]; 66 -> 81 [ label = "']' / set_id" ]; 66 -> err_66 [ label = "DEF / set_id, err_sdid, err_structureddata" ]; 67 -> 4 [ label = "SP / set_id" ]; 67 -> 68 [ label = "'!', '#'..'<', '>'..'\\', '^'..'~'" ]; 67 -> 81 [ label = "']' / set_id" ]; 67 -> err_67 [ label = "DEF / set_id, err_sdid, err_structureddata" ]; 68 -> 4 [ label = "SP / set_id" ]; 68 -> 69 [ label = "'!', '#'..'<', '>'..'\\', '^'..'~'" ]; 68 -> 81 [ label = "']' / set_id" ]; 68 -> err_68 [ label = "DEF / set_id, err_sdid, err_structureddata" ]; 69 -> 4 [ label = "SP / set_id" ]; 69 -> 70 [ label = "'!', '#'..'<', '>'..'\\', '^'..'~'" ]; 69 -> 81 [ label = "']' / set_id" ]; 69 -> err_69 [ label = "DEF / set_id, err_sdid, err_structureddata" ]; 70 -> 4 [ label = "SP / set_id" ]; 70 -> 71 [ label = "'!', '#'..'<', '>'..'\\', '^'..'~'" ]; 70 -> 81 [ label = "']' / set_id" ]; 70 -> err_70 [ label = "DEF / set_id, err_sdid, err_structureddata" ]; 71 -> 4 [ label = "SP / set_id" ]; 71 -> 72 [ label = "'!', '#'..'<', '>'..'\\', '^'..'~'" ]; 71 -> 81 [ label = "']' / set_id" ]; 71 -> err_71 [ label = "DEF / set_id, err_sdid, err_structureddata" ]; 72 -> 4 [ label = "SP / set_id" ]; 72 -> 73 [ label = "'!', '#'..'<', '>'..'\\', '^'..'~'" ]; 72 -> 81 [ label = "']' / set_id" ]; 72 -> err_72 [ label = "DEF / set_id, err_sdid, err_structureddata" ]; 73 -> 4 [ label = "SP / set_id" ]; 73 -> 74 [ label = "'!', '#'..'<', '>'..'\\', '^'..'~'" ]; 73 -> 81 [ label = "']' / set_id" ]; 73 -> err_73 [ label = "DEF / set_id, err_sdid, err_structureddata" ]; 74 -> 4 [ label = "SP / set_id" ]; 74 -> 75 [ label = "'!', '#'..'<', '>'..'\\', '^'..'~'" ]; 74 -> 81 [ label = "']' / set_id" ]; 74 -> err_74 [ label = "DEF / set_id, err_sdid, err_structureddata" ]; 75 -> 4 [ label = "SP / set_id" ]; 75 -> 76 [ label = "'!', '#'..'<', '>'..'\\', '^'..'~'" ]; 75 -> 81 [ label = "']' / set_id" ]; 75 -> err_75 [ label = "DEF / set_id, err_sdid, err_structureddata" ]; 76 -> 4 [ label = "SP / set_id" ]; 76 -> 77 [ label = "'!', '#'..'<', '>'..'\\', '^'..'~'" ]; 76 -> 81 [ label = "']' / set_id" ]; 76 -> err_76 [ label = "DEF / set_id, err_sdid, err_structureddata" ]; 77 -> 4 [ label = "SP / set_id" ]; 77 -> 78 [ label = "'!', '#'..'<', '>'..'\\', '^'..'~'" ]; 77 -> 81 [ label = "']' / set_id" ]; 77 -> err_77 [ label = "DEF / set_id, err_sdid, err_structureddata" ]; 78 -> 4 [ label = "SP / set_id" ]; 78 -> 79 [ label = "'!', '#'..'<', '>'..'\\', '^'..'~'" ]; 78 -> 81 [ label = "']' / set_id" ]; 78 -> err_78 [ label = "DEF / set_id, err_sdid, err_structureddata" ]; 79 -> 4 [ label = "SP / set_id" ]; 79 -> 81 [ label = "']' / set_id" ]; 79 -> err_79 [ label = "DEF / set_id, err_sdid, err_structureddata" ]; 81 -> 2 [ label = "'['" ]; 81 -> err_81 [ label = "DEF / err_structureddata" ]; ENTRY -> 1 [ label = "IN" ]; 1 -> eof_1 [ label = "EOF / err_structureddata" ]; 2 -> eof_2 [ label = "EOF / err_sdid, err_structureddata" ]; 3 -> eof_3 [ label = "EOF / set_id, err_sdid, err_structureddata" ]; 4 -> eof_4 [ label = "EOF / err_sdparam, err_structureddata" ]; 5 -> eof_5 [ label = "EOF / err_sdparam, err_structureddata" ]; 6 -> eof_6 [ label = "EOF / err_sdparam, err_structureddata" ]; 7 -> eof_7 [ label = "EOF / err_sdparam, err_structureddata" ]; 8 -> eof_8 [ label = "EOF / err_sdparam, err_structureddata" ]; 9 -> eof_9 [ label = "EOF / err_sdparam, err_structureddata" ]; 10 -> eof_10 [ label = "EOF / err_sdparam, err_structureddata" ]; 11 -> eof_11 [ label = "EOF / err_sdparam, err_structureddata" ]; 12 -> eof_12 [ label = "EOF / err_sdparam, err_structureddata" ]; 13 -> eof_13 [ label = "EOF / err_sdparam, err_structureddata" ]; 14 -> eof_14 [ label = "EOF / err_sdparam, err_structureddata" ]; 15 -> eof_15 [ label = "EOF / err_sdparam, err_structureddata" ]; 16 -> eof_16 [ label = "EOF / err_sdparam, err_structureddata" ]; 17 -> eof_17 [ label = "EOF / err_sdparam, err_structureddata" ]; 18 -> eof_18 [ label = "EOF / err_sdparam, err_structureddata" ]; 19 -> eof_19 [ label = "EOF / err_sdparam, err_structureddata" ]; 20 -> eof_20 [ label = "EOF / err_sdparam, err_structureddata" ]; 21 -> eof_21 [ label = "EOF / err_sdparam, err_structureddata" ]; 22 -> eof_22 [ label = "EOF / err_sdparam, err_structureddata" ]; 23 -> eof_23 [ label = "EOF / err_sdparam, err_structureddata" ]; 24 -> eof_24 [ label = "EOF / err_sdparam, err_structureddata" ]; 25 -> eof_25 [ label = "EOF / err_sdparam, err_structureddata" ]; 26 -> eof_26 [ label = "EOF / err_sdparam, err_structureddata" ]; 27 -> eof_27 [ label = "EOF / err_sdparam, err_structureddata" ]; 28 -> eof_28 [ label = "EOF / err_sdparam, err_structureddata" ]; 29 -> eof_29 [ label = "EOF / err_sdparam, err_structureddata" ]; 30 -> eof_30 [ label = "EOF / err_sdparam, err_structureddata" ]; 31 -> eof_31 [ label = "EOF / err_sdparam, err_structureddata" ]; 32 -> eof_32 [ label = "EOF / err_sdparam, err_structureddata" ]; 33 -> eof_33 [ label = "EOF / err_sdparam, err_structureddata" ]; 34 -> eof_34 [ label = "EOF / err_sdparam, err_structureddata" ]; 35 -> eof_35 [ label = "EOF / err_sdparam, err_structureddata" ]; 36 -> eof_36 [ label = "EOF / err_sdparam, err_structureddata" ]; 37 -> eof_37 [ label = "EOF / err_sdparam, err_structureddata" ]; 38 -> eof_38 [ label = "EOF / err_escape, err_sdparam, err_structureddata" ]; 39 -> eof_39 [ label = "EOF / err_escape, err_sdparam, err_structureddata" ]; 40 -> eof_40 [ label = "EOF / err_sdparam, err_structureddata" ]; 41 -> eof_41 [ label = "EOF / err_escape, err_sdparam, err_structureddata" ]; 42 -> eof_42 [ label = "EOF / err_sdparam, err_structureddata" ]; 43 -> eof_43 [ label = "EOF / err_sdparam, err_structureddata" ]; 44 -> eof_44 [ label = "EOF / err_sdparam, err_structureddata" ]; 45 -> eof_45 [ label = "EOF / err_sdparam, err_structureddata" ]; 46 -> eof_46 [ label = "EOF / err_sdparam, err_structureddata" ]; 47 -> eof_47 [ label = "EOF / err_sdparam, err_structureddata" ]; 48 -> eof_48 [ label = "EOF / err_sdparam, err_structureddata" ]; 49 -> eof_49 [ label = "EOF / set_id, err_sdid, err_structureddata" ]; 50 -> eof_50 [ label = "EOF / set_id, err_sdid, err_structureddata" ]; 51 -> eof_51 [ label = "EOF / set_id, err_sdid, err_structureddata" ]; 52 -> eof_52 [ label = "EOF / set_id, err_sdid, err_structureddata" ]; 53 -> eof_53 [ label = "EOF / set_id, err_sdid, err_structureddata" ]; 54 -> eof_54 [ label = "EOF / set_id, err_sdid, err_structureddata" ]; 55 -> eof_55 [ label = "EOF / set_id, err_sdid, err_structureddata" ]; 56 -> eof_56 [ label = "EOF / set_id, err_sdid, err_structureddata" ]; 57 -> eof_57 [ label = "EOF / set_id, err_sdid, err_structureddata" ]; 58 -> eof_58 [ label = "EOF / set_id, err_sdid, err_structureddata" ]; 59 -> eof_59 [ label = "EOF / set_id, err_sdid, err_structureddata" ]; 60 -> eof_60 [ label = "EOF / set_id, err_sdid, err_structureddata" ]; 61 -> eof_61 [ label = "EOF / set_id, err_sdid, err_structureddata" ]; 62 -> eof_62 [ label = "EOF / set_id, err_sdid, err_structureddata" ]; 63 -> eof_63 [ label = "EOF / set_id, err_sdid, err_structureddata" ]; 64 -> eof_64 [ label = "EOF / set_id, err_sdid, err_structureddata" ]; 65 -> eof_65 [ label = "EOF / set_id, err_sdid, err_structureddata" ]; 66 -> eof_66 [ label = "EOF / set_id, err_sdid, err_structureddata" ]; 67 -> eof_67 [ label = "EOF / set_id, err_sdid, err_structureddata" ]; 68 -> eof_68 [ label = "EOF / set_id, err_sdid, err_structureddata" ]; 69 -> eof_69 [ label = "EOF / set_id, err_sdid, err_structureddata" ]; 70 -> eof_70 [ label = "EOF / set_id, err_sdid, err_structureddata" ]; 71 -> eof_71 [ label = "EOF / set_id, err_sdid, err_structureddata" ]; 72 -> eof_72 [ label = "EOF / set_id, err_sdid, err_structureddata" ]; 73 -> eof_73 [ label = "EOF / set_id, err_sdid, err_structureddata" ]; 74 -> eof_74 [ label = "EOF / set_id, err_sdid, err_structureddata" ]; 75 -> eof_75 [ label = "EOF / set_id, err_sdid, err_structureddata" ]; 76 -> eof_76 [ label = "EOF / set_id, err_sdid, err_structureddata" ]; 77 -> eof_77 [ label = "EOF / set_id, err_sdid, err_structureddata" ]; 78 -> eof_78 [ label = "EOF / set_id, err_sdid, err_structureddata" ]; 79 -> eof_79 [ label = "EOF / set_id, err_sdid, err_structureddata" ]; } go-syslog-2.0.0/docs/rfc5424_timestamp.dot000066400000000000000000000152571340614351500202640ustar00rootroot00000000000000digraph rfc5424 { rankdir=LR; node [ shape = point ]; ENTRY; eof_1; eof_2; eof_3; eof_4; eof_5; eof_6; eof_7; eof_8; eof_9; eof_10; eof_11; eof_12; eof_13; eof_14; eof_15; eof_16; eof_17; eof_18; eof_19; eof_20; eof_21; eof_22; eof_23; eof_24; eof_25; eof_26; eof_27; eof_28; eof_29; eof_30; eof_31; eof_32; eof_33; eof_34; eof_35; eof_36; eof_37; eof_39; node [ shape = circle, height = 0.2 ]; err_1 [ label=""]; err_2 [ label=""]; err_3 [ label=""]; err_4 [ label=""]; err_5 [ label=""]; err_6 [ label=""]; err_7 [ label=""]; err_8 [ label=""]; err_9 [ label=""]; err_10 [ label=""]; err_11 [ label=""]; err_12 [ label=""]; err_13 [ label=""]; err_14 [ label=""]; err_15 [ label=""]; err_16 [ label=""]; err_17 [ label=""]; err_18 [ label=""]; err_19 [ label=""]; err_20 [ label=""]; err_21 [ label=""]; err_22 [ label=""]; err_23 [ label=""]; err_24 [ label=""]; err_25 [ label=""]; err_26 [ label=""]; err_27 [ label=""]; err_28 [ label=""]; err_29 [ label=""]; err_30 [ label=""]; err_31 [ label=""]; err_32 [ label=""]; err_33 [ label=""]; err_34 [ label=""]; err_35 [ label=""]; err_36 [ label=""]; err_37 [ label=""]; err_39 [ label=""]; node [ fixedsize = true, height = 0.65, shape = doublecircle ]; 38; 39; node [ shape = circle ]; 1 -> 38 [ label = "'-'" ]; 1 -> 2 [ label = "'0'..'9' / mark" ]; 1 -> err_1 [ label = "DEF / err_timestamp" ]; 2 -> 3 [ label = "'0'..'9'" ]; 2 -> err_2 [ label = "DEF / err_timestamp" ]; 3 -> 4 [ label = "'0'..'9'" ]; 3 -> err_3 [ label = "DEF / err_timestamp" ]; 4 -> 5 [ label = "'0'..'9'" ]; 4 -> err_4 [ label = "DEF / err_timestamp" ]; 5 -> 6 [ label = "'-'" ]; 5 -> err_5 [ label = "DEF / err_timestamp" ]; 6 -> 7 [ label = "'0'" ]; 6 -> 37 [ label = "'1'" ]; 6 -> err_6 [ label = "DEF / err_timestamp" ]; 7 -> 8 [ label = "'1'..'9'" ]; 7 -> err_7 [ label = "DEF / err_timestamp" ]; 8 -> 9 [ label = "'-'" ]; 8 -> err_8 [ label = "DEF / err_timestamp" ]; 9 -> 10 [ label = "'0'" ]; 9 -> 35 [ label = "'1'..'2'" ]; 9 -> 36 [ label = "'3'" ]; 9 -> err_9 [ label = "DEF / err_timestamp" ]; 10 -> 11 [ label = "'1'..'9'" ]; 10 -> err_10 [ label = "DEF / err_timestamp" ]; 11 -> 12 [ label = "'T'" ]; 11 -> err_11 [ label = "DEF / err_timestamp" ]; 12 -> 13 [ label = "'0'..'1'" ]; 12 -> 34 [ label = "'2'" ]; 12 -> err_12 [ label = "DEF / err_timestamp" ]; 13 -> 14 [ label = "'0'..'9'" ]; 13 -> err_13 [ label = "DEF / err_timestamp" ]; 14 -> 15 [ label = "':'" ]; 14 -> err_14 [ label = "DEF / err_timestamp" ]; 15 -> 16 [ label = "'0'..'5'" ]; 15 -> err_15 [ label = "DEF / err_timestamp" ]; 16 -> 17 [ label = "'0'..'9'" ]; 16 -> err_16 [ label = "DEF / err_timestamp" ]; 17 -> 18 [ label = "':'" ]; 17 -> err_17 [ label = "DEF / err_timestamp" ]; 18 -> 19 [ label = "'0'..'5'" ]; 18 -> err_18 [ label = "DEF / err_timestamp" ]; 19 -> 20 [ label = "'0'..'9'" ]; 19 -> err_19 [ label = "DEF / err_timestamp" ]; 20 -> 21 [ label = "'+', '-'" ]; 20 -> 27 [ label = "'.'" ]; 20 -> 39 [ label = "'Z'" ]; 20 -> err_20 [ label = "DEF / err_timestamp" ]; 21 -> 22 [ label = "'0'..'1'" ]; 21 -> 26 [ label = "'2'" ]; 21 -> err_21 [ label = "DEF / err_timestamp" ]; 22 -> 23 [ label = "'0'..'9'" ]; 22 -> err_22 [ label = "DEF / err_timestamp" ]; 23 -> 24 [ label = "':'" ]; 23 -> err_23 [ label = "DEF / err_timestamp" ]; 24 -> 25 [ label = "'0'..'5'" ]; 24 -> err_24 [ label = "DEF / err_timestamp" ]; 25 -> 39 [ label = "'0'..'9'" ]; 25 -> err_25 [ label = "DEF / err_timestamp" ]; 26 -> 23 [ label = "'0'..'3'" ]; 26 -> err_26 [ label = "DEF / err_timestamp" ]; 27 -> 28 [ label = "'0'..'9'" ]; 27 -> err_27 [ label = "DEF / err_timestamp" ]; 28 -> 21 [ label = "'+', '-'" ]; 28 -> 29 [ label = "'0'..'9'" ]; 28 -> 39 [ label = "'Z'" ]; 28 -> err_28 [ label = "DEF / err_timestamp" ]; 29 -> 21 [ label = "'+', '-'" ]; 29 -> 30 [ label = "'0'..'9'" ]; 29 -> 39 [ label = "'Z'" ]; 29 -> err_29 [ label = "DEF / err_timestamp" ]; 30 -> 21 [ label = "'+', '-'" ]; 30 -> 31 [ label = "'0'..'9'" ]; 30 -> 39 [ label = "'Z'" ]; 30 -> err_30 [ label = "DEF / err_timestamp" ]; 31 -> 21 [ label = "'+', '-'" ]; 31 -> 32 [ label = "'0'..'9'" ]; 31 -> 39 [ label = "'Z'" ]; 31 -> err_31 [ label = "DEF / err_timestamp" ]; 32 -> 21 [ label = "'+', '-'" ]; 32 -> 33 [ label = "'0'..'9'" ]; 32 -> 39 [ label = "'Z'" ]; 32 -> err_32 [ label = "DEF / err_timestamp" ]; 33 -> 21 [ label = "'+', '-'" ]; 33 -> 39 [ label = "'Z'" ]; 33 -> err_33 [ label = "DEF / err_timestamp" ]; 34 -> 14 [ label = "'0'..'3'" ]; 34 -> err_34 [ label = "DEF / err_timestamp" ]; 35 -> 11 [ label = "'0'..'9'" ]; 35 -> err_35 [ label = "DEF / err_timestamp" ]; 36 -> 11 [ label = "'0'..'1'" ]; 36 -> err_36 [ label = "DEF / err_timestamp" ]; 37 -> 8 [ label = "'0'..'2'" ]; 37 -> err_37 [ label = "DEF / err_timestamp" ]; 39 -> err_39 [ label = "DEF / set_timestamp" ]; ENTRY -> 1 [ label = "IN" ]; 1 -> eof_1 [ label = "EOF / err_timestamp" ]; 2 -> eof_2 [ label = "EOF / err_timestamp" ]; 3 -> eof_3 [ label = "EOF / err_timestamp" ]; 4 -> eof_4 [ label = "EOF / err_timestamp" ]; 5 -> eof_5 [ label = "EOF / err_timestamp" ]; 6 -> eof_6 [ label = "EOF / err_timestamp" ]; 7 -> eof_7 [ label = "EOF / err_timestamp" ]; 8 -> eof_8 [ label = "EOF / err_timestamp" ]; 9 -> eof_9 [ label = "EOF / err_timestamp" ]; 10 -> eof_10 [ label = "EOF / err_timestamp" ]; 11 -> eof_11 [ label = "EOF / err_timestamp" ]; 12 -> eof_12 [ label = "EOF / err_timestamp" ]; 13 -> eof_13 [ label = "EOF / err_timestamp" ]; 14 -> eof_14 [ label = "EOF / err_timestamp" ]; 15 -> eof_15 [ label = "EOF / err_timestamp" ]; 16 -> eof_16 [ label = "EOF / err_timestamp" ]; 17 -> eof_17 [ label = "EOF / err_timestamp" ]; 18 -> eof_18 [ label = "EOF / err_timestamp" ]; 19 -> eof_19 [ label = "EOF / err_timestamp" ]; 20 -> eof_20 [ label = "EOF / err_timestamp" ]; 21 -> eof_21 [ label = "EOF / err_timestamp" ]; 22 -> eof_22 [ label = "EOF / err_timestamp" ]; 23 -> eof_23 [ label = "EOF / err_timestamp" ]; 24 -> eof_24 [ label = "EOF / err_timestamp" ]; 25 -> eof_25 [ label = "EOF / err_timestamp" ]; 26 -> eof_26 [ label = "EOF / err_timestamp" ]; 27 -> eof_27 [ label = "EOF / err_timestamp" ]; 28 -> eof_28 [ label = "EOF / err_timestamp" ]; 29 -> eof_29 [ label = "EOF / err_timestamp" ]; 30 -> eof_30 [ label = "EOF / err_timestamp" ]; 31 -> eof_31 [ label = "EOF / err_timestamp" ]; 32 -> eof_32 [ label = "EOF / err_timestamp" ]; 33 -> eof_33 [ label = "EOF / err_timestamp" ]; 34 -> eof_34 [ label = "EOF / err_timestamp" ]; 35 -> eof_35 [ label = "EOF / err_timestamp" ]; 36 -> eof_36 [ label = "EOF / err_timestamp" ]; 37 -> eof_37 [ label = "EOF / err_timestamp" ]; 39 -> eof_39 [ label = "EOF / set_timestamp" ]; } go-syslog-2.0.0/docs/rfc5424_version.dot000066400000000000000000000014431340614351500177360ustar00rootroot00000000000000digraph rfc5424 { rankdir=LR; node [ shape = point ]; ENTRY; eof_1; eof_2; eof_3; eof_4; node [ shape = circle, height = 0.2 ]; err_1 [ label=""]; err_3 [ label=""]; err_4 [ label=""]; node [ fixedsize = true, height = 0.65, shape = doublecircle ]; 2; 3; 4; node [ shape = circle ]; 1 -> 2 [ label = "'1'..'9' / mark" ]; 1 -> err_1 [ label = "DEF / err_version" ]; 2 -> 3 [ label = "'0'..'9' / set_version" ]; 3 -> 4 [ label = "'0'..'9' / set_version" ]; 3 -> err_3 [ label = "DEF / set_version, err_version" ]; 4 -> err_4 [ label = "DEF / set_version, err_version" ]; ENTRY -> 1 [ label = "IN" ]; 1 -> eof_1 [ label = "EOF / err_version" ]; 2 -> eof_2 [ label = "EOF / set_version" ]; 3 -> eof_3 [ label = "EOF / set_version" ]; 4 -> eof_4 [ label = "EOF / set_version" ]; } go-syslog-2.0.0/go.mod000066400000000000000000000003641340614351500145470ustar00rootroot00000000000000module github.com/influxdata/go-syslog require ( github.com/davecgh/go-spew v1.1.1 github.com/leodido/ragel-machinery v0.0.0-20181214104525-299bdde78165 github.com/pmezard/go-difflib v1.0.0 // indirect github.com/stretchr/testify v1.2.2 ) go-syslog-2.0.0/go.sum000066400000000000000000000016431340614351500145750ustar00rootroot00000000000000github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/google/go-cmp v0.2.0 h1:+dTQ8DZQJz0Mb/HjFlkptS1FeQ4cWSnN941F8aEG4SQ= github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= github.com/leodido/ragel-machinery v0.0.0-20181214104525-299bdde78165 h1:bCiVCRCs1Heq84lurVinUPy19keqGEe4jh5vtK37jcg= github.com/leodido/ragel-machinery v0.0.0-20181214104525-299bdde78165/go.mod h1:WZxr2/6a/Ar9bMDc2rN/LJrE/hF6bXE4LPyDSIxwAfg= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/stretchr/testify v1.2.2 h1:bSDNvY7ZPG5RlJ8otE/7V6gMiyenm9RtJ7IUVIAoJ1w= github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= go-syslog-2.0.0/makefile000066400000000000000000000057651340614351500151530ustar00rootroot00000000000000SHELL := /bin/bash export GO_TEST=env GOTRACEBACK=all GO111MODULE=on go test $(GO_ARGS) .PHONY: build build: rfc5424/machine.go rfc5424/builder.go nontransparent/parser.go @gofmt -w -s ./rfc5424 @gofmt -w -s ./octetcounting @gofmt -w -s ./nontransparent rfc5424/machine.go: rfc5424/machine.go.rl rfc5424/rfc5424.rl rfc5424/builder.go: rfc5424/builder.go.rl rfc5424/rfc5424.rl rfc5424/builder.go rfc5424/machine.go: ragel -Z -G2 -e -o $@ $< @sed -i '/^\/\/line/d' $@ $(MAKE) file=$@ snake2camel nontransparent/parser.go: nontransparent/parser.go.rl ragel -Z -G2 -e -o $@ $< @sed -i '/^\/\/line/d' $@ $(MAKE) file=$@ snake2camel .PHONY: snake2camel snake2camel: @awk -i inplace '{ \ while ( match($$0, /(.*)([a-z]+[0-9]*)_([a-zA-Z0-9])(.*)/, cap) ) \ $$0 = cap[1] cap[2] toupper(cap[3]) cap[4]; \ print \ }' $(file) .PHONY: bench bench: rfc5424/*_test.go rfc5424/machine.go go test -bench=. -benchmem -benchtime=5s ./... .PHONY: tests tests: $(GO_TEST) ./... docs/nontransparent.dot: nontransparent/parser.go.rl ragel -Z -Vp $< -o $@ docs/rfc5424.dot: rfc5424/machine.go.rl rfc5424/rfc5424.rl ragel -Z -Vp $< -o $@ docs/rfc5424_pri.dot: rfc5424/machine.go.rl rfc5424/rfc5424.rl ragel -Z -Vp -M pri $< -o $@ docs/rfc5424_pri.png: docs/rfc5424_pri.dot dot $< -Tpng -o $@ docs/rfc5424_version.dot: rfc5424/machine.go.rl rfc5424/rfc5424.rl ragel -Z -Vp -M version $< -o $@ docs/rfc5424_version.png: docs/rfc5424_version.dot dot $< -Tpng -o $@ docs/rfc5424_timestamp.dot: rfc5424/machine.go.rl rfc5424/rfc5424.rl ragel -Z -Vp -M timestamp $< -o $@ docs/rfc5424_timestamp.png: docs/rfc5424_timestamp.dot dot $< -Tpng -o $@ docs/rfc5424_hostname.dot: rfc5424/machine.go.rl rfc5424/rfc5424.rl ragel -Z -Vp -M hostname $< -o $@ docs/rfc5424_hostname.png: docs/rfc5424_hostname.dot dot $< -Tpng -o $@ docs/rfc5424_appname.dot: rfc5424/machine.go.rl rfc5424/rfc5424.rl ragel -Z -Vp -M appname $< -o $@ docs/rfc5424_appname.png: docs/rfc5424_appname.dot dot $< -Tpng -o $@ docs/rfc5424_procid.dot: rfc5424/machine.go.rl rfc5424/rfc5424.rl ragel -Z -Vp -M procid $< -o $@ docs/rfc5424_procid.png: docs/rfc5424_procid.dot dot $< -Tpng -o $@ docs/rfc5424_msgid.dot: rfc5424/machine.go.rl rfc5424/rfc5424.rl ragel -Z -Vp -M msgid $< -o $@ docs/rfc5424_msgid.png: docs/rfc5424_msgid.dot dot $< -Tpng -o $@ docs/rfc5424_structureddata.dot: rfc5424/machine.go.rl rfc5424/rfc5424.rl ragel -Z -Vp -M structureddata $< -o $@ docs/rfc5424_structureddata.png: docs/rfc5424_structureddata.dot dot $< -Tpng -o $@ docs/rfc5424_msg.dot: rfc5424/machine.go.rl rfc5424/rfc5424.rl ragel -Z -Vp -M msg $< -o $@ docs/rfc5424_msg.png: docs/rfc5424_msg.dot dot $< -Tpng -o $@ docs: @mkdir -p docs .PHONY: graph graph: docs docs/rfc5424.dot docs/rfc5424_pri.png docs/rfc5424_version.png docs/rfc5424_timestamp.png docs/rfc5424_hostname.png docs/rfc5424_appname.png docs/rfc5424_procid.png docs/rfc5424_msgid.png docs/rfc5424_structureddata.png docs/rfc5424_msg.png .PHONY: clean clean: rfc5424/machine.go @rm -f $? @rm -rf docs go-syslog-2.0.0/nontransparent/000077500000000000000000000000001340614351500165125ustar00rootroot00000000000000go-syslog-2.0.0/nontransparent/example_test.go000066400000000000000000000154001340614351500215330ustar00rootroot00000000000000package nontransparent import ( "github.com/davecgh/go-spew/spew" "io" "math/rand" "strings" "github.com/influxdata/go-syslog" "time" ) func Example_withoutTrailerAtEnd() { results := []syslog.Result{} acc := func(res *syslog.Result) { results = append(results, *res) } // Notice the message ends without trailer but we catch it anyway r := strings.NewReader("<1>1 2003-10-11T22:14:15.003Z host.local - - - - mex") NewParser(syslog.WithListener(acc)).Parse(r) output(results) // Output: // ([]syslog.Result) (len=1) { // (syslog.Result) { // Message: (*rfc5424.SyslogMessage)({ // priority: (*uint8)(1), // facility: (*uint8)(0), // severity: (*uint8)(1), // version: (uint16) 1, // timestamp: (*time.Time)(2003-10-11 22:14:15.003 +0000 UTC), // hostname: (*string)((len=10) "host.local"), // appname: (*string)(), // procID: (*string)(), // msgID: (*string)(), // structuredData: (*map[string]map[string]string)(), // message: (*string)((len=3) "mex") // }), // Error: (*ragel.ReadingError)(unexpected EOF) // } // } } func Example_bestEffortOnLastOne() { results := []syslog.Result{} acc := func(res *syslog.Result) { results = append(results, *res) } r := strings.NewReader("<1>1 - - - - - - -\n<3>1\n") NewParser(syslog.WithBestEffort(), syslog.WithListener(acc)).Parse(r) output(results) // Output: // ([]syslog.Result) (len=2) { // (syslog.Result) { // Message: (*rfc5424.SyslogMessage)({ // priority: (*uint8)(1), // facility: (*uint8)(0), // severity: (*uint8)(1), // version: (uint16) 1, // timestamp: (*time.Time)(), // hostname: (*string)(), // appname: (*string)(), // procID: (*string)(), // msgID: (*string)(), // structuredData: (*map[string]map[string]string)(), // message: (*string)((len=1) "-") // }), // Error: (error) // }, // (syslog.Result) { // Message: (*rfc5424.SyslogMessage)({ // priority: (*uint8)(3), // facility: (*uint8)(0), // severity: (*uint8)(3), // version: (uint16) 1, // timestamp: (*time.Time)(), // hostname: (*string)(), // appname: (*string)(), // procID: (*string)(), // msgID: (*string)(), // structuredData: (*map[string]map[string]string)(), // message: (*string)() // }), // Error: (*errors.errorString)(parsing error [col 4]) // } // } } func Example_intoChannelWithLF() { messages := []string{ "<2>1 - - - - - - A\nB", "<1>1 -", "<1>1 - - - - - - A\nB\nC\nD", } r, w := io.Pipe() go func() { defer w.Close() for _, m := range messages { // Write message (containing trailers to be interpreted as part of the syslog MESSAGE) w.Write([]byte(m)) // Write non-transparent frame boundary w.Write([]byte{10}) // Wait a random amount of time time.Sleep(time.Millisecond * time.Duration(rand.Intn(100))) } }() results := make(chan *syslog.Result) ln := func(x *syslog.Result) { // Emit the result results <- x } p := NewParser(syslog.WithListener(ln), syslog.WithBestEffort()) go func() { defer close(results) defer r.Close() p.Parse(r) }() // Consume results for r := range results { output(r) } // Output: // (*syslog.Result)({ // Message: (*rfc5424.SyslogMessage)({ // priority: (*uint8)(2), // facility: (*uint8)(0), // severity: (*uint8)(2), // version: (uint16) 1, // timestamp: (*time.Time)(), // hostname: (*string)(), // appname: (*string)(), // procID: (*string)(), // msgID: (*string)(), // structuredData: (*map[string]map[string]string)(), // message: (*string)((len=3) "A\nB") // }), // Error: (error) // }) // (*syslog.Result)({ // Message: (*rfc5424.SyslogMessage)({ // priority: (*uint8)(1), // facility: (*uint8)(0), // severity: (*uint8)(1), // version: (uint16) 1, // timestamp: (*time.Time)(), // hostname: (*string)(), // appname: (*string)(), // procID: (*string)(), // msgID: (*string)(), // structuredData: (*map[string]map[string]string)(), // message: (*string)() // }), // Error: (*errors.errorString)(parsing error [col 6]) // }) // (*syslog.Result)({ // Message: (*rfc5424.SyslogMessage)({ // priority: (*uint8)(1), // facility: (*uint8)(0), // severity: (*uint8)(1), // version: (uint16) 1, // timestamp: (*time.Time)(), // hostname: (*string)(), // appname: (*string)(), // procID: (*string)(), // msgID: (*string)(), // structuredData: (*map[string]map[string]string)(), // message: (*string)((len=7) "A\nB\nC\nD") // }), // Error: (error) // }) } func Example_intoChannelWithNUL() { messages := []string{ "<2>1 - - - - - - A\x00B", "<1>1 -", "<1>1 - - - - - - A\x00B\x00C\x00D", } r, w := io.Pipe() go func() { defer w.Close() for _, m := range messages { // Write message (containing trailers to be interpreted as part of the syslog MESSAGE) w.Write([]byte(m)) // Write non-transparent frame boundary w.Write([]byte{0}) // Wait a random amount of time time.Sleep(time.Millisecond * time.Duration(rand.Intn(100))) } }() results := make(chan *syslog.Result) ln := func(x *syslog.Result) { // Emit the result results <- x } p := NewParser(syslog.WithListener(ln), WithTrailer(NUL)) go func() { defer close(results) defer r.Close() p.Parse(r) }() // Range over the results channel for r := range results { output(r) } // Output: //(*syslog.Result)({ // Message: (*rfc5424.SyslogMessage)({ // priority: (*uint8)(2), // facility: (*uint8)(0), // severity: (*uint8)(2), // version: (uint16) 1, // timestamp: (*time.Time)(), // hostname: (*string)(), // appname: (*string)(), // procID: (*string)(), // msgID: (*string)(), // structuredData: (*map[string]map[string]string)(), // message: (*string)((len=3) "A\x00B") // }), // Error: (error) // }) // (*syslog.Result)({ // Message: (syslog.Message) , // Error: (*errors.errorString)(parsing error [col 6]) // }) // (*syslog.Result)({ // Message: (*rfc5424.SyslogMessage)({ // priority: (*uint8)(1), // facility: (*uint8)(0), // severity: (*uint8)(1), // version: (uint16) 1, // timestamp: (*time.Time)(), // hostname: (*string)(), // appname: (*string)(), // procID: (*string)(), // msgID: (*string)(), // structuredData: (*map[string]map[string]string)(), // message: (*string)((len=7) "A\x00B\x00C\x00D") // }), // Error: (error) // }) } func output(out interface{}) { spew.Config.DisableCapacities = true spew.Config.DisablePointerAddresses = true spew.Dump(out) } go-syslog-2.0.0/nontransparent/parser.go000066400000000000000000000117221340614351500203400ustar00rootroot00000000000000package nontransparent import ( syslog "github.com/influxdata/go-syslog" "github.com/influxdata/go-syslog/rfc5424" parser "github.com/leodido/ragel-machinery/parser" "io" ) const nontransparentStart int = 1 const nontransparentError int = 0 const nontransparentEnMain int = 1 type machine struct { trailertyp TrailerType // default is 0 thus TrailerType(LF) trailer byte candidate []byte bestEffort bool internal syslog.Machine emit syslog.ParserListener readError error lastChunk []byte // store last candidate message also if it does not ends with a trailer } // Exec implements the ragel.Parser interface. func (m *machine) Exec(s *parser.State) (int, int) { // Retrieve previously stored parsing variables cs, p, pe, eof, data := s.Get() { var _widec int16 if p == pe { goto _testEof } switch cs { case 1: goto stCase1 case 0: goto stCase0 case 2: goto stCase2 case 3: goto stCase3 } goto stOut stCase1: if data[p] == 60 { goto tr0 } goto st0 stCase0: st0: cs = 0 goto _out tr0: if len(m.candidate) > 0 { m.process() } m.candidate = make([]byte, 0) goto st2 st2: if p++; p == pe { goto _testEof2 } stCase2: _widec = int16(data[p]) switch { case data[p] > 0: if 10 <= data[p] && data[p] <= 10 { _widec = 256 + (int16(data[p]) - 0) if m.trailertyp == LF { _widec += 256 } } default: _widec = 768 + (int16(data[p]) - 0) if m.trailertyp == NUL { _widec += 256 } } switch _widec { case 266: goto st2 case 522: goto tr3 case 768: goto st2 case 1024: goto tr3 } switch { case _widec > 9: if 11 <= _widec { goto st2 } case _widec >= 1: goto st2 } goto st0 tr3: m.candidate = append(m.candidate, data...) goto st3 st3: if p++; p == pe { goto _testEof3 } stCase3: _widec = int16(data[p]) switch { case data[p] > 0: if 10 <= data[p] && data[p] <= 10 { _widec = 256 + (int16(data[p]) - 0) if m.trailertyp == LF { _widec += 256 } } default: _widec = 768 + (int16(data[p]) - 0) if m.trailertyp == NUL { _widec += 256 } } switch _widec { case 60: goto tr0 case 266: goto st2 case 522: goto tr3 case 768: goto st2 case 1024: goto tr3 } switch { case _widec > 9: if 11 <= _widec { goto st2 } case _widec >= 1: goto st2 } goto st0 stOut: _testEof2: cs = 2 goto _testEof _testEof3: cs = 3 goto _testEof _testEof: { } _out: { } } // Update parsing variables s.Set(cs, p, pe, eof) return p, pe } func (m *machine) OnErr(chunk []byte, err error) { // Store the last chunk of bytes ending without a trailer - ie., unexpected EOF from the reader m.lastChunk = chunk m.readError = err } func (m *machine) OnEOF(chunk []byte) { } func (m *machine) OnCompletion() { if len(m.candidate) > 0 { m.process() } // Try to parse last chunk as a candidate if m.readError != nil && len(m.lastChunk) > 0 { res, err := m.internal.Parse(m.lastChunk) if err == nil { err = m.readError } m.emit(&syslog.Result{ Message: res, Error: err, }) } } // NewParser returns a syslog.Parser suitable to parse syslog messages sent with non-transparent framing - ie. RFC 6587. func NewParser(options ...syslog.ParserOption) syslog.Parser { m := &machine{ emit: func(*syslog.Result) { /* noop */ }, } for _, opt := range options { m = opt(m).(*machine) } // No error can happens since during its setting we check the trailer type passed in trailer, _ := m.trailertyp.Value() m.trailer = byte(trailer) // Create internal parser depending on options if m.bestEffort { m.internal = rfc5424.NewMachine(rfc5424.WithBestEffort()) } else { m.internal = rfc5424.NewMachine() } return m } // HasBestEffort tells whether the receiving parser has best effort mode on or off. func (m *machine) HasBestEffort() bool { return m.bestEffort } // WithTrailer ... todo(leodido) func WithTrailer(t TrailerType) syslog.ParserOption { return func(m syslog.Parser) syslog.Parser { if val, err := t.Value(); err == nil { m.(*machine).trailer = byte(val) m.(*machine).trailertyp = t } return m } } // WithBestEffort implements the syslog.BestEfforter interface. // // The generic options uses it. func (m *machine) WithBestEffort() { m.bestEffort = true } // WithListener implements the syslog.Parser interface. // // The generic options uses it. func (m *machine) WithListener(f syslog.ParserListener) { m.emit = f } // Parse parses the io.Reader incoming bytes. // // It stops parsing when an error regarding RFC 6587 is found. func (m *machine) Parse(reader io.Reader) { r := parser.ArbitraryReader(reader, m.trailer) parser.New(r, m, parser.WithStart(1)).Parse() } func (m *machine) process() { lastByte := len(m.candidate) - 1 if m.candidate[lastByte] == m.trailer { m.candidate = m.candidate[:lastByte] } res, err := m.internal.Parse(m.candidate) m.emit(&syslog.Result{ Message: res, Error: err, }) } go-syslog-2.0.0/nontransparent/parser.go.rl000066400000000000000000000076661340614351500207700ustar00rootroot00000000000000package nontransparent import ( "io" parser "github.com/leodido/ragel-machinery/parser" syslog "github.com/influxdata/go-syslog" "github.com/influxdata/go-syslog/rfc5424" ) %%{ machine nontransparent; # unsigned alphabet alphtype uint8; action on_trailer { m.candidate = append(m.candidate, data...) } action on_init { if len(m.candidate) > 0 { m.process() } m.candidate = make([]byte, 0) } t = 10 when { m.trailertyp == LF } | 00 when { m.trailertyp == NUL }; main := start: ( '<' >on_init (any)* -> trailer ), trailer: ( t >on_trailer -> final | t >on_trailer -> start ); }%% %% write data nofinal; type machine struct{ trailertyp TrailerType // default is 0 thus TrailerType(LF) trailer byte candidate []byte bestEffort bool internal syslog.Machine emit syslog.ParserListener readError error lastChunk []byte // store last candidate message also if it does not ends with a trailer } // Exec implements the ragel.Parser interface. func (m *machine) Exec(s *parser.State) (int, int) { // Retrieve previously stored parsing variables cs, p, pe, eof, data := s.Get() %% write exec; // Update parsing variables s.Set(cs, p, pe, eof) return p, pe } func (m *machine) OnErr(chunk []byte, err error) { // Store the last chunk of bytes ending without a trailer - ie., unexpected EOF from the reader m.lastChunk = chunk m.readError = err } func (m *machine) OnEOF(chunk []byte) { } func (m *machine) OnCompletion() { if len(m.candidate) > 0 { m.process() } // Try to parse last chunk as a candidate if m.readError != nil && len(m.lastChunk) > 0 { res, err := m.internal.Parse(m.lastChunk) if err == nil { err = m.readError } m.emit(&syslog.Result{ Message: res, Error: err, }) } } // NewParser returns a syslog.Parser suitable to parse syslog messages sent with non-transparent framing - ie. RFC 6587. func NewParser(options ...syslog.ParserOption) syslog.Parser { m := &machine{ emit: func(*syslog.Result) { /* noop */ }, } for _, opt := range options { m = opt(m).(*machine) } // No error can happens since during its setting we check the trailer type passed in trailer, _ := m.trailertyp.Value() m.trailer = byte(trailer) // Create internal parser depending on options if m.bestEffort { m.internal = rfc5424.NewMachine(rfc5424.WithBestEffort()) } else { m.internal = rfc5424.NewMachine() } return m } // HasBestEffort tells whether the receiving parser has best effort mode on or off. func (m *machine) HasBestEffort() bool { return m.bestEffort } // WithTrailer ... todo(leodido) func WithTrailer(t TrailerType) syslog.ParserOption { return func(m syslog.Parser) syslog.Parser { if val, err := t.Value(); err == nil { m.(*machine).trailer = byte(val) m.(*machine).trailertyp = t } return m } } // WithBestEffort implements the syslog.BestEfforter interface. // // The generic options uses it. func (m *machine) WithBestEffort() { m.bestEffort = true } // WithListener implements the syslog.Parser interface. // // The generic options uses it. func (m *machine) WithListener(f syslog.ParserListener) { m.emit = f } // Parse parses the io.Reader incoming bytes. // // It stops parsing when an error regarding RFC 6587 is found. func (m *machine) Parse(reader io.Reader) { r := parser.ArbitraryReader(reader, m.trailer) parser.New(r, m, parser.WithStart(%%{ write start; }%%)).Parse() } func (m *machine) process() { lastByte := len(m.candidate) - 1 if m.candidate[lastByte] == m.trailer { m.candidate = m.candidate[:lastByte] } res, err := m.internal.Parse(m.candidate) m.emit(&syslog.Result{ Message: res, Error: err, }) }go-syslog-2.0.0/nontransparent/parser_test.go000066400000000000000000000120451340614351500213760ustar00rootroot00000000000000package nontransparent import ( "fmt" "io" "strings" "testing" "github.com/influxdata/go-syslog" "github.com/influxdata/go-syslog/rfc5424" "github.com/leodido/ragel-machinery" "github.com/stretchr/testify/assert" ) type testCase struct { descr string input string substitute bool results []syslog.Result pResults []syslog.Result } var testCases []testCase func getParsingError(col int) error { return fmt.Errorf("parsing error [col %d]", col) } func getTestCases() []testCase { return []testCase{ // fixme(leodido) // { // "empty", // "", // []syslog.Result{}, // []syslog.Result{}, // }, { "1st ok", "<1>1 - - - - - -%[1]s", true, []syslog.Result{ { Message: (&rfc5424.SyslogMessage{}).SetPriority(1).SetVersion(1), }, }, []syslog.Result{ { Message: (&rfc5424.SyslogMessage{}).SetPriority(1).SetVersion(1), }, }, }, { "1st ok//notrailer", "<3>1 - - - - - -", false, []syslog.Result{ { Message: (&rfc5424.SyslogMessage{}).SetPriority(3).SetVersion(1), Error: ragel.NewReadingError(io.ErrUnexpectedEOF.Error()), }, }, []syslog.Result{ { Message: (&rfc5424.SyslogMessage{}).SetPriority(3).SetVersion(1), Error: ragel.NewReadingError(io.ErrUnexpectedEOF.Error()), }, }, }, { "1st ok/2nd ok", "<1>1 - - - - - -%[1]s<2>1 - - - - - -%[1]s", true, []syslog.Result{ { Message: (&rfc5424.SyslogMessage{}).SetPriority(1).SetVersion(1), }, { Message: (&rfc5424.SyslogMessage{}).SetPriority(2).SetVersion(1), }, }, []syslog.Result{ { Message: (&rfc5424.SyslogMessage{}).SetPriority(1).SetVersion(1), }, { Message: (&rfc5424.SyslogMessage{}).SetPriority(2).SetVersion(1), }, }, }, { "1st ok/2nd ok//notrailer", "<1>1 - - - - - -%[1]s<2>1 - - - - - -", true, []syslog.Result{ { Message: (&rfc5424.SyslogMessage{}).SetPriority(1).SetVersion(1), }, { Message: (&rfc5424.SyslogMessage{}).SetPriority(2).SetVersion(1), Error: ragel.NewReadingError(io.ErrUnexpectedEOF.Error()), }, }, []syslog.Result{ { Message: (&rfc5424.SyslogMessage{}).SetPriority(1).SetVersion(1), }, { Message: (&rfc5424.SyslogMessage{}).SetPriority(2).SetVersion(1), Error: ragel.NewReadingError(io.ErrUnexpectedEOF.Error()), }, }, }, { "1st ok//incomplete/2nd ok//incomplete", "<1>1%[1]s<2>1%[1]s", true, []syslog.Result{ { Error: getParsingError(4), }, { Error: getParsingError(4), }, }, []syslog.Result{ { Message: (&rfc5424.SyslogMessage{}).SetPriority(1).SetVersion(1), Error: getParsingError(4), }, { Message: (&rfc5424.SyslogMessage{}).SetPriority(2).SetVersion(1), Error: getParsingError(4), }, }, }, // todo(leodido) // { // "1st ok//incomplete/2nd ok//incomplete", // "", // }, // { // "1st ok//incomplete/2nd ok//incomplete", // "", // }, // { // "1st ok//incomplete/2nd ok//incomplete", // "", // }, } } func init() { testCases = getTestCases() } func TestParse(t *testing.T) { for _, tc := range testCases { tc := tc // Test with trailer LF var inputWithLF = tc.input if tc.substitute { lf, _ := LF.Value() inputWithLF = fmt.Sprintf(tc.input, string(lf)) } t.Run(fmt.Sprintf("strict/LF/%s", tc.descr), func(t *testing.T) { t.Parallel() res := []syslog.Result{} strictParser := NewParser(syslog.WithListener(func(r *syslog.Result) { res = append(res, *r) })) strictParser.Parse(strings.NewReader(inputWithLF)) assert.Equal(t, tc.results, res) }) t.Run(fmt.Sprintf("effort/LF/%s", tc.descr), func(t *testing.T) { t.Parallel() res := []syslog.Result{} effortParser := NewParser(syslog.WithBestEffort(), syslog.WithListener(func(r *syslog.Result) { res = append(res, *r) })) effortParser.Parse(strings.NewReader(inputWithLF)) assert.Equal(t, tc.pResults, res) }) // Test with trailer NUL inputWithNUL := tc.input if tc.substitute { nul, _ := NUL.Value() inputWithNUL = fmt.Sprintf(tc.input, string(nul)) } t.Run(fmt.Sprintf("strict/NL/%s", tc.descr), func(t *testing.T) { t.Parallel() res := []syslog.Result{} strictParser := NewParser(syslog.WithListener(func(r *syslog.Result) { res = append(res, *r) }), WithTrailer(NUL)) strictParser.Parse(strings.NewReader(inputWithNUL)) assert.Equal(t, tc.results, res) }) t.Run(fmt.Sprintf("effort/NL/%s", tc.descr), func(t *testing.T) { t.Parallel() res := []syslog.Result{} effortParser := NewParser(syslog.WithBestEffort(), syslog.WithListener(func(r *syslog.Result) { res = append(res, *r) }), WithTrailer(NUL)) effortParser.Parse(strings.NewReader(inputWithNUL)) assert.Equal(t, tc.pResults, res) }) } } func TestParserBestEffortOption(t *testing.T) { p1 := NewParser().(syslog.BestEfforter) assert.False(t, p1.HasBestEffort()) p2 := NewParser(syslog.WithBestEffort()).(syslog.BestEfforter) assert.True(t, p2.HasBestEffort()) } go-syslog-2.0.0/nontransparent/trailer_type.go000066400000000000000000000030611340614351500215440ustar00rootroot00000000000000package nontransparent import ( "fmt" "strings" ) // TrailerType is the king of supported trailers for non-transparent frames. type TrailerType int const ( // LF is the line feed - ie., byte 10. Also the default one. LF TrailerType = iota // NUL is the nul byte - ie., byte 0. NUL ) var names = [...]string{"LF", "NUL"} var bytes = []int{10, 0} func (t TrailerType) String() string { if t < LF || t > NUL { return "" } return names[t] } // Value returns the byte corresponding to the receiving TrailerType. func (t TrailerType) Value() (int, error) { if t < LF || t > NUL { return -1, fmt.Errorf("unknown TrailerType") } return bytes[t], nil } // TrailerTypeFromString returns a TrailerType given a string. func TrailerTypeFromString(s string) (TrailerType, error) { switch strings.ToUpper(s) { case `"LF"`: fallthrough case `'LF'`: fallthrough case `LF`: return LF, nil case `"NUL"`: fallthrough case `'NUL'`: fallthrough case `NUL`: return NUL, nil } return -1, fmt.Errorf("unknown TrailerType") } // UnmarshalTOML decodes trailer type from TOML data. func (t *TrailerType) UnmarshalTOML(data []byte) (err error) { return t.UnmarshalText(data) } // UnmarshalText implements encoding.TextUnmarshaler func (t *TrailerType) UnmarshalText(data []byte) (err error) { *t, err = TrailerTypeFromString(string(data)) return err } // MarshalText implements encoding.TextMarshaler func (t TrailerType) MarshalText() ([]byte, error) { s := t.String() if s != "" { return []byte(s), nil } return nil, fmt.Errorf("unknown TrailerType") } go-syslog-2.0.0/nontransparent/trailer_type_test.go000066400000000000000000000033271340614351500226100ustar00rootroot00000000000000package nontransparent import ( "encoding/json" "github.com/stretchr/testify/assert" "testing" ) type trailerWrapper struct { Trailer TrailerType `json:"trailer"` } func TestUnmarshalTOML(t *testing.T) { var t1 TrailerType t1.UnmarshalTOML([]byte(`"LF"`)) assert.Equal(t, LF, t1) var t2 TrailerType t2.UnmarshalTOML([]byte(`LF`)) assert.Equal(t, LF, t2) var t3 TrailerType t3.UnmarshalTOML([]byte(`'LF'`)) assert.Equal(t, LF, t3) var t4 TrailerType t4.UnmarshalTOML([]byte(`"NUL"`)) assert.Equal(t, NUL, t4) var t5 TrailerType t5.UnmarshalTOML([]byte(`NUL`)) assert.Equal(t, NUL, t5) var t6 TrailerType t6.UnmarshalTOML([]byte(`'NUL'`)) assert.Equal(t, NUL, t6) var t7 TrailerType err := t7.UnmarshalTOML([]byte(`wrong`)) assert.Equal(t, TrailerType(-1), t7) assert.Error(t, err) } func TestUnmarshalLowercase(t *testing.T) { x := &trailerWrapper{} in := []byte(`{"trailer": "lf"}`) err := json.Unmarshal(in, x) assert.Nil(t, err) assert.Equal(t, &trailerWrapper{Trailer: LF}, x) } func TestUnmarshalUnknown(t *testing.T) { x := &trailerWrapper{} in := []byte(`{"trailer": "UNK"}`) err := json.Unmarshal(in, x) assert.Error(t, err) assert.Equal(t, &trailerWrapper{Trailer: -1}, x) } func TestUnmarshal(t *testing.T) { x := &trailerWrapper{} in := []byte(`{"trailer": "NUL"}`) err := json.Unmarshal(in, x) assert.Nil(t, err) assert.Equal(t, &trailerWrapper{Trailer: NUL}, x) } func TestMarshalUnknown(t *testing.T) { res, err := json.Marshal(&trailerWrapper{Trailer: TrailerType(-2)}) assert.Error(t, err) assert.Empty(t, res) } func TestMarshal(t *testing.T) { res, err := json.Marshal(&trailerWrapper{Trailer: NUL}) assert.Nil(t, err) assert.Equal(t, `{"trailer":"NUL"}`, string(res)) } go-syslog-2.0.0/octetcounting/000077500000000000000000000000001340614351500163235ustar00rootroot00000000000000go-syslog-2.0.0/octetcounting/example_test.go000066400000000000000000000103651340614351500213510ustar00rootroot00000000000000package octetcounting import ( "github.com/influxdata/go-syslog" "io" "strings" "time" "github.com/davecgh/go-spew/spew" ) func output(out interface{}) { spew.Config.DisableCapacities = true spew.Config.DisablePointerAddresses = true spew.Dump(out) } func Example() { results := []syslog.Result{} acc := func(res *syslog.Result) { results = append(results, *res) } r := strings.NewReader("48 <1>1 2003-10-11T22:14:15.003Z host.local - - - -25 <3>1 - host.local - - - -38 <2>1 - host.local su - - - κόσμε") NewParser(syslog.WithBestEffort(), syslog.WithListener(acc)).Parse(r) output(results) // Output: // ([]syslog.Result) (len=3) { // (syslog.Result) { // Message: (*rfc5424.SyslogMessage)({ // priority: (*uint8)(1), // facility: (*uint8)(0), // severity: (*uint8)(1), // version: (uint16) 1, // timestamp: (*time.Time)(2003-10-11 22:14:15.003 +0000 UTC), // hostname: (*string)((len=10) "host.local"), // appname: (*string)(), // procID: (*string)(), // msgID: (*string)(), // structuredData: (*map[string]map[string]string)(), // message: (*string)() // }), // Error: (error) // }, // (syslog.Result) { // Message: (*rfc5424.SyslogMessage)({ // priority: (*uint8)(3), // facility: (*uint8)(0), // severity: (*uint8)(3), // version: (uint16) 1, // timestamp: (*time.Time)(), // hostname: (*string)((len=10) "host.local"), // appname: (*string)(), // procID: (*string)(), // msgID: (*string)(), // structuredData: (*map[string]map[string]string)(), // message: (*string)() // }), // Error: (error) // }, // (syslog.Result) { // Message: (*rfc5424.SyslogMessage)({ // priority: (*uint8)(2), // facility: (*uint8)(0), // severity: (*uint8)(2), // version: (uint16) 1, // timestamp: (*time.Time)(), // hostname: (*string)((len=10) "host.local"), // appname: (*string)((len=2) "su"), // procID: (*string)(), // msgID: (*string)(), // structuredData: (*map[string]map[string]string)(), // message: (*string)((len=11) "κόσμε") // }), // Error: (error) // } // } } func Example_channel() { messages := []string{ "16 <1>1 - - - - - -", "17 <2>12 A B C D E -", "16 <1>1", } r, w := io.Pipe() go func() { defer w.Close() for _, m := range messages { w.Write([]byte(m)) time.Sleep(time.Millisecond * 220) } }() c := make(chan syslog.Result) emit := func(res *syslog.Result) { c <- *res } parser := NewParser(syslog.WithBestEffort(), syslog.WithListener(emit)) go func() { defer close(c) parser.Parse(r) }() for r := range c { output(r) } r.Close() // Output: // (syslog.Result) { // Message: (*rfc5424.SyslogMessage)({ // priority: (*uint8)(1), // facility: (*uint8)(0), // severity: (*uint8)(1), // version: (uint16) 1, // timestamp: (*time.Time)(), // hostname: (*string)(), // appname: (*string)(), // procID: (*string)(), // msgID: (*string)(), // structuredData: (*map[string]map[string]string)(), // message: (*string)() // }), // Error: (error) // } // (syslog.Result) { // Message: (*rfc5424.SyslogMessage)({ // priority: (*uint8)(2), // facility: (*uint8)(0), // severity: (*uint8)(2), // version: (uint16) 12, // timestamp: (*time.Time)(), // hostname: (*string)(), // appname: (*string)(), // procID: (*string)(), // msgID: (*string)(), // structuredData: (*map[string]map[string]string)(), // message: (*string)() // }), // Error: (*errors.errorString)(expecting a RFC3339MICRO timestamp or a nil value [col 6]) // } // (syslog.Result) { // Message: (*rfc5424.SyslogMessage)({ // priority: (*uint8)(1), // facility: (*uint8)(0), // severity: (*uint8)(1), // version: (uint16) 1, // timestamp: (*time.Time)(), // hostname: (*string)(), // appname: (*string)(), // procID: (*string)(), // msgID: (*string)(), // structuredData: (*map[string]map[string]string)(), // message: (*string)() // }), // Error: (*errors.errorString)(parsing error [col 4]) // } } go-syslog-2.0.0/octetcounting/parser.go000066400000000000000000000072461340614351500201570ustar00rootroot00000000000000package octetcounting import ( "fmt" "io" "github.com/influxdata/go-syslog" "github.com/influxdata/go-syslog/rfc5424" ) // parser is capable to parse the input stream following octetcounting. // // Use NewParser function to instantiate one. type parser struct { msglen int64 s Scanner internal syslog.Machine last Token stepback bool // Wheter to retrieve the last token or not bestEffort bool // Best effort mode flag emit syslog.ParserListener } // NewParser returns a syslog.Parser suitable to parse syslog messages sent with transparent - ie. octet counting (RFC 5425) - framing. func NewParser(opts ...syslog.ParserOption) syslog.Parser { p := &parser{ emit: func(*syslog.Result) { /* noop */ }, } for _, opt := range opts { p = opt(p).(*parser) } // Create internal parser depending on options if p.bestEffort { p.internal = rfc5424.NewMachine(rfc5424.WithBestEffort()) } else { p.internal = rfc5424.NewMachine() } return p } // HasBestEffort tells whether the receiving parser has best effort mode on or off. func (p *parser) HasBestEffort() bool { return p.bestEffort } // WithBestEffort implements the syslog.BestEfforter interface. // // The generic options uses it. func (p *parser) WithBestEffort() { p.bestEffort = true } // WithListener implements the syslog.Parser interface. // // The generic options uses it. func (p *parser) WithListener(f syslog.ParserListener) { p.emit = f } // Parse parses the io.Reader incoming bytes. // // It stops parsing when an error regarding RFC 5425 is found. func (p *parser) Parse(r io.Reader) { p.s = *NewScanner(r) p.run() } func (p *parser) run() { for { var tok Token // First token MUST be a MSGLEN if tok = p.scan(); tok.typ != MSGLEN { p.emit(&syslog.Result{ Error: fmt.Errorf("found %s, expecting a %s", tok, MSGLEN), }) break } // Next we MUST see a WS if tok = p.scan(); tok.typ != WS { p.emit(&syslog.Result{ Error: fmt.Errorf("found %s, expecting a %s", tok, WS), }) break } // Next we MUST see a SYSLOGMSG with length equal to MSGLEN if tok = p.scan(); tok.typ != SYSLOGMSG { e := fmt.Errorf(`found %s after "%s", expecting a %s containing %d octets`, tok, tok.lit, SYSLOGMSG, p.s.msglen) // Underflow case if len(tok.lit) < int(p.s.msglen) && p.bestEffort { // Though MSGLEN was not respected, we try to parse the existing SYSLOGMSG as a RFC5424 syslog message result := p.parse(tok.lit) if result.Error == nil { result.Error = e } p.emit(result) break } p.emit(&syslog.Result{ Error: e, }) break } // Parse the SYSLOGMSG literal pretending it is a RFC5424 syslog message result := p.parse(tok.lit) if p.bestEffort || result.Error == nil { p.emit(result) } if !p.bestEffort && result.Error != nil { p.emit(&syslog.Result{Error: result.Error}) break } // Next we MUST see an EOF otherwise the parsing we'll start again if tok = p.scan(); tok.typ == EOF { break } else { p.unscan() } } } func (p *parser) parse(input []byte) *syslog.Result { sys, err := p.internal.Parse(input) return &syslog.Result{ Message: sys, Error: err, } } // scan returns the next token from the underlying scanner; // if a token has been unscanned then read that instead. func (p *parser) scan() Token { // If we have a token on the buffer, then return it. if p.stepback { p.stepback = false return p.last } // Otherwise read the next token from the scanner. tok := p.s.Scan() // Save it to the buffer in case we unscan later. p.last = tok return tok } // unscan pushes the previously read token back onto the buffer. func (p *parser) unscan() { p.stepback = true } go-syslog-2.0.0/octetcounting/parser_test.go000066400000000000000000000343251340614351500212140ustar00rootroot00000000000000package octetcounting import ( "fmt" "math/rand" "strings" "testing" "time" "github.com/influxdata/go-syslog" "github.com/influxdata/go-syslog/rfc5424" "github.com/stretchr/testify/assert" ) type testCase struct { descr string input string results []syslog.Result pResults []syslog.Result } var testCases []testCase const ( letterBytes = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ" letterIdxBits = 6 // 6 bits to represent a letter index letterIdxMask = 1<= 0; { if remain == 0 { cache, remain = src.Int63(), letterIdxMax } if idx := int(cache & letterIdxMask); idx < len(letterBytes) { b[i] = letterBytes[idx] i-- } cache >>= letterIdxBits remain-- } return string(b) } func getStringAddress(str string) *string { return &str } func getUint8Address(x uint8) *uint8 { return &x } func getTimestampError(col int) error { return fmt.Errorf("expecting a RFC3339MICRO timestamp or a nil value [col %d]", col) } func getParsingError(col int) error { return fmt.Errorf("parsing error [col %d]", col) } func getTestCases() []testCase { maxPriority := uint8(191) maxVersion := uint16(999) maxTimestamp := "2018-12-31T23:59:59.999999-23:59" maxHostname := "abcdefghilmnopqrstuvzabcdefghilmnopqrstuvzabcdefghilmnopqrstuvzabcdefghilmnopqrstuvzabcdefghilmnopqrstuvzabcdefghilmnopqrstuvzabcdefghilmnopqrstuvzabcdefghilmnopqrstuvzabcdefghilmnopqrstuvzabcdefghilmnopqrstuvzabcdefghilmnopqrstuvzabcdefghilmnopqrstuvzabc" maxAppname := "abcdefghilmnopqrstuvzabcdefghilmnopqrstuvzabcdef" maxProcID := "abcdefghilmnopqrstuvzabcdefghilmnopqrstuvzabcdefghilmnopqrstuvzabcdefghilmnopqrstuvzabcdefghilmnopqrstuvzabcdefghilmnopqrstuvzab" maxMsgID := "abcdefghilmnopqrstuvzabcdefghilm" message7681 := getRandomString(7681) return []testCase{ { "empty", "", []syslog.Result{ {Error: fmt.Errorf("found %s, expecting a %s", EOF, MSGLEN)}, }, []syslog.Result{ {Error: fmt.Errorf("found %s, expecting a %s", EOF, MSGLEN)}, }, }, { "1st ok/2nd mf", // mf means malformed syslog message "16 <1>1 - - - - - -17 <2>12 A B C D E -", // results w/o best effort []syslog.Result{ { Message: (&rfc5424.SyslogMessage{}).SetPriority(1).SetVersion(1), }, { Error: getTimestampError(6), }, }, // results with best effort []syslog.Result{ { Message: (&rfc5424.SyslogMessage{}).SetPriority(1).SetVersion(1), }, { Message: (&rfc5424.SyslogMessage{}).SetPriority(2).SetVersion(12), Error: getTimestampError(6), }, }, }, { "1st ok/2nd ko", // ko means wrong token "16 <1>1 - - - - - -xaaa", // results w/o best effort []syslog.Result{ { Message: (&rfc5424.SyslogMessage{}).SetPriority(1).SetVersion(1), }, { Error: fmt.Errorf("found %s, expecting a %s", Token{ILLEGAL, []byte("x")}, MSGLEN), }, }, // results with best effort []syslog.Result{ { Message: (&rfc5424.SyslogMessage{}).SetPriority(1).SetVersion(1), }, { Error: fmt.Errorf("found %s, expecting a %s", Token{ILLEGAL, []byte("x")}, MSGLEN), }, }, }, { "1st ml/2nd ko", "16 <1>1 A B C D E -xaaa", // results w/o best effort []syslog.Result{ { Error: getTimestampError(5), }, }, // results with best effort []syslog.Result{ { Message: (&rfc5424.SyslogMessage{}).SetPriority(1).SetVersion(1), Error: getTimestampError(5), }, { Error: fmt.Errorf("found %s, expecting a %s", Token{ILLEGAL, []byte("x")}, MSGLEN), }, }, }, { "1st ok//utf8", "23 <1>1 - - - - - - hellø", // msglen MUST be the octet count //results w/o best effort []syslog.Result{ { Message: (&rfc5424.SyslogMessage{}). SetPriority(1). SetVersion(1). SetMessage("hellø"), }, }, // results with best effort []syslog.Result{ { Message: (&rfc5424.SyslogMessage{}). SetPriority(1). SetVersion(1). SetMessage("hellø"), }, }, }, { "1st ko//incomplete SYSLOGMSG", "16 <1>1", // results w/o best effort []syslog.Result{ { Error: fmt.Errorf(`found %s after "%s", expecting a %s containing %d octets`, EOF, "<1>1", SYSLOGMSG, 16), }, }, // results with best effort []syslog.Result{ { Message: (&rfc5424.SyslogMessage{}).SetPriority(1).SetVersion(1), Error: getParsingError(4), // Error: fmt.Errorf(`found %s after "%s", expecting a %s containing %d octets`, EOF, "<1>1", SYSLOGMSG, 16), }, }, }, { "1st ko//missing WS found ILLEGAL", "16<1>1", // results w/o best effort []syslog.Result{ { Error: fmt.Errorf("found %s, expecting a %s", Token{ILLEGAL, []byte("<")}, WS), }, }, // results with best effort []syslog.Result{ { Error: fmt.Errorf("found %s, expecting a %s", Token{ILLEGAL, []byte("<")}, WS), }, }, }, { "1st ko//missing WS found EOF", "1", // results w/o best effort []syslog.Result{ { Error: fmt.Errorf("found %s, expecting a %s", EOF, WS), }, }, // results with best effort []syslog.Result{ { Error: fmt.Errorf("found %s, expecting a %s", EOF, WS), }, }, }, { "1st ok/2nd ok/3rd ok", "48 <1>1 2003-10-11T22:14:15.003Z host.local - - - -25 <3>1 - host.local - - - -38 <2>1 - host.local su - - - κόσμε", // results w/o best effort []syslog.Result{ { Message: (&rfc5424.SyslogMessage{}). SetPriority(1). SetVersion(1). SetTimestamp("2003-10-11T22:14:15.003Z"). SetHostname("host.local"), }, { Message: (&rfc5424.SyslogMessage{}). SetPriority(3). SetVersion(1). SetHostname("host.local"), }, { Message: (&rfc5424.SyslogMessage{}). SetPriority(2). SetVersion(1). SetHostname("host.local"). SetAppname("su"). SetMessage("κόσμε"), }, }, // results with best effort []syslog.Result{ { Message: (&rfc5424.SyslogMessage{}). SetPriority(1). SetVersion(1). SetTimestamp("2003-10-11T22:14:15.003Z"). SetHostname("host.local"), }, { Message: (&rfc5424.SyslogMessage{}). SetPriority(3). SetVersion(1). SetHostname("host.local"), }, { Message: (&rfc5424.SyslogMessage{}). SetPriority(2). SetVersion(1). SetHostname("host.local"). SetAppname("su"). SetMessage("κόσμε"), }, }, }, { "1st ok/2nd mf/3rd ok", // mf means malformed syslog message "16 <1>1 - - - - - -17 <2>12 A B C D E -16 <1>1 - - - - - -", // results w/o best effort []syslog.Result{ { Message: (&rfc5424.SyslogMessage{}).SetPriority(1).SetVersion(1), }, { Error: getTimestampError(6), }, }, // results with best effort []syslog.Result{ { Message: (&rfc5424.SyslogMessage{}).SetPriority(1).SetVersion(1), }, { Message: (&rfc5424.SyslogMessage{}).SetPriority(2).SetVersion(12), Error: getTimestampError(6), }, { Message: (&rfc5424.SyslogMessage{}).SetPriority(1).SetVersion(1), }, }, }, { "1st ok//max", fmt.Sprintf("8192 <%d>%d %s %s %s %s %s - %s", maxPriority, maxVersion, maxTimestamp, maxHostname, maxAppname, maxProcID, maxMsgID, message7681), // results w/o best effort []syslog.Result{ { Message: (&rfc5424.SyslogMessage{}). SetPriority(maxPriority). SetVersion(maxVersion). SetTimestamp(maxTimestamp). SetHostname(maxHostname). SetAppname(maxAppname). SetProcID(maxProcID). SetMsgID(maxMsgID). SetMessage(message7681), }, }, // results with best effort []syslog.Result{ { Message: (&rfc5424.SyslogMessage{}). SetPriority(maxPriority). SetVersion(maxVersion). SetTimestamp(maxTimestamp). SetHostname(maxHostname). SetAppname(maxAppname). SetProcID(maxProcID). SetMsgID(maxMsgID). SetMessage(message7681), }, }, }, { "1st ok/2nd ok//max/max", fmt.Sprintf("8192 <%d>%d %s %s %s %s %s - %s8192 <%d>%d %s %s %s %s %s - %s", maxPriority, maxVersion, maxTimestamp, maxHostname, maxAppname, maxProcID, maxMsgID, message7681, maxPriority, maxVersion, maxTimestamp, maxHostname, maxAppname, maxProcID, maxMsgID, message7681), // results w/o best effort []syslog.Result{ { Message: (&rfc5424.SyslogMessage{}). SetPriority(maxPriority). SetVersion(maxVersion). SetTimestamp(maxTimestamp). SetHostname(maxHostname). SetAppname(maxAppname). SetProcID(maxProcID). SetMsgID(maxMsgID). SetMessage(message7681), }, { Message: (&rfc5424.SyslogMessage{}). SetPriority(maxPriority). SetVersion(maxVersion). SetTimestamp(maxTimestamp). SetHostname(maxHostname). SetAppname(maxAppname). SetProcID(maxProcID). SetMsgID(maxMsgID). SetMessage(message7681), }, }, // results with best effort []syslog.Result{ { Message: (&rfc5424.SyslogMessage{}). SetPriority(maxPriority). SetVersion(maxVersion). SetTimestamp(maxTimestamp). SetHostname(maxHostname). SetAppname(maxAppname). SetProcID(maxProcID). SetMsgID(maxMsgID). SetMessage(message7681), }, { Message: (&rfc5424.SyslogMessage{}). SetPriority(maxPriority). SetVersion(maxVersion). SetTimestamp(maxTimestamp). SetHostname(maxHostname). SetAppname(maxAppname). SetProcID(maxProcID). SetMsgID(maxMsgID). SetMessage(message7681), }, }, }, { "1st ok/2nd ok/3rd ok//max/no/max", fmt.Sprintf("8192 <%d>%d %s %s %s %s %s - %s16 <1>1 - - - - - -8192 <%d>%d %s %s %s %s %s - %s", maxPriority, maxVersion, maxTimestamp, maxHostname, maxAppname, maxProcID, maxMsgID, message7681, maxPriority, maxVersion, maxTimestamp, maxHostname, maxAppname, maxProcID, maxMsgID, message7681), // results w/o best effort []syslog.Result{ { Message: (&rfc5424.SyslogMessage{}). SetPriority(maxPriority). SetVersion(maxVersion). SetTimestamp(maxTimestamp). SetHostname(maxHostname). SetAppname(maxAppname). SetProcID(maxProcID). SetMsgID(maxMsgID). SetMessage(message7681), }, { Message: (&rfc5424.SyslogMessage{}).SetPriority(1).SetVersion(1), }, { Message: (&rfc5424.SyslogMessage{}). SetPriority(maxPriority). SetVersion(maxVersion). SetTimestamp(maxTimestamp). SetHostname(maxHostname). SetAppname(maxAppname). SetProcID(maxProcID). SetMsgID(maxMsgID). SetMessage(message7681), }, }, // results with best effort []syslog.Result{ { Message: (&rfc5424.SyslogMessage{}). SetPriority(maxPriority). SetVersion(maxVersion). SetTimestamp(maxTimestamp). SetHostname(maxHostname). SetAppname(maxAppname). SetProcID(maxProcID). SetMsgID(maxMsgID). SetMessage(message7681), }, { Message: (&rfc5424.SyslogMessage{}).SetPriority(1).SetVersion(1), }, { Message: (&rfc5424.SyslogMessage{}). SetPriority(maxPriority). SetVersion(maxVersion). SetTimestamp(maxTimestamp). SetHostname(maxHostname). SetAppname(maxAppname). SetProcID(maxProcID). SetMsgID(maxMsgID). SetMessage(message7681), }, }, }, { "1st ml//maxlen gt 8192", // maxlength greather than the buffer size fmt.Sprintf("8193 <%d>%d %s %s %s %s %s - %s", maxPriority, maxVersion, maxTimestamp, maxHostname, maxAppname, maxProcID, maxMsgID, message7681), // results w/o best effort []syslog.Result{ { Error: fmt.Errorf("found %s after \"%s\", expecting a %s containing %d octets", EOF, fmt.Sprintf("<%d>%d %s %s %s %s %s - %s", maxPriority, maxVersion, maxTimestamp, maxHostname, maxAppname, maxProcID, maxMsgID, message7681), SYSLOGMSG, 8193), }, }, // results with best effort []syslog.Result{ { Message: (&rfc5424.SyslogMessage{}). SetPriority(maxPriority). SetVersion(maxVersion). SetTimestamp(maxTimestamp). SetHostname(maxHostname). SetAppname(maxAppname). SetProcID(maxProcID). SetMsgID(maxMsgID). SetMessage(message7681), Error: fmt.Errorf("found %s after \"%s\", expecting a %s containing %d octets", EOF, fmt.Sprintf("<%d>%d %s %s %s %s %s - %s", maxPriority, maxVersion, maxTimestamp, maxHostname, maxAppname, maxProcID, maxMsgID, message7681), SYSLOGMSG, 8193), }, }, }, { "1st uf/2nd ok//incomplete SYSLOGMSG/notdetectable", "16 <1>217 <11>1 - - - - - -", // results w/o best effort []syslog.Result{ { Error: getTimestampError(7), }, }, // results with best effort []syslog.Result{ { Message: (&rfc5424.SyslogMessage{}).SetPriority(1).SetVersion(217), Error: getTimestampError(7), }, { Error: fmt.Errorf("found %s, expecting a %s", WS, MSGLEN), }, }, }, } } func init() { testCases = getTestCases() } func TestParse(t *testing.T) { for _, tc := range testCases { tc := tc t.Run(fmt.Sprintf("strict/%s", tc.descr), func(t *testing.T) { t.Parallel() res := []syslog.Result{} strictParser := NewParser(syslog.WithListener(func(r *syslog.Result) { res = append(res, *r) })) strictParser.Parse(strings.NewReader(tc.input)) assert.Equal(t, tc.results, res) }) t.Run(fmt.Sprintf("effort/%s", tc.descr), func(t *testing.T) { t.Parallel() res := []syslog.Result{} effortParser := NewParser(syslog.WithBestEffort(), syslog.WithListener(func(r *syslog.Result) { res = append(res, *r) })) effortParser.Parse(strings.NewReader(tc.input)) assert.Equal(t, tc.pResults, res) }) } } func TestParserBestEffortOption(t *testing.T) { p1 := NewParser().(syslog.BestEfforter) assert.False(t, p1.HasBestEffort()) p2 := NewParser(syslog.WithBestEffort()).(syslog.BestEfforter) assert.True(t, p2.HasBestEffort()) } go-syslog-2.0.0/octetcounting/scanner.go000066400000000000000000000054031340614351500203050ustar00rootroot00000000000000package octetcounting import ( "bufio" "bytes" "io" "strconv" ) // size as per RFC5425#section-4.3.1 var size = 8192 // eof represents a marker byte for the end of the reader var eof = byte(0) // ws represents the whitespace var ws = byte(32) // lt represents the "<" character var lt = byte(60) // isDigit returns true if the byte represents a number in [0,9] func isDigit(ch byte) bool { return (ch >= 47 && ch <= 57) } // isNonZeroDigit returns true if the byte represents a number in ]0,9] func isNonZeroDigit(ch byte) bool { return (ch >= 48 && ch <= 57) } // Scanner represents the lexical scanner for octet counting transport. type Scanner struct { r *bufio.Reader msglen uint64 ready bool } // NewScanner returns a pointer to a new instance of Scanner. func NewScanner(r io.Reader) *Scanner { return &Scanner{ r: bufio.NewReaderSize(r, size+5), // "8192 " has length 5 } } // read reads the next byte from the buffered reader // it returns the byte(0) if an error occurs (or io.EOF is returned) func (s *Scanner) read() byte { b, err := s.r.ReadByte() if err != nil { return eof } return b } // unread places the previously read byte back on the reader func (s *Scanner) unread() { _ = s.r.UnreadByte() } // Scan returns the next token. func (s *Scanner) Scan() (tok Token) { // Read the next byte. b := s.read() if isNonZeroDigit(b) { s.unread() s.ready = false return s.scanMsgLen() } // Otherwise read the individual character switch b { case eof: s.ready = false return Token{ typ: EOF, } case ws: s.ready = true return Token{ typ: WS, lit: []byte{ws}, } case lt: if s.msglen > 0 && s.ready { s.unread() return s.scanSyslogMsg() } } return Token{ typ: ILLEGAL, lit: []byte{b}, } } func (s *Scanner) scanMsgLen() Token { // Create a buffer and read the current character into it var buf bytes.Buffer buf.WriteByte(s.read()) // Read every subsequent digit character into the buffer // Non-digit characters and EOF will cause the loop to exit for { if b := s.read(); b == eof { break } else if !isDigit(b) { s.unread() break } else { buf.WriteByte(b) } } msglen := buf.String() s.msglen, _ = strconv.ParseUint(msglen, 10, 64) // (todo) > return ILLEGAL if s.msglen > size (8192) // (todo) > only when NOT in besteffort mode or always? return Token{ typ: MSGLEN, lit: buf.Bytes(), } } func (s *Scanner) scanSyslogMsg() Token { // Check the reader contains almost MSGLEN characters n := int(s.msglen) b, err := s.r.Peek(n) if err != nil { return Token{ typ: EOF, lit: b, } } // Advance the reader of MSGLEN characters s.r.Discard(n) // Reset status s.ready = false s.msglen = 0 // Return SYSLOGMSG token return Token{ typ: SYSLOGMSG, lit: b, } } go-syslog-2.0.0/octetcounting/tokens.go000066400000000000000000000016521340614351500201610ustar00rootroot00000000000000package octetcounting import ( "strconv" ) // Token represents a lexical token of the octetcounting. type Token struct { typ TokenType lit []byte } // TokenType represents a lexical token type of the octetcounting. type TokenType int // Tokens const ( ILLEGAL TokenType = iota EOF WS MSGLEN SYSLOGMSG ) // String outputs the string representation of the receiving Token. func (t Token) String() string { switch t.typ { case WS, EOF: return t.typ.String() default: return t.typ.String() + "(" + string(t.lit) + ")" } } const tokentypename = "ILLEGALEOFWSMSGLENSYSLOGMSG" var tokentypeindex = [...]uint8{0, 7, 10, 12, 18, 27} // String outputs the string representation of the receiving TokenType. func (i TokenType) String() string { if i < 0 || i >= TokenType(len(tokentypeindex)-1) { return "TokenType(" + strconv.FormatInt(int64(i), 10) + ")" } return tokentypename[tokentypeindex[i]:tokentypeindex[i+1]] } go-syslog-2.0.0/octetcounting/tokens_test.go000066400000000000000000000010001340614351500212030ustar00rootroot00000000000000package octetcounting import ( "fmt" "testing" "github.com/stretchr/testify/assert" ) func TestTokenTypeString(t *testing.T) { const NOTEXISTING = 1000 assert.Equal(t, fmt.Sprintf("TokenType(%d)", NOTEXISTING), TokenType(NOTEXISTING).String()) assert.Equal(t, "ILLEGAL", ILLEGAL.String()) assert.Equal(t, "WS", TokenType(WS).String()) } func TestTokenString(t *testing.T) { tok := Token{typ: SYSLOGMSG, lit: []byte("<1>1 - - - - - -")} assert.Equal(t, "SYSLOGMSG(<1>1 - - - - - -)", tok.String()) } go-syslog-2.0.0/options.go000066400000000000000000000010071340614351500154560ustar00rootroot00000000000000package syslog // WithListener returns a generic option that sets the emit function for syslog parsers. func WithListener(f ParserListener) ParserOption { return func(p Parser) Parser { p.WithListener(f) return p } } // WithBestEffort returns a generic options that enables best effort mode for syslog parsers. // // When passed to a parser it tries to recover as much of the syslog messages as possible. func WithBestEffort() ParserOption { return func(p Parser) Parser { p.WithBestEffort() return p } } go-syslog-2.0.0/rfc5424/000077500000000000000000000000001340614351500145275ustar00rootroot00000000000000go-syslog-2.0.0/rfc5424/builder.go000066400000000000000000004255131340614351500165160ustar00rootroot00000000000000package rfc5424 import ( "fmt" "sort" "time" ) const builderStart int = 59 const builderEnTimestamp int = 8 const builderEnHostname int = 45 const builderEnAppname int = 46 const builderEnProcid int = 47 const builderEnMsgid int = 48 const builderEnSdid int = 49 const builderEnSdpn int = 50 const builderEnSdpv int = 589 const builderEnMsg int = 59 type entrypoint int const ( timestamp entrypoint = iota hostname appname procid msgid sdid sdpn sdpv msg ) func (e entrypoint) translate() int { switch e { case timestamp: return builderEnTimestamp case hostname: return builderEnHostname case appname: return builderEnAppname case procid: return builderEnProcid case msgid: return builderEnMsgid case sdid: return builderEnSdid case sdpn: return builderEnSdpn case sdpv: return builderEnSdpv case msg: return builderEnMsg default: return builderStart } } var currentid string var currentparamname string func (sm *SyslogMessage) set(from entrypoint, value string) *SyslogMessage { data := []byte(value) p := 0 pb := 0 pe := len(data) eof := len(data) cs := from.translate() backslashes := []int{} { if p == pe { goto _testEof } switch cs { case 59: goto stCase59 case 60: goto stCase60 case 0: goto stCase0 case 1: goto stCase1 case 2: goto stCase2 case 3: goto stCase3 case 4: goto stCase4 case 5: goto stCase5 case 6: goto stCase6 case 7: goto stCase7 case 8: goto stCase8 case 9: goto stCase9 case 10: goto stCase10 case 11: goto stCase11 case 12: goto stCase12 case 13: goto stCase13 case 14: goto stCase14 case 15: goto stCase15 case 16: goto stCase16 case 17: goto stCase17 case 18: goto stCase18 case 19: goto stCase19 case 20: goto stCase20 case 21: goto stCase21 case 22: goto stCase22 case 23: goto stCase23 case 24: goto stCase24 case 25: goto stCase25 case 26: goto stCase26 case 27: goto stCase27 case 28: goto stCase28 case 29: goto stCase29 case 30: goto stCase30 case 31: goto stCase31 case 32: goto stCase32 case 61: goto stCase61 case 33: goto stCase33 case 34: goto stCase34 case 35: goto stCase35 case 36: goto stCase36 case 37: goto stCase37 case 38: goto stCase38 case 39: goto stCase39 case 40: goto stCase40 case 41: goto stCase41 case 42: goto stCase42 case 43: goto stCase43 case 44: goto stCase44 case 45: goto stCase45 case 62: goto stCase62 case 63: goto stCase63 case 64: goto stCase64 case 65: goto stCase65 case 66: goto stCase66 case 67: goto stCase67 case 68: goto stCase68 case 69: goto stCase69 case 70: goto stCase70 case 71: goto stCase71 case 72: goto stCase72 case 73: goto stCase73 case 74: goto stCase74 case 75: goto stCase75 case 76: goto stCase76 case 77: goto stCase77 case 78: goto stCase78 case 79: goto stCase79 case 80: goto stCase80 case 81: goto stCase81 case 82: goto stCase82 case 83: goto stCase83 case 84: goto stCase84 case 85: goto stCase85 case 86: goto stCase86 case 87: goto stCase87 case 88: goto stCase88 case 89: goto stCase89 case 90: goto stCase90 case 91: goto stCase91 case 92: goto stCase92 case 93: goto stCase93 case 94: goto stCase94 case 95: goto stCase95 case 96: goto stCase96 case 97: goto stCase97 case 98: goto stCase98 case 99: goto stCase99 case 100: goto stCase100 case 101: goto stCase101 case 102: goto stCase102 case 103: goto stCase103 case 104: goto stCase104 case 105: goto stCase105 case 106: goto stCase106 case 107: goto stCase107 case 108: goto stCase108 case 109: goto stCase109 case 110: goto stCase110 case 111: goto stCase111 case 112: goto stCase112 case 113: goto stCase113 case 114: goto stCase114 case 115: goto stCase115 case 116: goto stCase116 case 117: goto stCase117 case 118: goto stCase118 case 119: goto stCase119 case 120: goto stCase120 case 121: goto stCase121 case 122: goto stCase122 case 123: goto stCase123 case 124: goto stCase124 case 125: goto stCase125 case 126: goto stCase126 case 127: goto stCase127 case 128: goto stCase128 case 129: goto stCase129 case 130: goto stCase130 case 131: goto stCase131 case 132: goto stCase132 case 133: goto stCase133 case 134: goto stCase134 case 135: goto stCase135 case 136: goto stCase136 case 137: goto stCase137 case 138: goto stCase138 case 139: goto stCase139 case 140: goto stCase140 case 141: goto stCase141 case 142: goto stCase142 case 143: goto stCase143 case 144: goto stCase144 case 145: goto stCase145 case 146: goto stCase146 case 147: goto stCase147 case 148: goto stCase148 case 149: goto stCase149 case 150: goto stCase150 case 151: goto stCase151 case 152: goto stCase152 case 153: goto stCase153 case 154: goto stCase154 case 155: goto stCase155 case 156: goto stCase156 case 157: goto stCase157 case 158: goto stCase158 case 159: goto stCase159 case 160: goto stCase160 case 161: goto stCase161 case 162: goto stCase162 case 163: goto stCase163 case 164: goto stCase164 case 165: goto stCase165 case 166: goto stCase166 case 167: goto stCase167 case 168: goto stCase168 case 169: goto stCase169 case 170: goto stCase170 case 171: goto stCase171 case 172: goto stCase172 case 173: goto stCase173 case 174: goto stCase174 case 175: goto stCase175 case 176: goto stCase176 case 177: goto stCase177 case 178: goto stCase178 case 179: goto stCase179 case 180: goto stCase180 case 181: goto stCase181 case 182: goto stCase182 case 183: goto stCase183 case 184: goto stCase184 case 185: goto stCase185 case 186: goto stCase186 case 187: goto stCase187 case 188: goto stCase188 case 189: goto stCase189 case 190: goto stCase190 case 191: goto stCase191 case 192: goto stCase192 case 193: goto stCase193 case 194: goto stCase194 case 195: goto stCase195 case 196: goto stCase196 case 197: goto stCase197 case 198: goto stCase198 case 199: goto stCase199 case 200: goto stCase200 case 201: goto stCase201 case 202: goto stCase202 case 203: goto stCase203 case 204: goto stCase204 case 205: goto stCase205 case 206: goto stCase206 case 207: goto stCase207 case 208: goto stCase208 case 209: goto stCase209 case 210: goto stCase210 case 211: goto stCase211 case 212: goto stCase212 case 213: goto stCase213 case 214: goto stCase214 case 215: goto stCase215 case 216: goto stCase216 case 217: goto stCase217 case 218: goto stCase218 case 219: goto stCase219 case 220: goto stCase220 case 221: goto stCase221 case 222: goto stCase222 case 223: goto stCase223 case 224: goto stCase224 case 225: goto stCase225 case 226: goto stCase226 case 227: goto stCase227 case 228: goto stCase228 case 229: goto stCase229 case 230: goto stCase230 case 231: goto stCase231 case 232: goto stCase232 case 233: goto stCase233 case 234: goto stCase234 case 235: goto stCase235 case 236: goto stCase236 case 237: goto stCase237 case 238: goto stCase238 case 239: goto stCase239 case 240: goto stCase240 case 241: goto stCase241 case 242: goto stCase242 case 243: goto stCase243 case 244: goto stCase244 case 245: goto stCase245 case 246: goto stCase246 case 247: goto stCase247 case 248: goto stCase248 case 249: goto stCase249 case 250: goto stCase250 case 251: goto stCase251 case 252: goto stCase252 case 253: goto stCase253 case 254: goto stCase254 case 255: goto stCase255 case 256: goto stCase256 case 257: goto stCase257 case 258: goto stCase258 case 259: goto stCase259 case 260: goto stCase260 case 261: goto stCase261 case 262: goto stCase262 case 263: goto stCase263 case 264: goto stCase264 case 265: goto stCase265 case 266: goto stCase266 case 267: goto stCase267 case 268: goto stCase268 case 269: goto stCase269 case 270: goto stCase270 case 271: goto stCase271 case 272: goto stCase272 case 273: goto stCase273 case 274: goto stCase274 case 275: goto stCase275 case 276: goto stCase276 case 277: goto stCase277 case 278: goto stCase278 case 279: goto stCase279 case 280: goto stCase280 case 281: goto stCase281 case 282: goto stCase282 case 283: goto stCase283 case 284: goto stCase284 case 285: goto stCase285 case 286: goto stCase286 case 287: goto stCase287 case 288: goto stCase288 case 289: goto stCase289 case 290: goto stCase290 case 291: goto stCase291 case 292: goto stCase292 case 293: goto stCase293 case 294: goto stCase294 case 295: goto stCase295 case 296: goto stCase296 case 297: goto stCase297 case 298: goto stCase298 case 299: goto stCase299 case 300: goto stCase300 case 301: goto stCase301 case 302: goto stCase302 case 303: goto stCase303 case 304: goto stCase304 case 305: goto stCase305 case 306: goto stCase306 case 307: goto stCase307 case 308: goto stCase308 case 309: goto stCase309 case 310: goto stCase310 case 311: goto stCase311 case 312: goto stCase312 case 313: goto stCase313 case 314: goto stCase314 case 315: goto stCase315 case 316: goto stCase316 case 46: goto stCase46 case 317: goto stCase317 case 318: goto stCase318 case 319: goto stCase319 case 320: goto stCase320 case 321: goto stCase321 case 322: goto stCase322 case 323: goto stCase323 case 324: goto stCase324 case 325: goto stCase325 case 326: goto stCase326 case 327: goto stCase327 case 328: goto stCase328 case 329: goto stCase329 case 330: goto stCase330 case 331: goto stCase331 case 332: goto stCase332 case 333: goto stCase333 case 334: goto stCase334 case 335: goto stCase335 case 336: goto stCase336 case 337: goto stCase337 case 338: goto stCase338 case 339: goto stCase339 case 340: goto stCase340 case 341: goto stCase341 case 342: goto stCase342 case 343: goto stCase343 case 344: goto stCase344 case 345: goto stCase345 case 346: goto stCase346 case 347: goto stCase347 case 348: goto stCase348 case 349: goto stCase349 case 350: goto stCase350 case 351: goto stCase351 case 352: goto stCase352 case 353: goto stCase353 case 354: goto stCase354 case 355: goto stCase355 case 356: goto stCase356 case 357: goto stCase357 case 358: goto stCase358 case 359: goto stCase359 case 360: goto stCase360 case 361: goto stCase361 case 362: goto stCase362 case 363: goto stCase363 case 364: goto stCase364 case 47: goto stCase47 case 365: goto stCase365 case 366: goto stCase366 case 367: goto stCase367 case 368: goto stCase368 case 369: goto stCase369 case 370: goto stCase370 case 371: goto stCase371 case 372: goto stCase372 case 373: goto stCase373 case 374: goto stCase374 case 375: goto stCase375 case 376: goto stCase376 case 377: goto stCase377 case 378: goto stCase378 case 379: goto stCase379 case 380: goto stCase380 case 381: goto stCase381 case 382: goto stCase382 case 383: goto stCase383 case 384: goto stCase384 case 385: goto stCase385 case 386: goto stCase386 case 387: goto stCase387 case 388: goto stCase388 case 389: goto stCase389 case 390: goto stCase390 case 391: goto stCase391 case 392: goto stCase392 case 393: goto stCase393 case 394: goto stCase394 case 395: goto stCase395 case 396: goto stCase396 case 397: goto stCase397 case 398: goto stCase398 case 399: goto stCase399 case 400: goto stCase400 case 401: goto stCase401 case 402: goto stCase402 case 403: goto stCase403 case 404: goto stCase404 case 405: goto stCase405 case 406: goto stCase406 case 407: goto stCase407 case 408: goto stCase408 case 409: goto stCase409 case 410: goto stCase410 case 411: goto stCase411 case 412: goto stCase412 case 413: goto stCase413 case 414: goto stCase414 case 415: goto stCase415 case 416: goto stCase416 case 417: goto stCase417 case 418: goto stCase418 case 419: goto stCase419 case 420: goto stCase420 case 421: goto stCase421 case 422: goto stCase422 case 423: goto stCase423 case 424: goto stCase424 case 425: goto stCase425 case 426: goto stCase426 case 427: goto stCase427 case 428: goto stCase428 case 429: goto stCase429 case 430: goto stCase430 case 431: goto stCase431 case 432: goto stCase432 case 433: goto stCase433 case 434: goto stCase434 case 435: goto stCase435 case 436: goto stCase436 case 437: goto stCase437 case 438: goto stCase438 case 439: goto stCase439 case 440: goto stCase440 case 441: goto stCase441 case 442: goto stCase442 case 443: goto stCase443 case 444: goto stCase444 case 445: goto stCase445 case 446: goto stCase446 case 447: goto stCase447 case 448: goto stCase448 case 449: goto stCase449 case 450: goto stCase450 case 451: goto stCase451 case 452: goto stCase452 case 453: goto stCase453 case 454: goto stCase454 case 455: goto stCase455 case 456: goto stCase456 case 457: goto stCase457 case 458: goto stCase458 case 459: goto stCase459 case 460: goto stCase460 case 461: goto stCase461 case 462: goto stCase462 case 463: goto stCase463 case 464: goto stCase464 case 465: goto stCase465 case 466: goto stCase466 case 467: goto stCase467 case 468: goto stCase468 case 469: goto stCase469 case 470: goto stCase470 case 471: goto stCase471 case 472: goto stCase472 case 473: goto stCase473 case 474: goto stCase474 case 475: goto stCase475 case 476: goto stCase476 case 477: goto stCase477 case 478: goto stCase478 case 479: goto stCase479 case 480: goto stCase480 case 481: goto stCase481 case 482: goto stCase482 case 483: goto stCase483 case 484: goto stCase484 case 485: goto stCase485 case 486: goto stCase486 case 487: goto stCase487 case 488: goto stCase488 case 489: goto stCase489 case 490: goto stCase490 case 491: goto stCase491 case 492: goto stCase492 case 48: goto stCase48 case 493: goto stCase493 case 494: goto stCase494 case 495: goto stCase495 case 496: goto stCase496 case 497: goto stCase497 case 498: goto stCase498 case 499: goto stCase499 case 500: goto stCase500 case 501: goto stCase501 case 502: goto stCase502 case 503: goto stCase503 case 504: goto stCase504 case 505: goto stCase505 case 506: goto stCase506 case 507: goto stCase507 case 508: goto stCase508 case 509: goto stCase509 case 510: goto stCase510 case 511: goto stCase511 case 512: goto stCase512 case 513: goto stCase513 case 514: goto stCase514 case 515: goto stCase515 case 516: goto stCase516 case 517: goto stCase517 case 518: goto stCase518 case 519: goto stCase519 case 520: goto stCase520 case 521: goto stCase521 case 522: goto stCase522 case 523: goto stCase523 case 524: goto stCase524 case 49: goto stCase49 case 525: goto stCase525 case 526: goto stCase526 case 527: goto stCase527 case 528: goto stCase528 case 529: goto stCase529 case 530: goto stCase530 case 531: goto stCase531 case 532: goto stCase532 case 533: goto stCase533 case 534: goto stCase534 case 535: goto stCase535 case 536: goto stCase536 case 537: goto stCase537 case 538: goto stCase538 case 539: goto stCase539 case 540: goto stCase540 case 541: goto stCase541 case 542: goto stCase542 case 543: goto stCase543 case 544: goto stCase544 case 545: goto stCase545 case 546: goto stCase546 case 547: goto stCase547 case 548: goto stCase548 case 549: goto stCase549 case 550: goto stCase550 case 551: goto stCase551 case 552: goto stCase552 case 553: goto stCase553 case 554: goto stCase554 case 555: goto stCase555 case 556: goto stCase556 case 50: goto stCase50 case 557: goto stCase557 case 558: goto stCase558 case 559: goto stCase559 case 560: goto stCase560 case 561: goto stCase561 case 562: goto stCase562 case 563: goto stCase563 case 564: goto stCase564 case 565: goto stCase565 case 566: goto stCase566 case 567: goto stCase567 case 568: goto stCase568 case 569: goto stCase569 case 570: goto stCase570 case 571: goto stCase571 case 572: goto stCase572 case 573: goto stCase573 case 574: goto stCase574 case 575: goto stCase575 case 576: goto stCase576 case 577: goto stCase577 case 578: goto stCase578 case 579: goto stCase579 case 580: goto stCase580 case 581: goto stCase581 case 582: goto stCase582 case 583: goto stCase583 case 584: goto stCase584 case 585: goto stCase585 case 586: goto stCase586 case 587: goto stCase587 case 588: goto stCase588 case 589: goto stCase589 case 590: goto stCase590 case 51: goto stCase51 case 52: goto stCase52 case 53: goto stCase53 case 54: goto stCase54 case 55: goto stCase55 case 56: goto stCase56 case 57: goto stCase57 case 58: goto stCase58 } goto stOut stCase59: switch data[p] { case 224: goto tr52 case 237: goto tr54 case 240: goto tr55 case 244: goto tr57 } switch { case data[p] < 225: switch { case data[p] > 193: if 194 <= data[p] && data[p] <= 223 { goto tr51 } case data[p] >= 128: goto st0 } case data[p] > 239: switch { case data[p] > 243: if 245 <= data[p] { goto st0 } case data[p] >= 241: goto tr56 } default: goto tr53 } goto tr50 tr50: pb = p goto st60 st60: if p++; p == pe { goto _testEof60 } stCase60: switch data[p] { case 224: goto st2 case 237: goto st4 case 240: goto st5 case 244: goto st7 } switch { case data[p] < 225: switch { case data[p] > 193: if 194 <= data[p] && data[p] <= 223 { goto st1 } case data[p] >= 128: goto st0 } case data[p] > 239: switch { case data[p] > 243: if 245 <= data[p] { goto st0 } case data[p] >= 241: goto st6 } default: goto st3 } goto st60 stCase0: st0: cs = 0 goto _out tr51: pb = p goto st1 st1: if p++; p == pe { goto _testEof1 } stCase1: if 128 <= data[p] && data[p] <= 191 { goto st60 } goto st0 tr52: pb = p goto st2 st2: if p++; p == pe { goto _testEof2 } stCase2: if 160 <= data[p] && data[p] <= 191 { goto st1 } goto st0 tr53: pb = p goto st3 st3: if p++; p == pe { goto _testEof3 } stCase3: if 128 <= data[p] && data[p] <= 191 { goto st1 } goto st0 tr54: pb = p goto st4 st4: if p++; p == pe { goto _testEof4 } stCase4: if 128 <= data[p] && data[p] <= 159 { goto st1 } goto st0 tr55: pb = p goto st5 st5: if p++; p == pe { goto _testEof5 } stCase5: if 144 <= data[p] && data[p] <= 191 { goto st3 } goto st0 tr56: pb = p goto st6 st6: if p++; p == pe { goto _testEof6 } stCase6: if 128 <= data[p] && data[p] <= 191 { goto st3 } goto st0 tr57: pb = p goto st7 st7: if p++; p == pe { goto _testEof7 } stCase7: if 128 <= data[p] && data[p] <= 143 { goto st3 } goto st0 stCase8: if 48 <= data[p] && data[p] <= 57 { goto tr4 } goto st0 tr4: pb = p goto st9 st9: if p++; p == pe { goto _testEof9 } stCase9: if 48 <= data[p] && data[p] <= 57 { goto st10 } goto st0 st10: if p++; p == pe { goto _testEof10 } stCase10: if 48 <= data[p] && data[p] <= 57 { goto st11 } goto st0 st11: if p++; p == pe { goto _testEof11 } stCase11: if 48 <= data[p] && data[p] <= 57 { goto st12 } goto st0 st12: if p++; p == pe { goto _testEof12 } stCase12: if data[p] == 45 { goto st13 } goto st0 st13: if p++; p == pe { goto _testEof13 } stCase13: switch data[p] { case 48: goto st14 case 49: goto st44 } goto st0 st14: if p++; p == pe { goto _testEof14 } stCase14: if 49 <= data[p] && data[p] <= 57 { goto st15 } goto st0 st15: if p++; p == pe { goto _testEof15 } stCase15: if data[p] == 45 { goto st16 } goto st0 st16: if p++; p == pe { goto _testEof16 } stCase16: switch data[p] { case 48: goto st17 case 51: goto st43 } if 49 <= data[p] && data[p] <= 50 { goto st42 } goto st0 st17: if p++; p == pe { goto _testEof17 } stCase17: if 49 <= data[p] && data[p] <= 57 { goto st18 } goto st0 st18: if p++; p == pe { goto _testEof18 } stCase18: if data[p] == 84 { goto st19 } goto st0 st19: if p++; p == pe { goto _testEof19 } stCase19: if data[p] == 50 { goto st41 } if 48 <= data[p] && data[p] <= 49 { goto st20 } goto st0 st20: if p++; p == pe { goto _testEof20 } stCase20: if 48 <= data[p] && data[p] <= 57 { goto st21 } goto st0 st21: if p++; p == pe { goto _testEof21 } stCase21: if data[p] == 58 { goto st22 } goto st0 st22: if p++; p == pe { goto _testEof22 } stCase22: if 48 <= data[p] && data[p] <= 53 { goto st23 } goto st0 st23: if p++; p == pe { goto _testEof23 } stCase23: if 48 <= data[p] && data[p] <= 57 { goto st24 } goto st0 st24: if p++; p == pe { goto _testEof24 } stCase24: if data[p] == 58 { goto st25 } goto st0 st25: if p++; p == pe { goto _testEof25 } stCase25: if 48 <= data[p] && data[p] <= 53 { goto st26 } goto st0 st26: if p++; p == pe { goto _testEof26 } stCase26: if 48 <= data[p] && data[p] <= 57 { goto st27 } goto st0 st27: if p++; p == pe { goto _testEof27 } stCase27: switch data[p] { case 43: goto st28 case 45: goto st28 case 46: goto st34 case 90: goto st61 } goto st0 st28: if p++; p == pe { goto _testEof28 } stCase28: if data[p] == 50 { goto st33 } if 48 <= data[p] && data[p] <= 49 { goto st29 } goto st0 st29: if p++; p == pe { goto _testEof29 } stCase29: if 48 <= data[p] && data[p] <= 57 { goto st30 } goto st0 st30: if p++; p == pe { goto _testEof30 } stCase30: if data[p] == 58 { goto st31 } goto st0 st31: if p++; p == pe { goto _testEof31 } stCase31: if 48 <= data[p] && data[p] <= 53 { goto st32 } goto st0 st32: if p++; p == pe { goto _testEof32 } stCase32: if 48 <= data[p] && data[p] <= 57 { goto st61 } goto st0 st61: if p++; p == pe { goto _testEof61 } stCase61: goto st0 st33: if p++; p == pe { goto _testEof33 } stCase33: if 48 <= data[p] && data[p] <= 51 { goto st30 } goto st0 st34: if p++; p == pe { goto _testEof34 } stCase34: if 48 <= data[p] && data[p] <= 57 { goto st35 } goto st0 st35: if p++; p == pe { goto _testEof35 } stCase35: switch data[p] { case 43: goto st28 case 45: goto st28 case 90: goto st61 } if 48 <= data[p] && data[p] <= 57 { goto st36 } goto st0 st36: if p++; p == pe { goto _testEof36 } stCase36: switch data[p] { case 43: goto st28 case 45: goto st28 case 90: goto st61 } if 48 <= data[p] && data[p] <= 57 { goto st37 } goto st0 st37: if p++; p == pe { goto _testEof37 } stCase37: switch data[p] { case 43: goto st28 case 45: goto st28 case 90: goto st61 } if 48 <= data[p] && data[p] <= 57 { goto st38 } goto st0 st38: if p++; p == pe { goto _testEof38 } stCase38: switch data[p] { case 43: goto st28 case 45: goto st28 case 90: goto st61 } if 48 <= data[p] && data[p] <= 57 { goto st39 } goto st0 st39: if p++; p == pe { goto _testEof39 } stCase39: switch data[p] { case 43: goto st28 case 45: goto st28 case 90: goto st61 } if 48 <= data[p] && data[p] <= 57 { goto st40 } goto st0 st40: if p++; p == pe { goto _testEof40 } stCase40: switch data[p] { case 43: goto st28 case 45: goto st28 case 90: goto st61 } goto st0 st41: if p++; p == pe { goto _testEof41 } stCase41: if 48 <= data[p] && data[p] <= 51 { goto st21 } goto st0 st42: if p++; p == pe { goto _testEof42 } stCase42: if 48 <= data[p] && data[p] <= 57 { goto st18 } goto st0 st43: if p++; p == pe { goto _testEof43 } stCase43: if 48 <= data[p] && data[p] <= 49 { goto st18 } goto st0 st44: if p++; p == pe { goto _testEof44 } stCase44: if 48 <= data[p] && data[p] <= 50 { goto st15 } goto st0 stCase45: if 33 <= data[p] && data[p] <= 126 { goto tr41 } goto st0 tr41: pb = p goto st62 st62: if p++; p == pe { goto _testEof62 } stCase62: if 33 <= data[p] && data[p] <= 126 { goto st63 } goto st0 st63: if p++; p == pe { goto _testEof63 } stCase63: if 33 <= data[p] && data[p] <= 126 { goto st64 } goto st0 st64: if p++; p == pe { goto _testEof64 } stCase64: if 33 <= data[p] && data[p] <= 126 { goto st65 } goto st0 st65: if p++; p == pe { goto _testEof65 } stCase65: if 33 <= data[p] && data[p] <= 126 { goto st66 } goto st0 st66: if p++; p == pe { goto _testEof66 } stCase66: if 33 <= data[p] && data[p] <= 126 { goto st67 } goto st0 st67: if p++; p == pe { goto _testEof67 } stCase67: if 33 <= data[p] && data[p] <= 126 { goto st68 } goto st0 st68: if p++; p == pe { goto _testEof68 } stCase68: if 33 <= data[p] && data[p] <= 126 { goto st69 } goto st0 st69: if p++; p == pe { goto _testEof69 } stCase69: if 33 <= data[p] && data[p] <= 126 { goto st70 } goto st0 st70: if p++; p == pe { goto _testEof70 } stCase70: if 33 <= data[p] && data[p] <= 126 { goto st71 } goto st0 st71: if p++; p == pe { goto _testEof71 } stCase71: if 33 <= data[p] && data[p] <= 126 { goto st72 } goto st0 st72: if p++; p == pe { goto _testEof72 } stCase72: if 33 <= data[p] && data[p] <= 126 { goto st73 } goto st0 st73: if p++; p == pe { goto _testEof73 } stCase73: if 33 <= data[p] && data[p] <= 126 { goto st74 } goto st0 st74: if p++; p == pe { goto _testEof74 } stCase74: if 33 <= data[p] && data[p] <= 126 { goto st75 } goto st0 st75: if p++; p == pe { goto _testEof75 } stCase75: if 33 <= data[p] && data[p] <= 126 { goto st76 } goto st0 st76: if p++; p == pe { goto _testEof76 } stCase76: if 33 <= data[p] && data[p] <= 126 { goto st77 } goto st0 st77: if p++; p == pe { goto _testEof77 } stCase77: if 33 <= data[p] && data[p] <= 126 { goto st78 } goto st0 st78: if p++; p == pe { goto _testEof78 } stCase78: if 33 <= data[p] && data[p] <= 126 { goto st79 } goto st0 st79: if p++; p == pe { goto _testEof79 } stCase79: if 33 <= data[p] && data[p] <= 126 { goto st80 } goto st0 st80: if p++; p == pe { goto _testEof80 } stCase80: if 33 <= data[p] && data[p] <= 126 { goto st81 } goto st0 st81: if p++; p == pe { goto _testEof81 } stCase81: if 33 <= data[p] && data[p] <= 126 { goto st82 } goto st0 st82: if p++; p == pe { goto _testEof82 } stCase82: if 33 <= data[p] && data[p] <= 126 { goto st83 } goto st0 st83: if p++; p == pe { goto _testEof83 } stCase83: if 33 <= data[p] && data[p] <= 126 { goto st84 } goto st0 st84: if p++; p == pe { goto _testEof84 } stCase84: if 33 <= data[p] && data[p] <= 126 { goto st85 } goto st0 st85: if p++; p == pe { goto _testEof85 } stCase85: if 33 <= data[p] && data[p] <= 126 { goto st86 } goto st0 st86: if p++; p == pe { goto _testEof86 } stCase86: if 33 <= data[p] && data[p] <= 126 { goto st87 } goto st0 st87: if p++; p == pe { goto _testEof87 } stCase87: if 33 <= data[p] && data[p] <= 126 { goto st88 } goto st0 st88: if p++; p == pe { goto _testEof88 } stCase88: if 33 <= data[p] && data[p] <= 126 { goto st89 } goto st0 st89: if p++; p == pe { goto _testEof89 } stCase89: if 33 <= data[p] && data[p] <= 126 { goto st90 } goto st0 st90: if p++; p == pe { goto _testEof90 } stCase90: if 33 <= data[p] && data[p] <= 126 { goto st91 } goto st0 st91: if p++; p == pe { goto _testEof91 } stCase91: if 33 <= data[p] && data[p] <= 126 { goto st92 } goto st0 st92: if p++; p == pe { goto _testEof92 } stCase92: if 33 <= data[p] && data[p] <= 126 { goto st93 } goto st0 st93: if p++; p == pe { goto _testEof93 } stCase93: if 33 <= data[p] && data[p] <= 126 { goto st94 } goto st0 st94: if p++; p == pe { goto _testEof94 } stCase94: if 33 <= data[p] && data[p] <= 126 { goto st95 } goto st0 st95: if p++; p == pe { goto _testEof95 } stCase95: if 33 <= data[p] && data[p] <= 126 { goto st96 } goto st0 st96: if p++; p == pe { goto _testEof96 } stCase96: if 33 <= data[p] && data[p] <= 126 { goto st97 } goto st0 st97: if p++; p == pe { goto _testEof97 } stCase97: if 33 <= data[p] && data[p] <= 126 { goto st98 } goto st0 st98: if p++; p == pe { goto _testEof98 } stCase98: if 33 <= data[p] && data[p] <= 126 { goto st99 } goto st0 st99: if p++; p == pe { goto _testEof99 } stCase99: if 33 <= data[p] && data[p] <= 126 { goto st100 } goto st0 st100: if p++; p == pe { goto _testEof100 } stCase100: if 33 <= data[p] && data[p] <= 126 { goto st101 } goto st0 st101: if p++; p == pe { goto _testEof101 } stCase101: if 33 <= data[p] && data[p] <= 126 { goto st102 } goto st0 st102: if p++; p == pe { goto _testEof102 } stCase102: if 33 <= data[p] && data[p] <= 126 { goto st103 } goto st0 st103: if p++; p == pe { goto _testEof103 } stCase103: if 33 <= data[p] && data[p] <= 126 { goto st104 } goto st0 st104: if p++; p == pe { goto _testEof104 } stCase104: if 33 <= data[p] && data[p] <= 126 { goto st105 } goto st0 st105: if p++; p == pe { goto _testEof105 } stCase105: if 33 <= data[p] && data[p] <= 126 { goto st106 } goto st0 st106: if p++; p == pe { goto _testEof106 } stCase106: if 33 <= data[p] && data[p] <= 126 { goto st107 } goto st0 st107: if p++; p == pe { goto _testEof107 } stCase107: if 33 <= data[p] && data[p] <= 126 { goto st108 } goto st0 st108: if p++; p == pe { goto _testEof108 } stCase108: if 33 <= data[p] && data[p] <= 126 { goto st109 } goto st0 st109: if p++; p == pe { goto _testEof109 } stCase109: if 33 <= data[p] && data[p] <= 126 { goto st110 } goto st0 st110: if p++; p == pe { goto _testEof110 } stCase110: if 33 <= data[p] && data[p] <= 126 { goto st111 } goto st0 st111: if p++; p == pe { goto _testEof111 } stCase111: if 33 <= data[p] && data[p] <= 126 { goto st112 } goto st0 st112: if p++; p == pe { goto _testEof112 } stCase112: if 33 <= data[p] && data[p] <= 126 { goto st113 } goto st0 st113: if p++; p == pe { goto _testEof113 } stCase113: if 33 <= data[p] && data[p] <= 126 { goto st114 } goto st0 st114: if p++; p == pe { goto _testEof114 } stCase114: if 33 <= data[p] && data[p] <= 126 { goto st115 } goto st0 st115: if p++; p == pe { goto _testEof115 } stCase115: if 33 <= data[p] && data[p] <= 126 { goto st116 } goto st0 st116: if p++; p == pe { goto _testEof116 } stCase116: if 33 <= data[p] && data[p] <= 126 { goto st117 } goto st0 st117: if p++; p == pe { goto _testEof117 } stCase117: if 33 <= data[p] && data[p] <= 126 { goto st118 } goto st0 st118: if p++; p == pe { goto _testEof118 } stCase118: if 33 <= data[p] && data[p] <= 126 { goto st119 } goto st0 st119: if p++; p == pe { goto _testEof119 } stCase119: if 33 <= data[p] && data[p] <= 126 { goto st120 } goto st0 st120: if p++; p == pe { goto _testEof120 } stCase120: if 33 <= data[p] && data[p] <= 126 { goto st121 } goto st0 st121: if p++; p == pe { goto _testEof121 } stCase121: if 33 <= data[p] && data[p] <= 126 { goto st122 } goto st0 st122: if p++; p == pe { goto _testEof122 } stCase122: if 33 <= data[p] && data[p] <= 126 { goto st123 } goto st0 st123: if p++; p == pe { goto _testEof123 } stCase123: if 33 <= data[p] && data[p] <= 126 { goto st124 } goto st0 st124: if p++; p == pe { goto _testEof124 } stCase124: if 33 <= data[p] && data[p] <= 126 { goto st125 } goto st0 st125: if p++; p == pe { goto _testEof125 } stCase125: if 33 <= data[p] && data[p] <= 126 { goto st126 } goto st0 st126: if p++; p == pe { goto _testEof126 } stCase126: if 33 <= data[p] && data[p] <= 126 { goto st127 } goto st0 st127: if p++; p == pe { goto _testEof127 } stCase127: if 33 <= data[p] && data[p] <= 126 { goto st128 } goto st0 st128: if p++; p == pe { goto _testEof128 } stCase128: if 33 <= data[p] && data[p] <= 126 { goto st129 } goto st0 st129: if p++; p == pe { goto _testEof129 } stCase129: if 33 <= data[p] && data[p] <= 126 { goto st130 } goto st0 st130: if p++; p == pe { goto _testEof130 } stCase130: if 33 <= data[p] && data[p] <= 126 { goto st131 } goto st0 st131: if p++; p == pe { goto _testEof131 } stCase131: if 33 <= data[p] && data[p] <= 126 { goto st132 } goto st0 st132: if p++; p == pe { goto _testEof132 } stCase132: if 33 <= data[p] && data[p] <= 126 { goto st133 } goto st0 st133: if p++; p == pe { goto _testEof133 } stCase133: if 33 <= data[p] && data[p] <= 126 { goto st134 } goto st0 st134: if p++; p == pe { goto _testEof134 } stCase134: if 33 <= data[p] && data[p] <= 126 { goto st135 } goto st0 st135: if p++; p == pe { goto _testEof135 } stCase135: if 33 <= data[p] && data[p] <= 126 { goto st136 } goto st0 st136: if p++; p == pe { goto _testEof136 } stCase136: if 33 <= data[p] && data[p] <= 126 { goto st137 } goto st0 st137: if p++; p == pe { goto _testEof137 } stCase137: if 33 <= data[p] && data[p] <= 126 { goto st138 } goto st0 st138: if p++; p == pe { goto _testEof138 } stCase138: if 33 <= data[p] && data[p] <= 126 { goto st139 } goto st0 st139: if p++; p == pe { goto _testEof139 } stCase139: if 33 <= data[p] && data[p] <= 126 { goto st140 } goto st0 st140: if p++; p == pe { goto _testEof140 } stCase140: if 33 <= data[p] && data[p] <= 126 { goto st141 } goto st0 st141: if p++; p == pe { goto _testEof141 } stCase141: if 33 <= data[p] && data[p] <= 126 { goto st142 } goto st0 st142: if p++; p == pe { goto _testEof142 } stCase142: if 33 <= data[p] && data[p] <= 126 { goto st143 } goto st0 st143: if p++; p == pe { goto _testEof143 } stCase143: if 33 <= data[p] && data[p] <= 126 { goto st144 } goto st0 st144: if p++; p == pe { goto _testEof144 } stCase144: if 33 <= data[p] && data[p] <= 126 { goto st145 } goto st0 st145: if p++; p == pe { goto _testEof145 } stCase145: if 33 <= data[p] && data[p] <= 126 { goto st146 } goto st0 st146: if p++; p == pe { goto _testEof146 } stCase146: if 33 <= data[p] && data[p] <= 126 { goto st147 } goto st0 st147: if p++; p == pe { goto _testEof147 } stCase147: if 33 <= data[p] && data[p] <= 126 { goto st148 } goto st0 st148: if p++; p == pe { goto _testEof148 } stCase148: if 33 <= data[p] && data[p] <= 126 { goto st149 } goto st0 st149: if p++; p == pe { goto _testEof149 } stCase149: if 33 <= data[p] && data[p] <= 126 { goto st150 } goto st0 st150: if p++; p == pe { goto _testEof150 } stCase150: if 33 <= data[p] && data[p] <= 126 { goto st151 } goto st0 st151: if p++; p == pe { goto _testEof151 } stCase151: if 33 <= data[p] && data[p] <= 126 { goto st152 } goto st0 st152: if p++; p == pe { goto _testEof152 } stCase152: if 33 <= data[p] && data[p] <= 126 { goto st153 } goto st0 st153: if p++; p == pe { goto _testEof153 } stCase153: if 33 <= data[p] && data[p] <= 126 { goto st154 } goto st0 st154: if p++; p == pe { goto _testEof154 } stCase154: if 33 <= data[p] && data[p] <= 126 { goto st155 } goto st0 st155: if p++; p == pe { goto _testEof155 } stCase155: if 33 <= data[p] && data[p] <= 126 { goto st156 } goto st0 st156: if p++; p == pe { goto _testEof156 } stCase156: if 33 <= data[p] && data[p] <= 126 { goto st157 } goto st0 st157: if p++; p == pe { goto _testEof157 } stCase157: if 33 <= data[p] && data[p] <= 126 { goto st158 } goto st0 st158: if p++; p == pe { goto _testEof158 } stCase158: if 33 <= data[p] && data[p] <= 126 { goto st159 } goto st0 st159: if p++; p == pe { goto _testEof159 } stCase159: if 33 <= data[p] && data[p] <= 126 { goto st160 } goto st0 st160: if p++; p == pe { goto _testEof160 } stCase160: if 33 <= data[p] && data[p] <= 126 { goto st161 } goto st0 st161: if p++; p == pe { goto _testEof161 } stCase161: if 33 <= data[p] && data[p] <= 126 { goto st162 } goto st0 st162: if p++; p == pe { goto _testEof162 } stCase162: if 33 <= data[p] && data[p] <= 126 { goto st163 } goto st0 st163: if p++; p == pe { goto _testEof163 } stCase163: if 33 <= data[p] && data[p] <= 126 { goto st164 } goto st0 st164: if p++; p == pe { goto _testEof164 } stCase164: if 33 <= data[p] && data[p] <= 126 { goto st165 } goto st0 st165: if p++; p == pe { goto _testEof165 } stCase165: if 33 <= data[p] && data[p] <= 126 { goto st166 } goto st0 st166: if p++; p == pe { goto _testEof166 } stCase166: if 33 <= data[p] && data[p] <= 126 { goto st167 } goto st0 st167: if p++; p == pe { goto _testEof167 } stCase167: if 33 <= data[p] && data[p] <= 126 { goto st168 } goto st0 st168: if p++; p == pe { goto _testEof168 } stCase168: if 33 <= data[p] && data[p] <= 126 { goto st169 } goto st0 st169: if p++; p == pe { goto _testEof169 } stCase169: if 33 <= data[p] && data[p] <= 126 { goto st170 } goto st0 st170: if p++; p == pe { goto _testEof170 } stCase170: if 33 <= data[p] && data[p] <= 126 { goto st171 } goto st0 st171: if p++; p == pe { goto _testEof171 } stCase171: if 33 <= data[p] && data[p] <= 126 { goto st172 } goto st0 st172: if p++; p == pe { goto _testEof172 } stCase172: if 33 <= data[p] && data[p] <= 126 { goto st173 } goto st0 st173: if p++; p == pe { goto _testEof173 } stCase173: if 33 <= data[p] && data[p] <= 126 { goto st174 } goto st0 st174: if p++; p == pe { goto _testEof174 } stCase174: if 33 <= data[p] && data[p] <= 126 { goto st175 } goto st0 st175: if p++; p == pe { goto _testEof175 } stCase175: if 33 <= data[p] && data[p] <= 126 { goto st176 } goto st0 st176: if p++; p == pe { goto _testEof176 } stCase176: if 33 <= data[p] && data[p] <= 126 { goto st177 } goto st0 st177: if p++; p == pe { goto _testEof177 } stCase177: if 33 <= data[p] && data[p] <= 126 { goto st178 } goto st0 st178: if p++; p == pe { goto _testEof178 } stCase178: if 33 <= data[p] && data[p] <= 126 { goto st179 } goto st0 st179: if p++; p == pe { goto _testEof179 } stCase179: if 33 <= data[p] && data[p] <= 126 { goto st180 } goto st0 st180: if p++; p == pe { goto _testEof180 } stCase180: if 33 <= data[p] && data[p] <= 126 { goto st181 } goto st0 st181: if p++; p == pe { goto _testEof181 } stCase181: if 33 <= data[p] && data[p] <= 126 { goto st182 } goto st0 st182: if p++; p == pe { goto _testEof182 } stCase182: if 33 <= data[p] && data[p] <= 126 { goto st183 } goto st0 st183: if p++; p == pe { goto _testEof183 } stCase183: if 33 <= data[p] && data[p] <= 126 { goto st184 } goto st0 st184: if p++; p == pe { goto _testEof184 } stCase184: if 33 <= data[p] && data[p] <= 126 { goto st185 } goto st0 st185: if p++; p == pe { goto _testEof185 } stCase185: if 33 <= data[p] && data[p] <= 126 { goto st186 } goto st0 st186: if p++; p == pe { goto _testEof186 } stCase186: if 33 <= data[p] && data[p] <= 126 { goto st187 } goto st0 st187: if p++; p == pe { goto _testEof187 } stCase187: if 33 <= data[p] && data[p] <= 126 { goto st188 } goto st0 st188: if p++; p == pe { goto _testEof188 } stCase188: if 33 <= data[p] && data[p] <= 126 { goto st189 } goto st0 st189: if p++; p == pe { goto _testEof189 } stCase189: if 33 <= data[p] && data[p] <= 126 { goto st190 } goto st0 st190: if p++; p == pe { goto _testEof190 } stCase190: if 33 <= data[p] && data[p] <= 126 { goto st191 } goto st0 st191: if p++; p == pe { goto _testEof191 } stCase191: if 33 <= data[p] && data[p] <= 126 { goto st192 } goto st0 st192: if p++; p == pe { goto _testEof192 } stCase192: if 33 <= data[p] && data[p] <= 126 { goto st193 } goto st0 st193: if p++; p == pe { goto _testEof193 } stCase193: if 33 <= data[p] && data[p] <= 126 { goto st194 } goto st0 st194: if p++; p == pe { goto _testEof194 } stCase194: if 33 <= data[p] && data[p] <= 126 { goto st195 } goto st0 st195: if p++; p == pe { goto _testEof195 } stCase195: if 33 <= data[p] && data[p] <= 126 { goto st196 } goto st0 st196: if p++; p == pe { goto _testEof196 } stCase196: if 33 <= data[p] && data[p] <= 126 { goto st197 } goto st0 st197: if p++; p == pe { goto _testEof197 } stCase197: if 33 <= data[p] && data[p] <= 126 { goto st198 } goto st0 st198: if p++; p == pe { goto _testEof198 } stCase198: if 33 <= data[p] && data[p] <= 126 { goto st199 } goto st0 st199: if p++; p == pe { goto _testEof199 } stCase199: if 33 <= data[p] && data[p] <= 126 { goto st200 } goto st0 st200: if p++; p == pe { goto _testEof200 } stCase200: if 33 <= data[p] && data[p] <= 126 { goto st201 } goto st0 st201: if p++; p == pe { goto _testEof201 } stCase201: if 33 <= data[p] && data[p] <= 126 { goto st202 } goto st0 st202: if p++; p == pe { goto _testEof202 } stCase202: if 33 <= data[p] && data[p] <= 126 { goto st203 } goto st0 st203: if p++; p == pe { goto _testEof203 } stCase203: if 33 <= data[p] && data[p] <= 126 { goto st204 } goto st0 st204: if p++; p == pe { goto _testEof204 } stCase204: if 33 <= data[p] && data[p] <= 126 { goto st205 } goto st0 st205: if p++; p == pe { goto _testEof205 } stCase205: if 33 <= data[p] && data[p] <= 126 { goto st206 } goto st0 st206: if p++; p == pe { goto _testEof206 } stCase206: if 33 <= data[p] && data[p] <= 126 { goto st207 } goto st0 st207: if p++; p == pe { goto _testEof207 } stCase207: if 33 <= data[p] && data[p] <= 126 { goto st208 } goto st0 st208: if p++; p == pe { goto _testEof208 } stCase208: if 33 <= data[p] && data[p] <= 126 { goto st209 } goto st0 st209: if p++; p == pe { goto _testEof209 } stCase209: if 33 <= data[p] && data[p] <= 126 { goto st210 } goto st0 st210: if p++; p == pe { goto _testEof210 } stCase210: if 33 <= data[p] && data[p] <= 126 { goto st211 } goto st0 st211: if p++; p == pe { goto _testEof211 } stCase211: if 33 <= data[p] && data[p] <= 126 { goto st212 } goto st0 st212: if p++; p == pe { goto _testEof212 } stCase212: if 33 <= data[p] && data[p] <= 126 { goto st213 } goto st0 st213: if p++; p == pe { goto _testEof213 } stCase213: if 33 <= data[p] && data[p] <= 126 { goto st214 } goto st0 st214: if p++; p == pe { goto _testEof214 } stCase214: if 33 <= data[p] && data[p] <= 126 { goto st215 } goto st0 st215: if p++; p == pe { goto _testEof215 } stCase215: if 33 <= data[p] && data[p] <= 126 { goto st216 } goto st0 st216: if p++; p == pe { goto _testEof216 } stCase216: if 33 <= data[p] && data[p] <= 126 { goto st217 } goto st0 st217: if p++; p == pe { goto _testEof217 } stCase217: if 33 <= data[p] && data[p] <= 126 { goto st218 } goto st0 st218: if p++; p == pe { goto _testEof218 } stCase218: if 33 <= data[p] && data[p] <= 126 { goto st219 } goto st0 st219: if p++; p == pe { goto _testEof219 } stCase219: if 33 <= data[p] && data[p] <= 126 { goto st220 } goto st0 st220: if p++; p == pe { goto _testEof220 } stCase220: if 33 <= data[p] && data[p] <= 126 { goto st221 } goto st0 st221: if p++; p == pe { goto _testEof221 } stCase221: if 33 <= data[p] && data[p] <= 126 { goto st222 } goto st0 st222: if p++; p == pe { goto _testEof222 } stCase222: if 33 <= data[p] && data[p] <= 126 { goto st223 } goto st0 st223: if p++; p == pe { goto _testEof223 } stCase223: if 33 <= data[p] && data[p] <= 126 { goto st224 } goto st0 st224: if p++; p == pe { goto _testEof224 } stCase224: if 33 <= data[p] && data[p] <= 126 { goto st225 } goto st0 st225: if p++; p == pe { goto _testEof225 } stCase225: if 33 <= data[p] && data[p] <= 126 { goto st226 } goto st0 st226: if p++; p == pe { goto _testEof226 } stCase226: if 33 <= data[p] && data[p] <= 126 { goto st227 } goto st0 st227: if p++; p == pe { goto _testEof227 } stCase227: if 33 <= data[p] && data[p] <= 126 { goto st228 } goto st0 st228: if p++; p == pe { goto _testEof228 } stCase228: if 33 <= data[p] && data[p] <= 126 { goto st229 } goto st0 st229: if p++; p == pe { goto _testEof229 } stCase229: if 33 <= data[p] && data[p] <= 126 { goto st230 } goto st0 st230: if p++; p == pe { goto _testEof230 } stCase230: if 33 <= data[p] && data[p] <= 126 { goto st231 } goto st0 st231: if p++; p == pe { goto _testEof231 } stCase231: if 33 <= data[p] && data[p] <= 126 { goto st232 } goto st0 st232: if p++; p == pe { goto _testEof232 } stCase232: if 33 <= data[p] && data[p] <= 126 { goto st233 } goto st0 st233: if p++; p == pe { goto _testEof233 } stCase233: if 33 <= data[p] && data[p] <= 126 { goto st234 } goto st0 st234: if p++; p == pe { goto _testEof234 } stCase234: if 33 <= data[p] && data[p] <= 126 { goto st235 } goto st0 st235: if p++; p == pe { goto _testEof235 } stCase235: if 33 <= data[p] && data[p] <= 126 { goto st236 } goto st0 st236: if p++; p == pe { goto _testEof236 } stCase236: if 33 <= data[p] && data[p] <= 126 { goto st237 } goto st0 st237: if p++; p == pe { goto _testEof237 } stCase237: if 33 <= data[p] && data[p] <= 126 { goto st238 } goto st0 st238: if p++; p == pe { goto _testEof238 } stCase238: if 33 <= data[p] && data[p] <= 126 { goto st239 } goto st0 st239: if p++; p == pe { goto _testEof239 } stCase239: if 33 <= data[p] && data[p] <= 126 { goto st240 } goto st0 st240: if p++; p == pe { goto _testEof240 } stCase240: if 33 <= data[p] && data[p] <= 126 { goto st241 } goto st0 st241: if p++; p == pe { goto _testEof241 } stCase241: if 33 <= data[p] && data[p] <= 126 { goto st242 } goto st0 st242: if p++; p == pe { goto _testEof242 } stCase242: if 33 <= data[p] && data[p] <= 126 { goto st243 } goto st0 st243: if p++; p == pe { goto _testEof243 } stCase243: if 33 <= data[p] && data[p] <= 126 { goto st244 } goto st0 st244: if p++; p == pe { goto _testEof244 } stCase244: if 33 <= data[p] && data[p] <= 126 { goto st245 } goto st0 st245: if p++; p == pe { goto _testEof245 } stCase245: if 33 <= data[p] && data[p] <= 126 { goto st246 } goto st0 st246: if p++; p == pe { goto _testEof246 } stCase246: if 33 <= data[p] && data[p] <= 126 { goto st247 } goto st0 st247: if p++; p == pe { goto _testEof247 } stCase247: if 33 <= data[p] && data[p] <= 126 { goto st248 } goto st0 st248: if p++; p == pe { goto _testEof248 } stCase248: if 33 <= data[p] && data[p] <= 126 { goto st249 } goto st0 st249: if p++; p == pe { goto _testEof249 } stCase249: if 33 <= data[p] && data[p] <= 126 { goto st250 } goto st0 st250: if p++; p == pe { goto _testEof250 } stCase250: if 33 <= data[p] && data[p] <= 126 { goto st251 } goto st0 st251: if p++; p == pe { goto _testEof251 } stCase251: if 33 <= data[p] && data[p] <= 126 { goto st252 } goto st0 st252: if p++; p == pe { goto _testEof252 } stCase252: if 33 <= data[p] && data[p] <= 126 { goto st253 } goto st0 st253: if p++; p == pe { goto _testEof253 } stCase253: if 33 <= data[p] && data[p] <= 126 { goto st254 } goto st0 st254: if p++; p == pe { goto _testEof254 } stCase254: if 33 <= data[p] && data[p] <= 126 { goto st255 } goto st0 st255: if p++; p == pe { goto _testEof255 } stCase255: if 33 <= data[p] && data[p] <= 126 { goto st256 } goto st0 st256: if p++; p == pe { goto _testEof256 } stCase256: if 33 <= data[p] && data[p] <= 126 { goto st257 } goto st0 st257: if p++; p == pe { goto _testEof257 } stCase257: if 33 <= data[p] && data[p] <= 126 { goto st258 } goto st0 st258: if p++; p == pe { goto _testEof258 } stCase258: if 33 <= data[p] && data[p] <= 126 { goto st259 } goto st0 st259: if p++; p == pe { goto _testEof259 } stCase259: if 33 <= data[p] && data[p] <= 126 { goto st260 } goto st0 st260: if p++; p == pe { goto _testEof260 } stCase260: if 33 <= data[p] && data[p] <= 126 { goto st261 } goto st0 st261: if p++; p == pe { goto _testEof261 } stCase261: if 33 <= data[p] && data[p] <= 126 { goto st262 } goto st0 st262: if p++; p == pe { goto _testEof262 } stCase262: if 33 <= data[p] && data[p] <= 126 { goto st263 } goto st0 st263: if p++; p == pe { goto _testEof263 } stCase263: if 33 <= data[p] && data[p] <= 126 { goto st264 } goto st0 st264: if p++; p == pe { goto _testEof264 } stCase264: if 33 <= data[p] && data[p] <= 126 { goto st265 } goto st0 st265: if p++; p == pe { goto _testEof265 } stCase265: if 33 <= data[p] && data[p] <= 126 { goto st266 } goto st0 st266: if p++; p == pe { goto _testEof266 } stCase266: if 33 <= data[p] && data[p] <= 126 { goto st267 } goto st0 st267: if p++; p == pe { goto _testEof267 } stCase267: if 33 <= data[p] && data[p] <= 126 { goto st268 } goto st0 st268: if p++; p == pe { goto _testEof268 } stCase268: if 33 <= data[p] && data[p] <= 126 { goto st269 } goto st0 st269: if p++; p == pe { goto _testEof269 } stCase269: if 33 <= data[p] && data[p] <= 126 { goto st270 } goto st0 st270: if p++; p == pe { goto _testEof270 } stCase270: if 33 <= data[p] && data[p] <= 126 { goto st271 } goto st0 st271: if p++; p == pe { goto _testEof271 } stCase271: if 33 <= data[p] && data[p] <= 126 { goto st272 } goto st0 st272: if p++; p == pe { goto _testEof272 } stCase272: if 33 <= data[p] && data[p] <= 126 { goto st273 } goto st0 st273: if p++; p == pe { goto _testEof273 } stCase273: if 33 <= data[p] && data[p] <= 126 { goto st274 } goto st0 st274: if p++; p == pe { goto _testEof274 } stCase274: if 33 <= data[p] && data[p] <= 126 { goto st275 } goto st0 st275: if p++; p == pe { goto _testEof275 } stCase275: if 33 <= data[p] && data[p] <= 126 { goto st276 } goto st0 st276: if p++; p == pe { goto _testEof276 } stCase276: if 33 <= data[p] && data[p] <= 126 { goto st277 } goto st0 st277: if p++; p == pe { goto _testEof277 } stCase277: if 33 <= data[p] && data[p] <= 126 { goto st278 } goto st0 st278: if p++; p == pe { goto _testEof278 } stCase278: if 33 <= data[p] && data[p] <= 126 { goto st279 } goto st0 st279: if p++; p == pe { goto _testEof279 } stCase279: if 33 <= data[p] && data[p] <= 126 { goto st280 } goto st0 st280: if p++; p == pe { goto _testEof280 } stCase280: if 33 <= data[p] && data[p] <= 126 { goto st281 } goto st0 st281: if p++; p == pe { goto _testEof281 } stCase281: if 33 <= data[p] && data[p] <= 126 { goto st282 } goto st0 st282: if p++; p == pe { goto _testEof282 } stCase282: if 33 <= data[p] && data[p] <= 126 { goto st283 } goto st0 st283: if p++; p == pe { goto _testEof283 } stCase283: if 33 <= data[p] && data[p] <= 126 { goto st284 } goto st0 st284: if p++; p == pe { goto _testEof284 } stCase284: if 33 <= data[p] && data[p] <= 126 { goto st285 } goto st0 st285: if p++; p == pe { goto _testEof285 } stCase285: if 33 <= data[p] && data[p] <= 126 { goto st286 } goto st0 st286: if p++; p == pe { goto _testEof286 } stCase286: if 33 <= data[p] && data[p] <= 126 { goto st287 } goto st0 st287: if p++; p == pe { goto _testEof287 } stCase287: if 33 <= data[p] && data[p] <= 126 { goto st288 } goto st0 st288: if p++; p == pe { goto _testEof288 } stCase288: if 33 <= data[p] && data[p] <= 126 { goto st289 } goto st0 st289: if p++; p == pe { goto _testEof289 } stCase289: if 33 <= data[p] && data[p] <= 126 { goto st290 } goto st0 st290: if p++; p == pe { goto _testEof290 } stCase290: if 33 <= data[p] && data[p] <= 126 { goto st291 } goto st0 st291: if p++; p == pe { goto _testEof291 } stCase291: if 33 <= data[p] && data[p] <= 126 { goto st292 } goto st0 st292: if p++; p == pe { goto _testEof292 } stCase292: if 33 <= data[p] && data[p] <= 126 { goto st293 } goto st0 st293: if p++; p == pe { goto _testEof293 } stCase293: if 33 <= data[p] && data[p] <= 126 { goto st294 } goto st0 st294: if p++; p == pe { goto _testEof294 } stCase294: if 33 <= data[p] && data[p] <= 126 { goto st295 } goto st0 st295: if p++; p == pe { goto _testEof295 } stCase295: if 33 <= data[p] && data[p] <= 126 { goto st296 } goto st0 st296: if p++; p == pe { goto _testEof296 } stCase296: if 33 <= data[p] && data[p] <= 126 { goto st297 } goto st0 st297: if p++; p == pe { goto _testEof297 } stCase297: if 33 <= data[p] && data[p] <= 126 { goto st298 } goto st0 st298: if p++; p == pe { goto _testEof298 } stCase298: if 33 <= data[p] && data[p] <= 126 { goto st299 } goto st0 st299: if p++; p == pe { goto _testEof299 } stCase299: if 33 <= data[p] && data[p] <= 126 { goto st300 } goto st0 st300: if p++; p == pe { goto _testEof300 } stCase300: if 33 <= data[p] && data[p] <= 126 { goto st301 } goto st0 st301: if p++; p == pe { goto _testEof301 } stCase301: if 33 <= data[p] && data[p] <= 126 { goto st302 } goto st0 st302: if p++; p == pe { goto _testEof302 } stCase302: if 33 <= data[p] && data[p] <= 126 { goto st303 } goto st0 st303: if p++; p == pe { goto _testEof303 } stCase303: if 33 <= data[p] && data[p] <= 126 { goto st304 } goto st0 st304: if p++; p == pe { goto _testEof304 } stCase304: if 33 <= data[p] && data[p] <= 126 { goto st305 } goto st0 st305: if p++; p == pe { goto _testEof305 } stCase305: if 33 <= data[p] && data[p] <= 126 { goto st306 } goto st0 st306: if p++; p == pe { goto _testEof306 } stCase306: if 33 <= data[p] && data[p] <= 126 { goto st307 } goto st0 st307: if p++; p == pe { goto _testEof307 } stCase307: if 33 <= data[p] && data[p] <= 126 { goto st308 } goto st0 st308: if p++; p == pe { goto _testEof308 } stCase308: if 33 <= data[p] && data[p] <= 126 { goto st309 } goto st0 st309: if p++; p == pe { goto _testEof309 } stCase309: if 33 <= data[p] && data[p] <= 126 { goto st310 } goto st0 st310: if p++; p == pe { goto _testEof310 } stCase310: if 33 <= data[p] && data[p] <= 126 { goto st311 } goto st0 st311: if p++; p == pe { goto _testEof311 } stCase311: if 33 <= data[p] && data[p] <= 126 { goto st312 } goto st0 st312: if p++; p == pe { goto _testEof312 } stCase312: if 33 <= data[p] && data[p] <= 126 { goto st313 } goto st0 st313: if p++; p == pe { goto _testEof313 } stCase313: if 33 <= data[p] && data[p] <= 126 { goto st314 } goto st0 st314: if p++; p == pe { goto _testEof314 } stCase314: if 33 <= data[p] && data[p] <= 126 { goto st315 } goto st0 st315: if p++; p == pe { goto _testEof315 } stCase315: if 33 <= data[p] && data[p] <= 126 { goto st316 } goto st0 st316: if p++; p == pe { goto _testEof316 } stCase316: goto st0 stCase46: if 33 <= data[p] && data[p] <= 126 { goto tr42 } goto st0 tr42: pb = p goto st317 st317: if p++; p == pe { goto _testEof317 } stCase317: if 33 <= data[p] && data[p] <= 126 { goto st318 } goto st0 st318: if p++; p == pe { goto _testEof318 } stCase318: if 33 <= data[p] && data[p] <= 126 { goto st319 } goto st0 st319: if p++; p == pe { goto _testEof319 } stCase319: if 33 <= data[p] && data[p] <= 126 { goto st320 } goto st0 st320: if p++; p == pe { goto _testEof320 } stCase320: if 33 <= data[p] && data[p] <= 126 { goto st321 } goto st0 st321: if p++; p == pe { goto _testEof321 } stCase321: if 33 <= data[p] && data[p] <= 126 { goto st322 } goto st0 st322: if p++; p == pe { goto _testEof322 } stCase322: if 33 <= data[p] && data[p] <= 126 { goto st323 } goto st0 st323: if p++; p == pe { goto _testEof323 } stCase323: if 33 <= data[p] && data[p] <= 126 { goto st324 } goto st0 st324: if p++; p == pe { goto _testEof324 } stCase324: if 33 <= data[p] && data[p] <= 126 { goto st325 } goto st0 st325: if p++; p == pe { goto _testEof325 } stCase325: if 33 <= data[p] && data[p] <= 126 { goto st326 } goto st0 st326: if p++; p == pe { goto _testEof326 } stCase326: if 33 <= data[p] && data[p] <= 126 { goto st327 } goto st0 st327: if p++; p == pe { goto _testEof327 } stCase327: if 33 <= data[p] && data[p] <= 126 { goto st328 } goto st0 st328: if p++; p == pe { goto _testEof328 } stCase328: if 33 <= data[p] && data[p] <= 126 { goto st329 } goto st0 st329: if p++; p == pe { goto _testEof329 } stCase329: if 33 <= data[p] && data[p] <= 126 { goto st330 } goto st0 st330: if p++; p == pe { goto _testEof330 } stCase330: if 33 <= data[p] && data[p] <= 126 { goto st331 } goto st0 st331: if p++; p == pe { goto _testEof331 } stCase331: if 33 <= data[p] && data[p] <= 126 { goto st332 } goto st0 st332: if p++; p == pe { goto _testEof332 } stCase332: if 33 <= data[p] && data[p] <= 126 { goto st333 } goto st0 st333: if p++; p == pe { goto _testEof333 } stCase333: if 33 <= data[p] && data[p] <= 126 { goto st334 } goto st0 st334: if p++; p == pe { goto _testEof334 } stCase334: if 33 <= data[p] && data[p] <= 126 { goto st335 } goto st0 st335: if p++; p == pe { goto _testEof335 } stCase335: if 33 <= data[p] && data[p] <= 126 { goto st336 } goto st0 st336: if p++; p == pe { goto _testEof336 } stCase336: if 33 <= data[p] && data[p] <= 126 { goto st337 } goto st0 st337: if p++; p == pe { goto _testEof337 } stCase337: if 33 <= data[p] && data[p] <= 126 { goto st338 } goto st0 st338: if p++; p == pe { goto _testEof338 } stCase338: if 33 <= data[p] && data[p] <= 126 { goto st339 } goto st0 st339: if p++; p == pe { goto _testEof339 } stCase339: if 33 <= data[p] && data[p] <= 126 { goto st340 } goto st0 st340: if p++; p == pe { goto _testEof340 } stCase340: if 33 <= data[p] && data[p] <= 126 { goto st341 } goto st0 st341: if p++; p == pe { goto _testEof341 } stCase341: if 33 <= data[p] && data[p] <= 126 { goto st342 } goto st0 st342: if p++; p == pe { goto _testEof342 } stCase342: if 33 <= data[p] && data[p] <= 126 { goto st343 } goto st0 st343: if p++; p == pe { goto _testEof343 } stCase343: if 33 <= data[p] && data[p] <= 126 { goto st344 } goto st0 st344: if p++; p == pe { goto _testEof344 } stCase344: if 33 <= data[p] && data[p] <= 126 { goto st345 } goto st0 st345: if p++; p == pe { goto _testEof345 } stCase345: if 33 <= data[p] && data[p] <= 126 { goto st346 } goto st0 st346: if p++; p == pe { goto _testEof346 } stCase346: if 33 <= data[p] && data[p] <= 126 { goto st347 } goto st0 st347: if p++; p == pe { goto _testEof347 } stCase347: if 33 <= data[p] && data[p] <= 126 { goto st348 } goto st0 st348: if p++; p == pe { goto _testEof348 } stCase348: if 33 <= data[p] && data[p] <= 126 { goto st349 } goto st0 st349: if p++; p == pe { goto _testEof349 } stCase349: if 33 <= data[p] && data[p] <= 126 { goto st350 } goto st0 st350: if p++; p == pe { goto _testEof350 } stCase350: if 33 <= data[p] && data[p] <= 126 { goto st351 } goto st0 st351: if p++; p == pe { goto _testEof351 } stCase351: if 33 <= data[p] && data[p] <= 126 { goto st352 } goto st0 st352: if p++; p == pe { goto _testEof352 } stCase352: if 33 <= data[p] && data[p] <= 126 { goto st353 } goto st0 st353: if p++; p == pe { goto _testEof353 } stCase353: if 33 <= data[p] && data[p] <= 126 { goto st354 } goto st0 st354: if p++; p == pe { goto _testEof354 } stCase354: if 33 <= data[p] && data[p] <= 126 { goto st355 } goto st0 st355: if p++; p == pe { goto _testEof355 } stCase355: if 33 <= data[p] && data[p] <= 126 { goto st356 } goto st0 st356: if p++; p == pe { goto _testEof356 } stCase356: if 33 <= data[p] && data[p] <= 126 { goto st357 } goto st0 st357: if p++; p == pe { goto _testEof357 } stCase357: if 33 <= data[p] && data[p] <= 126 { goto st358 } goto st0 st358: if p++; p == pe { goto _testEof358 } stCase358: if 33 <= data[p] && data[p] <= 126 { goto st359 } goto st0 st359: if p++; p == pe { goto _testEof359 } stCase359: if 33 <= data[p] && data[p] <= 126 { goto st360 } goto st0 st360: if p++; p == pe { goto _testEof360 } stCase360: if 33 <= data[p] && data[p] <= 126 { goto st361 } goto st0 st361: if p++; p == pe { goto _testEof361 } stCase361: if 33 <= data[p] && data[p] <= 126 { goto st362 } goto st0 st362: if p++; p == pe { goto _testEof362 } stCase362: if 33 <= data[p] && data[p] <= 126 { goto st363 } goto st0 st363: if p++; p == pe { goto _testEof363 } stCase363: if 33 <= data[p] && data[p] <= 126 { goto st364 } goto st0 st364: if p++; p == pe { goto _testEof364 } stCase364: goto st0 stCase47: if 33 <= data[p] && data[p] <= 126 { goto tr43 } goto st0 tr43: pb = p goto st365 st365: if p++; p == pe { goto _testEof365 } stCase365: if 33 <= data[p] && data[p] <= 126 { goto st366 } goto st0 st366: if p++; p == pe { goto _testEof366 } stCase366: if 33 <= data[p] && data[p] <= 126 { goto st367 } goto st0 st367: if p++; p == pe { goto _testEof367 } stCase367: if 33 <= data[p] && data[p] <= 126 { goto st368 } goto st0 st368: if p++; p == pe { goto _testEof368 } stCase368: if 33 <= data[p] && data[p] <= 126 { goto st369 } goto st0 st369: if p++; p == pe { goto _testEof369 } stCase369: if 33 <= data[p] && data[p] <= 126 { goto st370 } goto st0 st370: if p++; p == pe { goto _testEof370 } stCase370: if 33 <= data[p] && data[p] <= 126 { goto st371 } goto st0 st371: if p++; p == pe { goto _testEof371 } stCase371: if 33 <= data[p] && data[p] <= 126 { goto st372 } goto st0 st372: if p++; p == pe { goto _testEof372 } stCase372: if 33 <= data[p] && data[p] <= 126 { goto st373 } goto st0 st373: if p++; p == pe { goto _testEof373 } stCase373: if 33 <= data[p] && data[p] <= 126 { goto st374 } goto st0 st374: if p++; p == pe { goto _testEof374 } stCase374: if 33 <= data[p] && data[p] <= 126 { goto st375 } goto st0 st375: if p++; p == pe { goto _testEof375 } stCase375: if 33 <= data[p] && data[p] <= 126 { goto st376 } goto st0 st376: if p++; p == pe { goto _testEof376 } stCase376: if 33 <= data[p] && data[p] <= 126 { goto st377 } goto st0 st377: if p++; p == pe { goto _testEof377 } stCase377: if 33 <= data[p] && data[p] <= 126 { goto st378 } goto st0 st378: if p++; p == pe { goto _testEof378 } stCase378: if 33 <= data[p] && data[p] <= 126 { goto st379 } goto st0 st379: if p++; p == pe { goto _testEof379 } stCase379: if 33 <= data[p] && data[p] <= 126 { goto st380 } goto st0 st380: if p++; p == pe { goto _testEof380 } stCase380: if 33 <= data[p] && data[p] <= 126 { goto st381 } goto st0 st381: if p++; p == pe { goto _testEof381 } stCase381: if 33 <= data[p] && data[p] <= 126 { goto st382 } goto st0 st382: if p++; p == pe { goto _testEof382 } stCase382: if 33 <= data[p] && data[p] <= 126 { goto st383 } goto st0 st383: if p++; p == pe { goto _testEof383 } stCase383: if 33 <= data[p] && data[p] <= 126 { goto st384 } goto st0 st384: if p++; p == pe { goto _testEof384 } stCase384: if 33 <= data[p] && data[p] <= 126 { goto st385 } goto st0 st385: if p++; p == pe { goto _testEof385 } stCase385: if 33 <= data[p] && data[p] <= 126 { goto st386 } goto st0 st386: if p++; p == pe { goto _testEof386 } stCase386: if 33 <= data[p] && data[p] <= 126 { goto st387 } goto st0 st387: if p++; p == pe { goto _testEof387 } stCase387: if 33 <= data[p] && data[p] <= 126 { goto st388 } goto st0 st388: if p++; p == pe { goto _testEof388 } stCase388: if 33 <= data[p] && data[p] <= 126 { goto st389 } goto st0 st389: if p++; p == pe { goto _testEof389 } stCase389: if 33 <= data[p] && data[p] <= 126 { goto st390 } goto st0 st390: if p++; p == pe { goto _testEof390 } stCase390: if 33 <= data[p] && data[p] <= 126 { goto st391 } goto st0 st391: if p++; p == pe { goto _testEof391 } stCase391: if 33 <= data[p] && data[p] <= 126 { goto st392 } goto st0 st392: if p++; p == pe { goto _testEof392 } stCase392: if 33 <= data[p] && data[p] <= 126 { goto st393 } goto st0 st393: if p++; p == pe { goto _testEof393 } stCase393: if 33 <= data[p] && data[p] <= 126 { goto st394 } goto st0 st394: if p++; p == pe { goto _testEof394 } stCase394: if 33 <= data[p] && data[p] <= 126 { goto st395 } goto st0 st395: if p++; p == pe { goto _testEof395 } stCase395: if 33 <= data[p] && data[p] <= 126 { goto st396 } goto st0 st396: if p++; p == pe { goto _testEof396 } stCase396: if 33 <= data[p] && data[p] <= 126 { goto st397 } goto st0 st397: if p++; p == pe { goto _testEof397 } stCase397: if 33 <= data[p] && data[p] <= 126 { goto st398 } goto st0 st398: if p++; p == pe { goto _testEof398 } stCase398: if 33 <= data[p] && data[p] <= 126 { goto st399 } goto st0 st399: if p++; p == pe { goto _testEof399 } stCase399: if 33 <= data[p] && data[p] <= 126 { goto st400 } goto st0 st400: if p++; p == pe { goto _testEof400 } stCase400: if 33 <= data[p] && data[p] <= 126 { goto st401 } goto st0 st401: if p++; p == pe { goto _testEof401 } stCase401: if 33 <= data[p] && data[p] <= 126 { goto st402 } goto st0 st402: if p++; p == pe { goto _testEof402 } stCase402: if 33 <= data[p] && data[p] <= 126 { goto st403 } goto st0 st403: if p++; p == pe { goto _testEof403 } stCase403: if 33 <= data[p] && data[p] <= 126 { goto st404 } goto st0 st404: if p++; p == pe { goto _testEof404 } stCase404: if 33 <= data[p] && data[p] <= 126 { goto st405 } goto st0 st405: if p++; p == pe { goto _testEof405 } stCase405: if 33 <= data[p] && data[p] <= 126 { goto st406 } goto st0 st406: if p++; p == pe { goto _testEof406 } stCase406: if 33 <= data[p] && data[p] <= 126 { goto st407 } goto st0 st407: if p++; p == pe { goto _testEof407 } stCase407: if 33 <= data[p] && data[p] <= 126 { goto st408 } goto st0 st408: if p++; p == pe { goto _testEof408 } stCase408: if 33 <= data[p] && data[p] <= 126 { goto st409 } goto st0 st409: if p++; p == pe { goto _testEof409 } stCase409: if 33 <= data[p] && data[p] <= 126 { goto st410 } goto st0 st410: if p++; p == pe { goto _testEof410 } stCase410: if 33 <= data[p] && data[p] <= 126 { goto st411 } goto st0 st411: if p++; p == pe { goto _testEof411 } stCase411: if 33 <= data[p] && data[p] <= 126 { goto st412 } goto st0 st412: if p++; p == pe { goto _testEof412 } stCase412: if 33 <= data[p] && data[p] <= 126 { goto st413 } goto st0 st413: if p++; p == pe { goto _testEof413 } stCase413: if 33 <= data[p] && data[p] <= 126 { goto st414 } goto st0 st414: if p++; p == pe { goto _testEof414 } stCase414: if 33 <= data[p] && data[p] <= 126 { goto st415 } goto st0 st415: if p++; p == pe { goto _testEof415 } stCase415: if 33 <= data[p] && data[p] <= 126 { goto st416 } goto st0 st416: if p++; p == pe { goto _testEof416 } stCase416: if 33 <= data[p] && data[p] <= 126 { goto st417 } goto st0 st417: if p++; p == pe { goto _testEof417 } stCase417: if 33 <= data[p] && data[p] <= 126 { goto st418 } goto st0 st418: if p++; p == pe { goto _testEof418 } stCase418: if 33 <= data[p] && data[p] <= 126 { goto st419 } goto st0 st419: if p++; p == pe { goto _testEof419 } stCase419: if 33 <= data[p] && data[p] <= 126 { goto st420 } goto st0 st420: if p++; p == pe { goto _testEof420 } stCase420: if 33 <= data[p] && data[p] <= 126 { goto st421 } goto st0 st421: if p++; p == pe { goto _testEof421 } stCase421: if 33 <= data[p] && data[p] <= 126 { goto st422 } goto st0 st422: if p++; p == pe { goto _testEof422 } stCase422: if 33 <= data[p] && data[p] <= 126 { goto st423 } goto st0 st423: if p++; p == pe { goto _testEof423 } stCase423: if 33 <= data[p] && data[p] <= 126 { goto st424 } goto st0 st424: if p++; p == pe { goto _testEof424 } stCase424: if 33 <= data[p] && data[p] <= 126 { goto st425 } goto st0 st425: if p++; p == pe { goto _testEof425 } stCase425: if 33 <= data[p] && data[p] <= 126 { goto st426 } goto st0 st426: if p++; p == pe { goto _testEof426 } stCase426: if 33 <= data[p] && data[p] <= 126 { goto st427 } goto st0 st427: if p++; p == pe { goto _testEof427 } stCase427: if 33 <= data[p] && data[p] <= 126 { goto st428 } goto st0 st428: if p++; p == pe { goto _testEof428 } stCase428: if 33 <= data[p] && data[p] <= 126 { goto st429 } goto st0 st429: if p++; p == pe { goto _testEof429 } stCase429: if 33 <= data[p] && data[p] <= 126 { goto st430 } goto st0 st430: if p++; p == pe { goto _testEof430 } stCase430: if 33 <= data[p] && data[p] <= 126 { goto st431 } goto st0 st431: if p++; p == pe { goto _testEof431 } stCase431: if 33 <= data[p] && data[p] <= 126 { goto st432 } goto st0 st432: if p++; p == pe { goto _testEof432 } stCase432: if 33 <= data[p] && data[p] <= 126 { goto st433 } goto st0 st433: if p++; p == pe { goto _testEof433 } stCase433: if 33 <= data[p] && data[p] <= 126 { goto st434 } goto st0 st434: if p++; p == pe { goto _testEof434 } stCase434: if 33 <= data[p] && data[p] <= 126 { goto st435 } goto st0 st435: if p++; p == pe { goto _testEof435 } stCase435: if 33 <= data[p] && data[p] <= 126 { goto st436 } goto st0 st436: if p++; p == pe { goto _testEof436 } stCase436: if 33 <= data[p] && data[p] <= 126 { goto st437 } goto st0 st437: if p++; p == pe { goto _testEof437 } stCase437: if 33 <= data[p] && data[p] <= 126 { goto st438 } goto st0 st438: if p++; p == pe { goto _testEof438 } stCase438: if 33 <= data[p] && data[p] <= 126 { goto st439 } goto st0 st439: if p++; p == pe { goto _testEof439 } stCase439: if 33 <= data[p] && data[p] <= 126 { goto st440 } goto st0 st440: if p++; p == pe { goto _testEof440 } stCase440: if 33 <= data[p] && data[p] <= 126 { goto st441 } goto st0 st441: if p++; p == pe { goto _testEof441 } stCase441: if 33 <= data[p] && data[p] <= 126 { goto st442 } goto st0 st442: if p++; p == pe { goto _testEof442 } stCase442: if 33 <= data[p] && data[p] <= 126 { goto st443 } goto st0 st443: if p++; p == pe { goto _testEof443 } stCase443: if 33 <= data[p] && data[p] <= 126 { goto st444 } goto st0 st444: if p++; p == pe { goto _testEof444 } stCase444: if 33 <= data[p] && data[p] <= 126 { goto st445 } goto st0 st445: if p++; p == pe { goto _testEof445 } stCase445: if 33 <= data[p] && data[p] <= 126 { goto st446 } goto st0 st446: if p++; p == pe { goto _testEof446 } stCase446: if 33 <= data[p] && data[p] <= 126 { goto st447 } goto st0 st447: if p++; p == pe { goto _testEof447 } stCase447: if 33 <= data[p] && data[p] <= 126 { goto st448 } goto st0 st448: if p++; p == pe { goto _testEof448 } stCase448: if 33 <= data[p] && data[p] <= 126 { goto st449 } goto st0 st449: if p++; p == pe { goto _testEof449 } stCase449: if 33 <= data[p] && data[p] <= 126 { goto st450 } goto st0 st450: if p++; p == pe { goto _testEof450 } stCase450: if 33 <= data[p] && data[p] <= 126 { goto st451 } goto st0 st451: if p++; p == pe { goto _testEof451 } stCase451: if 33 <= data[p] && data[p] <= 126 { goto st452 } goto st0 st452: if p++; p == pe { goto _testEof452 } stCase452: if 33 <= data[p] && data[p] <= 126 { goto st453 } goto st0 st453: if p++; p == pe { goto _testEof453 } stCase453: if 33 <= data[p] && data[p] <= 126 { goto st454 } goto st0 st454: if p++; p == pe { goto _testEof454 } stCase454: if 33 <= data[p] && data[p] <= 126 { goto st455 } goto st0 st455: if p++; p == pe { goto _testEof455 } stCase455: if 33 <= data[p] && data[p] <= 126 { goto st456 } goto st0 st456: if p++; p == pe { goto _testEof456 } stCase456: if 33 <= data[p] && data[p] <= 126 { goto st457 } goto st0 st457: if p++; p == pe { goto _testEof457 } stCase457: if 33 <= data[p] && data[p] <= 126 { goto st458 } goto st0 st458: if p++; p == pe { goto _testEof458 } stCase458: if 33 <= data[p] && data[p] <= 126 { goto st459 } goto st0 st459: if p++; p == pe { goto _testEof459 } stCase459: if 33 <= data[p] && data[p] <= 126 { goto st460 } goto st0 st460: if p++; p == pe { goto _testEof460 } stCase460: if 33 <= data[p] && data[p] <= 126 { goto st461 } goto st0 st461: if p++; p == pe { goto _testEof461 } stCase461: if 33 <= data[p] && data[p] <= 126 { goto st462 } goto st0 st462: if p++; p == pe { goto _testEof462 } stCase462: if 33 <= data[p] && data[p] <= 126 { goto st463 } goto st0 st463: if p++; p == pe { goto _testEof463 } stCase463: if 33 <= data[p] && data[p] <= 126 { goto st464 } goto st0 st464: if p++; p == pe { goto _testEof464 } stCase464: if 33 <= data[p] && data[p] <= 126 { goto st465 } goto st0 st465: if p++; p == pe { goto _testEof465 } stCase465: if 33 <= data[p] && data[p] <= 126 { goto st466 } goto st0 st466: if p++; p == pe { goto _testEof466 } stCase466: if 33 <= data[p] && data[p] <= 126 { goto st467 } goto st0 st467: if p++; p == pe { goto _testEof467 } stCase467: if 33 <= data[p] && data[p] <= 126 { goto st468 } goto st0 st468: if p++; p == pe { goto _testEof468 } stCase468: if 33 <= data[p] && data[p] <= 126 { goto st469 } goto st0 st469: if p++; p == pe { goto _testEof469 } stCase469: if 33 <= data[p] && data[p] <= 126 { goto st470 } goto st0 st470: if p++; p == pe { goto _testEof470 } stCase470: if 33 <= data[p] && data[p] <= 126 { goto st471 } goto st0 st471: if p++; p == pe { goto _testEof471 } stCase471: if 33 <= data[p] && data[p] <= 126 { goto st472 } goto st0 st472: if p++; p == pe { goto _testEof472 } stCase472: if 33 <= data[p] && data[p] <= 126 { goto st473 } goto st0 st473: if p++; p == pe { goto _testEof473 } stCase473: if 33 <= data[p] && data[p] <= 126 { goto st474 } goto st0 st474: if p++; p == pe { goto _testEof474 } stCase474: if 33 <= data[p] && data[p] <= 126 { goto st475 } goto st0 st475: if p++; p == pe { goto _testEof475 } stCase475: if 33 <= data[p] && data[p] <= 126 { goto st476 } goto st0 st476: if p++; p == pe { goto _testEof476 } stCase476: if 33 <= data[p] && data[p] <= 126 { goto st477 } goto st0 st477: if p++; p == pe { goto _testEof477 } stCase477: if 33 <= data[p] && data[p] <= 126 { goto st478 } goto st0 st478: if p++; p == pe { goto _testEof478 } stCase478: if 33 <= data[p] && data[p] <= 126 { goto st479 } goto st0 st479: if p++; p == pe { goto _testEof479 } stCase479: if 33 <= data[p] && data[p] <= 126 { goto st480 } goto st0 st480: if p++; p == pe { goto _testEof480 } stCase480: if 33 <= data[p] && data[p] <= 126 { goto st481 } goto st0 st481: if p++; p == pe { goto _testEof481 } stCase481: if 33 <= data[p] && data[p] <= 126 { goto st482 } goto st0 st482: if p++; p == pe { goto _testEof482 } stCase482: if 33 <= data[p] && data[p] <= 126 { goto st483 } goto st0 st483: if p++; p == pe { goto _testEof483 } stCase483: if 33 <= data[p] && data[p] <= 126 { goto st484 } goto st0 st484: if p++; p == pe { goto _testEof484 } stCase484: if 33 <= data[p] && data[p] <= 126 { goto st485 } goto st0 st485: if p++; p == pe { goto _testEof485 } stCase485: if 33 <= data[p] && data[p] <= 126 { goto st486 } goto st0 st486: if p++; p == pe { goto _testEof486 } stCase486: if 33 <= data[p] && data[p] <= 126 { goto st487 } goto st0 st487: if p++; p == pe { goto _testEof487 } stCase487: if 33 <= data[p] && data[p] <= 126 { goto st488 } goto st0 st488: if p++; p == pe { goto _testEof488 } stCase488: if 33 <= data[p] && data[p] <= 126 { goto st489 } goto st0 st489: if p++; p == pe { goto _testEof489 } stCase489: if 33 <= data[p] && data[p] <= 126 { goto st490 } goto st0 st490: if p++; p == pe { goto _testEof490 } stCase490: if 33 <= data[p] && data[p] <= 126 { goto st491 } goto st0 st491: if p++; p == pe { goto _testEof491 } stCase491: if 33 <= data[p] && data[p] <= 126 { goto st492 } goto st0 st492: if p++; p == pe { goto _testEof492 } stCase492: goto st0 stCase48: if 33 <= data[p] && data[p] <= 126 { goto tr44 } goto st0 tr44: pb = p goto st493 st493: if p++; p == pe { goto _testEof493 } stCase493: if 33 <= data[p] && data[p] <= 126 { goto st494 } goto st0 st494: if p++; p == pe { goto _testEof494 } stCase494: if 33 <= data[p] && data[p] <= 126 { goto st495 } goto st0 st495: if p++; p == pe { goto _testEof495 } stCase495: if 33 <= data[p] && data[p] <= 126 { goto st496 } goto st0 st496: if p++; p == pe { goto _testEof496 } stCase496: if 33 <= data[p] && data[p] <= 126 { goto st497 } goto st0 st497: if p++; p == pe { goto _testEof497 } stCase497: if 33 <= data[p] && data[p] <= 126 { goto st498 } goto st0 st498: if p++; p == pe { goto _testEof498 } stCase498: if 33 <= data[p] && data[p] <= 126 { goto st499 } goto st0 st499: if p++; p == pe { goto _testEof499 } stCase499: if 33 <= data[p] && data[p] <= 126 { goto st500 } goto st0 st500: if p++; p == pe { goto _testEof500 } stCase500: if 33 <= data[p] && data[p] <= 126 { goto st501 } goto st0 st501: if p++; p == pe { goto _testEof501 } stCase501: if 33 <= data[p] && data[p] <= 126 { goto st502 } goto st0 st502: if p++; p == pe { goto _testEof502 } stCase502: if 33 <= data[p] && data[p] <= 126 { goto st503 } goto st0 st503: if p++; p == pe { goto _testEof503 } stCase503: if 33 <= data[p] && data[p] <= 126 { goto st504 } goto st0 st504: if p++; p == pe { goto _testEof504 } stCase504: if 33 <= data[p] && data[p] <= 126 { goto st505 } goto st0 st505: if p++; p == pe { goto _testEof505 } stCase505: if 33 <= data[p] && data[p] <= 126 { goto st506 } goto st0 st506: if p++; p == pe { goto _testEof506 } stCase506: if 33 <= data[p] && data[p] <= 126 { goto st507 } goto st0 st507: if p++; p == pe { goto _testEof507 } stCase507: if 33 <= data[p] && data[p] <= 126 { goto st508 } goto st0 st508: if p++; p == pe { goto _testEof508 } stCase508: if 33 <= data[p] && data[p] <= 126 { goto st509 } goto st0 st509: if p++; p == pe { goto _testEof509 } stCase509: if 33 <= data[p] && data[p] <= 126 { goto st510 } goto st0 st510: if p++; p == pe { goto _testEof510 } stCase510: if 33 <= data[p] && data[p] <= 126 { goto st511 } goto st0 st511: if p++; p == pe { goto _testEof511 } stCase511: if 33 <= data[p] && data[p] <= 126 { goto st512 } goto st0 st512: if p++; p == pe { goto _testEof512 } stCase512: if 33 <= data[p] && data[p] <= 126 { goto st513 } goto st0 st513: if p++; p == pe { goto _testEof513 } stCase513: if 33 <= data[p] && data[p] <= 126 { goto st514 } goto st0 st514: if p++; p == pe { goto _testEof514 } stCase514: if 33 <= data[p] && data[p] <= 126 { goto st515 } goto st0 st515: if p++; p == pe { goto _testEof515 } stCase515: if 33 <= data[p] && data[p] <= 126 { goto st516 } goto st0 st516: if p++; p == pe { goto _testEof516 } stCase516: if 33 <= data[p] && data[p] <= 126 { goto st517 } goto st0 st517: if p++; p == pe { goto _testEof517 } stCase517: if 33 <= data[p] && data[p] <= 126 { goto st518 } goto st0 st518: if p++; p == pe { goto _testEof518 } stCase518: if 33 <= data[p] && data[p] <= 126 { goto st519 } goto st0 st519: if p++; p == pe { goto _testEof519 } stCase519: if 33 <= data[p] && data[p] <= 126 { goto st520 } goto st0 st520: if p++; p == pe { goto _testEof520 } stCase520: if 33 <= data[p] && data[p] <= 126 { goto st521 } goto st0 st521: if p++; p == pe { goto _testEof521 } stCase521: if 33 <= data[p] && data[p] <= 126 { goto st522 } goto st0 st522: if p++; p == pe { goto _testEof522 } stCase522: if 33 <= data[p] && data[p] <= 126 { goto st523 } goto st0 st523: if p++; p == pe { goto _testEof523 } stCase523: if 33 <= data[p] && data[p] <= 126 { goto st524 } goto st0 st524: if p++; p == pe { goto _testEof524 } stCase524: goto st0 stCase49: if data[p] == 33 { goto tr45 } switch { case data[p] < 62: if 35 <= data[p] && data[p] <= 60 { goto tr45 } case data[p] > 92: if 94 <= data[p] && data[p] <= 126 { goto tr45 } default: goto tr45 } goto st0 tr45: pb = p goto st525 st525: if p++; p == pe { goto _testEof525 } stCase525: if data[p] == 33 { goto st526 } switch { case data[p] < 62: if 35 <= data[p] && data[p] <= 60 { goto st526 } case data[p] > 92: if 94 <= data[p] && data[p] <= 126 { goto st526 } default: goto st526 } goto st0 st526: if p++; p == pe { goto _testEof526 } stCase526: if data[p] == 33 { goto st527 } switch { case data[p] < 62: if 35 <= data[p] && data[p] <= 60 { goto st527 } case data[p] > 92: if 94 <= data[p] && data[p] <= 126 { goto st527 } default: goto st527 } goto st0 st527: if p++; p == pe { goto _testEof527 } stCase527: if data[p] == 33 { goto st528 } switch { case data[p] < 62: if 35 <= data[p] && data[p] <= 60 { goto st528 } case data[p] > 92: if 94 <= data[p] && data[p] <= 126 { goto st528 } default: goto st528 } goto st0 st528: if p++; p == pe { goto _testEof528 } stCase528: if data[p] == 33 { goto st529 } switch { case data[p] < 62: if 35 <= data[p] && data[p] <= 60 { goto st529 } case data[p] > 92: if 94 <= data[p] && data[p] <= 126 { goto st529 } default: goto st529 } goto st0 st529: if p++; p == pe { goto _testEof529 } stCase529: if data[p] == 33 { goto st530 } switch { case data[p] < 62: if 35 <= data[p] && data[p] <= 60 { goto st530 } case data[p] > 92: if 94 <= data[p] && data[p] <= 126 { goto st530 } default: goto st530 } goto st0 st530: if p++; p == pe { goto _testEof530 } stCase530: if data[p] == 33 { goto st531 } switch { case data[p] < 62: if 35 <= data[p] && data[p] <= 60 { goto st531 } case data[p] > 92: if 94 <= data[p] && data[p] <= 126 { goto st531 } default: goto st531 } goto st0 st531: if p++; p == pe { goto _testEof531 } stCase531: if data[p] == 33 { goto st532 } switch { case data[p] < 62: if 35 <= data[p] && data[p] <= 60 { goto st532 } case data[p] > 92: if 94 <= data[p] && data[p] <= 126 { goto st532 } default: goto st532 } goto st0 st532: if p++; p == pe { goto _testEof532 } stCase532: if data[p] == 33 { goto st533 } switch { case data[p] < 62: if 35 <= data[p] && data[p] <= 60 { goto st533 } case data[p] > 92: if 94 <= data[p] && data[p] <= 126 { goto st533 } default: goto st533 } goto st0 st533: if p++; p == pe { goto _testEof533 } stCase533: if data[p] == 33 { goto st534 } switch { case data[p] < 62: if 35 <= data[p] && data[p] <= 60 { goto st534 } case data[p] > 92: if 94 <= data[p] && data[p] <= 126 { goto st534 } default: goto st534 } goto st0 st534: if p++; p == pe { goto _testEof534 } stCase534: if data[p] == 33 { goto st535 } switch { case data[p] < 62: if 35 <= data[p] && data[p] <= 60 { goto st535 } case data[p] > 92: if 94 <= data[p] && data[p] <= 126 { goto st535 } default: goto st535 } goto st0 st535: if p++; p == pe { goto _testEof535 } stCase535: if data[p] == 33 { goto st536 } switch { case data[p] < 62: if 35 <= data[p] && data[p] <= 60 { goto st536 } case data[p] > 92: if 94 <= data[p] && data[p] <= 126 { goto st536 } default: goto st536 } goto st0 st536: if p++; p == pe { goto _testEof536 } stCase536: if data[p] == 33 { goto st537 } switch { case data[p] < 62: if 35 <= data[p] && data[p] <= 60 { goto st537 } case data[p] > 92: if 94 <= data[p] && data[p] <= 126 { goto st537 } default: goto st537 } goto st0 st537: if p++; p == pe { goto _testEof537 } stCase537: if data[p] == 33 { goto st538 } switch { case data[p] < 62: if 35 <= data[p] && data[p] <= 60 { goto st538 } case data[p] > 92: if 94 <= data[p] && data[p] <= 126 { goto st538 } default: goto st538 } goto st0 st538: if p++; p == pe { goto _testEof538 } stCase538: if data[p] == 33 { goto st539 } switch { case data[p] < 62: if 35 <= data[p] && data[p] <= 60 { goto st539 } case data[p] > 92: if 94 <= data[p] && data[p] <= 126 { goto st539 } default: goto st539 } goto st0 st539: if p++; p == pe { goto _testEof539 } stCase539: if data[p] == 33 { goto st540 } switch { case data[p] < 62: if 35 <= data[p] && data[p] <= 60 { goto st540 } case data[p] > 92: if 94 <= data[p] && data[p] <= 126 { goto st540 } default: goto st540 } goto st0 st540: if p++; p == pe { goto _testEof540 } stCase540: if data[p] == 33 { goto st541 } switch { case data[p] < 62: if 35 <= data[p] && data[p] <= 60 { goto st541 } case data[p] > 92: if 94 <= data[p] && data[p] <= 126 { goto st541 } default: goto st541 } goto st0 st541: if p++; p == pe { goto _testEof541 } stCase541: if data[p] == 33 { goto st542 } switch { case data[p] < 62: if 35 <= data[p] && data[p] <= 60 { goto st542 } case data[p] > 92: if 94 <= data[p] && data[p] <= 126 { goto st542 } default: goto st542 } goto st0 st542: if p++; p == pe { goto _testEof542 } stCase542: if data[p] == 33 { goto st543 } switch { case data[p] < 62: if 35 <= data[p] && data[p] <= 60 { goto st543 } case data[p] > 92: if 94 <= data[p] && data[p] <= 126 { goto st543 } default: goto st543 } goto st0 st543: if p++; p == pe { goto _testEof543 } stCase543: if data[p] == 33 { goto st544 } switch { case data[p] < 62: if 35 <= data[p] && data[p] <= 60 { goto st544 } case data[p] > 92: if 94 <= data[p] && data[p] <= 126 { goto st544 } default: goto st544 } goto st0 st544: if p++; p == pe { goto _testEof544 } stCase544: if data[p] == 33 { goto st545 } switch { case data[p] < 62: if 35 <= data[p] && data[p] <= 60 { goto st545 } case data[p] > 92: if 94 <= data[p] && data[p] <= 126 { goto st545 } default: goto st545 } goto st0 st545: if p++; p == pe { goto _testEof545 } stCase545: if data[p] == 33 { goto st546 } switch { case data[p] < 62: if 35 <= data[p] && data[p] <= 60 { goto st546 } case data[p] > 92: if 94 <= data[p] && data[p] <= 126 { goto st546 } default: goto st546 } goto st0 st546: if p++; p == pe { goto _testEof546 } stCase546: if data[p] == 33 { goto st547 } switch { case data[p] < 62: if 35 <= data[p] && data[p] <= 60 { goto st547 } case data[p] > 92: if 94 <= data[p] && data[p] <= 126 { goto st547 } default: goto st547 } goto st0 st547: if p++; p == pe { goto _testEof547 } stCase547: if data[p] == 33 { goto st548 } switch { case data[p] < 62: if 35 <= data[p] && data[p] <= 60 { goto st548 } case data[p] > 92: if 94 <= data[p] && data[p] <= 126 { goto st548 } default: goto st548 } goto st0 st548: if p++; p == pe { goto _testEof548 } stCase548: if data[p] == 33 { goto st549 } switch { case data[p] < 62: if 35 <= data[p] && data[p] <= 60 { goto st549 } case data[p] > 92: if 94 <= data[p] && data[p] <= 126 { goto st549 } default: goto st549 } goto st0 st549: if p++; p == pe { goto _testEof549 } stCase549: if data[p] == 33 { goto st550 } switch { case data[p] < 62: if 35 <= data[p] && data[p] <= 60 { goto st550 } case data[p] > 92: if 94 <= data[p] && data[p] <= 126 { goto st550 } default: goto st550 } goto st0 st550: if p++; p == pe { goto _testEof550 } stCase550: if data[p] == 33 { goto st551 } switch { case data[p] < 62: if 35 <= data[p] && data[p] <= 60 { goto st551 } case data[p] > 92: if 94 <= data[p] && data[p] <= 126 { goto st551 } default: goto st551 } goto st0 st551: if p++; p == pe { goto _testEof551 } stCase551: if data[p] == 33 { goto st552 } switch { case data[p] < 62: if 35 <= data[p] && data[p] <= 60 { goto st552 } case data[p] > 92: if 94 <= data[p] && data[p] <= 126 { goto st552 } default: goto st552 } goto st0 st552: if p++; p == pe { goto _testEof552 } stCase552: if data[p] == 33 { goto st553 } switch { case data[p] < 62: if 35 <= data[p] && data[p] <= 60 { goto st553 } case data[p] > 92: if 94 <= data[p] && data[p] <= 126 { goto st553 } default: goto st553 } goto st0 st553: if p++; p == pe { goto _testEof553 } stCase553: if data[p] == 33 { goto st554 } switch { case data[p] < 62: if 35 <= data[p] && data[p] <= 60 { goto st554 } case data[p] > 92: if 94 <= data[p] && data[p] <= 126 { goto st554 } default: goto st554 } goto st0 st554: if p++; p == pe { goto _testEof554 } stCase554: if data[p] == 33 { goto st555 } switch { case data[p] < 62: if 35 <= data[p] && data[p] <= 60 { goto st555 } case data[p] > 92: if 94 <= data[p] && data[p] <= 126 { goto st555 } default: goto st555 } goto st0 st555: if p++; p == pe { goto _testEof555 } stCase555: if data[p] == 33 { goto st556 } switch { case data[p] < 62: if 35 <= data[p] && data[p] <= 60 { goto st556 } case data[p] > 92: if 94 <= data[p] && data[p] <= 126 { goto st556 } default: goto st556 } goto st0 st556: if p++; p == pe { goto _testEof556 } stCase556: goto st0 stCase50: if data[p] == 33 { goto tr46 } switch { case data[p] < 62: if 35 <= data[p] && data[p] <= 60 { goto tr46 } case data[p] > 92: if 94 <= data[p] && data[p] <= 126 { goto tr46 } default: goto tr46 } goto st0 tr46: pb = p goto st557 st557: if p++; p == pe { goto _testEof557 } stCase557: if data[p] == 33 { goto st558 } switch { case data[p] < 62: if 35 <= data[p] && data[p] <= 60 { goto st558 } case data[p] > 92: if 94 <= data[p] && data[p] <= 126 { goto st558 } default: goto st558 } goto st0 st558: if p++; p == pe { goto _testEof558 } stCase558: if data[p] == 33 { goto st559 } switch { case data[p] < 62: if 35 <= data[p] && data[p] <= 60 { goto st559 } case data[p] > 92: if 94 <= data[p] && data[p] <= 126 { goto st559 } default: goto st559 } goto st0 st559: if p++; p == pe { goto _testEof559 } stCase559: if data[p] == 33 { goto st560 } switch { case data[p] < 62: if 35 <= data[p] && data[p] <= 60 { goto st560 } case data[p] > 92: if 94 <= data[p] && data[p] <= 126 { goto st560 } default: goto st560 } goto st0 st560: if p++; p == pe { goto _testEof560 } stCase560: if data[p] == 33 { goto st561 } switch { case data[p] < 62: if 35 <= data[p] && data[p] <= 60 { goto st561 } case data[p] > 92: if 94 <= data[p] && data[p] <= 126 { goto st561 } default: goto st561 } goto st0 st561: if p++; p == pe { goto _testEof561 } stCase561: if data[p] == 33 { goto st562 } switch { case data[p] < 62: if 35 <= data[p] && data[p] <= 60 { goto st562 } case data[p] > 92: if 94 <= data[p] && data[p] <= 126 { goto st562 } default: goto st562 } goto st0 st562: if p++; p == pe { goto _testEof562 } stCase562: if data[p] == 33 { goto st563 } switch { case data[p] < 62: if 35 <= data[p] && data[p] <= 60 { goto st563 } case data[p] > 92: if 94 <= data[p] && data[p] <= 126 { goto st563 } default: goto st563 } goto st0 st563: if p++; p == pe { goto _testEof563 } stCase563: if data[p] == 33 { goto st564 } switch { case data[p] < 62: if 35 <= data[p] && data[p] <= 60 { goto st564 } case data[p] > 92: if 94 <= data[p] && data[p] <= 126 { goto st564 } default: goto st564 } goto st0 st564: if p++; p == pe { goto _testEof564 } stCase564: if data[p] == 33 { goto st565 } switch { case data[p] < 62: if 35 <= data[p] && data[p] <= 60 { goto st565 } case data[p] > 92: if 94 <= data[p] && data[p] <= 126 { goto st565 } default: goto st565 } goto st0 st565: if p++; p == pe { goto _testEof565 } stCase565: if data[p] == 33 { goto st566 } switch { case data[p] < 62: if 35 <= data[p] && data[p] <= 60 { goto st566 } case data[p] > 92: if 94 <= data[p] && data[p] <= 126 { goto st566 } default: goto st566 } goto st0 st566: if p++; p == pe { goto _testEof566 } stCase566: if data[p] == 33 { goto st567 } switch { case data[p] < 62: if 35 <= data[p] && data[p] <= 60 { goto st567 } case data[p] > 92: if 94 <= data[p] && data[p] <= 126 { goto st567 } default: goto st567 } goto st0 st567: if p++; p == pe { goto _testEof567 } stCase567: if data[p] == 33 { goto st568 } switch { case data[p] < 62: if 35 <= data[p] && data[p] <= 60 { goto st568 } case data[p] > 92: if 94 <= data[p] && data[p] <= 126 { goto st568 } default: goto st568 } goto st0 st568: if p++; p == pe { goto _testEof568 } stCase568: if data[p] == 33 { goto st569 } switch { case data[p] < 62: if 35 <= data[p] && data[p] <= 60 { goto st569 } case data[p] > 92: if 94 <= data[p] && data[p] <= 126 { goto st569 } default: goto st569 } goto st0 st569: if p++; p == pe { goto _testEof569 } stCase569: if data[p] == 33 { goto st570 } switch { case data[p] < 62: if 35 <= data[p] && data[p] <= 60 { goto st570 } case data[p] > 92: if 94 <= data[p] && data[p] <= 126 { goto st570 } default: goto st570 } goto st0 st570: if p++; p == pe { goto _testEof570 } stCase570: if data[p] == 33 { goto st571 } switch { case data[p] < 62: if 35 <= data[p] && data[p] <= 60 { goto st571 } case data[p] > 92: if 94 <= data[p] && data[p] <= 126 { goto st571 } default: goto st571 } goto st0 st571: if p++; p == pe { goto _testEof571 } stCase571: if data[p] == 33 { goto st572 } switch { case data[p] < 62: if 35 <= data[p] && data[p] <= 60 { goto st572 } case data[p] > 92: if 94 <= data[p] && data[p] <= 126 { goto st572 } default: goto st572 } goto st0 st572: if p++; p == pe { goto _testEof572 } stCase572: if data[p] == 33 { goto st573 } switch { case data[p] < 62: if 35 <= data[p] && data[p] <= 60 { goto st573 } case data[p] > 92: if 94 <= data[p] && data[p] <= 126 { goto st573 } default: goto st573 } goto st0 st573: if p++; p == pe { goto _testEof573 } stCase573: if data[p] == 33 { goto st574 } switch { case data[p] < 62: if 35 <= data[p] && data[p] <= 60 { goto st574 } case data[p] > 92: if 94 <= data[p] && data[p] <= 126 { goto st574 } default: goto st574 } goto st0 st574: if p++; p == pe { goto _testEof574 } stCase574: if data[p] == 33 { goto st575 } switch { case data[p] < 62: if 35 <= data[p] && data[p] <= 60 { goto st575 } case data[p] > 92: if 94 <= data[p] && data[p] <= 126 { goto st575 } default: goto st575 } goto st0 st575: if p++; p == pe { goto _testEof575 } stCase575: if data[p] == 33 { goto st576 } switch { case data[p] < 62: if 35 <= data[p] && data[p] <= 60 { goto st576 } case data[p] > 92: if 94 <= data[p] && data[p] <= 126 { goto st576 } default: goto st576 } goto st0 st576: if p++; p == pe { goto _testEof576 } stCase576: if data[p] == 33 { goto st577 } switch { case data[p] < 62: if 35 <= data[p] && data[p] <= 60 { goto st577 } case data[p] > 92: if 94 <= data[p] && data[p] <= 126 { goto st577 } default: goto st577 } goto st0 st577: if p++; p == pe { goto _testEof577 } stCase577: if data[p] == 33 { goto st578 } switch { case data[p] < 62: if 35 <= data[p] && data[p] <= 60 { goto st578 } case data[p] > 92: if 94 <= data[p] && data[p] <= 126 { goto st578 } default: goto st578 } goto st0 st578: if p++; p == pe { goto _testEof578 } stCase578: if data[p] == 33 { goto st579 } switch { case data[p] < 62: if 35 <= data[p] && data[p] <= 60 { goto st579 } case data[p] > 92: if 94 <= data[p] && data[p] <= 126 { goto st579 } default: goto st579 } goto st0 st579: if p++; p == pe { goto _testEof579 } stCase579: if data[p] == 33 { goto st580 } switch { case data[p] < 62: if 35 <= data[p] && data[p] <= 60 { goto st580 } case data[p] > 92: if 94 <= data[p] && data[p] <= 126 { goto st580 } default: goto st580 } goto st0 st580: if p++; p == pe { goto _testEof580 } stCase580: if data[p] == 33 { goto st581 } switch { case data[p] < 62: if 35 <= data[p] && data[p] <= 60 { goto st581 } case data[p] > 92: if 94 <= data[p] && data[p] <= 126 { goto st581 } default: goto st581 } goto st0 st581: if p++; p == pe { goto _testEof581 } stCase581: if data[p] == 33 { goto st582 } switch { case data[p] < 62: if 35 <= data[p] && data[p] <= 60 { goto st582 } case data[p] > 92: if 94 <= data[p] && data[p] <= 126 { goto st582 } default: goto st582 } goto st0 st582: if p++; p == pe { goto _testEof582 } stCase582: if data[p] == 33 { goto st583 } switch { case data[p] < 62: if 35 <= data[p] && data[p] <= 60 { goto st583 } case data[p] > 92: if 94 <= data[p] && data[p] <= 126 { goto st583 } default: goto st583 } goto st0 st583: if p++; p == pe { goto _testEof583 } stCase583: if data[p] == 33 { goto st584 } switch { case data[p] < 62: if 35 <= data[p] && data[p] <= 60 { goto st584 } case data[p] > 92: if 94 <= data[p] && data[p] <= 126 { goto st584 } default: goto st584 } goto st0 st584: if p++; p == pe { goto _testEof584 } stCase584: if data[p] == 33 { goto st585 } switch { case data[p] < 62: if 35 <= data[p] && data[p] <= 60 { goto st585 } case data[p] > 92: if 94 <= data[p] && data[p] <= 126 { goto st585 } default: goto st585 } goto st0 st585: if p++; p == pe { goto _testEof585 } stCase585: if data[p] == 33 { goto st586 } switch { case data[p] < 62: if 35 <= data[p] && data[p] <= 60 { goto st586 } case data[p] > 92: if 94 <= data[p] && data[p] <= 126 { goto st586 } default: goto st586 } goto st0 st586: if p++; p == pe { goto _testEof586 } stCase586: if data[p] == 33 { goto st587 } switch { case data[p] < 62: if 35 <= data[p] && data[p] <= 60 { goto st587 } case data[p] > 92: if 94 <= data[p] && data[p] <= 126 { goto st587 } default: goto st587 } goto st0 st587: if p++; p == pe { goto _testEof587 } stCase587: if data[p] == 33 { goto st588 } switch { case data[p] < 62: if 35 <= data[p] && data[p] <= 60 { goto st588 } case data[p] > 92: if 94 <= data[p] && data[p] <= 126 { goto st588 } default: goto st588 } goto st0 st588: if p++; p == pe { goto _testEof588 } stCase588: goto st0 stCase589: switch data[p] { case 34: goto st0 case 92: goto tr585 case 93: goto st0 case 224: goto tr587 case 237: goto tr589 case 240: goto tr590 case 244: goto tr592 } switch { case data[p] < 225: switch { case data[p] > 193: if 194 <= data[p] && data[p] <= 223 { goto tr586 } case data[p] >= 128: goto st0 } case data[p] > 239: switch { case data[p] > 243: if 245 <= data[p] { goto st0 } case data[p] >= 241: goto tr591 } default: goto tr588 } goto tr584 tr584: pb = p goto st590 st590: if p++; p == pe { goto _testEof590 } stCase590: switch data[p] { case 34: goto st0 case 92: goto tr593 case 93: goto st0 case 224: goto st53 case 237: goto st55 case 240: goto st56 case 244: goto st58 } switch { case data[p] < 225: switch { case data[p] > 193: if 194 <= data[p] && data[p] <= 223 { goto st52 } case data[p] >= 128: goto st0 } case data[p] > 239: switch { case data[p] > 243: if 245 <= data[p] { goto st0 } case data[p] >= 241: goto st57 } default: goto st54 } goto st590 tr585: pb = p backslashes = append(backslashes, p) goto st51 tr593: backslashes = append(backslashes, p) goto st51 st51: if p++; p == pe { goto _testEof51 } stCase51: if data[p] == 34 { goto st590 } if 92 <= data[p] && data[p] <= 93 { goto st590 } goto st0 tr586: pb = p goto st52 st52: if p++; p == pe { goto _testEof52 } stCase52: if 128 <= data[p] && data[p] <= 191 { goto st590 } goto st0 tr587: pb = p goto st53 st53: if p++; p == pe { goto _testEof53 } stCase53: if 160 <= data[p] && data[p] <= 191 { goto st52 } goto st0 tr588: pb = p goto st54 st54: if p++; p == pe { goto _testEof54 } stCase54: if 128 <= data[p] && data[p] <= 191 { goto st52 } goto st0 tr589: pb = p goto st55 st55: if p++; p == pe { goto _testEof55 } stCase55: if 128 <= data[p] && data[p] <= 159 { goto st52 } goto st0 tr590: pb = p goto st56 st56: if p++; p == pe { goto _testEof56 } stCase56: if 144 <= data[p] && data[p] <= 191 { goto st54 } goto st0 tr591: pb = p goto st57 st57: if p++; p == pe { goto _testEof57 } stCase57: if 128 <= data[p] && data[p] <= 191 { goto st54 } goto st0 tr592: pb = p goto st58 st58: if p++; p == pe { goto _testEof58 } stCase58: if 128 <= data[p] && data[p] <= 143 { goto st54 } goto st0 stOut: _testEof60: cs = 60 goto _testEof _testEof1: cs = 1 goto _testEof _testEof2: cs = 2 goto _testEof _testEof3: cs = 3 goto _testEof _testEof4: cs = 4 goto _testEof _testEof5: cs = 5 goto _testEof _testEof6: cs = 6 goto _testEof _testEof7: cs = 7 goto _testEof _testEof9: cs = 9 goto _testEof _testEof10: cs = 10 goto _testEof _testEof11: cs = 11 goto _testEof _testEof12: cs = 12 goto _testEof _testEof13: cs = 13 goto _testEof _testEof14: cs = 14 goto _testEof _testEof15: cs = 15 goto _testEof _testEof16: cs = 16 goto _testEof _testEof17: cs = 17 goto _testEof _testEof18: cs = 18 goto _testEof _testEof19: cs = 19 goto _testEof _testEof20: cs = 20 goto _testEof _testEof21: cs = 21 goto _testEof _testEof22: cs = 22 goto _testEof _testEof23: cs = 23 goto _testEof _testEof24: cs = 24 goto _testEof _testEof25: cs = 25 goto _testEof _testEof26: cs = 26 goto _testEof _testEof27: cs = 27 goto _testEof _testEof28: cs = 28 goto _testEof _testEof29: cs = 29 goto _testEof _testEof30: cs = 30 goto _testEof _testEof31: cs = 31 goto _testEof _testEof32: cs = 32 goto _testEof _testEof61: cs = 61 goto _testEof _testEof33: cs = 33 goto _testEof _testEof34: cs = 34 goto _testEof _testEof35: cs = 35 goto _testEof _testEof36: cs = 36 goto _testEof _testEof37: cs = 37 goto _testEof _testEof38: cs = 38 goto _testEof _testEof39: cs = 39 goto _testEof _testEof40: cs = 40 goto _testEof _testEof41: cs = 41 goto _testEof _testEof42: cs = 42 goto _testEof _testEof43: cs = 43 goto _testEof _testEof44: cs = 44 goto _testEof _testEof62: cs = 62 goto _testEof _testEof63: cs = 63 goto _testEof _testEof64: cs = 64 goto _testEof _testEof65: cs = 65 goto _testEof _testEof66: cs = 66 goto _testEof _testEof67: cs = 67 goto _testEof _testEof68: cs = 68 goto _testEof _testEof69: cs = 69 goto _testEof _testEof70: cs = 70 goto _testEof _testEof71: cs = 71 goto _testEof _testEof72: cs = 72 goto _testEof _testEof73: cs = 73 goto _testEof _testEof74: cs = 74 goto _testEof _testEof75: cs = 75 goto _testEof _testEof76: cs = 76 goto _testEof _testEof77: cs = 77 goto _testEof _testEof78: cs = 78 goto _testEof _testEof79: cs = 79 goto _testEof _testEof80: cs = 80 goto _testEof _testEof81: cs = 81 goto _testEof _testEof82: cs = 82 goto _testEof _testEof83: cs = 83 goto _testEof _testEof84: cs = 84 goto _testEof _testEof85: cs = 85 goto _testEof _testEof86: cs = 86 goto _testEof _testEof87: cs = 87 goto _testEof _testEof88: cs = 88 goto _testEof _testEof89: cs = 89 goto _testEof _testEof90: cs = 90 goto _testEof _testEof91: cs = 91 goto _testEof _testEof92: cs = 92 goto _testEof _testEof93: cs = 93 goto _testEof _testEof94: cs = 94 goto _testEof _testEof95: cs = 95 goto _testEof _testEof96: cs = 96 goto _testEof _testEof97: cs = 97 goto _testEof _testEof98: cs = 98 goto _testEof _testEof99: cs = 99 goto _testEof _testEof100: cs = 100 goto _testEof _testEof101: cs = 101 goto _testEof _testEof102: cs = 102 goto _testEof _testEof103: cs = 103 goto _testEof _testEof104: cs = 104 goto _testEof _testEof105: cs = 105 goto _testEof _testEof106: cs = 106 goto _testEof _testEof107: cs = 107 goto _testEof _testEof108: cs = 108 goto _testEof _testEof109: cs = 109 goto _testEof _testEof110: cs = 110 goto _testEof _testEof111: cs = 111 goto _testEof _testEof112: cs = 112 goto _testEof _testEof113: cs = 113 goto _testEof _testEof114: cs = 114 goto _testEof _testEof115: cs = 115 goto _testEof _testEof116: cs = 116 goto _testEof _testEof117: cs = 117 goto _testEof _testEof118: cs = 118 goto _testEof _testEof119: cs = 119 goto _testEof _testEof120: cs = 120 goto _testEof _testEof121: cs = 121 goto _testEof _testEof122: cs = 122 goto _testEof _testEof123: cs = 123 goto _testEof _testEof124: cs = 124 goto _testEof _testEof125: cs = 125 goto _testEof _testEof126: cs = 126 goto _testEof _testEof127: cs = 127 goto _testEof _testEof128: cs = 128 goto _testEof _testEof129: cs = 129 goto _testEof _testEof130: cs = 130 goto _testEof _testEof131: cs = 131 goto _testEof _testEof132: cs = 132 goto _testEof _testEof133: cs = 133 goto _testEof _testEof134: cs = 134 goto _testEof _testEof135: cs = 135 goto _testEof _testEof136: cs = 136 goto _testEof _testEof137: cs = 137 goto _testEof _testEof138: cs = 138 goto _testEof _testEof139: cs = 139 goto _testEof _testEof140: cs = 140 goto _testEof _testEof141: cs = 141 goto _testEof _testEof142: cs = 142 goto _testEof _testEof143: cs = 143 goto _testEof _testEof144: cs = 144 goto _testEof _testEof145: cs = 145 goto _testEof _testEof146: cs = 146 goto _testEof _testEof147: cs = 147 goto _testEof _testEof148: cs = 148 goto _testEof _testEof149: cs = 149 goto _testEof _testEof150: cs = 150 goto _testEof _testEof151: cs = 151 goto _testEof _testEof152: cs = 152 goto _testEof _testEof153: cs = 153 goto _testEof _testEof154: cs = 154 goto _testEof _testEof155: cs = 155 goto _testEof _testEof156: cs = 156 goto _testEof _testEof157: cs = 157 goto _testEof _testEof158: cs = 158 goto _testEof _testEof159: cs = 159 goto _testEof _testEof160: cs = 160 goto _testEof _testEof161: cs = 161 goto _testEof _testEof162: cs = 162 goto _testEof _testEof163: cs = 163 goto _testEof _testEof164: cs = 164 goto _testEof _testEof165: cs = 165 goto _testEof _testEof166: cs = 166 goto _testEof _testEof167: cs = 167 goto _testEof _testEof168: cs = 168 goto _testEof _testEof169: cs = 169 goto _testEof _testEof170: cs = 170 goto _testEof _testEof171: cs = 171 goto _testEof _testEof172: cs = 172 goto _testEof _testEof173: cs = 173 goto _testEof _testEof174: cs = 174 goto _testEof _testEof175: cs = 175 goto _testEof _testEof176: cs = 176 goto _testEof _testEof177: cs = 177 goto _testEof _testEof178: cs = 178 goto _testEof _testEof179: cs = 179 goto _testEof _testEof180: cs = 180 goto _testEof _testEof181: cs = 181 goto _testEof _testEof182: cs = 182 goto _testEof _testEof183: cs = 183 goto _testEof _testEof184: cs = 184 goto _testEof _testEof185: cs = 185 goto _testEof _testEof186: cs = 186 goto _testEof _testEof187: cs = 187 goto _testEof _testEof188: cs = 188 goto _testEof _testEof189: cs = 189 goto _testEof _testEof190: cs = 190 goto _testEof _testEof191: cs = 191 goto _testEof _testEof192: cs = 192 goto _testEof _testEof193: cs = 193 goto _testEof _testEof194: cs = 194 goto _testEof _testEof195: cs = 195 goto _testEof _testEof196: cs = 196 goto _testEof _testEof197: cs = 197 goto _testEof _testEof198: cs = 198 goto _testEof _testEof199: cs = 199 goto _testEof _testEof200: cs = 200 goto _testEof _testEof201: cs = 201 goto _testEof _testEof202: cs = 202 goto _testEof _testEof203: cs = 203 goto _testEof _testEof204: cs = 204 goto _testEof _testEof205: cs = 205 goto _testEof _testEof206: cs = 206 goto _testEof _testEof207: cs = 207 goto _testEof _testEof208: cs = 208 goto _testEof _testEof209: cs = 209 goto _testEof _testEof210: cs = 210 goto _testEof _testEof211: cs = 211 goto _testEof _testEof212: cs = 212 goto _testEof _testEof213: cs = 213 goto _testEof _testEof214: cs = 214 goto _testEof _testEof215: cs = 215 goto _testEof _testEof216: cs = 216 goto _testEof _testEof217: cs = 217 goto _testEof _testEof218: cs = 218 goto _testEof _testEof219: cs = 219 goto _testEof _testEof220: cs = 220 goto _testEof _testEof221: cs = 221 goto _testEof _testEof222: cs = 222 goto _testEof _testEof223: cs = 223 goto _testEof _testEof224: cs = 224 goto _testEof _testEof225: cs = 225 goto _testEof _testEof226: cs = 226 goto _testEof _testEof227: cs = 227 goto _testEof _testEof228: cs = 228 goto _testEof _testEof229: cs = 229 goto _testEof _testEof230: cs = 230 goto _testEof _testEof231: cs = 231 goto _testEof _testEof232: cs = 232 goto _testEof _testEof233: cs = 233 goto _testEof _testEof234: cs = 234 goto _testEof _testEof235: cs = 235 goto _testEof _testEof236: cs = 236 goto _testEof _testEof237: cs = 237 goto _testEof _testEof238: cs = 238 goto _testEof _testEof239: cs = 239 goto _testEof _testEof240: cs = 240 goto _testEof _testEof241: cs = 241 goto _testEof _testEof242: cs = 242 goto _testEof _testEof243: cs = 243 goto _testEof _testEof244: cs = 244 goto _testEof _testEof245: cs = 245 goto _testEof _testEof246: cs = 246 goto _testEof _testEof247: cs = 247 goto _testEof _testEof248: cs = 248 goto _testEof _testEof249: cs = 249 goto _testEof _testEof250: cs = 250 goto _testEof _testEof251: cs = 251 goto _testEof _testEof252: cs = 252 goto _testEof _testEof253: cs = 253 goto _testEof _testEof254: cs = 254 goto _testEof _testEof255: cs = 255 goto _testEof _testEof256: cs = 256 goto _testEof _testEof257: cs = 257 goto _testEof _testEof258: cs = 258 goto _testEof _testEof259: cs = 259 goto _testEof _testEof260: cs = 260 goto _testEof _testEof261: cs = 261 goto _testEof _testEof262: cs = 262 goto _testEof _testEof263: cs = 263 goto _testEof _testEof264: cs = 264 goto _testEof _testEof265: cs = 265 goto _testEof _testEof266: cs = 266 goto _testEof _testEof267: cs = 267 goto _testEof _testEof268: cs = 268 goto _testEof _testEof269: cs = 269 goto _testEof _testEof270: cs = 270 goto _testEof _testEof271: cs = 271 goto _testEof _testEof272: cs = 272 goto _testEof _testEof273: cs = 273 goto _testEof _testEof274: cs = 274 goto _testEof _testEof275: cs = 275 goto _testEof _testEof276: cs = 276 goto _testEof _testEof277: cs = 277 goto _testEof _testEof278: cs = 278 goto _testEof _testEof279: cs = 279 goto _testEof _testEof280: cs = 280 goto _testEof _testEof281: cs = 281 goto _testEof _testEof282: cs = 282 goto _testEof _testEof283: cs = 283 goto _testEof _testEof284: cs = 284 goto _testEof _testEof285: cs = 285 goto _testEof _testEof286: cs = 286 goto _testEof _testEof287: cs = 287 goto _testEof _testEof288: cs = 288 goto _testEof _testEof289: cs = 289 goto _testEof _testEof290: cs = 290 goto _testEof _testEof291: cs = 291 goto _testEof _testEof292: cs = 292 goto _testEof _testEof293: cs = 293 goto _testEof _testEof294: cs = 294 goto _testEof _testEof295: cs = 295 goto _testEof _testEof296: cs = 296 goto _testEof _testEof297: cs = 297 goto _testEof _testEof298: cs = 298 goto _testEof _testEof299: cs = 299 goto _testEof _testEof300: cs = 300 goto _testEof _testEof301: cs = 301 goto _testEof _testEof302: cs = 302 goto _testEof _testEof303: cs = 303 goto _testEof _testEof304: cs = 304 goto _testEof _testEof305: cs = 305 goto _testEof _testEof306: cs = 306 goto _testEof _testEof307: cs = 307 goto _testEof _testEof308: cs = 308 goto _testEof _testEof309: cs = 309 goto _testEof _testEof310: cs = 310 goto _testEof _testEof311: cs = 311 goto _testEof _testEof312: cs = 312 goto _testEof _testEof313: cs = 313 goto _testEof _testEof314: cs = 314 goto _testEof _testEof315: cs = 315 goto _testEof _testEof316: cs = 316 goto _testEof _testEof317: cs = 317 goto _testEof _testEof318: cs = 318 goto _testEof _testEof319: cs = 319 goto _testEof _testEof320: cs = 320 goto _testEof _testEof321: cs = 321 goto _testEof _testEof322: cs = 322 goto _testEof _testEof323: cs = 323 goto _testEof _testEof324: cs = 324 goto _testEof _testEof325: cs = 325 goto _testEof _testEof326: cs = 326 goto _testEof _testEof327: cs = 327 goto _testEof _testEof328: cs = 328 goto _testEof _testEof329: cs = 329 goto _testEof _testEof330: cs = 330 goto _testEof _testEof331: cs = 331 goto _testEof _testEof332: cs = 332 goto _testEof _testEof333: cs = 333 goto _testEof _testEof334: cs = 334 goto _testEof _testEof335: cs = 335 goto _testEof _testEof336: cs = 336 goto _testEof _testEof337: cs = 337 goto _testEof _testEof338: cs = 338 goto _testEof _testEof339: cs = 339 goto _testEof _testEof340: cs = 340 goto _testEof _testEof341: cs = 341 goto _testEof _testEof342: cs = 342 goto _testEof _testEof343: cs = 343 goto _testEof _testEof344: cs = 344 goto _testEof _testEof345: cs = 345 goto _testEof _testEof346: cs = 346 goto _testEof _testEof347: cs = 347 goto _testEof _testEof348: cs = 348 goto _testEof _testEof349: cs = 349 goto _testEof _testEof350: cs = 350 goto _testEof _testEof351: cs = 351 goto _testEof _testEof352: cs = 352 goto _testEof _testEof353: cs = 353 goto _testEof _testEof354: cs = 354 goto _testEof _testEof355: cs = 355 goto _testEof _testEof356: cs = 356 goto _testEof _testEof357: cs = 357 goto _testEof _testEof358: cs = 358 goto _testEof _testEof359: cs = 359 goto _testEof _testEof360: cs = 360 goto _testEof _testEof361: cs = 361 goto _testEof _testEof362: cs = 362 goto _testEof _testEof363: cs = 363 goto _testEof _testEof364: cs = 364 goto _testEof _testEof365: cs = 365 goto _testEof _testEof366: cs = 366 goto _testEof _testEof367: cs = 367 goto _testEof _testEof368: cs = 368 goto _testEof _testEof369: cs = 369 goto _testEof _testEof370: cs = 370 goto _testEof _testEof371: cs = 371 goto _testEof _testEof372: cs = 372 goto _testEof _testEof373: cs = 373 goto _testEof _testEof374: cs = 374 goto _testEof _testEof375: cs = 375 goto _testEof _testEof376: cs = 376 goto _testEof _testEof377: cs = 377 goto _testEof _testEof378: cs = 378 goto _testEof _testEof379: cs = 379 goto _testEof _testEof380: cs = 380 goto _testEof _testEof381: cs = 381 goto _testEof _testEof382: cs = 382 goto _testEof _testEof383: cs = 383 goto _testEof _testEof384: cs = 384 goto _testEof _testEof385: cs = 385 goto _testEof _testEof386: cs = 386 goto _testEof _testEof387: cs = 387 goto _testEof _testEof388: cs = 388 goto _testEof _testEof389: cs = 389 goto _testEof _testEof390: cs = 390 goto _testEof _testEof391: cs = 391 goto _testEof _testEof392: cs = 392 goto _testEof _testEof393: cs = 393 goto _testEof _testEof394: cs = 394 goto _testEof _testEof395: cs = 395 goto _testEof _testEof396: cs = 396 goto _testEof _testEof397: cs = 397 goto _testEof _testEof398: cs = 398 goto _testEof _testEof399: cs = 399 goto _testEof _testEof400: cs = 400 goto _testEof _testEof401: cs = 401 goto _testEof _testEof402: cs = 402 goto _testEof _testEof403: cs = 403 goto _testEof _testEof404: cs = 404 goto _testEof _testEof405: cs = 405 goto _testEof _testEof406: cs = 406 goto _testEof _testEof407: cs = 407 goto _testEof _testEof408: cs = 408 goto _testEof _testEof409: cs = 409 goto _testEof _testEof410: cs = 410 goto _testEof _testEof411: cs = 411 goto _testEof _testEof412: cs = 412 goto _testEof _testEof413: cs = 413 goto _testEof _testEof414: cs = 414 goto _testEof _testEof415: cs = 415 goto _testEof _testEof416: cs = 416 goto _testEof _testEof417: cs = 417 goto _testEof _testEof418: cs = 418 goto _testEof _testEof419: cs = 419 goto _testEof _testEof420: cs = 420 goto _testEof _testEof421: cs = 421 goto _testEof _testEof422: cs = 422 goto _testEof _testEof423: cs = 423 goto _testEof _testEof424: cs = 424 goto _testEof _testEof425: cs = 425 goto _testEof _testEof426: cs = 426 goto _testEof _testEof427: cs = 427 goto _testEof _testEof428: cs = 428 goto _testEof _testEof429: cs = 429 goto _testEof _testEof430: cs = 430 goto _testEof _testEof431: cs = 431 goto _testEof _testEof432: cs = 432 goto _testEof _testEof433: cs = 433 goto _testEof _testEof434: cs = 434 goto _testEof _testEof435: cs = 435 goto _testEof _testEof436: cs = 436 goto _testEof _testEof437: cs = 437 goto _testEof _testEof438: cs = 438 goto _testEof _testEof439: cs = 439 goto _testEof _testEof440: cs = 440 goto _testEof _testEof441: cs = 441 goto _testEof _testEof442: cs = 442 goto _testEof _testEof443: cs = 443 goto _testEof _testEof444: cs = 444 goto _testEof _testEof445: cs = 445 goto _testEof _testEof446: cs = 446 goto _testEof _testEof447: cs = 447 goto _testEof _testEof448: cs = 448 goto _testEof _testEof449: cs = 449 goto _testEof _testEof450: cs = 450 goto _testEof _testEof451: cs = 451 goto _testEof _testEof452: cs = 452 goto _testEof _testEof453: cs = 453 goto _testEof _testEof454: cs = 454 goto _testEof _testEof455: cs = 455 goto _testEof _testEof456: cs = 456 goto _testEof _testEof457: cs = 457 goto _testEof _testEof458: cs = 458 goto _testEof _testEof459: cs = 459 goto _testEof _testEof460: cs = 460 goto _testEof _testEof461: cs = 461 goto _testEof _testEof462: cs = 462 goto _testEof _testEof463: cs = 463 goto _testEof _testEof464: cs = 464 goto _testEof _testEof465: cs = 465 goto _testEof _testEof466: cs = 466 goto _testEof _testEof467: cs = 467 goto _testEof _testEof468: cs = 468 goto _testEof _testEof469: cs = 469 goto _testEof _testEof470: cs = 470 goto _testEof _testEof471: cs = 471 goto _testEof _testEof472: cs = 472 goto _testEof _testEof473: cs = 473 goto _testEof _testEof474: cs = 474 goto _testEof _testEof475: cs = 475 goto _testEof _testEof476: cs = 476 goto _testEof _testEof477: cs = 477 goto _testEof _testEof478: cs = 478 goto _testEof _testEof479: cs = 479 goto _testEof _testEof480: cs = 480 goto _testEof _testEof481: cs = 481 goto _testEof _testEof482: cs = 482 goto _testEof _testEof483: cs = 483 goto _testEof _testEof484: cs = 484 goto _testEof _testEof485: cs = 485 goto _testEof _testEof486: cs = 486 goto _testEof _testEof487: cs = 487 goto _testEof _testEof488: cs = 488 goto _testEof _testEof489: cs = 489 goto _testEof _testEof490: cs = 490 goto _testEof _testEof491: cs = 491 goto _testEof _testEof492: cs = 492 goto _testEof _testEof493: cs = 493 goto _testEof _testEof494: cs = 494 goto _testEof _testEof495: cs = 495 goto _testEof _testEof496: cs = 496 goto _testEof _testEof497: cs = 497 goto _testEof _testEof498: cs = 498 goto _testEof _testEof499: cs = 499 goto _testEof _testEof500: cs = 500 goto _testEof _testEof501: cs = 501 goto _testEof _testEof502: cs = 502 goto _testEof _testEof503: cs = 503 goto _testEof _testEof504: cs = 504 goto _testEof _testEof505: cs = 505 goto _testEof _testEof506: cs = 506 goto _testEof _testEof507: cs = 507 goto _testEof _testEof508: cs = 508 goto _testEof _testEof509: cs = 509 goto _testEof _testEof510: cs = 510 goto _testEof _testEof511: cs = 511 goto _testEof _testEof512: cs = 512 goto _testEof _testEof513: cs = 513 goto _testEof _testEof514: cs = 514 goto _testEof _testEof515: cs = 515 goto _testEof _testEof516: cs = 516 goto _testEof _testEof517: cs = 517 goto _testEof _testEof518: cs = 518 goto _testEof _testEof519: cs = 519 goto _testEof _testEof520: cs = 520 goto _testEof _testEof521: cs = 521 goto _testEof _testEof522: cs = 522 goto _testEof _testEof523: cs = 523 goto _testEof _testEof524: cs = 524 goto _testEof _testEof525: cs = 525 goto _testEof _testEof526: cs = 526 goto _testEof _testEof527: cs = 527 goto _testEof _testEof528: cs = 528 goto _testEof _testEof529: cs = 529 goto _testEof _testEof530: cs = 530 goto _testEof _testEof531: cs = 531 goto _testEof _testEof532: cs = 532 goto _testEof _testEof533: cs = 533 goto _testEof _testEof534: cs = 534 goto _testEof _testEof535: cs = 535 goto _testEof _testEof536: cs = 536 goto _testEof _testEof537: cs = 537 goto _testEof _testEof538: cs = 538 goto _testEof _testEof539: cs = 539 goto _testEof _testEof540: cs = 540 goto _testEof _testEof541: cs = 541 goto _testEof _testEof542: cs = 542 goto _testEof _testEof543: cs = 543 goto _testEof _testEof544: cs = 544 goto _testEof _testEof545: cs = 545 goto _testEof _testEof546: cs = 546 goto _testEof _testEof547: cs = 547 goto _testEof _testEof548: cs = 548 goto _testEof _testEof549: cs = 549 goto _testEof _testEof550: cs = 550 goto _testEof _testEof551: cs = 551 goto _testEof _testEof552: cs = 552 goto _testEof _testEof553: cs = 553 goto _testEof _testEof554: cs = 554 goto _testEof _testEof555: cs = 555 goto _testEof _testEof556: cs = 556 goto _testEof _testEof557: cs = 557 goto _testEof _testEof558: cs = 558 goto _testEof _testEof559: cs = 559 goto _testEof _testEof560: cs = 560 goto _testEof _testEof561: cs = 561 goto _testEof _testEof562: cs = 562 goto _testEof _testEof563: cs = 563 goto _testEof _testEof564: cs = 564 goto _testEof _testEof565: cs = 565 goto _testEof _testEof566: cs = 566 goto _testEof _testEof567: cs = 567 goto _testEof _testEof568: cs = 568 goto _testEof _testEof569: cs = 569 goto _testEof _testEof570: cs = 570 goto _testEof _testEof571: cs = 571 goto _testEof _testEof572: cs = 572 goto _testEof _testEof573: cs = 573 goto _testEof _testEof574: cs = 574 goto _testEof _testEof575: cs = 575 goto _testEof _testEof576: cs = 576 goto _testEof _testEof577: cs = 577 goto _testEof _testEof578: cs = 578 goto _testEof _testEof579: cs = 579 goto _testEof _testEof580: cs = 580 goto _testEof _testEof581: cs = 581 goto _testEof _testEof582: cs = 582 goto _testEof _testEof583: cs = 583 goto _testEof _testEof584: cs = 584 goto _testEof _testEof585: cs = 585 goto _testEof _testEof586: cs = 586 goto _testEof _testEof587: cs = 587 goto _testEof _testEof588: cs = 588 goto _testEof _testEof590: cs = 590 goto _testEof _testEof51: cs = 51 goto _testEof _testEof52: cs = 52 goto _testEof _testEof53: cs = 53 goto _testEof _testEof54: cs = 54 goto _testEof _testEof55: cs = 55 goto _testEof _testEof56: cs = 56 goto _testEof _testEof57: cs = 57 goto _testEof _testEof58: cs = 58 goto _testEof _testEof: { } if p == eof { switch cs { case 61: if t, e := time.Parse(RFC3339MICRO, string(data[pb:p])); e == nil { sm.timestamp = &t } case 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 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, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316: if s := string(data[pb:p]); s != "-" { sm.hostname = &s } case 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364: if s := string(data[pb:p]); s != "-" { sm.appname = &s } case 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492: if s := string(data[pb:p]); s != "-" { sm.procID = &s } case 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524: if s := string(data[pb:p]); s != "-" { sm.msgID = &s } case 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556: if sm.structuredData == nil { sm.structuredData = &(map[string]map[string]string{}) } id := string(data[pb:p]) elements := *sm.structuredData if _, ok := elements[id]; !ok { elements[id] = map[string]string{} } case 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588: // Assuming SD map already exists, contains currentid key (set from outside) elements := *sm.structuredData elements[currentid][string(data[pb:p])] = "" case 590: // Store text text := data[pb:p] // Strip backslashes only when there are ... if len(backslashes) > 0 { text = rmchars(text, backslashes, pb) } // Assuming SD map already exists, contains currentid key and currentparamname key (set from outside) elements := *sm.structuredData elements[currentid][currentparamname] = string(text) case 60: if s := string(data[pb:p]); s != "" { sm.message = &s } case 589: pb = p // Store text text := data[pb:p] // Strip backslashes only when there are ... if len(backslashes) > 0 { text = rmchars(text, backslashes, pb) } // Assuming SD map already exists, contains currentid key and currentparamname key (set from outside) elements := *sm.structuredData elements[currentid][currentparamname] = string(text) case 59: pb = p if s := string(data[pb:p]); s != "" { sm.message = &s } } } _out: { } } return sm } // SetPriority set the priority value and the computed facility and severity codes accordingly. // // It ignores incorrect priority values (range [0, 191]). func (sm *SyslogMessage) SetPriority(value uint8) *SyslogMessage { if value >= 0 && value <= 191 { sm.setPriority(value) } return sm } // SetVersion set the version value. // // It ignores incorrect version values (range ]0, 999]). func (sm *SyslogMessage) SetVersion(value uint16) *SyslogMessage { if value > 0 && value <= 999 { sm.version = value } return sm } // SetTimestamp set the timestamp value. func (sm *SyslogMessage) SetTimestamp(value string) *SyslogMessage { return sm.set(timestamp, value) } // SetHostname set the hostname value. func (sm *SyslogMessage) SetHostname(value string) *SyslogMessage { return sm.set(hostname, value) } // SetAppname set the appname value. func (sm *SyslogMessage) SetAppname(value string) *SyslogMessage { return sm.set(appname, value) } // SetProcID set the procid value. func (sm *SyslogMessage) SetProcID(value string) *SyslogMessage { return sm.set(procid, value) } // SetMsgID set the msgid value. func (sm *SyslogMessage) SetMsgID(value string) *SyslogMessage { return sm.set(msgid, value) } // SetElementID set a structured data id. // // When the provided id already exists the operation is discarded. func (sm *SyslogMessage) SetElementID(value string) *SyslogMessage { return sm.set(sdid, value) } // SetParameter set a structured data parameter belonging to the given element. // // If the element does not exist it creates one with the given element id. // When a parameter with the given name already exists for the given element the operation is discarded. func (sm *SyslogMessage) SetParameter(id string, name string, value string) *SyslogMessage { // Create an element with the given id (or re-use the existing one) sm.set(sdid, id) // We can create parameter iff the given element id exists if sm.structuredData != nil { elements := *sm.structuredData if _, ok := elements[id]; ok { currentid = id sm.set(sdpn, name) // We can assign parameter value iff the given parameter key exists if _, ok := elements[id][name]; ok { currentparamname = name sm.set(sdpv, value) } } } return sm } // SetMessage set the message value. func (sm *SyslogMessage) SetMessage(value string) *SyslogMessage { return sm.set(msg, value) } func (sm *SyslogMessage) String() (string, error) { if !sm.Valid() { return "", fmt.Errorf("invalid syslog") } template := "<%d>%d %s %s %s %s %s %s%s" t := "-" hn := "-" an := "-" pid := "-" mid := "-" sd := "-" m := "" if sm.timestamp != nil { t = sm.timestamp.Format("2006-01-02T15:04:05.999999Z07:00") // verify 07:00 } if sm.hostname != nil { hn = *sm.hostname } if sm.appname != nil { an = *sm.appname } if sm.procID != nil { pid = *sm.procID } if sm.msgID != nil { mid = *sm.msgID } if sm.structuredData != nil { // Sort element identifiers identifiers := make([]string, 0) for k := range *sm.structuredData { identifiers = append(identifiers, k) } sort.Strings(identifiers) sd = "" for _, id := range identifiers { sd += fmt.Sprintf("[%s", id) // Sort parameter names params := (*sm.structuredData)[id] names := make([]string, 0) for n := range params { names = append(names, n) } sort.Strings(names) for _, name := range names { sd += fmt.Sprintf(" %s=\"%s\"", name, escape(params[name])) } sd += "]" } } if sm.message != nil { m = " " + *sm.message } return fmt.Sprintf(template, *sm.priority, sm.version, t, hn, an, pid, mid, sd, m), nil } go-syslog-2.0.0/rfc5424/builder.go.rl000066400000000000000000000160031340614351500171200ustar00rootroot00000000000000package rfc5424 import ( "time" "sort" "fmt" ) %%{ machine builder; include rfc5424 "rfc5424.rl"; action mark { pb = p } action set_timestamp { if t, e := time.Parse(RFC3339MICRO, string(data[pb:p])); e == nil { sm.timestamp = &t } } action set_hostname { if s := string(data[pb:p]); s != "-" { sm.hostname = &s } } action set_appname { if s := string(data[pb:p]); s != "-" { sm.appname = &s } } action set_procid { if s := string(data[pb:p]); s != "-" { sm.procID = &s } } action set_msgid { if s := string(data[pb:p]); s != "-" { sm.msgID = &s } } action set_sdid { if sm.structuredData == nil { sm.structuredData = &(map[string]map[string]string{}) } id := string(data[pb:p]) elements := *sm.structuredData if _, ok := elements[id]; !ok { elements[id] = map[string]string{} } } action set_sdpn { // Assuming SD map already exists, contains currentid key (set from outside) elements := *sm.structuredData elements[currentid][string(data[pb:p])] = "" } action markslash { backslashes = append(backslashes, p) } action set_sdpv { // Store text text := data[pb:p] // Strip backslashes only when there are ... if len(backslashes) > 0 { text = rmchars(text, backslashes, pb) } // Assuming SD map already exists, contains currentid key and currentparamname key (set from outside) elements := *sm.structuredData elements[currentid][currentparamname] = string(text) } action set_msg { if s := string(data[pb:p]); s != "" { sm.message = &s } } timestamp := (fulldate 'T' fulltime) >mark %set_timestamp; hostname := hostnamerange >mark %set_hostname; appname := appnamerange >mark %set_appname; procid := procidrange >mark %set_procid; msgid := msgidrange >mark %set_msgid; sdid := sdname >mark %set_sdid; sdpn := sdname >mark %set_sdpn; escapes = (bs >markslash toescape); sdpv := (utf8charwodelims* escapes*)+ >mark %set_sdpv; msg := (bom? utf8octets) >mark %set_msg; write data noerror nofinal; }%% type entrypoint int const ( timestamp entrypoint = iota hostname appname procid msgid sdid sdpn sdpv msg ) func (e entrypoint) translate() int { switch e { case timestamp: return builder_en_timestamp case hostname: return builder_en_hostname case appname: return builder_en_appname case procid: return builder_en_procid case msgid: return builder_en_msgid case sdid: return builder_en_sdid case sdpn: return builder_en_sdpn case sdpv: return builder_en_sdpv case msg: return builder_en_msg default: return builder_start } } var currentid string var currentparamname string func (sm *SyslogMessage) set(from entrypoint, value string) *SyslogMessage { data := []byte(value) p := 0 pb := 0 pe := len(data) eof := len(data) cs := from.translate() backslashes := []int{} %% write exec; return sm } // SetPriority set the priority value and the computed facility and severity codes accordingly. // // It ignores incorrect priority values (range [0, 191]). func (sm *SyslogMessage) SetPriority(value uint8) *SyslogMessage { if value >= 0 && value <= 191 { sm.setPriority(value) } return sm } // SetVersion set the version value. // // It ignores incorrect version values (range ]0, 999]). func (sm *SyslogMessage) SetVersion(value uint16) *SyslogMessage { if value > 0 && value <= 999 { sm.version = value } return sm } // SetTimestamp set the timestamp value. func (sm *SyslogMessage) SetTimestamp(value string) *SyslogMessage { return sm.set(timestamp, value) } // SetHostname set the hostname value. func (sm *SyslogMessage) SetHostname(value string) *SyslogMessage { return sm.set(hostname, value) } // SetAppname set the appname value. func (sm *SyslogMessage) SetAppname(value string) *SyslogMessage { return sm.set(appname, value) } // SetProcID set the procid value. func (sm *SyslogMessage) SetProcID(value string) *SyslogMessage { return sm.set(procid, value) } // SetMsgID set the msgid value. func (sm *SyslogMessage) SetMsgID(value string) *SyslogMessage { return sm.set(msgid, value) } // SetElementID set a structured data id. // // When the provided id already exists the operation is discarded. func (sm *SyslogMessage) SetElementID(value string) *SyslogMessage { return sm.set(sdid, value) } // SetParameter set a structured data parameter belonging to the given element. // // If the element does not exist it creates one with the given element id. // When a parameter with the given name already exists for the given element the operation is discarded. func (sm *SyslogMessage) SetParameter(id string, name string, value string) *SyslogMessage { // Create an element with the given id (or re-use the existing one) sm.set(sdid, id) // We can create parameter iff the given element id exists if sm.structuredData != nil { elements := *sm.structuredData if _, ok := elements[id]; ok { currentid = id sm.set(sdpn, name) // We can assign parameter value iff the given parameter key exists if _, ok := elements[id][name]; ok { currentparamname = name sm.set(sdpv, value) } } } return sm } // SetMessage set the message value. func (sm *SyslogMessage) SetMessage(value string) *SyslogMessage { return sm.set(msg, value) } func (sm *SyslogMessage) String() (string, error) { if !sm.Valid() { return "", fmt.Errorf("invalid syslog") } template := "<%d>%d %s %s %s %s %s %s%s" t := "-" hn := "-" an := "-" pid := "-" mid := "-" sd := "-" m := "" if sm.timestamp != nil { t = sm.timestamp.Format("2006-01-02T15:04:05.999999Z07:00") // verify 07:00 } if sm.hostname != nil { hn = *sm.hostname } if sm.appname != nil { an = *sm.appname } if sm.procID != nil { pid = *sm.procID } if sm.msgID != nil { mid = *sm.msgID } if sm.structuredData != nil { // Sort element identifiers identifiers := make([]string, 0) for k, _ := range *sm.structuredData { identifiers = append(identifiers, k) } sort.Strings(identifiers) sd = "" for _, id := range identifiers { sd += fmt.Sprintf("[%s", id) // Sort parameter names params := (*sm.structuredData)[id] names := make([]string, 0) for n, _ := range params { names = append(names, n) } sort.Strings(names) for _, name := range names { sd += fmt.Sprintf(" %s=\"%s\"", name, escape(params[name])) } sd += "]" } } if sm.message != nil { m = " " + *sm.message } return fmt.Sprintf(template, *sm.priority, sm.version, t, hn, an, pid, mid, sd, m), nil }go-syslog-2.0.0/rfc5424/builder_test.go000066400000000000000000000310771340614351500175530ustar00rootroot00000000000000package rfc5424 import ( "testing" "time" "github.com/influxdata/go-syslog" "github.com/stretchr/testify/assert" ) func TestSetTimestamp(t *testing.T) { m := &SyslogMessage{} assert.Equal(t, time.Date(2003, 10, 11, 22, 14, 15, 0, time.UTC), *m.SetTimestamp("2003-10-11T22:14:15Z").Timestamp()) assert.Equal(t, time.Date(2003, 10, 11, 22, 14, 15, 3000, time.UTC), *m.SetTimestamp("2003-10-11T22:14:15.000003Z").Timestamp()) // (note) > timestamp is invalid but it accepts until valid - ie., Z char // (note) > this dependes on the builder internal parser which does not have a final state, nor we check for any error or final state // (todo) > decide wheter to be more strict or not assert.Equal(t, time.Date(2003, 10, 11, 22, 14, 15, 3000, time.UTC), *m.SetTimestamp("2003-10-11T22:14:15.000003Z+02:00").Timestamp()) } func TestFacilityAndSeverity(t *testing.T) { m := &SyslogMessage{} assert.Nil(t, m.Facility()) assert.Nil(t, m.FacilityMessage()) assert.Nil(t, m.FacilityLevel()) assert.Nil(t, m.Severity()) assert.Nil(t, m.SeverityMessage()) assert.Nil(t, m.SeverityLevel()) assert.Nil(t, m.SeverityShortLevel()) m.SetPriority(1) assert.Equal(t, uint8(0), *m.Facility()) assert.Equal(t, "kernel messages", *m.FacilityMessage()) assert.Equal(t, "kern", *m.FacilityLevel()) assert.Equal(t, uint8(1), *m.Severity()) assert.Equal(t, "action must be taken immediately", *m.SeverityMessage()) assert.Equal(t, "alert", *m.SeverityLevel()) assert.Equal(t, "alert", *m.SeverityShortLevel()) m.SetPriority(120) assert.Equal(t, uint8(15), *m.Facility()) assert.Equal(t, "clock daemon (note 2)", *m.FacilityMessage()) assert.Equal(t, "cron", *m.FacilityLevel()) assert.Equal(t, uint8(0), *m.Severity()) assert.Equal(t, "system is unusable", *m.SeverityMessage()) assert.Equal(t, "emergency", *m.SeverityLevel()) assert.Equal(t, "emerg", *m.SeverityShortLevel()) m.SetPriority(99) assert.Equal(t, uint8(12), *m.Facility()) assert.Equal(t, "NTP subsystem", *m.FacilityMessage()) assert.Equal(t, "NTP subsystem", *m.FacilityLevel()) // MUST fallback to message assert.Equal(t, uint8(3), *m.Severity()) assert.Equal(t, "error conditions", *m.SeverityMessage()) assert.Equal(t, "error", *m.SeverityLevel()) assert.Equal(t, "err", *m.SeverityShortLevel()) } func TestSetNilTimestamp(t *testing.T) { m := &SyslogMessage{} assert.Nil(t, m.SetTimestamp("-").Timestamp()) } func TestSetIncompleteTimestamp(t *testing.T) { m := &SyslogMessage{} date := []byte("2003-11-02T23:12:46.012345") prev := make([]byte, 0, len(date)) for _, d := range date { prev = append(prev, d) assert.Nil(t, m.SetTimestamp(string(prev)).Timestamp()) } } func TestSetSyntacticallyCompleteButIncorrectTimestamp(t *testing.T) { m := &SyslogMessage{} assert.Nil(t, m.SetTimestamp("2003-42-42T22:14:15Z").Timestamp()) } func TestSetImpossibleButSyntacticallyCorrectTimestamp(t *testing.T) { m := &SyslogMessage{} assert.Nil(t, m.SetTimestamp("2003-09-31T22:14:15Z").Timestamp()) } func TestSetTooLongHostname(t *testing.T) { m := &SyslogMessage{} m.SetHostname("abcdefghilmnopqrstuvzabcdefghilmnopqrstuvzabcdefghilmnopqrstuvzabcdefghilmnopqrstuvzabcdefghilmnopqrstuvzabcdefghilmnopqrstuvzabcdefghilmnopqrstuvzabcdefghilmnopqrstuvzabcdefghilmnopqrstuvzabcdefghilmnopqrstuvzabcdefghilmnopqrstuvzabcdefghilmnopqrstuvzabcX") assert.Nil(t, m.Hostname()) } func TestSetNilOrEmptyHostname(t *testing.T) { m := &SyslogMessage{} assert.Nil(t, m.SetHostname("-").Hostname()) assert.Nil(t, m.SetHostname("").Hostname()) } func TestSetHostname(t *testing.T) { m := &SyslogMessage{} maxlen := []byte("abcdefghilmnopqrstuvzabcdefghilmnopqrstuvzabcdefghilmnopqrstuvzabcdefghilmnopqrstuvzabcdefghilmnopqrstuvzabcdefghilmnopqrstuvzabcdefghilmnopqrstuvzabcdefghilmnopqrstuvzabcdefghilmnopqrstuvzabcdefghilmnopqrstuvzabcdefghilmnopqrstuvzabcdefghilmnopqrstuvzabc") prev := make([]byte, 0, len(maxlen)) for _, input := range maxlen { prev = append(prev, input) str := string(prev) assert.Equal(t, str, *m.SetHostname(str).Hostname()) } } func TestSetAppname(t *testing.T) { m := &SyslogMessage{} maxlen := []byte("abcdefghilmnopqrstuvzabcdefghilmnopqrstuvzabcdef") prev := make([]byte, 0, len(maxlen)) for _, input := range maxlen { prev = append(prev, input) str := string(prev) assert.Equal(t, str, *m.SetAppname(str).Appname()) } } func TestSetProcID(t *testing.T) { m := &SyslogMessage{} maxlen := []byte("abcdefghilmnopqrstuvzabcdefghilmnopqrstuvzabcdefghilmnopqrstuvzabcdefghilmnopqrstuvzabcdefghilmnopqrstuvzabcdefghilmnopqrstuvzab") prev := make([]byte, 0, len(maxlen)) for _, input := range maxlen { prev = append(prev, input) str := string(prev) assert.Equal(t, str, *m.SetProcID(str).ProcID()) } } func TestSetMsgID(t *testing.T) { m := &SyslogMessage{} maxlen := []byte("abcdefghilmnopqrstuvzabcdefghilm") prev := make([]byte, 0, len(maxlen)) for _, input := range maxlen { prev = append(prev, input) str := string(prev) assert.Equal(t, str, *m.SetMsgID(str).MsgID()) } } func TestSetSyntacticallyWrongHostnameAppnameProcIDMsgID(t *testing.T) { m := &SyslogMessage{} assert.Nil(t, m.SetHostname("white space not possible").Hostname()) assert.Nil(t, m.SetHostname(string([]byte{0x0})).Hostname()) assert.Nil(t, m.SetAppname("white space not possible").Appname()) assert.Nil(t, m.SetAppname(string([]byte{0x0})).Appname()) assert.Nil(t, m.SetProcID("white space not possible").ProcID()) assert.Nil(t, m.SetProcID(string([]byte{0x0})).ProcID()) assert.Nil(t, m.SetMsgID("white space not possible").MsgID()) assert.Nil(t, m.SetMsgID(string([]byte{0x0})).MsgID()) } func TestSetMessage(t *testing.T) { m := &SyslogMessage{} greek := "κόσμε" assert.Equal(t, greek, *m.SetMessage(greek).Message()) } func TestSetEmptyMessage(t *testing.T) { m := &SyslogMessage{} m.SetMessage("") assert.Nil(t, m.Message()) } func TestSetWrongUTF8Message(t *testing.T) {} func TestSetMessageWithBOM(t *testing.T) {} func TestSetMessageWithNewline(t *testing.T) {} func TestSetOutOfRangeVersion(t *testing.T) { m := &SyslogMessage{} m.SetVersion(1000) assert.Equal(t, m.Version(), uint16(0)) // 0 signals nil for version m.SetVersion(0) assert.Equal(t, m.Version(), uint16(0)) // 0 signals nil for version } func TestSetOutOfRangePriority(t *testing.T) { m := &SyslogMessage{} m.SetPriority(192) assert.Nil(t, m.Priority()) } func TestSetVersion(t *testing.T) { m := &SyslogMessage{} m.SetVersion(1) assert.Equal(t, m.Version(), uint16(1)) m.SetVersion(999) assert.Equal(t, m.Version(), uint16(999)) } func TestSetPriority(t *testing.T) { m := &SyslogMessage{} m.SetPriority(0) assert.Equal(t, *m.Priority(), uint8(0)) m.SetPriority(1) assert.Equal(t, *m.Priority(), uint8(1)) m.SetPriority(191) assert.Equal(t, *m.Priority(), uint8(191)) } func TestSetSDID(t *testing.T) { identifier := "one" m := &SyslogMessage{} assert.Nil(t, m.StructuredData()) m.SetElementID(identifier) sd := m.StructuredData() assert.NotNil(t, sd) assert.IsType(t, (*map[string]map[string]string)(nil), sd) assert.NotNil(t, (*sd)[identifier]) assert.IsType(t, map[string]string{}, (*sd)[identifier]) m.SetElementID(identifier) assert.Len(t, *sd, 1) } func TestSetAllLenghtsSDID(t *testing.T) { m := &SyslogMessage{} maxlen := []byte("abcdefghilmnopqrstuvzabcdefghilm") prev := make([]byte, 0, len(maxlen)) for i, input := range maxlen { prev = append(prev, input) id := string(prev) m.SetElementID(id) assert.Len(t, *m.StructuredData(), i+1) assert.IsType(t, map[string]string{}, (*m.StructuredData())[id]) } } func TestSetTooLongSDID(t *testing.T) { m := &SyslogMessage{} m.SetElementID("abcdefghilmnopqrstuvzabcdefghilmX") assert.Nil(t, m.StructuredData()) } func TestSetSyntacticallyWrongSDID(t *testing.T) { m := &SyslogMessage{} m.SetElementID("no whitespaces") assert.Nil(t, m.StructuredData()) m.SetElementID(" ") assert.Nil(t, m.StructuredData()) m.SetElementID(`"`) assert.Nil(t, m.StructuredData()) m.SetElementID(`no"`) assert.Nil(t, m.StructuredData()) m.SetElementID(`"no`) assert.Nil(t, m.StructuredData()) m.SetElementID("]") assert.Nil(t, m.StructuredData()) m.SetElementID("no]") assert.Nil(t, m.StructuredData()) m.SetElementID("]no") assert.Nil(t, m.StructuredData()) } func TestSetEmptySDID(t *testing.T) { m := &SyslogMessage{} m.SetElementID("") assert.Nil(t, m.StructuredData()) } func TestSetSDParam(t *testing.T) { id := "one" pn := "pname" pv := "pvalue" m := &SyslogMessage{} m.SetParameter(id, pn, pv) sd := m.StructuredData() assert.NotNil(t, sd) assert.IsType(t, (*map[string]map[string]string)(nil), sd) assert.NotNil(t, (*sd)[id]) assert.IsType(t, map[string]string{}, (*sd)[id]) assert.Len(t, *sd, 1) assert.Len(t, (*sd)[id], 1) assert.Equal(t, pv, (*sd)[id][pn]) pn1 := "pname1" pv1 := "κόσμε" m.SetParameter(id, pn1, pv1) assert.Len(t, (*sd)[id], 2) assert.Equal(t, pv1, (*sd)[id][pn1]) id1 := "another" m.SetParameter(id1, pn1, pv1).SetParameter(id1, pn, pv) assert.Len(t, *sd, 2) assert.Len(t, (*sd)[id1], 2) assert.Equal(t, pv1, (*sd)[id1][pn1]) assert.Equal(t, pv, (*sd)[id1][pn]) id2 := "tre" pn2 := "meta" m.SetParameter(id2, pn, `valid\\`).SetParameter(id2, pn1, `\]valid`).SetParameter(id2, pn2, `is\"valid`) assert.Len(t, *sd, 3) assert.Len(t, (*sd)[id2], 3) assert.Equal(t, `valid\`, (*sd)[id2][pn]) assert.Equal(t, `]valid`, (*sd)[id2][pn1]) assert.Equal(t, `is"valid`, (*sd)[id2][pn2]) // Cannot contain \, ], " unless escaped m.SetParameter(id2, pn, `is\valid`).SetParameter(id2, pn1, `is]valid`).SetParameter(id2, pn2, `is"valid`) assert.Len(t, (*sd)[id2], 3) } func TestSetEmptySDParam(t *testing.T) { id := "id" pn := "pn" m := &SyslogMessage{} m.SetParameter(id, pn, "") sd := m.StructuredData() assert.Len(t, *sd, 1) assert.Len(t, (*sd)[id], 1) assert.Equal(t, "", (*sd)[id][pn]) } func TestSerialization(t *testing.T) { var res string var err error var pout syslog.Message var perr error p := NewParser() // Valid syslog message m := &SyslogMessage{} m.SetPriority(1) m.SetVersion(1) res, err = m.String() assert.Nil(t, err) assert.Equal(t, "<1>1 - - - - - -", res) pout, perr = p.Parse([]byte(res)) assert.Equal(t, m, pout) assert.Nil(t, perr) m.SetMessage("-") // does not means nil in this case, remember res, err = m.String() assert.Nil(t, err) assert.Equal(t, "<1>1 - - - - - - -", res) pout, perr = p.Parse([]byte(res)) assert.Equal(t, m, pout) assert.Nil(t, perr) m. SetParameter("mega", "x", "a"). SetParameter("mega", "y", "b"). SetParameter("mega", "z", `\" \] \\`). SetParameter("peta", "a", "name"). SetParameter("giga", "1", ""). SetParameter("peta", "c", "nomen") res, err = m.String() assert.Nil(t, err) assert.Equal(t, `<1>1 - - - - - [giga 1=""][mega x="a" y="b" z="\" \] \\"][peta a="name" c="nomen"] -`, res) pout, perr = p.Parse([]byte(res)) assert.Equal(t, m, pout) assert.Nil(t, perr) m.SetHostname("host1") res, err = m.String() assert.Nil(t, err) assert.Equal(t, `<1>1 - host1 - - - [giga 1=""][mega x="a" y="b" z="\" \] \\"][peta a="name" c="nomen"] -`, res) pout, perr = p.Parse([]byte(res)) assert.Equal(t, m, pout) assert.Nil(t, perr) m.SetAppname("su") res, err = m.String() assert.Nil(t, err) assert.Equal(t, `<1>1 - host1 su - - [giga 1=""][mega x="a" y="b" z="\" \] \\"][peta a="name" c="nomen"] -`, res) pout, perr = p.Parse([]byte(res)) assert.Equal(t, m, pout) assert.Nil(t, perr) m.SetProcID("22") res, err = m.String() assert.Nil(t, err) assert.Equal(t, `<1>1 - host1 su 22 - [giga 1=""][mega x="a" y="b" z="\" \] \\"][peta a="name" c="nomen"] -`, res) pout, perr = p.Parse([]byte(res)) assert.Equal(t, m, pout) assert.Nil(t, perr) m.SetMsgID("#1") res, err = m.String() assert.Nil(t, err) assert.Equal(t, `<1>1 - host1 su 22 #1 [giga 1=""][mega x="a" y="b" z="\" \] \\"][peta a="name" c="nomen"] -`, res) pout, perr = p.Parse([]byte(res)) assert.Equal(t, m, pout) assert.Nil(t, perr) m.SetTimestamp("2002-10-22T16:33:15.000087+01:00") res, err = m.String() assert.Nil(t, err) assert.Equal(t, `<1>1 2002-10-22T16:33:15.000087+01:00 host1 su 22 #1 [giga 1=""][mega x="a" y="b" z="\" \] \\"][peta a="name" c="nomen"] -`, res) pout, perr = p.Parse([]byte(res)) assert.Equal(t, m, pout) assert.Nil(t, perr) m.SetMessage("κόσμε") res, err = m.String() assert.Nil(t, err) assert.Equal(t, `<1>1 2002-10-22T16:33:15.000087+01:00 host1 su 22 #1 [giga 1=""][mega x="a" y="b" z="\" \] \\"][peta a="name" c="nomen"] κόσμε`, res) pout, perr = p.Parse([]byte(res)) assert.Equal(t, m, pout) assert.Nil(t, perr) // Invalid syslog message m2 := &SyslogMessage{} m2.SetPriority(192) m2.SetVersion(9999) res, err = m2.String() assert.Empty(t, res) assert.Error(t, err) } go-syslog-2.0.0/rfc5424/example_test.go000066400000000000000000000045451340614351500175600ustar00rootroot00000000000000package rfc5424 import ( "fmt" "github.com/davecgh/go-spew/spew" ) func output(out interface{}) { spew.Config.DisableCapacities = true spew.Config.DisablePointerAddresses = true spew.Dump(out) } func Example() { i := []byte(`<165>4 2018-10-11T22:14:15.003Z mymach.it e - 1 [ex@32473 iut="3"] An application event log entry...`) p := NewParser() m, _ := p.Parse(i) output(m) // Output: // (*rfc5424.SyslogMessage)({ // priority: (*uint8)(165), // facility: (*uint8)(20), // severity: (*uint8)(5), // version: (uint16) 4, // timestamp: (*time.Time)(2018-10-11 22:14:15.003 +0000 UTC), // hostname: (*string)((len=9) "mymach.it"), // appname: (*string)((len=1) "e"), // procID: (*string)(), // msgID: (*string)((len=1) "1"), // structuredData: (*map[string]map[string]string)((len=1) { // (string) (len=8) "ex@32473": (map[string]string) (len=1) { // (string) (len=3) "iut": (string) (len=1) "3" // } // }), // message: (*string)((len=33) "An application event log entry...") // }) } func Example_besteffort() { i := []byte(`<1>1 A - - - - - -`) p := NewParser(WithBestEffort()) m, e := p.Parse(i) output(m) fmt.Println(e) // Output: // (*rfc5424.SyslogMessage)({ // priority: (*uint8)(1), // facility: (*uint8)(0), // severity: (*uint8)(1), // version: (uint16) 1, // timestamp: (*time.Time)(), // hostname: (*string)(), // appname: (*string)(), // procID: (*string)(), // msgID: (*string)(), // structuredData: (*map[string]map[string]string)(), // message: (*string)() // }) // expecting a RFC3339MICRO timestamp or a nil value [col 5] } func Example_builder() { msg := &SyslogMessage{} msg.SetTimestamp("not a RFC3339MICRO timestamp") fmt.Println("Valid?", msg.Valid()) msg.SetPriority(191) msg.SetVersion(1) fmt.Println("Valid?", msg.Valid()) output(msg) str, _ := msg.String() fmt.Println(str) // Output: // Valid? false // Valid? true // (*rfc5424.SyslogMessage)({ // priority: (*uint8)(191), // facility: (*uint8)(23), // severity: (*uint8)(7), // version: (uint16) 1, // timestamp: (*time.Time)(), // hostname: (*string)(), // appname: (*string)(), // procID: (*string)(), // msgID: (*string)(), // structuredData: (*map[string]map[string]string)(), // message: (*string)() // }) // <191>1 - - - - - - } go-syslog-2.0.0/rfc5424/functions.go000066400000000000000000000020771340614351500170740ustar00rootroot00000000000000package rfc5424 // unsafeUTF8DecimalCodePointsToInt converts a slice containing // a series of UTF-8 decimal code points into their integer rapresentation. // // It assumes input code points are in the range 48-57. // Returns a pointer since an empty slice is equal to nil and not to the zero value of the codomain (ie., `int`). func unsafeUTF8DecimalCodePointsToInt(chars []uint8) int { out := 0 ord := 1 for i := len(chars) - 1; i >= 0; i-- { curchar := int(chars[i]) out += (curchar - '0') * ord ord *= 10 } return out } // escape adds a backslash to \, ], " characters func escape(value string) string { res := "" for i, c := range value { if c == 92 || c == 93 || c == 34 { res += `\` } res += string(value[i]) } return res } // rmchars remove byte at given positions starting from offset func rmchars(data []byte, positions []int, offset int) []byte { // We need a copy here to not modify original data cp := append([]byte(nil), data...) for i, pos := range positions { at := pos - i - offset cp = append(cp[:at], cp[(at+1):]...) } return cp } go-syslog-2.0.0/rfc5424/functions_test.go000066400000000000000000000013731340614351500201310ustar00rootroot00000000000000package rfc5424 import ( "testing" "github.com/stretchr/testify/assert" ) func TestSimpleUTF8DecimalConversion(t *testing.T) { slice := []uint8{49, 48, 49} res := unsafeUTF8DecimalCodePointsToInt(slice) assert.Equal(t, 101, res) } func TestNumberStartingWithZero(t *testing.T) { slice := []uint8{48, 48, 50} res := unsafeUTF8DecimalCodePointsToInt(slice) assert.Equal(t, 2, res) } func TestCharsNotInRange(t *testing.T) { point := 10 slice := []uint8{uint8(point)} // Line Feed (LF) res := unsafeUTF8DecimalCodePointsToInt(slice) assert.Equal(t, res, -(48 - point)) } func TestAllDigits(t *testing.T) { slice := []uint8{49, 50, 51, 52, 53, 54, 55, 56, 57, 48} res := unsafeUTF8DecimalCodePointsToInt(slice) assert.Equal(t, 1234567890, res) } go-syslog-2.0.0/rfc5424/machine.go000066400000000000000000005767531340614351500165110ustar00rootroot00000000000000package rfc5424 import ( "fmt" "github.com/influxdata/go-syslog" "time" ) var ( errPrival = "expecting a priority value in the range 1-191 or equal to 0 [col %d]" errPri = "expecting a priority value within angle brackets [col %d]" errVersion = "expecting a version value in the range 1-999 [col %d]" errTimestamp = "expecting a RFC3339MICRO timestamp or a nil value [col %d]" errHostname = "expecting an hostname (from 1 to max 255 US-ASCII characters) or a nil value [col %d]" errAppname = "expecting an app-name (from 1 to max 48 US-ASCII characters) or a nil value [col %d]" errProcid = "expecting a procid (from 1 to max 128 US-ASCII characters) or a nil value [col %d]" errMsgid = "expecting a msgid (from 1 to max 32 US-ASCII characters) or a nil value [col %d]" errStructuredData = "expecting a structured data section containing one or more elements (`[id( key=\"value\")*]+`) or a nil value [col %d]" errSdID = "expecting a structured data element id (from 1 to max 32 US-ASCII characters; except `=`, ` `, `]`, and `\"` [col %d]" errSdIDDuplicated = "duplicate structured data element id [col %d]" errSdParam = "expecting a structured data parameter (`key=\"value\"`, both part from 1 to max 32 US-ASCII characters; key cannot contain `=`, ` `, `]`, and `\"`, while value cannot contain `]`, backslash, and `\"` unless escaped) [col %d]" errMsg = "expecting a free-form optional message in UTF-8 (starting with or without BOM) [col %d]" errEscape = "expecting chars `]`, `\"`, and `\\` to be escaped within param value [col %d]" errParse = "parsing error [col %d]" ) // RFC3339MICRO represents the timestamp format that RFC5424 mandates. const RFC3339MICRO = "2006-01-02T15:04:05.999999Z07:00" const start int = 1 const firstFinal int = 603 const enFail int = 607 const enMain int = 1 type machine struct { data []byte cs int p, pe, eof int pb int err error currentelem string currentparam string msgat int backslashat []int bestEffort bool } // NewMachine creates a new FSM able to parse RFC5424 syslog messages. func NewMachine(options ...syslog.MachineOption) syslog.Machine { m := &machine{} for _, opt := range options { opt(m) } return m } func (m *machine) WithBestEffort() { m.bestEffort = true } // HasBestEffort tells whether the receiving machine has best effort mode on or off. func (m *machine) HasBestEffort() bool { return m.bestEffort } // Err returns the error that occurred on the last call to Parse. // // If the result is nil, then the line was parsed successfully. func (m *machine) Err() error { return m.err } func (m *machine) text() []byte { return m.data[m.pb:m.p] } // Parse parses the input byte array as a RFC5424 syslog message. // // When a valid RFC5424 syslog message is given it outputs its structured representation. // If the parsing detects an error it returns it with the position where the error occurred. // // It can also partially parse input messages returning a partially valid structured representation // and the error that stopped the parsing. func (m *machine) Parse(input []byte) (syslog.Message, error) { m.data = input m.p = 0 m.pb = 0 m.msgat = 0 m.backslashat = []int{} m.pe = len(input) m.eof = len(input) m.err = nil output := &syslogMessage{} { m.cs = start } { if (m.p) == (m.pe) { goto _testEof } switch m.cs { case 1: goto stCase1 case 0: goto stCase0 case 2: goto stCase2 case 3: goto stCase3 case 4: goto stCase4 case 5: goto stCase5 case 6: goto stCase6 case 7: goto stCase7 case 8: goto stCase8 case 9: goto stCase9 case 10: goto stCase10 case 11: goto stCase11 case 12: goto stCase12 case 13: goto stCase13 case 14: goto stCase14 case 15: goto stCase15 case 16: goto stCase16 case 603: goto stCase603 case 604: goto stCase604 case 605: goto stCase605 case 17: goto stCase17 case 18: goto stCase18 case 19: goto stCase19 case 20: goto stCase20 case 21: goto stCase21 case 22: goto stCase22 case 23: goto stCase23 case 24: goto stCase24 case 25: goto stCase25 case 26: goto stCase26 case 27: goto stCase27 case 28: goto stCase28 case 29: goto stCase29 case 30: goto stCase30 case 31: goto stCase31 case 32: goto stCase32 case 33: goto stCase33 case 34: goto stCase34 case 35: goto stCase35 case 36: goto stCase36 case 37: goto stCase37 case 38: goto stCase38 case 39: goto stCase39 case 40: goto stCase40 case 41: goto stCase41 case 42: goto stCase42 case 43: goto stCase43 case 44: goto stCase44 case 45: goto stCase45 case 46: goto stCase46 case 47: goto stCase47 case 48: goto stCase48 case 49: goto stCase49 case 50: goto stCase50 case 51: goto stCase51 case 52: goto stCase52 case 53: goto stCase53 case 54: goto stCase54 case 55: goto stCase55 case 56: goto stCase56 case 57: goto stCase57 case 58: goto stCase58 case 59: goto stCase59 case 60: goto stCase60 case 61: goto stCase61 case 62: goto stCase62 case 606: goto stCase606 case 63: goto stCase63 case 64: goto stCase64 case 65: goto stCase65 case 66: goto stCase66 case 67: goto stCase67 case 68: goto stCase68 case 69: goto stCase69 case 70: goto stCase70 case 71: goto stCase71 case 72: goto stCase72 case 73: goto stCase73 case 74: goto stCase74 case 75: goto stCase75 case 76: goto stCase76 case 77: goto stCase77 case 78: goto stCase78 case 79: goto stCase79 case 80: goto stCase80 case 81: goto stCase81 case 82: goto stCase82 case 83: goto stCase83 case 84: goto stCase84 case 85: goto stCase85 case 86: goto stCase86 case 87: goto stCase87 case 88: goto stCase88 case 89: goto stCase89 case 90: goto stCase90 case 91: goto stCase91 case 92: goto stCase92 case 93: goto stCase93 case 94: goto stCase94 case 95: goto stCase95 case 96: goto stCase96 case 97: goto stCase97 case 98: goto stCase98 case 99: goto stCase99 case 100: goto stCase100 case 101: goto stCase101 case 102: goto stCase102 case 103: goto stCase103 case 104: goto stCase104 case 105: goto stCase105 case 106: goto stCase106 case 107: goto stCase107 case 108: goto stCase108 case 109: goto stCase109 case 110: goto stCase110 case 111: goto stCase111 case 112: goto stCase112 case 113: goto stCase113 case 114: goto stCase114 case 115: goto stCase115 case 116: goto stCase116 case 117: goto stCase117 case 118: goto stCase118 case 119: goto stCase119 case 120: goto stCase120 case 121: goto stCase121 case 122: goto stCase122 case 123: goto stCase123 case 124: goto stCase124 case 125: goto stCase125 case 126: goto stCase126 case 127: goto stCase127 case 128: goto stCase128 case 129: goto stCase129 case 130: goto stCase130 case 131: goto stCase131 case 132: goto stCase132 case 133: goto stCase133 case 134: goto stCase134 case 135: goto stCase135 case 136: goto stCase136 case 137: goto stCase137 case 138: goto stCase138 case 139: goto stCase139 case 140: goto stCase140 case 141: goto stCase141 case 142: goto stCase142 case 143: goto stCase143 case 144: goto stCase144 case 145: goto stCase145 case 146: goto stCase146 case 147: goto stCase147 case 148: goto stCase148 case 149: goto stCase149 case 150: goto stCase150 case 151: goto stCase151 case 152: goto stCase152 case 153: goto stCase153 case 154: goto stCase154 case 155: goto stCase155 case 156: goto stCase156 case 157: goto stCase157 case 158: goto stCase158 case 159: goto stCase159 case 160: goto stCase160 case 161: goto stCase161 case 162: goto stCase162 case 163: goto stCase163 case 164: goto stCase164 case 165: goto stCase165 case 166: goto stCase166 case 167: goto stCase167 case 168: goto stCase168 case 169: goto stCase169 case 170: goto stCase170 case 171: goto stCase171 case 172: goto stCase172 case 173: goto stCase173 case 174: goto stCase174 case 175: goto stCase175 case 176: goto stCase176 case 177: goto stCase177 case 178: goto stCase178 case 179: goto stCase179 case 180: goto stCase180 case 181: goto stCase181 case 182: goto stCase182 case 183: goto stCase183 case 184: goto stCase184 case 185: goto stCase185 case 186: goto stCase186 case 187: goto stCase187 case 188: goto stCase188 case 189: goto stCase189 case 190: goto stCase190 case 191: goto stCase191 case 192: goto stCase192 case 193: goto stCase193 case 194: goto stCase194 case 195: goto stCase195 case 196: goto stCase196 case 197: goto stCase197 case 198: goto stCase198 case 199: goto stCase199 case 200: goto stCase200 case 201: goto stCase201 case 202: goto stCase202 case 203: goto stCase203 case 204: goto stCase204 case 205: goto stCase205 case 206: goto stCase206 case 207: goto stCase207 case 208: goto stCase208 case 209: goto stCase209 case 210: goto stCase210 case 211: goto stCase211 case 212: goto stCase212 case 213: goto stCase213 case 214: goto stCase214 case 215: goto stCase215 case 216: goto stCase216 case 217: goto stCase217 case 218: goto stCase218 case 219: goto stCase219 case 220: goto stCase220 case 221: goto stCase221 case 222: goto stCase222 case 223: goto stCase223 case 224: goto stCase224 case 225: goto stCase225 case 226: goto stCase226 case 227: goto stCase227 case 228: goto stCase228 case 229: goto stCase229 case 230: goto stCase230 case 231: goto stCase231 case 232: goto stCase232 case 233: goto stCase233 case 234: goto stCase234 case 235: goto stCase235 case 236: goto stCase236 case 237: goto stCase237 case 238: goto stCase238 case 239: goto stCase239 case 240: goto stCase240 case 241: goto stCase241 case 242: goto stCase242 case 243: goto stCase243 case 244: goto stCase244 case 245: goto stCase245 case 246: goto stCase246 case 247: goto stCase247 case 248: goto stCase248 case 249: goto stCase249 case 250: goto stCase250 case 251: goto stCase251 case 252: goto stCase252 case 253: goto stCase253 case 254: goto stCase254 case 255: goto stCase255 case 256: goto stCase256 case 257: goto stCase257 case 258: goto stCase258 case 259: goto stCase259 case 260: goto stCase260 case 261: goto stCase261 case 262: goto stCase262 case 263: goto stCase263 case 264: goto stCase264 case 265: goto stCase265 case 266: goto stCase266 case 267: goto stCase267 case 268: goto stCase268 case 269: goto stCase269 case 270: goto stCase270 case 271: goto stCase271 case 272: goto stCase272 case 273: goto stCase273 case 274: goto stCase274 case 275: goto stCase275 case 276: goto stCase276 case 277: goto stCase277 case 278: goto stCase278 case 279: goto stCase279 case 280: goto stCase280 case 281: goto stCase281 case 282: goto stCase282 case 283: goto stCase283 case 284: goto stCase284 case 285: goto stCase285 case 286: goto stCase286 case 287: goto stCase287 case 288: goto stCase288 case 289: goto stCase289 case 290: goto stCase290 case 291: goto stCase291 case 292: goto stCase292 case 293: goto stCase293 case 294: goto stCase294 case 295: goto stCase295 case 296: goto stCase296 case 297: goto stCase297 case 298: goto stCase298 case 299: goto stCase299 case 300: goto stCase300 case 301: goto stCase301 case 302: goto stCase302 case 303: goto stCase303 case 304: goto stCase304 case 305: goto stCase305 case 306: goto stCase306 case 307: goto stCase307 case 308: goto stCase308 case 309: goto stCase309 case 310: goto stCase310 case 311: goto stCase311 case 312: goto stCase312 case 313: goto stCase313 case 314: goto stCase314 case 315: goto stCase315 case 316: goto stCase316 case 317: goto stCase317 case 318: goto stCase318 case 319: goto stCase319 case 320: goto stCase320 case 321: goto stCase321 case 322: goto stCase322 case 323: goto stCase323 case 324: goto stCase324 case 325: goto stCase325 case 326: goto stCase326 case 327: goto stCase327 case 328: goto stCase328 case 329: goto stCase329 case 330: goto stCase330 case 331: goto stCase331 case 332: goto stCase332 case 333: goto stCase333 case 334: goto stCase334 case 335: goto stCase335 case 336: goto stCase336 case 337: goto stCase337 case 338: goto stCase338 case 339: goto stCase339 case 340: goto stCase340 case 341: goto stCase341 case 342: goto stCase342 case 343: goto stCase343 case 344: goto stCase344 case 345: goto stCase345 case 346: goto stCase346 case 347: goto stCase347 case 348: goto stCase348 case 349: goto stCase349 case 350: goto stCase350 case 351: goto stCase351 case 352: goto stCase352 case 353: goto stCase353 case 354: goto stCase354 case 355: goto stCase355 case 356: goto stCase356 case 357: goto stCase357 case 358: goto stCase358 case 359: goto stCase359 case 360: goto stCase360 case 361: goto stCase361 case 362: goto stCase362 case 363: goto stCase363 case 364: goto stCase364 case 365: goto stCase365 case 366: goto stCase366 case 367: goto stCase367 case 368: goto stCase368 case 369: goto stCase369 case 370: goto stCase370 case 371: goto stCase371 case 372: goto stCase372 case 373: goto stCase373 case 374: goto stCase374 case 375: goto stCase375 case 376: goto stCase376 case 377: goto stCase377 case 378: goto stCase378 case 379: goto stCase379 case 380: goto stCase380 case 381: goto stCase381 case 382: goto stCase382 case 383: goto stCase383 case 384: goto stCase384 case 385: goto stCase385 case 386: goto stCase386 case 387: goto stCase387 case 388: goto stCase388 case 389: goto stCase389 case 390: goto stCase390 case 391: goto stCase391 case 392: goto stCase392 case 393: goto stCase393 case 394: goto stCase394 case 395: goto stCase395 case 396: goto stCase396 case 397: goto stCase397 case 398: goto stCase398 case 399: goto stCase399 case 400: goto stCase400 case 401: goto stCase401 case 402: goto stCase402 case 403: goto stCase403 case 404: goto stCase404 case 405: goto stCase405 case 406: goto stCase406 case 407: goto stCase407 case 408: goto stCase408 case 409: goto stCase409 case 410: goto stCase410 case 411: goto stCase411 case 412: goto stCase412 case 413: goto stCase413 case 414: goto stCase414 case 415: goto stCase415 case 416: goto stCase416 case 417: goto stCase417 case 418: goto stCase418 case 419: goto stCase419 case 420: goto stCase420 case 421: goto stCase421 case 422: goto stCase422 case 423: goto stCase423 case 424: goto stCase424 case 425: goto stCase425 case 426: goto stCase426 case 427: goto stCase427 case 428: goto stCase428 case 429: goto stCase429 case 430: goto stCase430 case 431: goto stCase431 case 432: goto stCase432 case 433: goto stCase433 case 434: goto stCase434 case 435: goto stCase435 case 436: goto stCase436 case 437: goto stCase437 case 438: goto stCase438 case 439: goto stCase439 case 440: goto stCase440 case 441: goto stCase441 case 442: goto stCase442 case 443: goto stCase443 case 444: goto stCase444 case 445: goto stCase445 case 446: goto stCase446 case 447: goto stCase447 case 448: goto stCase448 case 449: goto stCase449 case 450: goto stCase450 case 451: goto stCase451 case 452: goto stCase452 case 453: goto stCase453 case 454: goto stCase454 case 455: goto stCase455 case 456: goto stCase456 case 457: goto stCase457 case 458: goto stCase458 case 459: goto stCase459 case 460: goto stCase460 case 461: goto stCase461 case 462: goto stCase462 case 463: goto stCase463 case 464: goto stCase464 case 465: goto stCase465 case 466: goto stCase466 case 467: goto stCase467 case 468: goto stCase468 case 469: goto stCase469 case 470: goto stCase470 case 471: goto stCase471 case 472: goto stCase472 case 473: goto stCase473 case 474: goto stCase474 case 475: goto stCase475 case 476: goto stCase476 case 477: goto stCase477 case 478: goto stCase478 case 479: goto stCase479 case 480: goto stCase480 case 481: goto stCase481 case 482: goto stCase482 case 483: goto stCase483 case 484: goto stCase484 case 485: goto stCase485 case 486: goto stCase486 case 487: goto stCase487 case 488: goto stCase488 case 489: goto stCase489 case 490: goto stCase490 case 491: goto stCase491 case 492: goto stCase492 case 493: goto stCase493 case 494: goto stCase494 case 495: goto stCase495 case 496: goto stCase496 case 497: goto stCase497 case 498: goto stCase498 case 499: goto stCase499 case 500: goto stCase500 case 501: goto stCase501 case 502: goto stCase502 case 503: goto stCase503 case 504: goto stCase504 case 505: goto stCase505 case 506: goto stCase506 case 507: goto stCase507 case 508: goto stCase508 case 509: goto stCase509 case 510: goto stCase510 case 511: goto stCase511 case 512: goto stCase512 case 513: goto stCase513 case 514: goto stCase514 case 515: goto stCase515 case 516: goto stCase516 case 517: goto stCase517 case 518: goto stCase518 case 519: goto stCase519 case 520: goto stCase520 case 521: goto stCase521 case 522: goto stCase522 case 523: goto stCase523 case 524: goto stCase524 case 525: goto stCase525 case 526: goto stCase526 case 527: goto stCase527 case 528: goto stCase528 case 529: goto stCase529 case 530: goto stCase530 case 531: goto stCase531 case 532: goto stCase532 case 533: goto stCase533 case 534: goto stCase534 case 535: goto stCase535 case 536: goto stCase536 case 537: goto stCase537 case 538: goto stCase538 case 539: goto stCase539 case 540: goto stCase540 case 541: goto stCase541 case 542: goto stCase542 case 543: goto stCase543 case 544: goto stCase544 case 545: goto stCase545 case 546: goto stCase546 case 547: goto stCase547 case 548: goto stCase548 case 549: goto stCase549 case 550: goto stCase550 case 551: goto stCase551 case 552: goto stCase552 case 553: goto stCase553 case 554: goto stCase554 case 555: goto stCase555 case 556: goto stCase556 case 557: goto stCase557 case 558: goto stCase558 case 559: goto stCase559 case 560: goto stCase560 case 561: goto stCase561 case 562: goto stCase562 case 563: goto stCase563 case 564: goto stCase564 case 565: goto stCase565 case 566: goto stCase566 case 567: goto stCase567 case 568: goto stCase568 case 569: goto stCase569 case 570: goto stCase570 case 571: goto stCase571 case 572: goto stCase572 case 573: goto stCase573 case 574: goto stCase574 case 575: goto stCase575 case 576: goto stCase576 case 577: goto stCase577 case 578: goto stCase578 case 579: goto stCase579 case 580: goto stCase580 case 581: goto stCase581 case 582: goto stCase582 case 583: goto stCase583 case 584: goto stCase584 case 585: goto stCase585 case 586: goto stCase586 case 587: goto stCase587 case 588: goto stCase588 case 589: goto stCase589 case 590: goto stCase590 case 591: goto stCase591 case 592: goto stCase592 case 593: goto stCase593 case 594: goto stCase594 case 595: goto stCase595 case 596: goto stCase596 case 597: goto stCase597 case 598: goto stCase598 case 599: goto stCase599 case 600: goto stCase600 case 601: goto stCase601 case 602: goto stCase602 case 607: goto stCase607 } goto stOut stCase1: if (m.data)[(m.p)] == 60 { goto st2 } goto tr0 tr0: m.err = fmt.Errorf(errPri, m.p) (m.p)-- { goto st607 } goto st0 tr2: m.err = fmt.Errorf(errPrival, m.p) (m.p)-- { goto st607 } m.err = fmt.Errorf(errPri, m.p) (m.p)-- { goto st607 } m.err = fmt.Errorf(errParse, m.p) (m.p)-- { goto st607 } goto st0 tr7: m.err = fmt.Errorf(errVersion, m.p) (m.p)-- { goto st607 } m.err = fmt.Errorf(errParse, m.p) (m.p)-- { goto st607 } goto st0 tr9: m.err = fmt.Errorf(errParse, m.p) (m.p)-- { goto st607 } goto st0 tr12: m.err = fmt.Errorf(errTimestamp, m.p) (m.p)-- { goto st607 } m.err = fmt.Errorf(errParse, m.p) (m.p)-- { goto st607 } goto st0 tr16: m.err = fmt.Errorf(errHostname, m.p) (m.p)-- { goto st607 } m.err = fmt.Errorf(errParse, m.p) (m.p)-- { goto st607 } goto st0 tr20: m.err = fmt.Errorf(errAppname, m.p) (m.p)-- { goto st607 } m.err = fmt.Errorf(errParse, m.p) (m.p)-- { goto st607 } goto st0 tr24: m.err = fmt.Errorf(errProcid, m.p) (m.p)-- { goto st607 } m.err = fmt.Errorf(errParse, m.p) (m.p)-- { goto st607 } goto st0 tr28: m.err = fmt.Errorf(errMsgid, m.p) (m.p)-- { goto st607 } m.err = fmt.Errorf(errParse, m.p) (m.p)-- { goto st607 } goto st0 tr30: m.err = fmt.Errorf(errMsgid, m.p) (m.p)-- { goto st607 } goto st0 tr33: m.err = fmt.Errorf(errStructuredData, m.p) (m.p)-- { goto st607 } goto st0 tr36: // If error encountered within the message rule ... if m.msgat > 0 { // Save the text until valid (m.p is where the parser has stopped) output.message = string(m.data[m.msgat:m.p]) } m.err = fmt.Errorf(errMsg, m.p) (m.p)-- { goto st607 } m.err = fmt.Errorf(errParse, m.p) (m.p)-- { goto st607 } goto st0 tr40: delete(output.structuredData, m.currentelem) if len(output.structuredData) == 0 { output.hasElements = false } m.err = fmt.Errorf(errSdID, m.p) (m.p)-- { goto st607 } m.err = fmt.Errorf(errStructuredData, m.p) (m.p)-- { goto st607 } goto st0 tr42: if _, ok := output.structuredData[string(m.text())]; ok { // As per RFC5424 section 6.3.2 SD-ID MUST NOT exist more than once in a message m.err = fmt.Errorf(errSdIDDuplicated, m.p) (m.p)-- { goto st607 } } else { id := string(m.text()) output.structuredData[id] = map[string]string{} output.hasElements = true m.currentelem = id } delete(output.structuredData, m.currentelem) if len(output.structuredData) == 0 { output.hasElements = false } m.err = fmt.Errorf(errSdID, m.p) (m.p)-- { goto st607 } m.err = fmt.Errorf(errStructuredData, m.p) (m.p)-- { goto st607 } goto st0 tr46: if len(output.structuredData) > 0 { delete(output.structuredData[m.currentelem], m.currentparam) } m.err = fmt.Errorf(errSdParam, m.p) (m.p)-- { goto st607 } m.err = fmt.Errorf(errStructuredData, m.p) (m.p)-- { goto st607 } goto st0 tr84: m.err = fmt.Errorf(errEscape, m.p) (m.p)-- { goto st607 } if len(output.structuredData) > 0 { delete(output.structuredData[m.currentelem], m.currentparam) } m.err = fmt.Errorf(errSdParam, m.p) (m.p)-- { goto st607 } m.err = fmt.Errorf(errStructuredData, m.p) (m.p)-- { goto st607 } goto st0 tr619: if t, e := time.Parse(RFC3339MICRO, string(m.text())); e != nil { m.err = fmt.Errorf("%s [col %d]", e, m.p) (m.p)-- { goto st607 } } else { output.timestamp = t output.timestampSet = true } m.err = fmt.Errorf(errParse, m.p) (m.p)-- { goto st607 } goto st0 tr645: m.err = fmt.Errorf(errStructuredData, m.p) (m.p)-- { goto st607 } m.err = fmt.Errorf(errParse, m.p) (m.p)-- { goto st607 } goto st0 stCase0: st0: m.cs = 0 goto _out st2: if (m.p)++; (m.p) == (m.pe) { goto _testEof2 } stCase2: switch (m.data)[(m.p)] { case 48: goto tr3 case 49: goto tr4 } if 50 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 57 { goto tr5 } goto tr2 tr3: m.pb = m.p goto st3 st3: if (m.p)++; (m.p) == (m.pe) { goto _testEof3 } stCase3: output.priority = uint8(unsafeUTF8DecimalCodePointsToInt(m.text())) output.prioritySet = true if (m.data)[(m.p)] == 62 { goto st4 } goto tr2 st4: if (m.p)++; (m.p) == (m.pe) { goto _testEof4 } stCase4: if 49 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 57 { goto tr8 } goto tr7 tr8: m.pb = m.p goto st5 st5: if (m.p)++; (m.p) == (m.pe) { goto _testEof5 } stCase5: output.version = uint16(unsafeUTF8DecimalCodePointsToInt(m.text())) if (m.data)[(m.p)] == 32 { goto st6 } if 48 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 57 { goto st598 } goto tr9 st6: if (m.p)++; (m.p) == (m.pe) { goto _testEof6 } stCase6: if (m.data)[(m.p)] == 45 { goto st7 } if 48 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 57 { goto tr14 } goto tr12 st7: if (m.p)++; (m.p) == (m.pe) { goto _testEof7 } stCase7: if (m.data)[(m.p)] == 32 { goto st8 } goto tr9 tr620: if t, e := time.Parse(RFC3339MICRO, string(m.text())); e != nil { m.err = fmt.Errorf("%s [col %d]", e, m.p) (m.p)-- { goto st607 } } else { output.timestamp = t output.timestampSet = true } goto st8 st8: if (m.p)++; (m.p) == (m.pe) { goto _testEof8 } stCase8: if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto tr17 } goto tr16 tr17: m.pb = m.p goto st9 st9: if (m.p)++; (m.p) == (m.pe) { goto _testEof9 } stCase9: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st307 } goto tr16 tr18: output.hostname = string(m.text()) goto st10 st10: if (m.p)++; (m.p) == (m.pe) { goto _testEof10 } stCase10: if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto tr21 } goto tr20 tr21: m.pb = m.p goto st11 st11: if (m.p)++; (m.p) == (m.pe) { goto _testEof11 } stCase11: if (m.data)[(m.p)] == 32 { goto tr22 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st260 } goto tr20 tr22: output.appname = string(m.text()) goto st12 st12: if (m.p)++; (m.p) == (m.pe) { goto _testEof12 } stCase12: if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto tr25 } goto tr24 tr25: m.pb = m.p goto st13 st13: if (m.p)++; (m.p) == (m.pe) { goto _testEof13 } stCase13: if (m.data)[(m.p)] == 32 { goto tr26 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st133 } goto tr24 tr26: output.procID = string(m.text()) goto st14 st14: if (m.p)++; (m.p) == (m.pe) { goto _testEof14 } stCase14: if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto tr29 } goto tr28 tr29: m.pb = m.p goto st15 st15: if (m.p)++; (m.p) == (m.pe) { goto _testEof15 } stCase15: if (m.data)[(m.p)] == 32 { goto tr31 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st102 } goto tr30 tr31: output.msgID = string(m.text()) goto st16 st16: if (m.p)++; (m.p) == (m.pe) { goto _testEof16 } stCase16: switch (m.data)[(m.p)] { case 45: goto st603 case 91: goto tr35 } goto tr33 st603: if (m.p)++; (m.p) == (m.pe) { goto _testEof603 } stCase603: if (m.data)[(m.p)] == 32 { goto st604 } goto tr9 st604: if (m.p)++; (m.p) == (m.pe) { goto _testEof604 } stCase604: switch (m.data)[(m.p)] { case 224: goto tr634 case 237: goto tr636 case 240: goto tr637 case 244: goto tr639 } switch { case (m.data)[(m.p)] < 225: switch { case (m.data)[(m.p)] > 193: if 194 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 223 { goto tr633 } case (m.data)[(m.p)] >= 128: goto tr36 } case (m.data)[(m.p)] > 239: switch { case (m.data)[(m.p)] > 243: if 245 <= (m.data)[(m.p)] { goto tr36 } case (m.data)[(m.p)] >= 241: goto tr638 } default: goto tr635 } goto tr632 tr632: m.pb = m.p m.msgat = m.p goto st605 st605: if (m.p)++; (m.p) == (m.pe) { goto _testEof605 } stCase605: switch (m.data)[(m.p)] { case 224: goto st18 case 237: goto st20 case 240: goto st21 case 244: goto st23 } switch { case (m.data)[(m.p)] < 225: switch { case (m.data)[(m.p)] > 193: if 194 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 223 { goto st17 } case (m.data)[(m.p)] >= 128: goto tr36 } case (m.data)[(m.p)] > 239: switch { case (m.data)[(m.p)] > 243: if 245 <= (m.data)[(m.p)] { goto tr36 } case (m.data)[(m.p)] >= 241: goto st22 } default: goto st19 } goto st605 tr633: m.pb = m.p m.msgat = m.p goto st17 st17: if (m.p)++; (m.p) == (m.pe) { goto _testEof17 } stCase17: if 128 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 191 { goto st605 } goto tr36 tr634: m.pb = m.p m.msgat = m.p goto st18 st18: if (m.p)++; (m.p) == (m.pe) { goto _testEof18 } stCase18: if 160 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 191 { goto st17 } goto tr36 tr635: m.pb = m.p m.msgat = m.p goto st19 st19: if (m.p)++; (m.p) == (m.pe) { goto _testEof19 } stCase19: if 128 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 191 { goto st17 } goto tr36 tr636: m.pb = m.p m.msgat = m.p goto st20 st20: if (m.p)++; (m.p) == (m.pe) { goto _testEof20 } stCase20: if 128 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 159 { goto st17 } goto tr36 tr637: m.pb = m.p m.msgat = m.p goto st21 st21: if (m.p)++; (m.p) == (m.pe) { goto _testEof21 } stCase21: if 144 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 191 { goto st19 } goto tr36 tr638: m.pb = m.p m.msgat = m.p goto st22 st22: if (m.p)++; (m.p) == (m.pe) { goto _testEof22 } stCase22: if 128 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 191 { goto st19 } goto tr36 tr639: m.pb = m.p m.msgat = m.p goto st23 st23: if (m.p)++; (m.p) == (m.pe) { goto _testEof23 } stCase23: if 128 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 143 { goto st19 } goto tr36 tr35: output.structuredData = map[string]map[string]string{} goto st24 st24: if (m.p)++; (m.p) == (m.pe) { goto _testEof24 } stCase24: if (m.data)[(m.p)] == 33 { goto tr41 } switch { case (m.data)[(m.p)] < 62: if 35 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 60 { goto tr41 } case (m.data)[(m.p)] > 92: if 94 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto tr41 } default: goto tr41 } goto tr40 tr41: m.pb = m.p goto st25 st25: if (m.p)++; (m.p) == (m.pe) { goto _testEof25 } stCase25: switch (m.data)[(m.p)] { case 32: goto tr43 case 33: goto st71 case 93: goto tr45 } switch { case (m.data)[(m.p)] > 60: if 62 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st71 } case (m.data)[(m.p)] >= 35: goto st71 } goto tr42 tr43: if _, ok := output.structuredData[string(m.text())]; ok { // As per RFC5424 section 6.3.2 SD-ID MUST NOT exist more than once in a message m.err = fmt.Errorf(errSdIDDuplicated, m.p) (m.p)-- { goto st607 } } else { id := string(m.text()) output.structuredData[id] = map[string]string{} output.hasElements = true m.currentelem = id } goto st26 st26: if (m.p)++; (m.p) == (m.pe) { goto _testEof26 } stCase26: if (m.data)[(m.p)] == 33 { goto tr47 } switch { case (m.data)[(m.p)] < 62: if 35 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 60 { goto tr47 } case (m.data)[(m.p)] > 92: if 94 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto tr47 } default: goto tr47 } goto tr46 tr47: m.backslashat = []int{} m.pb = m.p goto st27 st27: if (m.p)++; (m.p) == (m.pe) { goto _testEof27 } stCase27: switch (m.data)[(m.p)] { case 33: goto st28 case 61: goto tr49 } switch { case (m.data)[(m.p)] > 92: if 94 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st28 } case (m.data)[(m.p)] >= 35: goto st28 } goto tr46 st28: if (m.p)++; (m.p) == (m.pe) { goto _testEof28 } stCase28: switch (m.data)[(m.p)] { case 33: goto st29 case 61: goto tr49 } switch { case (m.data)[(m.p)] > 92: if 94 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st29 } case (m.data)[(m.p)] >= 35: goto st29 } goto tr46 st29: if (m.p)++; (m.p) == (m.pe) { goto _testEof29 } stCase29: switch (m.data)[(m.p)] { case 33: goto st30 case 61: goto tr49 } switch { case (m.data)[(m.p)] > 92: if 94 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st30 } case (m.data)[(m.p)] >= 35: goto st30 } goto tr46 st30: if (m.p)++; (m.p) == (m.pe) { goto _testEof30 } stCase30: switch (m.data)[(m.p)] { case 33: goto st31 case 61: goto tr49 } switch { case (m.data)[(m.p)] > 92: if 94 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st31 } case (m.data)[(m.p)] >= 35: goto st31 } goto tr46 st31: if (m.p)++; (m.p) == (m.pe) { goto _testEof31 } stCase31: switch (m.data)[(m.p)] { case 33: goto st32 case 61: goto tr49 } switch { case (m.data)[(m.p)] > 92: if 94 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st32 } case (m.data)[(m.p)] >= 35: goto st32 } goto tr46 st32: if (m.p)++; (m.p) == (m.pe) { goto _testEof32 } stCase32: switch (m.data)[(m.p)] { case 33: goto st33 case 61: goto tr49 } switch { case (m.data)[(m.p)] > 92: if 94 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st33 } case (m.data)[(m.p)] >= 35: goto st33 } goto tr46 st33: if (m.p)++; (m.p) == (m.pe) { goto _testEof33 } stCase33: switch (m.data)[(m.p)] { case 33: goto st34 case 61: goto tr49 } switch { case (m.data)[(m.p)] > 92: if 94 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st34 } case (m.data)[(m.p)] >= 35: goto st34 } goto tr46 st34: if (m.p)++; (m.p) == (m.pe) { goto _testEof34 } stCase34: switch (m.data)[(m.p)] { case 33: goto st35 case 61: goto tr49 } switch { case (m.data)[(m.p)] > 92: if 94 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st35 } case (m.data)[(m.p)] >= 35: goto st35 } goto tr46 st35: if (m.p)++; (m.p) == (m.pe) { goto _testEof35 } stCase35: switch (m.data)[(m.p)] { case 33: goto st36 case 61: goto tr49 } switch { case (m.data)[(m.p)] > 92: if 94 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st36 } case (m.data)[(m.p)] >= 35: goto st36 } goto tr46 st36: if (m.p)++; (m.p) == (m.pe) { goto _testEof36 } stCase36: switch (m.data)[(m.p)] { case 33: goto st37 case 61: goto tr49 } switch { case (m.data)[(m.p)] > 92: if 94 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st37 } case (m.data)[(m.p)] >= 35: goto st37 } goto tr46 st37: if (m.p)++; (m.p) == (m.pe) { goto _testEof37 } stCase37: switch (m.data)[(m.p)] { case 33: goto st38 case 61: goto tr49 } switch { case (m.data)[(m.p)] > 92: if 94 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st38 } case (m.data)[(m.p)] >= 35: goto st38 } goto tr46 st38: if (m.p)++; (m.p) == (m.pe) { goto _testEof38 } stCase38: switch (m.data)[(m.p)] { case 33: goto st39 case 61: goto tr49 } switch { case (m.data)[(m.p)] > 92: if 94 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st39 } case (m.data)[(m.p)] >= 35: goto st39 } goto tr46 st39: if (m.p)++; (m.p) == (m.pe) { goto _testEof39 } stCase39: switch (m.data)[(m.p)] { case 33: goto st40 case 61: goto tr49 } switch { case (m.data)[(m.p)] > 92: if 94 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st40 } case (m.data)[(m.p)] >= 35: goto st40 } goto tr46 st40: if (m.p)++; (m.p) == (m.pe) { goto _testEof40 } stCase40: switch (m.data)[(m.p)] { case 33: goto st41 case 61: goto tr49 } switch { case (m.data)[(m.p)] > 92: if 94 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st41 } case (m.data)[(m.p)] >= 35: goto st41 } goto tr46 st41: if (m.p)++; (m.p) == (m.pe) { goto _testEof41 } stCase41: switch (m.data)[(m.p)] { case 33: goto st42 case 61: goto tr49 } switch { case (m.data)[(m.p)] > 92: if 94 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st42 } case (m.data)[(m.p)] >= 35: goto st42 } goto tr46 st42: if (m.p)++; (m.p) == (m.pe) { goto _testEof42 } stCase42: switch (m.data)[(m.p)] { case 33: goto st43 case 61: goto tr49 } switch { case (m.data)[(m.p)] > 92: if 94 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st43 } case (m.data)[(m.p)] >= 35: goto st43 } goto tr46 st43: if (m.p)++; (m.p) == (m.pe) { goto _testEof43 } stCase43: switch (m.data)[(m.p)] { case 33: goto st44 case 61: goto tr49 } switch { case (m.data)[(m.p)] > 92: if 94 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st44 } case (m.data)[(m.p)] >= 35: goto st44 } goto tr46 st44: if (m.p)++; (m.p) == (m.pe) { goto _testEof44 } stCase44: switch (m.data)[(m.p)] { case 33: goto st45 case 61: goto tr49 } switch { case (m.data)[(m.p)] > 92: if 94 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st45 } case (m.data)[(m.p)] >= 35: goto st45 } goto tr46 st45: if (m.p)++; (m.p) == (m.pe) { goto _testEof45 } stCase45: switch (m.data)[(m.p)] { case 33: goto st46 case 61: goto tr49 } switch { case (m.data)[(m.p)] > 92: if 94 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st46 } case (m.data)[(m.p)] >= 35: goto st46 } goto tr46 st46: if (m.p)++; (m.p) == (m.pe) { goto _testEof46 } stCase46: switch (m.data)[(m.p)] { case 33: goto st47 case 61: goto tr49 } switch { case (m.data)[(m.p)] > 92: if 94 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st47 } case (m.data)[(m.p)] >= 35: goto st47 } goto tr46 st47: if (m.p)++; (m.p) == (m.pe) { goto _testEof47 } stCase47: switch (m.data)[(m.p)] { case 33: goto st48 case 61: goto tr49 } switch { case (m.data)[(m.p)] > 92: if 94 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st48 } case (m.data)[(m.p)] >= 35: goto st48 } goto tr46 st48: if (m.p)++; (m.p) == (m.pe) { goto _testEof48 } stCase48: switch (m.data)[(m.p)] { case 33: goto st49 case 61: goto tr49 } switch { case (m.data)[(m.p)] > 92: if 94 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st49 } case (m.data)[(m.p)] >= 35: goto st49 } goto tr46 st49: if (m.p)++; (m.p) == (m.pe) { goto _testEof49 } stCase49: switch (m.data)[(m.p)] { case 33: goto st50 case 61: goto tr49 } switch { case (m.data)[(m.p)] > 92: if 94 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st50 } case (m.data)[(m.p)] >= 35: goto st50 } goto tr46 st50: if (m.p)++; (m.p) == (m.pe) { goto _testEof50 } stCase50: switch (m.data)[(m.p)] { case 33: goto st51 case 61: goto tr49 } switch { case (m.data)[(m.p)] > 92: if 94 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st51 } case (m.data)[(m.p)] >= 35: goto st51 } goto tr46 st51: if (m.p)++; (m.p) == (m.pe) { goto _testEof51 } stCase51: switch (m.data)[(m.p)] { case 33: goto st52 case 61: goto tr49 } switch { case (m.data)[(m.p)] > 92: if 94 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st52 } case (m.data)[(m.p)] >= 35: goto st52 } goto tr46 st52: if (m.p)++; (m.p) == (m.pe) { goto _testEof52 } stCase52: switch (m.data)[(m.p)] { case 33: goto st53 case 61: goto tr49 } switch { case (m.data)[(m.p)] > 92: if 94 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st53 } case (m.data)[(m.p)] >= 35: goto st53 } goto tr46 st53: if (m.p)++; (m.p) == (m.pe) { goto _testEof53 } stCase53: switch (m.data)[(m.p)] { case 33: goto st54 case 61: goto tr49 } switch { case (m.data)[(m.p)] > 92: if 94 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st54 } case (m.data)[(m.p)] >= 35: goto st54 } goto tr46 st54: if (m.p)++; (m.p) == (m.pe) { goto _testEof54 } stCase54: switch (m.data)[(m.p)] { case 33: goto st55 case 61: goto tr49 } switch { case (m.data)[(m.p)] > 92: if 94 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st55 } case (m.data)[(m.p)] >= 35: goto st55 } goto tr46 st55: if (m.p)++; (m.p) == (m.pe) { goto _testEof55 } stCase55: switch (m.data)[(m.p)] { case 33: goto st56 case 61: goto tr49 } switch { case (m.data)[(m.p)] > 92: if 94 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st56 } case (m.data)[(m.p)] >= 35: goto st56 } goto tr46 st56: if (m.p)++; (m.p) == (m.pe) { goto _testEof56 } stCase56: switch (m.data)[(m.p)] { case 33: goto st57 case 61: goto tr49 } switch { case (m.data)[(m.p)] > 92: if 94 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st57 } case (m.data)[(m.p)] >= 35: goto st57 } goto tr46 st57: if (m.p)++; (m.p) == (m.pe) { goto _testEof57 } stCase57: switch (m.data)[(m.p)] { case 33: goto st58 case 61: goto tr49 } switch { case (m.data)[(m.p)] > 92: if 94 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st58 } case (m.data)[(m.p)] >= 35: goto st58 } goto tr46 st58: if (m.p)++; (m.p) == (m.pe) { goto _testEof58 } stCase58: if (m.data)[(m.p)] == 61 { goto tr49 } goto tr46 tr49: m.currentparam = string(m.text()) goto st59 st59: if (m.p)++; (m.p) == (m.pe) { goto _testEof59 } stCase59: if (m.data)[(m.p)] == 34 { goto st60 } goto tr46 st60: if (m.p)++; (m.p) == (m.pe) { goto _testEof60 } stCase60: switch (m.data)[(m.p)] { case 34: goto tr82 case 92: goto tr83 case 93: goto tr84 case 224: goto tr86 case 237: goto tr88 case 240: goto tr89 case 244: goto tr91 } switch { case (m.data)[(m.p)] < 225: switch { case (m.data)[(m.p)] > 193: if 194 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 223 { goto tr85 } case (m.data)[(m.p)] >= 128: goto tr84 } case (m.data)[(m.p)] > 239: switch { case (m.data)[(m.p)] > 243: if 245 <= (m.data)[(m.p)] { goto tr84 } case (m.data)[(m.p)] >= 241: goto tr90 } default: goto tr87 } goto tr81 tr81: m.pb = m.p goto st61 st61: if (m.p)++; (m.p) == (m.pe) { goto _testEof61 } stCase61: switch (m.data)[(m.p)] { case 34: goto tr93 case 92: goto tr94 case 93: goto tr84 case 224: goto st65 case 237: goto st67 case 240: goto st68 case 244: goto st70 } switch { case (m.data)[(m.p)] < 225: switch { case (m.data)[(m.p)] > 193: if 194 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 223 { goto st64 } case (m.data)[(m.p)] >= 128: goto tr84 } case (m.data)[(m.p)] > 239: switch { case (m.data)[(m.p)] > 243: if 245 <= (m.data)[(m.p)] { goto tr84 } case (m.data)[(m.p)] >= 241: goto st69 } default: goto st66 } goto st61 tr82: m.pb = m.p if output.hasElements { // (fixme) > what if SD-PARAM-NAME already exist for the current element (ie., current SD-ID)? // Store text text := m.text() // Strip backslashes only when there are ... if len(m.backslashat) > 0 { text = rmchars(text, m.backslashat, m.pb) } output.structuredData[m.currentelem][m.currentparam] = string(text) } goto st62 tr93: if output.hasElements { // (fixme) > what if SD-PARAM-NAME already exist for the current element (ie., current SD-ID)? // Store text text := m.text() // Strip backslashes only when there are ... if len(m.backslashat) > 0 { text = rmchars(text, m.backslashat, m.pb) } output.structuredData[m.currentelem][m.currentparam] = string(text) } goto st62 st62: if (m.p)++; (m.p) == (m.pe) { goto _testEof62 } stCase62: switch (m.data)[(m.p)] { case 32: goto st26 case 93: goto st606 } goto tr46 tr45: if _, ok := output.structuredData[string(m.text())]; ok { // As per RFC5424 section 6.3.2 SD-ID MUST NOT exist more than once in a message m.err = fmt.Errorf(errSdIDDuplicated, m.p) (m.p)-- { goto st607 } } else { id := string(m.text()) output.structuredData[id] = map[string]string{} output.hasElements = true m.currentelem = id } goto st606 st606: if (m.p)++; (m.p) == (m.pe) { goto _testEof606 } stCase606: switch (m.data)[(m.p)] { case 32: goto st604 case 91: goto st24 } goto tr645 tr83: m.pb = m.p m.backslashat = append(m.backslashat, m.p) goto st63 tr94: m.backslashat = append(m.backslashat, m.p) goto st63 st63: if (m.p)++; (m.p) == (m.pe) { goto _testEof63 } stCase63: if (m.data)[(m.p)] == 34 { goto st61 } if 92 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 93 { goto st61 } goto tr84 tr85: m.pb = m.p goto st64 st64: if (m.p)++; (m.p) == (m.pe) { goto _testEof64 } stCase64: if 128 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 191 { goto st61 } goto tr46 tr86: m.pb = m.p goto st65 st65: if (m.p)++; (m.p) == (m.pe) { goto _testEof65 } stCase65: if 160 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 191 { goto st64 } goto tr46 tr87: m.pb = m.p goto st66 st66: if (m.p)++; (m.p) == (m.pe) { goto _testEof66 } stCase66: if 128 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 191 { goto st64 } goto tr46 tr88: m.pb = m.p goto st67 st67: if (m.p)++; (m.p) == (m.pe) { goto _testEof67 } stCase67: if 128 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 159 { goto st64 } goto tr46 tr89: m.pb = m.p goto st68 st68: if (m.p)++; (m.p) == (m.pe) { goto _testEof68 } stCase68: if 144 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 191 { goto st66 } goto tr46 tr90: m.pb = m.p goto st69 st69: if (m.p)++; (m.p) == (m.pe) { goto _testEof69 } stCase69: if 128 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 191 { goto st66 } goto tr46 tr91: m.pb = m.p goto st70 st70: if (m.p)++; (m.p) == (m.pe) { goto _testEof70 } stCase70: if 128 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 143 { goto st66 } goto tr46 st71: if (m.p)++; (m.p) == (m.pe) { goto _testEof71 } stCase71: switch (m.data)[(m.p)] { case 32: goto tr43 case 33: goto st72 case 93: goto tr45 } switch { case (m.data)[(m.p)] > 60: if 62 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st72 } case (m.data)[(m.p)] >= 35: goto st72 } goto tr42 st72: if (m.p)++; (m.p) == (m.pe) { goto _testEof72 } stCase72: switch (m.data)[(m.p)] { case 32: goto tr43 case 33: goto st73 case 93: goto tr45 } switch { case (m.data)[(m.p)] > 60: if 62 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st73 } case (m.data)[(m.p)] >= 35: goto st73 } goto tr42 st73: if (m.p)++; (m.p) == (m.pe) { goto _testEof73 } stCase73: switch (m.data)[(m.p)] { case 32: goto tr43 case 33: goto st74 case 93: goto tr45 } switch { case (m.data)[(m.p)] > 60: if 62 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st74 } case (m.data)[(m.p)] >= 35: goto st74 } goto tr42 st74: if (m.p)++; (m.p) == (m.pe) { goto _testEof74 } stCase74: switch (m.data)[(m.p)] { case 32: goto tr43 case 33: goto st75 case 93: goto tr45 } switch { case (m.data)[(m.p)] > 60: if 62 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st75 } case (m.data)[(m.p)] >= 35: goto st75 } goto tr42 st75: if (m.p)++; (m.p) == (m.pe) { goto _testEof75 } stCase75: switch (m.data)[(m.p)] { case 32: goto tr43 case 33: goto st76 case 93: goto tr45 } switch { case (m.data)[(m.p)] > 60: if 62 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st76 } case (m.data)[(m.p)] >= 35: goto st76 } goto tr42 st76: if (m.p)++; (m.p) == (m.pe) { goto _testEof76 } stCase76: switch (m.data)[(m.p)] { case 32: goto tr43 case 33: goto st77 case 93: goto tr45 } switch { case (m.data)[(m.p)] > 60: if 62 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st77 } case (m.data)[(m.p)] >= 35: goto st77 } goto tr42 st77: if (m.p)++; (m.p) == (m.pe) { goto _testEof77 } stCase77: switch (m.data)[(m.p)] { case 32: goto tr43 case 33: goto st78 case 93: goto tr45 } switch { case (m.data)[(m.p)] > 60: if 62 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st78 } case (m.data)[(m.p)] >= 35: goto st78 } goto tr42 st78: if (m.p)++; (m.p) == (m.pe) { goto _testEof78 } stCase78: switch (m.data)[(m.p)] { case 32: goto tr43 case 33: goto st79 case 93: goto tr45 } switch { case (m.data)[(m.p)] > 60: if 62 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st79 } case (m.data)[(m.p)] >= 35: goto st79 } goto tr42 st79: if (m.p)++; (m.p) == (m.pe) { goto _testEof79 } stCase79: switch (m.data)[(m.p)] { case 32: goto tr43 case 33: goto st80 case 93: goto tr45 } switch { case (m.data)[(m.p)] > 60: if 62 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st80 } case (m.data)[(m.p)] >= 35: goto st80 } goto tr42 st80: if (m.p)++; (m.p) == (m.pe) { goto _testEof80 } stCase80: switch (m.data)[(m.p)] { case 32: goto tr43 case 33: goto st81 case 93: goto tr45 } switch { case (m.data)[(m.p)] > 60: if 62 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st81 } case (m.data)[(m.p)] >= 35: goto st81 } goto tr42 st81: if (m.p)++; (m.p) == (m.pe) { goto _testEof81 } stCase81: switch (m.data)[(m.p)] { case 32: goto tr43 case 33: goto st82 case 93: goto tr45 } switch { case (m.data)[(m.p)] > 60: if 62 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st82 } case (m.data)[(m.p)] >= 35: goto st82 } goto tr42 st82: if (m.p)++; (m.p) == (m.pe) { goto _testEof82 } stCase82: switch (m.data)[(m.p)] { case 32: goto tr43 case 33: goto st83 case 93: goto tr45 } switch { case (m.data)[(m.p)] > 60: if 62 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st83 } case (m.data)[(m.p)] >= 35: goto st83 } goto tr42 st83: if (m.p)++; (m.p) == (m.pe) { goto _testEof83 } stCase83: switch (m.data)[(m.p)] { case 32: goto tr43 case 33: goto st84 case 93: goto tr45 } switch { case (m.data)[(m.p)] > 60: if 62 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st84 } case (m.data)[(m.p)] >= 35: goto st84 } goto tr42 st84: if (m.p)++; (m.p) == (m.pe) { goto _testEof84 } stCase84: switch (m.data)[(m.p)] { case 32: goto tr43 case 33: goto st85 case 93: goto tr45 } switch { case (m.data)[(m.p)] > 60: if 62 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st85 } case (m.data)[(m.p)] >= 35: goto st85 } goto tr42 st85: if (m.p)++; (m.p) == (m.pe) { goto _testEof85 } stCase85: switch (m.data)[(m.p)] { case 32: goto tr43 case 33: goto st86 case 93: goto tr45 } switch { case (m.data)[(m.p)] > 60: if 62 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st86 } case (m.data)[(m.p)] >= 35: goto st86 } goto tr42 st86: if (m.p)++; (m.p) == (m.pe) { goto _testEof86 } stCase86: switch (m.data)[(m.p)] { case 32: goto tr43 case 33: goto st87 case 93: goto tr45 } switch { case (m.data)[(m.p)] > 60: if 62 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st87 } case (m.data)[(m.p)] >= 35: goto st87 } goto tr42 st87: if (m.p)++; (m.p) == (m.pe) { goto _testEof87 } stCase87: switch (m.data)[(m.p)] { case 32: goto tr43 case 33: goto st88 case 93: goto tr45 } switch { case (m.data)[(m.p)] > 60: if 62 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st88 } case (m.data)[(m.p)] >= 35: goto st88 } goto tr42 st88: if (m.p)++; (m.p) == (m.pe) { goto _testEof88 } stCase88: switch (m.data)[(m.p)] { case 32: goto tr43 case 33: goto st89 case 93: goto tr45 } switch { case (m.data)[(m.p)] > 60: if 62 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st89 } case (m.data)[(m.p)] >= 35: goto st89 } goto tr42 st89: if (m.p)++; (m.p) == (m.pe) { goto _testEof89 } stCase89: switch (m.data)[(m.p)] { case 32: goto tr43 case 33: goto st90 case 93: goto tr45 } switch { case (m.data)[(m.p)] > 60: if 62 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st90 } case (m.data)[(m.p)] >= 35: goto st90 } goto tr42 st90: if (m.p)++; (m.p) == (m.pe) { goto _testEof90 } stCase90: switch (m.data)[(m.p)] { case 32: goto tr43 case 33: goto st91 case 93: goto tr45 } switch { case (m.data)[(m.p)] > 60: if 62 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st91 } case (m.data)[(m.p)] >= 35: goto st91 } goto tr42 st91: if (m.p)++; (m.p) == (m.pe) { goto _testEof91 } stCase91: switch (m.data)[(m.p)] { case 32: goto tr43 case 33: goto st92 case 93: goto tr45 } switch { case (m.data)[(m.p)] > 60: if 62 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st92 } case (m.data)[(m.p)] >= 35: goto st92 } goto tr42 st92: if (m.p)++; (m.p) == (m.pe) { goto _testEof92 } stCase92: switch (m.data)[(m.p)] { case 32: goto tr43 case 33: goto st93 case 93: goto tr45 } switch { case (m.data)[(m.p)] > 60: if 62 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st93 } case (m.data)[(m.p)] >= 35: goto st93 } goto tr42 st93: if (m.p)++; (m.p) == (m.pe) { goto _testEof93 } stCase93: switch (m.data)[(m.p)] { case 32: goto tr43 case 33: goto st94 case 93: goto tr45 } switch { case (m.data)[(m.p)] > 60: if 62 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st94 } case (m.data)[(m.p)] >= 35: goto st94 } goto tr42 st94: if (m.p)++; (m.p) == (m.pe) { goto _testEof94 } stCase94: switch (m.data)[(m.p)] { case 32: goto tr43 case 33: goto st95 case 93: goto tr45 } switch { case (m.data)[(m.p)] > 60: if 62 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st95 } case (m.data)[(m.p)] >= 35: goto st95 } goto tr42 st95: if (m.p)++; (m.p) == (m.pe) { goto _testEof95 } stCase95: switch (m.data)[(m.p)] { case 32: goto tr43 case 33: goto st96 case 93: goto tr45 } switch { case (m.data)[(m.p)] > 60: if 62 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st96 } case (m.data)[(m.p)] >= 35: goto st96 } goto tr42 st96: if (m.p)++; (m.p) == (m.pe) { goto _testEof96 } stCase96: switch (m.data)[(m.p)] { case 32: goto tr43 case 33: goto st97 case 93: goto tr45 } switch { case (m.data)[(m.p)] > 60: if 62 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st97 } case (m.data)[(m.p)] >= 35: goto st97 } goto tr42 st97: if (m.p)++; (m.p) == (m.pe) { goto _testEof97 } stCase97: switch (m.data)[(m.p)] { case 32: goto tr43 case 33: goto st98 case 93: goto tr45 } switch { case (m.data)[(m.p)] > 60: if 62 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st98 } case (m.data)[(m.p)] >= 35: goto st98 } goto tr42 st98: if (m.p)++; (m.p) == (m.pe) { goto _testEof98 } stCase98: switch (m.data)[(m.p)] { case 32: goto tr43 case 33: goto st99 case 93: goto tr45 } switch { case (m.data)[(m.p)] > 60: if 62 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st99 } case (m.data)[(m.p)] >= 35: goto st99 } goto tr42 st99: if (m.p)++; (m.p) == (m.pe) { goto _testEof99 } stCase99: switch (m.data)[(m.p)] { case 32: goto tr43 case 33: goto st100 case 93: goto tr45 } switch { case (m.data)[(m.p)] > 60: if 62 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st100 } case (m.data)[(m.p)] >= 35: goto st100 } goto tr42 st100: if (m.p)++; (m.p) == (m.pe) { goto _testEof100 } stCase100: switch (m.data)[(m.p)] { case 32: goto tr43 case 33: goto st101 case 93: goto tr45 } switch { case (m.data)[(m.p)] > 60: if 62 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st101 } case (m.data)[(m.p)] >= 35: goto st101 } goto tr42 st101: if (m.p)++; (m.p) == (m.pe) { goto _testEof101 } stCase101: switch (m.data)[(m.p)] { case 32: goto tr43 case 93: goto tr45 } goto tr42 st102: if (m.p)++; (m.p) == (m.pe) { goto _testEof102 } stCase102: if (m.data)[(m.p)] == 32 { goto tr31 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st103 } goto tr30 st103: if (m.p)++; (m.p) == (m.pe) { goto _testEof103 } stCase103: if (m.data)[(m.p)] == 32 { goto tr31 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st104 } goto tr30 st104: if (m.p)++; (m.p) == (m.pe) { goto _testEof104 } stCase104: if (m.data)[(m.p)] == 32 { goto tr31 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st105 } goto tr30 st105: if (m.p)++; (m.p) == (m.pe) { goto _testEof105 } stCase105: if (m.data)[(m.p)] == 32 { goto tr31 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st106 } goto tr30 st106: if (m.p)++; (m.p) == (m.pe) { goto _testEof106 } stCase106: if (m.data)[(m.p)] == 32 { goto tr31 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st107 } goto tr30 st107: if (m.p)++; (m.p) == (m.pe) { goto _testEof107 } stCase107: if (m.data)[(m.p)] == 32 { goto tr31 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st108 } goto tr30 st108: if (m.p)++; (m.p) == (m.pe) { goto _testEof108 } stCase108: if (m.data)[(m.p)] == 32 { goto tr31 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st109 } goto tr30 st109: if (m.p)++; (m.p) == (m.pe) { goto _testEof109 } stCase109: if (m.data)[(m.p)] == 32 { goto tr31 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st110 } goto tr30 st110: if (m.p)++; (m.p) == (m.pe) { goto _testEof110 } stCase110: if (m.data)[(m.p)] == 32 { goto tr31 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st111 } goto tr30 st111: if (m.p)++; (m.p) == (m.pe) { goto _testEof111 } stCase111: if (m.data)[(m.p)] == 32 { goto tr31 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st112 } goto tr30 st112: if (m.p)++; (m.p) == (m.pe) { goto _testEof112 } stCase112: if (m.data)[(m.p)] == 32 { goto tr31 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st113 } goto tr30 st113: if (m.p)++; (m.p) == (m.pe) { goto _testEof113 } stCase113: if (m.data)[(m.p)] == 32 { goto tr31 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st114 } goto tr30 st114: if (m.p)++; (m.p) == (m.pe) { goto _testEof114 } stCase114: if (m.data)[(m.p)] == 32 { goto tr31 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st115 } goto tr30 st115: if (m.p)++; (m.p) == (m.pe) { goto _testEof115 } stCase115: if (m.data)[(m.p)] == 32 { goto tr31 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st116 } goto tr30 st116: if (m.p)++; (m.p) == (m.pe) { goto _testEof116 } stCase116: if (m.data)[(m.p)] == 32 { goto tr31 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st117 } goto tr30 st117: if (m.p)++; (m.p) == (m.pe) { goto _testEof117 } stCase117: if (m.data)[(m.p)] == 32 { goto tr31 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st118 } goto tr30 st118: if (m.p)++; (m.p) == (m.pe) { goto _testEof118 } stCase118: if (m.data)[(m.p)] == 32 { goto tr31 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st119 } goto tr30 st119: if (m.p)++; (m.p) == (m.pe) { goto _testEof119 } stCase119: if (m.data)[(m.p)] == 32 { goto tr31 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st120 } goto tr30 st120: if (m.p)++; (m.p) == (m.pe) { goto _testEof120 } stCase120: if (m.data)[(m.p)] == 32 { goto tr31 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st121 } goto tr30 st121: if (m.p)++; (m.p) == (m.pe) { goto _testEof121 } stCase121: if (m.data)[(m.p)] == 32 { goto tr31 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st122 } goto tr30 st122: if (m.p)++; (m.p) == (m.pe) { goto _testEof122 } stCase122: if (m.data)[(m.p)] == 32 { goto tr31 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st123 } goto tr30 st123: if (m.p)++; (m.p) == (m.pe) { goto _testEof123 } stCase123: if (m.data)[(m.p)] == 32 { goto tr31 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st124 } goto tr30 st124: if (m.p)++; (m.p) == (m.pe) { goto _testEof124 } stCase124: if (m.data)[(m.p)] == 32 { goto tr31 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st125 } goto tr30 st125: if (m.p)++; (m.p) == (m.pe) { goto _testEof125 } stCase125: if (m.data)[(m.p)] == 32 { goto tr31 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st126 } goto tr30 st126: if (m.p)++; (m.p) == (m.pe) { goto _testEof126 } stCase126: if (m.data)[(m.p)] == 32 { goto tr31 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st127 } goto tr30 st127: if (m.p)++; (m.p) == (m.pe) { goto _testEof127 } stCase127: if (m.data)[(m.p)] == 32 { goto tr31 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st128 } goto tr30 st128: if (m.p)++; (m.p) == (m.pe) { goto _testEof128 } stCase128: if (m.data)[(m.p)] == 32 { goto tr31 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st129 } goto tr30 st129: if (m.p)++; (m.p) == (m.pe) { goto _testEof129 } stCase129: if (m.data)[(m.p)] == 32 { goto tr31 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st130 } goto tr30 st130: if (m.p)++; (m.p) == (m.pe) { goto _testEof130 } stCase130: if (m.data)[(m.p)] == 32 { goto tr31 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st131 } goto tr30 st131: if (m.p)++; (m.p) == (m.pe) { goto _testEof131 } stCase131: if (m.data)[(m.p)] == 32 { goto tr31 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st132 } goto tr30 st132: if (m.p)++; (m.p) == (m.pe) { goto _testEof132 } stCase132: if (m.data)[(m.p)] == 32 { goto tr31 } goto tr30 st133: if (m.p)++; (m.p) == (m.pe) { goto _testEof133 } stCase133: if (m.data)[(m.p)] == 32 { goto tr26 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st134 } goto tr24 st134: if (m.p)++; (m.p) == (m.pe) { goto _testEof134 } stCase134: if (m.data)[(m.p)] == 32 { goto tr26 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st135 } goto tr24 st135: if (m.p)++; (m.p) == (m.pe) { goto _testEof135 } stCase135: if (m.data)[(m.p)] == 32 { goto tr26 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st136 } goto tr24 st136: if (m.p)++; (m.p) == (m.pe) { goto _testEof136 } stCase136: if (m.data)[(m.p)] == 32 { goto tr26 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st137 } goto tr24 st137: if (m.p)++; (m.p) == (m.pe) { goto _testEof137 } stCase137: if (m.data)[(m.p)] == 32 { goto tr26 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st138 } goto tr24 st138: if (m.p)++; (m.p) == (m.pe) { goto _testEof138 } stCase138: if (m.data)[(m.p)] == 32 { goto tr26 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st139 } goto tr24 st139: if (m.p)++; (m.p) == (m.pe) { goto _testEof139 } stCase139: if (m.data)[(m.p)] == 32 { goto tr26 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st140 } goto tr24 st140: if (m.p)++; (m.p) == (m.pe) { goto _testEof140 } stCase140: if (m.data)[(m.p)] == 32 { goto tr26 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st141 } goto tr24 st141: if (m.p)++; (m.p) == (m.pe) { goto _testEof141 } stCase141: if (m.data)[(m.p)] == 32 { goto tr26 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st142 } goto tr24 st142: if (m.p)++; (m.p) == (m.pe) { goto _testEof142 } stCase142: if (m.data)[(m.p)] == 32 { goto tr26 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st143 } goto tr24 st143: if (m.p)++; (m.p) == (m.pe) { goto _testEof143 } stCase143: if (m.data)[(m.p)] == 32 { goto tr26 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st144 } goto tr24 st144: if (m.p)++; (m.p) == (m.pe) { goto _testEof144 } stCase144: if (m.data)[(m.p)] == 32 { goto tr26 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st145 } goto tr24 st145: if (m.p)++; (m.p) == (m.pe) { goto _testEof145 } stCase145: if (m.data)[(m.p)] == 32 { goto tr26 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st146 } goto tr24 st146: if (m.p)++; (m.p) == (m.pe) { goto _testEof146 } stCase146: if (m.data)[(m.p)] == 32 { goto tr26 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st147 } goto tr24 st147: if (m.p)++; (m.p) == (m.pe) { goto _testEof147 } stCase147: if (m.data)[(m.p)] == 32 { goto tr26 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st148 } goto tr24 st148: if (m.p)++; (m.p) == (m.pe) { goto _testEof148 } stCase148: if (m.data)[(m.p)] == 32 { goto tr26 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st149 } goto tr24 st149: if (m.p)++; (m.p) == (m.pe) { goto _testEof149 } stCase149: if (m.data)[(m.p)] == 32 { goto tr26 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st150 } goto tr24 st150: if (m.p)++; (m.p) == (m.pe) { goto _testEof150 } stCase150: if (m.data)[(m.p)] == 32 { goto tr26 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st151 } goto tr24 st151: if (m.p)++; (m.p) == (m.pe) { goto _testEof151 } stCase151: if (m.data)[(m.p)] == 32 { goto tr26 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st152 } goto tr24 st152: if (m.p)++; (m.p) == (m.pe) { goto _testEof152 } stCase152: if (m.data)[(m.p)] == 32 { goto tr26 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st153 } goto tr24 st153: if (m.p)++; (m.p) == (m.pe) { goto _testEof153 } stCase153: if (m.data)[(m.p)] == 32 { goto tr26 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st154 } goto tr24 st154: if (m.p)++; (m.p) == (m.pe) { goto _testEof154 } stCase154: if (m.data)[(m.p)] == 32 { goto tr26 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st155 } goto tr24 st155: if (m.p)++; (m.p) == (m.pe) { goto _testEof155 } stCase155: if (m.data)[(m.p)] == 32 { goto tr26 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st156 } goto tr24 st156: if (m.p)++; (m.p) == (m.pe) { goto _testEof156 } stCase156: if (m.data)[(m.p)] == 32 { goto tr26 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st157 } goto tr24 st157: if (m.p)++; (m.p) == (m.pe) { goto _testEof157 } stCase157: if (m.data)[(m.p)] == 32 { goto tr26 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st158 } goto tr24 st158: if (m.p)++; (m.p) == (m.pe) { goto _testEof158 } stCase158: if (m.data)[(m.p)] == 32 { goto tr26 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st159 } goto tr24 st159: if (m.p)++; (m.p) == (m.pe) { goto _testEof159 } stCase159: if (m.data)[(m.p)] == 32 { goto tr26 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st160 } goto tr24 st160: if (m.p)++; (m.p) == (m.pe) { goto _testEof160 } stCase160: if (m.data)[(m.p)] == 32 { goto tr26 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st161 } goto tr24 st161: if (m.p)++; (m.p) == (m.pe) { goto _testEof161 } stCase161: if (m.data)[(m.p)] == 32 { goto tr26 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st162 } goto tr24 st162: if (m.p)++; (m.p) == (m.pe) { goto _testEof162 } stCase162: if (m.data)[(m.p)] == 32 { goto tr26 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st163 } goto tr24 st163: if (m.p)++; (m.p) == (m.pe) { goto _testEof163 } stCase163: if (m.data)[(m.p)] == 32 { goto tr26 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st164 } goto tr24 st164: if (m.p)++; (m.p) == (m.pe) { goto _testEof164 } stCase164: if (m.data)[(m.p)] == 32 { goto tr26 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st165 } goto tr24 st165: if (m.p)++; (m.p) == (m.pe) { goto _testEof165 } stCase165: if (m.data)[(m.p)] == 32 { goto tr26 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st166 } goto tr24 st166: if (m.p)++; (m.p) == (m.pe) { goto _testEof166 } stCase166: if (m.data)[(m.p)] == 32 { goto tr26 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st167 } goto tr24 st167: if (m.p)++; (m.p) == (m.pe) { goto _testEof167 } stCase167: if (m.data)[(m.p)] == 32 { goto tr26 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st168 } goto tr24 st168: if (m.p)++; (m.p) == (m.pe) { goto _testEof168 } stCase168: if (m.data)[(m.p)] == 32 { goto tr26 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st169 } goto tr24 st169: if (m.p)++; (m.p) == (m.pe) { goto _testEof169 } stCase169: if (m.data)[(m.p)] == 32 { goto tr26 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st170 } goto tr24 st170: if (m.p)++; (m.p) == (m.pe) { goto _testEof170 } stCase170: if (m.data)[(m.p)] == 32 { goto tr26 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st171 } goto tr24 st171: if (m.p)++; (m.p) == (m.pe) { goto _testEof171 } stCase171: if (m.data)[(m.p)] == 32 { goto tr26 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st172 } goto tr24 st172: if (m.p)++; (m.p) == (m.pe) { goto _testEof172 } stCase172: if (m.data)[(m.p)] == 32 { goto tr26 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st173 } goto tr24 st173: if (m.p)++; (m.p) == (m.pe) { goto _testEof173 } stCase173: if (m.data)[(m.p)] == 32 { goto tr26 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st174 } goto tr24 st174: if (m.p)++; (m.p) == (m.pe) { goto _testEof174 } stCase174: if (m.data)[(m.p)] == 32 { goto tr26 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st175 } goto tr24 st175: if (m.p)++; (m.p) == (m.pe) { goto _testEof175 } stCase175: if (m.data)[(m.p)] == 32 { goto tr26 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st176 } goto tr24 st176: if (m.p)++; (m.p) == (m.pe) { goto _testEof176 } stCase176: if (m.data)[(m.p)] == 32 { goto tr26 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st177 } goto tr24 st177: if (m.p)++; (m.p) == (m.pe) { goto _testEof177 } stCase177: if (m.data)[(m.p)] == 32 { goto tr26 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st178 } goto tr24 st178: if (m.p)++; (m.p) == (m.pe) { goto _testEof178 } stCase178: if (m.data)[(m.p)] == 32 { goto tr26 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st179 } goto tr24 st179: if (m.p)++; (m.p) == (m.pe) { goto _testEof179 } stCase179: if (m.data)[(m.p)] == 32 { goto tr26 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st180 } goto tr24 st180: if (m.p)++; (m.p) == (m.pe) { goto _testEof180 } stCase180: if (m.data)[(m.p)] == 32 { goto tr26 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st181 } goto tr24 st181: if (m.p)++; (m.p) == (m.pe) { goto _testEof181 } stCase181: if (m.data)[(m.p)] == 32 { goto tr26 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st182 } goto tr24 st182: if (m.p)++; (m.p) == (m.pe) { goto _testEof182 } stCase182: if (m.data)[(m.p)] == 32 { goto tr26 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st183 } goto tr24 st183: if (m.p)++; (m.p) == (m.pe) { goto _testEof183 } stCase183: if (m.data)[(m.p)] == 32 { goto tr26 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st184 } goto tr24 st184: if (m.p)++; (m.p) == (m.pe) { goto _testEof184 } stCase184: if (m.data)[(m.p)] == 32 { goto tr26 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st185 } goto tr24 st185: if (m.p)++; (m.p) == (m.pe) { goto _testEof185 } stCase185: if (m.data)[(m.p)] == 32 { goto tr26 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st186 } goto tr24 st186: if (m.p)++; (m.p) == (m.pe) { goto _testEof186 } stCase186: if (m.data)[(m.p)] == 32 { goto tr26 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st187 } goto tr24 st187: if (m.p)++; (m.p) == (m.pe) { goto _testEof187 } stCase187: if (m.data)[(m.p)] == 32 { goto tr26 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st188 } goto tr24 st188: if (m.p)++; (m.p) == (m.pe) { goto _testEof188 } stCase188: if (m.data)[(m.p)] == 32 { goto tr26 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st189 } goto tr24 st189: if (m.p)++; (m.p) == (m.pe) { goto _testEof189 } stCase189: if (m.data)[(m.p)] == 32 { goto tr26 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st190 } goto tr24 st190: if (m.p)++; (m.p) == (m.pe) { goto _testEof190 } stCase190: if (m.data)[(m.p)] == 32 { goto tr26 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st191 } goto tr24 st191: if (m.p)++; (m.p) == (m.pe) { goto _testEof191 } stCase191: if (m.data)[(m.p)] == 32 { goto tr26 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st192 } goto tr24 st192: if (m.p)++; (m.p) == (m.pe) { goto _testEof192 } stCase192: if (m.data)[(m.p)] == 32 { goto tr26 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st193 } goto tr24 st193: if (m.p)++; (m.p) == (m.pe) { goto _testEof193 } stCase193: if (m.data)[(m.p)] == 32 { goto tr26 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st194 } goto tr24 st194: if (m.p)++; (m.p) == (m.pe) { goto _testEof194 } stCase194: if (m.data)[(m.p)] == 32 { goto tr26 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st195 } goto tr24 st195: if (m.p)++; (m.p) == (m.pe) { goto _testEof195 } stCase195: if (m.data)[(m.p)] == 32 { goto tr26 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st196 } goto tr24 st196: if (m.p)++; (m.p) == (m.pe) { goto _testEof196 } stCase196: if (m.data)[(m.p)] == 32 { goto tr26 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st197 } goto tr24 st197: if (m.p)++; (m.p) == (m.pe) { goto _testEof197 } stCase197: if (m.data)[(m.p)] == 32 { goto tr26 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st198 } goto tr24 st198: if (m.p)++; (m.p) == (m.pe) { goto _testEof198 } stCase198: if (m.data)[(m.p)] == 32 { goto tr26 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st199 } goto tr24 st199: if (m.p)++; (m.p) == (m.pe) { goto _testEof199 } stCase199: if (m.data)[(m.p)] == 32 { goto tr26 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st200 } goto tr24 st200: if (m.p)++; (m.p) == (m.pe) { goto _testEof200 } stCase200: if (m.data)[(m.p)] == 32 { goto tr26 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st201 } goto tr24 st201: if (m.p)++; (m.p) == (m.pe) { goto _testEof201 } stCase201: if (m.data)[(m.p)] == 32 { goto tr26 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st202 } goto tr24 st202: if (m.p)++; (m.p) == (m.pe) { goto _testEof202 } stCase202: if (m.data)[(m.p)] == 32 { goto tr26 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st203 } goto tr24 st203: if (m.p)++; (m.p) == (m.pe) { goto _testEof203 } stCase203: if (m.data)[(m.p)] == 32 { goto tr26 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st204 } goto tr24 st204: if (m.p)++; (m.p) == (m.pe) { goto _testEof204 } stCase204: if (m.data)[(m.p)] == 32 { goto tr26 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st205 } goto tr24 st205: if (m.p)++; (m.p) == (m.pe) { goto _testEof205 } stCase205: if (m.data)[(m.p)] == 32 { goto tr26 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st206 } goto tr24 st206: if (m.p)++; (m.p) == (m.pe) { goto _testEof206 } stCase206: if (m.data)[(m.p)] == 32 { goto tr26 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st207 } goto tr24 st207: if (m.p)++; (m.p) == (m.pe) { goto _testEof207 } stCase207: if (m.data)[(m.p)] == 32 { goto tr26 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st208 } goto tr24 st208: if (m.p)++; (m.p) == (m.pe) { goto _testEof208 } stCase208: if (m.data)[(m.p)] == 32 { goto tr26 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st209 } goto tr24 st209: if (m.p)++; (m.p) == (m.pe) { goto _testEof209 } stCase209: if (m.data)[(m.p)] == 32 { goto tr26 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st210 } goto tr24 st210: if (m.p)++; (m.p) == (m.pe) { goto _testEof210 } stCase210: if (m.data)[(m.p)] == 32 { goto tr26 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st211 } goto tr24 st211: if (m.p)++; (m.p) == (m.pe) { goto _testEof211 } stCase211: if (m.data)[(m.p)] == 32 { goto tr26 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st212 } goto tr24 st212: if (m.p)++; (m.p) == (m.pe) { goto _testEof212 } stCase212: if (m.data)[(m.p)] == 32 { goto tr26 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st213 } goto tr24 st213: if (m.p)++; (m.p) == (m.pe) { goto _testEof213 } stCase213: if (m.data)[(m.p)] == 32 { goto tr26 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st214 } goto tr24 st214: if (m.p)++; (m.p) == (m.pe) { goto _testEof214 } stCase214: if (m.data)[(m.p)] == 32 { goto tr26 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st215 } goto tr24 st215: if (m.p)++; (m.p) == (m.pe) { goto _testEof215 } stCase215: if (m.data)[(m.p)] == 32 { goto tr26 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st216 } goto tr24 st216: if (m.p)++; (m.p) == (m.pe) { goto _testEof216 } stCase216: if (m.data)[(m.p)] == 32 { goto tr26 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st217 } goto tr24 st217: if (m.p)++; (m.p) == (m.pe) { goto _testEof217 } stCase217: if (m.data)[(m.p)] == 32 { goto tr26 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st218 } goto tr24 st218: if (m.p)++; (m.p) == (m.pe) { goto _testEof218 } stCase218: if (m.data)[(m.p)] == 32 { goto tr26 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st219 } goto tr24 st219: if (m.p)++; (m.p) == (m.pe) { goto _testEof219 } stCase219: if (m.data)[(m.p)] == 32 { goto tr26 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st220 } goto tr24 st220: if (m.p)++; (m.p) == (m.pe) { goto _testEof220 } stCase220: if (m.data)[(m.p)] == 32 { goto tr26 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st221 } goto tr24 st221: if (m.p)++; (m.p) == (m.pe) { goto _testEof221 } stCase221: if (m.data)[(m.p)] == 32 { goto tr26 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st222 } goto tr24 st222: if (m.p)++; (m.p) == (m.pe) { goto _testEof222 } stCase222: if (m.data)[(m.p)] == 32 { goto tr26 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st223 } goto tr24 st223: if (m.p)++; (m.p) == (m.pe) { goto _testEof223 } stCase223: if (m.data)[(m.p)] == 32 { goto tr26 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st224 } goto tr24 st224: if (m.p)++; (m.p) == (m.pe) { goto _testEof224 } stCase224: if (m.data)[(m.p)] == 32 { goto tr26 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st225 } goto tr24 st225: if (m.p)++; (m.p) == (m.pe) { goto _testEof225 } stCase225: if (m.data)[(m.p)] == 32 { goto tr26 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st226 } goto tr24 st226: if (m.p)++; (m.p) == (m.pe) { goto _testEof226 } stCase226: if (m.data)[(m.p)] == 32 { goto tr26 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st227 } goto tr24 st227: if (m.p)++; (m.p) == (m.pe) { goto _testEof227 } stCase227: if (m.data)[(m.p)] == 32 { goto tr26 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st228 } goto tr24 st228: if (m.p)++; (m.p) == (m.pe) { goto _testEof228 } stCase228: if (m.data)[(m.p)] == 32 { goto tr26 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st229 } goto tr24 st229: if (m.p)++; (m.p) == (m.pe) { goto _testEof229 } stCase229: if (m.data)[(m.p)] == 32 { goto tr26 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st230 } goto tr24 st230: if (m.p)++; (m.p) == (m.pe) { goto _testEof230 } stCase230: if (m.data)[(m.p)] == 32 { goto tr26 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st231 } goto tr24 st231: if (m.p)++; (m.p) == (m.pe) { goto _testEof231 } stCase231: if (m.data)[(m.p)] == 32 { goto tr26 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st232 } goto tr24 st232: if (m.p)++; (m.p) == (m.pe) { goto _testEof232 } stCase232: if (m.data)[(m.p)] == 32 { goto tr26 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st233 } goto tr24 st233: if (m.p)++; (m.p) == (m.pe) { goto _testEof233 } stCase233: if (m.data)[(m.p)] == 32 { goto tr26 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st234 } goto tr24 st234: if (m.p)++; (m.p) == (m.pe) { goto _testEof234 } stCase234: if (m.data)[(m.p)] == 32 { goto tr26 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st235 } goto tr24 st235: if (m.p)++; (m.p) == (m.pe) { goto _testEof235 } stCase235: if (m.data)[(m.p)] == 32 { goto tr26 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st236 } goto tr24 st236: if (m.p)++; (m.p) == (m.pe) { goto _testEof236 } stCase236: if (m.data)[(m.p)] == 32 { goto tr26 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st237 } goto tr24 st237: if (m.p)++; (m.p) == (m.pe) { goto _testEof237 } stCase237: if (m.data)[(m.p)] == 32 { goto tr26 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st238 } goto tr24 st238: if (m.p)++; (m.p) == (m.pe) { goto _testEof238 } stCase238: if (m.data)[(m.p)] == 32 { goto tr26 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st239 } goto tr24 st239: if (m.p)++; (m.p) == (m.pe) { goto _testEof239 } stCase239: if (m.data)[(m.p)] == 32 { goto tr26 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st240 } goto tr24 st240: if (m.p)++; (m.p) == (m.pe) { goto _testEof240 } stCase240: if (m.data)[(m.p)] == 32 { goto tr26 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st241 } goto tr24 st241: if (m.p)++; (m.p) == (m.pe) { goto _testEof241 } stCase241: if (m.data)[(m.p)] == 32 { goto tr26 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st242 } goto tr24 st242: if (m.p)++; (m.p) == (m.pe) { goto _testEof242 } stCase242: if (m.data)[(m.p)] == 32 { goto tr26 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st243 } goto tr24 st243: if (m.p)++; (m.p) == (m.pe) { goto _testEof243 } stCase243: if (m.data)[(m.p)] == 32 { goto tr26 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st244 } goto tr24 st244: if (m.p)++; (m.p) == (m.pe) { goto _testEof244 } stCase244: if (m.data)[(m.p)] == 32 { goto tr26 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st245 } goto tr24 st245: if (m.p)++; (m.p) == (m.pe) { goto _testEof245 } stCase245: if (m.data)[(m.p)] == 32 { goto tr26 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st246 } goto tr24 st246: if (m.p)++; (m.p) == (m.pe) { goto _testEof246 } stCase246: if (m.data)[(m.p)] == 32 { goto tr26 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st247 } goto tr24 st247: if (m.p)++; (m.p) == (m.pe) { goto _testEof247 } stCase247: if (m.data)[(m.p)] == 32 { goto tr26 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st248 } goto tr24 st248: if (m.p)++; (m.p) == (m.pe) { goto _testEof248 } stCase248: if (m.data)[(m.p)] == 32 { goto tr26 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st249 } goto tr24 st249: if (m.p)++; (m.p) == (m.pe) { goto _testEof249 } stCase249: if (m.data)[(m.p)] == 32 { goto tr26 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st250 } goto tr24 st250: if (m.p)++; (m.p) == (m.pe) { goto _testEof250 } stCase250: if (m.data)[(m.p)] == 32 { goto tr26 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st251 } goto tr24 st251: if (m.p)++; (m.p) == (m.pe) { goto _testEof251 } stCase251: if (m.data)[(m.p)] == 32 { goto tr26 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st252 } goto tr24 st252: if (m.p)++; (m.p) == (m.pe) { goto _testEof252 } stCase252: if (m.data)[(m.p)] == 32 { goto tr26 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st253 } goto tr24 st253: if (m.p)++; (m.p) == (m.pe) { goto _testEof253 } stCase253: if (m.data)[(m.p)] == 32 { goto tr26 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st254 } goto tr24 st254: if (m.p)++; (m.p) == (m.pe) { goto _testEof254 } stCase254: if (m.data)[(m.p)] == 32 { goto tr26 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st255 } goto tr24 st255: if (m.p)++; (m.p) == (m.pe) { goto _testEof255 } stCase255: if (m.data)[(m.p)] == 32 { goto tr26 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st256 } goto tr24 st256: if (m.p)++; (m.p) == (m.pe) { goto _testEof256 } stCase256: if (m.data)[(m.p)] == 32 { goto tr26 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st257 } goto tr24 st257: if (m.p)++; (m.p) == (m.pe) { goto _testEof257 } stCase257: if (m.data)[(m.p)] == 32 { goto tr26 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st258 } goto tr24 st258: if (m.p)++; (m.p) == (m.pe) { goto _testEof258 } stCase258: if (m.data)[(m.p)] == 32 { goto tr26 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st259 } goto tr24 st259: if (m.p)++; (m.p) == (m.pe) { goto _testEof259 } stCase259: if (m.data)[(m.p)] == 32 { goto tr26 } goto tr24 st260: if (m.p)++; (m.p) == (m.pe) { goto _testEof260 } stCase260: if (m.data)[(m.p)] == 32 { goto tr22 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st261 } goto tr20 st261: if (m.p)++; (m.p) == (m.pe) { goto _testEof261 } stCase261: if (m.data)[(m.p)] == 32 { goto tr22 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st262 } goto tr20 st262: if (m.p)++; (m.p) == (m.pe) { goto _testEof262 } stCase262: if (m.data)[(m.p)] == 32 { goto tr22 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st263 } goto tr20 st263: if (m.p)++; (m.p) == (m.pe) { goto _testEof263 } stCase263: if (m.data)[(m.p)] == 32 { goto tr22 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st264 } goto tr20 st264: if (m.p)++; (m.p) == (m.pe) { goto _testEof264 } stCase264: if (m.data)[(m.p)] == 32 { goto tr22 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st265 } goto tr20 st265: if (m.p)++; (m.p) == (m.pe) { goto _testEof265 } stCase265: if (m.data)[(m.p)] == 32 { goto tr22 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st266 } goto tr20 st266: if (m.p)++; (m.p) == (m.pe) { goto _testEof266 } stCase266: if (m.data)[(m.p)] == 32 { goto tr22 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st267 } goto tr20 st267: if (m.p)++; (m.p) == (m.pe) { goto _testEof267 } stCase267: if (m.data)[(m.p)] == 32 { goto tr22 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st268 } goto tr20 st268: if (m.p)++; (m.p) == (m.pe) { goto _testEof268 } stCase268: if (m.data)[(m.p)] == 32 { goto tr22 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st269 } goto tr20 st269: if (m.p)++; (m.p) == (m.pe) { goto _testEof269 } stCase269: if (m.data)[(m.p)] == 32 { goto tr22 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st270 } goto tr20 st270: if (m.p)++; (m.p) == (m.pe) { goto _testEof270 } stCase270: if (m.data)[(m.p)] == 32 { goto tr22 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st271 } goto tr20 st271: if (m.p)++; (m.p) == (m.pe) { goto _testEof271 } stCase271: if (m.data)[(m.p)] == 32 { goto tr22 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st272 } goto tr20 st272: if (m.p)++; (m.p) == (m.pe) { goto _testEof272 } stCase272: if (m.data)[(m.p)] == 32 { goto tr22 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st273 } goto tr20 st273: if (m.p)++; (m.p) == (m.pe) { goto _testEof273 } stCase273: if (m.data)[(m.p)] == 32 { goto tr22 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st274 } goto tr20 st274: if (m.p)++; (m.p) == (m.pe) { goto _testEof274 } stCase274: if (m.data)[(m.p)] == 32 { goto tr22 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st275 } goto tr20 st275: if (m.p)++; (m.p) == (m.pe) { goto _testEof275 } stCase275: if (m.data)[(m.p)] == 32 { goto tr22 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st276 } goto tr20 st276: if (m.p)++; (m.p) == (m.pe) { goto _testEof276 } stCase276: if (m.data)[(m.p)] == 32 { goto tr22 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st277 } goto tr20 st277: if (m.p)++; (m.p) == (m.pe) { goto _testEof277 } stCase277: if (m.data)[(m.p)] == 32 { goto tr22 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st278 } goto tr20 st278: if (m.p)++; (m.p) == (m.pe) { goto _testEof278 } stCase278: if (m.data)[(m.p)] == 32 { goto tr22 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st279 } goto tr20 st279: if (m.p)++; (m.p) == (m.pe) { goto _testEof279 } stCase279: if (m.data)[(m.p)] == 32 { goto tr22 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st280 } goto tr20 st280: if (m.p)++; (m.p) == (m.pe) { goto _testEof280 } stCase280: if (m.data)[(m.p)] == 32 { goto tr22 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st281 } goto tr20 st281: if (m.p)++; (m.p) == (m.pe) { goto _testEof281 } stCase281: if (m.data)[(m.p)] == 32 { goto tr22 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st282 } goto tr20 st282: if (m.p)++; (m.p) == (m.pe) { goto _testEof282 } stCase282: if (m.data)[(m.p)] == 32 { goto tr22 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st283 } goto tr20 st283: if (m.p)++; (m.p) == (m.pe) { goto _testEof283 } stCase283: if (m.data)[(m.p)] == 32 { goto tr22 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st284 } goto tr20 st284: if (m.p)++; (m.p) == (m.pe) { goto _testEof284 } stCase284: if (m.data)[(m.p)] == 32 { goto tr22 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st285 } goto tr20 st285: if (m.p)++; (m.p) == (m.pe) { goto _testEof285 } stCase285: if (m.data)[(m.p)] == 32 { goto tr22 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st286 } goto tr20 st286: if (m.p)++; (m.p) == (m.pe) { goto _testEof286 } stCase286: if (m.data)[(m.p)] == 32 { goto tr22 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st287 } goto tr20 st287: if (m.p)++; (m.p) == (m.pe) { goto _testEof287 } stCase287: if (m.data)[(m.p)] == 32 { goto tr22 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st288 } goto tr20 st288: if (m.p)++; (m.p) == (m.pe) { goto _testEof288 } stCase288: if (m.data)[(m.p)] == 32 { goto tr22 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st289 } goto tr20 st289: if (m.p)++; (m.p) == (m.pe) { goto _testEof289 } stCase289: if (m.data)[(m.p)] == 32 { goto tr22 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st290 } goto tr20 st290: if (m.p)++; (m.p) == (m.pe) { goto _testEof290 } stCase290: if (m.data)[(m.p)] == 32 { goto tr22 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st291 } goto tr20 st291: if (m.p)++; (m.p) == (m.pe) { goto _testEof291 } stCase291: if (m.data)[(m.p)] == 32 { goto tr22 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st292 } goto tr20 st292: if (m.p)++; (m.p) == (m.pe) { goto _testEof292 } stCase292: if (m.data)[(m.p)] == 32 { goto tr22 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st293 } goto tr20 st293: if (m.p)++; (m.p) == (m.pe) { goto _testEof293 } stCase293: if (m.data)[(m.p)] == 32 { goto tr22 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st294 } goto tr20 st294: if (m.p)++; (m.p) == (m.pe) { goto _testEof294 } stCase294: if (m.data)[(m.p)] == 32 { goto tr22 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st295 } goto tr20 st295: if (m.p)++; (m.p) == (m.pe) { goto _testEof295 } stCase295: if (m.data)[(m.p)] == 32 { goto tr22 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st296 } goto tr20 st296: if (m.p)++; (m.p) == (m.pe) { goto _testEof296 } stCase296: if (m.data)[(m.p)] == 32 { goto tr22 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st297 } goto tr20 st297: if (m.p)++; (m.p) == (m.pe) { goto _testEof297 } stCase297: if (m.data)[(m.p)] == 32 { goto tr22 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st298 } goto tr20 st298: if (m.p)++; (m.p) == (m.pe) { goto _testEof298 } stCase298: if (m.data)[(m.p)] == 32 { goto tr22 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st299 } goto tr20 st299: if (m.p)++; (m.p) == (m.pe) { goto _testEof299 } stCase299: if (m.data)[(m.p)] == 32 { goto tr22 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st300 } goto tr20 st300: if (m.p)++; (m.p) == (m.pe) { goto _testEof300 } stCase300: if (m.data)[(m.p)] == 32 { goto tr22 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st301 } goto tr20 st301: if (m.p)++; (m.p) == (m.pe) { goto _testEof301 } stCase301: if (m.data)[(m.p)] == 32 { goto tr22 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st302 } goto tr20 st302: if (m.p)++; (m.p) == (m.pe) { goto _testEof302 } stCase302: if (m.data)[(m.p)] == 32 { goto tr22 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st303 } goto tr20 st303: if (m.p)++; (m.p) == (m.pe) { goto _testEof303 } stCase303: if (m.data)[(m.p)] == 32 { goto tr22 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st304 } goto tr20 st304: if (m.p)++; (m.p) == (m.pe) { goto _testEof304 } stCase304: if (m.data)[(m.p)] == 32 { goto tr22 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st305 } goto tr20 st305: if (m.p)++; (m.p) == (m.pe) { goto _testEof305 } stCase305: if (m.data)[(m.p)] == 32 { goto tr22 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st306 } goto tr20 st306: if (m.p)++; (m.p) == (m.pe) { goto _testEof306 } stCase306: if (m.data)[(m.p)] == 32 { goto tr22 } goto tr20 st307: if (m.p)++; (m.p) == (m.pe) { goto _testEof307 } stCase307: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st308 } goto tr16 st308: if (m.p)++; (m.p) == (m.pe) { goto _testEof308 } stCase308: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st309 } goto tr16 st309: if (m.p)++; (m.p) == (m.pe) { goto _testEof309 } stCase309: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st310 } goto tr16 st310: if (m.p)++; (m.p) == (m.pe) { goto _testEof310 } stCase310: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st311 } goto tr16 st311: if (m.p)++; (m.p) == (m.pe) { goto _testEof311 } stCase311: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st312 } goto tr16 st312: if (m.p)++; (m.p) == (m.pe) { goto _testEof312 } stCase312: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st313 } goto tr16 st313: if (m.p)++; (m.p) == (m.pe) { goto _testEof313 } stCase313: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st314 } goto tr16 st314: if (m.p)++; (m.p) == (m.pe) { goto _testEof314 } stCase314: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st315 } goto tr16 st315: if (m.p)++; (m.p) == (m.pe) { goto _testEof315 } stCase315: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st316 } goto tr16 st316: if (m.p)++; (m.p) == (m.pe) { goto _testEof316 } stCase316: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st317 } goto tr16 st317: if (m.p)++; (m.p) == (m.pe) { goto _testEof317 } stCase317: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st318 } goto tr16 st318: if (m.p)++; (m.p) == (m.pe) { goto _testEof318 } stCase318: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st319 } goto tr16 st319: if (m.p)++; (m.p) == (m.pe) { goto _testEof319 } stCase319: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st320 } goto tr16 st320: if (m.p)++; (m.p) == (m.pe) { goto _testEof320 } stCase320: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st321 } goto tr16 st321: if (m.p)++; (m.p) == (m.pe) { goto _testEof321 } stCase321: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st322 } goto tr16 st322: if (m.p)++; (m.p) == (m.pe) { goto _testEof322 } stCase322: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st323 } goto tr16 st323: if (m.p)++; (m.p) == (m.pe) { goto _testEof323 } stCase323: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st324 } goto tr16 st324: if (m.p)++; (m.p) == (m.pe) { goto _testEof324 } stCase324: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st325 } goto tr16 st325: if (m.p)++; (m.p) == (m.pe) { goto _testEof325 } stCase325: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st326 } goto tr16 st326: if (m.p)++; (m.p) == (m.pe) { goto _testEof326 } stCase326: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st327 } goto tr16 st327: if (m.p)++; (m.p) == (m.pe) { goto _testEof327 } stCase327: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st328 } goto tr16 st328: if (m.p)++; (m.p) == (m.pe) { goto _testEof328 } stCase328: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st329 } goto tr16 st329: if (m.p)++; (m.p) == (m.pe) { goto _testEof329 } stCase329: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st330 } goto tr16 st330: if (m.p)++; (m.p) == (m.pe) { goto _testEof330 } stCase330: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st331 } goto tr16 st331: if (m.p)++; (m.p) == (m.pe) { goto _testEof331 } stCase331: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st332 } goto tr16 st332: if (m.p)++; (m.p) == (m.pe) { goto _testEof332 } stCase332: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st333 } goto tr16 st333: if (m.p)++; (m.p) == (m.pe) { goto _testEof333 } stCase333: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st334 } goto tr16 st334: if (m.p)++; (m.p) == (m.pe) { goto _testEof334 } stCase334: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st335 } goto tr16 st335: if (m.p)++; (m.p) == (m.pe) { goto _testEof335 } stCase335: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st336 } goto tr16 st336: if (m.p)++; (m.p) == (m.pe) { goto _testEof336 } stCase336: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st337 } goto tr16 st337: if (m.p)++; (m.p) == (m.pe) { goto _testEof337 } stCase337: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st338 } goto tr16 st338: if (m.p)++; (m.p) == (m.pe) { goto _testEof338 } stCase338: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st339 } goto tr16 st339: if (m.p)++; (m.p) == (m.pe) { goto _testEof339 } stCase339: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st340 } goto tr16 st340: if (m.p)++; (m.p) == (m.pe) { goto _testEof340 } stCase340: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st341 } goto tr16 st341: if (m.p)++; (m.p) == (m.pe) { goto _testEof341 } stCase341: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st342 } goto tr16 st342: if (m.p)++; (m.p) == (m.pe) { goto _testEof342 } stCase342: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st343 } goto tr16 st343: if (m.p)++; (m.p) == (m.pe) { goto _testEof343 } stCase343: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st344 } goto tr16 st344: if (m.p)++; (m.p) == (m.pe) { goto _testEof344 } stCase344: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st345 } goto tr16 st345: if (m.p)++; (m.p) == (m.pe) { goto _testEof345 } stCase345: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st346 } goto tr16 st346: if (m.p)++; (m.p) == (m.pe) { goto _testEof346 } stCase346: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st347 } goto tr16 st347: if (m.p)++; (m.p) == (m.pe) { goto _testEof347 } stCase347: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st348 } goto tr16 st348: if (m.p)++; (m.p) == (m.pe) { goto _testEof348 } stCase348: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st349 } goto tr16 st349: if (m.p)++; (m.p) == (m.pe) { goto _testEof349 } stCase349: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st350 } goto tr16 st350: if (m.p)++; (m.p) == (m.pe) { goto _testEof350 } stCase350: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st351 } goto tr16 st351: if (m.p)++; (m.p) == (m.pe) { goto _testEof351 } stCase351: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st352 } goto tr16 st352: if (m.p)++; (m.p) == (m.pe) { goto _testEof352 } stCase352: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st353 } goto tr16 st353: if (m.p)++; (m.p) == (m.pe) { goto _testEof353 } stCase353: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st354 } goto tr16 st354: if (m.p)++; (m.p) == (m.pe) { goto _testEof354 } stCase354: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st355 } goto tr16 st355: if (m.p)++; (m.p) == (m.pe) { goto _testEof355 } stCase355: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st356 } goto tr16 st356: if (m.p)++; (m.p) == (m.pe) { goto _testEof356 } stCase356: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st357 } goto tr16 st357: if (m.p)++; (m.p) == (m.pe) { goto _testEof357 } stCase357: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st358 } goto tr16 st358: if (m.p)++; (m.p) == (m.pe) { goto _testEof358 } stCase358: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st359 } goto tr16 st359: if (m.p)++; (m.p) == (m.pe) { goto _testEof359 } stCase359: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st360 } goto tr16 st360: if (m.p)++; (m.p) == (m.pe) { goto _testEof360 } stCase360: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st361 } goto tr16 st361: if (m.p)++; (m.p) == (m.pe) { goto _testEof361 } stCase361: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st362 } goto tr16 st362: if (m.p)++; (m.p) == (m.pe) { goto _testEof362 } stCase362: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st363 } goto tr16 st363: if (m.p)++; (m.p) == (m.pe) { goto _testEof363 } stCase363: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st364 } goto tr16 st364: if (m.p)++; (m.p) == (m.pe) { goto _testEof364 } stCase364: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st365 } goto tr16 st365: if (m.p)++; (m.p) == (m.pe) { goto _testEof365 } stCase365: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st366 } goto tr16 st366: if (m.p)++; (m.p) == (m.pe) { goto _testEof366 } stCase366: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st367 } goto tr16 st367: if (m.p)++; (m.p) == (m.pe) { goto _testEof367 } stCase367: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st368 } goto tr16 st368: if (m.p)++; (m.p) == (m.pe) { goto _testEof368 } stCase368: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st369 } goto tr16 st369: if (m.p)++; (m.p) == (m.pe) { goto _testEof369 } stCase369: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st370 } goto tr16 st370: if (m.p)++; (m.p) == (m.pe) { goto _testEof370 } stCase370: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st371 } goto tr16 st371: if (m.p)++; (m.p) == (m.pe) { goto _testEof371 } stCase371: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st372 } goto tr16 st372: if (m.p)++; (m.p) == (m.pe) { goto _testEof372 } stCase372: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st373 } goto tr16 st373: if (m.p)++; (m.p) == (m.pe) { goto _testEof373 } stCase373: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st374 } goto tr16 st374: if (m.p)++; (m.p) == (m.pe) { goto _testEof374 } stCase374: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st375 } goto tr16 st375: if (m.p)++; (m.p) == (m.pe) { goto _testEof375 } stCase375: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st376 } goto tr16 st376: if (m.p)++; (m.p) == (m.pe) { goto _testEof376 } stCase376: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st377 } goto tr16 st377: if (m.p)++; (m.p) == (m.pe) { goto _testEof377 } stCase377: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st378 } goto tr16 st378: if (m.p)++; (m.p) == (m.pe) { goto _testEof378 } stCase378: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st379 } goto tr16 st379: if (m.p)++; (m.p) == (m.pe) { goto _testEof379 } stCase379: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st380 } goto tr16 st380: if (m.p)++; (m.p) == (m.pe) { goto _testEof380 } stCase380: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st381 } goto tr16 st381: if (m.p)++; (m.p) == (m.pe) { goto _testEof381 } stCase381: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st382 } goto tr16 st382: if (m.p)++; (m.p) == (m.pe) { goto _testEof382 } stCase382: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st383 } goto tr16 st383: if (m.p)++; (m.p) == (m.pe) { goto _testEof383 } stCase383: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st384 } goto tr16 st384: if (m.p)++; (m.p) == (m.pe) { goto _testEof384 } stCase384: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st385 } goto tr16 st385: if (m.p)++; (m.p) == (m.pe) { goto _testEof385 } stCase385: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st386 } goto tr16 st386: if (m.p)++; (m.p) == (m.pe) { goto _testEof386 } stCase386: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st387 } goto tr16 st387: if (m.p)++; (m.p) == (m.pe) { goto _testEof387 } stCase387: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st388 } goto tr16 st388: if (m.p)++; (m.p) == (m.pe) { goto _testEof388 } stCase388: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st389 } goto tr16 st389: if (m.p)++; (m.p) == (m.pe) { goto _testEof389 } stCase389: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st390 } goto tr16 st390: if (m.p)++; (m.p) == (m.pe) { goto _testEof390 } stCase390: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st391 } goto tr16 st391: if (m.p)++; (m.p) == (m.pe) { goto _testEof391 } stCase391: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st392 } goto tr16 st392: if (m.p)++; (m.p) == (m.pe) { goto _testEof392 } stCase392: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st393 } goto tr16 st393: if (m.p)++; (m.p) == (m.pe) { goto _testEof393 } stCase393: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st394 } goto tr16 st394: if (m.p)++; (m.p) == (m.pe) { goto _testEof394 } stCase394: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st395 } goto tr16 st395: if (m.p)++; (m.p) == (m.pe) { goto _testEof395 } stCase395: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st396 } goto tr16 st396: if (m.p)++; (m.p) == (m.pe) { goto _testEof396 } stCase396: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st397 } goto tr16 st397: if (m.p)++; (m.p) == (m.pe) { goto _testEof397 } stCase397: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st398 } goto tr16 st398: if (m.p)++; (m.p) == (m.pe) { goto _testEof398 } stCase398: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st399 } goto tr16 st399: if (m.p)++; (m.p) == (m.pe) { goto _testEof399 } stCase399: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st400 } goto tr16 st400: if (m.p)++; (m.p) == (m.pe) { goto _testEof400 } stCase400: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st401 } goto tr16 st401: if (m.p)++; (m.p) == (m.pe) { goto _testEof401 } stCase401: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st402 } goto tr16 st402: if (m.p)++; (m.p) == (m.pe) { goto _testEof402 } stCase402: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st403 } goto tr16 st403: if (m.p)++; (m.p) == (m.pe) { goto _testEof403 } stCase403: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st404 } goto tr16 st404: if (m.p)++; (m.p) == (m.pe) { goto _testEof404 } stCase404: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st405 } goto tr16 st405: if (m.p)++; (m.p) == (m.pe) { goto _testEof405 } stCase405: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st406 } goto tr16 st406: if (m.p)++; (m.p) == (m.pe) { goto _testEof406 } stCase406: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st407 } goto tr16 st407: if (m.p)++; (m.p) == (m.pe) { goto _testEof407 } stCase407: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st408 } goto tr16 st408: if (m.p)++; (m.p) == (m.pe) { goto _testEof408 } stCase408: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st409 } goto tr16 st409: if (m.p)++; (m.p) == (m.pe) { goto _testEof409 } stCase409: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st410 } goto tr16 st410: if (m.p)++; (m.p) == (m.pe) { goto _testEof410 } stCase410: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st411 } goto tr16 st411: if (m.p)++; (m.p) == (m.pe) { goto _testEof411 } stCase411: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st412 } goto tr16 st412: if (m.p)++; (m.p) == (m.pe) { goto _testEof412 } stCase412: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st413 } goto tr16 st413: if (m.p)++; (m.p) == (m.pe) { goto _testEof413 } stCase413: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st414 } goto tr16 st414: if (m.p)++; (m.p) == (m.pe) { goto _testEof414 } stCase414: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st415 } goto tr16 st415: if (m.p)++; (m.p) == (m.pe) { goto _testEof415 } stCase415: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st416 } goto tr16 st416: if (m.p)++; (m.p) == (m.pe) { goto _testEof416 } stCase416: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st417 } goto tr16 st417: if (m.p)++; (m.p) == (m.pe) { goto _testEof417 } stCase417: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st418 } goto tr16 st418: if (m.p)++; (m.p) == (m.pe) { goto _testEof418 } stCase418: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st419 } goto tr16 st419: if (m.p)++; (m.p) == (m.pe) { goto _testEof419 } stCase419: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st420 } goto tr16 st420: if (m.p)++; (m.p) == (m.pe) { goto _testEof420 } stCase420: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st421 } goto tr16 st421: if (m.p)++; (m.p) == (m.pe) { goto _testEof421 } stCase421: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st422 } goto tr16 st422: if (m.p)++; (m.p) == (m.pe) { goto _testEof422 } stCase422: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st423 } goto tr16 st423: if (m.p)++; (m.p) == (m.pe) { goto _testEof423 } stCase423: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st424 } goto tr16 st424: if (m.p)++; (m.p) == (m.pe) { goto _testEof424 } stCase424: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st425 } goto tr16 st425: if (m.p)++; (m.p) == (m.pe) { goto _testEof425 } stCase425: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st426 } goto tr16 st426: if (m.p)++; (m.p) == (m.pe) { goto _testEof426 } stCase426: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st427 } goto tr16 st427: if (m.p)++; (m.p) == (m.pe) { goto _testEof427 } stCase427: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st428 } goto tr16 st428: if (m.p)++; (m.p) == (m.pe) { goto _testEof428 } stCase428: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st429 } goto tr16 st429: if (m.p)++; (m.p) == (m.pe) { goto _testEof429 } stCase429: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st430 } goto tr16 st430: if (m.p)++; (m.p) == (m.pe) { goto _testEof430 } stCase430: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st431 } goto tr16 st431: if (m.p)++; (m.p) == (m.pe) { goto _testEof431 } stCase431: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st432 } goto tr16 st432: if (m.p)++; (m.p) == (m.pe) { goto _testEof432 } stCase432: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st433 } goto tr16 st433: if (m.p)++; (m.p) == (m.pe) { goto _testEof433 } stCase433: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st434 } goto tr16 st434: if (m.p)++; (m.p) == (m.pe) { goto _testEof434 } stCase434: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st435 } goto tr16 st435: if (m.p)++; (m.p) == (m.pe) { goto _testEof435 } stCase435: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st436 } goto tr16 st436: if (m.p)++; (m.p) == (m.pe) { goto _testEof436 } stCase436: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st437 } goto tr16 st437: if (m.p)++; (m.p) == (m.pe) { goto _testEof437 } stCase437: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st438 } goto tr16 st438: if (m.p)++; (m.p) == (m.pe) { goto _testEof438 } stCase438: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st439 } goto tr16 st439: if (m.p)++; (m.p) == (m.pe) { goto _testEof439 } stCase439: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st440 } goto tr16 st440: if (m.p)++; (m.p) == (m.pe) { goto _testEof440 } stCase440: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st441 } goto tr16 st441: if (m.p)++; (m.p) == (m.pe) { goto _testEof441 } stCase441: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st442 } goto tr16 st442: if (m.p)++; (m.p) == (m.pe) { goto _testEof442 } stCase442: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st443 } goto tr16 st443: if (m.p)++; (m.p) == (m.pe) { goto _testEof443 } stCase443: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st444 } goto tr16 st444: if (m.p)++; (m.p) == (m.pe) { goto _testEof444 } stCase444: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st445 } goto tr16 st445: if (m.p)++; (m.p) == (m.pe) { goto _testEof445 } stCase445: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st446 } goto tr16 st446: if (m.p)++; (m.p) == (m.pe) { goto _testEof446 } stCase446: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st447 } goto tr16 st447: if (m.p)++; (m.p) == (m.pe) { goto _testEof447 } stCase447: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st448 } goto tr16 st448: if (m.p)++; (m.p) == (m.pe) { goto _testEof448 } stCase448: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st449 } goto tr16 st449: if (m.p)++; (m.p) == (m.pe) { goto _testEof449 } stCase449: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st450 } goto tr16 st450: if (m.p)++; (m.p) == (m.pe) { goto _testEof450 } stCase450: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st451 } goto tr16 st451: if (m.p)++; (m.p) == (m.pe) { goto _testEof451 } stCase451: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st452 } goto tr16 st452: if (m.p)++; (m.p) == (m.pe) { goto _testEof452 } stCase452: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st453 } goto tr16 st453: if (m.p)++; (m.p) == (m.pe) { goto _testEof453 } stCase453: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st454 } goto tr16 st454: if (m.p)++; (m.p) == (m.pe) { goto _testEof454 } stCase454: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st455 } goto tr16 st455: if (m.p)++; (m.p) == (m.pe) { goto _testEof455 } stCase455: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st456 } goto tr16 st456: if (m.p)++; (m.p) == (m.pe) { goto _testEof456 } stCase456: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st457 } goto tr16 st457: if (m.p)++; (m.p) == (m.pe) { goto _testEof457 } stCase457: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st458 } goto tr16 st458: if (m.p)++; (m.p) == (m.pe) { goto _testEof458 } stCase458: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st459 } goto tr16 st459: if (m.p)++; (m.p) == (m.pe) { goto _testEof459 } stCase459: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st460 } goto tr16 st460: if (m.p)++; (m.p) == (m.pe) { goto _testEof460 } stCase460: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st461 } goto tr16 st461: if (m.p)++; (m.p) == (m.pe) { goto _testEof461 } stCase461: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st462 } goto tr16 st462: if (m.p)++; (m.p) == (m.pe) { goto _testEof462 } stCase462: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st463 } goto tr16 st463: if (m.p)++; (m.p) == (m.pe) { goto _testEof463 } stCase463: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st464 } goto tr16 st464: if (m.p)++; (m.p) == (m.pe) { goto _testEof464 } stCase464: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st465 } goto tr16 st465: if (m.p)++; (m.p) == (m.pe) { goto _testEof465 } stCase465: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st466 } goto tr16 st466: if (m.p)++; (m.p) == (m.pe) { goto _testEof466 } stCase466: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st467 } goto tr16 st467: if (m.p)++; (m.p) == (m.pe) { goto _testEof467 } stCase467: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st468 } goto tr16 st468: if (m.p)++; (m.p) == (m.pe) { goto _testEof468 } stCase468: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st469 } goto tr16 st469: if (m.p)++; (m.p) == (m.pe) { goto _testEof469 } stCase469: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st470 } goto tr16 st470: if (m.p)++; (m.p) == (m.pe) { goto _testEof470 } stCase470: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st471 } goto tr16 st471: if (m.p)++; (m.p) == (m.pe) { goto _testEof471 } stCase471: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st472 } goto tr16 st472: if (m.p)++; (m.p) == (m.pe) { goto _testEof472 } stCase472: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st473 } goto tr16 st473: if (m.p)++; (m.p) == (m.pe) { goto _testEof473 } stCase473: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st474 } goto tr16 st474: if (m.p)++; (m.p) == (m.pe) { goto _testEof474 } stCase474: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st475 } goto tr16 st475: if (m.p)++; (m.p) == (m.pe) { goto _testEof475 } stCase475: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st476 } goto tr16 st476: if (m.p)++; (m.p) == (m.pe) { goto _testEof476 } stCase476: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st477 } goto tr16 st477: if (m.p)++; (m.p) == (m.pe) { goto _testEof477 } stCase477: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st478 } goto tr16 st478: if (m.p)++; (m.p) == (m.pe) { goto _testEof478 } stCase478: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st479 } goto tr16 st479: if (m.p)++; (m.p) == (m.pe) { goto _testEof479 } stCase479: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st480 } goto tr16 st480: if (m.p)++; (m.p) == (m.pe) { goto _testEof480 } stCase480: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st481 } goto tr16 st481: if (m.p)++; (m.p) == (m.pe) { goto _testEof481 } stCase481: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st482 } goto tr16 st482: if (m.p)++; (m.p) == (m.pe) { goto _testEof482 } stCase482: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st483 } goto tr16 st483: if (m.p)++; (m.p) == (m.pe) { goto _testEof483 } stCase483: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st484 } goto tr16 st484: if (m.p)++; (m.p) == (m.pe) { goto _testEof484 } stCase484: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st485 } goto tr16 st485: if (m.p)++; (m.p) == (m.pe) { goto _testEof485 } stCase485: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st486 } goto tr16 st486: if (m.p)++; (m.p) == (m.pe) { goto _testEof486 } stCase486: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st487 } goto tr16 st487: if (m.p)++; (m.p) == (m.pe) { goto _testEof487 } stCase487: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st488 } goto tr16 st488: if (m.p)++; (m.p) == (m.pe) { goto _testEof488 } stCase488: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st489 } goto tr16 st489: if (m.p)++; (m.p) == (m.pe) { goto _testEof489 } stCase489: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st490 } goto tr16 st490: if (m.p)++; (m.p) == (m.pe) { goto _testEof490 } stCase490: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st491 } goto tr16 st491: if (m.p)++; (m.p) == (m.pe) { goto _testEof491 } stCase491: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st492 } goto tr16 st492: if (m.p)++; (m.p) == (m.pe) { goto _testEof492 } stCase492: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st493 } goto tr16 st493: if (m.p)++; (m.p) == (m.pe) { goto _testEof493 } stCase493: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st494 } goto tr16 st494: if (m.p)++; (m.p) == (m.pe) { goto _testEof494 } stCase494: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st495 } goto tr16 st495: if (m.p)++; (m.p) == (m.pe) { goto _testEof495 } stCase495: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st496 } goto tr16 st496: if (m.p)++; (m.p) == (m.pe) { goto _testEof496 } stCase496: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st497 } goto tr16 st497: if (m.p)++; (m.p) == (m.pe) { goto _testEof497 } stCase497: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st498 } goto tr16 st498: if (m.p)++; (m.p) == (m.pe) { goto _testEof498 } stCase498: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st499 } goto tr16 st499: if (m.p)++; (m.p) == (m.pe) { goto _testEof499 } stCase499: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st500 } goto tr16 st500: if (m.p)++; (m.p) == (m.pe) { goto _testEof500 } stCase500: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st501 } goto tr16 st501: if (m.p)++; (m.p) == (m.pe) { goto _testEof501 } stCase501: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st502 } goto tr16 st502: if (m.p)++; (m.p) == (m.pe) { goto _testEof502 } stCase502: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st503 } goto tr16 st503: if (m.p)++; (m.p) == (m.pe) { goto _testEof503 } stCase503: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st504 } goto tr16 st504: if (m.p)++; (m.p) == (m.pe) { goto _testEof504 } stCase504: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st505 } goto tr16 st505: if (m.p)++; (m.p) == (m.pe) { goto _testEof505 } stCase505: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st506 } goto tr16 st506: if (m.p)++; (m.p) == (m.pe) { goto _testEof506 } stCase506: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st507 } goto tr16 st507: if (m.p)++; (m.p) == (m.pe) { goto _testEof507 } stCase507: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st508 } goto tr16 st508: if (m.p)++; (m.p) == (m.pe) { goto _testEof508 } stCase508: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st509 } goto tr16 st509: if (m.p)++; (m.p) == (m.pe) { goto _testEof509 } stCase509: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st510 } goto tr16 st510: if (m.p)++; (m.p) == (m.pe) { goto _testEof510 } stCase510: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st511 } goto tr16 st511: if (m.p)++; (m.p) == (m.pe) { goto _testEof511 } stCase511: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st512 } goto tr16 st512: if (m.p)++; (m.p) == (m.pe) { goto _testEof512 } stCase512: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st513 } goto tr16 st513: if (m.p)++; (m.p) == (m.pe) { goto _testEof513 } stCase513: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st514 } goto tr16 st514: if (m.p)++; (m.p) == (m.pe) { goto _testEof514 } stCase514: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st515 } goto tr16 st515: if (m.p)++; (m.p) == (m.pe) { goto _testEof515 } stCase515: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st516 } goto tr16 st516: if (m.p)++; (m.p) == (m.pe) { goto _testEof516 } stCase516: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st517 } goto tr16 st517: if (m.p)++; (m.p) == (m.pe) { goto _testEof517 } stCase517: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st518 } goto tr16 st518: if (m.p)++; (m.p) == (m.pe) { goto _testEof518 } stCase518: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st519 } goto tr16 st519: if (m.p)++; (m.p) == (m.pe) { goto _testEof519 } stCase519: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st520 } goto tr16 st520: if (m.p)++; (m.p) == (m.pe) { goto _testEof520 } stCase520: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st521 } goto tr16 st521: if (m.p)++; (m.p) == (m.pe) { goto _testEof521 } stCase521: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st522 } goto tr16 st522: if (m.p)++; (m.p) == (m.pe) { goto _testEof522 } stCase522: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st523 } goto tr16 st523: if (m.p)++; (m.p) == (m.pe) { goto _testEof523 } stCase523: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st524 } goto tr16 st524: if (m.p)++; (m.p) == (m.pe) { goto _testEof524 } stCase524: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st525 } goto tr16 st525: if (m.p)++; (m.p) == (m.pe) { goto _testEof525 } stCase525: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st526 } goto tr16 st526: if (m.p)++; (m.p) == (m.pe) { goto _testEof526 } stCase526: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st527 } goto tr16 st527: if (m.p)++; (m.p) == (m.pe) { goto _testEof527 } stCase527: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st528 } goto tr16 st528: if (m.p)++; (m.p) == (m.pe) { goto _testEof528 } stCase528: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st529 } goto tr16 st529: if (m.p)++; (m.p) == (m.pe) { goto _testEof529 } stCase529: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st530 } goto tr16 st530: if (m.p)++; (m.p) == (m.pe) { goto _testEof530 } stCase530: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st531 } goto tr16 st531: if (m.p)++; (m.p) == (m.pe) { goto _testEof531 } stCase531: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st532 } goto tr16 st532: if (m.p)++; (m.p) == (m.pe) { goto _testEof532 } stCase532: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st533 } goto tr16 st533: if (m.p)++; (m.p) == (m.pe) { goto _testEof533 } stCase533: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st534 } goto tr16 st534: if (m.p)++; (m.p) == (m.pe) { goto _testEof534 } stCase534: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st535 } goto tr16 st535: if (m.p)++; (m.p) == (m.pe) { goto _testEof535 } stCase535: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st536 } goto tr16 st536: if (m.p)++; (m.p) == (m.pe) { goto _testEof536 } stCase536: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st537 } goto tr16 st537: if (m.p)++; (m.p) == (m.pe) { goto _testEof537 } stCase537: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st538 } goto tr16 st538: if (m.p)++; (m.p) == (m.pe) { goto _testEof538 } stCase538: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st539 } goto tr16 st539: if (m.p)++; (m.p) == (m.pe) { goto _testEof539 } stCase539: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st540 } goto tr16 st540: if (m.p)++; (m.p) == (m.pe) { goto _testEof540 } stCase540: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st541 } goto tr16 st541: if (m.p)++; (m.p) == (m.pe) { goto _testEof541 } stCase541: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st542 } goto tr16 st542: if (m.p)++; (m.p) == (m.pe) { goto _testEof542 } stCase542: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st543 } goto tr16 st543: if (m.p)++; (m.p) == (m.pe) { goto _testEof543 } stCase543: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st544 } goto tr16 st544: if (m.p)++; (m.p) == (m.pe) { goto _testEof544 } stCase544: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st545 } goto tr16 st545: if (m.p)++; (m.p) == (m.pe) { goto _testEof545 } stCase545: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st546 } goto tr16 st546: if (m.p)++; (m.p) == (m.pe) { goto _testEof546 } stCase546: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st547 } goto tr16 st547: if (m.p)++; (m.p) == (m.pe) { goto _testEof547 } stCase547: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st548 } goto tr16 st548: if (m.p)++; (m.p) == (m.pe) { goto _testEof548 } stCase548: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st549 } goto tr16 st549: if (m.p)++; (m.p) == (m.pe) { goto _testEof549 } stCase549: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st550 } goto tr16 st550: if (m.p)++; (m.p) == (m.pe) { goto _testEof550 } stCase550: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st551 } goto tr16 st551: if (m.p)++; (m.p) == (m.pe) { goto _testEof551 } stCase551: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st552 } goto tr16 st552: if (m.p)++; (m.p) == (m.pe) { goto _testEof552 } stCase552: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st553 } goto tr16 st553: if (m.p)++; (m.p) == (m.pe) { goto _testEof553 } stCase553: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st554 } goto tr16 st554: if (m.p)++; (m.p) == (m.pe) { goto _testEof554 } stCase554: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st555 } goto tr16 st555: if (m.p)++; (m.p) == (m.pe) { goto _testEof555 } stCase555: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st556 } goto tr16 st556: if (m.p)++; (m.p) == (m.pe) { goto _testEof556 } stCase556: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st557 } goto tr16 st557: if (m.p)++; (m.p) == (m.pe) { goto _testEof557 } stCase557: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st558 } goto tr16 st558: if (m.p)++; (m.p) == (m.pe) { goto _testEof558 } stCase558: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st559 } goto tr16 st559: if (m.p)++; (m.p) == (m.pe) { goto _testEof559 } stCase559: if (m.data)[(m.p)] == 32 { goto tr18 } if 33 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 126 { goto st560 } goto tr16 st560: if (m.p)++; (m.p) == (m.pe) { goto _testEof560 } stCase560: if (m.data)[(m.p)] == 32 { goto tr18 } goto tr16 tr14: m.pb = m.p goto st561 st561: if (m.p)++; (m.p) == (m.pe) { goto _testEof561 } stCase561: if 48 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 57 { goto st562 } goto tr12 st562: if (m.p)++; (m.p) == (m.pe) { goto _testEof562 } stCase562: if 48 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 57 { goto st563 } goto tr12 st563: if (m.p)++; (m.p) == (m.pe) { goto _testEof563 } stCase563: if 48 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 57 { goto st564 } goto tr12 st564: if (m.p)++; (m.p) == (m.pe) { goto _testEof564 } stCase564: if (m.data)[(m.p)] == 45 { goto st565 } goto tr12 st565: if (m.p)++; (m.p) == (m.pe) { goto _testEof565 } stCase565: switch (m.data)[(m.p)] { case 48: goto st566 case 49: goto st597 } goto tr12 st566: if (m.p)++; (m.p) == (m.pe) { goto _testEof566 } stCase566: if 49 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 57 { goto st567 } goto tr12 st567: if (m.p)++; (m.p) == (m.pe) { goto _testEof567 } stCase567: if (m.data)[(m.p)] == 45 { goto st568 } goto tr12 st568: if (m.p)++; (m.p) == (m.pe) { goto _testEof568 } stCase568: switch (m.data)[(m.p)] { case 48: goto st569 case 51: goto st596 } if 49 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 50 { goto st595 } goto tr12 st569: if (m.p)++; (m.p) == (m.pe) { goto _testEof569 } stCase569: if 49 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 57 { goto st570 } goto tr12 st570: if (m.p)++; (m.p) == (m.pe) { goto _testEof570 } stCase570: if (m.data)[(m.p)] == 84 { goto st571 } goto tr12 st571: if (m.p)++; (m.p) == (m.pe) { goto _testEof571 } stCase571: if (m.data)[(m.p)] == 50 { goto st594 } if 48 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 49 { goto st572 } goto tr12 st572: if (m.p)++; (m.p) == (m.pe) { goto _testEof572 } stCase572: if 48 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 57 { goto st573 } goto tr12 st573: if (m.p)++; (m.p) == (m.pe) { goto _testEof573 } stCase573: if (m.data)[(m.p)] == 58 { goto st574 } goto tr12 st574: if (m.p)++; (m.p) == (m.pe) { goto _testEof574 } stCase574: if 48 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 53 { goto st575 } goto tr12 st575: if (m.p)++; (m.p) == (m.pe) { goto _testEof575 } stCase575: if 48 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 57 { goto st576 } goto tr12 st576: if (m.p)++; (m.p) == (m.pe) { goto _testEof576 } stCase576: if (m.data)[(m.p)] == 58 { goto st577 } goto tr12 st577: if (m.p)++; (m.p) == (m.pe) { goto _testEof577 } stCase577: if 48 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 53 { goto st578 } goto tr12 st578: if (m.p)++; (m.p) == (m.pe) { goto _testEof578 } stCase578: if 48 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 57 { goto st579 } goto tr12 st579: if (m.p)++; (m.p) == (m.pe) { goto _testEof579 } stCase579: switch (m.data)[(m.p)] { case 43: goto st580 case 45: goto st580 case 46: goto st587 case 90: goto st585 } goto tr12 st580: if (m.p)++; (m.p) == (m.pe) { goto _testEof580 } stCase580: if (m.data)[(m.p)] == 50 { goto st586 } if 48 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 49 { goto st581 } goto tr12 st581: if (m.p)++; (m.p) == (m.pe) { goto _testEof581 } stCase581: if 48 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 57 { goto st582 } goto tr12 st582: if (m.p)++; (m.p) == (m.pe) { goto _testEof582 } stCase582: if (m.data)[(m.p)] == 58 { goto st583 } goto tr12 st583: if (m.p)++; (m.p) == (m.pe) { goto _testEof583 } stCase583: if 48 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 53 { goto st584 } goto tr12 st584: if (m.p)++; (m.p) == (m.pe) { goto _testEof584 } stCase584: if 48 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 57 { goto st585 } goto tr12 st585: if (m.p)++; (m.p) == (m.pe) { goto _testEof585 } stCase585: if (m.data)[(m.p)] == 32 { goto tr620 } goto tr619 st586: if (m.p)++; (m.p) == (m.pe) { goto _testEof586 } stCase586: if 48 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 51 { goto st582 } goto tr12 st587: if (m.p)++; (m.p) == (m.pe) { goto _testEof587 } stCase587: if 48 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 57 { goto st588 } goto tr12 st588: if (m.p)++; (m.p) == (m.pe) { goto _testEof588 } stCase588: switch (m.data)[(m.p)] { case 43: goto st580 case 45: goto st580 case 90: goto st585 } if 48 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 57 { goto st589 } goto tr12 st589: if (m.p)++; (m.p) == (m.pe) { goto _testEof589 } stCase589: switch (m.data)[(m.p)] { case 43: goto st580 case 45: goto st580 case 90: goto st585 } if 48 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 57 { goto st590 } goto tr12 st590: if (m.p)++; (m.p) == (m.pe) { goto _testEof590 } stCase590: switch (m.data)[(m.p)] { case 43: goto st580 case 45: goto st580 case 90: goto st585 } if 48 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 57 { goto st591 } goto tr12 st591: if (m.p)++; (m.p) == (m.pe) { goto _testEof591 } stCase591: switch (m.data)[(m.p)] { case 43: goto st580 case 45: goto st580 case 90: goto st585 } if 48 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 57 { goto st592 } goto tr12 st592: if (m.p)++; (m.p) == (m.pe) { goto _testEof592 } stCase592: switch (m.data)[(m.p)] { case 43: goto st580 case 45: goto st580 case 90: goto st585 } if 48 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 57 { goto st593 } goto tr12 st593: if (m.p)++; (m.p) == (m.pe) { goto _testEof593 } stCase593: switch (m.data)[(m.p)] { case 43: goto st580 case 45: goto st580 case 90: goto st585 } goto tr12 st594: if (m.p)++; (m.p) == (m.pe) { goto _testEof594 } stCase594: if 48 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 51 { goto st573 } goto tr12 st595: if (m.p)++; (m.p) == (m.pe) { goto _testEof595 } stCase595: if 48 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 57 { goto st570 } goto tr12 st596: if (m.p)++; (m.p) == (m.pe) { goto _testEof596 } stCase596: if 48 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 49 { goto st570 } goto tr12 st597: if (m.p)++; (m.p) == (m.pe) { goto _testEof597 } stCase597: if 48 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 50 { goto st567 } goto tr12 st598: if (m.p)++; (m.p) == (m.pe) { goto _testEof598 } stCase598: output.version = uint16(unsafeUTF8DecimalCodePointsToInt(m.text())) if (m.data)[(m.p)] == 32 { goto st6 } if 48 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 57 { goto st599 } goto tr7 st599: if (m.p)++; (m.p) == (m.pe) { goto _testEof599 } stCase599: output.version = uint16(unsafeUTF8DecimalCodePointsToInt(m.text())) if (m.data)[(m.p)] == 32 { goto st6 } goto tr7 tr4: m.pb = m.p goto st600 st600: if (m.p)++; (m.p) == (m.pe) { goto _testEof600 } stCase600: output.priority = uint8(unsafeUTF8DecimalCodePointsToInt(m.text())) output.prioritySet = true switch (m.data)[(m.p)] { case 57: goto st602 case 62: goto st4 } if 48 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 56 { goto st601 } goto tr2 tr5: m.pb = m.p goto st601 st601: if (m.p)++; (m.p) == (m.pe) { goto _testEof601 } stCase601: output.priority = uint8(unsafeUTF8DecimalCodePointsToInt(m.text())) output.prioritySet = true if (m.data)[(m.p)] == 62 { goto st4 } if 48 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 57 { goto st3 } goto tr2 st602: if (m.p)++; (m.p) == (m.pe) { goto _testEof602 } stCase602: output.priority = uint8(unsafeUTF8DecimalCodePointsToInt(m.text())) output.prioritySet = true if (m.data)[(m.p)] == 62 { goto st4 } if 48 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 49 { goto st3 } goto tr2 st607: if (m.p)++; (m.p) == (m.pe) { goto _testEof607 } stCase607: switch (m.data)[(m.p)] { case 10: goto st0 case 13: goto st0 } goto st607 stOut: _testEof2: m.cs = 2 goto _testEof _testEof3: m.cs = 3 goto _testEof _testEof4: m.cs = 4 goto _testEof _testEof5: m.cs = 5 goto _testEof _testEof6: m.cs = 6 goto _testEof _testEof7: m.cs = 7 goto _testEof _testEof8: m.cs = 8 goto _testEof _testEof9: m.cs = 9 goto _testEof _testEof10: m.cs = 10 goto _testEof _testEof11: m.cs = 11 goto _testEof _testEof12: m.cs = 12 goto _testEof _testEof13: m.cs = 13 goto _testEof _testEof14: m.cs = 14 goto _testEof _testEof15: m.cs = 15 goto _testEof _testEof16: m.cs = 16 goto _testEof _testEof603: m.cs = 603 goto _testEof _testEof604: m.cs = 604 goto _testEof _testEof605: m.cs = 605 goto _testEof _testEof17: m.cs = 17 goto _testEof _testEof18: m.cs = 18 goto _testEof _testEof19: m.cs = 19 goto _testEof _testEof20: m.cs = 20 goto _testEof _testEof21: m.cs = 21 goto _testEof _testEof22: m.cs = 22 goto _testEof _testEof23: m.cs = 23 goto _testEof _testEof24: m.cs = 24 goto _testEof _testEof25: m.cs = 25 goto _testEof _testEof26: m.cs = 26 goto _testEof _testEof27: m.cs = 27 goto _testEof _testEof28: m.cs = 28 goto _testEof _testEof29: m.cs = 29 goto _testEof _testEof30: m.cs = 30 goto _testEof _testEof31: m.cs = 31 goto _testEof _testEof32: m.cs = 32 goto _testEof _testEof33: m.cs = 33 goto _testEof _testEof34: m.cs = 34 goto _testEof _testEof35: m.cs = 35 goto _testEof _testEof36: m.cs = 36 goto _testEof _testEof37: m.cs = 37 goto _testEof _testEof38: m.cs = 38 goto _testEof _testEof39: m.cs = 39 goto _testEof _testEof40: m.cs = 40 goto _testEof _testEof41: m.cs = 41 goto _testEof _testEof42: m.cs = 42 goto _testEof _testEof43: m.cs = 43 goto _testEof _testEof44: m.cs = 44 goto _testEof _testEof45: m.cs = 45 goto _testEof _testEof46: m.cs = 46 goto _testEof _testEof47: m.cs = 47 goto _testEof _testEof48: m.cs = 48 goto _testEof _testEof49: m.cs = 49 goto _testEof _testEof50: m.cs = 50 goto _testEof _testEof51: m.cs = 51 goto _testEof _testEof52: m.cs = 52 goto _testEof _testEof53: m.cs = 53 goto _testEof _testEof54: m.cs = 54 goto _testEof _testEof55: m.cs = 55 goto _testEof _testEof56: m.cs = 56 goto _testEof _testEof57: m.cs = 57 goto _testEof _testEof58: m.cs = 58 goto _testEof _testEof59: m.cs = 59 goto _testEof _testEof60: m.cs = 60 goto _testEof _testEof61: m.cs = 61 goto _testEof _testEof62: m.cs = 62 goto _testEof _testEof606: m.cs = 606 goto _testEof _testEof63: m.cs = 63 goto _testEof _testEof64: m.cs = 64 goto _testEof _testEof65: m.cs = 65 goto _testEof _testEof66: m.cs = 66 goto _testEof _testEof67: m.cs = 67 goto _testEof _testEof68: m.cs = 68 goto _testEof _testEof69: m.cs = 69 goto _testEof _testEof70: m.cs = 70 goto _testEof _testEof71: m.cs = 71 goto _testEof _testEof72: m.cs = 72 goto _testEof _testEof73: m.cs = 73 goto _testEof _testEof74: m.cs = 74 goto _testEof _testEof75: m.cs = 75 goto _testEof _testEof76: m.cs = 76 goto _testEof _testEof77: m.cs = 77 goto _testEof _testEof78: m.cs = 78 goto _testEof _testEof79: m.cs = 79 goto _testEof _testEof80: m.cs = 80 goto _testEof _testEof81: m.cs = 81 goto _testEof _testEof82: m.cs = 82 goto _testEof _testEof83: m.cs = 83 goto _testEof _testEof84: m.cs = 84 goto _testEof _testEof85: m.cs = 85 goto _testEof _testEof86: m.cs = 86 goto _testEof _testEof87: m.cs = 87 goto _testEof _testEof88: m.cs = 88 goto _testEof _testEof89: m.cs = 89 goto _testEof _testEof90: m.cs = 90 goto _testEof _testEof91: m.cs = 91 goto _testEof _testEof92: m.cs = 92 goto _testEof _testEof93: m.cs = 93 goto _testEof _testEof94: m.cs = 94 goto _testEof _testEof95: m.cs = 95 goto _testEof _testEof96: m.cs = 96 goto _testEof _testEof97: m.cs = 97 goto _testEof _testEof98: m.cs = 98 goto _testEof _testEof99: m.cs = 99 goto _testEof _testEof100: m.cs = 100 goto _testEof _testEof101: m.cs = 101 goto _testEof _testEof102: m.cs = 102 goto _testEof _testEof103: m.cs = 103 goto _testEof _testEof104: m.cs = 104 goto _testEof _testEof105: m.cs = 105 goto _testEof _testEof106: m.cs = 106 goto _testEof _testEof107: m.cs = 107 goto _testEof _testEof108: m.cs = 108 goto _testEof _testEof109: m.cs = 109 goto _testEof _testEof110: m.cs = 110 goto _testEof _testEof111: m.cs = 111 goto _testEof _testEof112: m.cs = 112 goto _testEof _testEof113: m.cs = 113 goto _testEof _testEof114: m.cs = 114 goto _testEof _testEof115: m.cs = 115 goto _testEof _testEof116: m.cs = 116 goto _testEof _testEof117: m.cs = 117 goto _testEof _testEof118: m.cs = 118 goto _testEof _testEof119: m.cs = 119 goto _testEof _testEof120: m.cs = 120 goto _testEof _testEof121: m.cs = 121 goto _testEof _testEof122: m.cs = 122 goto _testEof _testEof123: m.cs = 123 goto _testEof _testEof124: m.cs = 124 goto _testEof _testEof125: m.cs = 125 goto _testEof _testEof126: m.cs = 126 goto _testEof _testEof127: m.cs = 127 goto _testEof _testEof128: m.cs = 128 goto _testEof _testEof129: m.cs = 129 goto _testEof _testEof130: m.cs = 130 goto _testEof _testEof131: m.cs = 131 goto _testEof _testEof132: m.cs = 132 goto _testEof _testEof133: m.cs = 133 goto _testEof _testEof134: m.cs = 134 goto _testEof _testEof135: m.cs = 135 goto _testEof _testEof136: m.cs = 136 goto _testEof _testEof137: m.cs = 137 goto _testEof _testEof138: m.cs = 138 goto _testEof _testEof139: m.cs = 139 goto _testEof _testEof140: m.cs = 140 goto _testEof _testEof141: m.cs = 141 goto _testEof _testEof142: m.cs = 142 goto _testEof _testEof143: m.cs = 143 goto _testEof _testEof144: m.cs = 144 goto _testEof _testEof145: m.cs = 145 goto _testEof _testEof146: m.cs = 146 goto _testEof _testEof147: m.cs = 147 goto _testEof _testEof148: m.cs = 148 goto _testEof _testEof149: m.cs = 149 goto _testEof _testEof150: m.cs = 150 goto _testEof _testEof151: m.cs = 151 goto _testEof _testEof152: m.cs = 152 goto _testEof _testEof153: m.cs = 153 goto _testEof _testEof154: m.cs = 154 goto _testEof _testEof155: m.cs = 155 goto _testEof _testEof156: m.cs = 156 goto _testEof _testEof157: m.cs = 157 goto _testEof _testEof158: m.cs = 158 goto _testEof _testEof159: m.cs = 159 goto _testEof _testEof160: m.cs = 160 goto _testEof _testEof161: m.cs = 161 goto _testEof _testEof162: m.cs = 162 goto _testEof _testEof163: m.cs = 163 goto _testEof _testEof164: m.cs = 164 goto _testEof _testEof165: m.cs = 165 goto _testEof _testEof166: m.cs = 166 goto _testEof _testEof167: m.cs = 167 goto _testEof _testEof168: m.cs = 168 goto _testEof _testEof169: m.cs = 169 goto _testEof _testEof170: m.cs = 170 goto _testEof _testEof171: m.cs = 171 goto _testEof _testEof172: m.cs = 172 goto _testEof _testEof173: m.cs = 173 goto _testEof _testEof174: m.cs = 174 goto _testEof _testEof175: m.cs = 175 goto _testEof _testEof176: m.cs = 176 goto _testEof _testEof177: m.cs = 177 goto _testEof _testEof178: m.cs = 178 goto _testEof _testEof179: m.cs = 179 goto _testEof _testEof180: m.cs = 180 goto _testEof _testEof181: m.cs = 181 goto _testEof _testEof182: m.cs = 182 goto _testEof _testEof183: m.cs = 183 goto _testEof _testEof184: m.cs = 184 goto _testEof _testEof185: m.cs = 185 goto _testEof _testEof186: m.cs = 186 goto _testEof _testEof187: m.cs = 187 goto _testEof _testEof188: m.cs = 188 goto _testEof _testEof189: m.cs = 189 goto _testEof _testEof190: m.cs = 190 goto _testEof _testEof191: m.cs = 191 goto _testEof _testEof192: m.cs = 192 goto _testEof _testEof193: m.cs = 193 goto _testEof _testEof194: m.cs = 194 goto _testEof _testEof195: m.cs = 195 goto _testEof _testEof196: m.cs = 196 goto _testEof _testEof197: m.cs = 197 goto _testEof _testEof198: m.cs = 198 goto _testEof _testEof199: m.cs = 199 goto _testEof _testEof200: m.cs = 200 goto _testEof _testEof201: m.cs = 201 goto _testEof _testEof202: m.cs = 202 goto _testEof _testEof203: m.cs = 203 goto _testEof _testEof204: m.cs = 204 goto _testEof _testEof205: m.cs = 205 goto _testEof _testEof206: m.cs = 206 goto _testEof _testEof207: m.cs = 207 goto _testEof _testEof208: m.cs = 208 goto _testEof _testEof209: m.cs = 209 goto _testEof _testEof210: m.cs = 210 goto _testEof _testEof211: m.cs = 211 goto _testEof _testEof212: m.cs = 212 goto _testEof _testEof213: m.cs = 213 goto _testEof _testEof214: m.cs = 214 goto _testEof _testEof215: m.cs = 215 goto _testEof _testEof216: m.cs = 216 goto _testEof _testEof217: m.cs = 217 goto _testEof _testEof218: m.cs = 218 goto _testEof _testEof219: m.cs = 219 goto _testEof _testEof220: m.cs = 220 goto _testEof _testEof221: m.cs = 221 goto _testEof _testEof222: m.cs = 222 goto _testEof _testEof223: m.cs = 223 goto _testEof _testEof224: m.cs = 224 goto _testEof _testEof225: m.cs = 225 goto _testEof _testEof226: m.cs = 226 goto _testEof _testEof227: m.cs = 227 goto _testEof _testEof228: m.cs = 228 goto _testEof _testEof229: m.cs = 229 goto _testEof _testEof230: m.cs = 230 goto _testEof _testEof231: m.cs = 231 goto _testEof _testEof232: m.cs = 232 goto _testEof _testEof233: m.cs = 233 goto _testEof _testEof234: m.cs = 234 goto _testEof _testEof235: m.cs = 235 goto _testEof _testEof236: m.cs = 236 goto _testEof _testEof237: m.cs = 237 goto _testEof _testEof238: m.cs = 238 goto _testEof _testEof239: m.cs = 239 goto _testEof _testEof240: m.cs = 240 goto _testEof _testEof241: m.cs = 241 goto _testEof _testEof242: m.cs = 242 goto _testEof _testEof243: m.cs = 243 goto _testEof _testEof244: m.cs = 244 goto _testEof _testEof245: m.cs = 245 goto _testEof _testEof246: m.cs = 246 goto _testEof _testEof247: m.cs = 247 goto _testEof _testEof248: m.cs = 248 goto _testEof _testEof249: m.cs = 249 goto _testEof _testEof250: m.cs = 250 goto _testEof _testEof251: m.cs = 251 goto _testEof _testEof252: m.cs = 252 goto _testEof _testEof253: m.cs = 253 goto _testEof _testEof254: m.cs = 254 goto _testEof _testEof255: m.cs = 255 goto _testEof _testEof256: m.cs = 256 goto _testEof _testEof257: m.cs = 257 goto _testEof _testEof258: m.cs = 258 goto _testEof _testEof259: m.cs = 259 goto _testEof _testEof260: m.cs = 260 goto _testEof _testEof261: m.cs = 261 goto _testEof _testEof262: m.cs = 262 goto _testEof _testEof263: m.cs = 263 goto _testEof _testEof264: m.cs = 264 goto _testEof _testEof265: m.cs = 265 goto _testEof _testEof266: m.cs = 266 goto _testEof _testEof267: m.cs = 267 goto _testEof _testEof268: m.cs = 268 goto _testEof _testEof269: m.cs = 269 goto _testEof _testEof270: m.cs = 270 goto _testEof _testEof271: m.cs = 271 goto _testEof _testEof272: m.cs = 272 goto _testEof _testEof273: m.cs = 273 goto _testEof _testEof274: m.cs = 274 goto _testEof _testEof275: m.cs = 275 goto _testEof _testEof276: m.cs = 276 goto _testEof _testEof277: m.cs = 277 goto _testEof _testEof278: m.cs = 278 goto _testEof _testEof279: m.cs = 279 goto _testEof _testEof280: m.cs = 280 goto _testEof _testEof281: m.cs = 281 goto _testEof _testEof282: m.cs = 282 goto _testEof _testEof283: m.cs = 283 goto _testEof _testEof284: m.cs = 284 goto _testEof _testEof285: m.cs = 285 goto _testEof _testEof286: m.cs = 286 goto _testEof _testEof287: m.cs = 287 goto _testEof _testEof288: m.cs = 288 goto _testEof _testEof289: m.cs = 289 goto _testEof _testEof290: m.cs = 290 goto _testEof _testEof291: m.cs = 291 goto _testEof _testEof292: m.cs = 292 goto _testEof _testEof293: m.cs = 293 goto _testEof _testEof294: m.cs = 294 goto _testEof _testEof295: m.cs = 295 goto _testEof _testEof296: m.cs = 296 goto _testEof _testEof297: m.cs = 297 goto _testEof _testEof298: m.cs = 298 goto _testEof _testEof299: m.cs = 299 goto _testEof _testEof300: m.cs = 300 goto _testEof _testEof301: m.cs = 301 goto _testEof _testEof302: m.cs = 302 goto _testEof _testEof303: m.cs = 303 goto _testEof _testEof304: m.cs = 304 goto _testEof _testEof305: m.cs = 305 goto _testEof _testEof306: m.cs = 306 goto _testEof _testEof307: m.cs = 307 goto _testEof _testEof308: m.cs = 308 goto _testEof _testEof309: m.cs = 309 goto _testEof _testEof310: m.cs = 310 goto _testEof _testEof311: m.cs = 311 goto _testEof _testEof312: m.cs = 312 goto _testEof _testEof313: m.cs = 313 goto _testEof _testEof314: m.cs = 314 goto _testEof _testEof315: m.cs = 315 goto _testEof _testEof316: m.cs = 316 goto _testEof _testEof317: m.cs = 317 goto _testEof _testEof318: m.cs = 318 goto _testEof _testEof319: m.cs = 319 goto _testEof _testEof320: m.cs = 320 goto _testEof _testEof321: m.cs = 321 goto _testEof _testEof322: m.cs = 322 goto _testEof _testEof323: m.cs = 323 goto _testEof _testEof324: m.cs = 324 goto _testEof _testEof325: m.cs = 325 goto _testEof _testEof326: m.cs = 326 goto _testEof _testEof327: m.cs = 327 goto _testEof _testEof328: m.cs = 328 goto _testEof _testEof329: m.cs = 329 goto _testEof _testEof330: m.cs = 330 goto _testEof _testEof331: m.cs = 331 goto _testEof _testEof332: m.cs = 332 goto _testEof _testEof333: m.cs = 333 goto _testEof _testEof334: m.cs = 334 goto _testEof _testEof335: m.cs = 335 goto _testEof _testEof336: m.cs = 336 goto _testEof _testEof337: m.cs = 337 goto _testEof _testEof338: m.cs = 338 goto _testEof _testEof339: m.cs = 339 goto _testEof _testEof340: m.cs = 340 goto _testEof _testEof341: m.cs = 341 goto _testEof _testEof342: m.cs = 342 goto _testEof _testEof343: m.cs = 343 goto _testEof _testEof344: m.cs = 344 goto _testEof _testEof345: m.cs = 345 goto _testEof _testEof346: m.cs = 346 goto _testEof _testEof347: m.cs = 347 goto _testEof _testEof348: m.cs = 348 goto _testEof _testEof349: m.cs = 349 goto _testEof _testEof350: m.cs = 350 goto _testEof _testEof351: m.cs = 351 goto _testEof _testEof352: m.cs = 352 goto _testEof _testEof353: m.cs = 353 goto _testEof _testEof354: m.cs = 354 goto _testEof _testEof355: m.cs = 355 goto _testEof _testEof356: m.cs = 356 goto _testEof _testEof357: m.cs = 357 goto _testEof _testEof358: m.cs = 358 goto _testEof _testEof359: m.cs = 359 goto _testEof _testEof360: m.cs = 360 goto _testEof _testEof361: m.cs = 361 goto _testEof _testEof362: m.cs = 362 goto _testEof _testEof363: m.cs = 363 goto _testEof _testEof364: m.cs = 364 goto _testEof _testEof365: m.cs = 365 goto _testEof _testEof366: m.cs = 366 goto _testEof _testEof367: m.cs = 367 goto _testEof _testEof368: m.cs = 368 goto _testEof _testEof369: m.cs = 369 goto _testEof _testEof370: m.cs = 370 goto _testEof _testEof371: m.cs = 371 goto _testEof _testEof372: m.cs = 372 goto _testEof _testEof373: m.cs = 373 goto _testEof _testEof374: m.cs = 374 goto _testEof _testEof375: m.cs = 375 goto _testEof _testEof376: m.cs = 376 goto _testEof _testEof377: m.cs = 377 goto _testEof _testEof378: m.cs = 378 goto _testEof _testEof379: m.cs = 379 goto _testEof _testEof380: m.cs = 380 goto _testEof _testEof381: m.cs = 381 goto _testEof _testEof382: m.cs = 382 goto _testEof _testEof383: m.cs = 383 goto _testEof _testEof384: m.cs = 384 goto _testEof _testEof385: m.cs = 385 goto _testEof _testEof386: m.cs = 386 goto _testEof _testEof387: m.cs = 387 goto _testEof _testEof388: m.cs = 388 goto _testEof _testEof389: m.cs = 389 goto _testEof _testEof390: m.cs = 390 goto _testEof _testEof391: m.cs = 391 goto _testEof _testEof392: m.cs = 392 goto _testEof _testEof393: m.cs = 393 goto _testEof _testEof394: m.cs = 394 goto _testEof _testEof395: m.cs = 395 goto _testEof _testEof396: m.cs = 396 goto _testEof _testEof397: m.cs = 397 goto _testEof _testEof398: m.cs = 398 goto _testEof _testEof399: m.cs = 399 goto _testEof _testEof400: m.cs = 400 goto _testEof _testEof401: m.cs = 401 goto _testEof _testEof402: m.cs = 402 goto _testEof _testEof403: m.cs = 403 goto _testEof _testEof404: m.cs = 404 goto _testEof _testEof405: m.cs = 405 goto _testEof _testEof406: m.cs = 406 goto _testEof _testEof407: m.cs = 407 goto _testEof _testEof408: m.cs = 408 goto _testEof _testEof409: m.cs = 409 goto _testEof _testEof410: m.cs = 410 goto _testEof _testEof411: m.cs = 411 goto _testEof _testEof412: m.cs = 412 goto _testEof _testEof413: m.cs = 413 goto _testEof _testEof414: m.cs = 414 goto _testEof _testEof415: m.cs = 415 goto _testEof _testEof416: m.cs = 416 goto _testEof _testEof417: m.cs = 417 goto _testEof _testEof418: m.cs = 418 goto _testEof _testEof419: m.cs = 419 goto _testEof _testEof420: m.cs = 420 goto _testEof _testEof421: m.cs = 421 goto _testEof _testEof422: m.cs = 422 goto _testEof _testEof423: m.cs = 423 goto _testEof _testEof424: m.cs = 424 goto _testEof _testEof425: m.cs = 425 goto _testEof _testEof426: m.cs = 426 goto _testEof _testEof427: m.cs = 427 goto _testEof _testEof428: m.cs = 428 goto _testEof _testEof429: m.cs = 429 goto _testEof _testEof430: m.cs = 430 goto _testEof _testEof431: m.cs = 431 goto _testEof _testEof432: m.cs = 432 goto _testEof _testEof433: m.cs = 433 goto _testEof _testEof434: m.cs = 434 goto _testEof _testEof435: m.cs = 435 goto _testEof _testEof436: m.cs = 436 goto _testEof _testEof437: m.cs = 437 goto _testEof _testEof438: m.cs = 438 goto _testEof _testEof439: m.cs = 439 goto _testEof _testEof440: m.cs = 440 goto _testEof _testEof441: m.cs = 441 goto _testEof _testEof442: m.cs = 442 goto _testEof _testEof443: m.cs = 443 goto _testEof _testEof444: m.cs = 444 goto _testEof _testEof445: m.cs = 445 goto _testEof _testEof446: m.cs = 446 goto _testEof _testEof447: m.cs = 447 goto _testEof _testEof448: m.cs = 448 goto _testEof _testEof449: m.cs = 449 goto _testEof _testEof450: m.cs = 450 goto _testEof _testEof451: m.cs = 451 goto _testEof _testEof452: m.cs = 452 goto _testEof _testEof453: m.cs = 453 goto _testEof _testEof454: m.cs = 454 goto _testEof _testEof455: m.cs = 455 goto _testEof _testEof456: m.cs = 456 goto _testEof _testEof457: m.cs = 457 goto _testEof _testEof458: m.cs = 458 goto _testEof _testEof459: m.cs = 459 goto _testEof _testEof460: m.cs = 460 goto _testEof _testEof461: m.cs = 461 goto _testEof _testEof462: m.cs = 462 goto _testEof _testEof463: m.cs = 463 goto _testEof _testEof464: m.cs = 464 goto _testEof _testEof465: m.cs = 465 goto _testEof _testEof466: m.cs = 466 goto _testEof _testEof467: m.cs = 467 goto _testEof _testEof468: m.cs = 468 goto _testEof _testEof469: m.cs = 469 goto _testEof _testEof470: m.cs = 470 goto _testEof _testEof471: m.cs = 471 goto _testEof _testEof472: m.cs = 472 goto _testEof _testEof473: m.cs = 473 goto _testEof _testEof474: m.cs = 474 goto _testEof _testEof475: m.cs = 475 goto _testEof _testEof476: m.cs = 476 goto _testEof _testEof477: m.cs = 477 goto _testEof _testEof478: m.cs = 478 goto _testEof _testEof479: m.cs = 479 goto _testEof _testEof480: m.cs = 480 goto _testEof _testEof481: m.cs = 481 goto _testEof _testEof482: m.cs = 482 goto _testEof _testEof483: m.cs = 483 goto _testEof _testEof484: m.cs = 484 goto _testEof _testEof485: m.cs = 485 goto _testEof _testEof486: m.cs = 486 goto _testEof _testEof487: m.cs = 487 goto _testEof _testEof488: m.cs = 488 goto _testEof _testEof489: m.cs = 489 goto _testEof _testEof490: m.cs = 490 goto _testEof _testEof491: m.cs = 491 goto _testEof _testEof492: m.cs = 492 goto _testEof _testEof493: m.cs = 493 goto _testEof _testEof494: m.cs = 494 goto _testEof _testEof495: m.cs = 495 goto _testEof _testEof496: m.cs = 496 goto _testEof _testEof497: m.cs = 497 goto _testEof _testEof498: m.cs = 498 goto _testEof _testEof499: m.cs = 499 goto _testEof _testEof500: m.cs = 500 goto _testEof _testEof501: m.cs = 501 goto _testEof _testEof502: m.cs = 502 goto _testEof _testEof503: m.cs = 503 goto _testEof _testEof504: m.cs = 504 goto _testEof _testEof505: m.cs = 505 goto _testEof _testEof506: m.cs = 506 goto _testEof _testEof507: m.cs = 507 goto _testEof _testEof508: m.cs = 508 goto _testEof _testEof509: m.cs = 509 goto _testEof _testEof510: m.cs = 510 goto _testEof _testEof511: m.cs = 511 goto _testEof _testEof512: m.cs = 512 goto _testEof _testEof513: m.cs = 513 goto _testEof _testEof514: m.cs = 514 goto _testEof _testEof515: m.cs = 515 goto _testEof _testEof516: m.cs = 516 goto _testEof _testEof517: m.cs = 517 goto _testEof _testEof518: m.cs = 518 goto _testEof _testEof519: m.cs = 519 goto _testEof _testEof520: m.cs = 520 goto _testEof _testEof521: m.cs = 521 goto _testEof _testEof522: m.cs = 522 goto _testEof _testEof523: m.cs = 523 goto _testEof _testEof524: m.cs = 524 goto _testEof _testEof525: m.cs = 525 goto _testEof _testEof526: m.cs = 526 goto _testEof _testEof527: m.cs = 527 goto _testEof _testEof528: m.cs = 528 goto _testEof _testEof529: m.cs = 529 goto _testEof _testEof530: m.cs = 530 goto _testEof _testEof531: m.cs = 531 goto _testEof _testEof532: m.cs = 532 goto _testEof _testEof533: m.cs = 533 goto _testEof _testEof534: m.cs = 534 goto _testEof _testEof535: m.cs = 535 goto _testEof _testEof536: m.cs = 536 goto _testEof _testEof537: m.cs = 537 goto _testEof _testEof538: m.cs = 538 goto _testEof _testEof539: m.cs = 539 goto _testEof _testEof540: m.cs = 540 goto _testEof _testEof541: m.cs = 541 goto _testEof _testEof542: m.cs = 542 goto _testEof _testEof543: m.cs = 543 goto _testEof _testEof544: m.cs = 544 goto _testEof _testEof545: m.cs = 545 goto _testEof _testEof546: m.cs = 546 goto _testEof _testEof547: m.cs = 547 goto _testEof _testEof548: m.cs = 548 goto _testEof _testEof549: m.cs = 549 goto _testEof _testEof550: m.cs = 550 goto _testEof _testEof551: m.cs = 551 goto _testEof _testEof552: m.cs = 552 goto _testEof _testEof553: m.cs = 553 goto _testEof _testEof554: m.cs = 554 goto _testEof _testEof555: m.cs = 555 goto _testEof _testEof556: m.cs = 556 goto _testEof _testEof557: m.cs = 557 goto _testEof _testEof558: m.cs = 558 goto _testEof _testEof559: m.cs = 559 goto _testEof _testEof560: m.cs = 560 goto _testEof _testEof561: m.cs = 561 goto _testEof _testEof562: m.cs = 562 goto _testEof _testEof563: m.cs = 563 goto _testEof _testEof564: m.cs = 564 goto _testEof _testEof565: m.cs = 565 goto _testEof _testEof566: m.cs = 566 goto _testEof _testEof567: m.cs = 567 goto _testEof _testEof568: m.cs = 568 goto _testEof _testEof569: m.cs = 569 goto _testEof _testEof570: m.cs = 570 goto _testEof _testEof571: m.cs = 571 goto _testEof _testEof572: m.cs = 572 goto _testEof _testEof573: m.cs = 573 goto _testEof _testEof574: m.cs = 574 goto _testEof _testEof575: m.cs = 575 goto _testEof _testEof576: m.cs = 576 goto _testEof _testEof577: m.cs = 577 goto _testEof _testEof578: m.cs = 578 goto _testEof _testEof579: m.cs = 579 goto _testEof _testEof580: m.cs = 580 goto _testEof _testEof581: m.cs = 581 goto _testEof _testEof582: m.cs = 582 goto _testEof _testEof583: m.cs = 583 goto _testEof _testEof584: m.cs = 584 goto _testEof _testEof585: m.cs = 585 goto _testEof _testEof586: m.cs = 586 goto _testEof _testEof587: m.cs = 587 goto _testEof _testEof588: m.cs = 588 goto _testEof _testEof589: m.cs = 589 goto _testEof _testEof590: m.cs = 590 goto _testEof _testEof591: m.cs = 591 goto _testEof _testEof592: m.cs = 592 goto _testEof _testEof593: m.cs = 593 goto _testEof _testEof594: m.cs = 594 goto _testEof _testEof595: m.cs = 595 goto _testEof _testEof596: m.cs = 596 goto _testEof _testEof597: m.cs = 597 goto _testEof _testEof598: m.cs = 598 goto _testEof _testEof599: m.cs = 599 goto _testEof _testEof600: m.cs = 600 goto _testEof _testEof601: m.cs = 601 goto _testEof _testEof602: m.cs = 602 goto _testEof _testEof607: m.cs = 607 goto _testEof _testEof: { } if (m.p) == (m.eof) { switch m.cs { case 605: output.message = string(m.text()) case 1: m.err = fmt.Errorf(errPri, m.p) (m.p)-- { goto st607 } case 15, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132: m.err = fmt.Errorf(errMsgid, m.p) (m.p)-- { goto st607 } case 16: m.err = fmt.Errorf(errStructuredData, m.p) (m.p)-- { goto st607 } case 7: m.err = fmt.Errorf(errParse, m.p) (m.p)-- { goto st607 } case 5: output.version = uint16(unsafeUTF8DecimalCodePointsToInt(m.text())) m.err = fmt.Errorf(errParse, m.p) (m.p)-- { goto st607 } case 585: if t, e := time.Parse(RFC3339MICRO, string(m.text())); e != nil { m.err = fmt.Errorf("%s [col %d]", e, m.p) (m.p)-- { goto st607 } } else { output.timestamp = t output.timestampSet = true } m.err = fmt.Errorf(errParse, m.p) (m.p)-- { goto st607 } case 4: m.err = fmt.Errorf(errVersion, m.p) (m.p)-- { goto st607 } m.err = fmt.Errorf(errParse, m.p) (m.p)-- { goto st607 } case 6, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597: m.err = fmt.Errorf(errTimestamp, m.p) (m.p)-- { goto st607 } m.err = fmt.Errorf(errParse, m.p) (m.p)-- { goto st607 } case 8, 9, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560: m.err = fmt.Errorf(errHostname, m.p) (m.p)-- { goto st607 } m.err = fmt.Errorf(errParse, m.p) (m.p)-- { goto st607 } case 10, 11, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306: m.err = fmt.Errorf(errAppname, m.p) (m.p)-- { goto st607 } m.err = fmt.Errorf(errParse, m.p) (m.p)-- { goto st607 } case 12, 13, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259: m.err = fmt.Errorf(errProcid, m.p) (m.p)-- { goto st607 } m.err = fmt.Errorf(errParse, m.p) (m.p)-- { goto st607 } case 14: m.err = fmt.Errorf(errMsgid, m.p) (m.p)-- { goto st607 } m.err = fmt.Errorf(errParse, m.p) (m.p)-- { goto st607 } case 24: delete(output.structuredData, m.currentelem) if len(output.structuredData) == 0 { output.hasElements = false } m.err = fmt.Errorf(errSdID, m.p) (m.p)-- { goto st607 } m.err = fmt.Errorf(errStructuredData, m.p) (m.p)-- { goto st607 } case 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, 62, 64, 65, 66, 67, 68, 69, 70: if len(output.structuredData) > 0 { delete(output.structuredData[m.currentelem], m.currentparam) } m.err = fmt.Errorf(errSdParam, m.p) (m.p)-- { goto st607 } m.err = fmt.Errorf(errStructuredData, m.p) (m.p)-- { goto st607 } case 17, 18, 19, 20, 21, 22, 23: // If error encountered within the message rule ... if m.msgat > 0 { // Save the text until valid (m.p is where the parser has stopped) output.message = string(m.data[m.msgat:m.p]) } m.err = fmt.Errorf(errMsg, m.p) (m.p)-- { goto st607 } m.err = fmt.Errorf(errParse, m.p) (m.p)-- { goto st607 } case 604: m.pb = m.p m.msgat = m.p output.message = string(m.text()) case 25, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101: if _, ok := output.structuredData[string(m.text())]; ok { // As per RFC5424 section 6.3.2 SD-ID MUST NOT exist more than once in a message m.err = fmt.Errorf(errSdIDDuplicated, m.p) (m.p)-- { goto st607 } } else { id := string(m.text()) output.structuredData[id] = map[string]string{} output.hasElements = true m.currentelem = id } delete(output.structuredData, m.currentelem) if len(output.structuredData) == 0 { output.hasElements = false } m.err = fmt.Errorf(errSdID, m.p) (m.p)-- { goto st607 } m.err = fmt.Errorf(errStructuredData, m.p) (m.p)-- { goto st607 } case 2, 3, 600, 601, 602: m.err = fmt.Errorf(errPrival, m.p) (m.p)-- { goto st607 } m.err = fmt.Errorf(errPri, m.p) (m.p)-- { goto st607 } m.err = fmt.Errorf(errParse, m.p) (m.p)-- { goto st607 } case 598, 599: m.err = fmt.Errorf(errVersion, m.p) (m.p)-- { goto st607 } output.version = uint16(unsafeUTF8DecimalCodePointsToInt(m.text())) m.err = fmt.Errorf(errParse, m.p) (m.p)-- { goto st607 } case 60, 61, 63: m.err = fmt.Errorf(errEscape, m.p) (m.p)-- { goto st607 } if len(output.structuredData) > 0 { delete(output.structuredData[m.currentelem], m.currentparam) } m.err = fmt.Errorf(errSdParam, m.p) (m.p)-- { goto st607 } m.err = fmt.Errorf(errStructuredData, m.p) (m.p)-- { goto st607 } } } _out: { } } if m.cs < firstFinal || m.cs == enFail { if m.bestEffort && output.valid() { // An error occurred but partial parsing is on and partial message is minimally valid return output.export(), m.err } return nil, m.err } return output.export(), nil } go-syslog-2.0.0/rfc5424/machine.go.rl000066400000000000000000000217071340614351500171050ustar00rootroot00000000000000package rfc5424 import ( "time" "fmt" "github.com/influxdata/go-syslog" ) var ( errPrival = "expecting a priority value in the range 1-191 or equal to 0 [col %d]" errPri = "expecting a priority value within angle brackets [col %d]" errVersion = "expecting a version value in the range 1-999 [col %d]" errTimestamp = "expecting a RFC3339MICRO timestamp or a nil value [col %d]" errHostname = "expecting an hostname (from 1 to max 255 US-ASCII characters) or a nil value [col %d]" errAppname = "expecting an app-name (from 1 to max 48 US-ASCII characters) or a nil value [col %d]" errProcid = "expecting a procid (from 1 to max 128 US-ASCII characters) or a nil value [col %d]" errMsgid = "expecting a msgid (from 1 to max 32 US-ASCII characters) or a nil value [col %d]" errStructuredData = "expecting a structured data section containing one or more elements (`[id( key=\"value\")*]+`) or a nil value [col %d]" errSdID = "expecting a structured data element id (from 1 to max 32 US-ASCII characters; except `=`, ` `, `]`, and `\"` [col %d]" errSdIDDuplicated = "duplicate structured data element id [col %d]" errSdParam = "expecting a structured data parameter (`key=\"value\"`, both part from 1 to max 32 US-ASCII characters; key cannot contain `=`, ` `, `]`, and `\"`, while value cannot contain `]`, backslash, and `\"` unless escaped) [col %d]" errMsg = "expecting a free-form optional message in UTF-8 (starting with or without BOM) [col %d]" errEscape = "expecting chars `]`, `\"`, and `\\` to be escaped within param value [col %d]" errParse = "parsing error [col %d]" ) // RFC3339MICRO represents the timestamp format that RFC5424 mandates. const RFC3339MICRO = "2006-01-02T15:04:05.999999Z07:00" %%{ machine rfc5424; include rfc5424 "rfc5424.rl"; # unsigned alphabet alphtype uint8; action mark { m.pb = m.p } action markmsg { m.msgat = m.p } action set_prival { output.priority = uint8(unsafeUTF8DecimalCodePointsToInt(m.text())) output.prioritySet = true } action set_version { output.version = uint16(unsafeUTF8DecimalCodePointsToInt(m.text())) } action set_timestamp { if t, e := time.Parse(RFC3339MICRO, string(m.text())); e != nil { m.err = fmt.Errorf("%s [col %d]", e, m.p) fhold; fgoto fail; } else { output.timestamp = t output.timestampSet = true } } action set_hostname { output.hostname = string(m.text()) } action set_appname { output.appname = string(m.text()) } action set_procid { output.procID = string(m.text()) } action set_msgid { output.msgID = string(m.text()) } action ini_elements { output.structuredData = map[string]map[string]string{} } action set_id { if _, ok := output.structuredData[string(m.text())]; ok { // As per RFC5424 section 6.3.2 SD-ID MUST NOT exist more than once in a message m.err = fmt.Errorf(errSdIDDuplicated, m.p) fhold; fgoto fail; } else { id := string(m.text()) output.structuredData[id] = map[string]string{} output.hasElements = true m.currentelem = id } } action ini_sdparam { m.backslashat = []int{} } action add_slash { m.backslashat = append(m.backslashat, m.p) } action set_paramname { m.currentparam = string(m.text()) } action set_paramvalue { if output.hasElements { // (fixme) > what if SD-PARAM-NAME already exist for the current element (ie., current SD-ID)? // Store text text := m.text() // Strip backslashes only when there are ... if len(m.backslashat) > 0 { text = rmchars(text, m.backslashat, m.pb) } output.structuredData[m.currentelem][m.currentparam] = string(text) } } action set_msg { output.message = string(m.text()) } action err_prival { m.err = fmt.Errorf(errPrival, m.p) fhold; fgoto fail; } action err_pri { m.err = fmt.Errorf(errPri, m.p) fhold; fgoto fail; } action err_version { m.err = fmt.Errorf(errVersion, m.p) fhold; fgoto fail; } action err_timestamp { m.err = fmt.Errorf(errTimestamp, m.p) fhold; fgoto fail; } action err_hostname { m.err = fmt.Errorf(errHostname, m.p) fhold; fgoto fail; } action err_appname { m.err = fmt.Errorf(errAppname, m.p) fhold; fgoto fail; } action err_procid { m.err = fmt.Errorf(errProcid, m.p) fhold; fgoto fail; } action err_msgid { m.err = fmt.Errorf(errMsgid, m.p) fhold; fgoto fail; } action err_structureddata { m.err = fmt.Errorf(errStructuredData, m.p) fhold; fgoto fail; } action err_sdid { delete(output.structuredData, m.currentelem) if len(output.structuredData) == 0 { output.hasElements = false } m.err = fmt.Errorf(errSdID, m.p) fhold; fgoto fail; } action err_sdparam { if len(output.structuredData) > 0 { delete(output.structuredData[m.currentelem], m.currentparam) } m.err = fmt.Errorf(errSdParam, m.p) fhold; fgoto fail; } action err_msg { // If error encountered within the message rule ... if m.msgat > 0 { // Save the text until valid (m.p is where the parser has stopped) output.message = string(m.data[m.msgat:m.p]) } m.err = fmt.Errorf(errMsg, m.p) fhold; fgoto fail; } action err_escape { m.err = fmt.Errorf(errEscape, m.p) fhold; fgoto fail; } action err_parse { m.err = fmt.Errorf(errParse, m.p) fhold; fgoto fail; } nilvalue = '-'; nonzerodigit = '1'..'9'; # 1..191 privalrange = (('1' ('9' ('0'..'1'){,1} | '0'..'8' ('0'..'9'){,1}){,1}) | ('2'..'9' ('0'..'9'){,1})); # 1..191 or 0 prival = (privalrange | '0') >mark %from(set_prival) $err(err_prival); pri = ('<' prival '>') @err(err_pri); version = (nonzerodigit digit{0,2} mark %from(set_version) %eof(set_version) @err(err_version); timestamp = (nilvalue | (fulldate >mark 'T' fulltime %set_timestamp %err(set_timestamp))) @err(err_timestamp); hostname = hostnamerange >mark %set_hostname $err(err_hostname); appname = appnamerange >mark %set_appname $err(err_appname); procid = procidrange >mark %set_procid $err(err_procid); msgid = msgidrange >mark %set_msgid $err(err_msgid); header = (pri version sp timestamp sp hostname sp appname sp procid sp msgid) <>err(err_parse); # \", \], \\ escapes = (bs >add_slash toescape) $err(err_escape); # As per section 6.3.3 param value MUST NOT contain '"', '\' and ']', unless they are escaped. # A backslash '\' followed by none of the this three characters is an invalid escape sequence. # In this case, treat it as a regular backslash and the following character as a regular character (not altering the invalid sequence). paramvalue = (utf8charwodelims* escapes*)+ >mark %set_paramvalue; paramname = sdname >mark %set_paramname; sdparam = (paramname '=' dq paramvalue dq) >ini_sdparam $err(err_sdparam); # (note) > finegrained semantics of section 6.3.2 not represented here since not so useful for parsing goal sdid = sdname >mark %set_id %err(set_id) $err(err_sdid); sdelement = ('[' sdid (sp sdparam)* ']'); structureddata = nilvalue | sdelement+ >ini_elements $err(err_structureddata); msg = (bom? utf8octets) >mark >markmsg %set_msg $err(err_msg); fail := (any - [\n\r])* @err{ fgoto main; }; main := header sp structureddata (sp msg)? $err(err_parse); }%% %% write data noerror noprefix; type machine struct { data []byte cs int p, pe, eof int pb int err error currentelem string currentparam string msgat int backslashat []int bestEffort bool } // NewMachine creates a new FSM able to parse RFC5424 syslog messages. func NewMachine(options ...syslog.MachineOption) syslog.Machine { m := &machine{} for _, opt := range options { opt(m) } %% access m.; %% variable p m.p; %% variable pe m.pe; %% variable eof m.eof; %% variable data m.data; return m } func (m *machine) WithBestEffort() { m.bestEffort = true } // HasBestEffort tells whether the receiving machine has best effort mode on or off. func (m *machine) HasBestEffort() bool { return m.bestEffort } // Err returns the error that occurred on the last call to Parse. // // If the result is nil, then the line was parsed successfully. func (m *machine) Err() error { return m.err } func (m *machine) text() []byte { return m.data[m.pb:m.p] } // Parse parses the input byte array as a RFC5424 syslog message. // // When a valid RFC5424 syslog message is given it outputs its structured representation. // If the parsing detects an error it returns it with the position where the error occurred. // // It can also partially parse input messages returning a partially valid structured representation // and the error that stopped the parsing. func (m *machine) Parse(input []byte) (syslog.Message, error) { m.data = input m.p = 0 m.pb = 0 m.msgat = 0 m.backslashat = []int{} m.pe = len(input) m.eof = len(input) m.err = nil output := &syslogMessage{} %% write init; %% write exec; if m.cs < first_final || m.cs == en_fail { if m.bestEffort && output.valid() { // An error occurred but partial parsing is on and partial message is minimally valid return output.export(), m.err } return nil, m.err } return output.export(), nil }go-syslog-2.0.0/rfc5424/machine_test.go000066400000000000000000002315701340614351500175310ustar00rootroot00000000000000package rfc5424 import ( "fmt" "math/rand" "strings" "testing" "time" "github.com/influxdata/go-syslog" "github.com/stretchr/testify/assert" ) func random(min, max int) int { return rand.Intn(max-min) + min } func timeParse(layout, value string) *time.Time { t, _ := time.Parse(layout, value) return &t } func getStringAddress(str string) *string { return &str } func getUint8Address(x uint8) *uint8 { return &x } func rxpad(str string, lim int) string { str = str + strings.Repeat(" ", lim) return str[:lim] } type testCase struct { input []byte valid bool value syslog.Message errorString string partialValue syslog.Message } var testCases = []testCase{ // Invalid, empty input { []byte(""), false, nil, "expecting a priority value within angle brackets [col 0]", nil, }, // Invalid, multiple syslog messages on multiple lines { []byte(`<1>1 - - - - - - <2>1 - - - - - -`), false, nil, "parsing error [col 16]", &SyslogMessage{ priority: getUint8Address(1), severity: getUint8Address(1), facility: getUint8Address(0), version: 1, }, }, // Invalid, new lines allowed only within message part { []byte("<1>1 - \nhostname - - - -"), false, nil, "expecting an hostname (from 1 to max 255 US-ASCII characters) or a nil value [col 7]", &SyslogMessage{ facility: getUint8Address(0), severity: getUint8Address(1), priority: getUint8Address(1), version: 1, }, }, { []byte("<1>1 - host\x0Aname - - - -"), false, nil, "expecting an hostname (from 1 to max 255 US-ASCII characters) or a nil value [col 11]", &SyslogMessage{ facility: getUint8Address(0), severity: getUint8Address(1), priority: getUint8Address(1), version: 1, }, }, { []byte("<1>1 - - \nan - - -"), false, nil, "expecting an app-name (from 1 to max 48 US-ASCII characters) or a nil value [col 9]", &SyslogMessage{ facility: getUint8Address(0), severity: getUint8Address(1), priority: getUint8Address(1), version: 1, }, }, { []byte("<1>1 - - a\x0An - - -"), false, nil, "expecting an app-name (from 1 to max 48 US-ASCII characters) or a nil value [col 10]", &SyslogMessage{ facility: getUint8Address(0), severity: getUint8Address(1), priority: getUint8Address(1), version: 1, }, }, { []byte("<1>1 - - - \npid - -"), false, nil, "expecting a procid (from 1 to max 128 US-ASCII characters) or a nil value [col 11]", &SyslogMessage{ facility: getUint8Address(0), severity: getUint8Address(1), priority: getUint8Address(1), version: 1, }, }, { []byte("<1>1 - - - p\x0Aid - -"), false, nil, "expecting a procid (from 1 to max 128 US-ASCII characters) or a nil value [col 12]", &SyslogMessage{ facility: getUint8Address(0), severity: getUint8Address(1), priority: getUint8Address(1), version: 1, }, }, { []byte("<1>1 - - - - \nmid -"), false, nil, "expecting a msgid (from 1 to max 32 US-ASCII characters) or a nil value [col 13]", &SyslogMessage{ facility: getUint8Address(0), severity: getUint8Address(1), priority: getUint8Address(1), version: 1, }, }, { []byte("<1>1 - - - - m\x0Aid -"), false, nil, "expecting a msgid (from 1 to max 32 US-ASCII characters) or a nil value [col 14]", &SyslogMessage{ facility: getUint8Address(0), severity: getUint8Address(1), priority: getUint8Address(1), version: 1, }, }, // Invalid, malformed pri { []byte("(190>122 2018-11-22"), false, nil, "expecting a priority value within angle brackets [col 0]", nil, }, // Malformed pri outputs wrong error { []byte("<87]123 -"), false, nil, // (note) > machine can only understand that the ] char is not in the reachable states (just as any number would be in this situation), so it gives the error about the priority val submachine, not about the pri submachine (ie., ) "expecting a priority value in the range 1-191 or equal to 0 [col 3]", nil, // nil since cannot reach version }, // Invalid, missing pri { []byte("122 - - - - - -"), false, nil, "expecting a priority value within angle brackets [col 0]", nil, }, // Invalid, missing prival { []byte("<>122 2018-11-22"), false, nil, "expecting a priority value in the range 1-191 or equal to 0 [col 1]", nil, }, // Invalid, prival with too much digits { []byte("<19000021>122 2018-11-22"), false, nil, "expecting a priority value in the range 1-191 or equal to 0 [col 4]", nil, // no valid partial message since was not able to reach and extract version (which is mandatory for a valid message) }, // Invalid, prival too high { []byte("<192>122 2018-11-22"), false, nil, "expecting a priority value in the range 1-191 or equal to 0 [col 3]", nil, }, // Invalid, 0 starting prival { []byte("<002>122 2018-11-22"), false, nil, "expecting a priority value in the range 1-191 or equal to 0 [col 2]", nil, }, // Invalid, non numeric prival { []byte("122 2018-11-22"), false, nil, "expecting a priority value in the range 1-191 or equal to 0 [col 1]", nil, }, // Invalid, missing version { []byte("<100> 2018-11-22"), false, nil, "expecting a version value in the range 1-999 [col 5]", nil, }, // Invalid, 0 version { []byte("<103>0 2018-11-22"), false, nil, "expecting a version value in the range 1-999 [col 5]", nil, }, // Invalid, out of range version { []byte("<101>1000 2018-11-22"), false, nil, "expecting a version value in the range 1-999 [col 8]", &SyslogMessage{ priority: getUint8Address(101), facility: getUint8Address(12), severity: getUint8Address(5), version: 100, }, }, // Invalid, truncated after version whitespace { []byte("<1>2 "), false, nil, "expecting a RFC3339MICRO timestamp or a nil value [col 5]", &SyslogMessage{ priority: getUint8Address(1), facility: getUint8Address(0), severity: getUint8Address(1), version: 2, }, }, // Invalid, truncated after version { []byte("<1>1"), false, nil, "parsing error [col 4]", &SyslogMessage{ priority: getUint8Address(1), facility: getUint8Address(0), severity: getUint8Address(1), version: 1, }, }, // fixme(leodido) > when space after multi-digit version is missing, the version error handler launches (should not) // { // []byte("<3>22"), // false, // nil, // "parsing error [col 6]", // (&SyslogMessage{}).SetPriority(3).SetVersion(22), // }, // Invalid, non numeric (also partially) version { []byte("<1>3a"), false, nil, "parsing error [col 4]", &SyslogMessage{ priority: getUint8Address(1), facility: getUint8Address(0), severity: getUint8Address(1), version: 3, }, }, { []byte("<1>4a "), false, nil, "parsing error [col 4]", &SyslogMessage{ priority: getUint8Address(1), facility: getUint8Address(0), severity: getUint8Address(1), version: 4, }, }, { []byte("<102>abc 2018-11-22"), false, nil, "expecting a version value in the range 1-999 [col 5]", nil, }, // Invalid, letter rather than timestamp { []byte("<1>5 A"), false, nil, "expecting a RFC3339MICRO timestamp or a nil value [col 5]", &SyslogMessage{ priority: getUint8Address(1), facility: getUint8Address(0), severity: getUint8Address(1), version: 5, }, }, // Invalid, timestamp T and Z must be uppercase { []byte(`<29>1 2006-01-02t15:04:05Z - - - - -`), false, nil, "expecting a RFC3339MICRO timestamp or a nil value [col 16]", &SyslogMessage{ facility: getUint8Address(3), severity: getUint8Address(5), priority: getUint8Address(29), version: 1, }, }, { []byte(`<29>2 2006-01-02T15:04:05z - - - - -`), false, nil, "expecting a RFC3339MICRO timestamp or a nil value [col 25]", &SyslogMessage{ facility: getUint8Address(3), severity: getUint8Address(5), priority: getUint8Address(29), version: 2, }, }, // Invalid, wrong year { []byte("<101>123 2"), false, nil, "expecting a RFC3339MICRO timestamp or a nil value [col 10]", &SyslogMessage{ priority: getUint8Address(101), facility: getUint8Address(12), severity: getUint8Address(5), version: 123, }, }, { []byte("<101>124 20"), false, nil, "expecting a RFC3339MICRO timestamp or a nil value [col 11]", &SyslogMessage{ priority: getUint8Address(101), facility: getUint8Address(12), severity: getUint8Address(5), version: 124, }, }, { []byte("<101>125 201"), false, nil, "expecting a RFC3339MICRO timestamp or a nil value [col 12]", &SyslogMessage{ priority: getUint8Address(101), facility: getUint8Address(12), severity: getUint8Address(5), version: 125, }, }, { []byte("<101>125 2013"), false, nil, "expecting a RFC3339MICRO timestamp or a nil value [col 13]", &SyslogMessage{ priority: getUint8Address(101), facility: getUint8Address(12), severity: getUint8Address(5), version: 125, }, }, { []byte("<101>126 2013-"), false, nil, "expecting a RFC3339MICRO timestamp or a nil value [col 14]", &SyslogMessage{ priority: getUint8Address(101), facility: getUint8Address(12), severity: getUint8Address(5), version: 126, }, }, { []byte("<101>122 201-11-22"), false, nil, "expecting a RFC3339MICRO timestamp or a nil value [col 12]", &SyslogMessage{ priority: getUint8Address(101), facility: getUint8Address(12), severity: getUint8Address(5), version: 122, }, }, { []byte("<101>189 0-11-22"), false, nil, "expecting a RFC3339MICRO timestamp or a nil value [col 10]", &SyslogMessage{ priority: getUint8Address(101), facility: getUint8Address(12), severity: getUint8Address(5), version: 189, }, }, // Invalid, wrong month { []byte("<101>122 2018-112-22"), false, nil, "expecting a RFC3339MICRO timestamp or a nil value [col 16]", &SyslogMessage{ priority: getUint8Address(101), facility: getUint8Address(12), severity: getUint8Address(5), version: 122, }, }, // Invalid, wrong day { []byte("<101>123 2018-02-32"), false, nil, "expecting a RFC3339MICRO timestamp or a nil value [col 18]", &SyslogMessage{ priority: getUint8Address(101), facility: getUint8Address(12), severity: getUint8Address(5), version: 123, }, }, // Invalid, wrong hour { []byte("<101>124 2018-02-01:25:15Z"), false, nil, "expecting a RFC3339MICRO timestamp or a nil value [col 19]", &SyslogMessage{ priority: getUint8Address(101), facility: getUint8Address(12), severity: getUint8Address(5), version: 124, }, }, // Invalid, wrong minutes { []byte("<101>125 2003-09-29T22:99:16Z"), false, nil, "expecting a RFC3339MICRO timestamp or a nil value [col 23]", &SyslogMessage{ priority: getUint8Address(101), facility: getUint8Address(12), severity: getUint8Address(5), version: 125, }, }, // Invalid, wrong seconds { []byte("<101>126 2003-09-29T22:09:99Z"), false, nil, "expecting a RFC3339MICRO timestamp or a nil value [col 26]", &SyslogMessage{ priority: getUint8Address(101), facility: getUint8Address(12), severity: getUint8Address(5), version: 126, }, }, // Invalid, wrong sec fraction { []byte("<101>127 2003-09-29T22:09:01.000000000009Z"), false, nil, "expecting a RFC3339MICRO timestamp or a nil value [col 35]", &SyslogMessage{ priority: getUint8Address(101), facility: getUint8Address(12), severity: getUint8Address(5), version: 127, }, }, { []byte("<101>128 2003-09-29T22:09:01.Z"), false, nil, "expecting a RFC3339MICRO timestamp or a nil value [col 29]", &SyslogMessage{ priority: getUint8Address(101), facility: getUint8Address(12), severity: getUint8Address(5), version: 128, }, }, { []byte("<101>28 2003-09-29T22:09:01."), false, nil, "expecting a RFC3339MICRO timestamp or a nil value [col 28]", &SyslogMessage{ priority: getUint8Address(101), facility: getUint8Address(12), severity: getUint8Address(5), version: 28, }, }, // Invalid, wrong time offset { []byte("<101>129 2003-09-29T22:09:01A"), false, nil, "expecting a RFC3339MICRO timestamp or a nil value [col 28]", &SyslogMessage{ priority: getUint8Address(101), facility: getUint8Address(12), severity: getUint8Address(5), version: 129, }, }, { []byte("<101>130 2003-08-24T05:14:15.000003-24:00"), false, nil, "expecting a RFC3339MICRO timestamp or a nil value [col 37]", &SyslogMessage{ priority: getUint8Address(101), facility: getUint8Address(12), severity: getUint8Address(5), version: 130, }, }, { []byte("<101>131 2003-08-24T05:14:15.000003-60:00"), false, nil, "expecting a RFC3339MICRO timestamp or a nil value [col 36]", &SyslogMessage{ priority: getUint8Address(101), facility: getUint8Address(12), severity: getUint8Address(5), version: 131, }, }, { []byte("<101>132 2003-08-24T05:14:15.000003-07:61"), false, nil, "expecting a RFC3339MICRO timestamp or a nil value [col 39]", &SyslogMessage{ priority: getUint8Address(101), facility: getUint8Address(12), severity: getUint8Address(5), version: 132, }, }, { []byte(`<29>1 2006-01-02T15:04:05Z+07:00 - - - - -`), false, nil, "parsing error [col 26]", // after the Z (valid and complete timestamp) it searches for a whitespace &SyslogMessage{ facility: getUint8Address(3), severity: getUint8Address(5), priority: getUint8Address(29), version: 1, timestamp: timeParse(RFC3339MICRO, "2006-01-02T15:04:05Z"), }, }, // Invalid, non existing dates { []byte("<101>11 2003-09-31T22:14:15.003Z"), false, nil, "parsing time \"2003-09-31T22:14:15.003Z\": day out of range [col 32]", &SyslogMessage{ priority: getUint8Address(101), facility: getUint8Address(12), severity: getUint8Address(5), version: 11, }, }, { []byte("<101>12 2003-09-31T22:14:16Z"), false, nil, "parsing time \"2003-09-31T22:14:16Z\": day out of range [col 28]", &SyslogMessage{ priority: getUint8Address(101), facility: getUint8Address(12), severity: getUint8Address(5), version: 12, }, }, { []byte("<101>12 2018-02-29T22:14:16+01:00"), false, nil, "parsing time \"2018-02-29T22:14:16+01:00\": day out of range [col 33]", &SyslogMessage{ priority: getUint8Address(101), facility: getUint8Address(12), severity: getUint8Address(5), version: 12, }, }, // Invalid, hostname too long { []byte("<1>1 - abcdefghilmnopqrstuvzabcdefghilmnopqrstuvzabcdefghilmnopqrstuvzabcdefghilmnopqrstuvzabcdefghilmnopqrstuvzabcdefghilmnopqrstuvzabcdefghilmnopqrstuvzabcdefghilmnopqrstuvzabcdefghilmnopqrstuvzabcdefghilmnopqrstuvzabcdefghilmnopqrstuvzabcdefghilmnopqrstuvzabcX - - - -"), false, nil, "expecting an hostname (from 1 to max 255 US-ASCII characters) or a nil value [col 262]", &SyslogMessage{ priority: getUint8Address(1), facility: getUint8Address(0), severity: getUint8Address(1), version: 1, }, }, { []byte("<1>1 2003-09-29T22:14:16Z abcdefghilmnopqrstuvzabcdefghilmnopqrstuvzabcdefghilmnopqrstuvzabcdefghilmnopqrstuvzabcdefghilmnopqrstuvzabcdefghilmnopqrstuvzabcdefghilmnopqrstuvzabcdefghilmnopqrstuvzabcdefghilmnopqrstuvzabcdefghilmnopqrstuvzabcdefghilmnopqrstuvzabcdefghilmnopqrstuvzabcX - - - -"), false, nil, "expecting an hostname (from 1 to max 255 US-ASCII characters) or a nil value [col 281]", &SyslogMessage{ priority: getUint8Address(1), facility: getUint8Address(0), severity: getUint8Address(1), version: 1, timestamp: timeParse(RFC3339MICRO, "2003-09-29T22:14:16Z"), }, }, // Invalid, appname too long { []byte("<1>1 - - abcdefghilmnopqrstuvzabcdefghilmnopqrstuvzabcdefX - - -"), false, nil, "expecting an app-name (from 1 to max 48 US-ASCII characters) or a nil value [col 57]", &SyslogMessage{ priority: getUint8Address(1), facility: getUint8Address(0), severity: getUint8Address(1), version: 1, }, }, { []byte("<1>1 2003-09-29T22:14:16Z - abcdefghilmnopqrstuvzabcdefghilmnopqrstuvzabcdefX - - -"), false, nil, "expecting an app-name (from 1 to max 48 US-ASCII characters) or a nil value [col 76]", &SyslogMessage{ priority: getUint8Address(1), facility: getUint8Address(0), severity: getUint8Address(1), version: 1, timestamp: timeParse(RFC3339MICRO, "2003-09-29T22:14:16Z"), }, }, { []byte("<1>1 - host abcdefghilmnopqrstuvzabcdefghilmnopqrstuvzabcdefX - - -"), false, nil, "expecting an app-name (from 1 to max 48 US-ASCII characters) or a nil value [col 60]", &SyslogMessage{ priority: getUint8Address(1), facility: getUint8Address(0), severity: getUint8Address(1), version: 1, hostname: getStringAddress("host"), }, }, { []byte("<1>1 2003-09-29T22:14:16Z host abcdefghilmnopqrstuvzabcdefghilmnopqrstuvzabcdefX - - -"), false, nil, "expecting an app-name (from 1 to max 48 US-ASCII characters) or a nil value [col 79]", &SyslogMessage{ priority: getUint8Address(1), facility: getUint8Address(0), severity: getUint8Address(1), version: 1, timestamp: timeParse(RFC3339MICRO, "2003-09-29T22:14:16Z"), hostname: getStringAddress("host"), }, }, // Invalid, procid too long { []byte("<1>1 - - - abcdefghilmnopqrstuvzabcdefghilmnopqrstuvzabcdefghilmnopqrstuvzabcdefghilmnopqrstuvzabcdefghilmnopqrstuvzabcdefghilmnopqrstuvzabX - -"), false, nil, "expecting a procid (from 1 to max 128 US-ASCII characters) or a nil value [col 139]", &SyslogMessage{ priority: getUint8Address(1), facility: getUint8Address(0), severity: getUint8Address(1), version: 1, }, }, // Invalid, msgid too long { []byte("<1>1 - - - - abcdefghilmnopqrstuvzabcdefghilmX -"), false, nil, "expecting a msgid (from 1 to max 32 US-ASCII characters) or a nil value [col 45]", &SyslogMessage{ priority: getUint8Address(1), facility: getUint8Address(0), severity: getUint8Address(1), version: 1, }, }, // Not print US-ASCII chars for hostname, appname, procid, and msgid { []byte("<1>1 - - - - -"), false, nil, "expecting an hostname (from 1 to max 255 US-ASCII characters) or a nil value [col 7]", &SyslogMessage{ priority: getUint8Address(1), facility: getUint8Address(0), severity: getUint8Address(1), version: 1, }, }, { []byte("<1>1 - - - - -"), false, nil, "expecting an app-name (from 1 to max 48 US-ASCII characters) or a nil value [col 9]", &SyslogMessage{ priority: getUint8Address(1), facility: getUint8Address(0), severity: getUint8Address(1), version: 1, }, }, { []byte("<1>1 - - - - -"), false, nil, "expecting a procid (from 1 to max 128 US-ASCII characters) or a nil value [col 11]", &SyslogMessage{ priority: getUint8Address(1), facility: getUint8Address(0), severity: getUint8Address(1), version: 1, }, }, { []byte("<1>1 - - - - -"), false, nil, "expecting a msgid (from 1 to max 32 US-ASCII characters) or a nil value [col 13]", &SyslogMessage{ priority: getUint8Address(1), facility: getUint8Address(0), severity: getUint8Address(1), version: 1, }, }, // Invalid, with malformed structured data { []byte("<1>1 - - - - - X"), false, nil, "expecting a structured data section containing one or more elements (`[id( key=\"value\")*]+`) or a nil value [col 15]", &SyslogMessage{ priority: getUint8Address(1), facility: getUint8Address(0), severity: getUint8Address(1), version: 1, }, }, // Invalid, with empty structured data { []byte("<1>1 - - - - - []"), false, nil, "expecting a structured data element id (from 1 to max 32 US-ASCII characters; except `=`, ` `, `]`, and `\"` [col 16]", &SyslogMessage{ priority: getUint8Address(1), facility: getUint8Address(0), severity: getUint8Address(1), version: 1, structuredData: nil, }, }, // Invalid, with structured data id containing space { []byte("<1>1 - - - - - [ ]"), false, nil, "expecting a structured data element id (from 1 to max 32 US-ASCII characters; except `=`, ` `, `]`, and `\"` [col 16]", &SyslogMessage{ priority: getUint8Address(1), facility: getUint8Address(0), severity: getUint8Address(1), version: 1, structuredData: nil, }, }, // Invalid, with structured data id containing = { []byte("<1>1 - - - - - [=]"), false, nil, "expecting a structured data element id (from 1 to max 32 US-ASCII characters; except `=`, ` `, `]`, and `\"` [col 16]", &SyslogMessage{ priority: getUint8Address(1), facility: getUint8Address(0), severity: getUint8Address(1), version: 1, structuredData: nil, }, }, // Invalid, with structured data id containing ] { []byte("<1>1 - - - - - []]"), false, nil, "expecting a structured data element id (from 1 to max 32 US-ASCII characters; except `=`, ` `, `]`, and `\"` [col 16]", &SyslogMessage{ priority: getUint8Address(1), facility: getUint8Address(0), severity: getUint8Address(1), version: 1, structuredData: nil, }, }, // Invalid, with structured data id containing " { []byte(`<1>1 - - - - - ["]`), false, nil, "expecting a structured data element id (from 1 to max 32 US-ASCII characters; except `=`, ` `, `]`, and `\"` [col 16]", &SyslogMessage{ priority: getUint8Address(1), facility: getUint8Address(0), severity: getUint8Address(1), version: 1, structuredData: nil, }, }, // Invalid, too long structured data id { []byte(`<1>1 - - - - - [abcdefghilmnopqrstuvzabcdefghilmX]`), false, nil, "expecting a structured data element id (from 1 to max 32 US-ASCII characters; except `=`, ` `, `]`, and `\"` [col 48]", &SyslogMessage{ priority: getUint8Address(1), facility: getUint8Address(0), severity: getUint8Address(1), version: 1, structuredData: nil, }, }, // Invalid, too long structured data param key { []byte(`<1>1 - - - - - [id abcdefghilmnopqrstuvzabcdefghilmX="val"]`), false, nil, "expecting a structured data parameter (`key=\"value\"`, both part from 1 to max 32 US-ASCII characters; key cannot contain `=`, ` `, `]`, and `\"`, while value cannot contain `]`, backslash, and `\"` unless escaped) [col 51]", &SyslogMessage{ priority: getUint8Address(1), facility: getUint8Address(0), severity: getUint8Address(1), version: 1, structuredData: &map[string]map[string]string{ "id": {}, }, }, }, // Valid, minimal { []byte("<1>1 - - - - - -"), true, &SyslogMessage{ facility: getUint8Address(0), severity: getUint8Address(1), priority: getUint8Address(1), version: 1, }, "", nil, }, { []byte("<0>1 - - - - - -"), true, &SyslogMessage{ priority: getUint8Address(0), facility: getUint8Address(0), severity: getUint8Address(0), version: 1, }, "", nil, }, // Valid, average message { []byte(`<29>1 2016-02-21T04:32:57+00:00 web1 someservice - - [origin x-service="someservice"][meta sequenceId="14125553"] 127.0.0.1 - - 1456029177 "GET /v1/ok HTTP/1.1" 200 145 "-" "hacheck 0.9.0" 24306 127.0.0.1:40124 575`), true, &SyslogMessage{ facility: getUint8Address(3), severity: getUint8Address(5), priority: getUint8Address(29), version: 1, timestamp: timeParse(RFC3339MICRO, "2016-02-21T04:32:57+00:00"), hostname: getStringAddress("web1"), appname: getStringAddress("someservice"), structuredData: &map[string]map[string]string{ "origin": { "x-service": "someservice", }, "meta": { "sequenceId": "14125553", }, }, message: getStringAddress(`127.0.0.1 - - 1456029177 "GET /v1/ok HTTP/1.1" 200 145 "-" "hacheck 0.9.0" 24306 127.0.0.1:40124 575`), }, "", nil, }, // Valid, hostname, appname, procid, msgid can contain dashes { []byte("<1>100 - host-name - - - -"), true, &SyslogMessage{ facility: getUint8Address(0), severity: getUint8Address(1), priority: getUint8Address(1), version: 100, hostname: getStringAddress("host-name"), }, "", nil, }, { []byte("<1>101 - host-name app-name - - -"), true, &SyslogMessage{ facility: getUint8Address(0), severity: getUint8Address(1), priority: getUint8Address(1), version: 101, hostname: getStringAddress("host-name"), appname: getStringAddress("app-name"), }, "", nil, }, { []byte("<1>102 - host-name app-name proc-id - -"), true, &SyslogMessage{ facility: getUint8Address(0), severity: getUint8Address(1), priority: getUint8Address(1), version: 102, hostname: getStringAddress("host-name"), appname: getStringAddress("app-name"), procID: getStringAddress("proc-id"), }, "", nil, }, { []byte("<1>103 - host-name app-name proc-id msg-id -"), true, &SyslogMessage{ facility: getUint8Address(0), severity: getUint8Address(1), priority: getUint8Address(1), version: 103, hostname: getStringAddress("host-name"), appname: getStringAddress("app-name"), procID: getStringAddress("proc-id"), msgID: getStringAddress("msg-id"), }, "", nil, }, // Valid, w/0 structured data and w/o message, with other fields all max length { []byte("<191>999 2018-12-31T23:59:59.999999-23:59 abcdefghilmnopqrstuvzabcdefghilmnopqrstuvzabcdefghilmnopqrstuvzabcdefghilmnopqrstuvzabcdefghilmnopqrstuvzabcdefghilmnopqrstuvzabcdefghilmnopqrstuvzabcdefghilmnopqrstuvzabcdefghilmnopqrstuvzabcdefghilmnopqrstuvzabcdefghilmnopqrstuvzabcdefghilmnopqrstuvzabc abcdefghilmnopqrstuvzabcdefghilmnopqrstuvzabcdef abcdefghilmnopqrstuvzabcdefghilmnopqrstuvzabcdefghilmnopqrstuvzabcdefghilmnopqrstuvzabcdefghilmnopqrstuvzabcdefghilmnopqrstuvzab abcdefghilmnopqrstuvzabcdefghilm -"), true, &SyslogMessage{ priority: getUint8Address(191), facility: getUint8Address(23), severity: getUint8Address(7), version: 999, timestamp: timeParse(RFC3339MICRO, "2018-12-31T23:59:59.999999-23:59"), hostname: getStringAddress("abcdefghilmnopqrstuvzabcdefghilmnopqrstuvzabcdefghilmnopqrstuvzabcdefghilmnopqrstuvzabcdefghilmnopqrstuvzabcdefghilmnopqrstuvzabcdefghilmnopqrstuvzabcdefghilmnopqrstuvzabcdefghilmnopqrstuvzabcdefghilmnopqrstuvzabcdefghilmnopqrstuvzabcdefghilmnopqrstuvzabc"), appname: getStringAddress("abcdefghilmnopqrstuvzabcdefghilmnopqrstuvzabcdef"), procID: getStringAddress("abcdefghilmnopqrstuvzabcdefghilmnopqrstuvzabcdefghilmnopqrstuvzabcdefghilmnopqrstuvzabcdefghilmnopqrstuvzabcdefghilmnopqrstuvzab"), msgID: getStringAddress("abcdefghilmnopqrstuvzabcdefghilm"), }, "", nil, }, // Valid, all fields max length, with structured data and message { []byte(`<191>999 2018-12-31T23:59:59.999999-23:59 abcdefghilmnopqrstuvzabcdefghilmnopqrstuvzabcdefghilmnopqrstuvzabcdefghilmnopqrstuvzabcdefghilmnopqrstuvzabcdefghilmnopqrstuvzabcdefghilmnopqrstuvzabcdefghilmnopqrstuvzabcdefghilmnopqrstuvzabcdefghilmnopqrstuvzabcdefghilmnopqrstuvzabcdefghilmnopqrstuvzabc abcdefghilmnopqrstuvzabcdefghilmnopqrstuvzabcdef abcdefghilmnopqrstuvzabcdefghilmnopqrstuvzabcdefghilmnopqrstuvzabcdefghilmnopqrstuvzabcdefghilmnopqrstuvzabcdefghilmnopqrstuvzab abcdefghilmnopqrstuvzabcdefghilm [an@id key1="val1" key2="val2"][another@id key1="val1"] Some message "GET"`), true, &SyslogMessage{ priority: getUint8Address(191), facility: getUint8Address(23), severity: getUint8Address(7), version: 999, timestamp: timeParse(RFC3339MICRO, "2018-12-31T23:59:59.999999-23:59"), hostname: getStringAddress("abcdefghilmnopqrstuvzabcdefghilmnopqrstuvzabcdefghilmnopqrstuvzabcdefghilmnopqrstuvzabcdefghilmnopqrstuvzabcdefghilmnopqrstuvzabcdefghilmnopqrstuvzabcdefghilmnopqrstuvzabcdefghilmnopqrstuvzabcdefghilmnopqrstuvzabcdefghilmnopqrstuvzabcdefghilmnopqrstuvzabc"), appname: getStringAddress("abcdefghilmnopqrstuvzabcdefghilmnopqrstuvzabcdef"), procID: getStringAddress("abcdefghilmnopqrstuvzabcdefghilmnopqrstuvzabcdefghilmnopqrstuvzabcdefghilmnopqrstuvzabcdefghilmnopqrstuvzabcdefghilmnopqrstuvzab"), msgID: getStringAddress("abcdefghilmnopqrstuvzabcdefghilm"), structuredData: &map[string]map[string]string{ "an@id": { "key1": "val1", "key2": "val2", }, "another@id": { "key1": "val1", }, }, message: getStringAddress(`Some message "GET"`), }, "", nil, }, // Valid, w/o structure data, w/0 procid { []byte("<34>1 2003-10-11T22:14:15.003Z mymachine.example.com su - ID47 - BOM'su root' failed for lonvick on /dev/pts/8"), true, &SyslogMessage{ facility: getUint8Address(4), severity: getUint8Address(2), priority: getUint8Address(34), version: 1, timestamp: timeParse(RFC3339MICRO, "2003-10-11T22:14:15.003Z"), hostname: getStringAddress("mymachine.example.com"), appname: getStringAddress("su"), procID: nil, msgID: getStringAddress("ID47"), structuredData: nil, message: getStringAddress("BOM'su root' failed for lonvick on /dev/pts/8"), }, "", nil, }, // Valid, w/o structure data, w/o timestamp { []byte("<187>222 - mymachine.example.com su - ID47 - 'su root' failed for lonvick on /dev/pts/8"), true, &SyslogMessage{ facility: getUint8Address(23), severity: getUint8Address(3), priority: getUint8Address(187), version: 222, timestamp: nil, hostname: getStringAddress("mymachine.example.com"), appname: getStringAddress("su"), procID: nil, msgID: getStringAddress("ID47"), structuredData: nil, message: getStringAddress("'su root' failed for lonvick on /dev/pts/8"), }, "", nil, }, // Valid, w/o structure data, w/o msgid { []byte("<165>1 2003-08-24T05:14:15.000003-07:00 192.0.2.1 myproc 8710 - - %% Time to make the do-nuts."), true, &SyslogMessage{ facility: getUint8Address(20), severity: getUint8Address(5), priority: getUint8Address(165), version: 1, timestamp: timeParse(RFC3339MICRO, "2003-08-24T05:14:15.000003-07:00"), hostname: getStringAddress("192.0.2.1"), appname: getStringAddress("myproc"), procID: getStringAddress("8710"), msgID: nil, structuredData: nil, message: getStringAddress("%% Time to make the do-nuts."), }, "", nil, }, // Valid, w/o structure data, w/o hostname, w/o appname, w/o procid, w/o msgid, w/o msg { []byte("<165>2 2003-08-24T05:14:15.000003-07:00 - - - - -"), true, &SyslogMessage{ facility: getUint8Address(20), severity: getUint8Address(5), priority: getUint8Address(165), version: 2, timestamp: timeParse(RFC3339MICRO, "2003-08-24T05:14:15.000003-07:00"), hostname: nil, appname: nil, procID: nil, msgID: nil, structuredData: nil, message: nil, }, "", nil, }, // Valid, w/o structure data, w/o hostname, w/o appname, w/o procid, w/o msgid, empty msg { []byte("<165>222 2003-08-24T05:14:15.000003-07:00 - - - - - "), true, &SyslogMessage{ facility: getUint8Address(20), severity: getUint8Address(5), priority: getUint8Address(165), version: 222, timestamp: timeParse(RFC3339MICRO, "2003-08-24T05:14:15.000003-07:00"), hostname: nil, appname: nil, procID: nil, msgID: nil, structuredData: nil, message: nil, }, "", nil, }, // Valid, with structured data is, w/o structured data params { []byte("<78>1 2016-01-15T00:04:01+00:00 host1 CROND 10391 - [sdid] some_message"), true, &SyslogMessage{ facility: getUint8Address(9), severity: getUint8Address(6), priority: getUint8Address(78), version: 1, timestamp: timeParse(RFC3339MICRO, "2016-01-15T00:04:01+00:00"), hostname: getStringAddress("host1"), appname: getStringAddress("CROND"), procID: getStringAddress("10391"), msgID: nil, structuredData: &map[string]map[string]string{ "sdid": {}, }, message: getStringAddress("some_message"), }, "", nil, }, // Valid, with structured data id, with structured data params { []byte(`<78>1 2016-01-15T00:04:01+00:00 host1 CROND 10391 - [sdid x="⌘"] some_message`), true, &SyslogMessage{ facility: getUint8Address(9), severity: getUint8Address(6), priority: getUint8Address(78), version: 1, timestamp: timeParse(RFC3339MICRO, "2016-01-15T00:04:01+00:00"), hostname: getStringAddress("host1"), appname: getStringAddress("CROND"), procID: getStringAddress("10391"), msgID: nil, structuredData: &map[string]map[string]string{ "sdid": { "x": "⌘", }, }, message: getStringAddress("some_message"), }, "", nil, }, // Valid, with structured data is, with structured data params { []byte(`<78>2 2016-01-15T00:04:01+00:00 host1 CROND 10391 - [sdid x="hey \\u2318 hey"] some_message`), true, &SyslogMessage{ facility: getUint8Address(9), severity: getUint8Address(6), priority: getUint8Address(78), version: 2, timestamp: timeParse(RFC3339MICRO, "2016-01-15T00:04:01+00:00"), hostname: getStringAddress("host1"), appname: getStringAddress("CROND"), procID: getStringAddress("10391"), msgID: nil, structuredData: &map[string]map[string]string{ "sdid": { "x": `hey \u2318 hey`, }, }, message: getStringAddress("some_message"), }, "", nil, }, // Valid, with (escaped) backslash within structured data param value { []byte(`<29>50 2016-01-15T01:00:43Z hn S - - [meta es="\\valid"] 127.0.0.1 - - 1452819643 "GET"`), true, &SyslogMessage{ priority: getUint8Address(29), facility: getUint8Address(3), severity: getUint8Address(5), version: 50, timestamp: timeParse(RFC3339MICRO, "2016-01-15T01:00:43Z"), hostname: getStringAddress("hn"), appname: getStringAddress("S"), structuredData: &map[string]map[string]string{ "meta": { "es": `\valid`, }, }, message: getStringAddress(`127.0.0.1 - - 1452819643 "GET"`), }, "", nil, }, { []byte(`<29>52 2016-01-15T01:00:43Z hn S - - [meta one="\\one" two="\\two"] 127.0.0.1 - - 1452819643 "GET"`), true, &SyslogMessage{ priority: getUint8Address(29), facility: getUint8Address(3), severity: getUint8Address(5), version: 52, timestamp: timeParse(RFC3339MICRO, "2016-01-15T01:00:43Z"), hostname: getStringAddress("hn"), appname: getStringAddress("S"), structuredData: &map[string]map[string]string{ "meta": { "one": `\one`, "two": `\two`, }, }, message: getStringAddress(`127.0.0.1 - - 1452819643 "GET"`), }, "", nil, }, { []byte(`<29>53 2016-01-15T01:00:43Z hn S - - [meta one="\\one"][other two="\\two" double="\\a\\b"] 127.0.0.1 - - 1452819643 "GET"`), true, &SyslogMessage{ priority: getUint8Address(29), facility: getUint8Address(3), severity: getUint8Address(5), version: 53, timestamp: timeParse(RFC3339MICRO, "2016-01-15T01:00:43Z"), hostname: getStringAddress("hn"), appname: getStringAddress("S"), structuredData: &map[string]map[string]string{ "meta": { "one": `\one`, }, "other": { "two": `\two`, "double": `\a\b`, }, }, message: getStringAddress(`127.0.0.1 - - 1452819643 "GET"`), }, "", nil, }, { []byte(`<29>51 2016-01-15T01:00:43Z hn S - - [meta es="\\double\\slash"] 127.0.0.1 - - 1452819643 "GET"`), true, &SyslogMessage{ priority: getUint8Address(29), facility: getUint8Address(3), severity: getUint8Address(5), version: 51, timestamp: timeParse(RFC3339MICRO, "2016-01-15T01:00:43Z"), hostname: getStringAddress("hn"), appname: getStringAddress("S"), structuredData: &map[string]map[string]string{ "meta": { "es": `\double\slash`, }, }, message: getStringAddress(`127.0.0.1 - - 1452819643 "GET"`), }, "", nil, }, { []byte(`<29>54 2016-01-15T01:00:43Z hn S - - [meta es="in \\middle of the string"] 127.0.0.1 - - 1452819643 "GET"`), true, &SyslogMessage{ priority: getUint8Address(29), facility: getUint8Address(3), severity: getUint8Address(5), version: 54, timestamp: timeParse(RFC3339MICRO, "2016-01-15T01:00:43Z"), hostname: getStringAddress("hn"), appname: getStringAddress("S"), structuredData: &map[string]map[string]string{ "meta": { "es": `in \middle of the string`, }, }, message: getStringAddress(`127.0.0.1 - - 1452819643 "GET"`), }, "", nil, }, { []byte(`<29>55 2016-01-15T01:00:43Z hn S - - [meta es="at the \\end"] 127.0.0.1 - - 1452819643 "GET"`), true, &SyslogMessage{ priority: getUint8Address(29), facility: getUint8Address(3), severity: getUint8Address(5), version: 55, timestamp: timeParse(RFC3339MICRO, "2016-01-15T01:00:43Z"), hostname: getStringAddress("hn"), appname: getStringAddress("S"), structuredData: &map[string]map[string]string{ "meta": { "es": `at the \end`, }, }, message: getStringAddress(`127.0.0.1 - - 1452819643 "GET"`), }, "", nil, }, // Valid, with control characters within structured data param value { []byte("<29>50 2016-01-15T01:00:43Z hn S - - [meta es=\"\t5Ὂg̀9!℃ᾭGa b\"] 127.0.0.1 - - 1452819643 \"GET\""), true, &SyslogMessage{ priority: getUint8Address(29), facility: getUint8Address(3), severity: getUint8Address(5), version: 50, timestamp: timeParse(RFC3339MICRO, "2016-01-15T01:00:43Z"), hostname: getStringAddress("hn"), appname: getStringAddress("S"), structuredData: &map[string]map[string]string{ "meta": { "es": "\t5Ὂg̀9!℃ᾭGa b", }, }, message: getStringAddress(`127.0.0.1 - - 1452819643 "GET"`), }, "", nil, }, // Valid, with utf8 within structured data param value { []byte(`<29>50 2016-01-15T01:00:43Z hn S - - [meta gr="κόσμε" es="ñ"][beta pr="₡"] 𐌼 "GET"`), true, &SyslogMessage{ priority: getUint8Address(29), facility: getUint8Address(3), severity: getUint8Address(5), version: 50, timestamp: timeParse(RFC3339MICRO, "2016-01-15T01:00:43Z"), hostname: getStringAddress("hn"), appname: getStringAddress("S"), structuredData: &map[string]map[string]string{ "meta": { "gr": "κόσμε", "es": "ñ", }, "beta": { "pr": "₡", }, }, message: getStringAddress(`𐌼 "GET"`), }, "", nil, }, // Valid, with structured data, w/o msg { []byte("<165>3 2003-10-11T22:14:15.003Z example.com evnts - ID27 [exampleSDID@32473 iut=\"3\" eventSource=\"Application\" eventID=\"1011\"][examplePriority@32473 class=\"high\"]"), true, &SyslogMessage{ facility: getUint8Address(20), severity: getUint8Address(5), priority: getUint8Address(165), version: 3, timestamp: timeParse(RFC3339MICRO, "2003-10-11T22:14:15.003Z"), hostname: getStringAddress("example.com"), appname: getStringAddress("evnts"), procID: nil, msgID: getStringAddress("ID27"), structuredData: &map[string]map[string]string{ "exampleSDID@32473": { "iut": "3", "eventSource": "Application", "eventID": "1011", }, "examplePriority@32473": { "class": "high", }, }, message: nil, }, "", nil, }, // Invalid, with duplicated structured data id { []byte("<165>3 2003-10-11T22:14:15.003Z example.com evnts - ID27 [id1][id1]"), false, nil, "duplicate structured data element id [col 66]", &SyslogMessage{ priority: getUint8Address(165), facility: getUint8Address(20), severity: getUint8Address(5), version: 3, timestamp: timeParse(RFC3339MICRO, "2003-10-11T22:14:15.003Z"), hostname: getStringAddress("example.com"), appname: getStringAddress("evnts"), msgID: getStringAddress("ID27"), structuredData: &map[string]map[string]string{ "id1": {}, }, }, }, // Invalid, with duplicated structured data id { []byte("<165>3 2003-10-11T22:14:15.003Z example.com evnts - ID27 [dupe e=\"1\"][id1][dupe class=\"l\"]"), false, nil, "duplicate structured data element id [col 79]", &SyslogMessage{ priority: getUint8Address(165), facility: getUint8Address(20), severity: getUint8Address(5), version: 3, timestamp: timeParse(RFC3339MICRO, "2003-10-11T22:14:15.003Z"), hostname: getStringAddress("example.com"), appname: getStringAddress("evnts"), msgID: getStringAddress("ID27"), structuredData: &map[string]map[string]string{ "id1": {}, "dupe": { "e": "1", }, }, }, }, // Valid, with structured data w/o msg { []byte(`<165>4 2003-10-11T22:14:15.003Z mymachine.it e - 1 [ex@32473 iut="3" eventSource="A"] An application event log entry...`), true, &SyslogMessage{ facility: getUint8Address(20), severity: getUint8Address(5), priority: getUint8Address(165), version: 4, timestamp: timeParse(RFC3339MICRO, "2003-10-11T22:14:15.003Z"), hostname: getStringAddress("mymachine.it"), appname: getStringAddress("e"), procID: nil, msgID: getStringAddress("1"), structuredData: &map[string]map[string]string{ "ex@32473": { "iut": "3", "eventSource": "A", }, }, message: getStringAddress("An application event log entry..."), }, "", nil, }, // Valid, with double quotes in the message { []byte(`<29>1 2016-01-15T01:00:43Z some-host-name SEKRETPROGRAM prg - [origin x-service="svcname"][meta sequenceId="1"] 127.0.0.1 - - 1452819643 "GET"`), true, &SyslogMessage{ facility: getUint8Address(3), severity: getUint8Address(5), priority: getUint8Address(29), version: 1, timestamp: timeParse(RFC3339MICRO, "2016-01-15T01:00:43Z"), hostname: getStringAddress("some-host-name"), appname: getStringAddress("SEKRETPROGRAM"), procID: getStringAddress("prg"), msgID: nil, structuredData: &map[string]map[string]string{ "origin": { "x-service": "svcname", }, "meta": { "sequenceId": "1", }, }, message: getStringAddress("127.0.0.1 - - 1452819643 \"GET\""), }, "", nil, }, // Valid, with empty structured data param value { []byte(`<1>1 - - - - - [id pk=""]`), true, &SyslogMessage{ priority: getUint8Address(1), facility: getUint8Address(0), severity: getUint8Address(1), version: 1, structuredData: &map[string]map[string]string{ "id": { "pk": "", }, }, }, "", nil, }, // Valid, with escaped character within param value { []byte(`<29>2 2016-01-15T01:00:43Z some-host-name SEKRETPROGRAM prg - [meta escape="\]"] some "mex"`), true, &SyslogMessage{ facility: getUint8Address(3), severity: getUint8Address(5), priority: getUint8Address(29), version: 2, timestamp: timeParse(RFC3339MICRO, "2016-01-15T01:00:43Z"), hostname: getStringAddress("some-host-name"), appname: getStringAddress("SEKRETPROGRAM"), procID: getStringAddress("prg"), msgID: nil, structuredData: &map[string]map[string]string{ "meta": { "escape": "]", }, }, message: getStringAddress(`some "mex"`), }, "", nil, }, { []byte(`<29>2 2016-01-15T01:00:43Z some-host-name SEKRETPROGRAM prg - [meta escape="\\"]`), true, &SyslogMessage{ facility: getUint8Address(3), severity: getUint8Address(5), priority: getUint8Address(29), version: 2, timestamp: timeParse(RFC3339MICRO, "2016-01-15T01:00:43Z"), hostname: getStringAddress("some-host-name"), appname: getStringAddress("SEKRETPROGRAM"), procID: getStringAddress("prg"), msgID: nil, structuredData: &map[string]map[string]string{ "meta": { "escape": `\`, }, }, }, "", nil, }, { []byte(`<29>2 2016-01-15T01:00:43Z some-host-name SEKRETPROGRAM prg - [meta escape="\""]`), true, &SyslogMessage{ facility: getUint8Address(3), severity: getUint8Address(5), priority: getUint8Address(29), version: 2, timestamp: timeParse(RFC3339MICRO, "2016-01-15T01:00:43Z"), hostname: getStringAddress("some-host-name"), appname: getStringAddress("SEKRETPROGRAM"), procID: getStringAddress("prg"), msgID: nil, structuredData: &map[string]map[string]string{ "meta": { "escape": `"`, }, }, }, "", nil, }, { []byte(`<29>2 2016-01-15T01:00:43Z some-host-name SEKRETPROGRAM prg - [meta escape="\]\"\\\\\]\""]`), true, &SyslogMessage{ facility: getUint8Address(3), severity: getUint8Address(5), priority: getUint8Address(29), version: 2, timestamp: timeParse(RFC3339MICRO, "2016-01-15T01:00:43Z"), hostname: getStringAddress("some-host-name"), appname: getStringAddress("SEKRETPROGRAM"), procID: getStringAddress("prg"), msgID: nil, structuredData: &map[string]map[string]string{ "meta": { "escape": `]"\\]"`, }, }, }, "", nil, }, // Invalid, param value can not contain closing square bracket - ie., ] { []byte(`<29>3 2016-01-15T01:00:43Z hn S - - [meta escape="]"] 127.0.0.1 - - 1452819643 "GET"`), false, nil, "expecting chars `]`, `\"`, and `\\` to be escaped within param value [col 50]", &SyslogMessage{ facility: getUint8Address(3), severity: getUint8Address(5), priority: getUint8Address(29), version: 3, timestamp: timeParse(RFC3339MICRO, "2016-01-15T01:00:43Z"), hostname: getStringAddress("hn"), appname: getStringAddress("S"), structuredData: &map[string]map[string]string{ "meta": {}, }, }, }, { []byte(`<29>5 2016-01-15T01:00:43Z hn S - - [meta escape="]q"] 127.0.0.1 - - 1452819643 "GET"`), false, nil, "expecting chars `]`, `\"`, and `\\` to be escaped within param value [col 50]", &SyslogMessage{ facility: getUint8Address(3), severity: getUint8Address(5), priority: getUint8Address(29), version: 5, timestamp: timeParse(RFC3339MICRO, "2016-01-15T01:00:43Z"), hostname: getStringAddress("hn"), appname: getStringAddress("S"), structuredData: &map[string]map[string]string{ "meta": {}, }, }, }, { []byte(`<29>4 2016-01-15T01:00:43Z hn S - - [meta escape="p]"] 127.0.0.1 - - 1452819643 "GET"`), false, nil, "expecting chars `]`, `\"`, and `\\` to be escaped within param value [col 51]", &SyslogMessage{ facility: getUint8Address(3), severity: getUint8Address(5), priority: getUint8Address(29), version: 4, timestamp: timeParse(RFC3339MICRO, "2016-01-15T01:00:43Z"), hostname: getStringAddress("hn"), appname: getStringAddress("S"), structuredData: &map[string]map[string]string{ "meta": {}, }, }, }, // Invalid, param value can not contain doublequote char - ie., "" { []byte(`<29>4 2017-01-15T01:00:43Z hn S - - [meta escape="""] 127.0.0.1 - - 1452819643 "GET"`), false, nil, "expecting a structured data parameter (`key=\"value\"`, both part from 1 to max 32 US-ASCII characters; key cannot contain `=`, ` `, `]`, and `\"`, while value cannot contain `]`, backslash, and `\"` unless escaped) [col 51]", &SyslogMessage{ facility: getUint8Address(3), severity: getUint8Address(5), priority: getUint8Address(29), version: 4, timestamp: timeParse(RFC3339MICRO, "2017-01-15T01:00:43Z"), hostname: getStringAddress("hn"), appname: getStringAddress("S"), structuredData: &map[string]map[string]string{ "meta": {}, }, }, }, { []byte(`<29>6 2016-01-15T01:00:43Z hn S - - [meta escape="a""] 127.0.0.1 - - 1452819643 "GET"`), false, nil, "expecting a structured data parameter (`key=\"value\"`, both part from 1 to max 32 US-ASCII characters; key cannot contain `=`, ` `, `]`, and `\"`, while value cannot contain `]`, backslash, and `\"` unless escaped) [col 52]", &SyslogMessage{ facility: getUint8Address(3), severity: getUint8Address(5), priority: getUint8Address(29), version: 6, timestamp: timeParse(RFC3339MICRO, "2016-01-15T01:00:43Z"), hostname: getStringAddress("hn"), appname: getStringAddress("S"), structuredData: &map[string]map[string]string{ "meta": {}, }, }, }, { []byte(`<29>4 2018-01-15T01:00:43Z hn S - - [meta escape=""b"] 127.0.0.1 - - 1452819643 "GET"`), false, nil, "expecting a structured data parameter (`key=\"value\"`, both part from 1 to max 32 US-ASCII characters; key cannot contain `=`, ` `, `]`, and `\"`, while value cannot contain `]`, backslash, and `\"` unless escaped) [col 51]", &SyslogMessage{ facility: getUint8Address(3), severity: getUint8Address(5), priority: getUint8Address(29), version: 4, timestamp: timeParse(RFC3339MICRO, "2018-01-15T01:00:43Z"), hostname: getStringAddress("hn"), appname: getStringAddress("S"), structuredData: &map[string]map[string]string{ "meta": {}, }, }, }, // Invalid, param value can not contain backslash - ie., \ { []byte(`<29>5 2019-01-15T01:00:43Z hn S - - [meta escape="\"] 127.0.0.1 - - 1452819643 "GET"`), false, nil, "expecting chars `]`, `\"`, and `\\` to be escaped within param value [col 52]", &SyslogMessage{ facility: getUint8Address(3), severity: getUint8Address(5), priority: getUint8Address(29), version: 5, timestamp: timeParse(RFC3339MICRO, "2019-01-15T01:00:43Z"), hostname: getStringAddress("hn"), appname: getStringAddress("S"), structuredData: &map[string]map[string]string{ "meta": {}, }, }, }, { []byte(`<29>7 2019-01-15T01:00:43Z hn S - - [meta escape="a\"] 127.0.0.1 - - 1452819643 "GET"`), false, nil, "expecting chars `]`, `\"`, and `\\` to be escaped within param value [col 53]", &SyslogMessage{ facility: getUint8Address(3), severity: getUint8Address(5), priority: getUint8Address(29), version: 7, timestamp: timeParse(RFC3339MICRO, "2019-01-15T01:00:43Z"), hostname: getStringAddress("hn"), appname: getStringAddress("S"), structuredData: &map[string]map[string]string{ "meta": {}, }, }, }, { []byte(`<29>8 2016-01-15T01:00:43Z hn S - - [meta escape="\n"] 127.0.0.1 - - 1452819643 "GET"`), false, nil, "expecting chars `]`, `\"`, and `\\` to be escaped within param value [col 51]", &SyslogMessage{ facility: getUint8Address(3), severity: getUint8Address(5), priority: getUint8Address(29), version: 8, timestamp: timeParse(RFC3339MICRO, "2016-01-15T01:00:43Z"), hostname: getStringAddress("hn"), appname: getStringAddress("S"), structuredData: &map[string]map[string]string{ "meta": {}, }, }, }, // Valid, message starting with byte order mark (BOM, \uFEFF) { []byte("<1>1 - - - - - - \xEF\xBB\xBF"), true, &SyslogMessage{ priority: getUint8Address(1), facility: getUint8Address(0), severity: getUint8Address(1), version: 1, message: getStringAddress("\ufeff"), }, "", nil, }, // Valid, greek { []byte("<1>1 - - - - - - κόσμε"), true, &SyslogMessage{ priority: getUint8Address(1), facility: getUint8Address(0), severity: getUint8Address(1), version: 1, message: getStringAddress("κόσμε"), }, "", nil, }, // Valid, 2 octet sequence { []byte("<1>1 - - - - - - €"), true, &SyslogMessage{ priority: getUint8Address(1), facility: getUint8Address(0), severity: getUint8Address(1), version: 1, message: getStringAddress("€"), }, "", nil, }, // Valid, spanish (2 octet sequence) { []byte("<1>1 - - - - - - \xc3\xb1"), true, &SyslogMessage{ priority: getUint8Address(1), facility: getUint8Address(0), severity: getUint8Address(1), version: 1, message: getStringAddress("ñ"), }, "", nil, }, // Valid, colon currency sign (3 octet sequence) { []byte("<1>1 - - - - - - \xe2\x82\xa1"), true, &SyslogMessage{ priority: getUint8Address(1), facility: getUint8Address(0), severity: getUint8Address(1), version: 1, message: getStringAddress("₡"), }, "", nil, }, // Valid, gothic letter (4 octet sequence) { []byte("<1>1 - - - - - - \xEF\xBB\xBF \xf0\x90\x8c\xbc"), true, &SyslogMessage{ priority: getUint8Address(1), facility: getUint8Address(0), severity: getUint8Address(1), version: 1, message: getStringAddress("\ufeff 𐌼"), }, "", nil, }, // Valid, 5 octet sequence { []byte("<1>1 - - - - - - \xC8\x80\x30\x30\x30"), true, &SyslogMessage{ priority: getUint8Address(1), facility: getUint8Address(0), severity: getUint8Address(1), version: 1, message: getStringAddress("Ȁ000"), }, "", nil, }, // Valid, 6 octet sequence { []byte("<1>1 - - - - - - \xE4\x80\x80\x30\x30\x30"), true, &SyslogMessage{ priority: getUint8Address(1), facility: getUint8Address(0), severity: getUint8Address(1), version: 1, message: getStringAddress("䀀000"), }, "", nil, }, // Valid, UTF-8 boundary conditions { []byte("<1>1 - - - - - - \xC4\x90\x30\x30\x30"), true, &SyslogMessage{ priority: getUint8Address(1), facility: getUint8Address(0), severity: getUint8Address(1), version: 1, message: getStringAddress("Đ000"), }, "", nil, }, { []byte("<1>1 - - - - - - \x0D\x37\x46\x46"), true, &SyslogMessage{ priority: getUint8Address(1), facility: getUint8Address(0), severity: getUint8Address(1), version: 1, message: getStringAddress("\r7FF"), }, "", nil, }, // Valid, Tamil poetry of Subramaniya Bharathiyar { []byte("<1>1 - - - - - - யாமறிந்த மொழிகளிலே தமிழ்மொழி போல் இனிதாவது எங்கும் காணோம், பாமரராய் விலங்குகளாய், உலகனைத்தும் இகழ்ச்சிசொலப் பான்மை கெட்டு, நாமமது தமிழரெனக் கொண்டு இங்கு வாழ்ந்திடுதல் நன்றோ? சொல்லீர்! தேமதுரத் தமிழோசை உலகமெலாம் பரவும்வகை செய்தல் வேண்டும்."), true, &SyslogMessage{ priority: getUint8Address(1), facility: getUint8Address(0), severity: getUint8Address(1), version: 1, message: getStringAddress("யாமறிந்த மொழிகளிலே தமிழ்மொழி போல் இனிதாவது எங்கும் காணோம், பாமரராய் விலங்குகளாய், உலகனைத்தும் இகழ்ச்சிசொலப் பான்மை கெட்டு, நாமமது தமிழரெனக் கொண்டு இங்கு வாழ்ந்திடுதல் நன்றோ? சொல்லீர்! தேமதுரத் தமிழோசை உலகமெலாம் பரவும்வகை செய்தல் வேண்டும்."), }, "", nil, }, // Valid, I Can Eat Glass (Milanese) { []byte("<1>1 - - - - - - Sôn bôn de magnà el véder, el me fa minga mal."), true, &SyslogMessage{ priority: getUint8Address(1), facility: getUint8Address(0), severity: getUint8Address(1), version: 1, message: getStringAddress("Sôn bôn de magnà el véder, el me fa minga mal."), }, "", nil, }, // Valid, I Can Eat Glass (Romano) { []byte("<1>1 - - - - - - Me posso magna' er vetro, e nun me fa male."), true, &SyslogMessage{ priority: getUint8Address(1), facility: getUint8Address(0), severity: getUint8Address(1), version: 1, message: getStringAddress("Me posso magna' er vetro, e nun me fa male."), }, "", nil, }, // Valid, I Can Eat Glass (Braille) { []byte("<1>1 - - - - - - ⠊⠀⠉⠁⠝⠀⠑⠁⠞⠀⠛⠇⠁⠎⠎⠀⠁⠝⠙⠀⠊⠞⠀⠙⠕⠑⠎⠝⠞⠀⠓⠥⠗⠞⠀⠍⠑"), true, &SyslogMessage{ priority: getUint8Address(1), facility: getUint8Address(0), severity: getUint8Address(1), version: 1, message: getStringAddress("⠊⠀⠉⠁⠝⠀⠑⠁⠞⠀⠛⠇⠁⠎⠎⠀⠁⠝⠙⠀⠊⠞⠀⠙⠕⠑⠎⠝⠞⠀⠓⠥⠗⠞⠀⠍⠑"), }, "", nil, }, // Valid, I Can Eat Glass (Sanskrit) { []byte("<1>1 - - - - - - काचं शक्नोम्यत्तुम् । नोपहिनस्ति माम् ॥"), true, &SyslogMessage{ priority: getUint8Address(1), facility: getUint8Address(0), severity: getUint8Address(1), version: 1, message: getStringAddress("काचं शक्नोम्यत्तुम् । नोपहिनस्ति माम् ॥"), }, "", nil, }, // Valid, I Can Eat Glass (Urdu) { []byte("<1>1 - - - - - - میں کانچ کھا سکتا ہوں اور مجھے تکلیف نہیں ہوتی ۔"), true, &SyslogMessage{ priority: getUint8Address(1), facility: getUint8Address(0), severity: getUint8Address(1), version: 1, message: getStringAddress("میں کانچ کھا سکتا ہوں اور مجھے تکلیف نہیں ہوتی ۔"), }, "", nil, }, // Valid, I Can Eat Glass (Yiddish) { []byte("<1>1 - - - - - - איך קען עסן גלאָז און עס טוט מיר נישט װײ."), true, &SyslogMessage{ priority: getUint8Address(1), facility: getUint8Address(0), severity: getUint8Address(1), version: 1, message: getStringAddress("איך קען עסן גלאָז און עס טוט מיר נישט װײ."), }, "", nil, }, // Valid, I Can Eat Glass (Polish) { []byte("<1>1 - - - - - - Mogę jeść szkło, i mi nie szkodzi."), true, &SyslogMessage{ priority: getUint8Address(1), facility: getUint8Address(0), severity: getUint8Address(1), version: 1, message: getStringAddress("Mogę jeść szkło, i mi nie szkodzi."), }, "", nil, }, // Valid, I Can Eat Glass (Japanese) { []byte("<1>1 - - - - - - 私はガラスを食べられます。それは私を傷つけません。"), true, &SyslogMessage{ priority: getUint8Address(1), facility: getUint8Address(0), severity: getUint8Address(1), version: 1, message: getStringAddress("私はガラスを食べられます。それは私を傷つけません。"), }, "", nil, }, // Valid, I Can Eat Glass (Arabic) { []byte("<1>1 - - - - - - أنا قادر على أكل الزجاج و هذا لا يؤلمني."), true, &SyslogMessage{ priority: getUint8Address(1), facility: getUint8Address(0), severity: getUint8Address(1), version: 1, message: getStringAddress("أنا قادر على أكل الزجاج و هذا لا يؤلمني."), }, "", nil, }, // Valid, russian alphabet { []byte("<1>1 - - - - - - абвгдеёжзийклмнопрстуфхцчшщъыьэюя"), true, &SyslogMessage{ priority: getUint8Address(1), facility: getUint8Address(0), severity: getUint8Address(1), version: 1, message: getStringAddress("абвгдеёжзийклмнопрстуфхцчшщъыьэюя"), }, "", nil, }, // Valid, armenian letters { []byte("<1>1 - - - - - - ԰ԱԲԳԴԵԶԷԸԹԺԻԼԽԾԿՀՁՂՃՄՅՆՇՈՉՊՋՌՍՎՏՐՑՒՓՔՕՖ՗՘ՙ՚՛՜՝՞՟աբգդեզէըթիլխծկհձղճմյնշոչպջռսվտրցւփքօֆևֈ։֊֋֌֍֎֏"), true, &SyslogMessage{ priority: getUint8Address(1), facility: getUint8Address(0), severity: getUint8Address(1), version: 1, message: getStringAddress("\u0530ԱԲԳԴԵԶԷԸԹԺԻԼԽԾԿՀՁՂՃՄՅՆՇՈՉՊՋՌՍՎՏՐՑՒՓՔՕՖ\u0557\u0558ՙ՚՛՜՝՞՟աբգդեզէըթիլխծկհձղճմյնշոչպջռսվտրցւփքօֆև\u0588։֊\u058b\u058c֍֎֏"), }, "", nil, }, // Valid, new line within message { []byte("<1>1 - - - - - - x\x0Ay"), true, &SyslogMessage{ facility: getUint8Address(0), severity: getUint8Address(1), priority: getUint8Address(1), version: 1, message: getStringAddress("x\ny"), }, "", nil, }, { []byte(`<1>2 - - - - - - x y`), true, &SyslogMessage{ facility: getUint8Address(0), severity: getUint8Address(1), priority: getUint8Address(1), version: 2, message: getStringAddress("x\ny"), }, "", nil, }, // Invalid, out of range code within message { []byte("<1>1 - - - - - - \xEF\xBB\xBF\xC1"), false, nil, "expecting a free-form optional message in UTF-8 (starting with or without BOM) [col 20]", &SyslogMessage{ priority: getUint8Address(1), facility: getUint8Address(0), severity: getUint8Address(1), version: 1, message: getStringAddress("\xEF\xBB\xBF"), }, }, { []byte("<1>2 - - - - - - \xC1"), false, nil, "expecting a free-form optional message in UTF-8 (starting with or without BOM) [col 17]", &SyslogMessage{ priority: getUint8Address(1), facility: getUint8Address(0), severity: getUint8Address(1), version: 2, }, }, { []byte("<1>1 - - - - - - \xEF\xBB\xBF\xc3\x28"), // invalid 2 octet sequence false, nil, "expecting a free-form optional message in UTF-8 (starting with or without BOM) [col 21]", &SyslogMessage{ priority: getUint8Address(1), facility: getUint8Address(0), severity: getUint8Address(1), version: 1, message: getStringAddress("\xEF\xBB\xBF\xc3"), }, }, { []byte("<1>1 - - - - - - \xc3\x28"), // invalid 2 octet sequence false, nil, "expecting a free-form optional message in UTF-8 (starting with or without BOM) [col 18]", &SyslogMessage{ priority: getUint8Address(1), facility: getUint8Address(0), severity: getUint8Address(1), version: 1, message: getStringAddress("\xc3"), }, }, { []byte("<1>1 - - - - - - \xEF\xBB\xBF\xa0\xa1"), // invalid sequence identifier false, nil, "expecting a free-form optional message in UTF-8 (starting with or without BOM) [col 20]", &SyslogMessage{ priority: getUint8Address(1), facility: getUint8Address(0), severity: getUint8Address(1), version: 1, message: getStringAddress("\xEF\xBB\xBF"), }, }, { []byte("<1>1 - - - - - - \xa0\xa1"), // invalid sequence identifier false, nil, "expecting a free-form optional message in UTF-8 (starting with or without BOM) [col 17]", &SyslogMessage{ priority: getUint8Address(1), facility: getUint8Address(0), severity: getUint8Address(1), version: 1, }, }, { []byte("<1>1 - - - - - - \xEF\xBB\xBF\xe2\x28\xa1"), // invalid 3 octet sequence (2nd octet) false, nil, "expecting a free-form optional message in UTF-8 (starting with or without BOM) [col 21]", &SyslogMessage{ priority: getUint8Address(1), facility: getUint8Address(0), severity: getUint8Address(1), version: 1, message: getStringAddress("\xEF\xBB\xBF\xe2"), }, }, { []byte("<1>1 - - - - - - \xe2\x28\xa1"), // invalid 3 octet sequence (2nd octet) false, nil, "expecting a free-form optional message in UTF-8 (starting with or without BOM) [col 18]", &SyslogMessage{ priority: getUint8Address(1), facility: getUint8Address(0), severity: getUint8Address(1), version: 1, message: getStringAddress("\xe2"), }, }, { []byte("<1>1 - - - - - - \xEF\xBB\xBF\xe2\x82\x28"), // invalid 3 octet sequence (3nd octet) false, nil, "expecting a free-form optional message in UTF-8 (starting with or without BOM) [col 22]", &SyslogMessage{ priority: getUint8Address(1), facility: getUint8Address(0), severity: getUint8Address(1), version: 1, message: getStringAddress("\xEF\xBB\xBF\xe2\x82"), }, }, { []byte("<1>1 - - - - - - \xe2\x82\x28"), // invalid 3 octet sequence (3nd octet) false, nil, "expecting a free-form optional message in UTF-8 (starting with or without BOM) [col 19]", &SyslogMessage{ priority: getUint8Address(1), facility: getUint8Address(0), severity: getUint8Address(1), version: 1, message: getStringAddress("\xe2\x82"), }, }, { []byte("<1>1 - - - - - - \xEF\xBB\xBF\xf0\x28\x8c\xbc"), // invalid 4 octet sequence (2nd octet) false, nil, "expecting a free-form optional message in UTF-8 (starting with or without BOM) [col 21]", &SyslogMessage{ priority: getUint8Address(1), facility: getUint8Address(0), severity: getUint8Address(1), version: 1, message: getStringAddress("\xEF\xBB\xBF\xf0"), }, }, { []byte("<1>1 - - - - - - \xf0\x28\x8c\xbc"), // invalid 4 octet sequence (2nd octet) false, nil, "expecting a free-form optional message in UTF-8 (starting with or without BOM) [col 18]", &SyslogMessage{ priority: getUint8Address(1), facility: getUint8Address(0), severity: getUint8Address(1), version: 1, message: getStringAddress("\xf0"), }, }, { []byte("<1>1 - - - - - - \xEF\xBB\xBF\xf0\x90\x28\xbc"), // invalid 4 octet sequence (3nd octet) false, nil, "expecting a free-form optional message in UTF-8 (starting with or without BOM) [col 22]", &SyslogMessage{ priority: getUint8Address(1), facility: getUint8Address(0), severity: getUint8Address(1), version: 1, message: getStringAddress("\xEF\xBB\xBF\xf0\x90"), }, }, { []byte("<1>1 - - - - - - \xf0\x90\x28\xbc"), // invalid 4 octet sequence (3nd octet) false, nil, "expecting a free-form optional message in UTF-8 (starting with or without BOM) [col 19]", &SyslogMessage{ priority: getUint8Address(1), facility: getUint8Address(0), severity: getUint8Address(1), version: 1, message: getStringAddress("\xf0\x90"), }, }, { []byte("<1>1 - - - - - - \xEF\xBB\xBF\xf0\x28\x8c\x28"), // invalid 4 octet sequence (4nd octet) false, nil, "expecting a free-form optional message in UTF-8 (starting with or without BOM) [col 21]", &SyslogMessage{ priority: getUint8Address(1), facility: getUint8Address(0), severity: getUint8Address(1), version: 1, message: getStringAddress("\xEF\xBB\xBF\xf0"), }, }, { []byte("<1>1 - - - - - - \xf0\x28\x8c\x28"), // invalid 4 octet sequence (4nd octet) false, nil, "expecting a free-form optional message in UTF-8 (starting with or without BOM) [col 18]", &SyslogMessage{ priority: getUint8Address(1), facility: getUint8Address(0), severity: getUint8Address(1), version: 1, message: getStringAddress("\xf0"), }, }, // Invalid, impossible bytes { []byte("<1>1 - - - - - - \xfe\xfe\xff\xff"), false, nil, "expecting a free-form optional message in UTF-8 (starting with or without BOM) [col 17]", &SyslogMessage{ priority: getUint8Address(1), facility: getUint8Address(0), severity: getUint8Address(1), version: 1, }, }, { []byte("<1>1 - - - - - - \xfe"), false, nil, "expecting a free-form optional message in UTF-8 (starting with or without BOM) [col 17]", &SyslogMessage{ priority: getUint8Address(1), facility: getUint8Address(0), severity: getUint8Address(1), version: 1, }, }, { []byte("<1>1 - - - - - - \xff"), false, nil, "expecting a free-form optional message in UTF-8 (starting with or without BOM) [col 17]", &SyslogMessage{ priority: getUint8Address(1), facility: getUint8Address(0), severity: getUint8Address(1), version: 1, }, }, // Invalid, overlong sequences { []byte("<1>1 - - - - - - \xfc\x80\x80\x80\x80\xaf"), false, nil, "expecting a free-form optional message in UTF-8 (starting with or without BOM) [col 17]", &SyslogMessage{ priority: getUint8Address(1), facility: getUint8Address(0), severity: getUint8Address(1), version: 1, }, }, { []byte("<1>1 - - - - - - \xf8\x80\x80\x80\xaf"), false, nil, "expecting a free-form optional message in UTF-8 (starting with or without BOM) [col 17]", &SyslogMessage{ priority: getUint8Address(1), facility: getUint8Address(0), severity: getUint8Address(1), version: 1, }, }, { []byte("<1>1 - - - - - - \xf0\x80\x80\xaf"), false, nil, "expecting a free-form optional message in UTF-8 (starting with or without BOM) [col 18]", &SyslogMessage{ priority: getUint8Address(1), facility: getUint8Address(0), severity: getUint8Address(1), version: 1, message: getStringAddress("\xf0"), }, }, { []byte("<1>1 - - - - - - \xe0\x80\xaf"), false, nil, "expecting a free-form optional message in UTF-8 (starting with or without BOM) [col 18]", &SyslogMessage{ priority: getUint8Address(1), facility: getUint8Address(0), severity: getUint8Address(1), version: 1, message: getStringAddress("\xe0"), }, }, { []byte("<1>1 - - - - - - \xc0\xaf"), false, nil, "expecting a free-form optional message in UTF-8 (starting with or without BOM) [col 17]", &SyslogMessage{ priority: getUint8Address(1), facility: getUint8Address(0), severity: getUint8Address(1), version: 1, }, }, // Invalid, maximum overlong sequences { []byte("<1>1 - - - - - - \xfc\x83\xbf\xbf\xbf\xbf"), false, nil, "expecting a free-form optional message in UTF-8 (starting with or without BOM) [col 17]", &SyslogMessage{ priority: getUint8Address(1), facility: getUint8Address(0), severity: getUint8Address(1), version: 1, }, }, { []byte("<1>1 - - - - - - \xf8\x87\xbf\xbf\xbf"), false, nil, "expecting a free-form optional message in UTF-8 (starting with or without BOM) [col 17]", &SyslogMessage{ priority: getUint8Address(1), facility: getUint8Address(0), severity: getUint8Address(1), version: 1, }, }, { []byte("<1>1 - - - - - - \xf0\x8f\xbf\xbf"), false, nil, "expecting a free-form optional message in UTF-8 (starting with or without BOM) [col 18]", &SyslogMessage{ priority: getUint8Address(1), facility: getUint8Address(0), severity: getUint8Address(1), version: 1, message: getStringAddress("\xf0"), }, }, { []byte("<1>1 - - - - - - \xe0\x9f\xbf"), false, nil, "expecting a free-form optional message in UTF-8 (starting with or without BOM) [col 18]", &SyslogMessage{ priority: getUint8Address(1), facility: getUint8Address(0), severity: getUint8Address(1), version: 1, message: getStringAddress("\xe0"), }, }, { []byte("<1>1 - - - - - - \xc1\xbf"), false, nil, "expecting a free-form optional message in UTF-8 (starting with or without BOM) [col 17]", &SyslogMessage{ priority: getUint8Address(1), facility: getUint8Address(0), severity: getUint8Address(1), version: 1, message: nil, }, }, // Invalid, illegal code positions, single utf-16 surrogates { []byte("<1>1 - - - - - - \xed\xa0\x80"), false, nil, "expecting a free-form optional message in UTF-8 (starting with or without BOM) [col 18]", &SyslogMessage{ priority: getUint8Address(1), facility: getUint8Address(0), severity: getUint8Address(1), version: 1, message: getStringAddress("\xed"), }, }, { []byte("<1>1 - - - - - - \xed\xa0\x80"), false, nil, "expecting a free-form optional message in UTF-8 (starting with or without BOM) [col 18]", &SyslogMessage{ priority: getUint8Address(1), facility: getUint8Address(0), severity: getUint8Address(1), version: 1, message: getStringAddress("\xed"), }, }, { []byte("<1>1 - - - - - - \xed\xad\xbf"), false, nil, "expecting a free-form optional message in UTF-8 (starting with or without BOM) [col 18]", &SyslogMessage{ priority: getUint8Address(1), facility: getUint8Address(0), severity: getUint8Address(1), version: 1, message: getStringAddress("\xed"), }, }, { []byte("<1>1 - - - - - - \xed\xae\x80"), false, nil, "expecting a free-form optional message in UTF-8 (starting with or without BOM) [col 18]", &SyslogMessage{ priority: getUint8Address(1), facility: getUint8Address(0), severity: getUint8Address(1), version: 1, message: getStringAddress("\xed"), }, }, { []byte("<1>1 - - - - - - \xed\xaf\xbf"), false, nil, "expecting a free-form optional message in UTF-8 (starting with or without BOM) [col 18]", &SyslogMessage{ priority: getUint8Address(1), facility: getUint8Address(0), severity: getUint8Address(1), version: 1, message: getStringAddress("\xed"), }, }, { []byte("<1>1 - - - - - - \xed\xb0\x80"), false, nil, "expecting a free-form optional message in UTF-8 (starting with or without BOM) [col 18]", &SyslogMessage{ priority: getUint8Address(1), facility: getUint8Address(0), severity: getUint8Address(1), version: 1, message: getStringAddress("\xed"), }, }, { []byte("<1>1 - - - - - - \xed\xbe\x80"), false, nil, "expecting a free-form optional message in UTF-8 (starting with or without BOM) [col 18]", &SyslogMessage{ priority: getUint8Address(1), facility: getUint8Address(0), severity: getUint8Address(1), version: 1, message: getStringAddress("\xed"), }, }, { []byte("<1>1 - - - - - - \xed\xbf\xbf"), false, nil, "expecting a free-form optional message in UTF-8 (starting with or without BOM) [col 18]", &SyslogMessage{ priority: getUint8Address(1), facility: getUint8Address(0), severity: getUint8Address(1), version: 1, message: getStringAddress("\xed"), }, }, // Invalid, illegal code positions, paired utf-16 surrogates { []byte("<1>1 - - - - - - \xed\xa0\x80\xed\xb0\x80"), false, nil, "expecting a free-form optional message in UTF-8 (starting with or without BOM) [col 18]", &SyslogMessage{ priority: getUint8Address(1), facility: getUint8Address(0), severity: getUint8Address(1), version: 1, message: getStringAddress("\xed"), }, }, // Invalid, out of range code within message after valid string { []byte("<1>1 - - - - - - valid\xEF\xBB\xBF\xC1"), false, nil, "expecting a free-form optional message in UTF-8 (starting with or without BOM) [col 25]", &SyslogMessage{ priority: getUint8Address(1), facility: getUint8Address(0), severity: getUint8Address(1), version: 1, message: getStringAddress("valid\ufeff"), }, }, // Invalid, missing whitespace after nil timestamp { []byte("<1>10 -- - - - -"), false, nil, "parsing error [col 7]", &SyslogMessage{ priority: getUint8Address(1), facility: getUint8Address(0), severity: getUint8Address(1), version: 10, }, }, // (fixme) > evaluate non characters for UTF-8 security concerns, eg. \xef\xbf\xbe } func generateIncompleteTimestampTestCases() []testCase { incompleteTimestamp := []byte("2003-11-02T23:12:46.012345") prefix := []byte("<1>1 ") mex := &SyslogMessage{ priority: getUint8Address(1), severity: getUint8Address(1), facility: getUint8Address(0), version: 1, } tCases := make([]testCase, 0, len(incompleteTimestamp)) prev := make([]byte, 0, len(incompleteTimestamp)) for i, d := range incompleteTimestamp { prev = append(prev, d) tc := testCase{ input: append(prefix, prev...), valid: false, value: nil, errorString: fmt.Sprintf("expecting a RFC3339MICRO timestamp or a nil value [col %d]", len(prefix)+i+1), partialValue: mex, } tCases = append(tCases, tc) } return tCases } func generateUntilMaxLengthStringTestCases(max []byte, pos int) []testCase { if pos < 0 || pos > 3 { panic("position not available") } templ := "<%d>%d - - - - - -" where := 9 + (pos * 2) templ = templ[:where] + "%s" + templ[where+1:] tCases := []testCase{} prev := "" for _, c := range max { prev += string(c) randp := random(0, 9) randv := random(1, 9) input := []byte(fmt.Sprintf(templ, randp, randv, prev)) mex := &SyslogMessage{ priority: getUint8Address(uint8(randp)), severity: getUint8Address(uint8(randp % 8)), facility: getUint8Address(uint8(randp / 8)), version: uint16(randv), } switch pos { case 0: mex.hostname = getStringAddress(string(prev)) case 1: mex.appname = getStringAddress(string(prev)) case 2: mex.procID = getStringAddress(string(prev)) case 3: mex.msgID = getStringAddress(string(prev)) } t := testCase{ input, true, mex, "", nil, } tCases = append(tCases, t) } return tCases } func init() { rand.Seed(time.Now().Unix()) testCases = append(testCases, generateIncompleteTimestampTestCases()...) hostnameMaxStr := []byte("abcdefghilmnopqrstuvzabcdefghilmnopqrstuvzabcdefghilmnopqrstuvzabcdefghilmnopqrstuvzabcdefghilmnopqrstuvzabcdefghilmnopqrstuvzabcdefghilmnopqrstuvzabcdefghilmnopqrstuvzabcdefghilmnopqrstuvzabcdefghilmnopqrstuvzabcdefghilmnopqrstuvzabcdefghilmnopqrstuvzabc") testCases = append(testCases, generateUntilMaxLengthStringTestCases(hostnameMaxStr, 0)...) appnameMaxStr := []byte("abcdefghilmnopqrstuvzabcdefghilmnopqrstuvzabcdef") testCases = append(testCases, generateUntilMaxLengthStringTestCases(appnameMaxStr, 1)...) procidMaxStr := []byte("abcdefghilmnopqrstuvzabcdefghilmnopqrstuvzabcdefghilmnopqrstuvzabcdefghilmnopqrstuvzabcdefghilmnopqrstuvzabcdefghilmnopqrstuvzab") testCases = append(testCases, generateUntilMaxLengthStringTestCases(procidMaxStr, 2)...) msgidMaxStr := []byte("abcdefghilmnopqrstuvzabcdefghilm") testCases = append(testCases, generateUntilMaxLengthStringTestCases(msgidMaxStr, 3)...) } func TestMachineBestEffortOption(t *testing.T) { p1 := NewMachine().(syslog.BestEfforter) assert.False(t, p1.HasBestEffort()) p2 := NewMachine(WithBestEffort()).(syslog.BestEfforter) assert.True(t, p2.HasBestEffort()) } func TestMachineParse(t *testing.T) { for _, tc := range testCases { tc := tc t.Run(rxpad(string(tc.input), 50), func(t *testing.T) { t.Parallel() message, merr := NewMachine().Parse(tc.input) partial, perr := NewMachine(WithBestEffort()).Parse(tc.input) if !tc.valid { assert.Nil(t, message) assert.Error(t, merr) assert.EqualError(t, merr, tc.errorString) assert.Equal(t, tc.partialValue, partial) assert.EqualError(t, perr, tc.errorString) } if tc.valid { assert.Nil(t, merr) assert.NotEmpty(t, message) assert.Equal(t, message, partial) assert.Equal(t, merr, perr) } assert.Equal(t, tc.value, message) }) } } go-syslog-2.0.0/rfc5424/options.go000066400000000000000000000003621340614351500165520ustar00rootroot00000000000000package rfc5424 import ( "github.com/influxdata/go-syslog" ) // WithBestEffort enables the best effort mode. func WithBestEffort() syslog.MachineOption { return func(m syslog.Machine) syslog.Machine { m.WithBestEffort() return m } } go-syslog-2.0.0/rfc5424/parser.go000066400000000000000000000015731340614351500163600ustar00rootroot00000000000000package rfc5424 import ( "github.com/influxdata/go-syslog" "sync" ) // parser represent a RFC5424 parser with mutex capabilities. type parser struct { sync.Mutex *machine } // NewParser creates a syslog.Machine that parses RFC5424 syslog messages. func NewParser(options ...syslog.MachineOption) syslog.Machine { p := &parser{ machine: NewMachine(options...).(*machine), } return p } // HasBestEffort tells whether the receiving parser has best effort mode on or off. func (p *parser) HasBestEffort() bool { return p.bestEffort } // Parse parses the input RFC5424 syslog message using its FSM. // // Best effort mode enables the partial parsing. func (p *parser) Parse(input []byte) (syslog.Message, error) { p.Lock() defer p.Unlock() msg, err := p.machine.Parse(input) if err != nil { if p.bestEffort { return msg, err } return nil, err } return msg, nil } go-syslog-2.0.0/rfc5424/parser_test.go000066400000000000000000000020231340614351500174060ustar00rootroot00000000000000package rfc5424 import ( "testing" "github.com/influxdata/go-syslog" "github.com/stretchr/testify/assert" ) func TestParserBestEffortOption(t *testing.T) { p1 := NewParser().(syslog.BestEfforter) assert.False(t, p1.HasBestEffort()) p2 := NewParser(WithBestEffort()).(syslog.BestEfforter) assert.True(t, p2.HasBestEffort()) } func TestParserParse(t *testing.T) { p := NewParser() pBest := NewParser(WithBestEffort()) for _, tc := range testCases { tc := tc t.Run(rxpad(string(tc.input), 50), func(t *testing.T) { t.Parallel() message, merr := p.Parse(tc.input) partial, perr := pBest.Parse(tc.input) if !tc.valid { assert.Nil(t, message) assert.Error(t, merr) assert.EqualError(t, merr, tc.errorString) assert.Equal(t, tc.partialValue, partial) assert.EqualError(t, perr, tc.errorString) } if tc.valid { assert.Nil(t, merr) assert.NotEmpty(t, message) assert.Equal(t, message, partial) assert.Equal(t, merr, perr) } assert.Equal(t, tc.value, message) }) } } go-syslog-2.0.0/rfc5424/performance_test.go000066400000000000000000000121621340614351500204200ustar00rootroot00000000000000package rfc5424 import ( "github.com/influxdata/go-syslog" "testing" ) // This is here to avoid compiler optimizations that // could remove the actual call we are benchmarking // during benchmarks var benchParseResult syslog.Message type benchCase struct { input []byte label string } var benchCases = []benchCase{ { label: "[no] empty input", input: []byte(``), }, { label: "[no] multiple syslog messages on multiple lines", input: []byte("<1>1 - - - - - -\x0A<2>1 - - - - - -"), }, { label: "[no] impossible timestamp", input: []byte(`<101>11 2003-09-31T22:14:15.003Z`), }, { label: "[no] malformed structured data", input: []byte("<1>1 - - - - - X"), }, { label: "[no] with duplicated structured data id", input: []byte("<165>3 2003-10-11T22:14:15.003Z example.com evnts - ID27 [id1][id1]"), }, { label: "[ok] minimal", input: []byte(`<1>1 - - - - - -`), }, { label: "[ok] average message", input: []byte(`<29>1 2016-02-21T04:32:57+00:00 web1 someservice - - [origin x-service="someservice"][meta sequenceId="14125553"] 127.0.0.1 - - 1456029177 "GET /v1/ok HTTP/1.1" 200 145 "-" "hacheck 0.9.0" 24306 127.0.0.1:40124 575`), }, { label: "[ok] complicated message", input: []byte(`<78>1 2016-01-15T00:04:01Z host1 CROND 10391 - [meta sequenceId="29" sequenceBlah="foo"][my key="value"] some_message`), }, { label: "[ok] very long message", input: []byte(`<190>1 2016-02-21T01:19:11+00:00 batch6sj - - - [meta sequenceId="21881798" x-group="37051387"][origin x-service="tracking"] metascutellar conversationalist nephralgic exogenetic graphy streng outtaken acouasm amateurism prenotice Lyonese bedull antigrammatical diosphenol gastriloquial bayoneteer sweetener naggy roughhouser dighter addend sulphacid uneffectless ferroprussiate reveal Mazdaist plaudite Australasian distributival wiseman rumness Seidel topazine shahdom sinsion mesmerically pinguedinous ophthalmotonometer scuppler wound eciliate expectedly carriwitchet dictatorialism bindweb pyelitic idic atule kokoon poultryproof rusticial seedlip nitrosate splenadenoma holobenthic uneternal Phocaean epigenic doubtlessly indirection torticollar robomb adoptedly outspeak wappenschawing talalgia Goop domitic savola unstrafed carded unmagnified mythologically orchester obliteration imperialine undisobeyed galvanoplastical cycloplegia quinquennia foremean umbonal marcgraviaceous happenstance theoretical necropoles wayworn Igbira pseudoangelic raising unfrounced lamasary centaurial Japanolatry microlepidoptera`), }, { label: "[ok] all max length and complete", input: []byte(`<191>999 2018-12-31T23:59:59.999999-23:59 abcdefghilmnopqrstuvzabcdefghilmnopqrstuvzabcdefghilmnopqrstuvzabcdefghilmnopqrstuvzabcdefghilmnopqrstuvzabcdefghilmnopqrstuvzabcdefghilmnopqrstuvzabcdefghilmnopqrstuvzabcdefghilmnopqrstuvzabcdefghilmnopqrstuvzabcdefghilmnopqrstuvzabcdefghilmnopqrstuvzabc abcdefghilmnopqrstuvzabcdefghilmnopqrstuvzabcdef abcdefghilmnopqrstuvzabcdefghilmnopqrstuvzabcdefghilmnopqrstuvzabcdefghilmnopqrstuvzabcdefghilmnopqrstuvzabcdefghilmnopqrstuvzab abcdefghilmnopqrstuvzabcdefghilm [an@id key1="val1" key2="val2"][another@id key1="val1"] Some message "GET"`), }, { label: "[ok] all max length except structured data and message", input: []byte(`<191>999 2018-12-31T23:59:59.999999-23:59 abcdefghilmnopqrstuvzabcdefghilmnopqrstuvzabcdefghilmnopqrstuvzabcdefghilmnopqrstuvzabcdefghilmnopqrstuvzabcdefghilmnopqrstuvzabcdefghilmnopqrstuvzabcdefghilmnopqrstuvzabcdefghilmnopqrstuvzabcdefghilmnopqrstuvzabcdefghilmnopqrstuvzabcdefghilmnopqrstuvzabc abcdefghilmnopqrstuvzabcdefghilmnopqrstuvzabcdef abcdefghilmnopqrstuvzabcdefghilmnopqrstuvzabcdefghilmnopqrstuvzabcdefghilmnopqrstuvzabcdefghilmnopqrstuvzabcdefghilmnopqrstuvzab abcdefghilmnopqrstuvzabcdefghilm -`), }, { label: "[ok] minimal with message containing newline", input: []byte("<1>1 - - - - - - x\x0Ay"), }, { label: "[ok] w/o procid, w/o structured data, with message starting with BOM", input: []byte("<34>1 2003-10-11T22:14:15.003Z mymachine.example.com su - ID47 - \xEF\xBB\xBF'su root' failed for lonvick on /dev/pts/8"), }, { label: "[ok] minimal with UTF-8 message", input: []byte("<0>1 - - - - - - ⠊⠀⠉⠁⠝⠀⠑⠁⠞⠀⠛⠇⠁⠎⠎⠀⠁⠝⠙⠀⠊⠞⠀⠙⠕⠑⠎⠝⠞⠀⠓⠥⠗⠞⠀⠍⠑"), }, { label: "[ok] with structured data id, w/o structured data params", input: []byte(`<29>50 2016-01-15T01:00:43Z hn S - - [my@id]`), }, { label: "[ok] with multiple structured data", input: []byte(`<29>50 2016-01-15T01:00:43Z hn S - - [my@id1 k="v"][my@id2 c="val"]`), }, { label: "[ok] with escaped backslash within structured data param value, with message", input: []byte(`<29>50 2016-01-15T01:00:43Z hn S - - [meta es="\\valid"] 1452819643`), }, { label: "[ok] with UTF-8 structured data param value, with message", input: []byte(`<78>1 2016-01-15T00:04:01+00:00 host1 CROND 10391 - [sdid x="⌘"] some_message`), }, } func BenchmarkParse(b *testing.B) { for _, tc := range benchCases { tc := tc b.Run(rxpad(tc.label, 50), func(b *testing.B) { for i := 0; i < b.N; i++ { benchParseResult, _ = NewMachine(WithBestEffort()).Parse(tc.input) } }) } } go-syslog-2.0.0/rfc5424/rfc5424.rl000066400000000000000000000026531340614351500161650ustar00rootroot00000000000000%%{ machine rfc5424; # whitespace sp = ' '; # closing square bracket csb = ']'; # double quote dq = '"'; # backslash bs = 0x5C; # ", ], \ toescape = (dq | csb | bs); # 0..59 sexagesimal = '0'..'5' . '0'..'9'; # 01..31 datemday = ('0' . '1'..'9' | '1'..'2' . '0'..'9' | '3' . '0'..'1'); # 01..12 datemonth = ('0' . '1'..'9' | '1' . '0'..'2'); datefullyear = digit{4}; fulldate = datefullyear '-' datemonth '-' datemday; # 01..23 timehour = ('0'..'1' . '0'..'9' | '2' . '0'..'3'); timeminute = sexagesimal; timesecond = sexagesimal; timesecfrac = '.' digit{1,6}; timenumoffset = ('+' | '-') timehour ':' timeminute; timeoffset = 'Z' | timenumoffset; partialtime = timehour ':' timeminute ':' timesecond . timesecfrac?; fulltime = partialtime . timeoffset; printusascii = '!'..'~'; hostnamerange = printusascii{1,255}; appnamerange = printusascii{1,48}; procidrange = printusascii{1,128}; msgidrange = printusascii{1,32}; sdname = (printusascii - ('=' | sp | csb | dq)){1,32}; # rfc 3629 utf8tail = 0x80..0xBF; utf81 = 0x00..0x7F; utf82 = 0xC2..0xDF utf8tail; utf83 = 0xE0 0xA0..0xBF utf8tail | 0xE1..0xEC utf8tail{2} | 0xED 0x80..0x9F utf8tail | 0xEE..0xEF utf8tail{2}; utf84 = 0xF0 0x90..0xBF utf8tail{2} | 0xF1..0xF3 utf8tail{3} | 0xF4 0x80..0x8F utf8tail{2}; utf8char = utf81 | utf82 | utf83 | utf84; utf8octets = utf8char*; bom = 0xEF 0xBB 0xBF; # utf8char except ", ], \ utf8charwodelims = utf8char - toescape; }%%go-syslog-2.0.0/rfc5424/syslog_message.go000066400000000000000000000154261340614351500201120ustar00rootroot00000000000000package rfc5424 import ( "time" ) type syslogMessage struct { prioritySet bool // We explictly flag the setting of priority since its zero value is a valid priority by RFC 5424 timestampSet bool // We explictly flag the setting of timestamp since its zero value is a valid timestamp by RFC 5424 hasElements bool priority uint8 version uint16 timestamp time.Time hostname string appname string procID string msgID string structuredData map[string]map[string]string message string } func (sm *syslogMessage) valid() bool { if sm.prioritySet && sm.version > 0 && sm.version <= 999 { return true } return false } func (sm *syslogMessage) export() *SyslogMessage { out := &SyslogMessage{} if sm.prioritySet { out.setPriority(sm.priority) } if sm.version > 0 && sm.version <= 999 { out.version = sm.version } if sm.timestampSet { out.timestamp = &sm.timestamp } if sm.hostname != "-" && sm.hostname != "" { out.hostname = &sm.hostname } if sm.appname != "-" && sm.appname != "" { out.appname = &sm.appname } if sm.procID != "-" && sm.procID != "" { out.procID = &sm.procID } if sm.msgID != "-" && sm.msgID != "" { out.msgID = &sm.msgID } if sm.hasElements { out.structuredData = &sm.structuredData } if sm.message != "" { out.message = &sm.message } return out } // SyslogMessage represents a syslog message. type SyslogMessage struct { priority *uint8 facility *uint8 severity *uint8 version uint16 // Grammar mandates that version cannot be 0, so we can use the 0 value of uint16 to signal nil timestamp *time.Time hostname *string appname *string procID *string msgID *string structuredData *map[string]map[string]string message *string } // Valid tells whether the receiving SyslogMessage is well-formed or not. // // A minimally well-formed syslog message contains at least a priority ([1, 191] or 0) and the version (]0, 999]). func (sm *SyslogMessage) Valid() bool { // A nil priority or a 0 version means that the message is not valid // Not checking the priority range since it's parser responsibility if sm.priority != nil && *sm.priority >= 0 && *sm.priority <= 191 && sm.version > 0 && sm.version <= 999 { return true } return false } // Priority returns the syslog priority or nil when not set func (sm *SyslogMessage) Priority() *uint8 { return sm.priority } // Version returns the syslog version or nil when not set func (sm *SyslogMessage) Version() uint16 { return sm.version } func (sm *SyslogMessage) setPriority(value uint8) { sm.priority = &value facility := uint8(value / 8) severity := uint8(value % 8) sm.facility = &facility sm.severity = &severity } // Facility returns the facility code. func (sm *SyslogMessage) Facility() *uint8 { return sm.facility } // Severity returns the severity code. func (sm *SyslogMessage) Severity() *uint8 { return sm.severity } // FacilityMessage returns the text message for the current facility value. func (sm *SyslogMessage) FacilityMessage() *string { if sm.facility != nil { msg := facilities[*sm.facility] return &msg } return nil } // FacilityLevel returns the func (sm *SyslogMessage) FacilityLevel() *string { if sm.facility != nil { if msg, ok := facilityKeywords[*sm.facility]; ok { return &msg } // Fallback to facility message msg := facilities[*sm.facility] return &msg } return nil } // SeverityMessage returns the text message for the current severity value. func (sm *SyslogMessage) SeverityMessage() *string { if sm.severity != nil { msg := severityMessages[*sm.severity] return &msg } return nil } // SeverityLevel returns the text level for the current severity value. func (sm *SyslogMessage) SeverityLevel() *string { if sm.severity != nil { msg := severityLevels[*sm.severity] return &msg } return nil } // SeverityShortLevel returns the short text level for the current severity value. func (sm *SyslogMessage) SeverityShortLevel() *string { if sm.severity != nil { msg := severityLevelsShort[*sm.severity] return &msg } return nil } var severityMessages = map[uint8]string{ 0: "system is unusable", 1: "action must be taken immediately", 2: "critical conditions", 3: "error conditions", 4: "warning conditions", 5: "normal but significant condition", 6: "informational messages", 7: "debug-level messages", } var severityLevels = map[uint8]string{ 0: "emergency", 1: "alert", 2: "critical", 3: "error", 4: "warning", 5: "notice", 6: "informational", 7: "debug", } // As per https://github.com/torvalds/linux/blob/master/tools/include/linux/kern_levels.h and syslog(3) var severityLevelsShort = map[uint8]string{ 0: "emerg", 1: "alert", 2: "crit", 3: "err", 4: "warning", 5: "notice", 6: "info", 7: "debug", } var facilities = map[uint8]string{ 0: "kernel messages", 1: "user-level messages", 2: "mail system", 3: "system daemons", 4: "security/authorization messages", 5: "messages generated internally by syslogd", 6: "line printer subsystem", 7: "network news subsystem", 8: "UUCP subsystem", 9: "clock daemon", 10: "security/authorization messages", 11: "FTP daemon", 12: "NTP subsystem", 13: "log audit", 14: "log alert", 15: "clock daemon (note 2)", // (todo) > some sources reporting "scheduling daemon" 16: "local use 0 (local0)", 17: "local use 1 (local1)", 18: "local use 2 (local2)", 19: "local use 3 (local3)", 20: "local use 4 (local4)", 21: "local use 5 (local5)", 22: "local use 6 (local6)", 23: "local use 7 (local7)", } // As per syslog(3) var facilityKeywords = map[uint8]string{ 0: "kern", 1: "user", 2: "mail", 3: "daemon", 4: "auth", 5: "syslog", 6: "lpr", 7: "news", 8: "uucp", 10: "authpriv", 11: "ftp", 15: "cron", 16: "local0", 17: "local1", 18: "local2", 19: "local3", 20: "local4", 21: "local5", 22: "local6", 23: "local7", } // Timestamp returns the syslog timestamp or nil when not set func (sm *SyslogMessage) Timestamp() *time.Time { return sm.timestamp } // Hostname returns the syslog hostname or nil when not set func (sm *SyslogMessage) Hostname() *string { return sm.hostname } // ProcID returns the syslog proc ID or nil when not set func (sm *SyslogMessage) ProcID() *string { return sm.procID } // Appname returns the syslog appname or nil when not set func (sm *SyslogMessage) Appname() *string { return sm.appname } // MsgID returns the syslog msg ID or nil when not set func (sm *SyslogMessage) MsgID() *string { return sm.msgID } // Message returns the syslog message or nil when not set func (sm *SyslogMessage) Message() *string { return sm.message } // StructuredData returns the syslog structured data or nil when not set func (sm *SyslogMessage) StructuredData() *map[string]map[string]string { return sm.structuredData } go-syslog-2.0.0/syslog.go000066400000000000000000000031571340614351500153130ustar00rootroot00000000000000// Package syslog provides generic interfaces and structs for syslog messages and transport. // Subpackages contains various parsers or scanners for different syslog formats. package syslog import ( "io" "time" ) // BestEfforter is an interface that wraps the HasBestEffort method. type BestEfforter interface { WithBestEffort() HasBestEffort() bool } // Machine represent a FSM able to parse an entire syslog message and return it in an structured way. type Machine interface { Parse(input []byte) (Message, error) BestEfforter } // MachineOption represents the type of option setters for Machine instances. type MachineOption func(m Machine) Machine // Parser is an interface that wraps the Parse method. type Parser interface { Parse(r io.Reader) WithListener(ParserListener) BestEfforter } // ParserOption represent the type of option setters for Parser instances. type ParserOption func(p Parser) Parser // ParserListener is a function that receives syslog parsing results, one by one. type ParserListener func(*Result) // Result wraps the outcomes obtained parsing a syslog message. type Result struct { Message Message Error error } // Message represent a structured representation of a syslog message. type Message interface { Valid() bool Priority() *uint8 Version() uint16 Facility() *uint8 Severity() *uint8 FacilityMessage() *string FacilityLevel() *string SeverityMessage() *string SeverityLevel() *string SeverityShortLevel() *string Timestamp() *time.Time Hostname() *string ProcID() *string Appname() *string MsgID() *string Message() *string StructuredData() *map[string]map[string]string }