# Third-Party Notices

`hxedit` source code in this repository is dual-licensed under `MIT OR Apache-2.0`.

The `full` feature enables inline assembly patching through the optional
third-party Keystone-assembler dependency. The normal `core` and `default`
builds do not enable that dependency.

## Keystone in `full` builds

Included notice paths in this repository:

- `licenses/keystone/FOSS-NOTICE.txt`
- `licenses/keystone/LICENSE.txt`
- `licenses/keystone/EXCEPTIONS-CLIENT`

Practical redistribution rule for this repository:

- Do not relabel `full` binaries or source bundles as `MIT/Apache-only`.
- Ship the Keystone FOSS notice, license text, and bundled FOSS license
  exception text alongside any redistributed `full` artifact.
- Keep the main `hxedit` source-license notice (`LICENSE`) and the dual-license
  texts (`licenses/LICENSE-MIT`, `licenses/LICENSE-APACHE`) with the artifact
  as well.

The bundled Keystone exception text explicitly lists both Apache 2.0 and MIT in
its FOSS license list, subject to the conditions written in that exception
file.

## Sagitta in `sagitta-analysis` builds

The optional `sagitta-analysis` feature enables binary analysis through the
crates.io package `sagitta-rs`.

- Package: `sagitta-rs`
- Version: `0.0.2`
- License: MIT
- Repository: https://github.com/ycsgg/sagitta

`core` and `default` release bundles do not enable this feature. `full` bundles
enable it through the `full` feature, and any build that directly enables
`--features sagitta-analysis` also includes it. Redistributed artifacts that
enable Sagitta should keep this notice with the artifact.

## Rhai in `default` builds

The `scripting` feature enables Rhai-based headless scripts and is part of the
default bundle.

- Package: `rhai`
- Version: `1.25.1`
- License: MIT OR Apache-2.0
- Repository: https://github.com/rhaiscript/rhai

Rhai's license is compatible with the repository's own `MIT OR Apache-2.0`
license. Redistributed default/full artifacts should keep this notice with the
artifact.

## SFTP support in `remote-sftp` builds

The optional `remote-sftp` feature enables SFTP-over-SSH remote file targets
through the Rust `russh` and `russh-sftp` crates. It does not use the system
OpenSSH client.

- Package: `russh`
- Version: `0.61.2`
- License: Apache-2.0
- Repository: https://github.com/warp-tech/russh

- Package: `russh-sftp`
- Version: `2.3.0`
- License: Apache-2.0
- Repository: https://github.com/AspectUnk/russh-sftp

Direct and key transitive crates enabled by this feature include:

- Package: `tokio`
- Version: `1.52.3`
- License: MIT
- Repository: https://github.com/tokio-rs/tokio

- Package: `ring`
- Version: `0.17.14`
- License: Apache-2.0 AND ISC
- Repository: https://github.com/briansmith/ring

`remote-sftp` is not part of the default bundle. Redistributed artifacts that
enable it should keep this notice with the artifact.

## FTP support in `remote-ftp` builds

The optional `remote-ftp` feature enables FTP remote file targets through the
`suppaftp` Rust crate. `hxedit` uses the plain FTP mode only; FTPS/TLS support
is not enabled by this feature.

- Package: `suppaftp`
- Version: `9.0.0`
- License: MIT OR Apache-2.0
- Repository: https://github.com/veeso/suppaftp

Transitive crates enabled by this feature include:

- Package: `chrono`
- Version: `0.4.45`
- License: MIT OR Apache-2.0
- Repository: https://github.com/chronotope/chrono

- Package: `lazy-regex`
- Version: `3.6.0`
- License: MIT
- Repository: https://github.com/Canop/lazy-regex

- Package: `log`
- Version: `0.4.32`
- License: MIT OR Apache-2.0
- Repository: https://github.com/rust-lang/log

`remote-ftp` is not part of the default bundle. Redistributed artifacts that
enable it should keep this notice with the artifact.
