Page MenuHomePhabricator

NoQ (Artem Dergachev)
User

Projects

User does not belong to any projects.

User Details

User Since
Sep 3 2015, 9:16 AM (257 w, 2 d)

Recent Activity

Fri, Aug 7

NoQ accepted D83942: [analyzer][tests] Add a notion of project sizes.

I can't say any of my ideas about better naming are exceptionally bright. The existing scale seems perfectly reasonable.

Fri, Aug 7, 4:57 PM · Restricted Project
NoQ added a comment to D85545: [Diagnostics] Diagnose missing comma in string array initialization.

Parentheses could work here

Yay great! Let's add such test?

Fri, Aug 7, 1:28 PM · Restricted Project
NoQ added a comment to D85545: [Diagnostics] Diagnose missing comma in string array initialization.

What if the user did actually want to concatenate the strings? Eg., one of the strings in the list is long and clang-format suggests breaking it up for the 80-column limit which causes the new warning to appear. How would the user suppress the warning in this case?

Fri, Aug 7, 12:59 PM · Restricted Project
NoQ updated the diff for D67422: [analyzer] NFC: Move path diagnostic consumer implementations to libAnalysis..

Whoops fxd!

Fri, Aug 7, 12:33 PM · Restricted Project
NoQ added a comment to D84520: [Analyzer] Improve invalid dereference bug reporting in DereferenceChecker..

Let's not change warning text without good reasons. Too few of us speak English well enough to check the articles. The original text seems concise and on-point.

Fri, Aug 7, 11:19 AM · Restricted Project
NoQ added a comment to D85424: [Analyzer] Crash fix for alpha.cplusplus.IteratorRange.

There should be no UndefinedVals in function arguments unless you disable core checkers (which isn't supported).

Fri, Aug 7, 11:13 AM · Restricted Project
NoQ added a comment to D85528: [analyzer] Fix cast evaluation on scoped enums in ExprEngine.

Aha, ok, sounds like the right thing to do. Like, for Z3 it's actually the wrong thing to do (you'd prefer to evaluate the cast perfectly by adding SymbolCast) but for pure RangeConstraintManager this is the lesser of two evils.

Fri, Aug 7, 11:12 AM · Restricted Project
NoQ added inline comments to D84600: [Analyzer] Support note tags for smart ptr checker.
Fri, Aug 7, 11:08 AM · Restricted Project
NoQ added inline comments to D84600: [Analyzer] Support note tags for smart ptr checker.
Fri, Aug 7, 11:06 AM · Restricted Project

Wed, Aug 5

NoQ accepted D85311: [analyzer][tests] Understand when diagnostics change between builds.

This is one of the scripts that really deserves tests outside of buildbots. Like, it's not uncommon to use it "by hand".

Wed, Aug 5, 6:09 PM · Restricted Project
NoQ added inline comments to D67422: [analyzer] NFC: Move path diagnostic consumer implementations to libAnalysis..
Wed, Aug 5, 5:55 PM · Restricted Project
NoQ updated the diff for D67422: [analyzer] NFC: Move path diagnostic consumer implementations to libAnalysis..

Fxd.

Wed, Aug 5, 5:55 PM · Restricted Project
NoQ added inline comments to D84600: [Analyzer] Support note tags for smart ptr checker.
Wed, Aug 5, 2:55 PM · Restricted Project
NoQ added inline comments to D84600: [Analyzer] Support note tags for smart ptr checker.
Wed, Aug 5, 12:26 PM · Restricted Project
NoQ added a comment to D85319: [analyzer][RFC] Get info from the LLVM IR for precision.

This seems a huge architectural change that we need to talk about.

Wed, Aug 5, 11:47 AM · Restricted Project
NoQ added inline comments to D85319: [analyzer][RFC] Get info from the LLVM IR for precision.
Wed, Aug 5, 11:45 AM · Restricted Project
NoQ added inline comments to D84979: [analyzer][NFC] Refine CStringLength modeling API.
Wed, Aug 5, 11:38 AM · Restricted Project

Tue, Aug 4

NoQ accepted D82837: [Analyzer][WebKit] UncountedLambdaCaptureChecker.

Whoops! Looks great now, i have no further comments, let's land :)

Tue, Aug 4, 7:25 PM · Restricted Project
NoQ updated the diff for D67421: [analyzer] NFC: Move IssueHash to libAnalysis..

