Special Counsel Robert Mueller's investigation paints a decidedly mixed picture of President Donald Trump's conduct, that provides ample fodder for either side of the political divide.
The 448-page report says it did not establish the Trump campaign criminally conspired with Russia to influence the 2016 US presidential election.
The inquiry also built an extensive obstruction-of-justice case against the Republican president, though it stopped short of concluding he committed a crime.
While there was no immediate "smoking gun" to trigger impeachment proceedings, Democrats said the report had plenty of ammunition to keep up congressional scrutiny of Mr Trump.
'This is the end of my presidency'
The report details the president's expletive-filled horror as he learned that a special counsel was being appointed in May 2017.
According to the Mueller report, when then-Attorney General Jeff Sessions told the president about the coming inquiry, he replied: "Oh my god. This is terrible. This is the end of my presidency." He added two expletives to describe his situation.
Mr Trump added: "Everyone tells me if you get one of these independent counsels, it ruins your presidency. It takes years and years and I won't be able to do anything. This is the worst thing that ever happened to me."
'Mueller has to go'
The Mueller report details how in June 2017, the president called White House counsel Donald McGahn at home from Camp David and ordered him to have the special counsel removed.
On a second call, Mr McGahn said the president stepped up the pressure, saying: "Call Rod [Deputy Attorney General Rod Rosenstein], tell Rod that Mueller has conflicts and can't be the Special Counsel", and "Mueller has to go" and "Call me back when you do it."
Mr McGahn was so upset by the interference that he threatened to quit rather than participate in what he predicted would be a Nixon-style "Saturday Night Massacre".
After media reports in January 2018 revealed Mr Trump's attempts to have Mr Mueller removed, one of the president's lawyers made contact with Mr McGahn, asking him to publicly deny the reports. But McGahn, through his attorney, refused.
The report found there were a number of contacts between members of Trump's circle and Russia, and the campaign "expected it would benefit electorally from information stolen and released through Russian efforts".
The Trump team also "showed interest" in the Wikileaks release of hacked emails and "welcomed their potential to damage" Hillary Clinton. Unpatriotic and immoral, Democrats say. But the Mueller team makes clear it did not amount to a criminal conspiracy.
"The Russian contacts consisted of business connections, offers of assistance to the campaign, invitations for candidate Trump and [Russian President Vladimir] Putin to meet in person, invitations for campaign officials and representatives of the Russian government to meet, and policy positions seeking improved US-Russian relations.
"While the investigation identified numerous links between individuals with ties to the Russian government and individuals associated with the Trump campaign, the evidence was not sufficient to support criminal charges.
"The investigation did not establish that members of the Trump campaign conspired or co-ordinated with the Russian government in its election interference activities."
But no vindication on obstruction
On potential obstruction of justice, the Mueller report is far from the "total exoneration" claimed by Mr Trump during a victory lap last month.
The report ultimately concludes: "Unlike cases in which a subject engages in obstruction of justice to cover up a crime, the evidence we obtained did not establish that the President was involved in an underlying crime related to Russian election interference."
But it also pointedly notes:
"If we had confidence after a thorough investigation of the facts that the President clearly did not commit obstruction of justice, we would so state. Based on the facts and the applicable legal standards, however, we are unable to reach that judgment. The evidence we obtained about the President's actions and intent presents difficult issues that prevent us from conclusively determining that no criminal conduct occurred."
While the report acknowledges a sitting president cannot be indicted, it also mentions Congress' ability to investigate and potentially impeach him.
It says: "Congress may apply the obstruction laws to the President's corrupt exercise of the powers of office accords with our constitutional system of checks and balances and the principle that no person is above the law."
How else Trump tried to influence inquiry
The report cites 10 instances that were investigated as potential obstruction by Mr Trump.
Most have already been well documented, such as Mr Trump's firing of FBI Director James Comey.
But the findings also validate past US media reports that were denied at the time by the White House.
When Mr Trump learned the media was asking questions about a June 2016 meeting at Trump Tower between senior campaign officials, including Donald Trump Jr, and a Russian lawyer who was said to be promising "dirt" on Hillary Clinton, the president crafted a misleading response, says the report:
"Before the emails became public, the President edited a press statement for Trump Jr by deleting a line that acknowledged that the meeting was with 'an individual who [Trump Jr] was told might have information helpful to the campaign' and instead said only that the meeting was about adoptions of Russian children."
Mr Trump also asked former campaign manager Corey Lewandowski to get Attorney General Jeff Sessions to announce publicly that the investigation was "very unfair" and Mr Trump had done nothing wrong, says the report.
After Jeff Sessions recused himself from the Russia investigation, leaving an enraged Mr Trump feeling that he was losing control of the inquiry, the president pressed his attorney general that if he would only "unrecuse" himself he would be the "hero".
Refusal to 'carry out orders'
The Mueller report found that potential obstruction of justice by the president only failed because members of his administration refused to "carry out orders", including former FBI Director James Comey, former White House counsel Don McGahn and former campaign manager Corey Lewandowksi.
In one unflattering passage, the document says:
"The President's efforts to influence the investigation were mostly unsuccessful, but that is largely because the persons who surrounded the President declined to carry out orders or accede to his requests. Comey did not end the investigation of Flynn, which ultimately resulted in Flynn's prosecution and conviction for lying to the FBI. McGahn did not tell the Acting Attorney General that the Special Counsel must be removed, but was instead prepared to resign over the President's order. Lewandowski and Dearborn did not deliver the President's message to Sessions that he should confine the Russia investigation to future election meddling only. And McGahn refused to recede from his recollections about events surrounding the President's direction to have the Special Counsel removed, despite the President's multiple demands that he do so. Consistent with that pattern, the evidence we obtained would not support potential obstruction charges against the President's aides and associates beyond those already filed."
'Inadequate written answers'
Close followers of the Mueller saga may recall that in January 2018 at the White House, President Trump told reporters that he was "looking forward" to sitting down for an interview with Mr Mueller, that he would "love to do that as soon as possible", and boasted he would do so under oath.
But in the event, the report notes, "after more than a year of discussion, the President declined to be interviewed".
He agreed to submit written answers to the special counsel's questions to Russia-related matters, but declined to "provide written answers to questions on obstruction topics or questions on events during his transition", the report notes.
The Mueller report states: "Recognizing that the President would not be interviewed voluntarily, we considered whether to subpoena for his testimony. We viewed his written answers to be inadequate."
But the Mueller team said they ultimately decided not to subpoena Mr Trump because of the likelihood of litigation would cause a substantial delay at a late stage in the inquiry.
Why Sessions, Trump Jr and Kushner weren't prosecuted
The Mueller team did not indict then-Attorney General Jeff Sessions for perjury to Congress when he wrongly testified that he had no contact with Russians during the campaign because of the inexact wording of the questions, according to the report.
"The evidence is not sufficient to prove that Sessions gave knowingly false answers to Russia-related questions in light of the wording and context of those questions," the report says.
It also makes clear Donald Trump Jr, Jared Kushner and other campaign staff were on legally thin ice with their June 2016 meeting at Trump Tower with a Russian lawyer.
The Mueller team says they declined to prosecute the president's eldest son and son-in-law for campaign finance violations because they couldn't prove they had "wilfully" violated the law.