## Summary of the Pull Request
_What is this about?_
We'd like to refactor the proxy lifecycle to only delete when the proxy is out-of-date - i.e. when the proxy is older than 7 days or a mismatched version. I've changed two files, proxy.py and timer_daily\init.py to check for the version and timestamp before stopping a live proxy.
## PR Checklist
* [ ] Applies to work item: #xxx
* [ ] CLA signed. If not, go over [here](https://cla.opensource.microsoft.com/microsoft/onefuzz) and sign the CLI.
* [ ] Tests added/passed
* [ ] Requires documentation to be updated
* [x] I've discussed this with core contributors already. If not checked, I'm ready to accept this work might be rejected in favor of a different grand plan. Issue number where discussion took place: #xxx
## Info on Pull Request
_What does this include?_
Changes to two files:
proxy.py:
- get_or_create() edited to check if timestamp is >7 days.
- Created is_outdated() to check version and timestamp for out-of-date proxy.
timer_daily/init.py
- Proxy check now includes is_outdated() before determining if a proxy should be shutdown.
## Validation Steps Performed
Deploying test instance to determine if proxy lives past a single day.
This enables specifying the endpoint configuration for alternate tenants purely on the command line.
Previously, on a single tenant you could use the following:
```
onefuzz --endpoint https://INSTANCE.azurewebsites.net info get
```
For multi-tenant installs, we need to expose more than just endpoint.
This enables:
```
onefuzz --endpoint https://INSTANCE.azurewebsites.net --client_id CLIENT_ID --authority https://login.microsoftonline.com/common --tenant_domain TENANT_DOMAIN info get
```
## Info on Pull Request
The deploy.py is only able to set the issuer url to the redmond tenant in the case of single tenant auth. For multi tenant, since the the tenant_domain is provided specifically, it works fine. In the case of single tenant, if the instance is not in the redmond tenant, the cli is unable to authenticate itself.
_What does this include?_
## Validation Steps Performed
A test instance was deployed in the PME instance and it was verified that the cli could authenticate with the instance.
- Detect Sancov table accesses via static displacements, not just PC-relative
- Explicitly skip instructions with no memory operand
- Skip instructions whose effective address relies on (non-PC) register values
- Add Sancov table discovery for Windows modules with debug info
- When recording coverage, try to recover coverage blocks from Sancov tables
- Not tested against x86-32 targets, should be close
- Redefine the coverage report format to be easily extensible
- Introduce a generic `CoverageReport` struct for coverage report serialization
- Implement runtime-recorded block coverage serialization via conversion into the former