Get rid of the "V1" suffix. Indeed, we'll just rename the API.

Tue, Aug 4, 7:16 PM · Restricted Project
NoQ added a comment to D84600: [Analyzer] Support note tags for smart ptr checker.

Generally i think this is shaping up nicely, with the couple of minor nits addressed i'm happy to land this. Like, there are a few cornercases that we could address but we could do that in follow-up patches. Folks, do you see anything else here?

Tue, Aug 4, 12:01 PM · Restricted Project
NoQ added inline comments to D84600: [Analyzer] Support note tags for smart ptr checker.
Tue, Aug 4, 11:54 AM · Restricted Project

Mon, Aug 3

NoQ added inline comments to D67422: [analyzer] NFC: Move path diagnostic consumer implementations to libAnalysis..
Mon, Aug 3, 9:20 PM · Restricted Project
NoQ updated the diff for D67422: [analyzer] NFC: Move path diagnostic consumer implementations to libAnalysis..

Aaaaand rebase. Addressed comments. With @Szelethus's refactoring work the patch actually looks much cleaner than it used to. One bit that's not directly related but i decided to keep it from the original patch was moving the plist-html diagnostic builder function into its own file.

Mon, Aug 3, 9:20 PM · Restricted Project
NoQ added inline comments to D84600: [Analyzer] Support note tags for smart ptr checker.
Mon, Aug 3, 8:40 PM · Restricted Project

Sun, Aug 2

NoQ added inline comments to D84600: [Analyzer] Support note tags for smart ptr checker.
Sun, Aug 2, 8:56 PM · Restricted Project
NoQ added a comment to D83877: [Analyzer] Handle unique_ptr::swap() in SmartPtrModeling.

These patches look like they're done, maybe let's land them?

Sun, Aug 2, 11:43 AM · Restricted Project
NoQ added a comment to D83836: [Analyzer] Add checkRegionChanges for SmartPtrModeling.

These patches look like they're done, maybe let's land them?

Sun, Aug 2, 11:43 AM · Restricted Project

Sat, Aug 1

NoQ added inline comments to D84600: [Analyzer] Support note tags for smart ptr checker.
Sat, Aug 1, 1:37 PM · Restricted Project

Fri, Jul 31

NoQ added inline comments to D84600: [Analyzer] Support note tags for smart ptr checker.
Fri, Jul 31, 5:27 PM · Restricted Project
NoQ accepted D85026: [analyzer] Introduce minor refactoring of SVal::getSubKind function.

That's a fair point.

Fri, Jul 31, 5:26 PM · Restricted Project
NoQ added inline comments to D84600: [Analyzer] Support note tags for smart ptr checker.
Fri, Jul 31, 5:23 PM · Restricted Project
NoQ accepted D85034: [analyzer] Simplify functions SVal::getAsSymbolicExpression and similar ones.

*standing ovation*

Fri, Jul 31, 5:10 PM · Restricted Project

Wed, Jul 29

NoQ added a reviewer for D67421: [analyzer] NFC: Move IssueHash to libAnalysis.: vsavchenko.
Wed, Jul 29, 9:46 PM · Restricted Project
NoQ added inline comments to D67421: [analyzer] NFC: Move IssueHash to libAnalysis..
Wed, Jul 29, 9:46 PM · Restricted Project
NoQ updated the diff for D67421: [analyzer] NFC: Move IssueHash to libAnalysis..

Re-do the comments. Rename GetIssueHash() to getIssueHashV1 because there's a high chance we'll want more different kinds of hashes (also starts with a small letter, while we're at it).

Wed, Jul 29, 9:45 PM · Restricted Project
NoQ requested review of D84902: [clang-tidy] Fix ODR violation in unittests..
Wed, Jul 29, 6:04 PM · Restricted Project
NoQ accepted D84843: [Analyzer] Remove inclusion of uniqueing decl from diagnostic profile..

Aha, ok, yeah, so that's what caused it!

Wed, Jul 29, 10:25 AM · Restricted Project
NoQ accepted D84303: [analyzer][tests] Fix SATest update functionality.

We absolutely needed this :)

Wed, Jul 29, 10:23 AM · Restricted Project
NoQ accepted D84494: [Analyzer] Use of BugType in DereferenceChecker (NFC)..

