{"action":"created","comment":{"url":"https://api.github.com/repos/abrensch/brouter/pulls/comments/232469933","pull_request_review_id":173679361,"id":232469933,"node_id":"MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDIzMjQ2OTkzMw==","diff_hunk":"@@ -52,7 +54,146 @@ assign is_ldcr =\n      if ignore_cycleroutes then false\n      else any_cycleroute\n \n-assign isbike = or bicycle=yes or or bicycle=permissive bicycle=designated lcn=yes\n+#\n+# handle one-ways. On primary roads, wrong-not oneways should\n+# be close to forbidden, while on other ways we just add\n+# 4 to the costfactor (making it at least 5 - you are allowed\n+# to push your bike)\n+#\n+assign badoneway =  # True if we are going against traffic in a one-way street\n+       if reversedirection=yes then\n+         if oneway:bicycle=yes then true\n+         else if oneway= then junction=roundabout\n+         else oneway=yes|true|1\n+       else oneway=-1\n+\n+assign goodoneway = if reversedirection=yes then oneway=-1  # True if we are going along traffic in a one-way street\n+                      else if oneway= then junction=roundabout else oneway=yes|true|1\n+\n+assign onewaypenalty =  # Penalty associated with going against traffic in a one-way stret\n+       # Note: Can be zero if opposite traffic is allowed for bikes\n+       if ( badoneway ) then\n+       (\n+         if ( cycleway=opposite|opposite_lane|opposite_track ) then 0\n+         # No penalty if there is any cycleway in opposite direction\n+         # Note: We are already contraflow, so no need for more checks.\n+         else if ( cycleway:left=opposite|opposite_lane|opposite_track ) then 0\n+         else if ( cycleway:right=opposite|opposite_lane|opposite_track ) then 0\n+         # No penalty if shared_busway and busway in opposite direction\n+         else if ( and cycleway=share_busway ( or busway=opposite ( or busway:left=opposite busway:right=opposite ) ) ) then 0\n+         else if ( and cycleway:left=share_busway ( or busway:left=opposite busway=opposite ) ) then 0\n+         else if ( and cycleway:right=share_busway ( or busway:right=opposite busway=opposite ) ) then 0\n+         # Other cases\n+         else if ( oneway:bicycle=no                         ) then 0\n+         else if ( highway=primary|primary_link              ) then 50\n+         else if ( highway=secondary|secondary_link          ) then 30\n+         else if ( highway=tertiary|tertiary_link            ) then 20\n+         else 4.0\n+       )\n+       else 0.0\n+\n+# Whether there is a penalty for going wrong way\n+assign isbadoneway = not equal onewaypenalty 0\n+\n+assign has_cycleway =\n+    # No cycleway hint\n+    if or ( cycleway= ) ( cycleway=no|none ) then false\n+    # Along a one way path (not contraflow), any cycleway which is not\n+    # contraflow is a good hint.\n+    else if goodoneway then ( and\n+        ( not cycleway=opposite|opposite_lane|opposite_track )\n+        ( or ( not cycleway=share_busway ) ( not busway=opposite ) )\n+    )\n+    # Along a one way path (contraflow), if we can go against traffic, there is\n+    # necessarily a cycleway\n+    else if badoneway then ( not isbadoneway )\n+    # Any other case (two ways streets), any cycleway is fine\n+    else true\n+\n+assign has_left_cycleway =\n+    # No cycleway hint\n+    if or ( cycleway:left= ) ( cycleway:left=no ) then false\n+    # Along a one way path (not contraflow), any cycleway which is not\n+    # contraflow is a good hint.\n+    else if goodoneway then ( and\n+        (\n+            and\n+            ( not cycleway:left=opposite|opposite_lane|opposite_track )\n+            (\n+                and\n+                ( not ( and reversedirection=yes cycleway:left:oneway=yes ) )\n+                ( not ( and ( not reversedirection=yes ) cycleway:left:oneway=-1 ) )\n+            )\n+        )\n+        ( or ( not cycleway:left=share_busway ) ( or ( not busway:left=opposite ) ( not busway=opposite ) ) )\n+    )\n+    # Along a one way path (contraflow), if we can go against traffic, there is\n+    # necessarily a cycleway\n+    else if badoneway then ( not isbadoneway )\n+    # Any other cases where we do have a cycleway tag (two way streets),\n+    # it depends on the direction of the path wrt to traffic\n+    else (\n+        if is_right_side_driving then (\n+            or\n+            ( and ( not reversedirection=yes ) ( not cycleway:left:oneway=-1 ) )\n+            ( and ( reversedirection=yes ) ( cycleway:left:oneway=-1|no ) )\n+        )\n+        else (\n+            or\n+            ( and ( reversedirection=yes ) ( not cycleway:left:oneway=-1 ) )\n+            ( and ( not reversedirection=yes ) ( cycleway:left:oneway=-1|no ) )\n+        )\n+    )\n+\n+assign has_right_cycleway =\n+    # No cycleway hint\n+    if or ( cycleway:right= ) ( cycleway:right=no ) then false\n+    # Along a one way path (not contraflow), any cycleway which is not\n+    # contraflow is a good hint.\n+    else if goodoneway then ( and\n+        (\n+            and\n+            ( not cycleway:right=opposite|opposite_lane|opposite_track )\n+            (\n+                and\n+                ( not ( and reversedirection=yes cycleway:right:oneway=yes ) )\n+                ( not ( and ( not reversedirection=yes ) cycleway:right:oneway=-1 ) )\n+            )\n+        )\n+        ( or ( not cycleway:right=share_busway ) ( or ( not busway:left=opposite ) ( not busway=opposite ) ) )\n+    )\n+    # Along a one way path (contraflow), if we can go against traffic, there is\n+    # necessarily a cycleway\n+    else if badoneway then ( not isbadoneway )\n+    # Any other cases where we do have a cycleway tag (two way streets),\n+    # it depends on the direction of the path wrt to traffic\n+    else (\n+        if is_right_side_driving then (\n+            or\n+            ( and ( not reversedirection=yes ) ( not cycleway:right:oneway=-1 ) )\n+            ( and ( reversedirection=yes ) ( cycleway:right:oneway=-1|no ) )\n+        )\n+        else (\n+            or\n+            ( and ( reversedirection=yes ) ( not cycleway:right:oneway=-1 ) )\n+            ( and ( not reversedirection=yes ) ( cycleway:right:oneway=-1|no ) )\n+        )\n+    )\n+\n+# TODO: isbike could be a float value dependending on the quality of the infrastructure\n+assign isbike =\n+    if bicycle=yes|permissive|designated then true\n+    else if lcn=yes then true\n+    # Take into account cycleways\n+    else if or has_cycleway ( or has_left_cycleway has_right_cycleway ) then true\n+    else false\n+\n+# Add a penalty based on traffic speed, if there are no infrastructures","path":"misc/profiles2/trekking.brf","position":148,"original_position":148,"commit_id":"c69b2d92aaae5a4cc9e7e7a29d7410663f0e248a","original_commit_id":"c69b2d92aaae5a4cc9e7e7a29d7410663f0e248a","user":{"login":"Phyks","id":3856586,"node_id":"MDQ6VXNlcjM4NTY1ODY=","avatar_url":"https://avatars0.githubusercontent.com/u/3856586?v=4","gravatar_id":"","url":"https://api.github.com/users/Phyks","html_url":"https://github.com/Phyks","followers_url":"https://api.github.com/users/Phyks/followers","following_url":"https://api.github.com/users/Phyks/following{/other_user}","gists_url":"https://api.github.com/users/Phyks/gists{/gist_id}","starred_url":"https://api.github.com/users/Phyks/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Phyks/subscriptions","organizations_url":"https://api.github.com/users/Phyks/orgs","repos_url":"https://api.github.com/users/Phyks/repos","events_url":"https://api.github.com/users/Phyks/events{/privacy}","received_events_url":"https://api.github.com/users/Phyks/received_events","type":"User","site_admin":false},"body":"I added an extra penalty for roads without cycleways based on the `maxspeed`, considering any `maxspeed` above 30 is way faster than a bike and not really safe so should be penalized.","created_at":"2018-11-10T23:54:11Z","updated_at":"2018-11-10T23:57:24Z","html_url":"https://github.com/abrensch/brouter/pull/123#discussion_r232469933","pull_request_url":"https://api.github.com/repos/abrensch/brouter/pulls/123","author_association":"CONTRIBUTOR","_links":{"self":{"href":"https://api.github.com/repos/abrensch/brouter/pulls/comments/232469933"},"html":{"href":"https://github.com/abrensch/brouter/pull/123#discussion_r232469933"},"pull_request":{"href":"https://api.github.com/repos/abrensch/brouter/pulls/123"}}},"pull_request":{"url":"https://api.github.com/repos/abrensch/brouter/pulls/123","id":229921058,"node_id":"MDExOlB1bGxSZXF1ZXN0MjI5OTIxMDU4","html_url":"https://github.com/abrensch/brouter/pull/123","diff_url":"https://github.com/abrensch/brouter/pull/123.diff","patch_url":"https://github.com/abrensch/brouter/pull/123.patch","issue_url":"https://api.github.com/repos/abrensch/brouter/issues/123","number":123,"state":"open","locked":false,"title":"Improve the trekking profile","user":{"login":"Phyks","id":3856586,"node_id":"MDQ6VXNlcjM4NTY1ODY=","avatar_url":"https://avatars0.githubusercontent.com/u/3856586?v=4","gravatar_id":"","url":"https://api.github.com/users/Phyks","html_url":"https://github.com/Phyks","followers_url":"https://api.github.com/users/Phyks/followers","following_url":"https://api.github.com/users/Phyks/following{/other_user}","gists_url":"https://api.github.com/users/Phyks/gists{/gist_id}","starred_url":"https://api.github.com/users/Phyks/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Phyks/subscriptions","organizations_url":"https://api.github.com/users/Phyks/orgs","repos_url":"https://api.github.com/users/Phyks/repos","events_url":"https://api.github.com/users/Phyks/events{/privacy}","received_events_url":"https://api.github.com/users/Phyks/received_events","type":"User","site_admin":false},"body":"Hi,\r\n\r\nHere is an attempt to improve the trekking profile while modifying it as less as possible. The idea was to really keep the way it is working at the moment but slightly improve some routes using all the available tags. This profile requires #122 first to work fully.\r\n\r\nI'll comment in the diff to better explain what the differences are and why I introduced these.\r\n\r\nI tried to find minimal tests cases for the features I wanted to improve, a bit like what was thought of in #116. My tests are written in a iPython notebook available [in this repo](https://github.com/Phyks/BrouterTesting) (please feel free to reuse / merge / write PR on this one if you think that's something worth it).\r\n\r\nA static copy of my tests cases with detailed descriptions of the expected behaviors is available at https://pub.phyks.me/tmp/BrouterTesting.html (blue is my profile, grey is the original trekking profile, green is what I am likely to do as a human). The tests are, of course, biased towards the areas I am familiar with, but cover a bit of cities / cycleroutes / countries.\r\n\r\nBest,","created_at":"2018-11-10T23:49:27Z","updated_at":"2018-11-10T23:57:24Z","closed_at":null,"merged_at":null,"merge_commit_sha":"847453170a43ef6b1484c8cbc68d22758fec1912","assignee":null,"assignees":[],"requested_reviewers":[],"requested_teams":[],"labels":[],"milestone":null,"commits_url":"https://api.github.com/repos/abrensch/brouter/pulls/123/commits","review_comments_url":"https://api.github.com/repos/abrensch/brouter/pulls/123/comments","review_comment_url":"https://api.github.com/repos/abrensch/brouter/pulls/comments{/number}","comments_url":"https://api.github.com/repos/abrensch/brouter/issues/123/comments","statuses_url":"https://api.github.com/repos/abrensch/brouter/statuses/c69b2d92aaae5a4cc9e7e7a29d7410663f0e248a","head":{"label":"Phyks:trekking","ref":"trekking","sha":"c69b2d92aaae5a4cc9e7e7a29d7410663f0e248a","user":{"login":"Phyks","id":3856586,"node_id":"MDQ6VXNlcjM4NTY1ODY=","avatar_url":"https://avatars0.githubusercontent.com/u/3856586?v=4","gravatar_id":"","url":"https://api.github.com/users/Phyks","html_url":"https://github.com/Phyks","followers_url":"https://api.github.com/users/Phyks/followers","following_url":"https://api.github.com/users/Phyks/following{/other_user}","gists_url":"https://api.github.com/users/Phyks/gists{/gist_id}","starred_url":"https://api.github.com/users/Phyks/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Phyks/subscriptions","organizations_url":"https://api.github.com/users/Phyks/orgs","repos_url":"https://api.github.com/users/Phyks/repos","events_url":"https://api.github.com/users/Phyks/events{/privacy}","received_events_url":"https://api.github.com/users/Phyks/received_events","type":"User","site_admin":false},"repo":{"id":155429476,"node_id":"MDEwOlJlcG9zaXRvcnkxNTU0Mjk0NzY=","name":"brouter","full_name":"Phyks/brouter","private":false,"owner":{"login":"Phyks","id":3856586,"node_id":"MDQ6VXNlcjM4NTY1ODY=","avatar_url":"https://avatars0.githubusercontent.com/u/3856586?v=4","gravatar_id":"","url":"https://api.github.com/users/Phyks","html_url":"https://github.com/Phyks","followers_url":"https://api.github.com/users/Phyks/followers","following_url":"https://api.github.com/users/Phyks/following{/other_user}","gists_url":"https://api.github.com/users/Phyks/gists{/gist_id}","starred_url":"https://api.github.com/users/Phyks/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Phyks/subscriptions","organizations_url":"https://api.github.com/users/Phyks/orgs","repos_url":"https://api.github.com/users/Phyks/repos","events_url":"https://api.github.com/users/Phyks/events{/privacy}","received_events_url":"https://api.github.com/users/Phyks/received_events","type":"User","site_admin":false},"html_url":"https://github.com/Phyks/brouter","description":"configurable OSM offline router with elevation awareness, Java + Android","fork":true,"url":"https://api.github.com/repos/Phyks/brouter","forks_url":"https://api.github.com/repos/Phyks/brouter/forks","keys_url":"https://api.github.com/repos/Phyks/brouter/keys{/key_id}","collaborators_url":"https://api.github.com/repos/Phyks/brouter/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/Phyks/brouter/teams","hooks_url":"https://api.github.com/repos/Phyks/brouter/hooks","issue_events_url":"https://api.github.com/repos/Phyks/brouter/issues/events{/number}","events_url":"https://api.github.com/repos/Phyks/brouter/events","assignees_url":"https://api.github.com/repos/Phyks/brouter/assignees{/user}","branches_url":"https://api.github.com/repos/Phyks/brouter/branches{/branch}","tags_url":"https://api.github.com/repos/Phyks/brouter/tags","blobs_url":"https://api.github.com/repos/Phyks/brouter/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/Phyks/brouter/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/Phyks/brouter/git/refs{/sha}","trees_url":"https://api.github.com/repos/Phyks/brouter/git/trees{/sha}","statuses_url":"https://api.github.com/repos/Phyks/brouter/statuses/{sha}","languages_url":"https://api.github.com/repos/Phyks/brouter/languages","stargazers_url":"https://api.github.com/repos/Phyks/brouter/stargazers","contributors_url":"https://api.github.com/repos/Phyks/brouter/contributors","subscribers_url":"https://api.github.com/repos/Phyks/brouter/subscribers","subscription_url":"https://api.github.com/repos/Phyks/brouter/subscription","commits_url":"https://api.github.com/repos/Phyks/brouter/commits{/sha}","git_commits_url":"https://api.github.com/repos/Phyks/brouter/git/commits{/sha}","comments_url":"https://api.github.com/repos/Phyks/brouter/comments{/number}","issue_comment_url":"https://api.github.com/repos/Phyks/brouter/issues/comments{/number}","contents_url":"https://api.github.com/repos/Phyks/brouter/contents/{+path}","compare_url":"https://api.github.com/repos/Phyks/brouter/compare/{base}...{head}","merges_url":"https://api.github.com/repos/Phyks/brouter/merges","archive_url":"https://api.github.com/repos/Phyks/brouter/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/Phyks/brouter/downloads","issues_url":"https://api.github.com/repos/Phyks/brouter/issues{/number}","pulls_url":"https://api.github.com/repos/Phyks/brouter/pulls{/number}","milestones_url":"https://api.github.com/repos/Phyks/brouter/milestones{/number}","notifications_url":"https://api.github.com/repos/Phyks/brouter/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/Phyks/brouter/labels{/name}","releases_url":"https://api.github.com/repos/Phyks/brouter/releases{/id}","deployments_url":"https://api.github.com/repos/Phyks/brouter/deployments","created_at":"2018-10-30T17:36:54Z","updated_at":"2018-10-30T17:36:57Z","pushed_at":"2018-11-10T23:43:53Z","git_url":"git://github.com/Phyks/brouter.git","ssh_url":"git@github.com:Phyks/brouter.git","clone_url":"https://github.com/Phyks/brouter.git","svn_url":"https://github.com/Phyks/brouter","homepage":null,"size":2600,"stargazers_count":0,"watchers_count":0,"language":"Java","has_issues":false,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"archived":false,"open_issues_count":0,"license":{"key":"gpl-3.0","name":"GNU General Public License v3.0","spdx_id":"GPL-3.0","url":"https://api.github.com/licenses/gpl-3.0","node_id":"MDc6TGljZW5zZTk="},"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"abrensch:master","ref":"master","sha":"15cb0f267ed61fc6bf254d709e6cb89149d62381","user":{"login":"abrensch","id":5775537,"node_id":"MDQ6VXNlcjU3NzU1Mzc=","avatar_url":"https://avatars0.githubusercontent.com/u/5775537?v=4","gravatar_id":"","url":"https://api.github.com/users/abrensch","html_url":"https://github.com/abrensch","followers_url":"https://api.github.com/users/abrensch/followers","following_url":"https://api.github.com/users/abrensch/following{/other_user}","gists_url":"https://api.github.com/users/abrensch/gists{/gist_id}","starred_url":"https://api.github.com/users/abrensch/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/abrensch/subscriptions","organizations_url":"https://api.github.com/users/abrensch/orgs","repos_url":"https://api.github.com/users/abrensch/repos","events_url":"https://api.github.com/users/abrensch/events{/privacy}","received_events_url":"https://api.github.com/users/abrensch/received_events","type":"User","site_admin":false},"repo":{"id":15870646,"node_id":"MDEwOlJlcG9zaXRvcnkxNTg3MDY0Ng==","name":"brouter","full_name":"abrensch/brouter","private":false,"owner":{"login":"abrensch","id":5775537,"node_id":"MDQ6VXNlcjU3NzU1Mzc=","avatar_url":"https://avatars0.githubusercontent.com/u/5775537?v=4","gravatar_id":"","url":"https://api.github.com/users/abrensch","html_url":"https://github.com/abrensch","followers_url":"https://api.github.com/users/abrensch/followers","following_url":"https://api.github.com/users/abrensch/following{/other_user}","gists_url":"https://api.github.com/users/abrensch/gists{/gist_id}","starred_url":"https://api.github.com/users/abrensch/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/abrensch/subscriptions","organizations_url":"https://api.github.com/users/abrensch/orgs","repos_url":"https://api.github.com/users/abrensch/repos","events_url":"https://api.github.com/users/abrensch/events{/privacy}","received_events_url":"https://api.github.com/users/abrensch/received_events","type":"User","site_admin":false},"html_url":"https://github.com/abrensch/brouter","description":"configurable OSM offline router with elevation awareness, Java + Android","fork":false,"url":"https://api.github.com/repos/abrensch/brouter","forks_url":"https://api.github.com/repos/abrensch/brouter/forks","keys_url":"https://api.github.com/repos/abrensch/brouter/keys{/key_id}","collaborators_url":"https://api.github.com/repos/abrensch/brouter/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/abrensch/brouter/teams","hooks_url":"https://api.github.com/repos/abrensch/brouter/hooks","issue_events_url":"https://api.github.com/repos/abrensch/brouter/issues/events{/number}","events_url":"https://api.github.com/repos/abrensch/brouter/events","assignees_url":"https://api.github.com/repos/abrensch/brouter/assignees{/user}","branches_url":"https://api.github.com/repos/abrensch/brouter/branches{/branch}","tags_url":"https://api.github.com/repos/abrensch/brouter/tags","blobs_url":"https://api.github.com/repos/abrensch/brouter/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/abrensch/brouter/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/abrensch/brouter/git/refs{/sha}","trees_url":"https://api.github.com/repos/abrensch/brouter/git/trees{/sha}","statuses_url":"https://api.github.com/repos/abrensch/brouter/statuses/{sha}","languages_url":"https://api.github.com/repos/abrensch/brouter/languages","stargazers_url":"https://api.github.com/repos/abrensch/brouter/stargazers","contributors_url":"https://api.github.com/repos/abrensch/brouter/contributors","subscribers_url":"https://api.github.com/repos/abrensch/brouter/subscribers","subscription_url":"https://api.github.com/repos/abrensch/brouter/subscription","commits_url":"https://api.github.com/repos/abrensch/brouter/commits{/sha}","git_commits_url":"https://api.github.com/repos/abrensch/brouter/git/commits{/sha}","comments_url":"https://api.github.com/repos/abrensch/brouter/comments{/number}","issue_comment_url":"https://api.github.com/repos/abrensch/brouter/issues/comments{/number}","contents_url":"https://api.github.com/repos/abrensch/brouter/contents/{+path}","compare_url":"https://api.github.com/repos/abrensch/brouter/compare/{base}...{head}","merges_url":"https://api.github.com/repos/abrensch/brouter/merges","archive_url":"https://api.github.com/repos/abrensch/brouter/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/abrensch/brouter/downloads","issues_url":"https://api.github.com/repos/abrensch/brouter/issues{/number}","pulls_url":"https://api.github.com/repos/abrensch/brouter/pulls{/number}","milestones_url":"https://api.github.com/repos/abrensch/brouter/milestones{/number}","notifications_url":"https://api.github.com/repos/abrensch/brouter/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/abrensch/brouter/labels{/name}","releases_url":"https://api.github.com/repos/abrensch/brouter/releases{/id}","deployments_url":"https://api.github.com/repos/abrensch/brouter/deployments","created_at":"2014-01-13T14:36:15Z","updated_at":"2018-11-08T17:08:40Z","pushed_at":"2018-11-10T23:49:28Z","git_url":"git://github.com/abrensch/brouter.git","ssh_url":"git@github.com:abrensch/brouter.git","clone_url":"https://github.com/abrensch/brouter.git","svn_url":"https://github.com/abrensch/brouter","homepage":null,"size":2581,"stargazers_count":96,"watchers_count":96,"language":"Java","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":42,"mirror_url":null,"archived":false,"open_issues_count":50,"license":{"key":"gpl-3.0","name":"GNU General Public License v3.0","spdx_id":"GPL-3.0","url":"https://api.github.com/licenses/gpl-3.0","node_id":"MDc6TGljZW5zZTk="},"forks":42,"open_issues":50,"watchers":96,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/abrensch/brouter/pulls/123"},"html":{"href":"https://github.com/abrensch/brouter/pull/123"},"issue":{"href":"https://api.github.com/repos/abrensch/brouter/issues/123"},"comments":{"href":"https://api.github.com/repos/abrensch/brouter/issues/123/comments"},"review_comments":{"href":"https://api.github.com/repos/abrensch/brouter/pulls/123/comments"},"review_comment":{"href":"https://api.github.com/repos/abrensch/brouter/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/abrensch/brouter/pulls/123/commits"},"statuses":{"href":"https://api.github.com/repos/abrensch/brouter/statuses/c69b2d92aaae5a4cc9e7e7a29d7410663f0e248a"}},"author_association":"CONTRIBUTOR"}}
{"actor":{"display_login":"Phyks"}}