{"action":"created","comment":{"url":"https://api.github.com/repos/KyberNetwork/smart-contracts/pulls/comments/210525290","pull_request_review_id":146742624,"id":210525290,"node_id":"MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDIxMDUyNTI5MA==","diff_hunk":"@@ -0,0 +1,235 @@\n+pragma solidity 0.4.18;\n+\n+import \"./Utils2.sol\";\n+\n+contract Orders is Utils2 {\n+\n+    struct Order {\n+        address maker;\n+        uint128 srcAmount;\n+        uint128 dstAmount;\n+        uint32 prevId;\n+        uint32 nextId;\n+    }\n+\n+    mapping (uint32 => Order) public orders;\n+\n+    uint32 constant public TAIL_ID = 1;\n+    uint32 constant public BUY_HEAD_ID = 2;\n+    uint32 constant public SELL_HEAD_ID = 3;\n+\n+    uint32 internal nextId = 4;\n+\n+    Order internal BUY_HEAD;\n+    Order internal SELL_HEAD;\n+\n+    function Orders() public {\n+        BUY_HEAD = Order({\n+            maker: 0,\n+            srcAmount: 0,\n+            dstAmount: 0,\n+            prevId: BUY_HEAD_ID,\n+            nextId: TAIL_ID\n+        });\n+        SELL_HEAD = Order({\n+            maker: 0,\n+            srcAmount: 0,\n+            dstAmount: 0,\n+            prevId: SELL_HEAD_ID,\n+            nextId: TAIL_ID\n+        });\n+        orders[BUY_HEAD_ID] = BUY_HEAD;\n+        orders[SELL_HEAD_ID] = SELL_HEAD;\n+    }\n+\n+    function add(address maker, uint128 srcAmount, uint128 dstAmount)\n+        internal\n+        returns(uint32)\n+    {\n+        uint32 prevId = findPrevOrderId(srcAmount, dstAmount, BUY_HEAD_ID);\n+        return addAfterValidId(maker, srcAmount, dstAmount, prevId);\n+    }\n+\n+    function addAfterId(\n+        address maker,\n+        uint128 srcAmount,\n+        uint128 dstAmount,\n+        uint32 prevId\n+    )\n+        internal\n+        returns(uint32)\n+    {\n+        validatePrevId(srcAmount, dstAmount, prevId);\n+        return addAfterValidId(maker, srcAmount, dstAmount, prevId);\n+    }\n+\n+    function addAfterValidId(\n+        address maker,\n+        uint128 srcAmount,\n+        uint128 dstAmount,\n+        uint32 prevId\n+    )\n+        private\n+        returns(uint32)\n+    {\n+        Order storage prevOrder = orders[prevId];\n+\n+        // Add new order\n+        uint32 orderId = nextId++;\n+        orders[orderId] = Order({\n+            maker: maker,\n+            srcAmount: srcAmount,\n+            dstAmount: dstAmount,\n+            prevId: prevId,\n+            nextId: prevOrder.nextId\n+        });\n+\n+        // Update next order to point back to added order\n+        uint32 nextOrderId = prevOrder.nextId;\n+        if (nextOrderId != TAIL_ID) {\n+            Order storage nextOrder = orders[nextOrderId];\n+            nextOrder.prevId = orderId;\n+        }\n+\n+        // Update previous order to point to added order\n+        prevOrder.nextId = orderId;\n+\n+        return orderId;\n+    }\n+\n+    function getOrderDetails(uint32 orderId)\n+        internal\n+        view\n+        returns (\n+            address _maker,\n+            uint128 _srcAmount,\n+            uint128 _dstAmount,\n+            uint32 _prevId,\n+            uint32 _nextId\n+        )\n+    {\n+        Order storage order = orders[orderId];\n+        return (\n+            order.maker,\n+            order.srcAmount,\n+            order.dstAmount,\n+            order.prevId,\n+            order.nextId\n+        );\n+    }\n+\n+    function removeById(uint32 orderId) internal {\n+        verifyCanRemoveOrderById(orderId);\n+\n+        // Disconnect order from list\n+        Order storage order = orders[orderId];\n+        orders[order.prevId].nextId = order.nextId;\n+        orders[order.nextId].prevId = order.prevId;\n+\n+        order.prevId = 0;\n+        order.nextId = 0;\n+    }\n+\n+    // The updated order id is returned following the update.\n+    function update(uint32 orderId, uint128 srcAmount, uint128 dstAmount)\n+        internal\n+        returns(uint32)\n+    {\n+        address maker = orders[orderId].maker;\n+        removeById(orderId);\n+        return add(maker, srcAmount, dstAmount);\n+    }\n+\n+    // The updated order id is returned following the update.\n+    function updateWithPositionHint(\n+        uint32 orderId,\n+        uint128 srcAmount,\n+        uint128 dstAmount,\n+        uint32 prevId\n+    )\n+        internal\n+        returns(uint32)\n+    {\n+        address maker = orders[orderId].maker;\n+        removeById(orderId);\n+        return addAfterId(maker, srcAmount, dstAmount, prevId);\n+    }\n+\n+    function allocateIds(uint32 howMany) internal returns(uint32) {\n+        uint32 firstId = nextId;\n+        nextId += howMany;\n+        return firstId;\n+    }\n+\n+    function verifyCanRemoveOrderById(uint32 orderId) private view {\n+        require(orderId != BUY_HEAD_ID);\n+\n+        Order storage order = orders[orderId];\n+\n+        // Make sure such order exists in mapping.\n+        require(order.prevId != 0 || order.nextId != 0);\n+    }\n+\n+    function calculateOrderSortKey(uint128 srcAmount, uint128 dstAmount)\n+        public\n+        pure\n+        returns(uint)\n+    {\n+        return dstAmount * PRECISION / srcAmount;","path":"contracts/Orders.sol","position":178,"original_position":178,"commit_id":"b123a85d60bf792056c4c5c61b1017b73bb39bae","original_commit_id":"b123a85d60bf792056c4c5c61b1017b73bb39bae","user":{"login":"ilanDoron","id":10189189,"node_id":"MDQ6VXNlcjEwMTg5MTg5","avatar_url":"https://avatars2.githubusercontent.com/u/10189189?v=4","gravatar_id":"","url":"https://api.github.com/users/ilanDoron","html_url":"https://github.com/ilanDoron","followers_url":"https://api.github.com/users/ilanDoron/followers","following_url":"https://api.github.com/users/ilanDoron/following{/other_user}","gists_url":"https://api.github.com/users/ilanDoron/gists{/gist_id}","starred_url":"https://api.github.com/users/ilanDoron/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ilanDoron/subscriptions","organizations_url":"https://api.github.com/users/ilanDoron/orgs","repos_url":"https://api.github.com/users/ilanDoron/repos","events_url":"https://api.github.com/users/ilanDoron/events{/privacy}","received_events_url":"https://api.github.com/users/ilanDoron/received_events","type":"User","site_admin":false},"body":"check over flow....\r\nor use safe math???\r\nbetter just check. safe math is annoying.","created_at":"2018-08-16T09:05:06Z","updated_at":"2018-08-16T09:17:31Z","html_url":"https://github.com/KyberNetwork/smart-contracts/pull/281#discussion_r210525290","pull_request_url":"https://api.github.com/repos/KyberNetwork/smart-contracts/pulls/281","author_association":"MEMBER","_links":{"self":{"href":"https://api.github.com/repos/KyberNetwork/smart-contracts/pulls/comments/210525290"},"html":{"href":"https://github.com/KyberNetwork/smart-contracts/pull/281#discussion_r210525290"},"pull_request":{"href":"https://api.github.com/repos/KyberNetwork/smart-contracts/pulls/281"}}},"pull_request":{"url":"https://api.github.com/repos/KyberNetwork/smart-contracts/pulls/281","id":208581877,"node_id":"MDExOlB1bGxSZXF1ZXN0MjA4NTgxODc3","html_url":"https://github.com/KyberNetwork/smart-contracts/pull/281","diff_url":"https://github.com/KyberNetwork/smart-contracts/pull/281.diff","patch_url":"https://github.com/KyberNetwork/smart-contracts/pull/281.patch","issue_url":"https://api.github.com/repos/KyberNetwork/smart-contracts/issues/281","number":281,"state":"open","locked":false,"title":"[WIP] Orders list for permission-less reserve","user":{"login":"amitkot","id":654041,"node_id":"MDQ6VXNlcjY1NDA0MQ==","avatar_url":"https://avatars3.githubusercontent.com/u/654041?v=4","gravatar_id":"","url":"https://api.github.com/users/amitkot","html_url":"https://github.com/amitkot","followers_url":"https://api.github.com/users/amitkot/followers","following_url":"https://api.github.com/users/amitkot/following{/other_user}","gists_url":"https://api.github.com/users/amitkot/gists{/gist_id}","starred_url":"https://api.github.com/users/amitkot/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/amitkot/subscriptions","organizations_url":"https://api.github.com/users/amitkot/orgs","repos_url":"https://api.github.com/users/amitkot/repos","events_url":"https://api.github.com/users/amitkot/events{/privacy}","received_events_url":"https://api.github.com/users/amitkot/received_events","type":"User","site_admin":false},"body":"    Orders [WIP]: changes towards double heads\r\n\r\n    Adding SELL and BUY heads is in progress.\r\n    Currently the `findPrevOrderId()` is undergoing changes (two error cases\r\n    detected in failing tests need to be fixed).\r\n\r\n    Missing:\r\n    --------\r\n    - add functions should be united so that there is a single add function\r\n      that receives an argument which `startId` from which to start\r\n      searching for the right location to put the new order after.\r\n    - tests that make sure orders added to SELL do not influence BUY, and\r\n      vice versa.\r\n    - testing trying to update deleted orders.\r\n    - delete orders, then add them back and make sure everything works.","created_at":"2018-08-15T14:38:52Z","updated_at":"2018-08-16T09:17:31Z","closed_at":null,"merged_at":null,"merge_commit_sha":"f8ef0a54a47fa7216e9a9a5dbe3bc1bad69af1b7","assignee":null,"assignees":[],"requested_reviewers":[],"requested_teams":[],"labels":[],"milestone":null,"commits_url":"https://api.github.com/repos/KyberNetwork/smart-contracts/pulls/281/commits","review_comments_url":"https://api.github.com/repos/KyberNetwork/smart-contracts/pulls/281/comments","review_comment_url":"https://api.github.com/repos/KyberNetwork/smart-contracts/pulls/comments{/number}","comments_url":"https://api.github.com/repos/KyberNetwork/smart-contracts/issues/281/comments","statuses_url":"https://api.github.com/repos/KyberNetwork/smart-contracts/statuses/b123a85d60bf792056c4c5c61b1017b73bb39bae","head":{"label":"amitkot:linkedlist","ref":"linkedlist","sha":"b123a85d60bf792056c4c5c61b1017b73bb39bae","user":{"login":"amitkot","id":654041,"node_id":"MDQ6VXNlcjY1NDA0MQ==","avatar_url":"https://avatars3.githubusercontent.com/u/654041?v=4","gravatar_id":"","url":"https://api.github.com/users/amitkot","html_url":"https://github.com/amitkot","followers_url":"https://api.github.com/users/amitkot/followers","following_url":"https://api.github.com/users/amitkot/following{/other_user}","gists_url":"https://api.github.com/users/amitkot/gists{/gist_id}","starred_url":"https://api.github.com/users/amitkot/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/amitkot/subscriptions","organizations_url":"https://api.github.com/users/amitkot/orgs","repos_url":"https://api.github.com/users/amitkot/repos","events_url":"https://api.github.com/users/amitkot/events{/privacy}","received_events_url":"https://api.github.com/users/amitkot/received_events","type":"User","site_admin":false},"repo":{"id":142832173,"node_id":"MDEwOlJlcG9zaXRvcnkxNDI4MzIxNzM=","name":"smart-contracts","full_name":"amitkot/smart-contracts","owner":{"login":"amitkot","id":654041,"node_id":"MDQ6VXNlcjY1NDA0MQ==","avatar_url":"https://avatars3.githubusercontent.com/u/654041?v=4","gravatar_id":"","url":"https://api.github.com/users/amitkot","html_url":"https://github.com/amitkot","followers_url":"https://api.github.com/users/amitkot/followers","following_url":"https://api.github.com/users/amitkot/following{/other_user}","gists_url":"https://api.github.com/users/amitkot/gists{/gist_id}","starred_url":"https://api.github.com/users/amitkot/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/amitkot/subscriptions","organizations_url":"https://api.github.com/users/amitkot/orgs","repos_url":"https://api.github.com/users/amitkot/repos","events_url":"https://api.github.com/users/amitkot/events{/privacy}","received_events_url":"https://api.github.com/users/amitkot/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/amitkot/smart-contracts","description":"Main smart contracts for Kyber Network, including the main platform contract, reserve contracts etc.","fork":true,"url":"https://api.github.com/repos/amitkot/smart-contracts","forks_url":"https://api.github.com/repos/amitkot/smart-contracts/forks","keys_url":"https://api.github.com/repos/amitkot/smart-contracts/keys{/key_id}","collaborators_url":"https://api.github.com/repos/amitkot/smart-contracts/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/amitkot/smart-contracts/teams","hooks_url":"https://api.github.com/repos/amitkot/smart-contracts/hooks","issue_events_url":"https://api.github.com/repos/amitkot/smart-contracts/issues/events{/number}","events_url":"https://api.github.com/repos/amitkot/smart-contracts/events","assignees_url":"https://api.github.com/repos/amitkot/smart-contracts/assignees{/user}","branches_url":"https://api.github.com/repos/amitkot/smart-contracts/branches{/branch}","tags_url":"https://api.github.com/repos/amitkot/smart-contracts/tags","blobs_url":"https://api.github.com/repos/amitkot/smart-contracts/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/amitkot/smart-contracts/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/amitkot/smart-contracts/git/refs{/sha}","trees_url":"https://api.github.com/repos/amitkot/smart-contracts/git/trees{/sha}","statuses_url":"https://api.github.com/repos/amitkot/smart-contracts/statuses/{sha}","languages_url":"https://api.github.com/repos/amitkot/smart-contracts/languages","stargazers_url":"https://api.github.com/repos/amitkot/smart-contracts/stargazers","contributors_url":"https://api.github.com/repos/amitkot/smart-contracts/contributors","subscribers_url":"https://api.github.com/repos/amitkot/smart-contracts/subscribers","subscription_url":"https://api.github.com/repos/amitkot/smart-contracts/subscription","commits_url":"https://api.github.com/repos/amitkot/smart-contracts/commits{/sha}","git_commits_url":"https://api.github.com/repos/amitkot/smart-contracts/git/commits{/sha}","comments_url":"https://api.github.com/repos/amitkot/smart-contracts/comments{/number}","issue_comment_url":"https://api.github.com/repos/amitkot/smart-contracts/issues/comments{/number}","contents_url":"https://api.github.com/repos/amitkot/smart-contracts/contents/{+path}","compare_url":"https://api.github.com/repos/amitkot/smart-contracts/compare/{base}...{head}","merges_url":"https://api.github.com/repos/amitkot/smart-contracts/merges","archive_url":"https://api.github.com/repos/amitkot/smart-contracts/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/amitkot/smart-contracts/downloads","issues_url":"https://api.github.com/repos/amitkot/smart-contracts/issues{/number}","pulls_url":"https://api.github.com/repos/amitkot/smart-contracts/pulls{/number}","milestones_url":"https://api.github.com/repos/amitkot/smart-contracts/milestones{/number}","notifications_url":"https://api.github.com/repos/amitkot/smart-contracts/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/amitkot/smart-contracts/labels{/name}","releases_url":"https://api.github.com/repos/amitkot/smart-contracts/releases{/id}","deployments_url":"https://api.github.com/repos/amitkot/smart-contracts/deployments","created_at":"2018-07-30T06:08:57Z","updated_at":"2018-08-09T06:37:31Z","pushed_at":"2018-08-15T14:36:24Z","git_url":"git://github.com/amitkot/smart-contracts.git","ssh_url":"git@github.com:amitkot/smart-contracts.git","clone_url":"https://github.com/amitkot/smart-contracts.git","svn_url":"https://github.com/amitkot/smart-contracts","homepage":"https://kyber.network","size":2260,"stargazers_count":0,"watchers_count":0,"language":"JavaScript","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":"mit","name":"MIT License","spdx_id":"MIT","url":"https://api.github.com/licenses/mit","node_id":"MDc6TGljZW5zZTEz"},"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"KyberNetwork:permissionLessReserve","ref":"permissionLessReserve","sha":"0d95cc74daafec57a9275728132a117411c6a470","user":{"login":"KyberNetwork","id":28812853,"node_id":"MDEyOk9yZ2FuaXphdGlvbjI4ODEyODUz","avatar_url":"https://avatars0.githubusercontent.com/u/28812853?v=4","gravatar_id":"","url":"https://api.github.com/users/KyberNetwork","html_url":"https://github.com/KyberNetwork","followers_url":"https://api.github.com/users/KyberNetwork/followers","following_url":"https://api.github.com/users/KyberNetwork/following{/other_user}","gists_url":"https://api.github.com/users/KyberNetwork/gists{/gist_id}","starred_url":"https://api.github.com/users/KyberNetwork/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/KyberNetwork/subscriptions","organizations_url":"https://api.github.com/users/KyberNetwork/orgs","repos_url":"https://api.github.com/users/KyberNetwork/repos","events_url":"https://api.github.com/users/KyberNetwork/events{/privacy}","received_events_url":"https://api.github.com/users/KyberNetwork/received_events","type":"Organization","site_admin":false},"repo":{"id":96011647,"node_id":"MDEwOlJlcG9zaXRvcnk5NjAxMTY0Nw==","name":"smart-contracts","full_name":"KyberNetwork/smart-contracts","owner":{"login":"KyberNetwork","id":28812853,"node_id":"MDEyOk9yZ2FuaXphdGlvbjI4ODEyODUz","avatar_url":"https://avatars0.githubusercontent.com/u/28812853?v=4","gravatar_id":"","url":"https://api.github.com/users/KyberNetwork","html_url":"https://github.com/KyberNetwork","followers_url":"https://api.github.com/users/KyberNetwork/followers","following_url":"https://api.github.com/users/KyberNetwork/following{/other_user}","gists_url":"https://api.github.com/users/KyberNetwork/gists{/gist_id}","starred_url":"https://api.github.com/users/KyberNetwork/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/KyberNetwork/subscriptions","organizations_url":"https://api.github.com/users/KyberNetwork/orgs","repos_url":"https://api.github.com/users/KyberNetwork/repos","events_url":"https://api.github.com/users/KyberNetwork/events{/privacy}","received_events_url":"https://api.github.com/users/KyberNetwork/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/KyberNetwork/smart-contracts","description":"Main smart contracts for Kyber Network, including the main platform contract, reserve contracts etc.","fork":false,"url":"https://api.github.com/repos/KyberNetwork/smart-contracts","forks_url":"https://api.github.com/repos/KyberNetwork/smart-contracts/forks","keys_url":"https://api.github.com/repos/KyberNetwork/smart-contracts/keys{/key_id}","collaborators_url":"https://api.github.com/repos/KyberNetwork/smart-contracts/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/KyberNetwork/smart-contracts/teams","hooks_url":"https://api.github.com/repos/KyberNetwork/smart-contracts/hooks","issue_events_url":"https://api.github.com/repos/KyberNetwork/smart-contracts/issues/events{/number}","events_url":"https://api.github.com/repos/KyberNetwork/smart-contracts/events","assignees_url":"https://api.github.com/repos/KyberNetwork/smart-contracts/assignees{/user}","branches_url":"https://api.github.com/repos/KyberNetwork/smart-contracts/branches{/branch}","tags_url":"https://api.github.com/repos/KyberNetwork/smart-contracts/tags","blobs_url":"https://api.github.com/repos/KyberNetwork/smart-contracts/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/KyberNetwork/smart-contracts/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/KyberNetwork/smart-contracts/git/refs{/sha}","trees_url":"https://api.github.com/repos/KyberNetwork/smart-contracts/git/trees{/sha}","statuses_url":"https://api.github.com/repos/KyberNetwork/smart-contracts/statuses/{sha}","languages_url":"https://api.github.com/repos/KyberNetwork/smart-contracts/languages","stargazers_url":"https://api.github.com/repos/KyberNetwork/smart-contracts/stargazers","contributors_url":"https://api.github.com/repos/KyberNetwork/smart-contracts/contributors","subscribers_url":"https://api.github.com/repos/KyberNetwork/smart-contracts/subscribers","subscription_url":"https://api.github.com/repos/KyberNetwork/smart-contracts/subscription","commits_url":"https://api.github.com/repos/KyberNetwork/smart-contracts/commits{/sha}","git_commits_url":"https://api.github.com/repos/KyberNetwork/smart-contracts/git/commits{/sha}","comments_url":"https://api.github.com/repos/KyberNetwork/smart-contracts/comments{/number}","issue_comment_url":"https://api.github.com/repos/KyberNetwork/smart-contracts/issues/comments{/number}","contents_url":"https://api.github.com/repos/KyberNetwork/smart-contracts/contents/{+path}","compare_url":"https://api.github.com/repos/KyberNetwork/smart-contracts/compare/{base}...{head}","merges_url":"https://api.github.com/repos/KyberNetwork/smart-contracts/merges","archive_url":"https://api.github.com/repos/KyberNetwork/smart-contracts/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/KyberNetwork/smart-contracts/downloads","issues_url":"https://api.github.com/repos/KyberNetwork/smart-contracts/issues{/number}","pulls_url":"https://api.github.com/repos/KyberNetwork/smart-contracts/pulls{/number}","milestones_url":"https://api.github.com/repos/KyberNetwork/smart-contracts/milestones{/number}","notifications_url":"https://api.github.com/repos/KyberNetwork/smart-contracts/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/KyberNetwork/smart-contracts/labels{/name}","releases_url":"https://api.github.com/repos/KyberNetwork/smart-contracts/releases{/id}","deployments_url":"https://api.github.com/repos/KyberNetwork/smart-contracts/deployments","created_at":"2017-07-02T08:39:01Z","updated_at":"2018-08-15T09:24:11Z","pushed_at":"2018-08-15T14:38:53Z","git_url":"git://github.com/KyberNetwork/smart-contracts.git","ssh_url":"git@github.com:KyberNetwork/smart-contracts.git","clone_url":"https://github.com/KyberNetwork/smart-contracts.git","svn_url":"https://github.com/KyberNetwork/smart-contracts","homepage":"https://kyber.network","size":2279,"stargazers_count":157,"watchers_count":157,"language":"JavaScript","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":66,"mirror_url":null,"archived":false,"open_issues_count":28,"license":{"key":"mit","name":"MIT License","spdx_id":"MIT","url":"https://api.github.com/licenses/mit","node_id":"MDc6TGljZW5zZTEz"},"forks":66,"open_issues":28,"watchers":157,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/KyberNetwork/smart-contracts/pulls/281"},"html":{"href":"https://github.com/KyberNetwork/smart-contracts/pull/281"},"issue":{"href":"https://api.github.com/repos/KyberNetwork/smart-contracts/issues/281"},"comments":{"href":"https://api.github.com/repos/KyberNetwork/smart-contracts/issues/281/comments"},"review_comments":{"href":"https://api.github.com/repos/KyberNetwork/smart-contracts/pulls/281/comments"},"review_comment":{"href":"https://api.github.com/repos/KyberNetwork/smart-contracts/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/KyberNetwork/smart-contracts/pulls/281/commits"},"statuses":{"href":"https://api.github.com/repos/KyberNetwork/smart-contracts/statuses/b123a85d60bf792056c4c5c61b1017b73bb39bae"}},"author_association":"MEMBER"}}
{"actor":{"display_login":"ilanDoron"}}