Thank you!

Wed, Jul 29, 10:13 AM · Restricted Project

Tue, Jul 28

NoQ added a comment to D84494: [Analyzer] Use of BugType in DereferenceChecker (NFC)..

BuiltinBug is deprecated and we should be using BugType anyway

Tue, Jul 28, 7:04 PM · Restricted Project
NoQ added inline comments to D73151: [analyzer] Fix handle leak false positive when the handle dies too early.
Tue, Jul 28, 6:57 PM · Restricted Project
NoQ added inline comments to D73151: [analyzer] Fix handle leak false positive when the handle dies too early.
Tue, Jul 28, 6:47 PM · Restricted Project
NoQ added a comment to D83115: [Analyzer] Report every bug if only uniqueing location differs..

Whoops, i meant to post the comment in https://reviews.llvm.org/rG22a084cfa337d5e5ea90eba5261f7937e28d250b#937772 here. Anyway, i found a crash caused by this patch.

Tue, Jul 28, 4:23 PM · Restricted Project
NoQ added a comment to rG22a084cfa337: [Analyzer] Report every bug if only uniqueing location differs..

This patch is causing a crash when path-insensitive checkers emit the same report multiple times in a multiple instantiations of the same template. Here's an example:

Tue, Jul 28, 4:21 PM
NoQ added a comment to D84736: [analyzer][RFC] Handle pointer difference of ElementRegion and SymbolicRegion.

I think the overall idea is correct.

Tue, Jul 28, 12:52 PM · Restricted Project
NoQ added a comment to D83961: [Analyzer] Fix bug report source locations in minimal output..

I believe i clarified above how this checker should work. For testing purposes (which is the only reason to ever use the minimal output) i prefer to have it at the end of path, because that tells more about the bug path and therefore more important to test.

Tue, Jul 28, 1:17 AM · Restricted Project

Mon, Jul 27

NoQ updated the diff for D84453: [clang-tidy] Suppress one unittest on macOS..

Update comments with the updated investigation details.

Mon, Jul 27, 10:38 PM · Restricted Project
NoQ added a comment to D84453: [clang-tidy] Suppress one unittest on macOS..

I was having issues with this test case under macos in D82188.
It would fail for seemingly no apparent reason until I disable a test in a different translation unit.
This made me think there is a subtle bug in the linker used on macos. That could also explain why asan is having a hard time with this as well.
I got as far as seeing that runCheckOnCode was called, the check was instantiated but its matchers never got registered effectively meaning it didn't run.

Mon, Jul 27, 10:15 PM · Restricted Project

Sun, Jul 26

NoQ added inline comments to D84600: [Analyzer] Support note tags for smart ptr checker.
Sun, Jul 26, 5:58 PM · Restricted Project
NoQ added a comment to D83678: [analyzer] Move ReturnPtrRange checker out of alpha by fixing a false positive on end() iterator.

