[{"data":1,"prerenderedAt":788},["ShallowReactive",2],{"navigation":3,"\u002Fguides\u002Fperformance":335,"\u002Fguides\u002Fperformance-surround":783},[4,27,73,95,121,135,305,331],{"title":5,"icon":6,"path":7,"stem":8,"children":9,"page":26},"Getting started","i-lucide-rocket","\u002Fgetting-started","1.getting-started",[10,14,18,22],{"title":11,"path":12,"stem":13},"Introduction","\u002Fgetting-started\u002Fintroduction","1.getting-started\u002F1.introduction",{"title":15,"path":16,"stem":17},"Installation","\u002Fgetting-started\u002Finstallation","1.getting-started\u002F2.installation",{"title":19,"path":20,"stem":21},"Quick start","\u002Fgetting-started\u002Fquick-start","1.getting-started\u002F3.quick-start",{"title":23,"path":24,"stem":25},"MSRV","\u002Fgetting-started\u002Fmsrv","1.getting-started\u002F9.msrv",false,{"title":28,"icon":29,"path":30,"stem":31,"children":32,"page":26},"Schemas","i-lucide-shapes","\u002Fschemas","2.schemas",[33,37,41,45,49,53,57,61,65,69],{"title":34,"path":35,"stem":36},"Strings","\u002Fschemas\u002Fstrings","2.schemas\u002F1.strings",{"title":38,"path":39,"stem":40},"Custom rules","\u002Fschemas\u002Frules","2.schemas\u002F10.rules",{"title":42,"path":43,"stem":44},"Numbers","\u002Fschemas\u002Fnumbers","2.schemas\u002F2.numbers",{"title":46,"path":47,"stem":48},"Booleans, literals and enums","\u002Fschemas\u002Fprimitives","2.schemas\u002F3.primitives",{"title":50,"path":51,"stem":52},"Dates and times","\u002Fschemas\u002Fdates","2.schemas\u002F4.dates",{"title":54,"path":55,"stem":56},"Collections","\u002Fschemas\u002Fcollections","2.schemas\u002F5.collections",{"title":58,"path":59,"stem":60},"Dynamic objects","\u002Fschemas\u002Fobjects","2.schemas\u002F6.objects",{"title":62,"path":63,"stem":64},"Modifiers","\u002Fschemas\u002Fmodifiers","2.schemas\u002F7.modifiers",{"title":66,"path":67,"stem":68},"Combinators","\u002Fschemas\u002Fcombinators","2.schemas\u002F8.combinators",{"title":70,"path":71,"stem":72},"Other types","\u002Fschemas\u002Fspecial-types","2.schemas\u002F9.special-types",{"title":74,"icon":75,"path":76,"stem":77,"children":78,"page":26},"Structs","i-lucide-braces","\u002Fstructs","3.structs",[79,83,87,91],{"title":80,"path":81,"stem":82},"schema! macro","\u002Fstructs\u002Fschema-macro","3.structs\u002F1.schema-macro",{"title":84,"path":85,"stem":86},"#[derive(Validate)]","\u002Fstructs\u002Fderive","3.structs\u002F2.derive",{"title":88,"path":89,"stem":90},"Parse vs validate","\u002Fstructs\u002Fparse-vs-validate","3.structs\u002F3.parse-vs-validate",{"title":92,"path":93,"stem":94},"Lenient parsing","\u002Fstructs\u002Flenient","3.structs\u002F4.lenient",{"title":96,"icon":97,"path":98,"stem":99,"children":100,"page":26},"Errors","i-lucide-triangle-alert","\u002Ferrors","4.errors",[101,105,109,113,117],{"title":102,"path":103,"stem":104},"Error model","\u002Ferrors\u002Foverview","4.errors\u002F1.overview",{"title":106,"path":107,"stem":108},"Issue codes","\u002Ferrors\u002Fissue-codes","4.errors\u002F2.issue-codes",{"title":110,"path":111,"stem":112},"Formatting","\u002Ferrors\u002Fformatting","4.errors\u002F3.formatting",{"title":114,"path":115,"stem":116},"Custom messages","\u002Ferrors\u002Fcustom-messages","4.errors\u002F4.custom-messages",{"title":118,"path":119,"stem":120},"Translations","\u002Ferrors\u002Fi18n","4.errors\u002F5.i18n",{"title":122,"icon":123,"path":124,"stem":125,"children":126,"page":26},"OpenAPI","i-lucide-file-json","\u002Fopenapi","5.openapi",[127,131],{"title":128,"path":129,"stem":130},"JSON Schema and OpenAPI","\u002Fopenapi\u002Fjson-schema","5.openapi\u002F1.json-schema",{"title":132,"path":133,"stem":134},"Schema diff","\u002Fopenapi\u002Fdiff","5.openapi\u002F2.diff",{"title":136,"icon":137,"path":138,"stem":139,"children":140,"page":26},"Integrations","i-lucide-plug","\u002Fintegrations","6.integrations",[141,191,209,223,245,259,273,291],{"title":142,"icon":143,"path":144,"stem":145,"children":146,"page":26},"Web frameworks","i-lucide-globe","\u002Fintegrations\u002Fweb","6.integrations\u002F1.web",[147,151,155,159,163,167,171,175,179,183,187],{"title":148,"path":149,"stem":150},"Web adapters overview","\u002Fintegrations\u002Fweb\u002Foverview","6.integrations\u002F1.web\u002F01.overview",{"title":152,"path":153,"stem":154},"vld-axum","\u002Fintegrations\u002Fweb\u002Faxum","6.integrations\u002F1.web\u002F02.axum",{"title":156,"path":157,"stem":158},"vld-actix","\u002Fintegrations\u002Fweb\u002Factix","6.integrations\u002F1.web\u002F03.actix",{"title":160,"path":161,"stem":162},"vld-ntex","\u002Fintegrations\u002Fweb\u002Fntex","6.integrations\u002F1.web\u002F04.ntex",{"title":164,"path":165,"stem":166},"vld-poem","\u002Fintegrations\u002Fweb\u002Fpoem","6.integrations\u002F1.web\u002F05.poem",{"title":168,"path":169,"stem":170},"vld-rama","\u002Fintegrations\u002Fweb\u002Frama","6.integrations\u002F1.web\u002F06.rama",{"title":172,"path":173,"stem":174},"vld-rocket","\u002Fintegrations\u002Fweb\u002Frocket","6.integrations\u002F1.web\u002F07.rocket",{"title":176,"path":177,"stem":178},"vld-salvo","\u002Fintegrations\u002Fweb\u002Fsalvo","6.integrations\u002F1.web\u002F08.salvo",{"title":180,"path":181,"stem":182},"vld-tower","\u002Fintegrations\u002Fweb\u002Ftower","6.integrations\u002F1.web\u002F09.tower",{"title":184,"path":185,"stem":186},"vld-warp","\u002Fintegrations\u002Fweb\u002Fwarp","6.integrations\u002F1.web\u002F10.warp",{"title":188,"path":189,"stem":190},"vld-tonic","\u002Fintegrations\u002Fweb\u002Ftonic","6.integrations\u002F1.web\u002F11.tonic",{"title":192,"icon":193,"path":194,"stem":195,"children":196,"page":26},"OpenAPI and JSON Schema","i-lucide-file-code","\u002Fintegrations\u002Fopenapi","6.integrations\u002F2.openapi",[197,201,205],{"title":198,"path":199,"stem":200},"vld-utoipa","\u002Fintegrations\u002Fopenapi\u002Futoipa","6.integrations\u002F2.openapi\u002F1.utoipa",{"title":202,"path":203,"stem":204},"vld-schemars","\u002Fintegrations\u002Fopenapi\u002Fschemars","6.integrations\u002F2.openapi\u002F2.schemars",{"title":206,"path":207,"stem":208},"vld-aide","\u002Fintegrations\u002Fopenapi\u002Faide","6.integrations\u002F2.openapi\u002F3.aide",{"title":210,"icon":211,"path":212,"stem":213,"children":214,"page":26},"Codegen and test data","i-lucide-wand","\u002Fintegrations\u002Fcodegen","6.integrations\u002F3.codegen",[215,219],{"title":216,"path":217,"stem":218},"vld-ts","\u002Fintegrations\u002Fcodegen\u002Fts","6.integrations\u002F3.codegen\u002F1.ts",{"title":220,"path":221,"stem":222},"vld-fake","\u002Fintegrations\u002Fcodegen\u002Ffake","6.integrations\u002F3.codegen\u002F2.fake",{"title":224,"icon":225,"path":226,"stem":227,"children":228,"page":26},"Databases","i-lucide-database","\u002Fintegrations\u002Fdatabase","6.integrations\u002F4.database",[229,233,237,241],{"title":230,"path":231,"stem":232},"vld-sqlx","\u002Fintegrations\u002Fdatabase\u002Fsqlx","6.integrations\u002F4.database\u002F1.sqlx",{"title":234,"path":235,"stem":236},"vld-diesel","\u002Fintegrations\u002Fdatabase\u002Fdiesel","6.integrations\u002F4.database\u002F2.diesel",{"title":238,"path":239,"stem":240},"vld-sea","\u002Fintegrations\u002Fdatabase\u002Fsea-orm","6.integrations\u002F4.database\u002F3.sea-orm",{"title":242,"path":243,"stem":244},"vld-surrealdb","\u002Fintegrations\u002Fdatabase\u002Fsurrealdb","6.integrations\u002F4.database\u002F4.surrealdb",{"title":246,"icon":247,"path":248,"stem":249,"children":250,"page":26},"Messaging","i-lucide-mail","\u002Fintegrations\u002Fmessaging","6.integrations\u002F5.messaging",[251,255],{"title":252,"path":253,"stem":254},"vld-redis","\u002Fintegrations\u002Fmessaging\u002Fredis","6.integrations\u002F5.messaging\u002F1.redis",{"title":256,"path":257,"stem":258},"vld-lapin","\u002Fintegrations\u002Fmessaging\u002Flapin","6.integrations\u002F5.messaging\u002F2.lapin",{"title":260,"icon":261,"path":262,"stem":263,"children":264,"page":26},"Config and CLI","i-lucide-terminal","\u002Fintegrations\u002Fconfig-cli","6.integrations\u002F6.config-cli",[265,269],{"title":266,"path":267,"stem":268},"vld-config","\u002Fintegrations\u002Fconfig-cli\u002Fconfig","6.integrations\u002F6.config-cli\u002F1.config",{"title":270,"path":271,"stem":272},"vld-clap","\u002Fintegrations\u002Fconfig-cli\u002Fclap","6.integrations\u002F6.config-cli\u002F2.clap",{"title":274,"icon":275,"path":276,"stem":277,"children":278,"page":26},"UI frameworks","i-lucide-monitor","\u002Fintegrations\u002Fui","6.integrations\u002F7.ui",[279,283,287],{"title":280,"path":281,"stem":282},"vld-dioxus","\u002Fintegrations\u002Fui\u002Fdioxus","6.integrations\u002F7.ui\u002F1.dioxus",{"title":284,"path":285,"stem":286},"vld-leptos","\u002Fintegrations\u002Fui\u002Fleptos","6.integrations\u002F7.ui\u002F2.leptos",{"title":288,"path":289,"stem":290},"vld-tauri","\u002Fintegrations\u002Fui\u002Ftauri","6.integrations\u002F7.ui\u002F3.tauri",{"title":292,"icon":293,"path":294,"stem":295,"children":296,"page":26},"Shared crates","i-lucide-package","\u002Fintegrations\u002Fshared","6.integrations\u002F8.shared",[297,301],{"title":298,"path":299,"stem":300},"vld-http-common","\u002Fintegrations\u002Fshared\u002Fhttp-common","6.integrations\u002F8.shared\u002F1.http-common",{"title":302,"path":303,"stem":304},"vld-integration-common","\u002Fintegrations\u002Fshared\u002Fintegration-common","6.integrations\u002F8.shared\u002F2.integration-common",{"title":306,"icon":307,"path":308,"stem":309,"children":310,"page":26},"Guides","i-lucide-book-open","\u002Fguides","7.guides",[311,315,319,323,327],{"title":312,"path":313,"stem":314},"Migration","\u002Fguides\u002Fmigration","7.guides\u002F1.migration",{"title":316,"path":317,"stem":318},"Security notes","\u002Fguides\u002Fsecurity","7.guides\u002F2.security",{"title":320,"path":321,"stem":322},"Performance","\u002Fguides\u002Fperformance","7.guides\u002F3.performance",{"title":324,"path":325,"stem":326},"Contributing","\u002Fguides\u002Fcontributing","7.guides\u002F4.contributing",{"title":328,"path":329,"stem":330},"FAQ","\u002Fguides\u002Ffaq","7.guides\u002F5.faq",{"title":332,"path":333,"stem":334},"Changelog","\u002Fchangelog","9.changelog",{"id":336,"title":320,"body":337,"description":777,"extension":778,"links":779,"meta":780,"navigation":564,"path":321,"seo":781,"stem":322,"__hash__":782},"docs\u002F7.guides\u002F3.performance.md",{"type":338,"value":339,"toc":769},"minimark",[340,345,372,375,389,493,503,512,516,519,685,689,699,703,716,720,733,737,743,765],[341,342,344],"h2",{"id":343},"schemas-are-built-once","Schemas are built once",[346,347,348,352,353,352,356,359,360,362,363,367,368,371],"p",{},[349,350,351],"code",{},"schema!",", ",[349,354,355],{},"impl_validate_fields!",[349,357,358],{},"impl_rules!"," and ",[349,361,84],{}," (non-generic structs) build each field schema ",[364,365,366],"strong",{},"once per process",", on first use, and keep it in a ",[349,369,370],{},"static",". Regexes inside them are compiled once, and message templates are not re-rendered per key.",[346,373,374],{},"The trade-off:",[376,377,378,386],"ul",{},[379,380,381,382,385],"li",{},"field schemas must be ",[349,383,384],{},"Send + Sync + 'static",";",[379,387,388],{},"values captured from runtime state are frozen at the first parse.",[390,391,396],"pre",{"className":392,"code":393,"language":394,"meta":395,"style":395},"language-rust shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","\u002F\u002F Frozen: `limit` is read on the first parse only.\nvld::schema! {\n    pub struct Comment {\n        pub text: String => vld::string().max(max_comment_len()),\n    }\n}\n","rust","",[349,397,398,407,424,439,481,487],{"__ignoreMap":395},[399,400,403],"span",{"class":401,"line":402},"line",1,[399,404,406],{"class":405},"sHwdD","\u002F\u002F Frozen: `limit` is read on the first parse only.\n",[399,408,410,414,418,421],{"class":401,"line":409},2,[399,411,413],{"class":412},"sBMFI","vld",[399,415,417],{"class":416},"sMK4o","::",[399,419,351],{"class":420},"s2Zo4",[399,422,423],{"class":416}," {\n",[399,425,427,431,434,437],{"class":401,"line":426},3,[399,428,430],{"class":429},"spNyl","    pub",[399,432,433],{"class":429}," struct",[399,435,436],{"class":412}," Comment",[399,438,423],{"class":416},[399,440,442,445,449,452,455,458,461,463,466,469,472,475,478],{"class":401,"line":441},4,[399,443,444],{"class":429},"        pub",[399,446,448],{"class":447},"sTEyZ"," text",[399,450,451],{"class":416},":",[399,453,454],{"class":412}," String",[399,456,457],{"class":416}," =>",[399,459,460],{"class":412}," vld",[399,462,417],{"class":416},[399,464,465],{"class":420},"string",[399,467,468],{"class":416},"().",[399,470,471],{"class":420},"max",[399,473,474],{"class":416},"(",[399,476,477],{"class":420},"max_comment_len",[399,479,480],{"class":416},"()),\n",[399,482,484],{"class":401,"line":483},5,[399,485,486],{"class":416},"    }\n",[399,488,490],{"class":401,"line":489},6,[399,491,492],{"class":416},"}\n",[346,494,495,496,502],{},"If a limit changes at runtime (per tenant, from a database), build that schema yourself with ",[497,498,499],"a",{"href":59},[349,500,501],{},"vld::object()"," and keep it where you keep the configuration.",[346,504,505,506,508,509,511],{},"Generic ",[349,507,84],{}," structs rebuild their schemas on every call, because a ",[349,510,370],{}," cannot depend on a type parameter.",[341,513,515],{"id":514},"build-your-own-schemas-once","Build your own schemas once",[346,517,518],{},"Free-standing schemas are values: build them once and reuse them.",[390,520,522],{"className":392,"code":521,"language":394,"meta":395,"style":395},"use std::sync::LazyLock;\nuse vld::prelude::*;\n\nstatic EMAIL: LazyLock\u003CZString> = LazyLock::new(|| vld::string().trim().email());\n\nfn check(input: &str) -> bool {\n    EMAIL.parse(input).is_ok()\n}\n",[349,523,524,546,560,566,619,623,655,680],{"__ignoreMap":395},[399,525,526,530,533,535,538,540,543],{"class":401,"line":402},[399,527,529],{"class":528},"sbssI","use",[399,531,532],{"class":412}," std",[399,534,417],{"class":416},[399,536,537],{"class":412},"sync",[399,539,417],{"class":416},[399,541,542],{"class":412},"LazyLock",[399,544,545],{"class":416},";\n",[399,547,548,550,552,554,557],{"class":401,"line":409},[399,549,529],{"class":528},[399,551,460],{"class":412},[399,553,417],{"class":416},[399,555,556],{"class":412},"prelude",[399,558,559],{"class":416},"::*;\n",[399,561,562],{"class":401,"line":426},[399,563,565],{"emptyLinePlaceholder":564},true,"\n",[399,567,568,570,573,575,578,581,584,587,590,592,594,597,600,602,604,606,608,611,613,616],{"class":401,"line":441},[399,569,370],{"class":429},[399,571,572],{"class":447}," EMAIL",[399,574,451],{"class":416},[399,576,577],{"class":412}," LazyLock",[399,579,580],{"class":416},"\u003C",[399,582,583],{"class":412},"ZString",[399,585,586],{"class":416},">",[399,588,589],{"class":416}," =",[399,591,577],{"class":412},[399,593,417],{"class":416},[399,595,596],{"class":420},"new",[399,598,599],{"class":416},"(||",[399,601,460],{"class":412},[399,603,417],{"class":416},[399,605,465],{"class":420},[399,607,468],{"class":416},[399,609,610],{"class":420},"trim",[399,612,468],{"class":416},[399,614,615],{"class":420},"email",[399,617,618],{"class":416},"());\n",[399,620,621],{"class":401,"line":483},[399,622,565],{"emptyLinePlaceholder":564},[399,624,625,628,631,633,636,638,641,644,647,650,653],{"class":401,"line":489},[399,626,627],{"class":528},"fn",[399,629,630],{"class":420}," check",[399,632,474],{"class":416},[399,634,635],{"class":447},"input",[399,637,451],{"class":416},[399,639,640],{"class":416}," &",[399,642,643],{"class":412},"str",[399,645,646],{"class":416},")",[399,648,649],{"class":416}," ->",[399,651,652],{"class":412}," bool",[399,654,423],{"class":416},[399,656,658,661,664,667,669,671,674,677],{"class":401,"line":657},7,[399,659,660],{"class":447},"    EMAIL",[399,662,663],{"class":416},".",[399,665,666],{"class":420},"parse",[399,668,474],{"class":416},[399,670,635],{"class":447},[399,672,673],{"class":416},").",[399,675,676],{"class":420},"is_ok",[399,678,679],{"class":416},"()\n",[399,681,683],{"class":401,"line":682},8,[399,684,492],{"class":416},[341,686,688],{"id":687},"input-is-borrowed","Input is borrowed",[346,690,691,694,695,698],{},[349,692,693],{},"parse(&serde_json::Value)"," borrows the value instead of cloning it. If you already have a ",[349,696,697],{},"Value"," (from a framework or a message queue), pass it directly instead of re-serializing to a string.",[341,700,702],{"id":701},"cheap-checks-first","Cheap checks first",[346,704,705,706,352,709,712,713,663],{},"All checks run so that every issue is reported, so order does not change the result. It does change the cost of a failing parse slightly: put length limits before expensive formats such as ",[349,707,708],{},"regex",[349,710,711],{},"url_strict()"," or ",[349,714,715],{},"phone_e164_strict()",[341,717,719],{"id":718},"unions","Unions",[346,721,722,725,726,732],{},[349,723,724],{},"vld::union!"," tries variants in order and collects the errors of every failed variant. If the input carries a tag, a ",[497,727,729],{"href":728},"\u002Fschemas\u002Fcombinators#discriminated-union",[349,730,731],{},"discriminated_union"," looks the variant up directly.",[341,734,736],{"id":735},"benchmarks","Benchmarks",[346,738,739,740,451],{},"The core crate has Criterion benchmarks in ",[349,741,742],{},"crates\u002Fvld\u002Fbenches\u002Fvalidation_bench.rs",[390,744,748],{"className":745,"code":746,"language":747,"meta":395,"style":395},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","cargo bench -p vld\n","bash",[349,749,750],{"__ignoreMap":395},[399,751,752,755,759,762],{"class":401,"line":402},[399,753,754],{"class":412},"cargo",[399,756,758],{"class":757},"sfazB"," bench",[399,760,761],{"class":757}," -p",[399,763,764],{"class":757}," vld\n",[766,767,768],"style",{},"html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}",{"title":395,"searchDepth":409,"depth":426,"links":770},[771,772,773,774,775,776],{"id":343,"depth":409,"text":344},{"id":514,"depth":409,"text":515},{"id":687,"depth":409,"text":688},{"id":701,"depth":409,"text":702},{"id":718,"depth":409,"text":719},{"id":735,"depth":409,"text":736},"How vld avoids repeated work, and how to keep your schemas fast.","md",null,{},{"title":320,"description":777},"hy8u6pLcYD4GAwe4g19Hsd7EfKSh2hXTeu20AOlvF5A",[784,786],{"title":316,"path":317,"stem":318,"description":785,"children":-1},"Validating untrusted input safely — filesystem paths, URLs, body limits, headers, cookies and error output.",{"title":324,"path":325,"stem":326,"description":787,"children":-1},"Repository layout, running CI locally, keeping target\u002F small, snapshots and fuzzing.",1794036360491]