{"action":"created","comment":{"url":"https://api.github.com/repos/elemental/Elemental/pulls/comments/25274468","id":25274468,"diff_hunk":"@@ -320,423 +316,504 @@ AxpyInterface<T>::AxpyInterface( AxpyType type, const DistMatrix<T>& X )\n         LogicError(\"Cannot update a constant matrix\");\n     }\n     else\n-    {\n-        attachedForLocalToGlobal_ = false;\n-        attachedForGlobalToLocal_ = true;\n-        localToGlobalMat_ = 0;\n-        globalToLocalMat_ = &X;\n-    }\n-\n-    const Int p = X.Grid().Size();\n-    sentEomTo_.resize( p, false );\n-    haveEomFrom_.resize( p, false );\n-\n-    sendingData_.resize( p );\n-    sendingRequest_.resize( p );\n-    sendingReply_.resize( p );\n-\n-    dataVectors_.resize( p );\n-    requestVectors_.resize( p );\n-    replyVectors_.resize( p );\n-\n-    dataSendRequests_.resize( p );\n-    requestSendRequests_.resize( p );\n-    replySendRequests_.resize( p );\n-\n-    eomSendRequests_.resize( p );\n-}\n-\n-template<typename T>\n-AxpyInterface<T>::~AxpyInterface()\n-{ \n-    if( attachedForLocalToGlobal_ || attachedForGlobalToLocal_ )\n-    {\n-        if( std::uncaught_exception() )\n-        {\n-           const Grid& g = ( attachedForLocalToGlobal_ ? \n-                             localToGlobalMat_->Grid() : \n-                             globalToLocalMat_->Grid() );\n-           ostringstream os;\n-           os << g.Rank()\n-              << \"Uncaught exception detected during AxpyInterface destructor \"\n-                 \"that required a call to Detach. Instead of allowing for the \"\n-                 \"possibility of Detach throwing another exception and \"\n-                 \"resulting in a 'terminate', we instead immediately dump the \"\n-                 \"call stack (if not in RELEASE mode) since the program will \"\n-                 \"likely hang:\" << endl;\n-           cerr << os.str();\n-           DEBUG_ONLY(DumpCallStack())\n-        }\n-        else\n-        {\n-            Detach(); \n-        }\n-    }\n-}\n-\n-template<typename T>\n-void AxpyInterface<T>::Attach( AxpyType type, DistMatrix<T>& Z )\n-{\n-    DEBUG_ONLY(CallStackEntry cse(\"AxpyInterface::Attach\"))\n-    if( attachedForLocalToGlobal_ || attachedForGlobalToLocal_ )\n-        LogicError(\"Must detach before reattaching.\");\n-\n-    if( type == LOCAL_TO_GLOBAL )\n-    {\n-        attachedForLocalToGlobal_ = true;\n-        localToGlobalMat_ = &Z;\n-    }\n+      {\n+\tattachedForLocalToGlobal_ = false;\n+\tattachedForGlobalToLocal_ = true;\n+\tlocalToGlobalMat_ = 0;\n+\tglobalToLocalMat_ = &X;\n+      }\n+\n+    const Int p = X.Grid ().Size ();\n+\n+#if MPI_VERSION>=3 && defined(EL_USE_IBARRIER_FOR_AXPY)\n+#else\n+    sentEomTo_.resize (p, false);\n+    haveEomFrom_.resize (p, false);\n+    eomSendRequests_.resize (p);\n+#endif\n+\n+    sendingData_.resize (p);\n+    sendingRequest_.resize (p);\n+    sendingReply_.resize (p);\n+\n+    dataSendRequests_.resize (p);\n+    requestSendRequests_.resize (p);\n+    replySendRequests_.resize (p);\n+\n+    dataVectors_.resize (p);\n+    requestVectors_.resize (p);\n+    replyVectors_.resize (p);\n+ }\n+\n+  template < typename T > AxpyInterface < T >::~AxpyInterface ()\n+  {\n+    if (attachedForLocalToGlobal_ || attachedForGlobalToLocal_)\n+      {\n+\tif (std::uncaught_exception ())\n+\t  {\n+\t    const Grid & g = (attachedForLocalToGlobal_ ?\n+\t\t\t      localToGlobalMat_->Grid () :\n+\t\t\t      globalToLocalMat_->Grid ());\n+\t    std::ostringstream os;\n+\t    os << g.Rank ()\n+\t      <<\n+\t      \"Uncaught exception detected during AxpyInterface destructor \"\n+\t      \"that required a call to Detach. Instead of allowing for the \"\n+\t      \"possibility of Detach throwing another exception and \"\n+\t      \"resulting in a 'terminate', we instead immediately dump the \"\n+\t      \"call stack (if not in RELEASE mode) since the program will \"\n+\t      \"likely hang:\" << std::endl;\n+\t    std::cerr << os.str ();\n+\t  DEBUG_ONLY (DumpCallStack ())}\n+\telse\n+\t  {\n+\t    Detach ();\n+\t  }\n+      }\n+  }\n+\n+  template < typename T >\n+    void AxpyInterface < T >::Attach (AxpyType type, DistMatrix < T > &Z)\n+  {\n+    DEBUG_ONLY (CallStackEntry cse (\"AxpyInterface::Attach\"))\n+      if (attachedForLocalToGlobal_ || attachedForGlobalToLocal_)\n+      LogicError (\"Must detach before reattaching.\");\n+\n+    const Grid & g = Z.Grid ();\n+\n+    if (type == LOCAL_TO_GLOBAL)\n+      {\n+\tattachedForLocalToGlobal_ = true;\n+\tlocalToGlobalMat_ = &Z;\n+      }\n     else\n-    {\n-        attachedForGlobalToLocal_ = true;\n-        globalToLocalMat_ = &Z;\n-    }\n-\n-    const Int p = Z.Grid().Size();\n-    sentEomTo_.resize( p, false );\n-    haveEomFrom_.resize( p, false );\n-\n-    sendingData_.resize( p );\n-    sendingRequest_.resize( p );\n-    sendingReply_.resize( p );\n-\n-    dataVectors_.resize( p );\n-    requestVectors_.resize( p );\n-    replyVectors_.resize( p );\n-\n-    dataSendRequests_.resize( p );\n-    requestSendRequests_.resize( p );\n-    replySendRequests_.resize( p );\n-\n-    eomSendRequests_.resize( p );\n-}\n-\n-template<typename T>\n-void AxpyInterface<T>::Attach( AxpyType type, const DistMatrix<T>& X )\n-{\n-    DEBUG_ONLY(CallStackEntry cse(\"AxpyInterface::Attach\"))\n-    if( attachedForLocalToGlobal_ || attachedForGlobalToLocal_ )\n-        LogicError(\"Must detach before reattaching.\");\n-\n-    if( type == LOCAL_TO_GLOBAL )\n-    {\n-        LogicError(\"Cannot update a constant matrix\");\n-    }\n+      {\n+\tattachedForGlobalToLocal_ = true;\n+\tglobalToLocalMat_ = &Z;\n+      }\n+    const Int p = Z.Grid ().Size ();\n+\n+#if MPI_VERSION>=3 && defined(EL_USE_IBARRIER_FOR_AXPY)\n+#else\n+    sentEomTo_.resize (p, false);\n+    haveEomFrom_.resize (p, false);\n+    eomSendRequests_.resize (p);\n+#endif    \n+    \n+    // request objects\n+    sendingRequest_.resize (p);\n+    sendingData_.resize (p);\n+    sendingReply_.resize (p);\n+\n+    // ready-to-send \n+    requestSendRequests_.resize (p);\n+    replySendRequests_.resize (p);\n+    dataSendRequests_.resize (p);\n+      \n+    dataVectors_.resize (p);  \n+    requestVectors_.resize (p);  \n+    replyVectors_.resize (p);\n+  }\n+\n+  template < typename T >\n+    void AxpyInterface < T >::Attach (AxpyType type,\n+\t\t\t\t      const DistMatrix < T > &X)\n+  {\n+    DEBUG_ONLY (CallStackEntry cse (\"AxpyInterface::Attach\"))\n+      if (attachedForLocalToGlobal_ || attachedForGlobalToLocal_)\n+      LogicError (\"Must detach before reattaching.\");\n+\n+    if (type == LOCAL_TO_GLOBAL)\n+      {\n+\tLogicError (\"Cannot update a constant matrix\");\n+      }","path":"src/core/AxpyInterface.cpp","position":736,"original_position":736,"commit_id":"b235bd2261559f44015238467c8fd1f0641f045c","original_commit_id":"b235bd2261559f44015238467c8fd1f0641f045c","user":{"login":"poulson","id":129293,"avatar_url":"https://avatars.githubusercontent.com/u/129293?v=3","gravatar_id":"","url":"https://api.github.com/users/poulson","html_url":"https://github.com/poulson","followers_url":"https://api.github.com/users/poulson/followers","following_url":"https://api.github.com/users/poulson/following{/other_user}","gists_url":"https://api.github.com/users/poulson/gists{/gist_id}","starred_url":"https://api.github.com/users/poulson/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/poulson/subscriptions","organizations_url":"https://api.github.com/users/poulson/orgs","repos_url":"https://api.github.com/users/poulson/repos","events_url":"https://api.github.com/users/poulson/events{/privacy}","received_events_url":"https://api.github.com/users/poulson/received_events","type":"User","site_admin":false},"body":"Ah!","created_at":"2015-02-24T17:54:51Z","updated_at":"2015-02-24T17:54:51Z","html_url":"https://github.com/elemental/Elemental/pull/34#discussion_r25274468","pull_request_url":"https://api.github.com/repos/elemental/Elemental/pulls/34","_links":{"self":{"href":"https://api.github.com/repos/elemental/Elemental/pulls/comments/25274468"},"html":{"href":"https://github.com/elemental/Elemental/pull/34#discussion_r25274468"},"pull_request":{"href":"https://api.github.com/repos/elemental/Elemental/pulls/34"}}},"pull_request":{"url":"https://api.github.com/repos/elemental/Elemental/pulls/34","id":29876454,"html_url":"https://github.com/elemental/Elemental/pull/34","diff_url":"https://github.com/elemental/Elemental/pull/34.diff","patch_url":"https://github.com/elemental/Elemental/pull/34.patch","issue_url":"https://api.github.com/repos/elemental/Elemental/issues/34","number":34,"state":"open","locked":false,"title":"Testing: RMA AxpyInterface","user":{"login":"sg0","id":4510073,"avatar_url":"https://avatars.githubusercontent.com/u/4510073?v=3","gravatar_id":"","url":"https://api.github.com/users/sg0","html_url":"https://github.com/sg0","followers_url":"https://api.github.com/users/sg0/followers","following_url":"https://api.github.com/users/sg0/following{/other_user}","gists_url":"https://api.github.com/users/sg0/gists{/gist_id}","starred_url":"https://api.github.com/users/sg0/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/sg0/subscriptions","organizations_url":"https://api.github.com/users/sg0/orgs","repos_url":"https://api.github.com/users/sg0/repos","events_url":"https://api.github.com/users/sg0/events{/privacy}","received_events_url":"https://api.github.com/users/sg0/received_events","type":"User","site_admin":false},"body":"The changes are only localized to a few existing files and some new files, the intention is to improve the performance of Axpy interface by including new routines and modifying existing ones. Changes to particular files are mentioned below:\r\n\r\n1. Elemental AXPYInterface Original API - Disable the EOM matching functionality by introducing non-blocking consensus synchronization in Detach. Main logic is coded in mpi.hpp mpi.cpp, AxpyInterface.cpp and AxpyInterface.hpp\r\n\r\n2. Elemental AXPYInterface New API  - Attach and Detach done once per DistMatrix, Put/Get/Acc blocking and non-blocking functions. Same interface is implemented using MPI-3 passive RMA, and MPI-2 send-recv.\r\n     2.1. Implemented using MPI-3 RMA - Files affected are mpi.cpp, mpi.hpp, Rmainterface.hpp and     Rmainterface.cpp.\r\n     2.2. Implemented using MPI-2 sided send/recv -  Files affected are mpi.cpp, mpi.hpp, Axpyinterface2.hpp and Axpyinterface2.cpp.\r\n \r\nI think this could be improved further, and feedback/criticism is greatly appreciated. The interface was @jeffhammond 's idea, and I am thankful to him and Antonio Peña/Pavan Balaji from Argonne National Lab for all the help that lead to this. ","created_at":"2015-02-24T07:37:39Z","updated_at":"2015-02-24T17:54:51Z","closed_at":null,"merged_at":null,"merge_commit_sha":"9f0c1a354750fe68487556b421509c45ce0f3a51","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/elemental/Elemental/pulls/34/commits","review_comments_url":"https://api.github.com/repos/elemental/Elemental/pulls/34/comments","review_comment_url":"https://api.github.com/repos/elemental/Elemental/pulls/comments{/number}","comments_url":"https://api.github.com/repos/elemental/Elemental/issues/34/comments","statuses_url":"https://api.github.com/repos/elemental/Elemental/statuses/b235bd2261559f44015238467c8fd1f0641f045c","head":{"label":"sg0:testing","ref":"testing","sha":"b235bd2261559f44015238467c8fd1f0641f045c","user":{"login":"sg0","id":4510073,"avatar_url":"https://avatars.githubusercontent.com/u/4510073?v=3","gravatar_id":"","url":"https://api.github.com/users/sg0","html_url":"https://github.com/sg0","followers_url":"https://api.github.com/users/sg0/followers","following_url":"https://api.github.com/users/sg0/following{/other_user}","gists_url":"https://api.github.com/users/sg0/gists{/gist_id}","starred_url":"https://api.github.com/users/sg0/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/sg0/subscriptions","organizations_url":"https://api.github.com/users/sg0/orgs","repos_url":"https://api.github.com/users/sg0/repos","events_url":"https://api.github.com/users/sg0/events{/privacy}","received_events_url":"https://api.github.com/users/sg0/received_events","type":"User","site_admin":false},"repo":{"id":19929637,"name":"Elemental","full_name":"sg0/Elemental","owner":{"login":"sg0","id":4510073,"avatar_url":"https://avatars.githubusercontent.com/u/4510073?v=3","gravatar_id":"","url":"https://api.github.com/users/sg0","html_url":"https://github.com/sg0","followers_url":"https://api.github.com/users/sg0/followers","following_url":"https://api.github.com/users/sg0/following{/other_user}","gists_url":"https://api.github.com/users/sg0/gists{/gist_id}","starred_url":"https://api.github.com/users/sg0/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/sg0/subscriptions","organizations_url":"https://api.github.com/users/sg0/orgs","repos_url":"https://api.github.com/users/sg0/repos","events_url":"https://api.github.com/users/sg0/events{/privacy}","received_events_url":"https://api.github.com/users/sg0/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/sg0/Elemental","description":"Distributed-memory dense linear algebra","fork":true,"url":"https://api.github.com/repos/sg0/Elemental","forks_url":"https://api.github.com/repos/sg0/Elemental/forks","keys_url":"https://api.github.com/repos/sg0/Elemental/keys{/key_id}","collaborators_url":"https://api.github.com/repos/sg0/Elemental/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/sg0/Elemental/teams","hooks_url":"https://api.github.com/repos/sg0/Elemental/hooks","issue_events_url":"https://api.github.com/repos/sg0/Elemental/issues/events{/number}","events_url":"https://api.github.com/repos/sg0/Elemental/events","assignees_url":"https://api.github.com/repos/sg0/Elemental/assignees{/user}","branches_url":"https://api.github.com/repos/sg0/Elemental/branches{/branch}","tags_url":"https://api.github.com/repos/sg0/Elemental/tags","blobs_url":"https://api.github.com/repos/sg0/Elemental/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/sg0/Elemental/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/sg0/Elemental/git/refs{/sha}","trees_url":"https://api.github.com/repos/sg0/Elemental/git/trees{/sha}","statuses_url":"https://api.github.com/repos/sg0/Elemental/statuses/{sha}","languages_url":"https://api.github.com/repos/sg0/Elemental/languages","stargazers_url":"https://api.github.com/repos/sg0/Elemental/stargazers","contributors_url":"https://api.github.com/repos/sg0/Elemental/contributors","subscribers_url":"https://api.github.com/repos/sg0/Elemental/subscribers","subscription_url":"https://api.github.com/repos/sg0/Elemental/subscription","commits_url":"https://api.github.com/repos/sg0/Elemental/commits{/sha}","git_commits_url":"https://api.github.com/repos/sg0/Elemental/git/commits{/sha}","comments_url":"https://api.github.com/repos/sg0/Elemental/comments{/number}","issue_comment_url":"https://api.github.com/repos/sg0/Elemental/issues/comments{/number}","contents_url":"https://api.github.com/repos/sg0/Elemental/contents/{+path}","compare_url":"https://api.github.com/repos/sg0/Elemental/compare/{base}...{head}","merges_url":"https://api.github.com/repos/sg0/Elemental/merges","archive_url":"https://api.github.com/repos/sg0/Elemental/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/sg0/Elemental/downloads","issues_url":"https://api.github.com/repos/sg0/Elemental/issues{/number}","pulls_url":"https://api.github.com/repos/sg0/Elemental/pulls{/number}","milestones_url":"https://api.github.com/repos/sg0/Elemental/milestones{/number}","notifications_url":"https://api.github.com/repos/sg0/Elemental/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/sg0/Elemental/labels{/name}","releases_url":"https://api.github.com/repos/sg0/Elemental/releases{/id}","created_at":"2014-05-19T04:57:08Z","updated_at":"2015-02-24T05:13:06Z","pushed_at":"2015-02-24T06:14:18Z","git_url":"git://github.com/sg0/Elemental.git","ssh_url":"git@github.com:sg0/Elemental.git","clone_url":"https://github.com/sg0/Elemental.git","svn_url":"https://github.com/sg0/Elemental","homepage":"http://libelemental.org","size":35873,"stargazers_count":3,"watchers_count":3,"language":"C++","has_issues":false,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":3,"default_branch":"master"}},"base":{"label":"elemental:master","ref":"master","sha":"47cfa392c825babd84a7491a5a8ac8253e0d257b","user":{"login":"elemental","id":489560,"avatar_url":"https://avatars.githubusercontent.com/u/489560?v=3","gravatar_id":"","url":"https://api.github.com/users/elemental","html_url":"https://github.com/elemental","followers_url":"https://api.github.com/users/elemental/followers","following_url":"https://api.github.com/users/elemental/following{/other_user}","gists_url":"https://api.github.com/users/elemental/gists{/gist_id}","starred_url":"https://api.github.com/users/elemental/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/elemental/subscriptions","organizations_url":"https://api.github.com/users/elemental/orgs","repos_url":"https://api.github.com/users/elemental/repos","events_url":"https://api.github.com/users/elemental/events{/privacy}","received_events_url":"https://api.github.com/users/elemental/received_events","type":"Organization","site_admin":false},"repo":{"id":4239408,"name":"Elemental","full_name":"elemental/Elemental","owner":{"login":"elemental","id":489560,"avatar_url":"https://avatars.githubusercontent.com/u/489560?v=3","gravatar_id":"","url":"https://api.github.com/users/elemental","html_url":"https://github.com/elemental","followers_url":"https://api.github.com/users/elemental/followers","following_url":"https://api.github.com/users/elemental/following{/other_user}","gists_url":"https://api.github.com/users/elemental/gists{/gist_id}","starred_url":"https://api.github.com/users/elemental/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/elemental/subscriptions","organizations_url":"https://api.github.com/users/elemental/orgs","repos_url":"https://api.github.com/users/elemental/repos","events_url":"https://api.github.com/users/elemental/events{/privacy}","received_events_url":"https://api.github.com/users/elemental/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/elemental/Elemental","description":"Distributed-memory dense and sparse-direct linear algebra and optimization","fork":false,"url":"https://api.github.com/repos/elemental/Elemental","forks_url":"https://api.github.com/repos/elemental/Elemental/forks","keys_url":"https://api.github.com/repos/elemental/Elemental/keys{/key_id}","collaborators_url":"https://api.github.com/repos/elemental/Elemental/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/elemental/Elemental/teams","hooks_url":"https://api.github.com/repos/elemental/Elemental/hooks","issue_events_url":"https://api.github.com/repos/elemental/Elemental/issues/events{/number}","events_url":"https://api.github.com/repos/elemental/Elemental/events","assignees_url":"https://api.github.com/repos/elemental/Elemental/assignees{/user}","branches_url":"https://api.github.com/repos/elemental/Elemental/branches{/branch}","tags_url":"https://api.github.com/repos/elemental/Elemental/tags","blobs_url":"https://api.github.com/repos/elemental/Elemental/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/elemental/Elemental/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/elemental/Elemental/git/refs{/sha}","trees_url":"https://api.github.com/repos/elemental/Elemental/git/trees{/sha}","statuses_url":"https://api.github.com/repos/elemental/Elemental/statuses/{sha}","languages_url":"https://api.github.com/repos/elemental/Elemental/languages","stargazers_url":"https://api.github.com/repos/elemental/Elemental/stargazers","contributors_url":"https://api.github.com/repos/elemental/Elemental/contributors","subscribers_url":"https://api.github.com/repos/elemental/Elemental/subscribers","subscription_url":"https://api.github.com/repos/elemental/Elemental/subscription","commits_url":"https://api.github.com/repos/elemental/Elemental/commits{/sha}","git_commits_url":"https://api.github.com/repos/elemental/Elemental/git/commits{/sha}","comments_url":"https://api.github.com/repos/elemental/Elemental/comments{/number}","issue_comment_url":"https://api.github.com/repos/elemental/Elemental/issues/comments{/number}","contents_url":"https://api.github.com/repos/elemental/Elemental/contents/{+path}","compare_url":"https://api.github.com/repos/elemental/Elemental/compare/{base}...{head}","merges_url":"https://api.github.com/repos/elemental/Elemental/merges","archive_url":"https://api.github.com/repos/elemental/Elemental/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/elemental/Elemental/downloads","issues_url":"https://api.github.com/repos/elemental/Elemental/issues{/number}","pulls_url":"https://api.github.com/repos/elemental/Elemental/pulls{/number}","milestones_url":"https://api.github.com/repos/elemental/Elemental/milestones{/number}","notifications_url":"https://api.github.com/repos/elemental/Elemental/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/elemental/Elemental/labels{/name}","releases_url":"https://api.github.com/repos/elemental/Elemental/releases{/id}","created_at":"2012-05-06T08:37:42Z","updated_at":"2015-02-24T17:11:07Z","pushed_at":"2015-02-24T17:11:07Z","git_url":"git://github.com/elemental/Elemental.git","ssh_url":"git@github.com:elemental/Elemental.git","clone_url":"https://github.com/elemental/Elemental.git","svn_url":"https://github.com/elemental/Elemental","homepage":"http://libelemental.org","size":46546,"stargazers_count":59,"watchers_count":59,"language":"C++","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":24,"mirror_url":null,"open_issues_count":15,"forks":24,"open_issues":15,"watchers":59,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/elemental/Elemental/pulls/34"},"html":{"href":"https://github.com/elemental/Elemental/pull/34"},"issue":{"href":"https://api.github.com/repos/elemental/Elemental/issues/34"},"comments":{"href":"https://api.github.com/repos/elemental/Elemental/issues/34/comments"},"review_comments":{"href":"https://api.github.com/repos/elemental/Elemental/pulls/34/comments"},"review_comment":{"href":"https://api.github.com/repos/elemental/Elemental/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/elemental/Elemental/pulls/34/commits"},"statuses":{"href":"https://api.github.com/repos/elemental/Elemental/statuses/b235bd2261559f44015238467c8fd1f0641f045c"}}}}