I was also thinking of merging the functionality of alpha.security.ReturnPtrRange into an existing out-of-bound checker. I found that the implementation of alpha.security.ArrayBound is 90% copy-paste of this ReturnPtrChecker, so this seems to be a good candidate. The main difference is that ArrayPtrRange checks all memory usages (Checker<check::Location>) and ReturnPtrRange checks return statements specifically (Checker< check::PreStmt<ReturnStmt> >). The former one is supposed to be more general, nevertheless, ReturnPtrRange emits reports on some inputs where ArrayBound remains silent (Of course I'll check the other direction later too). I inspected such a report and the reason was that the returning pointer was not used by the caller. I think it is not painful losing these (false positive?) reports of RetunPtrRange, since in practice it is safe to return the address of an undefined location as long as it's not used.

So would you agree if I'd continue the investigation in this direction, where the solution is the removal of ReturnPtrRange checker and maybe some improvement of ArrayBound checker? Moving ArrayBound out from alpha state could be a next step later.

Sun, Jul 26, 5:56 PM · Restricted Project
NoQ added inline comments to D84600: [Analyzer] Support note tags for smart ptr checker.
Sun, Jul 26, 5:43 PM · Restricted Project

Fri, Jul 24

NoQ added a comment to D83961: [Analyzer] Fix bug report source locations in minimal output..

Every other test failure comes from RetainCount checker except malloc-plist.c.

Fri, Jul 24, 9:44 AM · Restricted Project
NoQ added a comment to D82598: [analyzer][Liveness][NFC] Get rid of statement liveness, because such a thing doesn't exist.

I still wonder what made this statement live in my example. There must have been some non-trivial liveness analysis going on that caused a statement to be live; probably something to do with the C++ destructor elements.

Fri, Jul 24, 8:42 AM · Restricted Project

Thu, Jul 23

NoQ added a comment to D82598: [analyzer][Liveness][NFC] Get rid of statement liveness, because such a thing doesn't exist.

Ok, here's the crashing example with ObjCForCollectionStmt. It should be saved as an .mm file and it crashes under pure --analyze.

@interface Item
// ...
@end
Thu, Jul 23, 10:18 PM · Restricted Project
NoQ added a comment to D84316: [analyzer][NFC] Split CStringChecker to modeling and reporting.
In D84316#2168462, @NoQ wrote:

Such separation also looks amazing because ultimately the first part can be made checker-inspecific (i.e., a reusable half-baked trait that can be instantiated multiple times to track various things regardless of their meaning).

Could you elaborate on the latter part? (instantiated multiple times...)

Thu, Jul 23, 9:07 PM · Restricted Project
NoQ added a comment to D84316: [analyzer][NFC] Split CStringChecker to modeling and reporting.

I wanted to have a separate class for bookkeeping while minimalizing the necessary changes.
What do you think would be the best way to organize this separation?

Few notes:

  • Checkers are implemented in the anonymous namespace, so only the given file has access to them.
  • I wanted to separate the bookkeeping logic from the reporting/function modeling logic in different files.
  • I like the fact that after the change the CStringChecker implements only the evalCall checker callback.

Let me know if I misunderstood something.

Thu, Jul 23, 9:02 PM · Restricted Project
NoQ created D84453: [clang-tidy] Suppress one unittest on macOS..
Thu, Jul 23, 11:48 AM · Restricted Project

Wed, Jul 22

NoQ added a comment to D84316: [analyzer][NFC] Split CStringChecker to modeling and reporting.

Shared accessors look amazing.

Wed, Jul 22, 7:30 PM · Restricted Project
NoQ added a comment to D83660: [analyzer] Fix a crash for dereferencing an empty llvm::Optional variable in SMTConstraintManager.h..

Although I'm not the most experienced one here, I think it's good to go.

Wed, Jul 22, 10:38 AM · Restricted Project
NoQ added a comment to D83660: [analyzer] Fix a crash for dereferencing an empty llvm::Optional variable in SMTConstraintManager.h..

It seems to be better to write a checker to report assertion failures.

Wed, Jul 22, 10:35 AM · Restricted Project

Tue, Jul 21

NoQ added a comment to D82598: [analyzer][Liveness][NFC] Get rid of statement liveness, because such a thing doesn't exist.

Hmm, interesting. I don't really understand why do we need to keep that block live, as we definitely won't use any of the value it provides (since it does not provide a value at all).

Actually, what I said initially is true:

[...] the only non-expression statements it queried are ObjCForCollectionStmts [...]

so I think it'd be okay to simply drop this.

Tue, Jul 21, 5:54 PM · Restricted Project
NoQ added inline comments to D83961: [Analyzer] Fix bug report source locations in minimal output..
Tue, Jul 21, 12:44 PM · Restricted Project

Sat, Jul 18

NoQ closed D84084: [analyzer] scan-build: Fix silencing multiple core checkers..

Forgot the phabricator link T_T
Committed in rG0b2a9222463.

Sat, Jul 18, 10:39 AM
NoQ added a comment to D84084: [analyzer] scan-build: Fix silencing multiple core checkers..

I do not get why my solution -analyzer-config silence-checkers=core.NullDereference -analyzer-config silence-checkers=core.DivideZero was insufficient, whereas -analyzer-config silence-checkers=core.NullDereference;core.DivideZero is working.

Because analyzer configs only hold the last value to be friendly towards scripts (just like most other configs/flags in clang).

Sat, Jul 18, 9:21 AM

Fri, Jul 17

NoQ created D84084: [analyzer] scan-build: Fix silencing multiple core checkers..
Fri, Jul 17, 7:51 PM
NoQ accepted D83877: [Analyzer] Handle unique_ptr::swap() in SmartPtrModeling.
Fri, Jul 17, 2:10 PM · Restricted Project
NoQ accepted D83836: [Analyzer] Add checkRegionChanges for SmartPtrModeling.

I think this looks great!

Fri, Jul 17, 2:08 PM · Restricted Project

Thu, Jul 16

NoQ added a comment to D83942: [analyzer][tests] Add a notion of project sizes.

Sizes assigned to the projects in this commit, do not directly
correspond to the number of lines or files in the project.

Thu, Jul 16, 10:23 AM · Restricted Project
NoQ added a comment to D83961: [Analyzer] Fix bug report source locations in minimal output..

These will be updated if the code change looks good.

Thu, Jul 16, 10:11 AM · Restricted Project

Wed, Jul 15

NoQ accepted D83120: [Analyzer][StreamChecker] Use BugType::SuppressOnSink at resource leak report..

Unless @NoQ has anything else to add :)

