[{"data":1,"prerenderedAt":2900},["ShallowReactive",2],{"navLinks":3,"sidebar_docs_navigation_\u002Fdocs\u002Fshield-base":64,"navigation":138,"navLinks_footer":802,"\u002Fdocs\u002Fshield-base\u002Fdata-sources\u002Fcity_page":815,"\u002Fdocs\u002Fshield-base\u002Fdata-sources\u002Fcity_surround":1972,"\u002Fdocs\u002Fshield-base\u002Fdata-sources\u002Fcity":1975},{"id":4,"extension":5,"links":6,"meta":61,"stem":62,"__hash__":63},"navigationMenu\u002Fnavigation.json","json",[7,52,57],{"nested":8,"label":9,"icon":10,"to":11,"children":12},true,"Docs","i-lucide-book-open","\u002Fdocs\u002Fgetting-started",[13,19,26,32,39,45],{"label":14,"icon":15,"to":11,"description":16,"github":17,"badge":18},"Getting Started","i-lucide-rocket","An introduction to help you understand the core components.","https:\u002F\u002Fgithub.com\u002FSergo706\u002Fdocshub","Start Here",{"label":20,"icon":21,"to":22,"description":23,"github":24,"badge":25},"Auth H3 Client","i-lucide-key-round","\u002Fdocs\u002Fauth-h3client","Seamlessly enforce OAuth 2.0 authentication and session management integrated directly as the client of the IAM module.","https:\u002F\u002Fgithub.com\u002FSergo706\u002Fauth-h3client","Core",{"label":27,"icon":28,"to":29,"description":30,"github":31,"badge":25},"IAM","i-lucide-shield-check","\u002Fdocs\u002Fiam","Identity and Access Management featuring granular roles, permissions, and security policies.","https:\u002F\u002Fgithub.com\u002FSergo706\u002Fauth",{"label":33,"icon":34,"to":35,"description":36,"github":37,"badge":38},"Bot Detection","i-lucide-cpu","\u002Fdocs\u002Fbot-detection","Advanced behavioral analysis and request fingerprinting to stop malicious automated traffic.","https:\u002F\u002Fgithub.com\u002FSergo706\u002Fbot-detector","Security",{"label":40,"icon":41,"to":42,"description":43,"github":44,"badge":38},"Shield Base","i-lucide-database-zap","\u002Fdocs\u002Fshield-base","CLI and programmatic toolkit for compiling offline-ready IP intelligence databases from BGP, GeoIP, Tor, FireHOL, and other public threat feeds.","https:\u002F\u002Fgithub.com\u002FSergo706\u002Fshield-base-cli",{"label":46,"icon":47,"to":48,"description":49,"github":50,"badge":51},"Utils","i-lucide-wrench","\u002Fdocs\u002Futils","A standard library of highly optimized helpers for formatting, validation, and core logic.","https:\u002F\u002Fgithub.com\u002FSergo706\u002Futils","Library",{"nested":53,"label":54,"icon":55,"to":56},false,"Blog","i-lucide-pen-line","\u002Fblog",{"nested":53,"label":58,"icon":59,"to":60},"Website","lucide:app-window-mac","https:\u002F\u002Friavzon.com",{},"navigation","gkaQ0xRGxSLrLyM3kttLe0oBwkrR1EBjlepF8LSbwF8",[65],{"title":9,"path":66,"stem":67,"children":68,"page":53},"\u002Fdocs","docs",[69],{"title":40,"path":42,"stem":70,"children":71},"docs\u002Fshield-base\u002Findex",[72,73,76,80,122,126,130,134],{"title":40,"path":42,"stem":70},{"title":14,"path":74,"stem":75},"\u002Fdocs\u002Fshield-base\u002Fgetting-started","docs\u002Fshield-base\u002F00.getting-started",{"title":77,"path":78,"stem":79},"CLI Reference","\u002Fdocs\u002Fshield-base\u002Fcli","docs\u002Fshield-base\u002F01.cli",{"title":81,"path":82,"stem":83,"children":84},"Data Sources","\u002Fdocs\u002Fshield-base\u002Fdata-sources","docs\u002Fshield-base\u002F02.data-sources\u002Findex",[85,86,90,94,98,102,106,110,114,118],{"title":81,"path":82,"stem":83},{"title":87,"path":88,"stem":89},"BGP \u002F ASN","\u002Fdocs\u002Fshield-base\u002Fdata-sources\u002Fbgp","docs\u002Fshield-base\u002F02.data-sources\u002Fbgp",{"title":91,"path":92,"stem":93},"City Geolocation","\u002Fdocs\u002Fshield-base\u002Fdata-sources\u002Fcity","docs\u002Fshield-base\u002F02.data-sources\u002Fcity",{"title":95,"path":96,"stem":97},"Country Geolocation","\u002Fdocs\u002Fshield-base\u002Fdata-sources\u002Fcountry","docs\u002Fshield-base\u002F02.data-sources\u002Fcountry",{"title":99,"path":100,"stem":101},"Verified Crawlers","\u002Fdocs\u002Fshield-base\u002Fdata-sources\u002Fcrawlers","docs\u002Fshield-base\u002F02.data-sources\u002Fcrawlers",{"title":103,"path":104,"stem":105},"Disposable Emails","\u002Fdocs\u002Fshield-base\u002Fdata-sources\u002Femail","docs\u002Fshield-base\u002F02.data-sources\u002Femail",{"title":107,"path":108,"stem":109},"FireHOL Threat Intelligence","\u002Fdocs\u002Fshield-base\u002Fdata-sources\u002Ffirehol","docs\u002Fshield-base\u002F02.data-sources\u002Ffirehol",{"title":111,"path":112,"stem":113},"Proxy Detection","\u002Fdocs\u002Fshield-base\u002Fdata-sources\u002Fproxy","docs\u002Fshield-base\u002F02.data-sources\u002Fproxy",{"title":115,"path":116,"stem":117},"Tor Nodes","\u002Fdocs\u002Fshield-base\u002Fdata-sources\u002Ftor","docs\u002Fshield-base\u002F02.data-sources\u002Ftor",{"title":119,"path":120,"stem":121},"Suspicious User-Agents","\u002Fdocs\u002Fshield-base\u002Fdata-sources\u002Fuseragent","docs\u002Fshield-base\u002F02.data-sources\u002Fuseragent",{"title":123,"path":124,"stem":125},"Programmatic Usage","\u002Fdocs\u002Fshield-base\u002Fusage","docs\u002Fshield-base\u002F03.usage",{"title":127,"path":128,"stem":129},"Custom Data Sources","\u002Fdocs\u002Fshield-base\u002Fcustom-data-sources","docs\u002Fshield-base\u002F04.custom-data-sources",{"title":131,"path":132,"stem":133},"TypeScript Types","\u002Fdocs\u002Fshield-base\u002Ftypes","docs\u002Fshield-base\u002F05.types",{"title":135,"path":136,"stem":137},"API Reference","\u002Fdocs\u002Fshield-base\u002Fapi","docs\u002Fshield-base\u002F06.api",[139],{"title":9,"path":66,"stem":67,"children":140,"page":53},[141,288,405,410,588,609],{"title":20,"path":22,"stem":142,"children":143},"docs\u002Fauth-h3client\u002Findex",[144,145,154,191,217,239,242,263,267],{"title":20,"path":22,"stem":142},{"title":14,"path":146,"stem":147,"children":148},"\u002Fdocs\u002Fauth-h3client\u002Fgetting-started","docs\u002Fauth-h3client\u002F00.getting-started\u002Findex",[149,150],{"title":14,"path":146,"stem":147},{"title":151,"path":152,"stem":153},"Nuxt Module","\u002Fdocs\u002Fauth-h3client\u002Fgetting-started\u002Fnuxt","docs\u002Fauth-h3client\u002F00.getting-started\u002F00.nuxt",{"title":155,"path":156,"stem":157,"children":158},"Essentials","\u002Fdocs\u002Fauth-h3client\u002Fessentials","docs\u002Fauth-h3client\u002F01.essentials\u002Findex",[159,160,164,168,172,176,180,183,187],{"title":155,"path":156,"stem":157},{"title":161,"path":162,"stem":163},"Session Management","\u002Fdocs\u002Fauth-h3client\u002Fessentials\u002Fsession","docs\u002Fauth-h3client\u002F01.essentials\u002F00.session",{"title":165,"path":166,"stem":167},"Route Protection","\u002Fdocs\u002Fauth-h3client\u002Fessentials\u002Froute-protection","docs\u002Fauth-h3client\u002F01.essentials\u002F01.route-protection",{"title":169,"path":170,"stem":171},"CSRF Protection","\u002Fdocs\u002Fauth-h3client\u002Fessentials\u002Fcsrf","docs\u002Fauth-h3client\u002F01.essentials\u002F02.csrf",{"title":173,"path":174,"stem":175},"Auth Flows","\u002Fdocs\u002Fauth-h3client\u002Fessentials\u002Fauth-flows","docs\u002Fauth-h3client\u002F01.essentials\u002F03.auth-flows",{"title":177,"path":178,"stem":179},"OAuth and OIDC","\u002Fdocs\u002Fauth-h3client\u002Fessentials\u002Foauth","docs\u002Fauth-h3client\u002F01.essentials\u002F04.oauth",{"title":33,"path":181,"stem":182},"\u002Fdocs\u002Fauth-h3client\u002Fessentials\u002Fbot-detection","docs\u002Fauth-h3client\u002F01.essentials\u002F05.bot-detection",{"title":184,"path":185,"stem":186},"Cookies","\u002Fdocs\u002Fauth-h3client\u002Fessentials\u002Fcookies","docs\u002Fauth-h3client\u002F01.essentials\u002F06.cookies",{"title":188,"path":189,"stem":190},"Logging","\u002Fdocs\u002Fauth-h3client\u002Fessentials\u002Flogging","docs\u002Fauth-h3client\u002F01.essentials\u002F07.logging",{"title":192,"path":193,"stem":194,"children":195},"MFA","\u002Fdocs\u002Fauth-h3client\u002Fmfa","docs\u002Fauth-h3client\u002F02.mfa\u002Findex",[196,197,201,205,209,213],{"title":192,"path":193,"stem":194},{"title":198,"path":199,"stem":200},"Built-in MFA","\u002Fdocs\u002Fauth-h3client\u002Fmfa\u002Fbuilt-in-flow","docs\u002Fauth-h3client\u002F02.mfa\u002F01.built-in-flow",{"title":202,"path":203,"stem":204},"Password Reset","\u002Fdocs\u002Fauth-h3client\u002Fmfa\u002Fpassword-reset","docs\u002Fauth-h3client\u002F02.mfa\u002F02.password-reset",{"title":206,"path":207,"stem":208},"Email Change","\u002Fdocs\u002Fauth-h3client\u002Fmfa\u002Femail-change","docs\u002Fauth-h3client\u002F02.mfa\u002F03.email-change",{"title":210,"path":211,"stem":212},"Custom MFA Flow","\u002Fdocs\u002Fauth-h3client\u002Fmfa\u002Fcustom-flow","docs\u002Fauth-h3client\u002F02.mfa\u002F04.custom-flow",{"title":214,"path":215,"stem":216},"Client-Side MFA","\u002Fdocs\u002Fauth-h3client\u002Fmfa\u002Fclient-side","docs\u002Fauth-h3client\u002F02.mfa\u002F05.client-side",{"title":218,"path":219,"stem":220,"children":221},"Client-side","\u002Fdocs\u002Fauth-h3client\u002Fclient","docs\u002Fauth-h3client\u002F03.client\u002Findex",[222,223,227,231,235],{"title":218,"path":219,"stem":220},{"title":224,"path":225,"stem":226},"useAuthData","\u002Fdocs\u002Fauth-h3client\u002Fclient\u002Fuse-auth-data","docs\u002Fauth-h3client\u002F03.client\u002F00.use-auth-data",{"title":228,"path":229,"stem":230},"useMagicLink","\u002Fdocs\u002Fauth-h3client\u002Fclient\u002Fuse-magic-link","docs\u002Fauth-h3client\u002F03.client\u002F01.use-magic-link",{"title":232,"path":233,"stem":234},"executeRequest","\u002Fdocs\u002Fauth-h3client\u002Fclient\u002Fexecute-request","docs\u002Fauth-h3client\u002F03.client\u002F02.execute-request",{"title":236,"path":237,"stem":238},"getCsrfToken","\u002Fdocs\u002Fauth-h3client\u002Fclient\u002Fget-csrf-token","docs\u002Fauth-h3client\u002F03.client\u002F03.get-csrf-token",{"title":38,"path":240,"stem":241},"\u002Fdocs\u002Fauth-h3client\u002Fsecurity","docs\u002Fauth-h3client\u002F04.security",{"title":243,"path":244,"stem":245,"children":246,"page":53},"Guides","\u002Fdocs\u002Fauth-h3client\u002Fguides","docs\u002Fauth-h3client\u002F05.guides",[247,251,255,259],{"title":248,"path":249,"stem":250},"H3 and Nitro Setup","\u002Fdocs\u002Fauth-h3client\u002Fguides\u002Fh3-nitro","docs\u002Fauth-h3client\u002F05.guides\u002F00.h3-nitro",{"title":252,"path":253,"stem":254},"HMAC Inter-service Auth","\u002Fdocs\u002Fauth-h3client\u002Fguides\u002Fhmac","docs\u002Fauth-h3client\u002F05.guides\u002Fhmac",{"title":256,"path":257,"stem":258},"Image Upload","\u002Fdocs\u002Fauth-h3client\u002Fguides\u002Fimage-upload","docs\u002Fauth-h3client\u002F05.guides\u002Fimage-upload",{"title":260,"path":261,"stem":262},"mTLS Configuration","\u002Fdocs\u002Fauth-h3client\u002Fguides\u002Fmtls","docs\u002Fauth-h3client\u002F05.guides\u002Fmtls",{"title":264,"path":265,"stem":266},"Configuration","\u002Fdocs\u002Fauth-h3client\u002Fconfiguration","docs\u002Fauth-h3client\u002F06.configuration",{"title":135,"path":268,"stem":269,"children":270},"\u002Fdocs\u002Fauth-h3client\u002Fapi","docs\u002Fauth-h3client\u002F07.api\u002Findex",[271,272,276,280,284],{"title":135,"path":268,"stem":269},{"title":273,"path":274,"stem":275},"Routes Reference","\u002Fdocs\u002Fauth-h3client\u002Fapi\u002Fcontrollers","docs\u002Fauth-h3client\u002F07.api\u002F00.controllers",{"title":277,"path":278,"stem":279},"Middleware Reference","\u002Fdocs\u002Fauth-h3client\u002Fapi\u002Fmiddleware","docs\u002Fauth-h3client\u002F07.api\u002F01.middleware",{"title":281,"path":282,"stem":283},"Client-side Reference","\u002Fdocs\u002Fauth-h3client\u002Fapi\u002Fcomposables","docs\u002Fauth-h3client\u002F07.api\u002F02.composables",{"title":285,"path":286,"stem":287},"Utilities","\u002Fdocs\u002Fauth-h3client\u002Fapi\u002Futilities","docs\u002Fauth-h3client\u002F07.api\u002F03.utilities",{"title":289,"path":35,"stem":290,"children":291},"Bot Detector","docs\u002Fbot-detection\u002Findex",[292,293,296,300,303,322,396,399,402],{"title":289,"path":35,"stem":290},{"title":14,"path":294,"stem":295},"\u002Fdocs\u002Fbot-detection\u002Fgetting-started","docs\u002Fbot-detection\u002F00.getting-started",{"title":297,"path":298,"stem":299},"CLI","\u002Fdocs\u002Fbot-detection\u002Fcli","docs\u002Fbot-detection\u002F01.cli",{"title":81,"path":301,"stem":302},"\u002Fdocs\u002Fbot-detection\u002Fdata-sources","docs\u002Fbot-detection\u002F02.data-sources",{"title":243,"path":304,"stem":305,"children":306,"page":53},"\u002Fdocs\u002Fbot-detection\u002Fguides","docs\u002Fbot-detection\u002F03.guides",[307,311,315,318],{"title":308,"path":309,"stem":310},"Custom Checkers","\u002Fdocs\u002Fbot-detection\u002Fguides\u002Fcustom","docs\u002Fbot-detection\u002F03.guides\u002FCUSTOM",{"title":312,"path":313,"stem":314},"Scheduling Database Generation","\u002Fdocs\u002Fbot-detection\u002Fguides\u002Fgenerate","docs\u002Fbot-detection\u002F03.guides\u002FGENERATE",{"title":188,"path":316,"stem":317},"\u002Fdocs\u002Fbot-detection\u002Fguides\u002Flogging","docs\u002Fbot-detection\u002F03.guides\u002FLOGGING",{"title":319,"path":320,"stem":321},"Score Modes and Reputation Healing","\u002Fdocs\u002Fbot-detection\u002Fguides\u002Fscore","docs\u002Fbot-detection\u002F03.guides\u002FSCORE",{"title":323,"path":324,"stem":325,"children":326},"Checkers","\u002Fdocs\u002Fbot-detection\u002Fcheckers","docs\u002Fbot-detection\u002F04.checkers\u002Findex",[327,328,332,336,340,344,348,352,356,360,364,368,372,376,380,384,388,392],{"title":323,"path":324,"stem":325},{"title":329,"path":330,"stem":331},"IP Validation","\u002Fdocs\u002Fbot-detection\u002Fcheckers\u002Fip-validation","docs\u002Fbot-detection\u002F04.checkers\u002F01.ip-validation",{"title":333,"path":334,"stem":335},"Good \u002F Bad Bot Verification","\u002Fdocs\u002Fbot-detection\u002Fcheckers\u002Fgood-bots","docs\u002Fbot-detection\u002F04.checkers\u002F02.good-bots",{"title":337,"path":338,"stem":339},"Browser & Device Fingerprint","\u002Fdocs\u002Fbot-detection\u002Fcheckers\u002Fbrowser-device","docs\u002Fbot-detection\u002F04.checkers\u002F03.browser-device",{"title":341,"path":342,"stem":343},"Locale Map","\u002Fdocs\u002Fbot-detection\u002Fcheckers\u002Flocale-map","docs\u002Fbot-detection\u002F04.checkers\u002F04.locale-map",{"title":345,"path":346,"stem":347},"Known Threats","\u002Fdocs\u002Fbot-detection\u002Fcheckers\u002Fknown-threats","docs\u002Fbot-detection\u002F04.checkers\u002F05.known-threats",{"title":349,"path":350,"stem":351},"ASN Classification","\u002Fdocs\u002Fbot-detection\u002Fcheckers\u002Fasn-classification","docs\u002Fbot-detection\u002F04.checkers\u002F06.asn-classification",{"title":353,"path":354,"stem":355},"Tor Analysis","\u002Fdocs\u002Fbot-detection\u002Fcheckers\u002Ftor-analysis","docs\u002Fbot-detection\u002F04.checkers\u002F07.tor-analysis",{"title":357,"path":358,"stem":359},"Timezone Consistency","\u002Fdocs\u002Fbot-detection\u002Fcheckers\u002Ftimezone-consistency","docs\u002Fbot-detection\u002F04.checkers\u002F08.timezone-consistency",{"title":361,"path":362,"stem":363},"Honeypot","\u002Fdocs\u002Fbot-detection\u002Fcheckers\u002Fhoneypot","docs\u002Fbot-detection\u002F04.checkers\u002F09.honeypot",{"title":365,"path":366,"stem":367},"Known Bad IPs","\u002Fdocs\u002Fbot-detection\u002Fcheckers\u002Fknown-bad-ips","docs\u002Fbot-detection\u002F04.checkers\u002F10.known-bad-ips",{"title":369,"path":370,"stem":371},"Behavior Rate","\u002Fdocs\u002Fbot-detection\u002Fcheckers\u002Fbehavior-rate","docs\u002Fbot-detection\u002F04.checkers\u002F11.behavior-rate",{"title":373,"path":374,"stem":375},"Proxy \u002F ISP \u002F Cookie","\u002Fdocs\u002Fbot-detection\u002Fcheckers\u002Fproxy-isp-cookies","docs\u002Fbot-detection\u002F04.checkers\u002F12.proxy-isp-cookies",{"title":377,"path":378,"stem":379},"Session Coherence","\u002Fdocs\u002Fbot-detection\u002Fcheckers\u002Fsession-coherence","docs\u002Fbot-detection\u002F04.checkers\u002F13.session-coherence",{"title":381,"path":382,"stem":383},"Velocity Fingerprint","\u002Fdocs\u002Fbot-detection\u002Fcheckers\u002Fvelocity-fingerprint","docs\u002Fbot-detection\u002F04.checkers\u002F14.velocity-fingerprint",{"title":385,"path":386,"stem":387},"UA & Header Analysis","\u002Fdocs\u002Fbot-detection\u002Fcheckers\u002Fua-header","docs\u002Fbot-detection\u002F04.checkers\u002F15.ua-header",{"title":389,"path":390,"stem":391},"Geolocation","\u002Fdocs\u002Fbot-detection\u002Fcheckers\u002Fgeolocation","docs\u002Fbot-detection\u002F04.checkers\u002F16.geolocation",{"title":393,"path":394,"stem":395},"Known Bad User-Agents","\u002Fdocs\u002Fbot-detection\u002Fcheckers\u002Fknown-bad-ua","docs\u002Fbot-detection\u002F04.checkers\u002F17.known-bad-ua",{"title":38,"path":397,"stem":398},"\u002Fdocs\u002Fbot-detection\u002Fsecurity","docs\u002Fbot-detection\u002F04.security",{"title":135,"path":400,"stem":401},"\u002Fdocs\u002Fbot-detection\u002Fapi","docs\u002Fbot-detection\u002F05.api",{"title":264,"path":403,"stem":404},"\u002Fdocs\u002Fbot-detection\u002Fconfiguration","docs\u002Fbot-detection\u002F06.configuration",{"title":406,"path":11,"stem":407,"children":408},"Introduction","docs\u002Fgetting-started\u002Findex",[409],{"title":406,"path":11,"stem":407},{"title":27,"path":29,"stem":411,"children":412},"docs\u002Fiam\u002Findex",[413,414,417,552,555,571,574],{"title":27,"path":29,"stem":411},{"title":14,"path":415,"stem":416},"\u002Fdocs\u002Fiam\u002Fgetting-started","docs\u002Fiam\u002F00.getting-started",{"title":155,"path":418,"stem":419,"children":420},"\u002Fdocs\u002Fiam\u002Fessentials","docs\u002Fiam\u002F01.essentials\u002Findex",[421,422,426,430,434,438,442,446,450,454,458,462,465,469,473,477,481,484,488,492,495,499,502],{"title":155,"path":418,"stem":419},{"title":423,"path":424,"stem":425},"Tokens","\u002Fdocs\u002Fiam\u002Fessentials\u002Ftokens","docs\u002Fiam\u002F01.essentials\u002F00.tokens",{"title":427,"path":428,"stem":429},"Access Tokens","\u002Fdocs\u002Fiam\u002Fessentials\u002Faccess-tokens","docs\u002Fiam\u002F01.essentials\u002F01.access-tokens",{"title":431,"path":432,"stem":433},"Refresh Tokens","\u002Fdocs\u002Fiam\u002Fessentials\u002Frefresh-tokens","docs\u002Fiam\u002F01.essentials\u002F02.refresh-tokens",{"title":435,"path":436,"stem":437},"Anomaly Detection","\u002Fdocs\u002Fiam\u002Fessentials\u002Fanomalies","docs\u002Fiam\u002F01.essentials\u002F03.anomalies",{"title":439,"path":440,"stem":441},"Signup","\u002Fdocs\u002Fiam\u002Fessentials\u002Fsignup","docs\u002Fiam\u002F01.essentials\u002F04.signup",{"title":443,"path":444,"stem":445},"Login","\u002Fdocs\u002Fiam\u002Fessentials\u002Flogin","docs\u002Fiam\u002F01.essentials\u002F05.login",{"title":447,"path":448,"stem":449},"Logout","\u002Fdocs\u002Fiam\u002Fessentials\u002Flogout","docs\u002Fiam\u002F01.essentials\u002F06.logout",{"title":451,"path":452,"stem":453},"OAuth","\u002Fdocs\u002Fiam\u002Fessentials\u002Foauth","docs\u002Fiam\u002F01.essentials\u002F07.oauth",{"title":455,"path":456,"stem":457},"Magic Links","\u002Fdocs\u002Fiam\u002Fessentials\u002Fmagic-links","docs\u002Fiam\u002F01.essentials\u002F08.magic-links",{"title":459,"path":460,"stem":461},"Emails","\u002Fdocs\u002Fiam\u002Fessentials\u002Femails","docs\u002Fiam\u002F01.essentials\u002F09.emails",{"title":192,"path":463,"stem":464},"\u002Fdocs\u002Fiam\u002Fessentials\u002Fmfa","docs\u002Fiam\u002F01.essentials\u002F10.mfa",{"title":466,"path":467,"stem":468},"Fingerprinting","\u002Fdocs\u002Fiam\u002Fessentials\u002Ffingerprinting","docs\u002Fiam\u002F01.essentials\u002F11.fingerprinting",{"title":470,"path":471,"stem":472},"Backend for Frontend","\u002Fdocs\u002Fiam\u002Fessentials\u002Fbff","docs\u002Fiam\u002F01.essentials\u002F12.bff",{"title":474,"path":475,"stem":476},"HMAC Authentication","\u002Fdocs\u002Fiam\u002Fessentials\u002Fhmac","docs\u002Fiam\u002F01.essentials\u002F13.hmac",{"title":478,"path":479,"stem":480},"XSS Protection","\u002Fdocs\u002Fiam\u002Fessentials\u002Fxss","docs\u002Fiam\u002F01.essentials\u002F14.xss",{"title":188,"path":482,"stem":483},"\u002Fdocs\u002Fiam\u002Fessentials\u002Flogging","docs\u002Fiam\u002F01.essentials\u002F15.logging",{"title":485,"path":486,"stem":487},"Rate Limiting","\u002Fdocs\u002Fiam\u002Fessentials\u002Frate-limiting","docs\u002Fiam\u002F01.essentials\u002F16.rate-limiting",{"title":489,"path":490,"stem":491},"Database","\u002Fdocs\u002Fiam\u002Fessentials\u002Fdatabase","docs\u002Fiam\u002F01.essentials\u002F17.database",{"title":184,"path":493,"stem":494},"\u002Fdocs\u002Fiam\u002Fessentials\u002Fcookies","docs\u002Fiam\u002F01.essentials\u002F18.cookies",{"title":496,"path":497,"stem":498},"Service Startup","\u002Fdocs\u002Fiam\u002Fessentials\u002Fservice","docs\u002Fiam\u002F01.essentials\u002F19.service",{"title":202,"path":500,"stem":501},"\u002Fdocs\u002Fiam\u002Fessentials\u002Fpassword-reset","docs\u002Fiam\u002F01.essentials\u002F20.password-reset",{"title":503,"path":504,"stem":505,"children":506},"API Tokens","\u002Fdocs\u002Fiam\u002Fessentials\u002Fapi","docs\u002Fiam\u002F01.essentials\u002F21.api\u002Findex",[507,508,512,516,546,549],{"title":503,"path":504,"stem":505},{"title":509,"path":510,"stem":511},"Creating Tokens","\u002Fdocs\u002Fiam\u002Fessentials\u002Fapi\u002Fcreation","docs\u002Fiam\u002F01.essentials\u002F21.api\u002F00.creation",{"title":513,"path":514,"stem":515},"Verifying Tokens","\u002Fdocs\u002Fiam\u002Fessentials\u002Fapi\u002Fverification","docs\u002Fiam\u002F01.essentials\u002F21.api\u002F01.verification",{"title":517,"path":518,"stem":519,"children":520},"Manage Tokens","\u002Fdocs\u002Fiam\u002Fessentials\u002Fapi\u002Fmanagement","docs\u002Fiam\u002F01.essentials\u002F21.api\u002F02.management\u002Findex",[521,522,526,530,534,538,542],{"title":517,"path":518,"stem":519},{"title":523,"path":524,"stem":525},"Privileges","\u002Fdocs\u002Fiam\u002Fessentials\u002Fapi\u002Fmanagement\u002Fprivilege","docs\u002Fiam\u002F01.essentials\u002F21.api\u002F02.management\u002F00.privilege",{"title":527,"path":528,"stem":529},"Revocation","\u002Fdocs\u002Fiam\u002Fessentials\u002Fapi\u002Fmanagement\u002Frevocation","docs\u002Fiam\u002F01.essentials\u002F21.api\u002F02.management\u002F01.revocation",{"title":531,"path":532,"stem":533},"Rotation","\u002Fdocs\u002Fiam\u002Fessentials\u002Fapi\u002Fmanagement\u002Frotation","docs\u002Fiam\u002F01.essentials\u002F21.api\u002F02.management\u002F02.rotation",{"title":535,"path":536,"stem":537},"IP Restriction","\u002Fdocs\u002Fiam\u002Fessentials\u002Fapi\u002Fmanagement\u002Fip-updates","docs\u002Fiam\u002F01.essentials\u002F21.api\u002F02.management\u002F03.ip-updates",{"title":539,"path":540,"stem":541},"Metadata","\u002Fdocs\u002Fiam\u002Fessentials\u002Fapi\u002Fmanagement\u002Fmetadata","docs\u002Fiam\u002F01.essentials\u002F21.api\u002F02.management\u002F04.metadata",{"title":543,"path":544,"stem":545},"Token Listing","\u002Fdocs\u002Fiam\u002Fessentials\u002Fapi\u002Fmanagement\u002Flist","docs\u002Fiam\u002F01.essentials\u002F21.api\u002F02.management\u002F05.list",{"title":485,"path":547,"stem":548},"\u002Fdocs\u002Fiam\u002Fessentials\u002Fapi\u002Frate-limiting","docs\u002Fiam\u002F01.essentials\u002F21.api\u002F03.rate-limiting",{"title":38,"path":550,"stem":551},"\u002Fdocs\u002Fiam\u002Fessentials\u002Fapi\u002Fsecurity","docs\u002Fiam\u002F01.essentials\u002F21.api\u002F04.security",{"title":38,"path":553,"stem":554},"\u002Fdocs\u002Fiam\u002Fsecurity","docs\u002Fiam\u002F02.security",{"title":243,"path":556,"stem":557,"children":558,"page":53},"\u002Fdocs\u002Fiam\u002Fguides","docs\u002Fiam\u002F03.guides",[559,563,567],{"title":560,"path":561,"stem":562},"Deployment","\u002Fdocs\u002Fiam\u002Fguides\u002Fdeployment","docs\u002Fiam\u002F03.guides\u002Fdeployment",{"title":564,"path":565,"stem":566},"Operation Scripts","\u002Fdocs\u002Fiam\u002Fguides\u002Foperation-scripts","docs\u002Fiam\u002F03.guides\u002Foperation-scripts",{"title":568,"path":569,"stem":570},"Role-Based Access Control","\u002Fdocs\u002Fiam\u002Fguides\u002Frbac","docs\u002Fiam\u002F03.guides\u002Frbac",{"title":264,"path":572,"stem":573},"\u002Fdocs\u002Fiam\u002Fconfiguration","docs\u002Fiam\u002F04.configuration",{"title":575,"path":576,"stem":577,"children":578,"page":53},"Api","\u002Fdocs\u002Fiam\u002Fapi","docs\u002Fiam\u002F05.API",[579,582,585],{"title":135,"path":580,"stem":581},"\u002Fdocs\u002Fiam\u002Fapi\u002Fapi","docs\u002Fiam\u002F05.API\u002F00.api",{"title":277,"path":583,"stem":584},"\u002Fdocs\u002Fiam\u002Fapi\u002Fmiddlewares","docs\u002Fiam\u002F05.API\u002F02.middlewares",{"title":273,"path":586,"stem":587},"\u002Fdocs\u002Fiam\u002Fapi\u002Froutes","docs\u002Fiam\u002F05.API\u002F03.routes",{"title":40,"path":42,"stem":70,"children":589},[590,591,592,593,605,606,607,608],{"title":40,"path":42,"stem":70},{"title":14,"path":74,"stem":75},{"title":77,"path":78,"stem":79},{"title":81,"path":82,"stem":83,"children":594},[595,596,597,598,599,600,601,602,603,604],{"title":81,"path":82,"stem":83},{"title":87,"path":88,"stem":89},{"title":91,"path":92,"stem":93},{"title":95,"path":96,"stem":97},{"title":99,"path":100,"stem":101},{"title":103,"path":104,"stem":105},{"title":107,"path":108,"stem":109},{"title":111,"path":112,"stem":113},{"title":115,"path":116,"stem":117},{"title":119,"path":120,"stem":121},{"title":123,"path":124,"stem":125},{"title":127,"path":128,"stem":129},{"title":131,"path":132,"stem":133},{"title":135,"path":136,"stem":137},{"title":285,"path":48,"stem":610,"children":611},"docs\u002Futils\u002Findex",[612,613,630,663,760],{"title":285,"path":48,"stem":610},{"title":614,"path":615,"stem":616,"children":617,"page":53},"Eslint","\u002Fdocs\u002Futils\u002Feslint","docs\u002Futils\u002Feslint",[618,622,626],{"title":619,"path":620,"stem":621},"React Config","\u002Fdocs\u002Futils\u002Feslint\u002Freact","docs\u002Futils\u002Feslint\u002Freact",{"title":623,"path":624,"stem":625},"TypeScript Config","\u002Fdocs\u002Futils\u002Feslint\u002Ftypescript","docs\u002Futils\u002Feslint\u002Ftypescript",{"title":627,"path":628,"stem":629},"Vue Config","\u002Fdocs\u002Futils\u002Feslint\u002Fvue","docs\u002Futils\u002Feslint\u002Fvue",{"title":631,"path":632,"stem":633,"children":634,"page":53},"Server","\u002Fdocs\u002Futils\u002Fserver","docs\u002Futils\u002Fserver",[635,639,643,647,651,655,659],{"title":636,"path":637,"stem":638},"Encryption","\u002Fdocs\u002Futils\u002Fserver\u002Fencryption","docs\u002Futils\u002Fserver\u002Fencryption",{"title":640,"path":641,"stem":642},"Path Resolver","\u002Fdocs\u002Futils\u002Fserver\u002Fpathresolver","docs\u002Futils\u002Fserver\u002FpathResolver",{"title":644,"path":645,"stem":646},"File Replacements","\u002Fdocs\u002Futils\u002Fserver\u002Freplace","docs\u002Futils\u002Fserver\u002Freplace",{"title":648,"path":649,"stem":650},"run","\u002Fdocs\u002Futils\u002Fserver\u002Frun","docs\u002Futils\u002Fserver\u002Frun",{"title":652,"path":653,"stem":654},"scheduleTask","\u002Fdocs\u002Futils\u002Fserver\u002Fscheduletask","docs\u002Futils\u002Fserver\u002FscheduleTask",{"title":656,"path":657,"stem":658},"spawnRun","\u002Fdocs\u002Futils\u002Fserver\u002Fspawnrun","docs\u002Futils\u002Fserver\u002FspawnRun",{"title":660,"path":661,"stem":662},"uploadCsv","\u002Fdocs\u002Futils\u002Fserver\u002Fuploadcsv","docs\u002Futils\u002Fserver\u002FuploadCsv",{"title":664,"path":665,"stem":666,"children":667,"page":53},"Shared","\u002Fdocs\u002Futils\u002Fshared","docs\u002Futils\u002Fshared",[668,672,676,680,684,688,692,696,700,704,708,712,716,720,724,728,732,736,740,744,748,752,756],{"title":669,"path":670,"stem":671},"BatchQueue","\u002Fdocs\u002Futils\u002Fshared\u002Fbatchqueue","docs\u002Futils\u002Fshared\u002FbatchQueue",{"title":673,"path":674,"stem":675},"capitalize","\u002Fdocs\u002Futils\u002Fshared\u002Fcapitalize","docs\u002Futils\u002Fshared\u002Fcapitalize",{"title":677,"path":678,"stem":679},"chunkProcess","\u002Fdocs\u002Futils\u002Fshared\u002Fchunkprocess","docs\u002Futils\u002Fshared\u002FchunkProcess",{"title":681,"path":682,"stem":683},"cleanObject","\u002Fdocs\u002Futils\u002Fshared\u002Fcleanobject","docs\u002Futils\u002Fshared\u002FcleanObject",{"title":685,"path":686,"stem":687},"createConfigManager","\u002Fdocs\u002Futils\u002Fshared\u002Fconfigurationdefiner","docs\u002Futils\u002Fshared\u002FconfigurationDefiner",{"title":689,"path":690,"stem":691},"debounce","\u002Fdocs\u002Futils\u002Fshared\u002Fdebounce","docs\u002Futils\u002Fshared\u002Fdebounce",{"title":693,"path":694,"stem":695},"ensureArray","\u002Fdocs\u002Futils\u002Fshared\u002Fensurearray","docs\u002Futils\u002Fshared\u002FensureArray",{"title":697,"path":698,"stem":699},"fetchWithRetry","\u002Fdocs\u002Futils\u002Fshared\u002Ffetchwithretry","docs\u002Futils\u002Fshared\u002FfetchWithRetry",{"title":701,"path":702,"stem":703},"filterEmptyValues","\u002Fdocs\u002Futils\u002Fshared\u002Ffilteremptyvalues","docs\u002Futils\u002Fshared\u002FfilterEmptyValues",{"title":705,"path":706,"stem":707},"findStringsInObject","\u002Fdocs\u002Futils\u002Fshared\u002Ffindobjectvalues","docs\u002Futils\u002Fshared\u002FfindObjectValues",{"title":709,"path":710,"stem":711},"fisherYatesShuffle","\u002Fdocs\u002Futils\u002Fshared\u002Ffisheryatesshuffle","docs\u002Futils\u002Fshared\u002FfisherYatesShuffle",{"title":713,"path":714,"stem":715},"getRandomImage","\u002Fdocs\u002Futils\u002Fshared\u002Fgetrandomimage","docs\u002Futils\u002Fshared\u002FgetRandomImage",{"title":717,"path":718,"stem":719},"isObjectHasValues","\u002Fdocs\u002Futils\u002Fshared\u002Fisobjecthasvalues","docs\u002Futils\u002Fshared\u002FisObjectHasValues",{"title":721,"path":722,"stem":723},"isAsyncOrPromise","\u002Fdocs\u002Futils\u002Fshared\u002Fispromise","docs\u002Futils\u002Fshared\u002FisPromise",{"title":725,"path":726,"stem":727},"MiniCache","\u002Fdocs\u002Futils\u002Fshared\u002Fminicache","docs\u002Futils\u002Fshared\u002FminiCache",{"title":729,"path":730,"stem":731},"parseCookies","\u002Fdocs\u002Futils\u002Fshared\u002Fparserawcookies","docs\u002Futils\u002Fshared\u002FparseRawCookies",{"title":733,"path":734,"stem":735},"safeAction","\u002Fdocs\u002Futils\u002Fshared\u002Fpromiselocker","docs\u002Futils\u002Fshared\u002FpromiseLocker",{"title":737,"path":738,"stem":739},"Random","\u002Fdocs\u002Futils\u002Fshared\u002Frandom","docs\u002Futils\u002Fshared\u002Frandom",{"title":741,"path":742,"stem":743},"range","\u002Fdocs\u002Futils\u002Fshared\u002Frange","docs\u002Futils\u002Fshared\u002Frange",{"title":745,"path":746,"stem":747},"rateLimiters","\u002Fdocs\u002Futils\u002Fshared\u002Fratelimiters","docs\u002Futils\u002Fshared\u002FrateLimiters",{"title":749,"path":750,"stem":751},"safeObjectMerge","\u002Fdocs\u002Futils\u002Fshared\u002Fsafemerge","docs\u002Futils\u002Fshared\u002FsafeMerge",{"title":753,"path":754,"stem":755},"textTruncation","\u002Fdocs\u002Futils\u002Fshared\u002Ftexttruncation","docs\u002Futils\u002Fshared\u002FtextTruncation",{"title":757,"path":758,"stem":759},"validateZodSchema","\u002Fdocs\u002Futils\u002Fshared\u002Fvalidatezodschema","docs\u002Futils\u002Fshared\u002FvalidateZodSchema",{"title":761,"path":762,"stem":763,"children":764},"Utility Types","\u002Fdocs\u002Futils\u002Ftypes","docs\u002Futils\u002Ftypes\u002Findex",[765,766,770,774,778,782,786,790,794,798],{"title":761,"path":762,"stem":763},{"title":767,"path":768,"stem":769},"Brand","\u002Fdocs\u002Futils\u002Ftypes\u002Fbrand","docs\u002Futils\u002Ftypes\u002FBrand",{"title":771,"path":772,"stem":773},"DeepPartial","\u002Fdocs\u002Futils\u002Ftypes\u002Fdeeppartial","docs\u002Futils\u002Ftypes\u002FDeepPartial",{"title":775,"path":776,"stem":777},"Merge","\u002Fdocs\u002Futils\u002Ftypes\u002Fmerge","docs\u002Futils\u002Ftypes\u002FMerge",{"title":779,"path":780,"stem":781},"NonNullable","\u002Fdocs\u002Futils\u002Ftypes\u002Fnonnullable","docs\u002Futils\u002Ftypes\u002FNonNullable",{"title":783,"path":784,"stem":785},"Prettify","\u002Fdocs\u002Futils\u002Ftypes\u002Fprettify","docs\u002Futils\u002Ftypes\u002FPrettify",{"title":787,"path":788,"stem":789},"PromiseType","\u002Fdocs\u002Futils\u002Ftypes\u002Fpromisetype","docs\u002Futils\u002Ftypes\u002FPromiseType",{"title":791,"path":792,"stem":793},"RequireKeys","\u002Fdocs\u002Futils\u002Ftypes\u002Frequirekeys","docs\u002Futils\u002Ftypes\u002FRequireKeys",{"title":795,"path":796,"stem":797},"StandardResponse","\u002Fdocs\u002Futils\u002Ftypes\u002Fstandardresponse","docs\u002Futils\u002Ftypes\u002FStandardResponse",{"title":799,"path":800,"stem":801},"ValueOf","\u002Fdocs\u002Futils\u002Ftypes\u002Fvalueof","docs\u002Futils\u002Ftypes\u002FValueOf",{"id":4,"extension":5,"links":803,"meta":814,"stem":62,"__hash__":63},[804,812,813],{"nested":8,"label":9,"icon":10,"to":11,"children":805},[806,807,808,809,810,811],{"label":14,"icon":15,"to":11,"description":16,"github":17,"badge":18},{"label":20,"icon":21,"to":22,"description":23,"github":24,"badge":25},{"label":27,"icon":28,"to":29,"description":30,"github":31,"badge":25},{"label":33,"icon":34,"to":35,"description":36,"github":37,"badge":38},{"label":40,"icon":41,"to":42,"description":43,"github":44,"badge":38},{"label":46,"icon":47,"to":48,"description":49,"github":50,"badge":51},{"nested":53,"label":54,"icon":55,"to":56},{"nested":53,"label":58,"icon":59,"to":60},{},{"id":816,"title":91,"body":817,"description":1964,"extension":1965,"icon":1966,"meta":1967,"module":1968,"navigation":8,"path":92,"rawbody":1969,"seo":1970,"stem":93,"__hash__":1971},"docs\u002Fdocs\u002Fshield-base\u002F02.data-sources\u002Fcity.md",{"type":818,"value":819,"toc":1958},"minimark",[820,832,843,846,850,868,870,874,1031,1033,1037,1396,1398,1402,1428,1944,1954],[821,822,823,824,831],"p",{},"The City source maps IP prefixes to city-level geographic data using ",[825,826,830],"a",{"href":827,"rel":828},"https:\u002F\u002Fdatatracker.ietf.org\u002Fdoc\u002Fhtml\u002Frfc8805",[829],"nofollow","RFC 8805"," validated geofeeds enriched with a comprehensive country and city hierarchy. Records include city, state, country, coordinates, timezone, currency, and calling code.",[821,833,834,838,839],{},[835,836,837],"strong",{},"Output file:"," ",[840,841,842],"code",{},"city.mmdb",[844,845],"hr",{},[847,848,81],"h2",{"id":849},"data-sources",[851,852,853,862],"ul",{},[854,855,856,857],"li",{},"Validated geofeed CSV: ",[825,858,861],{"href":859,"rel":860},"https:\u002F\u002Fgeolocatemuch.com\u002Fgeofeeds\u002Fvalidated-all.csv",[829],"geolocatemuch.com\u002Fgeofeeds\u002Fvalidated-all.csv",[854,863,864,865],{},"Country and city hierarchy: bundled ",[840,866,867],{},"countries+states+cities.json",[844,869],{},[847,871,873],{"id":872},"usage","Usage",[875,876,877,906,922,937,952],"code-group",{},[878,879,885],"pre",{"className":880,"code":881,"filename":882,"language":883,"meta":884,"style":884},"language-bash shiki shiki-themes light-plus light-plus dracula","pnpm dlx @riavzon\u002Fshield-base --city\n","pnpm","bash","",[840,886,887],{"__ignoreMap":884},[888,889,892,895,899,902],"span",{"class":890,"line":891},"line",1,[888,893,882],{"class":894},"sHOzp",[888,896,898],{"class":897},"sFB1V"," dlx",[888,900,901],{"class":897}," @riavzon\u002Fshield-base",[888,903,905],{"class":904},"sjR7W"," --city\n",[878,907,910],{"className":880,"code":908,"filename":909,"language":883,"meta":884,"style":884},"yarn dlx @riavzon\u002Fshield-base --city\n","yarn",[840,911,912],{"__ignoreMap":884},[888,913,914,916,918,920],{"class":890,"line":891},[888,915,909],{"class":894},[888,917,898],{"class":897},[888,919,901],{"class":897},[888,921,905],{"class":904},[878,923,926],{"className":880,"code":924,"filename":925,"language":883,"meta":884,"style":884},"npx @riavzon\u002Fshield-base --city\n","npm",[840,927,928],{"__ignoreMap":884},[888,929,930,933,935],{"class":890,"line":891},[888,931,932],{"class":894},"npx",[888,934,901],{"class":897},[888,936,905],{"class":904},[878,938,941],{"className":880,"code":939,"filename":940,"language":883,"meta":884,"style":884},"bunx @riavzon\u002Fshield-base --city\n","bun",[840,942,943],{"__ignoreMap":884},[888,944,945,948,950],{"class":890,"line":891},[888,946,947],{"class":894},"bunx",[888,949,901],{"class":897},[888,951,905],{"class":904},[878,953,958],{"className":954,"code":955,"filename":956,"language":957,"meta":884,"style":884},"language-ts shiki shiki-themes light-plus light-plus dracula","import { buildCitiesData } from '@riavzon\u002Fshield-base';\n\nawait buildCitiesData('.\u002Fout', 'mmdbctl');\n","Programmatic","ts",[840,959,960,993,999],{"__ignoreMap":884},[888,961,962,966,970,974,977,980,984,987,990],{"class":890,"line":891},[888,963,965],{"class":964},"sZ328","import",[888,967,969],{"class":968},"sDd4n"," { ",[888,971,973],{"class":972},"sjsA6","buildCitiesData",[888,975,976],{"class":968}," } ",[888,978,979],{"class":964},"from",[888,981,983],{"class":982},"sFkSl"," '",[888,985,986],{"class":897},"@riavzon\u002Fshield-base",[888,988,989],{"class":982},"'",[888,991,992],{"class":968},";\n",[888,994,996],{"class":890,"line":995},2,[888,997,998],{"emptyLinePlaceholder":8},"\n",[888,1000,1002,1005,1008,1011,1013,1016,1018,1021,1023,1026,1028],{"class":890,"line":1001},3,[888,1003,1004],{"class":964},"await",[888,1006,1007],{"class":894}," buildCitiesData",[888,1009,1010],{"class":968},"(",[888,1012,989],{"class":982},[888,1014,1015],{"class":897},".\u002Fout",[888,1017,989],{"class":982},[888,1019,1020],{"class":968},", ",[888,1022,989],{"class":982},[888,1024,1025],{"class":897},"mmdbctl",[888,1027,989],{"class":982},[888,1029,1030],{"class":968},");\n",[844,1032],{},[847,1034,1036],{"id":1035},"record-structure","Record Structure",[878,1038,1040],{"className":954,"code":1039,"language":957,"meta":884,"style":884},"interface CityGeoRecord {\n  range: string;\n  country_code: string;   \u002F\u002F ISO 3166-1 alpha-2, e.g. \"FR\"\n  region: string;         \u002F\u002F Region code, e.g. \"FR-75C\"\n  city: string;\n  zip_code: string;\n  numericCode: string;    \u002F\u002F ISO 3166-1 numeric, e.g. \"250\"\n  latitude: string;\n  longitude: string;\n  state: string;\n  name: string;           \u002F\u002F Country name\n  native: string;         \u002F\u002F Native country name\n  phone: string;          \u002F\u002F International calling code\n  continent: string;\n  capital: string;\n  currency: string;\n  currency_name: string;\n  iso639: string;         \u002F\u002F Primary language code\n  languages: string;\n  emoji: string;          \u002F\u002F Country flag emoji\n  timezone: string;       \u002F\u002F IANA timezone identifier\n  utc_offset: string;\n  tld: string;\n  nationality: string;\n  subregion: string;\n  timeZoneName: string;\n}\n",[840,1041,1042,1055,1069,1085,1101,1113,1125,1141,1153,1165,1177,1193,1208,1224,1236,1248,1260,1272,1287,1299,1314,1330,1342,1354,1366,1378,1390],{"__ignoreMap":884},[888,1043,1044,1048,1052],{"class":890,"line":891},[888,1045,1047],{"class":1046},"sl46w","interface",[888,1049,1051],{"class":1050},"sFs1U"," CityGeoRecord",[888,1053,1054],{"class":968}," {\n",[888,1056,1057,1060,1064,1067],{"class":890,"line":995},[888,1058,1059],{"class":972},"  range",[888,1061,1063],{"class":1062},"saOXh",":",[888,1065,1066],{"class":1050}," string",[888,1068,992],{"class":968},[888,1070,1071,1074,1076,1078,1081],{"class":890,"line":1001},[888,1072,1073],{"class":972},"  country_code",[888,1075,1063],{"class":1062},[888,1077,1066],{"class":1050},[888,1079,1080],{"class":968},";   ",[888,1082,1084],{"class":1083},"sghk6","\u002F\u002F ISO 3166-1 alpha-2, e.g. \"FR\"\n",[888,1086,1088,1091,1093,1095,1098],{"class":890,"line":1087},4,[888,1089,1090],{"class":972},"  region",[888,1092,1063],{"class":1062},[888,1094,1066],{"class":1050},[888,1096,1097],{"class":968},";         ",[888,1099,1100],{"class":1083},"\u002F\u002F Region code, e.g. \"FR-75C\"\n",[888,1102,1104,1107,1109,1111],{"class":890,"line":1103},5,[888,1105,1106],{"class":972},"  city",[888,1108,1063],{"class":1062},[888,1110,1066],{"class":1050},[888,1112,992],{"class":968},[888,1114,1116,1119,1121,1123],{"class":890,"line":1115},6,[888,1117,1118],{"class":972},"  zip_code",[888,1120,1063],{"class":1062},[888,1122,1066],{"class":1050},[888,1124,992],{"class":968},[888,1126,1128,1131,1133,1135,1138],{"class":890,"line":1127},7,[888,1129,1130],{"class":972},"  numericCode",[888,1132,1063],{"class":1062},[888,1134,1066],{"class":1050},[888,1136,1137],{"class":968},";    ",[888,1139,1140],{"class":1083},"\u002F\u002F ISO 3166-1 numeric, e.g. \"250\"\n",[888,1142,1144,1147,1149,1151],{"class":890,"line":1143},8,[888,1145,1146],{"class":972},"  latitude",[888,1148,1063],{"class":1062},[888,1150,1066],{"class":1050},[888,1152,992],{"class":968},[888,1154,1156,1159,1161,1163],{"class":890,"line":1155},9,[888,1157,1158],{"class":972},"  longitude",[888,1160,1063],{"class":1062},[888,1162,1066],{"class":1050},[888,1164,992],{"class":968},[888,1166,1168,1171,1173,1175],{"class":890,"line":1167},10,[888,1169,1170],{"class":972},"  state",[888,1172,1063],{"class":1062},[888,1174,1066],{"class":1050},[888,1176,992],{"class":968},[888,1178,1180,1183,1185,1187,1190],{"class":890,"line":1179},11,[888,1181,1182],{"class":972},"  name",[888,1184,1063],{"class":1062},[888,1186,1066],{"class":1050},[888,1188,1189],{"class":968},";           ",[888,1191,1192],{"class":1083},"\u002F\u002F Country name\n",[888,1194,1196,1199,1201,1203,1205],{"class":890,"line":1195},12,[888,1197,1198],{"class":972},"  native",[888,1200,1063],{"class":1062},[888,1202,1066],{"class":1050},[888,1204,1097],{"class":968},[888,1206,1207],{"class":1083},"\u002F\u002F Native country name\n",[888,1209,1211,1214,1216,1218,1221],{"class":890,"line":1210},13,[888,1212,1213],{"class":972},"  phone",[888,1215,1063],{"class":1062},[888,1217,1066],{"class":1050},[888,1219,1220],{"class":968},";          ",[888,1222,1223],{"class":1083},"\u002F\u002F International calling code\n",[888,1225,1227,1230,1232,1234],{"class":890,"line":1226},14,[888,1228,1229],{"class":972},"  continent",[888,1231,1063],{"class":1062},[888,1233,1066],{"class":1050},[888,1235,992],{"class":968},[888,1237,1239,1242,1244,1246],{"class":890,"line":1238},15,[888,1240,1241],{"class":972},"  capital",[888,1243,1063],{"class":1062},[888,1245,1066],{"class":1050},[888,1247,992],{"class":968},[888,1249,1251,1254,1256,1258],{"class":890,"line":1250},16,[888,1252,1253],{"class":972},"  currency",[888,1255,1063],{"class":1062},[888,1257,1066],{"class":1050},[888,1259,992],{"class":968},[888,1261,1263,1266,1268,1270],{"class":890,"line":1262},17,[888,1264,1265],{"class":972},"  currency_name",[888,1267,1063],{"class":1062},[888,1269,1066],{"class":1050},[888,1271,992],{"class":968},[888,1273,1275,1278,1280,1282,1284],{"class":890,"line":1274},18,[888,1276,1277],{"class":972},"  iso639",[888,1279,1063],{"class":1062},[888,1281,1066],{"class":1050},[888,1283,1097],{"class":968},[888,1285,1286],{"class":1083},"\u002F\u002F Primary language code\n",[888,1288,1290,1293,1295,1297],{"class":890,"line":1289},19,[888,1291,1292],{"class":972},"  languages",[888,1294,1063],{"class":1062},[888,1296,1066],{"class":1050},[888,1298,992],{"class":968},[888,1300,1302,1305,1307,1309,1311],{"class":890,"line":1301},20,[888,1303,1304],{"class":972},"  emoji",[888,1306,1063],{"class":1062},[888,1308,1066],{"class":1050},[888,1310,1220],{"class":968},[888,1312,1313],{"class":1083},"\u002F\u002F Country flag emoji\n",[888,1315,1317,1320,1322,1324,1327],{"class":890,"line":1316},21,[888,1318,1319],{"class":972},"  timezone",[888,1321,1063],{"class":1062},[888,1323,1066],{"class":1050},[888,1325,1326],{"class":968},";       ",[888,1328,1329],{"class":1083},"\u002F\u002F IANA timezone identifier\n",[888,1331,1333,1336,1338,1340],{"class":890,"line":1332},22,[888,1334,1335],{"class":972},"  utc_offset",[888,1337,1063],{"class":1062},[888,1339,1066],{"class":1050},[888,1341,992],{"class":968},[888,1343,1345,1348,1350,1352],{"class":890,"line":1344},23,[888,1346,1347],{"class":972},"  tld",[888,1349,1063],{"class":1062},[888,1351,1066],{"class":1050},[888,1353,992],{"class":968},[888,1355,1357,1360,1362,1364],{"class":890,"line":1356},24,[888,1358,1359],{"class":972},"  nationality",[888,1361,1063],{"class":1062},[888,1363,1066],{"class":1050},[888,1365,992],{"class":968},[888,1367,1369,1372,1374,1376],{"class":890,"line":1368},25,[888,1370,1371],{"class":972},"  subregion",[888,1373,1063],{"class":1062},[888,1375,1066],{"class":1050},[888,1377,992],{"class":968},[888,1379,1381,1384,1386,1388],{"class":890,"line":1380},26,[888,1382,1383],{"class":972},"  timeZoneName",[888,1385,1063],{"class":1062},[888,1387,1066],{"class":1050},[888,1389,992],{"class":968},[888,1391,1393],{"class":890,"line":1392},27,[888,1394,1395],{"class":968},"}\n",[844,1397],{},[847,1399,1401],{"id":1400},"example-lookup","Example Lookup",[878,1403,1406],{"className":880,"code":1404,"filename":1405,"language":883,"meta":884,"style":884},"mmdbctl read -f json-pretty 137.174.48.5 outputDirectory\u002Fcity.mmdb\n","Terminal",[840,1407,1408],{"__ignoreMap":884},[888,1409,1410,1412,1415,1418,1421,1425],{"class":890,"line":891},[888,1411,1025],{"class":894},[888,1413,1414],{"class":897}," read",[888,1416,1417],{"class":904}," -f",[888,1419,1420],{"class":897}," json-pretty",[888,1422,1424],{"class":1423},"spgvN"," 137.174.48.5",[888,1426,1427],{"class":897}," outputDirectory\u002Fcity.mmdb\n",[878,1429,1432],{"className":1430,"code":1431,"language":5,"meta":884,"style":884},"language-json shiki shiki-themes light-plus light-plus dracula","{\n\"capital\": \"Paris\",\n\"city\": \"Paris\",\n\"continent\": \"Europe\",\n\"country_code\": \"FR\",\n\"currency\": \"EUR\",\n\"currency_name\": \"Euro\",\n\"emoji\": \"🇫🇷\",\n\"ip\": \"137.174.48.5\",\n\"languages\": \"Frañs\",\n\"latitude\": \"48.85661400\",\n\"longitude\": \"2.35222190\",\n\"name\": \"France\",\n\"nationality\": \"French\",\n\"native\": \"France\",\n\"network\": \"137.174.48.0\u002F21\",\n\"numericCode\": \"250\",\n\"phone\": \"33\",\n\"region\": \"FR-75C\",\n\"state\": \"Paris\",\n\"subregion\": \"Western Europe\",\n\"timeZoneName\": \"Central European Time\",\n\"timezone\": \"Europe\u002FParis\",\n\"tld\": \".fr\",\n\"utc_offset\": \"UTC+01:00\",\n\"zip_code\": \"123456\"\n}\n",[840,1433,1434,1439,1464,1483,1503,1523,1543,1563,1583,1603,1623,1643,1663,1683,1703,1722,1742,1762,1782,1802,1821,1841,1861,1881,1901,1921,1940],{"__ignoreMap":884},[888,1435,1436],{"class":890,"line":891},[888,1437,1438],{"class":968},"{\n",[888,1440,1441,1445,1449,1451,1453,1456,1459,1461],{"class":890,"line":995},[888,1442,1444],{"class":1443},"saJyd","\"",[888,1446,1448],{"class":1447},"s_W10","capital",[888,1450,1444],{"class":1443},[888,1452,1063],{"class":1062},[888,1454,1455],{"class":982}," \"",[888,1457,1458],{"class":897},"Paris",[888,1460,1444],{"class":982},[888,1462,1463],{"class":968},",\n",[888,1465,1466,1468,1471,1473,1475,1477,1479,1481],{"class":890,"line":1001},[888,1467,1444],{"class":1443},[888,1469,1470],{"class":1447},"city",[888,1472,1444],{"class":1443},[888,1474,1063],{"class":1062},[888,1476,1455],{"class":982},[888,1478,1458],{"class":897},[888,1480,1444],{"class":982},[888,1482,1463],{"class":968},[888,1484,1485,1487,1490,1492,1494,1496,1499,1501],{"class":890,"line":1087},[888,1486,1444],{"class":1443},[888,1488,1489],{"class":1447},"continent",[888,1491,1444],{"class":1443},[888,1493,1063],{"class":1062},[888,1495,1455],{"class":982},[888,1497,1498],{"class":897},"Europe",[888,1500,1444],{"class":982},[888,1502,1463],{"class":968},[888,1504,1505,1507,1510,1512,1514,1516,1519,1521],{"class":890,"line":1103},[888,1506,1444],{"class":1443},[888,1508,1509],{"class":1447},"country_code",[888,1511,1444],{"class":1443},[888,1513,1063],{"class":1062},[888,1515,1455],{"class":982},[888,1517,1518],{"class":897},"FR",[888,1520,1444],{"class":982},[888,1522,1463],{"class":968},[888,1524,1525,1527,1530,1532,1534,1536,1539,1541],{"class":890,"line":1115},[888,1526,1444],{"class":1443},[888,1528,1529],{"class":1447},"currency",[888,1531,1444],{"class":1443},[888,1533,1063],{"class":1062},[888,1535,1455],{"class":982},[888,1537,1538],{"class":897},"EUR",[888,1540,1444],{"class":982},[888,1542,1463],{"class":968},[888,1544,1545,1547,1550,1552,1554,1556,1559,1561],{"class":890,"line":1127},[888,1546,1444],{"class":1443},[888,1548,1549],{"class":1447},"currency_name",[888,1551,1444],{"class":1443},[888,1553,1063],{"class":1062},[888,1555,1455],{"class":982},[888,1557,1558],{"class":897},"Euro",[888,1560,1444],{"class":982},[888,1562,1463],{"class":968},[888,1564,1565,1567,1570,1572,1574,1576,1579,1581],{"class":890,"line":1143},[888,1566,1444],{"class":1443},[888,1568,1569],{"class":1447},"emoji",[888,1571,1444],{"class":1443},[888,1573,1063],{"class":1062},[888,1575,1455],{"class":982},[888,1577,1578],{"class":897},"🇫🇷",[888,1580,1444],{"class":982},[888,1582,1463],{"class":968},[888,1584,1585,1587,1590,1592,1594,1596,1599,1601],{"class":890,"line":1155},[888,1586,1444],{"class":1443},[888,1588,1589],{"class":1447},"ip",[888,1591,1444],{"class":1443},[888,1593,1063],{"class":1062},[888,1595,1455],{"class":982},[888,1597,1598],{"class":897},"137.174.48.5",[888,1600,1444],{"class":982},[888,1602,1463],{"class":968},[888,1604,1605,1607,1610,1612,1614,1616,1619,1621],{"class":890,"line":1167},[888,1606,1444],{"class":1443},[888,1608,1609],{"class":1447},"languages",[888,1611,1444],{"class":1443},[888,1613,1063],{"class":1062},[888,1615,1455],{"class":982},[888,1617,1618],{"class":897},"Frañs",[888,1620,1444],{"class":982},[888,1622,1463],{"class":968},[888,1624,1625,1627,1630,1632,1634,1636,1639,1641],{"class":890,"line":1179},[888,1626,1444],{"class":1443},[888,1628,1629],{"class":1447},"latitude",[888,1631,1444],{"class":1443},[888,1633,1063],{"class":1062},[888,1635,1455],{"class":982},[888,1637,1638],{"class":897},"48.85661400",[888,1640,1444],{"class":982},[888,1642,1463],{"class":968},[888,1644,1645,1647,1650,1652,1654,1656,1659,1661],{"class":890,"line":1195},[888,1646,1444],{"class":1443},[888,1648,1649],{"class":1447},"longitude",[888,1651,1444],{"class":1443},[888,1653,1063],{"class":1062},[888,1655,1455],{"class":982},[888,1657,1658],{"class":897},"2.35222190",[888,1660,1444],{"class":982},[888,1662,1463],{"class":968},[888,1664,1665,1667,1670,1672,1674,1676,1679,1681],{"class":890,"line":1210},[888,1666,1444],{"class":1443},[888,1668,1669],{"class":1447},"name",[888,1671,1444],{"class":1443},[888,1673,1063],{"class":1062},[888,1675,1455],{"class":982},[888,1677,1678],{"class":897},"France",[888,1680,1444],{"class":982},[888,1682,1463],{"class":968},[888,1684,1685,1687,1690,1692,1694,1696,1699,1701],{"class":890,"line":1226},[888,1686,1444],{"class":1443},[888,1688,1689],{"class":1447},"nationality",[888,1691,1444],{"class":1443},[888,1693,1063],{"class":1062},[888,1695,1455],{"class":982},[888,1697,1698],{"class":897},"French",[888,1700,1444],{"class":982},[888,1702,1463],{"class":968},[888,1704,1705,1707,1710,1712,1714,1716,1718,1720],{"class":890,"line":1238},[888,1706,1444],{"class":1443},[888,1708,1709],{"class":1447},"native",[888,1711,1444],{"class":1443},[888,1713,1063],{"class":1062},[888,1715,1455],{"class":982},[888,1717,1678],{"class":897},[888,1719,1444],{"class":982},[888,1721,1463],{"class":968},[888,1723,1724,1726,1729,1731,1733,1735,1738,1740],{"class":890,"line":1250},[888,1725,1444],{"class":1443},[888,1727,1728],{"class":1447},"network",[888,1730,1444],{"class":1443},[888,1732,1063],{"class":1062},[888,1734,1455],{"class":982},[888,1736,1737],{"class":897},"137.174.48.0\u002F21",[888,1739,1444],{"class":982},[888,1741,1463],{"class":968},[888,1743,1744,1746,1749,1751,1753,1755,1758,1760],{"class":890,"line":1262},[888,1745,1444],{"class":1443},[888,1747,1748],{"class":1447},"numericCode",[888,1750,1444],{"class":1443},[888,1752,1063],{"class":1062},[888,1754,1455],{"class":982},[888,1756,1757],{"class":897},"250",[888,1759,1444],{"class":982},[888,1761,1463],{"class":968},[888,1763,1764,1766,1769,1771,1773,1775,1778,1780],{"class":890,"line":1274},[888,1765,1444],{"class":1443},[888,1767,1768],{"class":1447},"phone",[888,1770,1444],{"class":1443},[888,1772,1063],{"class":1062},[888,1774,1455],{"class":982},[888,1776,1777],{"class":897},"33",[888,1779,1444],{"class":982},[888,1781,1463],{"class":968},[888,1783,1784,1786,1789,1791,1793,1795,1798,1800],{"class":890,"line":1289},[888,1785,1444],{"class":1443},[888,1787,1788],{"class":1447},"region",[888,1790,1444],{"class":1443},[888,1792,1063],{"class":1062},[888,1794,1455],{"class":982},[888,1796,1797],{"class":897},"FR-75C",[888,1799,1444],{"class":982},[888,1801,1463],{"class":968},[888,1803,1804,1806,1809,1811,1813,1815,1817,1819],{"class":890,"line":1301},[888,1805,1444],{"class":1443},[888,1807,1808],{"class":1447},"state",[888,1810,1444],{"class":1443},[888,1812,1063],{"class":1062},[888,1814,1455],{"class":982},[888,1816,1458],{"class":897},[888,1818,1444],{"class":982},[888,1820,1463],{"class":968},[888,1822,1823,1825,1828,1830,1832,1834,1837,1839],{"class":890,"line":1316},[888,1824,1444],{"class":1443},[888,1826,1827],{"class":1447},"subregion",[888,1829,1444],{"class":1443},[888,1831,1063],{"class":1062},[888,1833,1455],{"class":982},[888,1835,1836],{"class":897},"Western Europe",[888,1838,1444],{"class":982},[888,1840,1463],{"class":968},[888,1842,1843,1845,1848,1850,1852,1854,1857,1859],{"class":890,"line":1332},[888,1844,1444],{"class":1443},[888,1846,1847],{"class":1447},"timeZoneName",[888,1849,1444],{"class":1443},[888,1851,1063],{"class":1062},[888,1853,1455],{"class":982},[888,1855,1856],{"class":897},"Central European Time",[888,1858,1444],{"class":982},[888,1860,1463],{"class":968},[888,1862,1863,1865,1868,1870,1872,1874,1877,1879],{"class":890,"line":1344},[888,1864,1444],{"class":1443},[888,1866,1867],{"class":1447},"timezone",[888,1869,1444],{"class":1443},[888,1871,1063],{"class":1062},[888,1873,1455],{"class":982},[888,1875,1876],{"class":897},"Europe\u002FParis",[888,1878,1444],{"class":982},[888,1880,1463],{"class":968},[888,1882,1883,1885,1888,1890,1892,1894,1897,1899],{"class":890,"line":1356},[888,1884,1444],{"class":1443},[888,1886,1887],{"class":1447},"tld",[888,1889,1444],{"class":1443},[888,1891,1063],{"class":1062},[888,1893,1455],{"class":982},[888,1895,1896],{"class":897},".fr",[888,1898,1444],{"class":982},[888,1900,1463],{"class":968},[888,1902,1903,1905,1908,1910,1912,1914,1917,1919],{"class":890,"line":1368},[888,1904,1444],{"class":1443},[888,1906,1907],{"class":1447},"utc_offset",[888,1909,1444],{"class":1443},[888,1911,1063],{"class":1062},[888,1913,1455],{"class":982},[888,1915,1916],{"class":897},"UTC+01:00",[888,1918,1444],{"class":982},[888,1920,1463],{"class":968},[888,1922,1923,1925,1928,1930,1932,1934,1937],{"class":890,"line":1380},[888,1924,1444],{"class":1443},[888,1926,1927],{"class":1447},"zip_code",[888,1929,1444],{"class":1443},[888,1931,1063],{"class":1062},[888,1933,1455],{"class":982},[888,1935,1936],{"class":897},"123456",[888,1938,1939],{"class":982},"\"\n",[888,1941,1942],{"class":890,"line":1392},[888,1943,1395],{"class":968},[1945,1946,1947],"note",{},[821,1948,1949,1950,1953],{},"For country-level lookups without city detail, use the ",[825,1951,1952],{"href":96},"Country"," source instead.",[1955,1956,1957],"style",{},"html pre.shiki code .sHOzp, html code.shiki .sHOzp{--shiki-light:#795E26;--shiki-default:#795E26;--shiki-dark:#50FA7B}html pre.shiki code .sFB1V, html code.shiki .sFB1V{--shiki-light:#A31515;--shiki-default:#A31515;--shiki-dark:#F1FA8C}html pre.shiki code .sjR7W, html code.shiki .sjR7W{--shiki-light:#0000FF;--shiki-default:#0000FF;--shiki-dark:#BD93F9}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 .sZ328, html code.shiki .sZ328{--shiki-light:#AF00DB;--shiki-default:#AF00DB;--shiki-dark:#FF79C6}html pre.shiki code .sDd4n, html code.shiki .sDd4n{--shiki-light:#000000;--shiki-default:#000000;--shiki-dark:#F8F8F2}html pre.shiki code .sjsA6, html code.shiki .sjsA6{--shiki-light:#001080;--shiki-default:#001080;--shiki-dark:#F8F8F2}html pre.shiki code .sFkSl, html code.shiki .sFkSl{--shiki-light:#A31515;--shiki-default:#A31515;--shiki-dark:#E9F284}html pre.shiki code .sl46w, html code.shiki .sl46w{--shiki-light:#0000FF;--shiki-default:#0000FF;--shiki-dark:#FF79C6}html pre.shiki code .sFs1U, html code.shiki .sFs1U{--shiki-light:#267F99;--shiki-light-font-style:inherit;--shiki-default:#267F99;--shiki-default-font-style:inherit;--shiki-dark:#8BE9FD;--shiki-dark-font-style:italic}html pre.shiki code .saOXh, html code.shiki .saOXh{--shiki-light:#000000;--shiki-default:#000000;--shiki-dark:#FF79C6}html pre.shiki code .sghk6, html code.shiki .sghk6{--shiki-light:#008000;--shiki-default:#008000;--shiki-dark:#6272A4}html pre.shiki code .spgvN, html code.shiki .spgvN{--shiki-light:#098658;--shiki-default:#098658;--shiki-dark:#BD93F9}html pre.shiki code .saJyd, html code.shiki .saJyd{--shiki-light:#0451A5;--shiki-default:#0451A5;--shiki-dark:#8BE9FE}html pre.shiki code .s_W10, html code.shiki .s_W10{--shiki-light:#0451A5;--shiki-default:#0451A5;--shiki-dark:#8BE9FD}",{"title":884,"searchDepth":995,"depth":995,"links":1959},[1960,1961,1962,1963],{"id":849,"depth":995,"text":81},{"id":872,"depth":995,"text":873},{"id":1035,"depth":995,"text":1036},{"id":1400,"depth":995,"text":1401},"IP-to-city geolocation using RFC 8805 geofeeds, compiled into city.mmdb with full geographic metadata.","md","i-lucide-map-pin",{},null,"---\ntitle: City Geolocation\ndescription: IP-to-city geolocation using RFC 8805 geofeeds, compiled into city.mmdb with full geographic metadata.\nicon: i-lucide-map-pin\n---\n\nThe City source maps IP prefixes to city-level geographic data using [RFC 8805](https:\u002F\u002Fdatatracker.ietf.org\u002Fdoc\u002Fhtml\u002Frfc8805) validated geofeeds enriched with a comprehensive country and city hierarchy. Records include city, state, country, coordinates, timezone, currency, and calling code.\n\n**Output file:** `city.mmdb`\n\n---\n\n## Data Sources\n\n- Validated geofeed CSV: [geolocatemuch.com\u002Fgeofeeds\u002Fvalidated-all.csv](https:\u002F\u002Fgeolocatemuch.com\u002Fgeofeeds\u002Fvalidated-all.csv)\n- Country and city hierarchy: bundled `countries+states+cities.json`\n\n---\n\n## Usage\n\n::code-group\n```bash [pnpm]\npnpm dlx @riavzon\u002Fshield-base --city\n```\n\n```bash [yarn]\nyarn dlx @riavzon\u002Fshield-base --city\n```\n\n```bash [npm]\nnpx @riavzon\u002Fshield-base --city\n```\n\n```bash [bun]\nbunx @riavzon\u002Fshield-base --city\n```\n```ts [Programmatic]\nimport { buildCitiesData } from '@riavzon\u002Fshield-base';\n\nawait buildCitiesData('.\u002Fout', 'mmdbctl');\n```\n::\n\n---\n\n## Record Structure\n\n```ts\ninterface CityGeoRecord {\n  range: string;\n  country_code: string;   \u002F\u002F ISO 3166-1 alpha-2, e.g. \"FR\"\n  region: string;         \u002F\u002F Region code, e.g. \"FR-75C\"\n  city: string;\n  zip_code: string;\n  numericCode: string;    \u002F\u002F ISO 3166-1 numeric, e.g. \"250\"\n  latitude: string;\n  longitude: string;\n  state: string;\n  name: string;           \u002F\u002F Country name\n  native: string;         \u002F\u002F Native country name\n  phone: string;          \u002F\u002F International calling code\n  continent: string;\n  capital: string;\n  currency: string;\n  currency_name: string;\n  iso639: string;         \u002F\u002F Primary language code\n  languages: string;\n  emoji: string;          \u002F\u002F Country flag emoji\n  timezone: string;       \u002F\u002F IANA timezone identifier\n  utc_offset: string;\n  tld: string;\n  nationality: string;\n  subregion: string;\n  timeZoneName: string;\n}\n```\n\n---\n\n## Example Lookup\n\n```bash [Terminal]\nmmdbctl read -f json-pretty 137.174.48.5 outputDirectory\u002Fcity.mmdb\n```\n\n```json\n{\n\"capital\": \"Paris\",\n\"city\": \"Paris\",\n\"continent\": \"Europe\",\n\"country_code\": \"FR\",\n\"currency\": \"EUR\",\n\"currency_name\": \"Euro\",\n\"emoji\": \"🇫🇷\",\n\"ip\": \"137.174.48.5\",\n\"languages\": \"Frañs\",\n\"latitude\": \"48.85661400\",\n\"longitude\": \"2.35222190\",\n\"name\": \"France\",\n\"nationality\": \"French\",\n\"native\": \"France\",\n\"network\": \"137.174.48.0\u002F21\",\n\"numericCode\": \"250\",\n\"phone\": \"33\",\n\"region\": \"FR-75C\",\n\"state\": \"Paris\",\n\"subregion\": \"Western Europe\",\n\"timeZoneName\": \"Central European Time\",\n\"timezone\": \"Europe\u002FParis\",\n\"tld\": \".fr\",\n\"utc_offset\": \"UTC+01:00\",\n\"zip_code\": \"123456\"\n}\n```\n\n::note\nFor country-level lookups without city detail, use the [Country](\u002Fdocs\u002Fshield-base\u002Fdata-sources\u002Fcountry) source instead.\n::\n",{"title":91,"description":1964},"F8q3oqa0mOXZG9BZEOsmvl6e7eGa3Snm14HoYq8ycBg",[1973,1974],{"title":87,"path":88,"stem":89,"children":-1},{"title":95,"path":96,"stem":97,"children":-1},{"id":816,"title":91,"body":1976,"description":1964,"extension":1965,"icon":1966,"meta":2898,"module":1968,"navigation":8,"path":92,"rawbody":1969,"seo":2899,"stem":93,"__hash__":1971},{"type":818,"value":1977,"toc":2892},[1978,1983,1989,1991,1993,2004,2006,2008,2114,2116,2118,2402,2404,2406,2424,2884,2890],[821,1979,823,1980,831],{},[825,1981,830],{"href":827,"rel":1982},[829],[821,1984,1985,838,1987],{},[835,1986,837],{},[840,1988,842],{},[844,1990],{},[847,1992,81],{"id":849},[851,1994,1995,2000],{},[854,1996,856,1997],{},[825,1998,861],{"href":859,"rel":1999},[829],[854,2001,864,2002],{},[840,2003,867],{},[844,2005],{},[847,2007,873],{"id":872},[875,2009,2010,2024,2038,2050,2062],{},[878,2011,2012],{"className":880,"code":881,"filename":882,"language":883,"meta":884,"style":884},[840,2013,2014],{"__ignoreMap":884},[888,2015,2016,2018,2020,2022],{"class":890,"line":891},[888,2017,882],{"class":894},[888,2019,898],{"class":897},[888,2021,901],{"class":897},[888,2023,905],{"class":904},[878,2025,2026],{"className":880,"code":908,"filename":909,"language":883,"meta":884,"style":884},[840,2027,2028],{"__ignoreMap":884},[888,2029,2030,2032,2034,2036],{"class":890,"line":891},[888,2031,909],{"class":894},[888,2033,898],{"class":897},[888,2035,901],{"class":897},[888,2037,905],{"class":904},[878,2039,2040],{"className":880,"code":924,"filename":925,"language":883,"meta":884,"style":884},[840,2041,2042],{"__ignoreMap":884},[888,2043,2044,2046,2048],{"class":890,"line":891},[888,2045,932],{"class":894},[888,2047,901],{"class":897},[888,2049,905],{"class":904},[878,2051,2052],{"className":880,"code":939,"filename":940,"language":883,"meta":884,"style":884},[840,2053,2054],{"__ignoreMap":884},[888,2055,2056,2058,2060],{"class":890,"line":891},[888,2057,947],{"class":894},[888,2059,901],{"class":897},[888,2061,905],{"class":904},[878,2063,2064],{"className":954,"code":955,"filename":956,"language":957,"meta":884,"style":884},[840,2065,2066,2086,2090],{"__ignoreMap":884},[888,2067,2068,2070,2072,2074,2076,2078,2080,2082,2084],{"class":890,"line":891},[888,2069,965],{"class":964},[888,2071,969],{"class":968},[888,2073,973],{"class":972},[888,2075,976],{"class":968},[888,2077,979],{"class":964},[888,2079,983],{"class":982},[888,2081,986],{"class":897},[888,2083,989],{"class":982},[888,2085,992],{"class":968},[888,2087,2088],{"class":890,"line":995},[888,2089,998],{"emptyLinePlaceholder":8},[888,2091,2092,2094,2096,2098,2100,2102,2104,2106,2108,2110,2112],{"class":890,"line":1001},[888,2093,1004],{"class":964},[888,2095,1007],{"class":894},[888,2097,1010],{"class":968},[888,2099,989],{"class":982},[888,2101,1015],{"class":897},[888,2103,989],{"class":982},[888,2105,1020],{"class":968},[888,2107,989],{"class":982},[888,2109,1025],{"class":897},[888,2111,989],{"class":982},[888,2113,1030],{"class":968},[844,2115],{},[847,2117,1036],{"id":1035},[878,2119,2120],{"className":954,"code":1039,"language":957,"meta":884,"style":884},[840,2121,2122,2130,2140,2152,2164,2174,2184,2196,2206,2216,2226,2238,2250,2262,2272,2282,2292,2302,2314,2324,2336,2348,2358,2368,2378,2388,2398],{"__ignoreMap":884},[888,2123,2124,2126,2128],{"class":890,"line":891},[888,2125,1047],{"class":1046},[888,2127,1051],{"class":1050},[888,2129,1054],{"class":968},[888,2131,2132,2134,2136,2138],{"class":890,"line":995},[888,2133,1059],{"class":972},[888,2135,1063],{"class":1062},[888,2137,1066],{"class":1050},[888,2139,992],{"class":968},[888,2141,2142,2144,2146,2148,2150],{"class":890,"line":1001},[888,2143,1073],{"class":972},[888,2145,1063],{"class":1062},[888,2147,1066],{"class":1050},[888,2149,1080],{"class":968},[888,2151,1084],{"class":1083},[888,2153,2154,2156,2158,2160,2162],{"class":890,"line":1087},[888,2155,1090],{"class":972},[888,2157,1063],{"class":1062},[888,2159,1066],{"class":1050},[888,2161,1097],{"class":968},[888,2163,1100],{"class":1083},[888,2165,2166,2168,2170,2172],{"class":890,"line":1103},[888,2167,1106],{"class":972},[888,2169,1063],{"class":1062},[888,2171,1066],{"class":1050},[888,2173,992],{"class":968},[888,2175,2176,2178,2180,2182],{"class":890,"line":1115},[888,2177,1118],{"class":972},[888,2179,1063],{"class":1062},[888,2181,1066],{"class":1050},[888,2183,992],{"class":968},[888,2185,2186,2188,2190,2192,2194],{"class":890,"line":1127},[888,2187,1130],{"class":972},[888,2189,1063],{"class":1062},[888,2191,1066],{"class":1050},[888,2193,1137],{"class":968},[888,2195,1140],{"class":1083},[888,2197,2198,2200,2202,2204],{"class":890,"line":1143},[888,2199,1146],{"class":972},[888,2201,1063],{"class":1062},[888,2203,1066],{"class":1050},[888,2205,992],{"class":968},[888,2207,2208,2210,2212,2214],{"class":890,"line":1155},[888,2209,1158],{"class":972},[888,2211,1063],{"class":1062},[888,2213,1066],{"class":1050},[888,2215,992],{"class":968},[888,2217,2218,2220,2222,2224],{"class":890,"line":1167},[888,2219,1170],{"class":972},[888,2221,1063],{"class":1062},[888,2223,1066],{"class":1050},[888,2225,992],{"class":968},[888,2227,2228,2230,2232,2234,2236],{"class":890,"line":1179},[888,2229,1182],{"class":972},[888,2231,1063],{"class":1062},[888,2233,1066],{"class":1050},[888,2235,1189],{"class":968},[888,2237,1192],{"class":1083},[888,2239,2240,2242,2244,2246,2248],{"class":890,"line":1195},[888,2241,1198],{"class":972},[888,2243,1063],{"class":1062},[888,2245,1066],{"class":1050},[888,2247,1097],{"class":968},[888,2249,1207],{"class":1083},[888,2251,2252,2254,2256,2258,2260],{"class":890,"line":1210},[888,2253,1213],{"class":972},[888,2255,1063],{"class":1062},[888,2257,1066],{"class":1050},[888,2259,1220],{"class":968},[888,2261,1223],{"class":1083},[888,2263,2264,2266,2268,2270],{"class":890,"line":1226},[888,2265,1229],{"class":972},[888,2267,1063],{"class":1062},[888,2269,1066],{"class":1050},[888,2271,992],{"class":968},[888,2273,2274,2276,2278,2280],{"class":890,"line":1238},[888,2275,1241],{"class":972},[888,2277,1063],{"class":1062},[888,2279,1066],{"class":1050},[888,2281,992],{"class":968},[888,2283,2284,2286,2288,2290],{"class":890,"line":1250},[888,2285,1253],{"class":972},[888,2287,1063],{"class":1062},[888,2289,1066],{"class":1050},[888,2291,992],{"class":968},[888,2293,2294,2296,2298,2300],{"class":890,"line":1262},[888,2295,1265],{"class":972},[888,2297,1063],{"class":1062},[888,2299,1066],{"class":1050},[888,2301,992],{"class":968},[888,2303,2304,2306,2308,2310,2312],{"class":890,"line":1274},[888,2305,1277],{"class":972},[888,2307,1063],{"class":1062},[888,2309,1066],{"class":1050},[888,2311,1097],{"class":968},[888,2313,1286],{"class":1083},[888,2315,2316,2318,2320,2322],{"class":890,"line":1289},[888,2317,1292],{"class":972},[888,2319,1063],{"class":1062},[888,2321,1066],{"class":1050},[888,2323,992],{"class":968},[888,2325,2326,2328,2330,2332,2334],{"class":890,"line":1301},[888,2327,1304],{"class":972},[888,2329,1063],{"class":1062},[888,2331,1066],{"class":1050},[888,2333,1220],{"class":968},[888,2335,1313],{"class":1083},[888,2337,2338,2340,2342,2344,2346],{"class":890,"line":1316},[888,2339,1319],{"class":972},[888,2341,1063],{"class":1062},[888,2343,1066],{"class":1050},[888,2345,1326],{"class":968},[888,2347,1329],{"class":1083},[888,2349,2350,2352,2354,2356],{"class":890,"line":1332},[888,2351,1335],{"class":972},[888,2353,1063],{"class":1062},[888,2355,1066],{"class":1050},[888,2357,992],{"class":968},[888,2359,2360,2362,2364,2366],{"class":890,"line":1344},[888,2361,1347],{"class":972},[888,2363,1063],{"class":1062},[888,2365,1066],{"class":1050},[888,2367,992],{"class":968},[888,2369,2370,2372,2374,2376],{"class":890,"line":1356},[888,2371,1359],{"class":972},[888,2373,1063],{"class":1062},[888,2375,1066],{"class":1050},[888,2377,992],{"class":968},[888,2379,2380,2382,2384,2386],{"class":890,"line":1368},[888,2381,1371],{"class":972},[888,2383,1063],{"class":1062},[888,2385,1066],{"class":1050},[888,2387,992],{"class":968},[888,2389,2390,2392,2394,2396],{"class":890,"line":1380},[888,2391,1383],{"class":972},[888,2393,1063],{"class":1062},[888,2395,1066],{"class":1050},[888,2397,992],{"class":968},[888,2399,2400],{"class":890,"line":1392},[888,2401,1395],{"class":968},[844,2403],{},[847,2405,1401],{"id":1400},[878,2407,2408],{"className":880,"code":1404,"filename":1405,"language":883,"meta":884,"style":884},[840,2409,2410],{"__ignoreMap":884},[888,2411,2412,2414,2416,2418,2420,2422],{"class":890,"line":891},[888,2413,1025],{"class":894},[888,2415,1414],{"class":897},[888,2417,1417],{"class":904},[888,2419,1420],{"class":897},[888,2421,1424],{"class":1423},[888,2423,1427],{"class":897},[878,2425,2426],{"className":1430,"code":1431,"language":5,"meta":884,"style":884},[840,2427,2428,2432,2450,2468,2486,2504,2522,2540,2558,2576,2594,2612,2630,2648,2666,2684,2702,2720,2738,2756,2774,2792,2810,2828,2846,2864,2880],{"__ignoreMap":884},[888,2429,2430],{"class":890,"line":891},[888,2431,1438],{"class":968},[888,2433,2434,2436,2438,2440,2442,2444,2446,2448],{"class":890,"line":995},[888,2435,1444],{"class":1443},[888,2437,1448],{"class":1447},[888,2439,1444],{"class":1443},[888,2441,1063],{"class":1062},[888,2443,1455],{"class":982},[888,2445,1458],{"class":897},[888,2447,1444],{"class":982},[888,2449,1463],{"class":968},[888,2451,2452,2454,2456,2458,2460,2462,2464,2466],{"class":890,"line":1001},[888,2453,1444],{"class":1443},[888,2455,1470],{"class":1447},[888,2457,1444],{"class":1443},[888,2459,1063],{"class":1062},[888,2461,1455],{"class":982},[888,2463,1458],{"class":897},[888,2465,1444],{"class":982},[888,2467,1463],{"class":968},[888,2469,2470,2472,2474,2476,2478,2480,2482,2484],{"class":890,"line":1087},[888,2471,1444],{"class":1443},[888,2473,1489],{"class":1447},[888,2475,1444],{"class":1443},[888,2477,1063],{"class":1062},[888,2479,1455],{"class":982},[888,2481,1498],{"class":897},[888,2483,1444],{"class":982},[888,2485,1463],{"class":968},[888,2487,2488,2490,2492,2494,2496,2498,2500,2502],{"class":890,"line":1103},[888,2489,1444],{"class":1443},[888,2491,1509],{"class":1447},[888,2493,1444],{"class":1443},[888,2495,1063],{"class":1062},[888,2497,1455],{"class":982},[888,2499,1518],{"class":897},[888,2501,1444],{"class":982},[888,2503,1463],{"class":968},[888,2505,2506,2508,2510,2512,2514,2516,2518,2520],{"class":890,"line":1115},[888,2507,1444],{"class":1443},[888,2509,1529],{"class":1447},[888,2511,1444],{"class":1443},[888,2513,1063],{"class":1062},[888,2515,1455],{"class":982},[888,2517,1538],{"class":897},[888,2519,1444],{"class":982},[888,2521,1463],{"class":968},[888,2523,2524,2526,2528,2530,2532,2534,2536,2538],{"class":890,"line":1127},[888,2525,1444],{"class":1443},[888,2527,1549],{"class":1447},[888,2529,1444],{"class":1443},[888,2531,1063],{"class":1062},[888,2533,1455],{"class":982},[888,2535,1558],{"class":897},[888,2537,1444],{"class":982},[888,2539,1463],{"class":968},[888,2541,2542,2544,2546,2548,2550,2552,2554,2556],{"class":890,"line":1143},[888,2543,1444],{"class":1443},[888,2545,1569],{"class":1447},[888,2547,1444],{"class":1443},[888,2549,1063],{"class":1062},[888,2551,1455],{"class":982},[888,2553,1578],{"class":897},[888,2555,1444],{"class":982},[888,2557,1463],{"class":968},[888,2559,2560,2562,2564,2566,2568,2570,2572,2574],{"class":890,"line":1155},[888,2561,1444],{"class":1443},[888,2563,1589],{"class":1447},[888,2565,1444],{"class":1443},[888,2567,1063],{"class":1062},[888,2569,1455],{"class":982},[888,2571,1598],{"class":897},[888,2573,1444],{"class":982},[888,2575,1463],{"class":968},[888,2577,2578,2580,2582,2584,2586,2588,2590,2592],{"class":890,"line":1167},[888,2579,1444],{"class":1443},[888,2581,1609],{"class":1447},[888,2583,1444],{"class":1443},[888,2585,1063],{"class":1062},[888,2587,1455],{"class":982},[888,2589,1618],{"class":897},[888,2591,1444],{"class":982},[888,2593,1463],{"class":968},[888,2595,2596,2598,2600,2602,2604,2606,2608,2610],{"class":890,"line":1179},[888,2597,1444],{"class":1443},[888,2599,1629],{"class":1447},[888,2601,1444],{"class":1443},[888,2603,1063],{"class":1062},[888,2605,1455],{"class":982},[888,2607,1638],{"class":897},[888,2609,1444],{"class":982},[888,2611,1463],{"class":968},[888,2613,2614,2616,2618,2620,2622,2624,2626,2628],{"class":890,"line":1195},[888,2615,1444],{"class":1443},[888,2617,1649],{"class":1447},[888,2619,1444],{"class":1443},[888,2621,1063],{"class":1062},[888,2623,1455],{"class":982},[888,2625,1658],{"class":897},[888,2627,1444],{"class":982},[888,2629,1463],{"class":968},[888,2631,2632,2634,2636,2638,2640,2642,2644,2646],{"class":890,"line":1210},[888,2633,1444],{"class":1443},[888,2635,1669],{"class":1447},[888,2637,1444],{"class":1443},[888,2639,1063],{"class":1062},[888,2641,1455],{"class":982},[888,2643,1678],{"class":897},[888,2645,1444],{"class":982},[888,2647,1463],{"class":968},[888,2649,2650,2652,2654,2656,2658,2660,2662,2664],{"class":890,"line":1226},[888,2651,1444],{"class":1443},[888,2653,1689],{"class":1447},[888,2655,1444],{"class":1443},[888,2657,1063],{"class":1062},[888,2659,1455],{"class":982},[888,2661,1698],{"class":897},[888,2663,1444],{"class":982},[888,2665,1463],{"class":968},[888,2667,2668,2670,2672,2674,2676,2678,2680,2682],{"class":890,"line":1238},[888,2669,1444],{"class":1443},[888,2671,1709],{"class":1447},[888,2673,1444],{"class":1443},[888,2675,1063],{"class":1062},[888,2677,1455],{"class":982},[888,2679,1678],{"class":897},[888,2681,1444],{"class":982},[888,2683,1463],{"class":968},[888,2685,2686,2688,2690,2692,2694,2696,2698,2700],{"class":890,"line":1250},[888,2687,1444],{"class":1443},[888,2689,1728],{"class":1447},[888,2691,1444],{"class":1443},[888,2693,1063],{"class":1062},[888,2695,1455],{"class":982},[888,2697,1737],{"class":897},[888,2699,1444],{"class":982},[888,2701,1463],{"class":968},[888,2703,2704,2706,2708,2710,2712,2714,2716,2718],{"class":890,"line":1262},[888,2705,1444],{"class":1443},[888,2707,1748],{"class":1447},[888,2709,1444],{"class":1443},[888,2711,1063],{"class":1062},[888,2713,1455],{"class":982},[888,2715,1757],{"class":897},[888,2717,1444],{"class":982},[888,2719,1463],{"class":968},[888,2721,2722,2724,2726,2728,2730,2732,2734,2736],{"class":890,"line":1274},[888,2723,1444],{"class":1443},[888,2725,1768],{"class":1447},[888,2727,1444],{"class":1443},[888,2729,1063],{"class":1062},[888,2731,1455],{"class":982},[888,2733,1777],{"class":897},[888,2735,1444],{"class":982},[888,2737,1463],{"class":968},[888,2739,2740,2742,2744,2746,2748,2750,2752,2754],{"class":890,"line":1289},[888,2741,1444],{"class":1443},[888,2743,1788],{"class":1447},[888,2745,1444],{"class":1443},[888,2747,1063],{"class":1062},[888,2749,1455],{"class":982},[888,2751,1797],{"class":897},[888,2753,1444],{"class":982},[888,2755,1463],{"class":968},[888,2757,2758,2760,2762,2764,2766,2768,2770,2772],{"class":890,"line":1301},[888,2759,1444],{"class":1443},[888,2761,1808],{"class":1447},[888,2763,1444],{"class":1443},[888,2765,1063],{"class":1062},[888,2767,1455],{"class":982},[888,2769,1458],{"class":897},[888,2771,1444],{"class":982},[888,2773,1463],{"class":968},[888,2775,2776,2778,2780,2782,2784,2786,2788,2790],{"class":890,"line":1316},[888,2777,1444],{"class":1443},[888,2779,1827],{"class":1447},[888,2781,1444],{"class":1443},[888,2783,1063],{"class":1062},[888,2785,1455],{"class":982},[888,2787,1836],{"class":897},[888,2789,1444],{"class":982},[888,2791,1463],{"class":968},[888,2793,2794,2796,2798,2800,2802,2804,2806,2808],{"class":890,"line":1332},[888,2795,1444],{"class":1443},[888,2797,1847],{"class":1447},[888,2799,1444],{"class":1443},[888,2801,1063],{"class":1062},[888,2803,1455],{"class":982},[888,2805,1856],{"class":897},[888,2807,1444],{"class":982},[888,2809,1463],{"class":968},[888,2811,2812,2814,2816,2818,2820,2822,2824,2826],{"class":890,"line":1344},[888,2813,1444],{"class":1443},[888,2815,1867],{"class":1447},[888,2817,1444],{"class":1443},[888,2819,1063],{"class":1062},[888,2821,1455],{"class":982},[888,2823,1876],{"class":897},[888,2825,1444],{"class":982},[888,2827,1463],{"class":968},[888,2829,2830,2832,2834,2836,2838,2840,2842,2844],{"class":890,"line":1356},[888,2831,1444],{"class":1443},[888,2833,1887],{"class":1447},[888,2835,1444],{"class":1443},[888,2837,1063],{"class":1062},[888,2839,1455],{"class":982},[888,2841,1896],{"class":897},[888,2843,1444],{"class":982},[888,2845,1463],{"class":968},[888,2847,2848,2850,2852,2854,2856,2858,2860,2862],{"class":890,"line":1368},[888,2849,1444],{"class":1443},[888,2851,1907],{"class":1447},[888,2853,1444],{"class":1443},[888,2855,1063],{"class":1062},[888,2857,1455],{"class":982},[888,2859,1916],{"class":897},[888,2861,1444],{"class":982},[888,2863,1463],{"class":968},[888,2865,2866,2868,2870,2872,2874,2876,2878],{"class":890,"line":1380},[888,2867,1444],{"class":1443},[888,2869,1927],{"class":1447},[888,2871,1444],{"class":1443},[888,2873,1063],{"class":1062},[888,2875,1455],{"class":982},[888,2877,1936],{"class":897},[888,2879,1939],{"class":982},[888,2881,2882],{"class":890,"line":1392},[888,2883,1395],{"class":968},[1945,2885,2886],{},[821,2887,1949,2888,1953],{},[825,2889,1952],{"href":96},[1955,2891,1957],{},{"title":884,"searchDepth":995,"depth":995,"links":2893},[2894,2895,2896,2897],{"id":849,"depth":995,"text":81},{"id":872,"depth":995,"text":873},{"id":1035,"depth":995,"text":1036},{"id":1400,"depth":995,"text":1401},{},{"title":91,"description":1964},1780436288348]