{
  "localizeStrings": {
    "this node": "this_node",
    "this way": "this_way",
    "this relation": "this_relation",
    "this one-way": "this_oneway",
    "this highway": "this_highway",
    "this railway": "this_railway",
    "this waterway": "this_waterway",
    "this cycleway": "this_cycleway",
    "this footpath": "this_footpath",
    "this cycleway/footpath": "this_cycleway_footpath",
    "this riverbank": "this_riverbank",
    "this crossing": "this_crossing",
    "this railway crossing": "this_railway_crossing",
    "this bridge": "this_bridge",
    "this tunnel": "this_tunnel",
    "this boundary": "this_boundary",
    "this turn-restriction": "this_turn_restriction",
    "this roundabout": "this_roundabout",
    "this mini-roundabout": "this_mini_roundabout",
    "this track": "this_track",
    "this feature": "this_feature",
    "highway": "highway",
    "railway": "railway",
    "waterway": "waterway",
    "cycleway": "cycleway",
    "cycleway_footpath": "cycleway/footpath",
    "riverbank": "riverbank",
    "place_of_worship": "place_of_worship",
    "pub": "pub",
    "restaurant": "restaurant",
    "school": "school",
    "university": "university",
    "hospital": "hospital",
    "library": "library",
    "theatre": "theatre",
    "courthouse": "courthouse",
    "bank": "bank",
    "cinema": "cinema",
    "pharmacy": "pharmacy",
    "cafe": "cafe",
    "fast_food": "fast_food",
    "fuel": "fuel",
    "from": "from",
    "to": "to",
    "left-hand": "left_hand",
    "right-hand": "right_hand"
  },
  "errorTypes": {
    "20": {
      "title": "multiple nodes on the same spot",
      "severity": "warning",
      "description": "There is more than one node in this spot. Offending node IDs: $1",
      "IDs": ["20"],
      "regex": "IDs: ((?:#\\d+,?)+)"
    },
    "30": {
      "title": "non-closed_areas",
      "severity": "error",
      "description": "This way is tagged with '$1' and should be closed-loop.",
      "IDs": ["this", ""],
      "regex": "(this way) is tagged with '(.+)'"
    },
    "40": {
      "title": "dead-ended one-ways",
      "severity": "error",
      "description": "The first node (id $1) of this one-way is not connected to any other way",
      "IDs": ["n", "this"],
      "regex": "\\(id (\\d+)\\) of (this one-way)"
    },
    "41": {
      "title": "",
      "severity": "error",
      "description": "The last node (id $1) of this one-way is not connected to any other way",
      "IDs": ["n", "this"],
      "regex": "\\(id (\\d+)\\) of (this one-way)"
    },
    "42": {
      "title": "",
      "severity": "error",
      "description": "This node cannot be reached because one-ways only lead away from here",
      "IDs": ["this"],
      "regex": "(this node)"
    },
    "43": {
      "title": "",
      "severity": "error",
      "description": "You cannot escape from this node because one-ways only lead to here",
      "IDs": ["this"],
      "regex": "(this node)"
    },
    "50": {
      "title": "almost-junctions",
      "severity": "error",
      "description": "This node is very close but not connected to way #$1",
      "IDs": ["this", "w"],
      "regex": "(this node) is very close but not connected to way #(\\d+)"
    },
    "60": {
      "title": "deprecated tags",
      "severity": "warning",
      "description": "This $1 uses deprecated tag $2. Please use $3 instead!",
      "IDs": ["this", "", ""],
      "regex": "(this (?:node|way|relation)) uses deprecated tag '(.+)'\\. Please use &quot;(.+)&quot;"
    },
    "70": {
      "title": "missing tags",
      "severity": "error",
      "description": "This $1 has an empty tag: $2",
      "IDs": ["this", ""],
      "regex": "(this (?:node|way|relation)) has an empty tag: &quot;(.+)=&quot;"
    },
    "71": {
      "title": "",
      "severity": "error",
      "description": "This way has no tags",
      "IDs": ["this"],
      "regex": "(this way)"
    },
    "72": {
      "title": "",
      "severity": "error",
      "description": "This node is not member of any way and does not have any tags",
      "IDs": ["this"],
      "regex": "(this node)"
    },
    "73": {
      "title": "",
      "severity": "error",
      "description": "This way has a $1 tag but no highway tag",
      "IDs": ["this", ""],
      "regex": "(this way) has a (.+) tag"
    },
    "74": {
      "title": "missing tags",
      "severity": "error",
      "description": "This $1 has an empty tag: $2",
      "IDs": ["this", ""],
      "regex": "(this (?:node|way|relation)) has an empty tag: &quot;(.+)=&quot;"
    },
    "75": {
      "description": "This (node|way|relation) has a name \\((.+)\\) but no other tag",
      "IDs": ["this", ""],
      "regex": "(this (?:node|way|relation)) has a name \\((.+)\\)"
    },
    "90": {
      "title": "motorways without ref",
      "severity": "error",
      "description": "This way is tagged as motorway and therefore needs a ref nat_ref or int_ref tag",
      "IDs": ["this"],
      "regex": "(this way)"
    },
    "100": {
      "title": "places of worship without religion",
      "severity": "error",
      "description": "This $1 is tagged as place of worship and therefore needs a religion tag",
      "IDs": ["this"],
      "regex": "(this (?:node|way|relation))"
    },
    "110": {
      "title": "point of interest without name",
      "severity": "error",
      "description": "This node is tagged as $1 and therefore needs a name tag",
      "IDs": ["this", ""],
      "regex": "(this (?:node|way|relation)) is tagged as (.+) and"
    },
    "120": {
      "title": "ways without nodes",
      "severity": "error",
      "description": "This way has just one single node",
      "IDs": ["this"],
      "regex": "(this way)"
    },
    "130": {
      "title": "floating islands",
      "severity": "error",
      "description": "This way is not connected to the rest of the map",
      "IDs": ["this"],
      "regex": "(this way)"
    },
    "150": {
      "title": "railway crossing without tag",
      "severity": "error",
      "description": "This crossing of a highway and a railway needs to be tagged as railway=crossing or railway=level_crossing",
      "IDs": ["this"],
      "regex": "(this crossing)"
    },
    "160": {
      "title": "wrongly used railway tag",
      "severity": "error",
      "description": "There are ways in different layers coming together in this railway crossing. There are ways tagged as tunnel or bridge coming together in this railway crossing",
      "IDs": ["this"],
      "regex": "(this railway crossing)"
    },
    "170": {
      "title": "FIXME tagged items",
      "severity": "error",
      "description": "This feature has a FIXME tag: (.*)",
      "IDs": ["this"],
      "regex": "(this feature) has a FIXME tag: (.*)"
    },
    "180": {
      "title": "relations without type",
      "severity": "error",
      "description": "This relation has no type tag which is mandatory for relations",
      "IDs": ["this"],
      "regex": "(this relation)"
    },
    "190": {
      "title": "intersections without junctions",
      "severity": "error",
      "description": "This $1 intersects the $2 #$3 but there is no junction node",
      "IDs": ["this", "", "w"],
      "regex": "(this .+) intersects the (.+) #(\\d+)"
    },
    "200": {
      "title": "overlapping ways",
      "severity": "error",
      "description": "This $1 overlaps the $2 #$3",
      "IDs": ["this", "", "w"],
      "regex": "(this .+) overlaps the (.+) #(\\d+)"
    },
    "210": {
      "title": "loopings",
      "severity": "error",
      "description": "These errors contain self intersecting ways"
    },
    "211": {
      "title": "",
      "severity": "error",
      "description": "This way contains more than one node at least twice. Nodes are $1.",
      "IDs": ["this", "211"],
      "regex": "(this way) contains more than one node at least twice. Nodes are ((?:#\\d+(?:, )?)+)\\."
    },
    "212": {
      "title": "",
      "severity": "error",
      "description": "This way has only two different nodes and contains one of them more than once",
      "IDs": ["this"],
      "regex": "(this way)"
    },
    "220": {
      "title": "misspelled tags",
      "severity": "error",
      "description": "This $1 is tagged '$2' where $3 looks like $4",
      "regex": "(this (?:node|way|relation)) is tagged '(.+)' where &quot;(.+)&quot; looks like &quot;(.+)&quot;"
    },
    "221": {
      "title": "",
      "severity": "error",
      "description": "The key of this $1's tag is 'key': $2",
      "regex": "(this (?:node|way|relation))\\'s tag is \\'key\\': (.+)"
    },
    "230": {
      "title": "layer conflicts",
      "severity": "error",
      "description": "This node is a junction of ways on different layers.",
      "IDs": ["this"],
      "regex": "(this node)"
    },
    "231": {
      "title": "mixed layers intersection",
      "severity": "error",
      "description": "This node is a junction of ways on different layers: $1",
      "IDs": ["this", "231"],
      "regex": "(this node) is a junction of ways on different layers: (.+)"
    },
    "232": {
      "title": "strange layers",
      "severity": "error",
      "description": "This $1 is tagged with layer $2. This need not be an error, but it looks strange",
      "IDs": ["this", ""],
      "regex": "(this (?:bridge|tunnel)) is tagged with layer (-?\\d+)\\."
    },
    "270": {
      "title": "motorways connected directly",
      "severity": "error",
      "description": "This node is a junction of a motorway and a highway other than motorway, motorway_link, trunk, rest_area or construction. Service or unclassified is only valid if it has access=no/private or it leads to a motorway service area or if it is a service=parking_aisle.",
      "IDs": ["this"],
      "regex": "(this node)"
    },
    "280": {
      "title": "boundaries",
      "severity": "error",
      "description": "Administrative Boundaries can be expressed either by tagging ways or by adding them to a relation. They should be closed-loop sequences of ways, they must not self-intersect or split and they must have a name and an admin_level."
    },
    "281": {
      "title": "missing name",
      "severity": "error",
      "description": "This boundary has no name",
      "IDs": ["this"],
      "regex": "(this boundary)"
    },
    "282": {
      "title": "missing admin level",
      "severity": "error",
      "description": "The boundary of $1 has no (?:valid numeric)?admin_level",
      "regex": "of (.+) has"
    },
    "283": {
      "title": "no closed loop",
      "severity": "error",
      "description": "The boundary of $1 is not closed-loop",
      "regex": "boundary of (.+) is"
    },
    "284": {
      "title": "splitting boundary",
      "severity": "error",
      "description": "The boundary of $1 splits here",
      "regex": "boundary of (.+) splits"
    },
    "285": {
      "title": "admin_level too high",
      "severity": "error",
      "description": "This boundary-way has admin_level $1 but belongs to a relation with lower admin_level (higher priority); it should have the lowest admin_level of all relations",
      "IDs": ["this", ""],
      "regex": "(this boundary)-way has admin_level (-?\\d+) but"
    },
    "290": {
      "title": "restrictions",
      "severity": "error",
      "description": "Analyses all relations tagged type=restriction or following variations type=restriction:hgv type=restriction:caravan type=restriction:motorcar type=restriction:bus type=restriction:agricultural type=restriction:motorcycle type=restriction:bicycle and type=restriction:hazmat"
    },
    "291": {
      "title": "missing type",
      "severity": "error",
      "description": "This turn-restriction has no (?:known )?restriction type",
      "IDs": ["this"],
      "regex": "(this turn-restriction) has"
    },
    "292": {
      "title": "missing from way",
      "severity": "error",
      "description": "This turn-restriction needs exactly one from member. This one has $1",
      "IDs": ["this", ""],
      "regex": "(this turn-restriction) needs.+has (\\d+)"
    },
    "293": {
      "title": "missing to way",
      "severity": "error",
      "description": "This turn-restriction needs exactly one to member. This one has $1",
      "IDs": ["this", ""],
      "regex": "(this turn-restriction) needs.+has (\\d+)"
    },
    "294": {
      "title": "from or to not a way",
      "severity": "error",
      "description": "From- and To-members of this turn-restriction need to be ways. $1",
      "IDs": ["this", "294"],
      "regex": "(this turn-restriction)~.+ways\\. ((?:(?:from|to) (?:node|relation) #\\d+,?)+)"
    },
    "295": {
      "title": "via is not on the way ends",
      "severity": "error",
      "description": "via (node #$1) is not the first or the last member of (from|to) (way #$3)",
      "IDs": ["this", "n", "", "w"],
      "regex": "(this turn-restriction)~via \\(node #(\\d+)\\).+ of (from|to) \\(way #(\\d+)\\)"
    },
    "296": {
      "title": "wrong restriction angle",
      "severity": "error",
      "description": "This turn-restriction type is $1, but angle is $2 degrees. Maybe the restriction type is not appropriate?",
      "IDs": ["this", "", ""],
      "regex": "(this turn-restriction)~.+is (\\w+), but angle is (-?\\d+)"
    },
    "297": {
      "title": "wrong direction of to member",
      "severity": "error",
      "description": "wrong direction of to way $1",
      "IDs": ["this", "w"],
      "regex": "(this turn-restriction)~.+to way (\\d+)"
    },
    "298": {
      "title": "already restricted by oneway",
      "severity": "error",
      "description": "entry already prohibited by oneway tag on $1",
      "IDs": ["this", "w"],
      "regex": "(this turn-restriction)~.+tag on (\\d+)"
    },
    "300": {
      "title": "missing maxspeed",
      "severity": "warning",
      "description": "This highway is missing a maxspeed tag",
      "IDs": ["this"],
      "regex": "(this highway)"
    },
    "310": {
      "title": "roundabouts",
      "severity": "error",
      "description": "Analyses ways with tag junction=roundabout. More then one way can form a roundabout. It supports tag oneway=-1"
    },
    "311": {
      "title": "not closed loop",
      "severity": "error",
      "description": "This way is part of a roundabout but is not closed-loop. (split carriageways approaching a roundabout should not be tagged as roundabout)",
      "IDs": ["this"],
      "regex": "(this way)"
    },
    "312": {
      "title": "wrong direction",
      "severity": "error",
      "description": "If this ((?:mini_)?roundabout) is in a country with (left|right)-hand traffic then its orientation goes the wrong way around",
      "IDs": ["this", ""],
      "regex": "(this (?:mini_)?roundabout) is in a country with ((?:left|right)-hand)"
    },
    "313": {
      "title": "faintly connected",
      "severity": "error",
      "description": "This roundabout has only $1 other roads connected. Roundabouts typically have three",
      "IDs": ["this", ""],
      "regex": "(this roundabout) has only (\\d) other"
    },
    "320": {
      "title": "*_link connections",
      "severity": "error",
      "description": "This way is tagged as highway=$1_link but doesn't have a connection to any other $1 or $1_link",
      "IDs": ["this", "", "", "", ""],
      "regex": "(this way) is tagged as (highway=.+) but doesn't have a connection to any other (.+) or (.+)"
    },
    "350": {
      "title": "bridge-tags",
      "severity": "error",
      "description": "This bridge does not have a tag in common with its surrounding ways that shows the purpose of this bridge. There should be one of these tags: (.+)",
      "NOTE": "Group can be arbitrary list of form: key=value,key=value,key=value...",
      "IDs": ["this", ""],
      "regex": "(this bridge).*tags: (.+)"
    },
    "360": {
      "title": "language unknown",
      "severity": "warning",
      "description": "It would be nice if this (node|way|relation) had an additional tag 'name:XX=(.+)' where XX shows the language of its name '\\2'",
      "IDs": ["this", ""],
      "regex": "(this (?:node|way|relation)) had an additional tag 'name:XX=(.+)' where"
    },
    "370": {
      "title": "doubled places",
      "severity": "error",
      "description": "This node has tags in common with the surrounding way #$1 ((?:\\(including the name '.+'\\) )?)and seems to be redundant",
      "IDs": ["this", "w", "370"],
      "regex": "(this node) has tags in common with the surrounding way #(\\d+) ((?:\\(including the name '.+'\\) )?)and"
    },
    "380": {
      "title": "non-physical use of sport-tag",
      "severity": "error",
      "description": "This way is tagged sport=$1 but has no physical tag like e.g. leisure, building, amenity or highway",
      "IDs": ["this", ""],
      "regex": "(this way) is tagged (sport=.+) but"
    },
    "390": {
      "title": "missing tracktype",
      "severity": "warning",
      "description": "This track doesn''t have a tracktype",
      "IDs": ["this"],
      "regex": "(this track)"
    },
    "400": {
      "title": "geometry glitches",
      "severity": "error",
      "description": ""
    },
    "401": {
      "title": "missing turn restriction",
      "severity": "error",
      "description": "ways $1 and $2 join in a very sharp angle here and there is no oneway tag or turn restriction that prevents turning( from way (\\1|\\2) to (\\1|\\2))?",
      "IDs": ["w", "w"],
      "regex": "ways (\\d+) and (\\d+) join"
    },
    "402": {
      "title": "impossible angles",
      "severity": "error",
      "description": "this way bends in a very sharp angle here",
      "IDs": ["this"],
      "regex": "(this way)"
    },
    "410": {
      "title": "website",
      "severity": "error",
      "description": "Web pages are analyzed. Web page is defined by any of the following tags website=* url=* website:mobile=* contact:website=* contact:url=* image=* source:website=* or source:url=*"
    },
    "411": {
      "title": "http error",
      "severity": "error",
      "description": "The URL (<a target=_blank href=$1>$1</a>) cannot be opened (HTTP status code $2)",
      "IDs": ["this", "url", ""],
      "regex": "(this feature)~.+ href=([^>]+)>.+ code (\\d+)\\)"
    },
    "412": {
      "title": "domain hijacking",
      "severity": "error",
      "description": "Possible domain squatting: <a target=_blank href=$1>$1</a>. Suspicious text is: \"$2\"",
      "IDs": ["this", "url", ""],
      "regex": "(this feature)~.+ href=([^>]+)>.+ is: &quot;(.+)&quot;"
    },
    "413": {
      "title": "non-match",
      "severity": "error",
      "description": "Content of the URL (<a target=_blank href=$1>$1</a>) did not contain these keywords: ($2)",
      "IDs": ["this", "url", ""],
      "regex": "(this feature)~.+ href=([^>]+)>.+ keywords: \\((.+)\\)"
    }
  }
}