Wed, Jul 15, 10:35 AM · Restricted Project
NoQ added inline comments to D83877: [Analyzer] Handle unique_ptr::swap() in SmartPtrModeling.
Wed, Jul 15, 9:36 AM · Restricted Project

Tue, Jul 14

NoQ added inline comments to D83120: [Analyzer][StreamChecker] Use BugType::SuppressOnSink at resource leak report..
Tue, Jul 14, 11:42 PM · Restricted Project
NoQ added inline comments to D83836: [Analyzer] Add checkRegionChanges for SmartPtrModeling.
Tue, Jul 14, 8:21 PM · Restricted Project
GitHub <noreply@github.com> committed rG5013c3910713: Merge pull request #1256 from haoNoQ/static-analyzer-cherrypicks-13 (authored by NoQ).
Merge pull request #1256 from haoNoQ/static-analyzer-cherrypicks-13
Tue, Jul 14, 4:52 PM
GitHub <noreply@github.com> committed rG8b5f85ec1ed9: Merge pull request #1108 from haoNoQ/static-analyzer-cherrypicks-12 (authored by NoQ).
Merge pull request #1108 from haoNoQ/static-analyzer-cherrypicks-12
Tue, Jul 14, 4:45 PM
GitHub <noreply@github.com> committed rGf27acf0d1f3d: Merge pull request #1043 from haoNoQ/static-analyzer-cherrypicks-11 (authored by NoQ).
Merge pull request #1043 from haoNoQ/static-analyzer-cherrypicks-11
Tue, Jul 14, 4:40 PM
GitHub <noreply@github.com> committed rGa41fe55aef7c: Merge pull request #735 from haoNoQ/static-analyzer-cherrypicks-10 (authored by NoQ).
Merge pull request #735 from haoNoQ/static-analyzer-cherrypicks-10
Tue, Jul 14, 4:20 PM
NoQ updated the diff for D67420: [analyzer] NFC: Separate PathDiagnosticConsumer options from AnalyzerOptions..

Remove the ShouldDisplayPathNotes option as it never was an AnalyzerOption to begin with and it only makes things worse.

Tue, Jul 14, 9:10 AM · Restricted Project

Mon, Jul 13

NoQ accepted D83115: [Analyzer] Report every bug if only uniqueing location differs..
Mon, Jul 13, 10:38 PM · Restricted Project
NoQ added a comment to D67420: [analyzer] NFC: Separate PathDiagnosticConsumer options from AnalyzerOptions..

@vsavchenko and others just joining: The backstory and the overall plan are in this thread: http://lists.llvm.org/pipermail/cfe-dev/2019-August/063092.html. Continued at http://lists.llvm.org/pipermail/cfe-dev/2019-September/063229.html.

Mon, Jul 13, 9:23 PM · Restricted Project
NoQ added a reviewer for D67420: [analyzer] NFC: Separate PathDiagnosticConsumer options from AnalyzerOptions.: vsavchenko.
Mon, Jul 13, 9:17 PM · Restricted Project
NoQ updated the diff for D67420: [analyzer] NFC: Separate PathDiagnosticConsumer options from AnalyzerOptions..

Rebase!! This work was on hiatus but i plan to continue.

Mon, Jul 13, 9:16 PM · Restricted Project
NoQ added inline comments to D82837: [Analyzer][WebKit] UncountedLambdaCaptureChecker.
Mon, Jul 13, 4:55 PM · Restricted Project
NoQ added reviewers for D83660: [analyzer] Fix a crash for dereferencing an empty llvm::Optional variable in SMTConstraintManager.h.: vsavchenko, steakhal.

Looks like a copy-paste error indeed.

Mon, Jul 13, 4:50 PM · Restricted Project
NoQ added a comment to D82356: Fix bad doxygen result for class clang::ento::CallEvent and its derived classes.

Sorry!! I was sure i pushed this. Thank you Valeriy.

Mon, Jul 13, 4:44 PM · Restricted Project
NoQ accepted D83539: [analyzer][tests] Introduce analyzer benchmarking framework.

Box-and-whisker diagrams 👍

Mon, Jul 13, 4:41 PM · Restricted Project
NoQ accepted D83286: [analyzer][solver] Track symbol disequalities.

Maybe spend a few minutes remeasuring libsoundio more carefully, just in case? Also i really wish we had per-TU data of that kind, to see if any particular TUs have regressed significantly.

Mon, Jul 13, 4:39 PM · Restricted Project
NoQ requested changes to D83678: [analyzer] Move ReturnPtrRange checker out of alpha by fixing a false positive on end() iterator.

This is a good patch!

Mon, Jul 13, 4:33 PM · Restricted Project
NoQ accepted D83701: [analyzer][tests] Add 5 more projects for testing.
Mon, Jul 13, 4:18 PM · Restricted Project
NoQ added a comment to D83677: [analyzer] Rework Z3 requirements in the CSA testsuite.

Folks, please announce your overall plan for Z3 (unless i missed it). It looks like you are planning to actively support Z3 as a constraint manager, i.e. invoke it on every assume()? Did you consider my usual suggestion to only apply it to refuting non-buggy states in order to combat your false negatives similarly to how our current Z3 refutation refutes buggy states to combat false positives?

Mon, Jul 13, 2:08 PM · Restricted Project
NoQ added inline comments to D83120: [Analyzer][StreamChecker] Use BugType::SuppressOnSink at resource leak report..
Mon, Jul 13, 9:33 AM · Restricted Project

Fri, Jul 10

NoQ added a comment to D83120: [Analyzer][StreamChecker] Use BugType::SuppressOnSink at resource leak report..

Before i forget again: commit messages (and, therefore, review titles) are traditionally written in imperative mood, i.e. "Using" -> "Use" as if you ask git to change something in the project.

Fri, Jul 10, 1:23 PM · Restricted Project
NoQ accepted D83558: [analyzer] Use %clang_cc1 instead of %clang_analyze_cc1 if the test requires a specific constraint manager.

AFAIK the only difference between %clang_cc1 and %clang_analyze_cc1 that the latter inserts a placeholder which is going to be replaced by the appropriate constraint manager.

ToolSubst('%clang_analyze_cc1', command='%clang_cc1', extra_args=['-analyze', '%analyze', '-setup-static-analyzer']+additional_flags),
Fri, Jul 10, 11:07 AM

Jul 9 2020

NoQ added a comment to D82837: [Analyzer][WebKit] UncountedLambdaCaptureChecker.

That looks much better, thanks! I've a few more tiny annoying nits.

Jul 9 2020, 7:16 PM · Restricted Project

Jul 8 2020

NoQ accepted D83374: [analyzer][tests] Fix zip unpacking.

I think that the problem is actually with the second '/'

Jul 8 2020, 10:10 AM · Restricted Project
NoQ accepted D83373: [analyzer][tests] Make test interruption safe.
Jul 8 2020, 9:36 AM · Restricted Project
NoQ added a comment to D83374: [analyzer][tests] Fix zip unpacking.

For my own education, what was wrong with join?

Jul 8 2020, 9:34 AM · Restricted Project
NoQ accepted D82381: [analyzer] Introduce small improvements to the solver infra.
Jul 8 2020, 9:32 AM · Restricted Project

Jul 7 2020

NoQ added a comment to D83286: [analyzer][solver] Track symbol disequalities.

This looks great to me but i'd very much rather have someone else have a look, just because of the nature of the problem (:

Jul 7 2020, 9:02 PM · Restricted Project
NoQ added inline comments to D77150: [Analyzer] New Option for ContainerModeling: AggressiveEraseModeling.
Jul 7 2020, 9:34 AM · Restricted Project