mirror of
https://github.com/dortania/OpenCore-Legacy-Patcher.git
synced 2026-04-20 18:54:30 +10:00
Compare commits
292 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
c41ffaafc2 | ||
|
|
741eda5fd8 | ||
|
|
1678005ceb | ||
|
|
df029110c7 | ||
|
|
59f43e0ea0 | ||
|
|
9bdc5148c4 | ||
|
|
3283cf514b | ||
|
|
991e449d26 | ||
|
|
f880751539 | ||
|
|
8eade66017 | ||
|
|
bb09b0432f | ||
|
|
eca98c65d3 | ||
|
|
3af8687f42 | ||
|
|
0af93e7936 | ||
|
|
b8904387f3 | ||
|
|
91b2a8b673 | ||
|
|
96748952d3 | ||
|
|
5eddcadaac | ||
|
|
43131150a4 | ||
|
|
5fefc7185e | ||
|
|
ff00e2683e | ||
|
|
e94264f039 | ||
|
|
7fc36ac098 | ||
|
|
8711b4069a | ||
|
|
70cb12413a | ||
|
|
a6dc58a81d | ||
|
|
f8da16bf0a | ||
|
|
e43fecb4bc | ||
|
|
d6ed03eb8a | ||
|
|
49e1fb1ad2 | ||
|
|
ab1dab7fe5 | ||
|
|
6c44472e00 | ||
|
|
d1f545e356 | ||
|
|
e61544dcb9 | ||
|
|
889293ca8a | ||
|
|
a280e22cdb | ||
|
|
bb26a5a5d8 | ||
|
|
ba543ca5cf | ||
|
|
592b0a707f | ||
|
|
8da87aea28 | ||
|
|
4842028516 | ||
|
|
8b6bcd47d2 | ||
|
|
081bb56dd0 | ||
|
|
418de07f84 | ||
|
|
18e3fa37ff | ||
|
|
c36296f2a0 | ||
|
|
8159761833 | ||
|
|
87526226cd | ||
|
|
1cf1e3491d | ||
|
|
9cf19319c5 | ||
|
|
8b47c4fe7b | ||
|
|
3b3f5b3290 | ||
|
|
637981b405 | ||
|
|
20b40f33ce | ||
|
|
9a388009cd | ||
|
|
a4bcefd748 | ||
|
|
7885673363 | ||
|
|
d7aa3889f9 | ||
|
|
4dc76e26fc | ||
|
|
648bb67b73 | ||
|
|
686698272b | ||
|
|
6349b64faf | ||
|
|
09b9194b91 | ||
|
|
827aa96168 | ||
|
|
02ae3c8393 | ||
|
|
8f6bd87721 | ||
|
|
cef684beb9 | ||
|
|
6c7c60fb62 | ||
|
|
1b786e57c3 | ||
|
|
35e6104786 | ||
|
|
ed7c0c6760 | ||
|
|
25522069dc | ||
|
|
cbbbe16031 | ||
|
|
8ed540c7b4 | ||
|
|
467016521f | ||
|
|
33d166a4f8 | ||
|
|
a03623e678 | ||
|
|
bb424e8ab9 | ||
|
|
9e98121e45 | ||
|
|
f7d842a7f4 | ||
|
|
a1981ab56d | ||
|
|
e820a9ecc8 | ||
|
|
b13d47df08 | ||
|
|
e6adcdabac | ||
|
|
3c4795fb47 | ||
|
|
aaf74b2b6a | ||
|
|
2c4b29400e | ||
|
|
98da3a16a8 | ||
|
|
b24ee0e38c | ||
|
|
f557b10c3c | ||
|
|
b876eda144 | ||
|
|
4c8e256e7e | ||
|
|
447afac6eb | ||
|
|
657fc97f4f | ||
|
|
1d8f87fb78 | ||
|
|
c6a34ddeb8 | ||
|
|
694d0397ea | ||
|
|
9cbc243581 | ||
|
|
04a83462c3 | ||
|
|
2e3152f23b | ||
|
|
ba1ac0501b | ||
|
|
3ce8b18ecb | ||
|
|
baaa897d10 | ||
|
|
86ffb83c86 | ||
|
|
db708022e9 | ||
|
|
cc2eebfd42 | ||
|
|
8490893960 | ||
|
|
15a5e54cbb | ||
|
|
1bc9f3d396 | ||
|
|
ca22da4ebb | ||
|
|
e609866c5e | ||
|
|
bb5673e770 | ||
|
|
024d41c946 | ||
|
|
44c4a488f4 | ||
|
|
5c09c10301 | ||
|
|
4f74629e3f | ||
|
|
56194be716 | ||
|
|
8cfa90f352 | ||
|
|
1064be45df | ||
|
|
0428244e60 | ||
|
|
135125bae6 | ||
|
|
120f893d1f | ||
|
|
a33c19448f | ||
|
|
b8e29eca28 | ||
|
|
d4873f8070 | ||
|
|
c42ec31415 | ||
|
|
8f251c1214 | ||
|
|
40aea143cf | ||
|
|
e6fc4f4a6e | ||
|
|
b5ebc7ffd7 | ||
|
|
21482eda88 | ||
|
|
e91148e534 | ||
|
|
c2c2ffc00b | ||
|
|
100c54a82c | ||
|
|
2b81e38ea8 | ||
|
|
db2721354c | ||
|
|
f21856a65b | ||
|
|
c7cd22bf65 | ||
|
|
3d8c523b7a | ||
|
|
11df8195ce | ||
|
|
cdc80ef550 | ||
|
|
85559d4d9e | ||
|
|
88ecd19369 | ||
|
|
22822be944 | ||
|
|
55607c5437 | ||
|
|
0459c0a5dc | ||
|
|
2626f9733d | ||
|
|
128e68d735 | ||
|
|
abc1ca5ec9 | ||
|
|
ed6fee1f94 | ||
|
|
edad35e1f5 | ||
|
|
f8615a8852 | ||
|
|
dec0873a41 | ||
|
|
16e29d3a1e | ||
|
|
fa7e51252d | ||
|
|
84abbb7c11 | ||
|
|
292e09a0d7 | ||
|
|
c5fd4036a7 | ||
|
|
4843ed92c9 | ||
|
|
f75fac14e6 | ||
|
|
ac055a633c | ||
|
|
0dc40318d0 | ||
|
|
84d0272eda | ||
|
|
4b35681b5f | ||
|
|
bbb5c06ddc | ||
|
|
df0c196a94 | ||
|
|
12f9482d3d | ||
|
|
5f7b836330 | ||
|
|
94af2350f4 | ||
|
|
7b758fcf15 | ||
|
|
fecf9502d0 | ||
|
|
4747c2619f | ||
|
|
4b187a045a | ||
|
|
eb9a24eee7 | ||
|
|
b3d2ac190c | ||
|
|
ce6805507d | ||
|
|
ad7d06d4b2 | ||
|
|
04dee1fcff | ||
|
|
3af65423c6 | ||
|
|
af6c98b54d | ||
|
|
eb9b137323 | ||
|
|
178c604507 | ||
|
|
88b660ecf8 | ||
|
|
3feb5a61f6 | ||
|
|
b8708ff193 | ||
|
|
8da945833c | ||
|
|
ee10c104b7 | ||
|
|
803a699658 | ||
|
|
88ee0e813e | ||
|
|
cc44024a8c | ||
|
|
880432970b | ||
|
|
5d6587100e | ||
|
|
df8d95b815 | ||
|
|
f1a868199e | ||
|
|
d0e77cca52 | ||
|
|
eaadaa2d45 | ||
|
|
4a5e3c89b6 | ||
|
|
a0eca53c58 | ||
|
|
8c092494a8 | ||
|
|
5f69a1c917 | ||
|
|
856ac19314 | ||
|
|
6c5aa244af | ||
|
|
f42bdcee03 | ||
|
|
b49db7e739 | ||
|
|
ec20d7b581 | ||
|
|
1c75353f27 | ||
|
|
b14ca8689a | ||
|
|
bd20cf6a1f | ||
|
|
b23e9c2eaa | ||
|
|
e625d9803b | ||
|
|
ae8bba5582 | ||
|
|
f19f08fc06 | ||
|
|
5fd17cc5e8 | ||
|
|
3c6d0de2e3 | ||
|
|
d3de15b594 | ||
|
|
b0db4739ad | ||
|
|
2584c16d41 | ||
|
|
b4caffe0d4 | ||
|
|
46734a7c5a | ||
|
|
484f434a67 | ||
|
|
033b577552 | ||
|
|
f1e2a320dc | ||
|
|
3885bf894a | ||
|
|
04ca447eb7 | ||
|
|
41486c0215 | ||
|
|
69035db2d7 | ||
|
|
c98021b14c | ||
|
|
b576e5a511 | ||
|
|
9b69700733 | ||
|
|
9d731c065e | ||
|
|
93aa69b0b0 | ||
|
|
3679324371 | ||
|
|
ebc6611f5c | ||
|
|
16ac5a6093 | ||
|
|
b1479fbc14 | ||
|
|
375b7c2fd2 | ||
|
|
95afb7d109 | ||
|
|
3956908482 | ||
|
|
e0eda1fa0c | ||
|
|
dc6b14f962 | ||
|
|
dd798c02d1 | ||
|
|
4fc0f4dee7 | ||
|
|
81379dc857 | ||
|
|
1d7eea068a | ||
|
|
0978bcbb87 | ||
|
|
2da88a22d7 | ||
|
|
ccb9aea1e6 | ||
|
|
6b8d1743b3 | ||
|
|
cf0f613a5f | ||
|
|
ba49f45c4c | ||
|
|
3e5ade8047 | ||
|
|
3e47853e75 | ||
|
|
d19f5ba72f | ||
|
|
4918873ad9 | ||
|
|
6ecb8e26c9 | ||
|
|
52ad1f7399 | ||
|
|
f6ee429c8e | ||
|
|
4de79ce633 | ||
|
|
d7c2904868 | ||
|
|
24eec279d8 | ||
|
|
d49575b22b | ||
|
|
3271bcf92f | ||
|
|
41514a35f5 | ||
|
|
8e1809cf3d | ||
|
|
98bc71e46a | ||
|
|
d1dd8a0e2e | ||
|
|
d20d9975c1 | ||
|
|
ecca9f2c72 | ||
|
|
88724c4950 | ||
|
|
fd48419cb2 | ||
|
|
ff5543f9dc | ||
|
|
0130fce0c6 | ||
|
|
d8258a73fd | ||
|
|
939e942f50 | ||
|
|
603aedb6ae | ||
|
|
05a51bf32e | ||
|
|
792a99ce04 | ||
|
|
a6fbbc0c44 | ||
|
|
9b7497946a | ||
|
|
9a68ce67eb | ||
|
|
a6ccd28671 | ||
|
|
f7f66cd732 | ||
|
|
9b316bbbca | ||
|
|
db39757655 | ||
|
|
88903e8edf | ||
|
|
dd968a3244 | ||
|
|
a42811b907 | ||
|
|
15aacddd23 | ||
|
|
f4d3154fd1 | ||
|
|
8f13906d2c | ||
|
|
771186e6cf | ||
|
|
da32e9d4e3 |
2
.flake8
2
.flake8
@@ -1,4 +1,4 @@
|
|||||||
[flake8]
|
[flake8]
|
||||||
ignore = E501
|
extend-ignore = E501, E203
|
||||||
per-file-ignores =
|
per-file-ignores =
|
||||||
Resources/Constants.py:E704
|
Resources/Constants.py:E704
|
||||||
34
.github/ISSUE_TEMPLATE/bug_report.md
vendored
34
.github/ISSUE_TEMPLATE/bug_report.md
vendored
@@ -1,34 +0,0 @@
|
|||||||
---
|
|
||||||
name: Bug report
|
|
||||||
about: Create a report to help notify of issues
|
|
||||||
title: ''
|
|
||||||
labels: ''
|
|
||||||
assignees: ''
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
**Describe the bug**
|
|
||||||
A clear and concise description of what the issue is.
|
|
||||||
|
|
||||||
**To Reproduce**
|
|
||||||
Steps to reproduce the behavior:
|
|
||||||
1. Open app or .command '...'
|
|
||||||
2. Enter '....'
|
|
||||||
3. See error
|
|
||||||
|
|
||||||
**Screenshots**
|
|
||||||
If applicable, add screenshots to help explain your problem.
|
|
||||||
|
|
||||||
**Build Folder**
|
|
||||||
If applicable, add the generated OpenCore Build to help explain your problem.
|
|
||||||
|
|
||||||
**Hardware (please complete the following information):**
|
|
||||||
- OS Running (ie. macOS 10.15.7, Catalina)
|
|
||||||
- OS Patching (ie. macOS 11.2.3, Big Sur)
|
|
||||||
- Model Patching (ie. MacPro5,1)
|
|
||||||
|
|
||||||
For in-depth hardware logs, we highly encourage users to run [IORegistryExplorer](https://github.com/khronokernel/IORegistryClone/blob/master/ioreg-210.zip?raw=true) and send the output
|
|
||||||
* ie. `File -> SaveAs`
|
|
||||||
|
|
||||||
**Additional context**
|
|
||||||
Add any other context about the problem here.
|
|
||||||
143
.github/ISSUE_TEMPLATE/bug_report.yml
vendored
Normal file
143
.github/ISSUE_TEMPLATE/bug_report.yml
vendored
Normal file
@@ -0,0 +1,143 @@
|
|||||||
|
name: Bug Report
|
||||||
|
description: File a bug report
|
||||||
|
title: "[Bug]: "
|
||||||
|
labels: [bug]
|
||||||
|
body:
|
||||||
|
- type: markdown
|
||||||
|
attributes:
|
||||||
|
value: |
|
||||||
|
Thanks for taking the time to fill out this bug report!
|
||||||
|
- type: dropdown
|
||||||
|
id: machine
|
||||||
|
attributes:
|
||||||
|
label: Machine Model
|
||||||
|
description: What model was being patched?
|
||||||
|
options:
|
||||||
|
- MacBook4,1
|
||||||
|
- MacBook5,1
|
||||||
|
- MacBook5,2
|
||||||
|
- MacBook6,1
|
||||||
|
- MacBook7,1
|
||||||
|
- MacBook8,1
|
||||||
|
- MacBookAir2,1
|
||||||
|
- MacBookAir3,1
|
||||||
|
- MacBookAir3,2
|
||||||
|
- MacBookAir4,1
|
||||||
|
- MacBookAir4,2
|
||||||
|
- MacBookAir5,1
|
||||||
|
- MacBookAir5,2
|
||||||
|
- MacBookAir6,1
|
||||||
|
- MacBookAir6,2
|
||||||
|
- MacBookPro4,1
|
||||||
|
- MacBookPro5,1
|
||||||
|
- MacBookPro5,2
|
||||||
|
- MacBookPro5,3
|
||||||
|
- MacBookPro5,4
|
||||||
|
- MacBookPro5,5
|
||||||
|
- MacBookPro6,1
|
||||||
|
- MacBookPro6,2
|
||||||
|
- MacBookPro7,1
|
||||||
|
- MacBookPro8,1
|
||||||
|
- MacBookPro8,2
|
||||||
|
- MacBookPro8,3
|
||||||
|
- MacBookPro9,1
|
||||||
|
- MacBookPro9,2
|
||||||
|
- MacBookPro10,1
|
||||||
|
- MacBookPro10,2
|
||||||
|
- MacBookPro11,1
|
||||||
|
- MacBookPro11,2
|
||||||
|
- MacBookPro11,3
|
||||||
|
- Macmini3,1
|
||||||
|
- Macmini4,1
|
||||||
|
- Macmini5,1
|
||||||
|
- Macmini5,2
|
||||||
|
- Macmini5,3
|
||||||
|
- Macmini6,1
|
||||||
|
- Macmini6,2
|
||||||
|
- iMac7,1
|
||||||
|
- iMac8,1
|
||||||
|
- iMac9,1
|
||||||
|
- iMac10,1
|
||||||
|
- iMac11,1
|
||||||
|
- iMac11,2
|
||||||
|
- iMac11,3
|
||||||
|
- iMac12,1
|
||||||
|
- iMac12,2
|
||||||
|
- iMac13,1
|
||||||
|
- iMac13,2
|
||||||
|
- iMac13,3
|
||||||
|
- iMac14,1
|
||||||
|
- iMac14,2
|
||||||
|
- iMac14,3
|
||||||
|
- iMac14,4
|
||||||
|
- iMac15,1
|
||||||
|
- MacPro3,1
|
||||||
|
- MacPro4,1
|
||||||
|
- MacPro5,1
|
||||||
|
- Xserve2,1
|
||||||
|
- Xserve3,1
|
||||||
|
- Other/Non-Applicable
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
- type: dropdown
|
||||||
|
id: version
|
||||||
|
attributes:
|
||||||
|
label: Application Version
|
||||||
|
description: What build version of our software are you running?
|
||||||
|
options:
|
||||||
|
- 0.2.3 (Latest Build)
|
||||||
|
- 0.2.2 (Latest Release)
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
- type: dropdown
|
||||||
|
id: variant
|
||||||
|
attributes:
|
||||||
|
label: Application Variant
|
||||||
|
description: What variant of our software are you running?
|
||||||
|
options:
|
||||||
|
- GUI (Graphical User Interface)
|
||||||
|
- TUI (Text User Interface)
|
||||||
|
- CLI (Command Line Interface)
|
||||||
|
- Other/Non-Applicable
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
- type: dropdown
|
||||||
|
id: os-version
|
||||||
|
attributes:
|
||||||
|
label: What versions of macOS are you seeing the problem on?
|
||||||
|
multiple: true
|
||||||
|
options:
|
||||||
|
- macOS 12, Monterey
|
||||||
|
- macOS 11, Big Sur
|
||||||
|
- macOS 10.15, Catalina
|
||||||
|
- macOS 10.14, Mojave
|
||||||
|
- macOS 10.13, High Sierra
|
||||||
|
- macOS 10.12, Sierra
|
||||||
|
- macOS 10.11, El Capitan
|
||||||
|
- Other/Non-Applicable
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
- type: dropdown
|
||||||
|
id: where-issue
|
||||||
|
attributes:
|
||||||
|
label: Where does this issue happen?
|
||||||
|
multiple: true
|
||||||
|
options:
|
||||||
|
- Between booting macOS and Login Screen
|
||||||
|
- Within macOS (Before Logging in)
|
||||||
|
- Within macOS (After Logging in)
|
||||||
|
- Other/Non-Applicable
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
- type: textarea
|
||||||
|
id: what-happened
|
||||||
|
attributes:
|
||||||
|
label: What is the Isssue?
|
||||||
|
description: Additionally, explain what you expected to happen?
|
||||||
|
value: "Please clearly explain the issue"
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
- type: textarea
|
||||||
|
id: extra-info
|
||||||
|
attributes:
|
||||||
|
label: Any Additional Information
|
||||||
1
.github/ISSUE_TEMPLATE/config.yml
vendored
Normal file
1
.github/ISSUE_TEMPLATE/config.yml
vendored
Normal file
@@ -0,0 +1 @@
|
|||||||
|
blank_issues_enabled: false
|
||||||
25
.github/workflows/build-app.yml
vendored
25
.github/workflows/build-app.yml
vendored
@@ -1,4 +1,4 @@
|
|||||||
name: CI - Build App
|
name: CI - Build TUI
|
||||||
|
|
||||||
on:
|
on:
|
||||||
push:
|
push:
|
||||||
@@ -8,33 +8,30 @@ on:
|
|||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
build:
|
build:
|
||||||
name: Build App
|
name: Build TUI
|
||||||
runs-on: self-hosted
|
runs-on: x86_64
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v2
|
- uses: actions/checkout@v2
|
||||||
|
|
||||||
# - name: Install Python Dependencies
|
- name: Install Python Dependencies
|
||||||
# run: |
|
run: pip3 install --upgrade pyinstaller requests pyobjc
|
||||||
# python3 -m pip install -U pip
|
|
||||||
# pip3 install pyinstaller
|
|
||||||
|
|
||||||
- run: pyinstaller OpenCore-Patcher.spec
|
- run: pyinstaller OpenCore-Patcher.spec
|
||||||
- run: ./after_pyinstaller.sh
|
- run: ./after_pyinstaller.sh
|
||||||
- run: 'codesign -s "Developer ID Application: Mykola Grymalyuk (S74BDJXQMD)" -v --deep --timestamp --entitlements entitlements.plist -o runtime "dist/OpenCore-Patcher.app"'
|
- run: 'codesign -s "Developer ID Application: Mykola Grymalyuk (S74BDJXQMD)" -v --force --deep --timestamp --entitlements entitlements.plist -o runtime "dist/OpenCore-Patcher.app"'
|
||||||
|
- run: cd dist; zip -r ../OpenCore-Patcher-TUI.app.zip OpenCore-Patcher.app
|
||||||
- run: cd dist; zip ../OpenCore-Patcher.zip OpenCore-Patcher; zip -r ../OpenCore-Patcher.app.zip OpenCore-Patcher.app
|
- run: ./../sign-tui.sh
|
||||||
- run: ./../sign-app.sh
|
|
||||||
- name: Upload App to Artifacts
|
- name: Upload App to Artifacts
|
||||||
uses: actions/upload-artifact@v2
|
uses: actions/upload-artifact@v2
|
||||||
with:
|
with:
|
||||||
name: OpenCore-Patcher.app
|
name: OpenCore-Patcher-TUI.app
|
||||||
path: OpenCore-Patcher.app.zip
|
path: OpenCore-Patcher-TUI.app.zip
|
||||||
|
|
||||||
- name: Upload to Release
|
- name: Upload to Release
|
||||||
if: github.event_name == 'release'
|
if: github.event_name == 'release'
|
||||||
uses: svenstaro/upload-release-action@e74ff71f7d8a4c4745b560a485cc5fdb9b5b999d
|
uses: svenstaro/upload-release-action@e74ff71f7d8a4c4745b560a485cc5fdb9b5b999d
|
||||||
with:
|
with:
|
||||||
repo_token: ${{ secrets.GITHUB_TOKEN }}
|
repo_token: ${{ secrets.GITHUB_TOKEN }}
|
||||||
file: OpenCore-Patcher.app.zip
|
file: OpenCore-Patcher-TUI.app.zip
|
||||||
tag: ${{ github.ref }}
|
tag: ${{ github.ref }}
|
||||||
file_glob: true
|
file_glob: true
|
||||||
|
|||||||
29
.github/workflows/build-cli.yml
vendored
29
.github/workflows/build-cli.yml
vendored
@@ -1,29 +0,0 @@
|
|||||||
name: CI - Build CLI
|
|
||||||
|
|
||||||
on:
|
|
||||||
push:
|
|
||||||
workflow_dispatch:
|
|
||||||
release:
|
|
||||||
types: [published]
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
build:
|
|
||||||
name: Build CLI
|
|
||||||
runs-on: self-hosted
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v2
|
|
||||||
- run: pyinstaller OCLP-CLI.spec
|
|
||||||
- run: cd dist; zip ../OCLP-CLI.zip OCLP-CLI
|
|
||||||
- name: Upload Binary to Artifacts
|
|
||||||
uses: actions/upload-artifact@v2
|
|
||||||
with:
|
|
||||||
name: OCLP-CLI
|
|
||||||
path: OCLP-CLI.zip
|
|
||||||
- name: Upload to Release
|
|
||||||
if: github.event_name == 'release'
|
|
||||||
uses: svenstaro/upload-release-action@e74ff71f7d8a4c4745b560a485cc5fdb9b5b999d
|
|
||||||
with:
|
|
||||||
repo_token: ${{ secrets.GITHUB_TOKEN }}
|
|
||||||
file: OCLP-CLI.zip
|
|
||||||
tag: ${{ github.ref }}
|
|
||||||
file_glob: true
|
|
||||||
50
.github/workflows/build-gui.yml
vendored
Normal file
50
.github/workflows/build-gui.yml
vendored
Normal file
@@ -0,0 +1,50 @@
|
|||||||
|
name: CI - Build GUI
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
workflow_dispatch:
|
||||||
|
release:
|
||||||
|
types: [published]
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build:
|
||||||
|
name: Build GUI
|
||||||
|
runs-on: x86_64
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v2
|
||||||
|
- name: Install Python Dependencies
|
||||||
|
run: pip3 install --upgrade pyinstaller requests pyobjc
|
||||||
|
|
||||||
|
- run: pyinstaller OCLP-CLI.spec
|
||||||
|
- run: cd dist; cp OCLP-CLI ../; cd ..
|
||||||
|
- run: zip OCLP-CLI.zip OCLP-CLI
|
||||||
|
- name: Download latest nightly OCLP-GUI
|
||||||
|
run: curl -S -L https://nightly.link/dortania/OCLP-GUI/workflows/build-app/master/OpenCore-Patcher-GUI.app.zip --output ./OpenCore-Patcher-GUI.app.zip
|
||||||
|
- run: unzip -o OpenCore-Patcher-GUI.app.zip
|
||||||
|
- run: unzip OpenCore-Patcher-GUI.app.zip; rm OpenCore-Patcher-GUI.app.zip
|
||||||
|
- name: Merge new GUI
|
||||||
|
run: cp OCLP-CLI OpenCore\ Patcher.app/Contents/Resources/
|
||||||
|
- run: python3 merge_gui.py
|
||||||
|
- run: 'codesign -s "Developer ID Application: Mykola Grymalyuk (S74BDJXQMD)" -v --force --deep --timestamp --entitlements entitlements.plist -o runtime "OpenCore Patcher.app/Contents/Resources/OCLP-CLI"'
|
||||||
|
- run: 'codesign -s "Developer ID Application: Mykola Grymalyuk (S74BDJXQMD)" -v --force --deep --timestamp --entitlements entitlements.plist -o runtime "OpenCore Patcher.app/Contents/Resources/oclpd"'
|
||||||
|
- run: 'codesign -s "Developer ID Application: Mykola Grymalyuk (S74BDJXQMD)" -v --force --deep --timestamp --entitlements entitlements.plist -o runtime "OpenCore Patcher.app"'
|
||||||
|
- run: ditto -c -k --sequesterRsrc --keepParent OpenCore\ Patcher.app OpenCore-Patcher-GUI.app.zip
|
||||||
|
- run: ./../sign-gui.sh
|
||||||
|
- name: Upload GUI to Artifacts
|
||||||
|
uses: actions/upload-artifact@v2
|
||||||
|
with:
|
||||||
|
name: OpenCore-Patcher-GUI.app
|
||||||
|
path: OpenCore-Patcher-GUI.app.zip
|
||||||
|
- name: Upload CLI to Artifacts
|
||||||
|
uses: actions/upload-artifact@v2
|
||||||
|
with:
|
||||||
|
name: OCLP-CLI
|
||||||
|
path: OCLP-CLI.zip
|
||||||
|
- name: Upload to Release
|
||||||
|
if: github.event_name == 'release'
|
||||||
|
uses: svenstaro/upload-release-action@e74ff71f7d8a4c4745b560a485cc5fdb9b5b999d
|
||||||
|
with:
|
||||||
|
repo_token: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
file: OpenCore-Patcher-GUI.app.zip
|
||||||
|
tag: ${{ github.ref }}
|
||||||
|
file_glob: true
|
||||||
1
.gitignore
vendored
1
.gitignore
vendored
@@ -1,6 +1,7 @@
|
|||||||
.DS_Store
|
.DS_Store
|
||||||
OCLP-GUI.command
|
OCLP-GUI.command
|
||||||
/payloads/Apple
|
/payloads/Apple
|
||||||
|
/payloads/Apple.zip
|
||||||
/payloads/__MACOSX
|
/payloads/__MACOSX
|
||||||
/App
|
/App
|
||||||
/Build-Folder
|
/Build-Folder
|
||||||
|
|||||||
171
CHANGELOG.md
171
CHANGELOG.md
@@ -1,6 +1,135 @@
|
|||||||
# OpenCore Legacy Patcher changelog
|
# OpenCore Legacy Patcher changelog
|
||||||
|
|
||||||
|
## 0.2.4
|
||||||
|
|
||||||
|
- Fix BlessOverride typo
|
||||||
|
- Fix Wake on WLAN typo
|
||||||
|
- Fix Catalyst App crashing in macOS 11.5 (ie. Messages.app)
|
||||||
|
- Increment Binaries
|
||||||
|
- PatcherSupportPkg 0.0.15 release
|
||||||
|
- Implement Latebloom.kext support (v0.19)
|
||||||
|
- Work around macOS 11.3+ race condition on pre-Sandy Bridge Macs
|
||||||
|
- Disable USB Map injection when unneeded
|
||||||
|
|
||||||
|
## 0.2.3
|
||||||
|
|
||||||
|
- Fix more IORegistry issues
|
||||||
|
- Implement OpenCore GUI
|
||||||
|
- Ensure symlinks are preserved
|
||||||
|
- Enable TeraScale 2 patches by default on all models
|
||||||
|
- Fix NightShift support for macOS Monterey
|
||||||
|
- Add UniversalControl support
|
||||||
|
- Currently not enabled by Apple in macOS Monterey Beta 2/iOS 15 Beta 2
|
||||||
|
- Add optional Wake in WLAN setting
|
||||||
|
- Note: enabling may create network instability
|
||||||
|
- Increment Binaries
|
||||||
|
- OpenCore 0.7.1 release (07-05-2021)
|
||||||
|
- FeatureUnlock 1.0.3 rolling (07-07-2021)
|
||||||
|
- Previously known as SidecarFixup
|
||||||
|
- Lilu 1.5.4 release (07-05-2021)
|
||||||
|
- AppleALC 1.6.2 release
|
||||||
|
- WhateverGreen 1.6.2 release
|
||||||
|
- PatcherSupportPkg 0.0.13 release
|
||||||
|
- Fix Intel HD4000 DRM Support in macOS Monterey (thanks EduCovas!)
|
||||||
|
- Support optionally re-enabling iGPU in iMac14,x with dGPUs
|
||||||
|
- Fix Windows scanning in OpenCore menu when Windows and macOS are stored on the same ESP
|
||||||
|
|
||||||
|
## 0.2.2
|
||||||
|
|
||||||
|
- Fix IORegistry issue
|
||||||
|
- Fix Root Patch Failure on Nvidia Tesla GPUs
|
||||||
|
|
||||||
|
## 0.2.1
|
||||||
|
|
||||||
|
- Fix NVMe Crash on build
|
||||||
|
|
||||||
|
## 0.2.0
|
||||||
|
|
||||||
|
- Refactor device probe logic
|
||||||
|
- Implement PatcherSupportPkg v0.0.10
|
||||||
|
- Reduces binary sizes depending on OS
|
||||||
|
- Deprecates Apple-Binaries-OCLP
|
||||||
|
- Fix full screen and Airplay to Mac support for Intel HD4000 iGPUs in Monterey
|
||||||
|
- Automatically set `CMIO_Unit_Input_ASC.DoNotUseOpenCL` on TeraScale 2 GPUs
|
||||||
|
- Fix Country Code detection on Wireless Cards
|
||||||
|
- Add Windows detection and prompt during installation
|
||||||
|
- Fix Google Fonts rendering for Intel HD4000 iGPUs in Monterey
|
||||||
|
- Increment Binaries
|
||||||
|
- Lilu 1.5.4 rolling (f69a972 - 06-20-2021)
|
||||||
|
- RestrictEvents 1.0.3 rolling (3773ce2 - 06-20-2021)
|
||||||
|
- SidecarFixup 1.0.2 rolling (2c29166 - 06-21-2021)
|
||||||
|
- Allow AirPlay to Mac support on Skylake - Coffeelake Macs
|
||||||
|
|
||||||
|
## 0.1.9
|
||||||
|
|
||||||
|
- Fix incorrect AMFI and SIP detection
|
||||||
|
|
||||||
|
## 0.1.8
|
||||||
|
|
||||||
|
- Fix Kernel Panic in Big Sur and Monterey
|
||||||
|
- Increment binaries:
|
||||||
|
- Lilu (1.5.4 rolling - 06-15-2021)
|
||||||
|
|
||||||
|
## 0.1.7
|
||||||
|
|
||||||
|
- Add FireWire Boot Support for Catalina and newer
|
||||||
|
- Add NVMe firmware support for older models (ie. MacPro3,1)
|
||||||
|
- OpenCore must be stored on a bootable volume (ie. USB or SATA)
|
||||||
|
- Fix Thunderbolt Ethernet support on MacBookAir4,x
|
||||||
|
- Fix XHCI hangs on pre-2012 Machines
|
||||||
|
- XHCI boot support dropped due to instability
|
||||||
|
- Add beta macOS Monterey Support
|
||||||
|
- Fix iMac13,x sleep support
|
||||||
|
- Add support for following models:
|
||||||
|
- iMac14,4
|
||||||
|
- iMac15,1
|
||||||
|
- MacBook8,1
|
||||||
|
- MacBookAir6,1
|
||||||
|
- MacBookAir6,2
|
||||||
|
- MacBookPro11,1
|
||||||
|
- MacBookPro11,2
|
||||||
|
- MacBookPro11,3
|
||||||
|
- Increment binaries:
|
||||||
|
- OpenCore (0.7.0 release - 06-07-2021)
|
||||||
|
- AirportBrcmFixup (2.1.3 rolling - 06-08-2021)
|
||||||
|
- AppleALC (1.6.2 rolling - 06-08-2021)
|
||||||
|
- CPUFriend (1.2.4 rolling - 06-08-2021)
|
||||||
|
- Lilu (1.5.4 rolling - 06-11-2021)
|
||||||
|
- NVMeFix (1.0.9 rolling - 06-12-2021)
|
||||||
|
- WhateverGreen (1.5.1 rolling - 06-08-2021)
|
||||||
|
- RestrictEvents (1.0.3 rolling - 06-11-2021)
|
||||||
|
- Apple Binaries (0.0.18 release - 06-12-2021)
|
||||||
|
- MouSSE (0.95 release - 06-08-2021)
|
||||||
|
- SidecarFixup (1.0.2 rolling - 06-11-2021)
|
||||||
|
- Fix SSE4,2 Emulation
|
||||||
|
- Fix Sidecar and CPU renaming support in macOS Monterey
|
||||||
|
- Add AirPlay support to older Models
|
||||||
|
- Add Intel HD4000 Acceleration
|
||||||
|
- Big thanks to Jackluke, EduCovas, DhinakG, MykolaG!
|
||||||
|
- Add DebugEnhancer for better macOS Monterey logs
|
||||||
|
- DebugEnhancer (1.0.3 rolling - 06-08-2021)
|
||||||
|
- Add TeraScale 2 Graphics Acceleration to Big Sur
|
||||||
|
- User configurable, those prone to seizures are recommended to avoid or have another setup the machine due to initial colour strobing before forcing Million Colours on the display with SwitchResX or ResXtreme
|
||||||
|
|
||||||
|
## 0.1.6
|
||||||
|
|
||||||
|
- Add XHCI UEFI Driver for 3rd Party USB 3.0 Controllers
|
||||||
|
- Allows for Boot Support from OpenCore' Picker
|
||||||
|
- Fix UEFI output on MacPro3,1 with PC GPUs
|
||||||
|
- Increment binaries:
|
||||||
|
- OpenCore 4e0ff2d (0.7.0 rolling - 05-23-2021)
|
||||||
|
- Apple Binaries 59a52a3 (0.0.8 release - 05-24-2021)
|
||||||
|
- Allow legacy macOS Booting
|
||||||
|
- Fix Photos app distortion on legacy GPUs
|
||||||
|
- Fix device tree renaming on Mac Pros and Xserves
|
||||||
|
- Ensure no Acceleration Patches applied when no compatible GPU found
|
||||||
|
- Allow custom SMBIOS overriding
|
||||||
|
- Fix incorrectly setting CPU override for non-Minimal SMBIOS spoofs
|
||||||
|
- Support Minimal SMBIOS spoofing on El Capitan era Macs
|
||||||
|
- Fix GPU Switching on MacBookPro6,x
|
||||||
|
|
||||||
## 0.1.5
|
## 0.1.5
|
||||||
|
|
||||||
- Fix crashing when Wireless module not present
|
- Fix crashing when Wireless module not present
|
||||||
- Add iMac10,1 default dGPU pathing
|
- Add iMac10,1 default dGPU pathing
|
||||||
- Add agdpmod=vit9696 to all Nvidia Metal iMacs
|
- Add agdpmod=vit9696 to all Nvidia Metal iMacs
|
||||||
@@ -16,9 +145,11 @@
|
|||||||
- Add SeedUtil option to Advanced Patcher Settings
|
- Add SeedUtil option to Advanced Patcher Settings
|
||||||
|
|
||||||
## 0.1.4
|
## 0.1.4
|
||||||
|
|
||||||
- Fix Device Path formatting on 2012+ iMacs
|
- Fix Device Path formatting on 2012+ iMacs
|
||||||
|
|
||||||
## 0.1.3
|
## 0.1.3
|
||||||
|
|
||||||
- Fix internal PCIe devices reporting as external
|
- Fix internal PCIe devices reporting as external
|
||||||
- Opt for `built-in` when device path is detectable
|
- Opt for `built-in` when device path is detectable
|
||||||
- Innie 0ccd95e (1.3.0 release - 01-16-2021)
|
- Innie 0ccd95e (1.3.0 release - 01-16-2021)
|
||||||
@@ -37,6 +168,7 @@
|
|||||||
- Fix NVMe properties not applying when OpenCore is installed
|
- Fix NVMe properties not applying when OpenCore is installed
|
||||||
|
|
||||||
## 0.1.2
|
## 0.1.2
|
||||||
|
|
||||||
- Fix IDE support on 2008 era MacBooks, iMacs and Xserves
|
- Fix IDE support on 2008 era MacBooks, iMacs and Xserves
|
||||||
- Fix reduced output speeds on BCM94360 series Wifi cards
|
- Fix reduced output speeds on BCM94360 series Wifi cards
|
||||||
- Fix accidentally disabling non-existent iGPU in iMac11,2
|
- Fix accidentally disabling non-existent iGPU in iMac11,2
|
||||||
@@ -62,6 +194,7 @@
|
|||||||
- SidecarFixup efdf11c (1.0.0 release - 05-02-2021)
|
- SidecarFixup efdf11c (1.0.0 release - 05-02-2021)
|
||||||
|
|
||||||
## 0.1.1
|
## 0.1.1
|
||||||
|
|
||||||
- Fix iMac11,3 GFX0 pathing
|
- Fix iMac11,3 GFX0 pathing
|
||||||
- Add MouSSE support to iMac10,1 with Metal AMD GPU
|
- Add MouSSE support to iMac10,1 with Metal AMD GPU
|
||||||
- Fix iMac11,1 and iMac11,3 Nvidia boot issues after PRAM reset
|
- Fix iMac11,1 and iMac11,3 Nvidia boot issues after PRAM reset
|
||||||
@@ -81,9 +214,11 @@
|
|||||||
- Fix Acceleration Linking for Intel Ironlake iGPUs
|
- Fix Acceleration Linking for Intel Ironlake iGPUs
|
||||||
|
|
||||||
## 0.1.0
|
## 0.1.0
|
||||||
|
|
||||||
- Fix crash on iMacs with Metal GPUs
|
- Fix crash on iMacs with Metal GPUs
|
||||||
|
|
||||||
## 0.0.23
|
## 0.0.23
|
||||||
|
|
||||||
- Fix MacBookPro4,1 15" and 17" audio support
|
- Fix MacBookPro4,1 15" and 17" audio support
|
||||||
- Fix iMac7,1 24" and iMac9,1 24" audio support
|
- Fix iMac7,1 24" and iMac9,1 24" audio support
|
||||||
- Fix Macmini4,1 audio support
|
- Fix Macmini4,1 audio support
|
||||||
@@ -104,6 +239,7 @@
|
|||||||
- Disable SIP and SecureBootModel by default on legacy GPUs
|
- Disable SIP and SecureBootModel by default on legacy GPUs
|
||||||
|
|
||||||
## 0.0.22
|
## 0.0.22
|
||||||
|
|
||||||
- Add ExFat support for models missing driver
|
- Add ExFat support for models missing driver
|
||||||
- Aids BootCamp support for EFI based installs on 2010 and older Macs
|
- Aids BootCamp support for EFI based installs on 2010 and older Macs
|
||||||
- Fix CPU Boosting on 2011 and older Macs
|
- Fix CPU Boosting on 2011 and older Macs
|
||||||
@@ -112,11 +248,13 @@
|
|||||||
- Add BCM94322 and BCM94321 chipset support
|
- Add BCM94322 and BCM94321 chipset support
|
||||||
|
|
||||||
## 0.0.21
|
## 0.0.21
|
||||||
|
|
||||||
- Fix botched images in OpenCanopy
|
- Fix botched images in OpenCanopy
|
||||||
- Add support for 3rd party OpenCore usage detection during building
|
- Add support for 3rd party OpenCore usage detection during building
|
||||||
- Mainly for users transitioning from Ausdauersportler's OpenCore configuration
|
- Mainly for users transitioning from Ausdauersportler's OpenCore configuration
|
||||||
|
|
||||||
## 0.0.20
|
## 0.0.20
|
||||||
|
|
||||||
- Fix CPU Calculation on early MCP79 chipsets (ie. iMac9,1, MacBook5,x)
|
- Fix CPU Calculation on early MCP79 chipsets (ie. iMac9,1, MacBook5,x)
|
||||||
- Increment binaries
|
- Increment binaries
|
||||||
- OpenCore c528597 (0.6.8 release - 2021-04-05)
|
- OpenCore c528597 (0.6.8 release - 2021-04-05)
|
||||||
@@ -132,6 +270,7 @@
|
|||||||
- Fix Mac Pro and Xserve output issues
|
- Fix Mac Pro and Xserve output issues
|
||||||
|
|
||||||
## 0.0.19
|
## 0.0.19
|
||||||
|
|
||||||
- Add SMC-Spoof.kext to avoid triggering `smcupdater`
|
- Add SMC-Spoof.kext to avoid triggering `smcupdater`
|
||||||
- Add Root Volume patching for older machines
|
- Add Root Volume patching for older machines
|
||||||
- AppleHDA Patch for 2011 and older (Excluding MacPro4,1+)
|
- AppleHDA Patch for 2011 and older (Excluding MacPro4,1+)
|
||||||
@@ -150,6 +289,7 @@
|
|||||||
- Fix Broadcom Ethernet on older 2009-2011 Macs
|
- Fix Broadcom Ethernet on older 2009-2011 Macs
|
||||||
|
|
||||||
## 0.0.18
|
## 0.0.18
|
||||||
|
|
||||||
- Disable Vault by default due to breaking installations
|
- Disable Vault by default due to breaking installations
|
||||||
- Move BOOTx64.efi to System/Library/CoreServices/ to support GPT BootCamp installs
|
- Move BOOTx64.efi to System/Library/CoreServices/ to support GPT BootCamp installs
|
||||||
- Disable verbose by default, still configurable by end-user
|
- Disable verbose by default, still configurable by end-user
|
||||||
@@ -160,12 +300,14 @@
|
|||||||
- Add custom drive icons for external drives
|
- Add custom drive icons for external drives
|
||||||
|
|
||||||
## 0.0.17
|
## 0.0.17
|
||||||
|
|
||||||
- Fix build detection breaking on older OS
|
- Fix build detection breaking on older OS
|
||||||
|
|
||||||
## 0.0.16
|
## 0.0.16
|
||||||
|
|
||||||
- Move Serial selection to Patcher Settings
|
- Move Serial selection to Patcher Settings
|
||||||
- Add new SMBIOS patching options:
|
- Add new SMBIOS patching options:
|
||||||
- Minimal: Only update board ID and BIOSVersion, keep original serials
|
- Minimal: Only update board ID and BIOSVersion, keep original serials
|
||||||
- Moderate: Update entire SMBIOS, keep original serials
|
- Moderate: Update entire SMBIOS, keep original serials
|
||||||
- Advanced: Update entire SMBIOS, generate new serials
|
- Advanced: Update entire SMBIOS, generate new serials
|
||||||
- Fix crash on MacBookPro4,1
|
- Fix crash on MacBookPro4,1
|
||||||
@@ -181,12 +323,14 @@
|
|||||||
- Enable `amfi_get_out_of_my_way=1` when SIP is disabled
|
- Enable `amfi_get_out_of_my_way=1` when SIP is disabled
|
||||||
|
|
||||||
## 0.0.15
|
## 0.0.15
|
||||||
|
|
||||||
- Add user-configurable OpenCore DEBUG builds
|
- Add user-configurable OpenCore DEBUG builds
|
||||||
- Add user-configurable Wifi and GPU patches
|
- Add user-configurable Wifi and GPU patches
|
||||||
- Fix ThirdPartyDrives model detection
|
- Fix ThirdPartyDrives model detection
|
||||||
- Add HW_BID injection to fix boot.efi error
|
- Add HW_BID injection to fix boot.efi error
|
||||||
|
|
||||||
## 0.0.14
|
## 0.0.14
|
||||||
|
|
||||||
- Enable ThirdPartyDrives to aid with hibernation on 3rd party SATA drives
|
- Enable ThirdPartyDrives to aid with hibernation on 3rd party SATA drives
|
||||||
- Increment OpenCore 7bb41aa (0.6.8 rolling, 2021-03-06)
|
- Increment OpenCore 7bb41aa (0.6.8 rolling, 2021-03-06)
|
||||||
- Add ForceBooterSignature to resolve hibernation issues
|
- Add ForceBooterSignature to resolve hibernation issues
|
||||||
@@ -195,70 +339,83 @@
|
|||||||
- Add GopPassThrough quirk for UGA-based systems
|
- Add GopPassThrough quirk for UGA-based systems
|
||||||
|
|
||||||
## 0.0.13
|
## 0.0.13
|
||||||
|
|
||||||
- Add CPUFriend support to resolve X86PlatformPlugin clashes
|
- Add CPUFriend support to resolve X86PlatformPlugin clashes
|
||||||
- (1.2.3 c388a62 release)
|
- (1.2.3 c388a62 release)
|
||||||
- Fix crash with MacBookAir5,x
|
- Fix crash with MacBookAir5,x
|
||||||
- Fix hibernation support
|
- Fix hibernation support
|
||||||
- Remove Wireless patches for BCM4328/4321(14e4:4328) due to boot issues
|
- Remove Wireless patches for BCM4328/4321(14e4:4328) due to boot issues
|
||||||
|
|
||||||
## 0.0.12
|
## 0.0.12
|
||||||
|
|
||||||
- Convert OpenCore-Patcher binary to OpenCore-Patcher.app
|
- Convert OpenCore-Patcher binary to OpenCore-Patcher.app
|
||||||
- Add Backlight patches for modded Nvidia GPUs in iMac10,x-12,x
|
- Add Backlight patches for modded Nvidia GPUs in iMac10,x-12,x
|
||||||
- Fix sleep for iMac12,x with upgraded GPUs
|
- Fix sleep for iMac12,x with upgraded GPUs
|
||||||
|
|
||||||
## 0.0.11
|
## 0.0.11
|
||||||
|
|
||||||
- Re-add OpenCore GUI
|
- Re-add OpenCore GUI
|
||||||
- Rewrite in py3
|
- Rewrite in py3
|
||||||
- Add OpenCore-Patcher binary for releases avoiding local python requirement
|
- Add OpenCore-Patcher binary for releases avoiding local python requirement
|
||||||
- Increment binaries
|
- Increment binaries
|
||||||
- OpenCore cbd2fa3 (0.6.7 release)
|
- OpenCore cbd2fa3 (0.6.7 release)
|
||||||
- WhateverGreen 2e19d1b (1.4.8 release)
|
- WhateverGreen 2e19d1b (1.4.8 release)
|
||||||
- Rework SMBIOS allowing both original and custom serials(Should resolve all iMessage issues)
|
- Rework SMBIOS allowing both original and custom serials(Should resolve all iMessage issues)
|
||||||
- Support upgraded GPU detection in iMac10,x-12,x
|
- Support upgraded GPU detection in iMac10,x-12,x
|
||||||
- Add Wifi card upgrade detection
|
- Add Wifi card upgrade detection
|
||||||
|
|
||||||
## 0.0.10
|
## 0.0.10
|
||||||
|
|
||||||
- Increment binaries
|
- Increment binaries
|
||||||
- OpenCore 43f5339 (0.6.6 release)
|
- OpenCore 43f5339 (0.6.6 release)
|
||||||
- Lilu d107554 (1.5.1 release)
|
- Lilu d107554 (1.5.1 release)
|
||||||
- WhateverGreen 9e53d8a (1.4.7 release)
|
- WhateverGreen 9e53d8a (1.4.7 release)
|
||||||
- Add IDE support to MacPro3,1
|
- Add IDE support to MacPro3,1
|
||||||
- Set SecureBootModel to iMac Pro(should aid in booting older OSes with OpenCore)
|
- Set SecureBootModel to iMac Pro(should aid in booting older OSes with OpenCore)
|
||||||
- Update MacBookPro SMBIOS
|
- Update MacBookPro SMBIOS
|
||||||
|
|
||||||
## 0.0.9
|
## 0.0.9
|
||||||
|
|
||||||
- Resolve firmware install issues bricking Macs
|
- Resolve firmware install issues bricking Macs
|
||||||
|
|
||||||
## 0.0.8
|
## 0.0.8
|
||||||
|
|
||||||
- Fix USB Map
|
- Fix USB Map
|
||||||
- Add HiDPI patch
|
- Add HiDPI patch
|
||||||
|
|
||||||
## 0.0.7
|
## 0.0.7
|
||||||
|
|
||||||
- Add MacPro3,1 to HID patch
|
- Add MacPro3,1 to HID patch
|
||||||
- Fix missing SSDT-CPBG patch
|
- Fix missing SSDT-CPBG patch
|
||||||
- Fix BlacklistAppleUpdate
|
- Fix BlacklistAppleUpdate
|
||||||
- Add RestrictEvents kext
|
- Add RestrictEvents kext
|
||||||
|
|
||||||
## 0.0.6
|
## 0.0.6
|
||||||
|
|
||||||
- Fix macserial crashing
|
- Fix macserial crashing
|
||||||
|
|
||||||
## 0.0.5
|
## 0.0.5
|
||||||
|
|
||||||
- Enable hibernation support
|
- Enable hibernation support
|
||||||
- Work around USB Map failing
|
- Work around USB Map failing
|
||||||
- Add checks whether booting with OpenCore
|
- Add checks whether booting with OpenCore
|
||||||
- Fix MouSSE injection
|
- Fix MouSSE injection
|
||||||
|
|
||||||
## 0.0.4
|
## 0.0.4
|
||||||
|
|
||||||
- Add basic audio support for legacy chipsets
|
- Add basic audio support for legacy chipsets
|
||||||
- Add patch for dual GPU machines
|
- Add patch for dual GPU machines
|
||||||
|
|
||||||
## 0.0.3
|
## 0.0.3
|
||||||
|
|
||||||
- Fix Wireless patch logic
|
- Fix Wireless patch logic
|
||||||
|
|
||||||
## 0.0.2
|
## 0.0.2
|
||||||
|
|
||||||
- Expand IOHIDFamily Patch to all Nvidia chipsets
|
- Expand IOHIDFamily Patch to all Nvidia chipsets
|
||||||
- Fix Airdrop 1.0 support
|
- Fix Airdrop 1.0 support
|
||||||
- Add El Capitan era wireless cards
|
- Add El Capitan era wireless cards
|
||||||
|
|
||||||
## 0.0.1
|
## 0.0.1
|
||||||
|
|
||||||
- Initial developer preview
|
- Initial developer preview
|
||||||
|
|||||||
248
OCLP-CLI.command
248
OCLP-CLI.command
@@ -9,79 +9,60 @@ import platform
|
|||||||
import argparse
|
import argparse
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
|
|
||||||
from Resources import Build, ModelArray, PCIIDArray, Constants, SysPatch, DeviceProbe
|
from Resources import Build, ModelArray, Constants, SysPatch, device_probe, Utilities, ModelExample
|
||||||
|
|
||||||
|
|
||||||
class OpenCoreLegacyPatcher():
|
class OpenCoreLegacyPatcher:
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
|
print("Loading...")
|
||||||
|
Utilities.disable_cls()
|
||||||
self.constants = Constants.Constants()
|
self.constants = Constants.Constants()
|
||||||
self.current_model: str = None
|
self.constants.computer = device_probe.Computer.probe()
|
||||||
opencore_model: str = subprocess.run("nvram 4D1FDA02-38C7-4A6A-9CC6-4BCCA8B30102:oem-product".split(), stdout=subprocess.PIPE, stderr=subprocess.STDOUT).stdout.decode()
|
self.computer = self.constants.computer
|
||||||
if not opencore_model.startswith("nvram: Error getting variable"):
|
|
||||||
opencore_model = [line.strip().split(":oem-product ", 1)[1] for line in opencore_model.split("\n") if line.strip().startswith("4D1FDA02-38C7-4A6A-9CC6-4BCCA8B30102:")][0]
|
|
||||||
self.current_model = opencore_model
|
|
||||||
else:
|
|
||||||
self.current_model = subprocess.run("system_profiler SPHardwareDataType".split(), stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
|
|
||||||
self.current_model = [line.strip().split(": ", 1)[1] for line in self.current_model.stdout.decode().split("\n") if line.strip().startswith("Model Identifier")][0]
|
|
||||||
self.constants.detected_os = int(platform.uname().release.partition(".")[0])
|
self.constants.detected_os = int(platform.uname().release.partition(".")[0])
|
||||||
if self.current_model in ModelArray.NoAPFSsupport:
|
|
||||||
self.constants.serial_settings = "Moderate"
|
|
||||||
if self.current_model in ModelArray.LegacyGPU:
|
|
||||||
dgpu_vendor,dgpu_device,dgpu_acpi = DeviceProbe.pci_probe().gpu_probe("GFX0")
|
|
||||||
if dgpu_vendor:
|
|
||||||
if (dgpu_vendor == self.constants.pci_amd_ati and (dgpu_device in PCIIDArray.amd_ids().polaris_ids or dgpu_device in PCIIDArray.amd_ids().vega_ids or dgpu_device in PCIIDArray.amd_ids().navi_ids or dgpu_device in PCIIDArray.amd_ids().legacy_gcn_ids)) or (dgpu_vendor == self.constants.pci_nvidia and dgpu_device in PCIIDArray.nvidia_ids().kepler_ids):
|
|
||||||
self.constants.sip_status = True
|
|
||||||
self.constants.secure_status = True
|
|
||||||
else:
|
|
||||||
self.constants.sip_status = False
|
|
||||||
self.constants.secure_status = False
|
|
||||||
|
|
||||||
# Logic for when user runs custom OpenCore build and do not expose it
|
custom_cpu_model_value = Utilities.get_nvram("revcpuname", "4D1FDA02-38C7-4A6A-9CC6-4BCCA8B30102", decode=True)
|
||||||
# Note: This logic currently only applies for iMacPro1,1 users, see below threads on the culprits:
|
if custom_cpu_model_value is not None:
|
||||||
# - https://forums.macrumors.com/threads/2011-imac-graphics-card-upgrade.1596614/post-17425857
|
# TODO: Fix to not use two separate variables
|
||||||
# - https://forums.macrumors.com/threads/opencore-on-the-mac-pro.2207814/
|
self.constants.custom_cpu_model = 1
|
||||||
# PLEASE FOR THE LOVE OF GOD JUST SET ExposeSensitiveData CORRECTLY!!!
|
self.constants.custom_cpu_model_value = custom_cpu_model_value.split("%00")[0]
|
||||||
if self.current_model == "iMacPro1,1":
|
|
||||||
serial: str = subprocess.run("system_profiler SPHardwareDataType | grep Serial".split(), stdout=subprocess.PIPE, stderr=subprocess.STDOUT).stdout.decode()
|
|
||||||
serial = [line.strip().split("Number (system): ", 1)[1] for line in serial.split("\n") if line.strip().startswith("Serial")][0]
|
|
||||||
true_model = subprocess.run([str(self.constants.macserial_path), "--info", str(serial)], stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
|
|
||||||
true_model = [i.partition(" - ")[2] for i in true_model.stdout.decode().split("\n") if "Model: " in i][0]
|
|
||||||
print(f"True Model: {true_model}")
|
|
||||||
if not true_model.startswith("Unknown"):
|
|
||||||
self.current_model = true_model
|
|
||||||
|
|
||||||
custom_cpu_model_value: str = subprocess.run("nvram 4D1FDA02-38C7-4A6A-9CC6-4BCCA8B30102:revcpuname".split(), stdout=subprocess.PIPE, stderr=subprocess.STDOUT).stdout.decode()
|
if "-v" in (Utilities.get_nvram("boot-args") or ""):
|
||||||
|
self.constants.verbose_debug = True
|
||||||
if not custom_cpu_model_value.startswith("nvram: Error getting variable"):
|
|
||||||
custom_cpu_model_value = [line.strip().split(":revcpuname ", 1)[1] for line in custom_cpu_model_value.split("\n") if line.strip().startswith("4D1FDA02-38C7-4A6A-9CC6-4BCCA8B30102:")][0]
|
|
||||||
if custom_cpu_model_value.split("%00")[0] != "":
|
|
||||||
self.constants.custom_cpu_model = 1
|
|
||||||
self.constants.custom_cpu_model_value = custom_cpu_model_value.split("%00")[0]
|
|
||||||
|
|
||||||
|
# Check if running in RecoveryOS
|
||||||
|
self.constants.recovery_status = Utilities.check_recovery()
|
||||||
|
|
||||||
parser = argparse.ArgumentParser()
|
parser = argparse.ArgumentParser()
|
||||||
|
|
||||||
# Generic building args
|
# Generic building args
|
||||||
parser.add_argument('--build', help='Build OpenCore', action='store_true', required=False)
|
parser.add_argument("--build", help="Build OpenCore", action="store_true", required=False)
|
||||||
parser.add_argument('--verbose', help='Enable verbose boot', action='store_true', required=False)
|
parser.add_argument("--verbose", help="Enable verbose boot", action="store_true", required=False)
|
||||||
parser.add_argument('--debug_oc', help='Enable OpenCore DEBUG', action='store_true', required=False)
|
parser.add_argument("--debug_oc", help="Enable OpenCore DEBUG", action="store_true", required=False)
|
||||||
parser.add_argument('--debug_kext', help='Enable kext DEBUG', action='store_true', required=False)
|
parser.add_argument("--debug_kext", help="Enable kext DEBUG", action="store_true", required=False)
|
||||||
parser.add_argument('--skip_wifi', help='Skip wifi patches', action='store_true', required=False)
|
parser.add_argument("--hide_picker", help="Hide OpenCore picker", action="store_true", required=False)
|
||||||
parser.add_argument('--hide_picker', help='Hide OpenCore picker', action='store_true', required=False)
|
parser.add_argument("--disable_sip", help="Disable SIP", action="store_true", required=False)
|
||||||
parser.add_argument('--disable_sip', help='Disable SIP', action='store_true', required=False)
|
parser.add_argument("--disable_smb", help="Disable SecureBootModel", action="store_true", required=False)
|
||||||
parser.add_argument('--disable_smb', help='Disable SecureBootModel', action='store_true', required=False)
|
parser.add_argument("--vault", help="Enable OpenCore Vaulting", action="store_true", required=False)
|
||||||
parser.add_argument('--vault', help='Enable OpenCore Vaulting', action='store_true', required=False)
|
parser.add_argument("--support_all", help="Allow OpenCore on natively supported Models", action="store_true", required=False)
|
||||||
parser.add_argument('--support_all', help='Allow OpenCore on natively supported Models', action='store_true', required=False)
|
parser.add_argument("--firewire", help="Enable FireWire Booting", action="store_true", required=False)
|
||||||
parser.add_argument('--force_legacy', help='Allow acceleration on Mac Pros and Xserves', action='store_true', required=False)
|
parser.add_argument("--nvme", help="Enable NVMe Booting", action="store_true", required=False)
|
||||||
|
parser.add_argument("--wlan", help="Enable Wake on WLAN support", action="store_true", required=False)
|
||||||
|
parser.add_argument("--disable_amfi", help="Disable AMFI", action="store_true", required=False)
|
||||||
|
parser.add_argument("--moderate_smbios", help="Moderate SMBIOS Patching", action="store_true", required=False)
|
||||||
|
|
||||||
# Building args requiring value values
|
# Building args requiring value values
|
||||||
parser.add_argument('--model', action='store', help='Set custom model', required=False)
|
parser.add_argument("--model", action="store", help="Set custom model", required=False)
|
||||||
parser.add_argument('--metal_gpu', action='store', help='Set Metal GPU Vendor', required=False)
|
parser.add_argument("--disk", action="store", help="Specifies disk to install to", required=False)
|
||||||
parser.add_argument('--smbios_spoof', action='store', help='Set SMBIOS patching mode', required=False)
|
parser.add_argument("--smbios_spoof", action="store", help="Set SMBIOS patching mode", required=False)
|
||||||
|
|
||||||
# SysPatch args
|
# SysPatch args
|
||||||
parser.add_argument('--patch_sys_vol', help='Patches root volume', action='store_true', required=False)
|
parser.add_argument("--patch_sys_vol", help="Patches root volume", action="store_true", required=False)
|
||||||
parser.add_argument('--unpatch_sys_vol', help='Unpatches root volume, EXPERIMENTAL', action='store_true', required=False)
|
parser.add_argument("--unpatch_sys_vol", help="Unpatches root volume, EXPERIMENTAL", action="store_true", required=False)
|
||||||
|
parser.add_argument("--terascale_2", help="Enable TeraScale 2 Acceleration", action="store_true", required=False)
|
||||||
|
#parser.add_argument("--patch_disk", action="store", help="Specifies disk to root patch", required=False)
|
||||||
|
|
||||||
|
parser.add_argument("--validate", help="Validate", action="store_true", required=False)
|
||||||
|
|
||||||
args = parser.parse_args()
|
args = parser.parse_args()
|
||||||
|
|
||||||
@@ -94,6 +75,14 @@ class OpenCoreLegacyPatcher():
|
|||||||
else:
|
else:
|
||||||
print("- Using default payloads location")
|
print("- Using default payloads location")
|
||||||
|
|
||||||
|
if args.disk:
|
||||||
|
print(f"- Install Disk set: {args.disk}")
|
||||||
|
self.constants.disk = args.disk
|
||||||
|
if args.validate:
|
||||||
|
self.validate()
|
||||||
|
#if args.patch_disk:
|
||||||
|
# print(f"- Patch Disk set: {args.patch_disk}")
|
||||||
|
# self.constants.patch_disk = args.patch_disk
|
||||||
if args.verbose:
|
if args.verbose:
|
||||||
print("- Set verbose configuration")
|
print("- Set verbose configuration")
|
||||||
self.constants.verbose_debug = True
|
self.constants.verbose_debug = True
|
||||||
@@ -104,9 +93,6 @@ class OpenCoreLegacyPatcher():
|
|||||||
if args.debug_kext:
|
if args.debug_kext:
|
||||||
print("- Set kext DEBUG configuration")
|
print("- Set kext DEBUG configuration")
|
||||||
self.constants.kext_debug = True
|
self.constants.kext_debug = True
|
||||||
if args.skip_wifi:
|
|
||||||
print("- Set wifi skip configuration")
|
|
||||||
self.constants.wifi_build = True
|
|
||||||
if args.hide_picker:
|
if args.hide_picker:
|
||||||
print("- Set HidePicker configuration")
|
print("- Set HidePicker configuration")
|
||||||
self.constants.showpicker = False
|
self.constants.showpicker = False
|
||||||
@@ -119,19 +105,21 @@ class OpenCoreLegacyPatcher():
|
|||||||
if args.vault:
|
if args.vault:
|
||||||
print("- Set Vault configuration")
|
print("- Set Vault configuration")
|
||||||
self.constants.vault = True
|
self.constants.vault = True
|
||||||
if args.metal_gpu:
|
if args.firewire:
|
||||||
if args.metal_gpu == "Nvidia":
|
print("- Set FireWire Boot configuration")
|
||||||
print("- Set Metal GPU patches to Nvidia")
|
self.constants.firewire_boot = True
|
||||||
self.constants.metal_build = True
|
if args.nvme:
|
||||||
self.constants.imac_vendor = "Nvidia"
|
print("- Set NVMe Boot configuration")
|
||||||
elif args.metal_gpu == "AMD":
|
self.constants.nvme_boot = True
|
||||||
print("- Set Metal GPU patches to AMD")
|
if args.disable_amfi:
|
||||||
self.constants.metal_build = True
|
print("- Set Disable AMFI configuration")
|
||||||
self.constants.imac_vendor = "AMD"
|
self.constants.disable_amfi = True
|
||||||
else:
|
if args.wlan:
|
||||||
print(f"- Unknown GPU arg passed: {args.metal_gpu}")
|
print("- Set Wake on WLAN configuration")
|
||||||
self.constants.metal_build = False
|
self.constants.enable_wake_on_wlan = True
|
||||||
self.constants.imac_vendor = "None"
|
if args.moderate_smbios:
|
||||||
|
print("- Set Moderate SMBIOS Patching configuration")
|
||||||
|
self.constants.serial_settings = "Moderate"
|
||||||
if args.smbios_spoof:
|
if args.smbios_spoof:
|
||||||
if args.smbios_spoof == "Minimal":
|
if args.smbios_spoof == "Minimal":
|
||||||
self.constants.serial_settings = "Minimal"
|
self.constants.serial_settings = "Minimal"
|
||||||
@@ -147,44 +135,128 @@ class OpenCoreLegacyPatcher():
|
|||||||
self.constants.allow_oc_everywhere = True
|
self.constants.allow_oc_everywhere = True
|
||||||
self.constants.serial_settings = "None"
|
self.constants.serial_settings = "None"
|
||||||
|
|
||||||
if args.force_legacy:
|
|
||||||
print("- Allowing legacy acceleration patches on newer models")
|
|
||||||
self.constants.assume_legacy = True
|
|
||||||
|
|
||||||
if args.build:
|
if args.build:
|
||||||
if args.model:
|
if args.model:
|
||||||
print(f"- Using custom model: {args.model}")
|
print(f"- Using custom model: {args.model}")
|
||||||
self.constants.custom_model = args.model
|
self.constants.custom_model = args.model
|
||||||
|
self.set_defaults(self.constants.custom_model, False)
|
||||||
self.build_opencore()
|
self.build_opencore()
|
||||||
|
elif self.computer.real_model not in ModelArray.SupportedSMBIOS and self.constants.allow_oc_everywhere is False:
|
||||||
|
print(
|
||||||
|
"""Your model is not supported by this patcher for running unsupported OSes!"
|
||||||
|
|
||||||
|
If you plan to create the USB for another machine, please select the "Change Model" option in the menu."""
|
||||||
|
)
|
||||||
|
sys.exit(1)
|
||||||
else:
|
else:
|
||||||
print(f"- Using detected model: {self.current_model}")
|
print(f"- Using detected model: {self.constants.computer.real_model}")
|
||||||
|
self.set_defaults(self.constants.custom_model, True)
|
||||||
self.build_opencore()
|
self.build_opencore()
|
||||||
if args.patch_sys_vol:
|
if args.patch_sys_vol:
|
||||||
|
if args.terascale_2:
|
||||||
|
print("- Set TeraScale 2 Accel configuration")
|
||||||
|
self.constants.terascale_2_patch = True
|
||||||
print("- Set System Volume patching")
|
print("- Set System Volume patching")
|
||||||
self.patch_vol()
|
self.patch_vol()
|
||||||
elif args.unpatch_sys_vol:
|
elif args.unpatch_sys_vol:
|
||||||
print("- Set System Volume unpatching")
|
print("- Set System Volume unpatching")
|
||||||
self.unpatch_vol()
|
self.unpatch_vol()
|
||||||
|
|
||||||
def hexswap(self, input_hex: str):
|
def set_defaults(self, model, host_is_target):
|
||||||
hex_pairs = [input_hex[i:i + 2] for i in range(0, len(input_hex), 2)]
|
if model in ModelArray.LegacyGPU:
|
||||||
hex_rev = hex_pairs[::-1]
|
if (
|
||||||
hex_str = "".join(["".join(x) for x in hex_rev])
|
host_is_target
|
||||||
return hex_str.upper()
|
and self.computer.dgpu
|
||||||
|
and self.computer.dgpu.arch
|
||||||
|
in [
|
||||||
|
device_probe.AMD.Archs.Legacy_GCN,
|
||||||
|
device_probe.AMD.Archs.Polaris,
|
||||||
|
device_probe.AMD.Archs.Vega,
|
||||||
|
device_probe.AMD.Archs.Navi,
|
||||||
|
device_probe.NVIDIA.Archs.Kepler,
|
||||||
|
]
|
||||||
|
):
|
||||||
|
print("- Detected Metal GPU, overriding default configuration")
|
||||||
|
# Building on device and we have a native, supported GPU
|
||||||
|
self.constants.sip_status = True
|
||||||
|
# self.constants.secure_status = True # Monterey
|
||||||
|
self.constants.disable_amfi = False
|
||||||
|
elif host_is_target:
|
||||||
|
self.constants.sip_status = False # Unsigned kexts
|
||||||
|
self.constants.secure_status = False # Root volume modified
|
||||||
|
self.constants.disable_amfi = True # Unsigned binaries
|
||||||
|
if model in ModelArray.ModernGPU:
|
||||||
|
if host_is_target and model in ["iMac13,1", "iMac13,3"] and self.computer.dgpu:
|
||||||
|
# Some models have a supported dGPU, others don't
|
||||||
|
print("- Detected Metal dGPU, overriding default configuration")
|
||||||
|
self.constants.sip_status = True
|
||||||
|
elif host_is_target:
|
||||||
|
self.constants.sip_status = False # Unsigned kexts
|
||||||
|
self.constants.secure_status = False # Modified root volume
|
||||||
|
# self.constants.disable_amfi = False # Signed bundles, Don't need to explicitly set currently
|
||||||
|
if model == "MacBook8,1" and host_is_target:
|
||||||
|
# MacBook8,1 has an odd bug where it cannot install Monterey with Minimal spoofing
|
||||||
|
self.constants.serial_settings == "Moderate"
|
||||||
|
|
||||||
|
self.constants.latebloom_delay, self.constants.latebloom_range, self.constants.latebloom_debug = Utilities.latebloom_detection(model)
|
||||||
|
|
||||||
def patch_vol(self):
|
def patch_vol(self):
|
||||||
SysPatch.PatchSysVolume(self.constants.custom_model or self.current_model, self.constants).start_patch()
|
SysPatch.PatchSysVolume(self.constants.custom_model or self.constants.computer.real_model, self.constants).start_patch()
|
||||||
|
|
||||||
def unpatch_vol(self):
|
def unpatch_vol(self):
|
||||||
SysPatch.PatchSysVolume(self.constants.custom_model or self.current_model, self.constants).start_unpatch()
|
SysPatch.PatchSysVolume(self.constants.custom_model or self.constants.computer.real_model, self.constants).start_unpatch()
|
||||||
|
|
||||||
def build_opencore(self):
|
def build_opencore(self):
|
||||||
Build.BuildOpenCore(self.constants.custom_model or self.current_model, self.constants).build_opencore()
|
Build.BuildOpenCore(self.constants.custom_model or self.constants.computer.real_model, self.constants).build_opencore()
|
||||||
|
|
||||||
def install_opencore(self):
|
def install_opencore(self):
|
||||||
Build.BuildOpenCore(self.constants.custom_model or self.current_model, self.constants).copy_efi()
|
Build.BuildOpenCore(self.constants.custom_model or self.constants.computer.real_model, self.constants).copy_efi()
|
||||||
|
|
||||||
|
def validate(self):
|
||||||
|
# Runs through ocvalidate to check for errors
|
||||||
|
|
||||||
|
valid_dumps = [
|
||||||
|
ModelExample.MacBookPro.MacBookPro92_Stock,
|
||||||
|
#ModelExample.MacBookPro.MacBookPro171_Stock,
|
||||||
|
#ModelExample.Macmini.Macmini91_Stock,
|
||||||
|
ModelExample.iMac.iMac81_Stock,
|
||||||
|
ModelExample.iMac.iMac112_Stock,
|
||||||
|
ModelExample.iMac.iMac122_Upgraded,
|
||||||
|
ModelExample.MacPro.MacPro31_Stock,
|
||||||
|
ModelExample.MacPro.MacPro31_Upgrade,
|
||||||
|
ModelExample.MacPro.MacPro31_Modern_AMD,
|
||||||
|
ModelExample.MacPro.MacPro31_Modern_Kepler,
|
||||||
|
]
|
||||||
|
self.constants.validate = True
|
||||||
|
|
||||||
|
for model in ModelArray.SupportedSMBIOS:
|
||||||
|
print(f"Validating predefined model: {model}")
|
||||||
|
self.constants.custom_model = model
|
||||||
|
self.build_opencore()
|
||||||
|
result = subprocess.run([self.constants.ocvalidate_path, f"{self.constants.opencore_release_folder}/EFI/OC/config.plist"], stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
|
||||||
|
if result.returncode != 0:
|
||||||
|
print("Error on build!")
|
||||||
|
print(result.stdout.decode())
|
||||||
|
raise Exception(f"Validation failed for predefined model: {model}")
|
||||||
|
else:
|
||||||
|
print(f"Validation succeeded for predefined model: {model}")
|
||||||
|
|
||||||
|
for model in valid_dumps:
|
||||||
|
self.constants.computer = model
|
||||||
|
self.computer = self.constants.computer
|
||||||
|
self.constants.custom_model = ""
|
||||||
|
print(f"Validating dumped model: {self.computer.real_model}")
|
||||||
|
self.build_opencore()
|
||||||
|
result = subprocess.run([self.constants.ocvalidate_path, f"{self.constants.opencore_release_folder}/EFI/OC/config.plist"], stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
|
||||||
|
if result.returncode != 0:
|
||||||
|
print("Error on build!")
|
||||||
|
print(result.stdout.decode())
|
||||||
|
raise Exception(f"Validation failed for predefined model: {self.computer.real_model}")
|
||||||
|
else:
|
||||||
|
print(f"Validation succeeded for predefined model: {self.computer.real_model}")
|
||||||
|
|
||||||
|
|
||||||
OpenCoreLegacyPatcher()
|
OpenCoreLegacyPatcher()
|
||||||
|
|
||||||
# Example arg for OCLP command line
|
# Example arg for OCLP command line
|
||||||
# ./OCLP-CLI --build --verbose --debug_oc --debug_kext --model iMac11,2
|
# ./OCLP-CLI --build --verbose --debug_oc --debug_kext --model iMac11,2
|
||||||
|
|||||||
@@ -6,8 +6,9 @@ block_cipher = None
|
|||||||
|
|
||||||
|
|
||||||
a = Analysis(['OCLP-CLI.command'],
|
a = Analysis(['OCLP-CLI.command'],
|
||||||
|
pathex=['Resources'],
|
||||||
binaries=[],
|
binaries=[],
|
||||||
datas=[('payloads', 'payloads'), ('Resources', 'Resources')],
|
datas=[('payloads', 'payloads')],
|
||||||
hiddenimports=[],
|
hiddenimports=[],
|
||||||
hookspath=[],
|
hookspath=[],
|
||||||
runtime_hooks=[],
|
runtime_hooks=[],
|
||||||
@@ -23,7 +24,7 @@ exe = EXE(pyz,
|
|||||||
a.binaries,
|
a.binaries,
|
||||||
a.zipfiles,
|
a.zipfiles,
|
||||||
a.datas,
|
a.datas,
|
||||||
[],
|
[('u', None, 'OPTION')],
|
||||||
name='OCLP-CLI',
|
name='OCLP-CLI',
|
||||||
debug=False,
|
debug=False,
|
||||||
bootloader_ignore_signals=False,
|
bootloader_ignore_signals=False,
|
||||||
|
|||||||
@@ -3,121 +3,140 @@
|
|||||||
|
|
||||||
from __future__ import print_function
|
from __future__ import print_function
|
||||||
|
|
||||||
import plistlib
|
import platform
|
||||||
import subprocess
|
import subprocess
|
||||||
import sys
|
import sys
|
||||||
import platform
|
|
||||||
|
|
||||||
from Resources import Build, ModelArray, PCIIDArray, Constants, SysPatch, Utilities, CliMenu, DeviceProbe
|
from Resources import Build, CliMenu, Constants, ModelArray, SysPatch, Utilities, device_probe
|
||||||
|
|
||||||
|
|
||||||
class OpenCoreLegacyPatcher():
|
class OpenCoreLegacyPatcher:
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
|
print("Loading...")
|
||||||
self.constants = Constants.Constants()
|
self.constants = Constants.Constants()
|
||||||
self.current_model: str = None
|
self.constants.computer = device_probe.Computer.probe()
|
||||||
opencore_model: str = subprocess.run("nvram 4D1FDA02-38C7-4A6A-9CC6-4BCCA8B30102:oem-product".split(), stdout=subprocess.PIPE, stderr=subprocess.STDOUT).stdout.decode()
|
self.computer = self.constants.computer
|
||||||
if not opencore_model.startswith("nvram: Error getting variable"):
|
|
||||||
opencore_model = [line.strip().split(":oem-product ", 1)[1] for line in opencore_model.split("\n") if line.strip().startswith("4D1FDA02-38C7-4A6A-9CC6-4BCCA8B30102:")][0]
|
|
||||||
self.current_model = opencore_model
|
|
||||||
else:
|
|
||||||
self.current_model = plistlib.loads(subprocess.run("system_profiler -detailLevel mini -xml SPHardwareDataType".split(), stdout=subprocess.PIPE, stderr=subprocess.STDOUT).stdout.strip())[0]["_items"][0]["machine_model"]
|
|
||||||
self.constants.detected_os = int(platform.uname().release.partition(".")[0])
|
self.constants.detected_os = int(platform.uname().release.partition(".")[0])
|
||||||
if self.current_model in ModelArray.NoAPFSsupport:
|
self.constants.detected_os_minor = int(platform.uname().release.partition(".")[2].partition(".")[0])
|
||||||
self.constants.serial_settings = "Moderate"
|
self.set_defaults(self.computer.real_model, True)
|
||||||
if self.current_model in ModelArray.LegacyGPU:
|
|
||||||
dgpu_vendor,dgpu_device,dgpu_acpi = DeviceProbe.pci_probe().gpu_probe("GFX0")
|
|
||||||
|
|
||||||
if (dgpu_vendor == self.constants.pci_amd_ati and (dgpu_device in PCIIDArray.amd_ids().polaris_ids or dgpu_device in PCIIDArray.amd_ids().vega_ids or dgpu_device in PCIIDArray.amd_ids().navi_ids or dgpu_device in PCIIDArray.amd_ids().legacy_gcn_ids)) or (dgpu_vendor == self.constants.pci_nvidia and dgpu_device in PCIIDArray.nvidia_ids().kepler_ids):
|
def set_defaults(self, model, host_is_target):
|
||||||
|
# Defaults
|
||||||
|
self.constants.sip_status = True
|
||||||
|
self.constants.secure_status = False # Default false for Monterey
|
||||||
|
self.constants.disable_amfi = False
|
||||||
|
|
||||||
|
if model in ModelArray.LegacyGPU:
|
||||||
|
if (
|
||||||
|
host_is_target
|
||||||
|
and self.computer.dgpu
|
||||||
|
and self.computer.dgpu.arch
|
||||||
|
in [
|
||||||
|
device_probe.AMD.Archs.Legacy_GCN,
|
||||||
|
device_probe.AMD.Archs.Polaris,
|
||||||
|
device_probe.AMD.Archs.Vega,
|
||||||
|
device_probe.AMD.Archs.Navi,
|
||||||
|
device_probe.NVIDIA.Archs.Kepler,
|
||||||
|
]
|
||||||
|
):
|
||||||
|
# Building on device and we have a native, supported GPU
|
||||||
self.constants.sip_status = True
|
self.constants.sip_status = True
|
||||||
self.constants.secure_status = True
|
# self.constants.secure_status = True # Monterey
|
||||||
|
self.constants.disable_amfi = False
|
||||||
else:
|
else:
|
||||||
self.constants.sip_status = False
|
self.constants.sip_status = False # Unsigned kexts
|
||||||
self.constants.secure_status = False
|
self.constants.secure_status = False # Root volume modified
|
||||||
|
self.constants.disable_amfi = True # Unsigned binaries
|
||||||
|
if model in ModelArray.ModernGPU:
|
||||||
|
if host_is_target and model in ["iMac13,1", "iMac13,3"] and self.computer.dgpu:
|
||||||
|
# Some models have a supported dGPU, others don't
|
||||||
|
self.constants.sip_status = True
|
||||||
|
# self.constants.secure_status = True # Monterey
|
||||||
|
# self.constants.disable_amfi = False # Signed bundles, Don't need to explicitly set currently
|
||||||
|
else:
|
||||||
|
self.constants.sip_status = False # Unsigned kexts
|
||||||
|
self.constants.secure_status = False # Modified root volume
|
||||||
|
# self.constants.disable_amfi = False # Signed bundles, Don't need to explicitly set currently
|
||||||
|
if model == "MacBook8,1":
|
||||||
|
# MacBook8,1 has an odd bug where it cannot install Monterey with Minimal spoofing
|
||||||
|
self.constants.serial_settings = "Moderate"
|
||||||
|
|
||||||
# Logic for when user runs custom OpenCore build and do not expose it
|
custom_cpu_model_value = Utilities.get_nvram("revcpuname", "4D1FDA02-38C7-4A6A-9CC6-4BCCA8B30102", decode=True)
|
||||||
# Note: This logic currently only applies for iMacPro1,1 users, see below threads on the culprits:
|
if custom_cpu_model_value is not None:
|
||||||
# - https://forums.macrumors.com/threads/2011-imac-graphics-card-upgrade.1596614/post-17425857
|
# TODO: Fix to not use two separate variables
|
||||||
# - https://forums.macrumors.com/threads/opencore-on-the-mac-pro.2207814/
|
self.constants.custom_cpu_model = 1
|
||||||
# PLEASE FOR THE LOVE OF GOD JUST SET ExposeSensitiveData CORRECTLY!!!
|
self.constants.custom_cpu_model_value = custom_cpu_model_value.split("%00")[0]
|
||||||
if self.current_model == "iMacPro1,1":
|
|
||||||
serial: str = subprocess.run("system_profiler SPHardwareDataType | grep Serial".split(), stdout=subprocess.PIPE, stderr=subprocess.STDOUT).stdout.decode()
|
|
||||||
serial = [line.strip().split("Number (system): ", 1)[1] for line in serial.split("\n") if line.strip().startswith("Serial")][0]
|
|
||||||
true_model = subprocess.run([str(self.constants.macserial_path), "--info", str(serial)], stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
|
|
||||||
true_model = [i.partition(" - ")[2] for i in true_model.stdout.decode().split("\n") if "Model: " in i][0]
|
|
||||||
print(f"True Model: {true_model}")
|
|
||||||
if not true_model.startswith("Unknown"):
|
|
||||||
self.current_model = true_model
|
|
||||||
|
|
||||||
custom_cpu_model_value: str = subprocess.run("nvram 4D1FDA02-38C7-4A6A-9CC6-4BCCA8B30102:revcpuname".split(), stdout=subprocess.PIPE, stderr=subprocess.STDOUT).stdout.decode()
|
if "-v" in (Utilities.get_nvram("boot-args") or ""):
|
||||||
|
self.constants.verbose_debug = True
|
||||||
|
|
||||||
if not custom_cpu_model_value.startswith("nvram: Error getting variable"):
|
if Utilities.amfi_status() is False:
|
||||||
custom_cpu_model_value = [line.strip().split(":revcpuname ", 1)[1] for line in custom_cpu_model_value.split("\n") if line.strip().startswith("4D1FDA02-38C7-4A6A-9CC6-4BCCA8B30102:")][0]
|
self.constants.disable_amfi = True
|
||||||
if custom_cpu_model_value.split("%00")[0] != "":
|
|
||||||
self.constants.custom_cpu_model = 1
|
self.constants.latebloom_delay, self.constants.latebloom_range, self.constants.latebloom_debug = Utilities.latebloom_detection(model)
|
||||||
self.constants.custom_cpu_model_value = custom_cpu_model_value.split("%00")[0]
|
|
||||||
|
|
||||||
# Check if running in RecoveryOS
|
# Check if running in RecoveryOS
|
||||||
self.check_recovery()
|
self.constants.recovery_status = Utilities.check_recovery()
|
||||||
|
|
||||||
def check_recovery(self):
|
|
||||||
root_partition_info = plistlib.loads(subprocess.run("diskutil info -plist /".split(), stdout=subprocess.PIPE).stdout.decode().strip().encode())
|
|
||||||
if root_partition_info["VolumeName"] == "macOS Base System" and \
|
|
||||||
root_partition_info["FilesystemType"] == "apfs" and \
|
|
||||||
root_partition_info["BusProtocol"] == "Disk Image":
|
|
||||||
self.constants.recovery_status = True
|
|
||||||
else:
|
|
||||||
self.constants.recovery_status = False
|
|
||||||
|
|
||||||
def hexswap(self, input_hex: str):
|
|
||||||
hex_pairs = [input_hex[i:i + 2] for i in range(0, len(input_hex), 2)]
|
|
||||||
hex_rev = hex_pairs[::-1]
|
|
||||||
hex_str = "".join(["".join(x) for x in hex_rev])
|
|
||||||
return hex_str.upper()
|
|
||||||
|
|
||||||
def build_opencore(self):
|
def build_opencore(self):
|
||||||
Build.BuildOpenCore(self.constants.custom_model or self.current_model, self.constants).build_opencore()
|
Build.BuildOpenCore(self.constants.custom_model or self.constants.computer.real_model, self.constants).build_opencore()
|
||||||
|
|
||||||
def install_opencore(self):
|
def install_opencore(self):
|
||||||
Build.BuildOpenCore(self.constants.custom_model or self.current_model, self.constants).copy_efi()
|
Build.BuildOpenCore(self.constants.custom_model or self.constants.computer.real_model, self.constants).copy_efi()
|
||||||
|
|
||||||
def change_model(self):
|
def change_model(self):
|
||||||
Utilities.cls()
|
Utilities.cls()
|
||||||
Utilities.header(["Select Different Model"])
|
Utilities.header(["Select Different Model"])
|
||||||
print("""
|
print(
|
||||||
|
"""
|
||||||
Tip: Run the following command on the target machine to find the model identifier:
|
Tip: Run the following command on the target machine to find the model identifier:
|
||||||
|
|
||||||
system_profiler SPHardwareDataType | grep 'Model Identifier'
|
system_profiler SPHardwareDataType | grep 'Model Identifier'
|
||||||
""")
|
"""
|
||||||
|
)
|
||||||
self.constants.custom_model = input("Please enter the model identifier of the target machine: ").strip()
|
self.constants.custom_model = input("Please enter the model identifier of the target machine: ").strip()
|
||||||
if self.constants.custom_model not in ModelArray.SupportedSMBIOS:
|
if self.constants.custom_model not in ModelArray.SupportedSMBIOS:
|
||||||
print(f"""
|
print(
|
||||||
{self.constants.custom_model} is not a valid SMBIOS Identifier for macOS {self.constants.os_support}!
|
f"""
|
||||||
""")
|
{self.constants.custom_model} is not a valid SMBIOS Identifier for macOS {self.constants.os_support}!
|
||||||
|
"""
|
||||||
|
)
|
||||||
print_models = input(f"Print list of valid options for macOS {self.constants.os_support}? (y/n)")
|
print_models = input(f"Print list of valid options for macOS {self.constants.os_support}? (y/n)")
|
||||||
if print_models in {"y", "Y", "yes", "Yes"}:
|
if print_models.lower() in {"y", "yes"}:
|
||||||
print("\n".join(ModelArray.SupportedSMBIOS))
|
print("\n".join(ModelArray.SupportedSMBIOS))
|
||||||
input("Press any key to continue...")
|
input("\nPress [ENTER] to continue")
|
||||||
if self.constants.custom_model in ModelArray.NoAPFSsupport:
|
else:
|
||||||
self.constants.serial_settings = "Moderate"
|
self.set_defaults(self.constants.custom_model, False)
|
||||||
|
|
||||||
def patcher_settings(self):
|
def patcher_settings(self):
|
||||||
response = None
|
response = None
|
||||||
while not (response and response == -1):
|
while not (response and response == -1):
|
||||||
title = [
|
title = ["Adjust Patcher Settings"]
|
||||||
"Adjust Patcher Settings"
|
|
||||||
]
|
|
||||||
menu = Utilities.TUIMenu(title, "Please select an option: ", auto_number=True, top_level=True)
|
menu = Utilities.TUIMenu(title, "Please select an option: ", auto_number=True, top_level=True)
|
||||||
options = [
|
options = [
|
||||||
# TODO: Enable setting OS target when more OSes become supported by the patcher
|
[f"Enable Verbose Mode:\t\tCurrently {self.constants.verbose_debug}", CliMenu.MenuOptions(self.constants.custom_model or self.computer.real_model, self.constants).change_verbose],
|
||||||
#[f"Change OS version:\t\t\tCurrently macOS {self.constants.os_support}", self.change_os],
|
[f"Enable OpenCore DEBUG:\t\tCurrently {self.constants.opencore_debug}", CliMenu.MenuOptions(self.constants.custom_model or self.computer.real_model, self.constants).change_oc],
|
||||||
[f"Enable Verbose Mode:\t\tCurrently {self.constants.verbose_debug}", CliMenu.MenuOptions(self.constants.custom_model or self.current_model, self.constants).change_verbose],
|
[f"Enable Kext DEBUG:\t\t\tCurrently {self.constants.kext_debug}", CliMenu.MenuOptions(self.constants.custom_model or self.computer.real_model, self.constants).change_kext],
|
||||||
[f"Enable OpenCore DEBUG:\t\tCurrently {self.constants.opencore_debug}", CliMenu.MenuOptions(self.constants.custom_model or self.current_model, self.constants).change_oc],
|
[f"Set ShowPicker Mode:\t\tCurrently {self.constants.showpicker}", CliMenu.MenuOptions(self.constants.custom_model or self.computer.real_model, self.constants).change_showpicker],
|
||||||
[f"Enable Kext DEBUG:\t\t\tCurrently {self.constants.kext_debug}", CliMenu.MenuOptions(self.constants.custom_model or self.current_model, self.constants).change_kext],
|
[f"Set Vault Mode:\t\t\tCurrently {self.constants.vault}", CliMenu.MenuOptions(self.constants.custom_model or self.computer.real_model, self.constants).change_vault],
|
||||||
[f"Set ShowPicker Mode:\t\tCurrently {self.constants.showpicker}", CliMenu.MenuOptions(self.constants.custom_model or self.current_model, self.constants).change_showpicker],
|
[f"Allow FireWire Boot:\t\tCurrently {self.constants.firewire_boot}", CliMenu.MenuOptions(self.constants.custom_model or self.computer.real_model, self.constants).allow_firewire],
|
||||||
[f"Set Vault Mode:\t\t\tCurrently {self.constants.vault}", CliMenu.MenuOptions(self.constants.custom_model or self.current_model, self.constants).change_vault],
|
[f"Allow NVMe Boot:\t\t\tCurrently {self.constants.nvme_boot}", CliMenu.MenuOptions(self.constants.custom_model or self.computer.real_model, self.constants).allow_nvme],
|
||||||
[f"Set SIP and SecureBootModel:\tSIP: {self.constants.sip_status} SBM: {self.constants.secure_status}", CliMenu.MenuOptions(self.constants.custom_model or self.current_model, self.constants).change_sip],
|
[f"Allow Wake on WLAN:\t\t\tCurrently {self.constants.enable_wake_on_wlan}", CliMenu.MenuOptions(self.constants.custom_model or self.computer.real_model, self.constants).allow_wowl],
|
||||||
[f"Allow OpenCore on native Models:\tCurrently {self.constants.allow_oc_everywhere}", CliMenu.MenuOptions(self.constants.custom_model or self.current_model, self.constants).allow_native_models],
|
[f"Allow Ivy iMac iGPU:\t\tCurrently {self.constants.allow_ivy_igpu}", CliMenu.MenuOptions(self.constants.custom_model or self.computer.real_model, self.constants).allow_ivy],
|
||||||
[f"Advanced Patch Settings, for developers only", self.advanced_patcher_settings],
|
[f"Disable AMFI:\t\t\tCurrently {self.constants.disable_amfi}", CliMenu.MenuOptions(self.constants.custom_model or self.computer.real_model, self.constants).set_amfi],
|
||||||
|
[
|
||||||
|
f"Set SIP and SecureBootModel:\tSIP: {self.constants.sip_status} SBM: {self.constants.secure_status}",
|
||||||
|
CliMenu.MenuOptions(self.constants.custom_model or self.computer.real_model, self.constants).change_sip,
|
||||||
|
],
|
||||||
|
[
|
||||||
|
f"Allow OpenCore on native Models:\tCurrently {self.constants.allow_oc_everywhere}",
|
||||||
|
CliMenu.MenuOptions(self.constants.custom_model or self.computer.real_model, self.constants).allow_native_models,
|
||||||
|
],
|
||||||
|
[
|
||||||
|
f"Latebloom settings:\t\tDelay {self.constants.latebloom_delay}, Range {self.constants.latebloom_range}, Debug {self.constants.latebloom_debug}",
|
||||||
|
CliMenu.MenuOptions(self.constants.custom_model or self.computer.real_model, self.constants).latebloom_settings,
|
||||||
|
],
|
||||||
|
["Advanced Patch Settings, for developers only", self.advanced_patcher_settings],
|
||||||
]
|
]
|
||||||
|
|
||||||
for option in options:
|
for option in options:
|
||||||
@@ -128,21 +147,20 @@ system_profiler SPHardwareDataType | grep 'Model Identifier'
|
|||||||
def advanced_patcher_settings(self):
|
def advanced_patcher_settings(self):
|
||||||
response = None
|
response = None
|
||||||
while not (response and response == -1):
|
while not (response and response == -1):
|
||||||
title = [
|
title = ["Adjust Advanced Patcher Settings, for developers ONLY"]
|
||||||
"Adjust Advanced Patcher Settings, for developers ONLY"
|
|
||||||
]
|
|
||||||
menu = Utilities.TUIMenu(title, "Please select an option: ", auto_number=True, top_level=True)
|
menu = Utilities.TUIMenu(title, "Please select an option: ", auto_number=True, top_level=True)
|
||||||
options = [
|
options = [
|
||||||
[f"Assume Metal GPU Always:\t\tCurrently {self.constants.imac_vendor}", CliMenu.MenuOptions(self.constants.custom_model or self.current_model, self.constants).change_metal],
|
[f"Assume Metal GPU Always:\t\tCurrently {self.constants.imac_vendor}", CliMenu.MenuOptions(self.constants.custom_model or self.computer.real_model, self.constants).change_metal],
|
||||||
[f"Assume Upgraded Wifi Always:\tCurrently {self.constants.wifi_build}", CliMenu.MenuOptions(self.constants.custom_model or self.current_model, self.constants).change_wifi],
|
[f"Set SMBIOS Mode:\t\t\tCurrently {self.constants.serial_settings}", CliMenu.MenuOptions(self.constants.custom_model or self.computer.real_model, self.constants).change_serial],
|
||||||
[f"Set SMBIOS Mode:\t\t\tCurrently {self.constants.serial_settings}", CliMenu.MenuOptions(self.constants.custom_model or self.current_model, self.constants).change_serial],
|
[f"DRM Preferences:\t\t\tCurrently {self.constants.drm_support}", CliMenu.MenuOptions(self.constants.custom_model or self.computer.real_model, self.constants).drm_setting],
|
||||||
[f"DRM Preferences:\t\t\tCurrently {self.constants.drm_support}", CliMenu.MenuOptions(self.constants.custom_model or self.current_model, self.constants).drm_setting],
|
[f"Set Generic Bootstrap:\t\tCurrently {self.constants.boot_efi}", CliMenu.MenuOptions(self.constants.custom_model or self.computer.real_model, self.constants).bootstrap_setting],
|
||||||
[f"Set Generic Bootstrap:\t\tCurrently {self.constants.boot_efi}", CliMenu.MenuOptions(self.constants.custom_model or self.current_model, self.constants).bootstrap_setting],
|
[
|
||||||
[f"Assume Legacy GPU:\t\t\tCurrently {self.constants.assume_legacy}", CliMenu.MenuOptions(self.constants.custom_model or self.current_model, self.constants).force_accel_setting],
|
f"Disable CPU Friend:\t\t\tCurrently {self.constants.disallow_cpufriend}",
|
||||||
#[f"Download more RAM:\t\t\tCurrently {self.constants.download_ram}", CliMenu.MenuOptions(self.constants.custom_model or self.current_model, self.constants).download_more_ram_dot_com],
|
CliMenu.MenuOptions(self.constants.custom_model or self.computer.real_model, self.constants).disable_cpufriend,
|
||||||
[f"Disable CPU Friend:\t\t\tCurrently {self.constants.disallow_cpufriend}", CliMenu.MenuOptions(self.constants.custom_model or self.current_model, self.constants).disable_cpufriend],
|
],
|
||||||
[f"Set Custom name {self.constants.custom_cpu_model_value}", CliMenu.MenuOptions(self.constants.custom_model or self.current_model, self.constants).custom_cpu],
|
[f"Override SMBIOS Spoof:\t\tCurrently {self.constants.override_smbios}", CliMenu.MenuOptions(self.constants.custom_model or self.computer.real_model, self.constants).set_smbios],
|
||||||
[f"Set SeedUtil Status", CliMenu.MenuOptions(self.constants.custom_model or self.current_model, self.constants).set_seedutil],
|
[f"Set Custom name {self.constants.custom_cpu_model_value}", CliMenu.MenuOptions(self.constants.custom_model or self.computer.real_model, self.constants).custom_cpu],
|
||||||
|
["Set SeedUtil Status", CliMenu.MenuOptions(self.constants.custom_model or self.computer.real_model, self.constants).set_seedutil],
|
||||||
]
|
]
|
||||||
|
|
||||||
for option in options:
|
for option in options:
|
||||||
@@ -151,8 +169,11 @@ system_profiler SPHardwareDataType | grep 'Model Identifier'
|
|||||||
response = menu.start()
|
response = menu.start()
|
||||||
|
|
||||||
def credits(self):
|
def credits(self):
|
||||||
Utilities.TUIOnlyPrint(["Credits"], "Press [Enter] to go back.\n",
|
Utilities.TUIOnlyPrint(
|
||||||
["""Many thanks to the following:
|
["Credits"],
|
||||||
|
"Press [Enter] to go back.\n",
|
||||||
|
[
|
||||||
|
"""Many thanks to the following:
|
||||||
|
|
||||||
- Acidanthera:\tOpenCore, kexts and other tools
|
- Acidanthera:\tOpenCore, kexts and other tools
|
||||||
- Khronokernel:\tWriting and maintaining this patcher
|
- Khronokernel:\tWriting and maintaining this patcher
|
||||||
@@ -160,17 +181,19 @@ system_profiler SPHardwareDataType | grep 'Model Identifier'
|
|||||||
- ASentientBot:\tLegacy Acceleration Patches
|
- ASentientBot:\tLegacy Acceleration Patches
|
||||||
- Ausdauersportler:\tLinking fixes for SNBGraphicsFB and AMDX3000
|
- Ausdauersportler:\tLinking fixes for SNBGraphicsFB and AMDX3000
|
||||||
- Syncretic:\t\tAAAMouSSE and telemetrap
|
- Syncretic:\t\tAAAMouSSE and telemetrap
|
||||||
- cdf:\t\tNightShiftEnabler and Innie"""]).start()
|
- cdf:\t\tNightShiftEnabler and Innie"""
|
||||||
|
],
|
||||||
|
).start()
|
||||||
|
|
||||||
def PatchVolume(self):
|
def PatchVolume(self):
|
||||||
Utilities.cls()
|
Utilities.cls()
|
||||||
Utilities.header(["Patching System Volume"])
|
Utilities.header(["Patching System Volume"])
|
||||||
print("""Patches Root volume to fix misc issues such as:
|
big_sur = """Patches Root volume to fix misc issues such as:
|
||||||
|
|
||||||
- Graphics Acceleration for non-Metal GPUs
|
- Graphics Acceleration for non-Metal GPUs
|
||||||
- Nvidia: Tesla - Fermi (8000-500 series)
|
- Nvidia: Tesla - Fermi (8000-500 series)
|
||||||
- Intel: Ironlake - Sandy Bridge
|
- Intel: Ironlake - Sandy Bridge
|
||||||
- AMD: TeraScale 1 (2000-4000 series)
|
- AMD: TeraScale 1 and 2 (2000-6000 series)
|
||||||
- Audio support for iMac7,1 and iMac8,1
|
- Audio support for iMac7,1 and iMac8,1
|
||||||
|
|
||||||
WARNING: Root Volume Patching is still in active development, please
|
WARNING: Root Volume Patching is still in active development, please
|
||||||
@@ -183,54 +206,106 @@ Supported Options:
|
|||||||
1. Patch System Volume
|
1. Patch System Volume
|
||||||
2. Unpatch System Volume (Experimental)
|
2. Unpatch System Volume (Experimental)
|
||||||
B. Exit
|
B. Exit
|
||||||
""")
|
"""
|
||||||
|
monterey = """Patches Root volume to fix misc issues such as:
|
||||||
|
|
||||||
|
- Graphics Acceleration
|
||||||
|
- Intel: Ivy Bridge (4000 series iGPUs)
|
||||||
|
- Basic Framebuffer and brightness Control (No acceleration)
|
||||||
|
- Nvidia: Tesla - Fermi (8000-500 series)
|
||||||
|
- Intel: Ironlake - Sandy Bridge
|
||||||
|
- AMD: TeraScale 1 and 2 (2000-6000 series)
|
||||||
|
- Audio support for iMac7,1 and iMac8,1
|
||||||
|
|
||||||
|
WARNING: Root Volume Patching is still in active development, please
|
||||||
|
have all important user data backed up. Note when the system volume
|
||||||
|
is patched, you can no longer have Delta updates or have FileVault
|
||||||
|
enabled.
|
||||||
|
|
||||||
|
Supported Options:
|
||||||
|
|
||||||
|
1. Patch System Volume
|
||||||
|
2. Unpatch System Volume (Experimental)
|
||||||
|
B. Exit
|
||||||
|
"""
|
||||||
|
mojave_catalina = """Patches Root volume to fix misc issues such as:
|
||||||
|
- Graphics Acceleration
|
||||||
|
- Nvidia: Tesla - Fermi (8000-500 series)
|
||||||
|
- Intel: Ironlake - Sandy Bridge
|
||||||
|
- AMD: TeraScale 1 and 2 (2000-6000 series)
|
||||||
|
- Audio support for iMac7,1 and iMac8,1
|
||||||
|
WARNING: Root Volume Patching is still in active development, please
|
||||||
|
have all important user data backed up. Note when the system volume
|
||||||
|
is patched, you can no longer have Delta updates or have FileVault
|
||||||
|
enabled.
|
||||||
|
Supported Options:
|
||||||
|
1. Patch System Volume
|
||||||
|
B. Exit
|
||||||
|
"""
|
||||||
|
|
||||||
|
default = """
|
||||||
|
This OS has no root patches available to apply, please ensure you're patching a booted
|
||||||
|
install that requires root patches such as macOS Big Sur or Monterey
|
||||||
|
|
||||||
|
Supported Options:
|
||||||
|
|
||||||
|
B. Exit
|
||||||
|
"""
|
||||||
|
no_patch = False
|
||||||
|
if self.constants.detected_os == self.constants.monterey:
|
||||||
|
print(monterey)
|
||||||
|
elif self.constants.detected_os == self.constants.big_sur:
|
||||||
|
print(big_sur)
|
||||||
|
elif self.constants.detected_os in [self.constants.mojave, self.constants.catalina] and self.constants.moj_cat_accel == True:
|
||||||
|
print(mojave_catalina)
|
||||||
|
else:
|
||||||
|
print(default)
|
||||||
|
no_patch = True
|
||||||
change_menu = input("Patch System Volume?: ")
|
change_menu = input("Patch System Volume?: ")
|
||||||
if change_menu == "1":
|
if no_patch is not True and change_menu == "1":
|
||||||
SysPatch.PatchSysVolume(self.constants.custom_model or self.current_model, self.constants).start_patch()
|
SysPatch.PatchSysVolume(self.constants.custom_model or self.computer.real_model, self.constants).start_patch()
|
||||||
elif change_menu == "2":
|
elif no_patch is not True and change_menu == "2" and self.constants.detected_os > self.constants.catalina:
|
||||||
SysPatch.PatchSysVolume(self.constants.custom_model or self.current_model, self.constants).start_unpatch()
|
SysPatch.PatchSysVolume(self.constants.custom_model or self.computer.real_model, self.constants).start_unpatch()
|
||||||
else:
|
else:
|
||||||
print("Returning to main menu")
|
print("Returning to main menu")
|
||||||
|
|
||||||
def main_menu(self):
|
def main_menu(self):
|
||||||
response = None
|
response = None
|
||||||
ModelArray.SupportedSMBIOS = ModelArray.SupportedSMBIOS11
|
|
||||||
while not (response and response == -1):
|
while not (response and response == -1):
|
||||||
title = [
|
title = [
|
||||||
f"OpenCore Legacy Patcher v{self.constants.patcher_version}",
|
f"OpenCore Legacy Patcher v{self.constants.patcher_version}",
|
||||||
f"Selected Model: {self.constants.custom_model or self.current_model}",
|
f"Selected Model: {self.constants.custom_model or self.computer.real_model}",
|
||||||
f"Target OS: macOS {self.constants.os_support}",
|
|
||||||
]
|
]
|
||||||
|
|
||||||
if (self.constants.custom_model or self.current_model) not in ModelArray.SupportedSMBIOS and self.constants.allow_oc_everywhere is False:
|
if (self.constants.custom_model or self.computer.real_model) not in ModelArray.SupportedSMBIOS and self.constants.allow_oc_everywhere is False:
|
||||||
in_between = [
|
in_between = [
|
||||||
'Your model is not supported by this patcher for running unsupported OSes!',
|
"Your model is not supported by this patcher for running unsupported OSes!",
|
||||||
'',
|
"",
|
||||||
'If you plan to create the USB for another machine, please select the "Change Model" option in the menu.'
|
'If you plan to create the USB for another machine, please select the "Change Model" option in the menu.',
|
||||||
]
|
]
|
||||||
elif not self.constants.custom_model and self.current_model == "iMac7,1" and \
|
elif not self.constants.custom_model and self.computer.real_model == "iMac7,1" and "SSE4.1" not in self.computer.cpu.flags:
|
||||||
"SSE4.1" not in subprocess.run("sysctl machdep.cpu.features".split(), stdout=subprocess.PIPE, stderr=subprocess.STDOUT).stdout.decode():
|
|
||||||
in_between = [
|
in_between = [
|
||||||
'Your model requires a CPU upgrade to a CPU supporting SSE4.1+ to be supported by this patcher!',
|
"Your model requires a CPU upgrade to a CPU supporting SSE4.1+ to be supported by this patcher!",
|
||||||
'',
|
"",
|
||||||
f'If you plan to create the USB for another {self.current_model} with SSE4.1+, please select the "Change Model" option in the menu.'
|
f'If you plan to create the USB for another {self.computer.real_model} with SSE4.1+, please select the "Change Model" option in the menu.',
|
||||||
]
|
]
|
||||||
elif self.constants.custom_model == "iMac7,1":
|
elif self.constants.custom_model == "iMac7,1":
|
||||||
in_between = ["This model is supported",
|
in_between = ["This model is supported", "However please ensure the CPU has been upgraded to support SSE4.1+"]
|
||||||
"However please ensure the CPU has been upgraded to support SSE4.1+"
|
|
||||||
]
|
|
||||||
else:
|
else:
|
||||||
in_between = ["This model is supported"]
|
in_between = ["This model is supported"]
|
||||||
|
|
||||||
menu = Utilities.TUIMenu(title, "Please select an option: ", in_between=in_between, auto_number=True, top_level=True)
|
menu = Utilities.TUIMenu(title, "Please select an option: ", in_between=in_between, auto_number=True, top_level=True)
|
||||||
|
|
||||||
options = (
|
options = (
|
||||||
[["Build OpenCore", self.build_opencore]] if ((self.constants.custom_model or self.current_model) in ModelArray.SupportedSMBIOS) or self.constants.allow_oc_everywhere is True else []) + [
|
[["Build OpenCore", self.build_opencore]]
|
||||||
|
if ((self.constants.custom_model or self.computer.real_model) in ModelArray.SupportedSMBIOS) or self.constants.allow_oc_everywhere is True
|
||||||
|
else []
|
||||||
|
) + [
|
||||||
["Install OpenCore to USB/internal drive", self.install_opencore],
|
["Install OpenCore to USB/internal drive", self.install_opencore],
|
||||||
["Post-Install Volume Patch", self.PatchVolume],
|
["Post-Install Volume Patch", self.PatchVolume],
|
||||||
["Change Model", self.change_model],
|
["Change Model", self.change_model],
|
||||||
["Patcher Settings", self.patcher_settings],
|
["Patcher Settings", self.patcher_settings],
|
||||||
["Credits", self.credits]
|
["Credits", self.credits],
|
||||||
]
|
]
|
||||||
|
|
||||||
for option in options:
|
for option in options:
|
||||||
@@ -238,7 +313,7 @@ B. Exit
|
|||||||
|
|
||||||
response = menu.start()
|
response = menu.start()
|
||||||
|
|
||||||
if getattr(sys, "frozen", False):
|
if getattr(sys, "frozen", False) and self.constants.recovery_status is False:
|
||||||
subprocess.run("""osascript -e 'tell application "Terminal" to close first window' & exit""", shell=True)
|
subprocess.run("""osascript -e 'tell application "Terminal" to close first window' & exit""", shell=True)
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -6,8 +6,9 @@ block_cipher = None
|
|||||||
|
|
||||||
|
|
||||||
a = Analysis(['OpenCore-Patcher.command'],
|
a = Analysis(['OpenCore-Patcher.command'],
|
||||||
|
pathex=['Resources'],
|
||||||
binaries=[],
|
binaries=[],
|
||||||
datas=[('payloads', 'payloads'), ('Resources', 'Resources')],
|
datas=[('payloads', 'payloads')],
|
||||||
hiddenimports=[],
|
hiddenimports=[],
|
||||||
hookspath=[],
|
hookspath=[],
|
||||||
runtime_hooks=[],
|
runtime_hooks=[],
|
||||||
|
|||||||
25
README.md
25
README.md
@@ -1,8 +1,9 @@
|
|||||||
# OpenCore Legacy Patcher
|
<div align="center">
|
||||||
|
<img src="images/OC-Patcher.png" alt="OpenCore Patcher Logo" width="256" />
|
||||||
|
<h1>OpenCore Legacy Patcher</h1>
|
||||||
|
</div>
|
||||||
|
|
||||||
<img src="images/OC-Patcher.png" width="256">
|
A python program with an [Objective-C GUI](https://github.com/dortania/OCLP-GUI) for building and booting [OpenCore](https://github.com/acidanthera/OpenCorePkg) on both legacy and modern Macs, see our in-depth [Guide](https://dortania.github.io/OpenCore-Legacy-Patcher/) for more information.
|
||||||
|
|
||||||
A python program for building and booting [OpenCore](https://github.com/acidanthera/OpenCorePkg) on both legacy and modern Macs, see our in-depth [Guide](https://dortania.github.io/OpenCore-Legacy-Patcher/) for more information.
|
|
||||||
|
|
||||||
Supported features:
|
Supported features:
|
||||||
|
|
||||||
@@ -19,7 +20,8 @@ Note: Only clean-installs and upgrades are supported, macOS Big Sur installs alr
|
|||||||
|
|
||||||
Note 2: Currently OpenCore Legacy Patcher officially supports patching to run macOS 11, Big Sur installs. For older OSes, OpenCore may function however support is currently not provided from Dortania.
|
Note 2: Currently OpenCore Legacy Patcher officially supports patching to run macOS 11, Big Sur installs. For older OSes, OpenCore may function however support is currently not provided from Dortania.
|
||||||
|
|
||||||
* For Mojave and Catalina support, we recommend the use of [dosdude1's patchers](http://dosdude1.com)
|
* For macOS Mojave and Catalina support, we recommend the use of [dosdude1's patchers](http://dosdude1.com)
|
||||||
|
* macOS Monterey usage is provided however support is limited, currently recommended for users to run Big Sur for best compatibility
|
||||||
|
|
||||||
## Support
|
## Support
|
||||||
|
|
||||||
@@ -27,7 +29,11 @@ To get aid with the patcher, we recommend joining the [OpenCore Patcher Paradise
|
|||||||
|
|
||||||
* [OpenCore Legacy Patcher's Issue's tab](https://github.com/dortania/OpenCore-Legacy-Patcher/issues)
|
* [OpenCore Legacy Patcher's Issue's tab](https://github.com/dortania/OpenCore-Legacy-Patcher/issues)
|
||||||
|
|
||||||
Nightly builds can be found here courteous of nightly.link: [Nightly OpenCore-Patcher.app](https://nightly.link/dortania/OpenCore-Legacy-Patcher/workflows/build-app/main/OpenCore-Patcher.app.zip)
|
Nightly builds can be found here courteous of nightly.link:
|
||||||
|
|
||||||
|
* [Nightly OpenCore Patcher (GUI)](https://nightly.link/dortania/OpenCore-Legacy-Patcher/workflows/build-gui/main/OpenCore-Patcher-GUI.app.zip)
|
||||||
|
* [Nightly OpenCore Patcher (TUI)](https://nightly.link/dortania/OpenCore-Legacy-Patcher/workflows/build-app/main/OpenCore-Patcher-TUI.app.zip)
|
||||||
|
* [Nightly OpenCore Patcher (CLI)](https://nightly.link/dortania/OpenCore-Legacy-Patcher/workflows/build-gui/main/OCLP-CLI.zip)
|
||||||
|
|
||||||
## Credits
|
## Credits
|
||||||
|
|
||||||
@@ -49,11 +55,14 @@ Nightly builds can be found here courteous of nightly.link: [Nightly OpenCore-Pa
|
|||||||
* [Innie](https://github.com/cdf/Innie) and [NightShiftEnabler](https://github.com/cdf/NightShiftEnabler)
|
* [Innie](https://github.com/cdf/Innie) and [NightShiftEnabler](https://github.com/cdf/NightShiftEnabler)
|
||||||
* [Syncretic](https://forums.macrumors.com/members/syncretic.1173816/)
|
* [Syncretic](https://forums.macrumors.com/members/syncretic.1173816/)
|
||||||
* [AAAMouSSE](https://forums.macrumors.com/threads/mp3-1-others-sse-4-2-emulation-to-enable-amd-metal-driver.2206682/) and [telemetrap](https://forums.macrumors.com/threads/mp3-1-others-sse-4-2-emulation-to-enable-amd-metal-driver.2206682/post-28447707)
|
* [AAAMouSSE](https://forums.macrumors.com/threads/mp3-1-others-sse-4-2-emulation-to-enable-amd-metal-driver.2206682/) and [telemetrap](https://forums.macrumors.com/threads/mp3-1-others-sse-4-2-emulation-to-enable-amd-metal-driver.2206682/post-28447707)
|
||||||
* [dosdude1](https://github.com/dosdude1) and [BarryKN](https://github.com/BarryKN)
|
* [dosdude1](https://github.com/dosdude1)
|
||||||
|
* Main author of GUI
|
||||||
|
* Development of previous patchers, laying out much of what needs to be patched
|
||||||
|
* [BarryKN](https://github.com/BarryKN)
|
||||||
* Development of previous patchers, laying out much of what needs to be patched
|
* Development of previous patchers, laying out much of what needs to be patched
|
||||||
* [mario_bros_tech](https://github.com/mariobrostech) and the rest of the Unsupported Mac Discord
|
* [mario_bros_tech](https://github.com/mariobrostech) and the rest of the Unsupported Mac Discord
|
||||||
* Catalyst that started OpenCore Legacy Patcher
|
* Catalyst that started OpenCore Legacy Patcher
|
||||||
* MacRumors and Unsupported Mac Communities
|
* MacRumors and Unsupported Mac Communities
|
||||||
* Endless testing, reporting issues
|
* Endless testing, reporting issues
|
||||||
* Apple
|
* Apple
|
||||||
* for macOS and many of the kexts, frameworks and other binaries we reimplemented into newer OSes
|
* for macOS and many of the kexts, frameworks and other binaries we reimplemented into newer OSes
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -3,7 +3,7 @@
|
|||||||
from __future__ import print_function
|
from __future__ import print_function
|
||||||
import subprocess
|
import subprocess
|
||||||
|
|
||||||
from Resources import ModelArray, Constants, Utilities
|
from Resources import Constants, Utilities
|
||||||
|
|
||||||
|
|
||||||
class MenuOptions:
|
class MenuOptions:
|
||||||
@@ -11,24 +11,6 @@ class MenuOptions:
|
|||||||
self.model = model
|
self.model = model
|
||||||
self.constants: Constants.Constants = versions
|
self.constants: Constants.Constants = versions
|
||||||
|
|
||||||
def change_os(self):
|
|
||||||
Utilities.cls()
|
|
||||||
Utilities.header(["Select Patcher's Target OS"])
|
|
||||||
print(f"""
|
|
||||||
Minimum Target:\t{self.constants.min_os_support}
|
|
||||||
Maximum Target:\t{self.constants.max_os_support}
|
|
||||||
Current target:\t{self.constants.os_support}
|
|
||||||
""")
|
|
||||||
temp_os_support = float(input("Please enter OS target: "))
|
|
||||||
if (self.constants.max_os_support < temp_os_support) or (temp_os_support < self.constants.min_os_support):
|
|
||||||
print("Unsupported entry")
|
|
||||||
else:
|
|
||||||
self.constants.os_support = temp_os_support
|
|
||||||
if temp_os_support == 11.0:
|
|
||||||
ModelArray.SupportedSMBIOS = ModelArray.SupportedSMBIOS11
|
|
||||||
elif temp_os_support == 12.0:
|
|
||||||
ModelArray.SupportedSMBIOS = ModelArray.SupportedSMBIOS12
|
|
||||||
|
|
||||||
def change_verbose(self):
|
def change_verbose(self):
|
||||||
Utilities.cls()
|
Utilities.cls()
|
||||||
Utilities.header(["Set Verbose mode"])
|
Utilities.header(["Set Verbose mode"])
|
||||||
@@ -67,7 +49,8 @@ Current target:\t{self.constants.os_support}
|
|||||||
def change_metal(self):
|
def change_metal(self):
|
||||||
Utilities.cls()
|
Utilities.cls()
|
||||||
Utilities.header(["Assume Metal GPU Always in iMac"])
|
Utilities.header(["Assume Metal GPU Always in iMac"])
|
||||||
print("""This is for iMacs that have upgraded Metal GPUs, otherwise
|
print(
|
||||||
|
"""This is for iMacs that have upgraded Metal GPUs, otherwise
|
||||||
Patcher assumes based on stock configuration (ie. iMac10,x-12,x)
|
Patcher assumes based on stock configuration (ie. iMac10,x-12,x)
|
||||||
|
|
||||||
Valid Options:
|
Valid Options:
|
||||||
@@ -78,7 +61,8 @@ Valid Options:
|
|||||||
|
|
||||||
Note: Patcher will detect whether hardware has been upgraded regardless, this
|
Note: Patcher will detect whether hardware has been upgraded regardless, this
|
||||||
option is for those patching on a different machine or OCLP cannot detect.
|
option is for those patching on a different machine or OCLP cannot detect.
|
||||||
""")
|
"""
|
||||||
|
)
|
||||||
change_menu = input("Set GPU Patch type(ie. 1): ")
|
change_menu = input("Set GPU Patch type(ie. 1): ")
|
||||||
if change_menu == "1":
|
if change_menu == "1":
|
||||||
self.constants.metal_build = False
|
self.constants.metal_build = False
|
||||||
@@ -92,26 +76,11 @@ option is for those patching on a different machine or OCLP cannot detect.
|
|||||||
else:
|
else:
|
||||||
print("Invalid option")
|
print("Invalid option")
|
||||||
|
|
||||||
def change_wifi(self):
|
|
||||||
Utilities.cls()
|
|
||||||
Utilities.header(["Assume Upgraded Wifi Always"])
|
|
||||||
print("""This is for Macs with upgraded wifi cards(ie. BCM94360/2)
|
|
||||||
|
|
||||||
Note: Patcher will detect whether hardware has been upgraded regardless, this
|
|
||||||
option is for those patching on a different machine or cannot detect.
|
|
||||||
""")
|
|
||||||
change_menu = input("Enable Upgraded Wifi build algorithm?(y/n): ")
|
|
||||||
if change_menu in {"y", "Y", "yes", "Yes"}:
|
|
||||||
self.constants.wifi_build = True
|
|
||||||
elif change_menu in {"n", "N", "no", "No"}:
|
|
||||||
self.constants.wifi_build = False
|
|
||||||
else:
|
|
||||||
print("Invalid option")
|
|
||||||
|
|
||||||
def change_serial(self):
|
def change_serial(self):
|
||||||
Utilities.cls()
|
Utilities.cls()
|
||||||
Utilities.header(["Set SMBIOS Mode"])
|
Utilities.header(["Set SMBIOS Mode"])
|
||||||
print("""This section is for setting how OpenCore generates the SMBIOS
|
print(
|
||||||
|
"""This section is for setting how OpenCore generates the SMBIOS
|
||||||
Recommended for adanced users who want control how serials are handled
|
Recommended for adanced users who want control how serials are handled
|
||||||
|
|
||||||
Valid options:
|
Valid options:
|
||||||
@@ -121,7 +90,8 @@ Valid options:
|
|||||||
3. Advanced:\tReplace entire SMBIOS and generate new serials
|
3. Advanced:\tReplace entire SMBIOS and generate new serials
|
||||||
|
|
||||||
Note: For new users we recommend leaving as default(1. Minimal)
|
Note: For new users we recommend leaving as default(1. Minimal)
|
||||||
""")
|
"""
|
||||||
|
)
|
||||||
change_menu = input("Set SMBIOS Mode(ie. 1): ")
|
change_menu = input("Set SMBIOS Mode(ie. 1): ")
|
||||||
if change_menu == "1":
|
if change_menu == "1":
|
||||||
self.constants.serial_settings = "Minimal"
|
self.constants.serial_settings = "Minimal"
|
||||||
@@ -135,10 +105,12 @@ Note: For new users we recommend leaving as default(1. Minimal)
|
|||||||
def change_showpicker(self):
|
def change_showpicker(self):
|
||||||
Utilities.cls()
|
Utilities.cls()
|
||||||
Utilities.header(["Set OpenCore Picker mode"])
|
Utilities.header(["Set OpenCore Picker mode"])
|
||||||
print("""By default, OpenCore will show its boot picker each time on boot up,
|
print(
|
||||||
|
"""By default, OpenCore will show its boot picker each time on boot up,
|
||||||
however this can be disabled by default and be shown on command by repeatedly
|
however this can be disabled by default and be shown on command by repeatedly
|
||||||
pressing the "Esc" key
|
pressing the "Esc" key
|
||||||
""")
|
"""
|
||||||
|
)
|
||||||
change_menu = input("Show OpenCore Picker by default(y/n): ")
|
change_menu = input("Show OpenCore Picker by default(y/n): ")
|
||||||
if change_menu in {"y", "Y", "yes", "Yes"}:
|
if change_menu in {"y", "Y", "yes", "Yes"}:
|
||||||
self.constants.showpicker = True
|
self.constants.showpicker = True
|
||||||
@@ -150,13 +122,15 @@ pressing the "Esc" key
|
|||||||
def change_vault(self):
|
def change_vault(self):
|
||||||
Utilities.cls()
|
Utilities.cls()
|
||||||
Utilities.header(["Set OpenCore Vaulting"])
|
Utilities.header(["Set OpenCore Vaulting"])
|
||||||
print("""By default, this patcher will sign all your files and ensure none of the
|
print(
|
||||||
|
"""By default, this patcher will sign all your files and ensure none of the
|
||||||
contents can be tampered with. However for more advanced users, you may
|
contents can be tampered with. However for more advanced users, you may
|
||||||
want to be able to freely edit the config.plist and files.
|
want to be able to freely edit the config.plist and files.
|
||||||
|
|
||||||
Note: For security reasons, OpenShell will be disabled when Vault is set.
|
Note: For security reasons, OpenShell will be disabled when Vault is set.
|
||||||
|
|
||||||
""")
|
"""
|
||||||
|
)
|
||||||
change_menu = input("Enable Vault(y/n): ")
|
change_menu = input("Enable Vault(y/n): ")
|
||||||
if change_menu in {"y", "Y", "yes", "Yes"}:
|
if change_menu in {"y", "Y", "yes", "Yes"}:
|
||||||
self.constants.vault = True
|
self.constants.vault = True
|
||||||
@@ -168,14 +142,11 @@ Note: For security reasons, OpenShell will be disabled when Vault is set.
|
|||||||
def change_sip(self):
|
def change_sip(self):
|
||||||
Utilities.cls()
|
Utilities.cls()
|
||||||
Utilities.header(["Set SIP and SecureBootModel"])
|
Utilities.header(["Set SIP and SecureBootModel"])
|
||||||
print("""SIP and SecureBootModel are used to ensure proper OTA functionality,
|
print(
|
||||||
|
"""SIP and SecureBootModel are used to ensure proper OTA functionality,
|
||||||
however to patch the root volume both of these must be disabled.
|
however to patch the root volume both of these must be disabled.
|
||||||
Only disable is absolutely necessary. SIP value = 0xFEF
|
Only disable is absolutely necessary. SIP value = 0xFEF
|
||||||
|
|
||||||
Note: for minor changes, SIP can be adjusted in recovery like normal.
|
|
||||||
Additionally, when disabling SIP via the patcher amfi_get_out_of_my_way=1
|
|
||||||
will be added to boot-args.
|
|
||||||
|
|
||||||
Valid options:
|
Valid options:
|
||||||
|
|
||||||
1. Enable Both
|
1. Enable Both
|
||||||
@@ -183,7 +154,8 @@ Valid options:
|
|||||||
3. Disable SecureBootModel Only
|
3. Disable SecureBootModel Only
|
||||||
4. Disable Both
|
4. Disable Both
|
||||||
|
|
||||||
""")
|
"""
|
||||||
|
)
|
||||||
change_menu = input("Set SIP and SecureBootModel(ie. 1): ")
|
change_menu = input("Set SIP and SecureBootModel(ie. 1): ")
|
||||||
if change_menu == "1":
|
if change_menu == "1":
|
||||||
self.constants.sip_status = True
|
self.constants.sip_status = True
|
||||||
@@ -200,25 +172,28 @@ Valid options:
|
|||||||
else:
|
else:
|
||||||
print("Invalid option")
|
print("Invalid option")
|
||||||
|
|
||||||
def change_imac_nvidia(self):
|
def set_amfi(self):
|
||||||
Utilities.cls()
|
Utilities.cls()
|
||||||
Utilities.header(["Assume Metal GPU Always"])
|
Utilities.header(["Disable AMFI"])
|
||||||
print("""Specifically for iMac10,x-12,x with Metal Nvidia GPU upgrades
|
print(
|
||||||
By default the patcher will try to detect what hardware is
|
"""Required for Root Patching non-Metal GPUs
|
||||||
running, however this will enforce iMac Nvidia Build Patches.
|
in macOS Big Sur. Without this, will receive kernel panic once
|
||||||
""")
|
Patcher finishes installing legacy acceleration patches.
|
||||||
change_menu = input("Assume iMac Nvidia patches(y/n): ")
|
"""
|
||||||
|
)
|
||||||
|
change_menu = input("Disable AMFI(y/n): ")
|
||||||
if change_menu in {"y", "Y", "yes", "Yes"}:
|
if change_menu in {"y", "Y", "yes", "Yes"}:
|
||||||
self.constants.imac_nvidia_build = True
|
self.constants.disable_amfi = True
|
||||||
elif change_menu in {"n", "N", "no", "No"}:
|
elif change_menu in {"n", "N", "no", "No"}:
|
||||||
self.constants.imac_nvidia_build = False
|
self.constants.disable_amfi = False
|
||||||
else:
|
else:
|
||||||
print("Invalid option")
|
print("Invalid option")
|
||||||
|
|
||||||
def bootstrap_setting(self):
|
def bootstrap_setting(self):
|
||||||
Utilities.cls()
|
Utilities.cls()
|
||||||
Utilities.header(["Set Bootstrap method"])
|
Utilities.header(["Set Bootstrap method"])
|
||||||
print("""Sets OpenCore's bootstrap method, currently the patcher supports the
|
print(
|
||||||
|
"""Sets OpenCore's bootstrap method, currently the patcher supports the
|
||||||
following options.
|
following options.
|
||||||
|
|
||||||
Valid options:
|
Valid options:
|
||||||
@@ -233,7 +208,8 @@ and not to macOS itself.
|
|||||||
Recommended to set to BOOTx64.efi in situations where your Mac cannot
|
Recommended to set to BOOTx64.efi in situations where your Mac cannot
|
||||||
see the EFI Boot entry in the boot picker.
|
see the EFI Boot entry in the boot picker.
|
||||||
|
|
||||||
""")
|
"""
|
||||||
|
)
|
||||||
change_menu = input("Set Bootstrap method: ")
|
change_menu = input("Set Bootstrap method: ")
|
||||||
if change_menu == "1":
|
if change_menu == "1":
|
||||||
self.constants.boot_efi = False
|
self.constants.boot_efi = False
|
||||||
@@ -242,11 +218,11 @@ see the EFI Boot entry in the boot picker.
|
|||||||
else:
|
else:
|
||||||
print("Invalid option")
|
print("Invalid option")
|
||||||
|
|
||||||
|
|
||||||
def drm_setting(self):
|
def drm_setting(self):
|
||||||
Utilities.cls()
|
Utilities.cls()
|
||||||
Utilities.header(["Set DRM preferences"])
|
Utilities.header(["Set DRM preferences"])
|
||||||
print("""Sets OpenCore's DRM preferences for iMac13,x and iMac14,x.
|
print(
|
||||||
|
"""Sets OpenCore's DRM preferences for iMac13,x and iMac14,x.
|
||||||
In Big Sur, some DRM based content may be broken by
|
In Big Sur, some DRM based content may be broken by
|
||||||
default in AppleTV, Photobooth, etc.
|
default in AppleTV, Photobooth, etc.
|
||||||
|
|
||||||
@@ -256,7 +232,8 @@ greatly hampers Video rendering performance in Final Cut Pro and
|
|||||||
other programs relying on such features.
|
other programs relying on such features.
|
||||||
|
|
||||||
Recommend only disabling if absolutely required.
|
Recommend only disabling if absolutely required.
|
||||||
""")
|
"""
|
||||||
|
)
|
||||||
change_menu = input("Enable Nvidia's Software DRM rendering(y/n): ")
|
change_menu = input("Enable Nvidia's Software DRM rendering(y/n): ")
|
||||||
if change_menu in {"y", "Y", "yes", "Yes"}:
|
if change_menu in {"y", "Y", "yes", "Yes"}:
|
||||||
self.constants.drm_support = True
|
self.constants.drm_support = True
|
||||||
@@ -265,30 +242,16 @@ Recommend only disabling if absolutely required.
|
|||||||
else:
|
else:
|
||||||
print("Invalid option")
|
print("Invalid option")
|
||||||
|
|
||||||
def force_accel_setting(self):
|
|
||||||
Utilities.cls()
|
|
||||||
Utilities.header(["Assume Legacy GPU"])
|
|
||||||
print("""Allows any model to force install Legacy Acceleration
|
|
||||||
patches. Only required for Mac Pro and Xserve users.
|
|
||||||
|
|
||||||
DO NOT RUN IF METAL GPU IS INSTALLED
|
|
||||||
""")
|
|
||||||
change_menu = input("Enable Beta Acceleration Patches(y/n): ")
|
|
||||||
if change_menu in {"y", "Y", "yes", "Yes"}:
|
|
||||||
self.constants.assume_legacy = True
|
|
||||||
elif change_menu in {"n", "N", "no", "No"}:
|
|
||||||
self.constants.assume_legacy = False
|
|
||||||
else:
|
|
||||||
print("Invalid option")
|
|
||||||
|
|
||||||
def allow_native_models(self):
|
def allow_native_models(self):
|
||||||
Utilities.cls()
|
Utilities.cls()
|
||||||
Utilities.header(["Allow OpenCore on native Models"])
|
Utilities.header(["Allow OpenCore on native Models"])
|
||||||
print("""Allows natively supported Macs to use OpenCore. Recommended
|
print(
|
||||||
|
"""Allows natively supported Macs to use OpenCore. Recommended
|
||||||
for users with 3rd Party NVMe SSDs to achieve improved overall
|
for users with 3rd Party NVMe SSDs to achieve improved overall
|
||||||
power usage.
|
power usage.
|
||||||
|
|
||||||
""")
|
"""
|
||||||
|
)
|
||||||
change_menu = input("Allow OpenCore on all Models(y/n): ")
|
change_menu = input("Allow OpenCore on all Models(y/n): ")
|
||||||
if change_menu in {"y", "Y", "yes", "Yes"}:
|
if change_menu in {"y", "Y", "yes", "Yes"}:
|
||||||
self.constants.allow_oc_everywhere = True
|
self.constants.allow_oc_everywhere = True
|
||||||
@@ -302,13 +265,15 @@ power usage.
|
|||||||
def custom_cpu(self):
|
def custom_cpu(self):
|
||||||
Utilities.cls()
|
Utilities.cls()
|
||||||
Utilities.header(["Set custom CPU Model Name"])
|
Utilities.header(["Set custom CPU Model Name"])
|
||||||
print("""Change reported CPU Model name in About This Mac
|
print(
|
||||||
|
"""Change reported CPU Model name in About This Mac
|
||||||
Custom names will report as follows:
|
Custom names will report as follows:
|
||||||
|
|
||||||
1: Original Name: 2.5 Ghz Dual-Core Intel Core i5
|
1: Original Name: 2.5 Ghz Dual-Core Intel Core i5
|
||||||
2. CPU name: Intel(R) Core(TM) i5-3210M CPU @ 2.50Ghz
|
2. CPU name: Intel(R) Core(TM) i5-3210M CPU @ 2.50Ghz
|
||||||
3. Custom Name: 2.5Ghz Cotton Candy (example)
|
3. Custom Name: 2.5Ghz Cotton Candy (example)
|
||||||
""")
|
"""
|
||||||
|
)
|
||||||
if self.constants.custom_cpu_model_value == "":
|
if self.constants.custom_cpu_model_value == "":
|
||||||
if self.constants.custom_cpu_model == 0:
|
if self.constants.custom_cpu_model == 0:
|
||||||
print("Currently using original name")
|
print("Currently using original name")
|
||||||
@@ -332,50 +297,40 @@ Custom names will report as follows:
|
|||||||
def custom_color_thing(self):
|
def custom_color_thing(self):
|
||||||
Utilities.cls()
|
Utilities.cls()
|
||||||
Utilities.header(["Set custom CPU Model Name"])
|
Utilities.header(["Set custom CPU Model Name"])
|
||||||
print("""Change reported CPU Model name in About This Mac
|
print(
|
||||||
|
"""Change reported CPU Model name in About This Mac
|
||||||
Custom names will report as follows:
|
Custom names will report as follows:
|
||||||
|
|
||||||
1: Custom Color
|
1: Custom Color
|
||||||
2. Reset
|
2. Reset
|
||||||
""")
|
"""
|
||||||
|
)
|
||||||
change_menu = input("Set custom CPU Name(1,2,3): ")
|
change_menu = input("Set custom CPU Name(1,2,3): ")
|
||||||
if change_menu == "1":
|
if change_menu == "1":
|
||||||
print("")
|
print("")
|
||||||
#temp_tk_root = tk.Tk()
|
# temp_tk_root = tk.Tk()
|
||||||
#temp_tk_root.wm_withdraw()
|
# temp_tk_root.wm_withdraw()
|
||||||
#self.constants.custom_color = colorchooser.askcolor(title="Choose color")
|
# self.constants.custom_color = colorchooser.askcolor(title="Choose color")
|
||||||
#temp_tk_root.destroy()
|
# temp_tk_root.destroy()
|
||||||
elif change_menu == "2":
|
elif change_menu == "2":
|
||||||
self.constants.custom_color = ""
|
self.constants.custom_color = ""
|
||||||
else:
|
else:
|
||||||
print("Invalid option")
|
print("Invalid option")
|
||||||
|
|
||||||
def download_more_ram_dot_com(self):
|
|
||||||
Utilities.cls()
|
|
||||||
Utilities.header(["Download more RAM"])
|
|
||||||
print("""Downloads more RAM to your Mac!
|
|
||||||
Currently only offers 1.5TB bundles
|
|
||||||
""")
|
|
||||||
change_menu = input("Download more RAM?(y/n): ")
|
|
||||||
if change_menu == "y":
|
|
||||||
self.constants.download_ram = True
|
|
||||||
elif change_menu == "n":
|
|
||||||
self.constants.download_ram = False
|
|
||||||
else:
|
|
||||||
print("Invalid option")
|
|
||||||
|
|
||||||
def disable_cpufriend(self):
|
def disable_cpufriend(self):
|
||||||
Utilities.cls()
|
Utilities.cls()
|
||||||
Utilities.header(["Disable CPU Friend?"])
|
Utilities.header(["Disable CPU Friend?"])
|
||||||
print("""Only recommended for advanced users
|
print(
|
||||||
|
"""Only recommended for advanced users
|
||||||
Disabling CPUFriend forces macOS into using a different
|
Disabling CPUFriend forces macOS into using a different
|
||||||
Mac's power profile for CPUs and GPUs, which can harm the
|
Mac's power profile for CPUs and GPUs, which can harm the
|
||||||
hardware
|
hardware
|
||||||
""")
|
"""
|
||||||
|
)
|
||||||
change_menu = input("Disable CPU Friend?(y/n): ")
|
change_menu = input("Disable CPU Friend?(y/n): ")
|
||||||
if change_menu == "y":
|
if change_menu in {"y", "Y", "yes", "Yes"}:
|
||||||
self.constants.disallow_cpufriend = True
|
self.constants.disallow_cpufriend = True
|
||||||
elif change_menu == "n":
|
elif change_menu in {"n", "N", "no", "No"}:
|
||||||
self.constants.disallow_cpufriend = False
|
self.constants.disallow_cpufriend = False
|
||||||
else:
|
else:
|
||||||
print("Invalid option")
|
print("Invalid option")
|
||||||
@@ -383,24 +338,30 @@ hardware
|
|||||||
def set_seedutil(self):
|
def set_seedutil(self):
|
||||||
Utilities.cls()
|
Utilities.cls()
|
||||||
Utilities.header(["Set SeedUtil Status"])
|
Utilities.header(["Set SeedUtil Status"])
|
||||||
print("""Used for setting OS Update Preferences
|
print(
|
||||||
|
"""Used for setting OS Update Preferences
|
||||||
|
|
||||||
Valid options:
|
Valid options:
|
||||||
1. Public Release Seed (Default)
|
1. Public Release Seed (Default)
|
||||||
2. Public Beta Seed
|
2. Public Beta Seed
|
||||||
3. Developer Beta Seed
|
3. Developer Beta Seed
|
||||||
4. Check SeedUtil's current status
|
4. Check SeedUtil's current status
|
||||||
""")
|
"""
|
||||||
|
)
|
||||||
|
|
||||||
change_menu = input("Set update status(Press [ENTER] to exit): ")
|
change_menu = input("Set update status(Press [ENTER] to exit): ")
|
||||||
if change_menu == "1":
|
if change_menu == "1":
|
||||||
subprocess.run(["sudo", "/System/Library/PrivateFrameworks/Seeding.framework/Versions/A/Resources/seedutil", "unenroll"], stdout=subprocess.PIPE).stdout.decode().strip().encode()
|
subprocess.run(["sudo", "/System/Library/PrivateFrameworks/Seeding.framework/Versions/A/Resources/seedutil", "unenroll"], stdout=subprocess.PIPE).stdout.decode().strip().encode()
|
||||||
elif change_menu == "2":
|
elif change_menu == "2":
|
||||||
subprocess.run(["sudo", "/System/Library/PrivateFrameworks/Seeding.framework/Versions/A/Resources/seedutil", "unenroll"], stdout=subprocess.PIPE).stdout.decode().strip().encode()
|
subprocess.run(["sudo", "/System/Library/PrivateFrameworks/Seeding.framework/Versions/A/Resources/seedutil", "unenroll"], stdout=subprocess.PIPE).stdout.decode().strip().encode()
|
||||||
subprocess.run(["sudo", "/System/Library/PrivateFrameworks/Seeding.framework/Versions/A/Resources/seedutil", "enroll", "PublicSeed"], stdout=subprocess.PIPE).stdout.decode().strip().encode()
|
subprocess.run(
|
||||||
|
["sudo", "/System/Library/PrivateFrameworks/Seeding.framework/Versions/A/Resources/seedutil", "enroll", "PublicSeed"], stdout=subprocess.PIPE
|
||||||
|
).stdout.decode().strip().encode()
|
||||||
elif change_menu == "3":
|
elif change_menu == "3":
|
||||||
subprocess.run(["sudo", "/System/Library/PrivateFrameworks/Seeding.framework/Versions/A/Resources/seedutil", "unenroll"], stdout=subprocess.PIPE).stdout.decode().strip().encode()
|
subprocess.run(["sudo", "/System/Library/PrivateFrameworks/Seeding.framework/Versions/A/Resources/seedutil", "unenroll"], stdout=subprocess.PIPE).stdout.decode().strip().encode()
|
||||||
subprocess.run(["sudo", "/System/Library/PrivateFrameworks/Seeding.framework/Versions/A/Resources/seedutil", "enroll", "DeveloperSeed"], stdout=subprocess.PIPE).stdout.decode().strip().encode()
|
subprocess.run(
|
||||||
|
["sudo", "/System/Library/PrivateFrameworks/Seeding.framework/Versions/A/Resources/seedutil", "enroll", "DeveloperSeed"], stdout=subprocess.PIPE
|
||||||
|
).stdout.decode().strip().encode()
|
||||||
elif change_menu == "4":
|
elif change_menu == "4":
|
||||||
result = subprocess.run(["sudo", "/System/Library/PrivateFrameworks/Seeding.framework/Versions/A/Resources/seedutil", "current"], stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
|
result = subprocess.run(["sudo", "/System/Library/PrivateFrameworks/Seeding.framework/Versions/A/Resources/seedutil", "current"], stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
|
||||||
result = [i.partition(":")[2] for i in result.stdout.decode().split("\n") if "Currently enrolled in" in i][0]
|
result = [i.partition(":")[2] for i in result.stdout.decode().split("\n") if "Currently enrolled in" in i][0]
|
||||||
@@ -409,3 +370,198 @@ Valid options:
|
|||||||
self.set_seedutil()
|
self.set_seedutil()
|
||||||
else:
|
else:
|
||||||
print("Returning to main menu")
|
print("Returning to main menu")
|
||||||
|
|
||||||
|
def set_smbios(self):
|
||||||
|
Utilities.cls()
|
||||||
|
Utilities.header(["Override SMBIOS Spoof"])
|
||||||
|
print(
|
||||||
|
"""Change model OpenCore spoofs Mac too
|
||||||
|
|
||||||
|
Valid options:
|
||||||
|
1. Default set by OpenCore (Default)
|
||||||
|
2. User Override
|
||||||
|
3. Disable all spoofing (unsupported configuration)
|
||||||
|
"""
|
||||||
|
)
|
||||||
|
|
||||||
|
change_menu = input("Set SMBIOS status: ")
|
||||||
|
if change_menu == "1":
|
||||||
|
print("Setting SMBIOS spoof to default mode")
|
||||||
|
self.constants.override_smbios = "Default"
|
||||||
|
elif change_menu == "2":
|
||||||
|
custom_smbios = input("Set new SMBIOS mode: ")
|
||||||
|
try:
|
||||||
|
test = self.constants.board_id[custom_smbios]
|
||||||
|
self.constants.override_smbios = custom_smbios
|
||||||
|
except KeyError:
|
||||||
|
print("Unsupported SMBIOS, defaulting to Default setting")
|
||||||
|
self.constants.override_smbios = "Default"
|
||||||
|
elif change_menu == "3":
|
||||||
|
print("Disabling SMBIOS spoof")
|
||||||
|
self.constants.override_smbios = self.model
|
||||||
|
else:
|
||||||
|
print("Returning to main menu")
|
||||||
|
|
||||||
|
def allow_firewire(self):
|
||||||
|
Utilities.cls()
|
||||||
|
Utilities.header(["Allow FireWire Boot Support"])
|
||||||
|
print(
|
||||||
|
"""
|
||||||
|
In macOS Catalina and newer, Apple restricted
|
||||||
|
usage of FireWire devices to boot macOS for
|
||||||
|
security concerns relating to DMA access.
|
||||||
|
|
||||||
|
If you are comfortable lowering the security,
|
||||||
|
you can re-enable FireWire support for Catalina
|
||||||
|
and newer.
|
||||||
|
|
||||||
|
Note: MacBook5,x-7,1 don't support FireWire boot
|
||||||
|
"""
|
||||||
|
)
|
||||||
|
|
||||||
|
change_menu = input("Enable FireWire Boot support?(y/n): ")
|
||||||
|
if change_menu in {"y", "Y", "yes", "Yes"}:
|
||||||
|
self.constants.firewire_boot = True
|
||||||
|
elif change_menu in {"n", "N", "no", "No"}:
|
||||||
|
self.constants.firewire_boot = False
|
||||||
|
else:
|
||||||
|
print("Invalid option")
|
||||||
|
|
||||||
|
def allow_nvme(self):
|
||||||
|
Utilities.cls()
|
||||||
|
Utilities.header(["Allow NVMe UEFI Support"])
|
||||||
|
print(
|
||||||
|
"""
|
||||||
|
For machines not natively supporting NVMe,
|
||||||
|
this option allows you to see and boot NVMe
|
||||||
|
drive in OpenCore's picker
|
||||||
|
|
||||||
|
Not required if your machine natively supports NVMe
|
||||||
|
|
||||||
|
Note: You must have OpenCore on a bootable volume
|
||||||
|
first, ie. USB or SATA drive. Once loaded,
|
||||||
|
OpenCore will enable NVMe support in it's picker
|
||||||
|
"""
|
||||||
|
)
|
||||||
|
|
||||||
|
change_menu = input("Enable NVMe Boot support?(y/n): ")
|
||||||
|
if change_menu in {"y", "Y", "yes", "Yes"}:
|
||||||
|
self.constants.nvme_boot = True
|
||||||
|
elif change_menu in {"n", "N", "no", "No"}:
|
||||||
|
self.constants.nvme_boot = False
|
||||||
|
else:
|
||||||
|
print("Invalid option")
|
||||||
|
|
||||||
|
def enable_terascale(self):
|
||||||
|
Utilities.cls()
|
||||||
|
Utilities.header(["Enable TeraScale 2 Acceleration"])
|
||||||
|
print(
|
||||||
|
"""
|
||||||
|
Currently TeraScale 2 graphics acceleration is in beta with
|
||||||
|
some unfortunate bugs on login including strobing colours
|
||||||
|
until the user forces Million Colours on the Display with
|
||||||
|
SwitchResX or resXtreme
|
||||||
|
|
||||||
|
Users sensitive to seizures should avoid using TeraScale 2
|
||||||
|
patches or ask someone to handle inital setup to ensure
|
||||||
|
no issues
|
||||||
|
|
||||||
|
Note: Acceleration only applies to macOS Big Sur
|
||||||
|
"""
|
||||||
|
)
|
||||||
|
|
||||||
|
change_menu = input("Enable TS2 Acceleration?(y/n): ")
|
||||||
|
if change_menu in {"y", "Y", "yes", "Yes"}:
|
||||||
|
self.constants.terascale_2_patch = True
|
||||||
|
elif change_menu in {"n", "N", "no", "No"}:
|
||||||
|
self.constants.terascale_2_patch = False
|
||||||
|
else:
|
||||||
|
print("Invalid option")
|
||||||
|
|
||||||
|
def allow_wowl(self):
|
||||||
|
Utilities.cls()
|
||||||
|
Utilities.header(["Allow Wake on WLAN"])
|
||||||
|
print(
|
||||||
|
"""
|
||||||
|
Due to an unfortunate bug in macOS Big Sur+, Wake on WLAN is
|
||||||
|
disabled by default for BCM943224, BCM94331 and BCM94360/2 chipsets.
|
||||||
|
|
||||||
|
This is due to Wake on WLAN creating network instability and in other cases
|
||||||
|
halving network speeds. This issue is not replicable across machines however
|
||||||
|
be prepared if enabling.
|
||||||
|
"""
|
||||||
|
)
|
||||||
|
|
||||||
|
change_menu = input("Allow Wake on WLAN?(y/n): ")
|
||||||
|
if change_menu in {"y", "Y", "yes", "Yes"}:
|
||||||
|
self.constants.enable_wake_on_wlan = True
|
||||||
|
elif change_menu in {"n", "N", "no", "No"}:
|
||||||
|
self.constants.enable_wake_on_wlan = False
|
||||||
|
else:
|
||||||
|
print("Invalid option")
|
||||||
|
|
||||||
|
def allow_ivy(self):
|
||||||
|
Utilities.cls()
|
||||||
|
Utilities.header(["Allow Ivy iMac iGPU"])
|
||||||
|
print(
|
||||||
|
"""
|
||||||
|
For iMac13,x systems with a Nvidia dGPU, the iGPU is disabled by default to
|
||||||
|
allow Delta Updates, FileVault, SIP and such on macOS Monterey. However due to
|
||||||
|
this, DRM and QuickSync support may be broken.
|
||||||
|
|
||||||
|
Users can choose to override this option but be aware SIP and FileVault must be
|
||||||
|
disabled to run root patches to fix DRM and QuickSync.
|
||||||
|
|
||||||
|
Note: This does not apply for Big Sur, the iGPU can be renabled without
|
||||||
|
consequence
|
||||||
|
Note 2: This setting only affects iMac13,x with dGPUs
|
||||||
|
"""
|
||||||
|
)
|
||||||
|
|
||||||
|
change_menu = input("Allow Ivy iMac iGPU?(y/n): ")
|
||||||
|
if change_menu in {"y", "Y", "yes", "Yes"}:
|
||||||
|
self.constants.allow_ivy_igpu = True
|
||||||
|
elif change_menu in {"n", "N", "no", "No"}:
|
||||||
|
self.constants.allow_ivy_igpu = False
|
||||||
|
else:
|
||||||
|
print("Invalid option")
|
||||||
|
|
||||||
|
def latebloom_settings(self):
|
||||||
|
Utilities.cls()
|
||||||
|
Utilities.header(["Set latebloom properties"])
|
||||||
|
print(
|
||||||
|
f"""
|
||||||
|
Set latebloom properties, useful for debugging boot stalls on
|
||||||
|
pre-Sandy Bridge Macs.
|
||||||
|
|
||||||
|
Valid options:
|
||||||
|
|
||||||
|
1. Set delay (currently: {self.constants.latebloom_delay}ms)
|
||||||
|
2. Set range (currently: {self.constants.latebloom_range}ms)
|
||||||
|
3. Set debug (currently: {bool(self.constants.latebloom_debug)})
|
||||||
|
"""
|
||||||
|
)
|
||||||
|
|
||||||
|
change_menu = input("Select latebloom property(1/2/3): ")
|
||||||
|
if change_menu == "1":
|
||||||
|
try:
|
||||||
|
self.constants.latebloom_delay = int(input("Set delay: "))
|
||||||
|
except ValueError:
|
||||||
|
input("Invalid value, press [ENTER] to continue")
|
||||||
|
elif change_menu == "2":
|
||||||
|
try:
|
||||||
|
self.constants.latebloom_range = int(input("Set range: "))
|
||||||
|
except ValueError:
|
||||||
|
input("Invalid value, press [ENTER] to continue")
|
||||||
|
elif change_menu == "3":
|
||||||
|
try:
|
||||||
|
print("Currently supports either 0(False) or 1(True)")
|
||||||
|
latebloom_debug = int(input("Set debug(0/1): "))
|
||||||
|
if latebloom_debug not in [0, 1]:
|
||||||
|
input("Invalid value, press [ENTER] to continue")
|
||||||
|
else:
|
||||||
|
self.constants.latebloom_debug = latebloom_debug
|
||||||
|
except ValueError:
|
||||||
|
input("Invalid value, press [ENTER] to continue")
|
||||||
|
else:
|
||||||
|
print("Invalid option")
|
||||||
|
|||||||
@@ -5,59 +5,64 @@
|
|||||||
from __future__ import print_function
|
from __future__ import print_function
|
||||||
|
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
|
from typing import Optional
|
||||||
|
|
||||||
|
from Resources import device_probe
|
||||||
|
|
||||||
|
|
||||||
class Constants:
|
class Constants:
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
self.patcher_version = "0.1.5"
|
self.patcher_version = "0.2.4"
|
||||||
self.opencore_commit = "65cc81b - 05-03-2021"
|
self.opencore_commit = "be2d9fe - 07-2-2021"
|
||||||
self.opencore_version = "0.6.9"
|
self.opencore_version = "0.7.1"
|
||||||
self.lilu_version = "1.5.3"
|
self.lilu_version = "1.5.4"
|
||||||
self.whatevergreen_version = "1.4.9"
|
self.whatevergreen_version = "1.5.1"
|
||||||
self.airportbcrmfixup_version = "2.1.2"
|
self.airportbcrmfixup_version = "2.1.3"
|
||||||
self.bcm570_version = "1.0.1"
|
self.bcm570_version = "1.0.1"
|
||||||
self.marvel_version = "1.0.0"
|
self.marvel_version = "1.0.0"
|
||||||
self.nforce_version = "1.0.0"
|
self.nforce_version = "1.0.0"
|
||||||
self.mce_version = "1.0.0"
|
self.mce_version = "1.0.0"
|
||||||
self.mousse_version = "0.93"
|
self.mousse_version = "0.95"
|
||||||
self.telemetrap_version = "1.0.0"
|
self.telemetrap_version = "1.0.0"
|
||||||
self.corecaptureelcap_version = "1.0.0"
|
self.corecaptureelcap_version = "1.0.0"
|
||||||
self.io80211elcap_version = "1.0.0"
|
self.io80211elcap_version = "1.0.0"
|
||||||
self.io80211high_sierra_version = "1.0.0"
|
self.io80211high_sierra_version = "1.0.0"
|
||||||
self.io80211mojave_version = "1.0.0"
|
self.io80211mojave_version = "1.0.0"
|
||||||
self.applealc_version = "1.6.1"
|
self.applealc_version = "1.6.2"
|
||||||
self.restrictevents_version = "1.0.1"
|
self.restrictevents_version = "1.0.3"
|
||||||
self.restrictevents_mbp_version = "1.0.1"
|
self.restrictevents_mbp_version = "1.0.3"
|
||||||
self.piixata_version = "1.0.0"
|
self.piixata_version = "1.0.0"
|
||||||
self.backlight_version = "1.0.1"
|
self.backlight_version = "1.0.1"
|
||||||
self.backlight_injector_version = "1.0.0"
|
self.backlight_injector_version = "1.0.0"
|
||||||
self.cpufriend_version = "1.2.3"
|
self.cpufriend_version = "1.2.4"
|
||||||
self.nightshift_version = "1.1.0"
|
self.nightshift_version = "1.1.0"
|
||||||
self.smcspoof_version = "1.0.0"
|
self.smcspoof_version = "1.0.0"
|
||||||
self.cputscsync = "1.0.3"
|
self.nvmefix_version = "1.0.9"
|
||||||
self.hibernationfixup = "1.3.9"
|
self.featureunlock_version = "1.0.3"
|
||||||
self.nvmefix_version = "1.0.7"
|
self.debugenhancer_version = "1.0.3"
|
||||||
self.sidecarfixup_version = "1.0.0"
|
|
||||||
self.innie_version = "1.3.0"
|
self.innie_version = "1.3.0"
|
||||||
self.payload_version = "0.0.7"
|
self.fw_kext = "1.0.0"
|
||||||
|
self.latebloom_version = "0.19"
|
||||||
|
self.disk = ""
|
||||||
|
self.patch_disk = ""
|
||||||
|
self.patcher_support_pkg_version = "0.0.15" # PatcherSupportPkg
|
||||||
|
|
||||||
# Get resource path
|
# Get resource path
|
||||||
self.current_path = Path(__file__).parent.parent.resolve()
|
self.current_path = Path(__file__).parent.parent.resolve()
|
||||||
self.payload_path = self.current_path / Path("payloads")
|
self.payload_path = self.current_path / Path("payloads")
|
||||||
|
|
||||||
self.custom_model: str = None
|
# Hardware
|
||||||
self.custom_mxm_gpu: str = None
|
self.computer: device_probe.Computer = None # type: ignore
|
||||||
self.current_gpuv: str = None
|
|
||||||
self.current_gpud: str = None
|
self.custom_model: Optional[str] = None
|
||||||
|
self.custom_mxm_gpu: bool = False
|
||||||
|
|
||||||
# Patcher Settings
|
# Patcher Settings
|
||||||
self.opencore_debug = False
|
self.opencore_debug = False
|
||||||
self.opencore_build = "RELEASE"
|
self.opencore_build = "RELEASE"
|
||||||
self.kext_debug = False
|
self.kext_debug = False
|
||||||
self.verbose_debug = False
|
self.verbose_debug = False
|
||||||
self.os_support = 11.0
|
self.os_support = 12.0
|
||||||
self.min_os_support = 11.0
|
|
||||||
self.max_os_support = 11.0
|
|
||||||
self.metal_build = False
|
self.metal_build = False
|
||||||
self.imac_vendor = "None"
|
self.imac_vendor = "None"
|
||||||
self.wifi_build = False
|
self.wifi_build = False
|
||||||
@@ -66,12 +71,11 @@ class Constants:
|
|||||||
self.showpicker = True
|
self.showpicker = True
|
||||||
self.vault = False
|
self.vault = False
|
||||||
self.sip_status = True
|
self.sip_status = True
|
||||||
self.secure_status = True
|
self.secure_status = False
|
||||||
self.detected_os = 0
|
self.detected_os = 0
|
||||||
|
self.detected_os_minor = 0
|
||||||
self.boot_efi = False
|
self.boot_efi = False
|
||||||
self.drm_support = False
|
self.drm_support = False
|
||||||
self.legacy_acceleration_patch = True
|
|
||||||
self.assume_legacy = False
|
|
||||||
self.allow_oc_everywhere = False
|
self.allow_oc_everywhere = False
|
||||||
self.custom_cpu_model = 2
|
self.custom_cpu_model = 2
|
||||||
self.custom_cpu_model_value = ""
|
self.custom_cpu_model_value = ""
|
||||||
@@ -79,6 +83,20 @@ class Constants:
|
|||||||
self.download_ram = False
|
self.download_ram = False
|
||||||
self.disallow_cpufriend = False
|
self.disallow_cpufriend = False
|
||||||
self.recovery_status = False
|
self.recovery_status = False
|
||||||
|
self.override_smbios = "Default"
|
||||||
|
self.apecid_support = False
|
||||||
|
self.firewire_boot = False
|
||||||
|
self.nvme_boot = False
|
||||||
|
self.disable_amfi = False
|
||||||
|
self.terascale_2_patch = False
|
||||||
|
self.enable_wake_on_wlan = False
|
||||||
|
self.allow_ivy_igpu = False
|
||||||
|
self.moj_cat_accel = False
|
||||||
|
self.latebloom_status = False
|
||||||
|
self.latebloom_delay = 0
|
||||||
|
self.latebloom_range = 0
|
||||||
|
self.latebloom_debug = 0
|
||||||
|
self.validate = False
|
||||||
|
|
||||||
# OS Versions
|
# OS Versions
|
||||||
self.tiger = 8
|
self.tiger = 8
|
||||||
@@ -94,6 +112,7 @@ class Constants:
|
|||||||
self.mojave = 18
|
self.mojave = 18
|
||||||
self.catalina = 19
|
self.catalina = 19
|
||||||
self.big_sur = 20
|
self.big_sur = 20
|
||||||
|
self.monterey = 21
|
||||||
|
|
||||||
# Vendor IDs
|
# Vendor IDs
|
||||||
self.pci_nvidia = "10DE"
|
self.pci_nvidia = "10DE"
|
||||||
@@ -111,6 +130,7 @@ class Constants:
|
|||||||
self.classcode_wifi = "00800200"
|
self.classcode_wifi = "00800200"
|
||||||
self.classcode_gpu = "00000300"
|
self.classcode_gpu = "00000300"
|
||||||
self.classcode_gpu_variant = "00800300"
|
self.classcode_gpu_variant = "00800300"
|
||||||
|
self.classcode_xhci = "30030C00"
|
||||||
|
|
||||||
# Nvidia GPU Architecture
|
# Nvidia GPU Architecture
|
||||||
self.arch_tesla = "NV50"
|
self.arch_tesla = "NV50"
|
||||||
@@ -118,252 +138,592 @@ class Constants:
|
|||||||
self.arch_kepler = "GK100"
|
self.arch_kepler = "GK100"
|
||||||
|
|
||||||
# External Files
|
# External Files
|
||||||
self.url_apple_binaries = "https://github.com/dortania/Apple-Binaries-OCLP/archive/refs/tags/"
|
self.url_patcher_support_pkg = "https://github.com/dortania/PatcherSupportPkg/releases/download/"
|
||||||
|
|
||||||
|
self.legacy_accel_support = [
|
||||||
|
self.mojave,
|
||||||
|
self.catalina,
|
||||||
|
self.big_sur,
|
||||||
|
]
|
||||||
|
|
||||||
# Payload Location
|
# Payload Location
|
||||||
# OpenCore
|
# OpenCore
|
||||||
@property
|
@property
|
||||||
def opencore_zip_source(self): return self.payload_path / Path(f"OpenCore/OpenCore-{self.opencore_build}.zip")
|
def opencore_zip_source(self):
|
||||||
|
return self.payload_path / Path(f"OpenCore/OpenCore-{self.opencore_build}.zip")
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def plist_template(self): return self.payload_path / Path(f"Config/config.plist")
|
def plist_template(self):
|
||||||
|
return self.payload_path / Path("Config/config.plist")
|
||||||
|
|
||||||
|
# Mount Location
|
||||||
|
@property
|
||||||
|
def payload_mnt1_path(self):
|
||||||
|
return self.payload_path / Path("mnt1")
|
||||||
|
|
||||||
# ACPI
|
# ACPI
|
||||||
@property
|
@property
|
||||||
def pci_ssdt_path(self): return self.payload_path / Path("ACPI/SSDT-CPBG.aml")
|
def pci_ssdt_path(self):
|
||||||
|
return self.payload_path / Path("ACPI/SSDT-CPBG.aml")
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def windows_ssdt_path(self): return self.payload_path / Path("ACPI/SSDT-PCI.aml")
|
def windows_ssdt_path(self):
|
||||||
|
return self.payload_path / Path("ACPI/SSDT-PCI.aml")
|
||||||
|
|
||||||
# Drivers
|
# Drivers
|
||||||
@property
|
@property
|
||||||
def nvme_driver_path(self): return self.payload_path / Path("Drivers/NvmExpressDxe.efi")
|
def nvme_driver_path(self):
|
||||||
|
return self.payload_path / Path("Drivers/NvmExpressDxe.efi")
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def exfat_legacy_driver_path(self): return self.payload_path / Path("Drivers/ExFatDxeLegacy.efi")
|
def exfat_legacy_driver_path(self):
|
||||||
|
return self.payload_path / Path("Drivers/ExFatDxeLegacy.efi")
|
||||||
|
|
||||||
|
@property
|
||||||
|
def xhci_driver_path(self):
|
||||||
|
return self.payload_path / Path("Drivers/XhciDxe.efi")
|
||||||
|
|
||||||
# Kexts
|
# Kexts
|
||||||
@property
|
@property
|
||||||
def payload_kexts_path(self): return self.payload_path / Path("Kexts")
|
def payload_kexts_path(self):
|
||||||
|
return self.payload_path / Path("Kexts")
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def lilu_path(self): return self.payload_kexts_path / Path(f"Acidanthera/Lilu-v{self.lilu_version}.zip")
|
def lilu_path(self):
|
||||||
|
return self.payload_kexts_path / Path(f"Acidanthera/Lilu-v{self.lilu_version}.zip")
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def whatevergreen_path(self): return self.payload_kexts_path / Path(f"Acidanthera/WhateverGreen-v{self.whatevergreen_version}.zip")
|
def whatevergreen_path(self):
|
||||||
|
return self.payload_kexts_path / Path(f"Acidanthera/WhateverGreen-v{self.whatevergreen_version}.zip")
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def airportbcrmfixup_path(self): return self.payload_kexts_path / Path(f"Acidanthera/AirportBrcmFixup-v{self.airportbcrmfixup_version}.zip")
|
def airportbcrmfixup_path(self):
|
||||||
|
return self.payload_kexts_path / Path(f"Acidanthera/AirportBrcmFixup-v{self.airportbcrmfixup_version}.zip")
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def restrictevents_path(self): return self.payload_kexts_path / Path(f"Acidanthera/RestrictEvents-v{self.restrictevents_version}.zip")
|
def restrictevents_path(self):
|
||||||
|
return self.payload_kexts_path / Path(f"Acidanthera/RestrictEvents-v{self.restrictevents_version}.zip")
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def restrictevents_mbp_path(self): return self.payload_kexts_path / Path(f"Acidanthera/RestrictEvents-MBP91-v{self.restrictevents_mbp_version}.zip")
|
def restrictevents_mbp_path(self):
|
||||||
|
return self.payload_kexts_path / Path(f"Acidanthera/RestrictEvents-MBP91-v{self.restrictevents_mbp_version}.zip")
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def bcm570_path(self): return self.payload_kexts_path / Path(f"Ethernet/CatalinaBCM5701Ethernet-v{self.bcm570_version}.zip")
|
def bcm570_path(self):
|
||||||
|
return self.payload_kexts_path / Path(f"Ethernet/CatalinaBCM5701Ethernet-v{self.bcm570_version}.zip")
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def marvel_path(self): return self.payload_kexts_path / Path(f"Ethernet/MarvelYukonEthernet-v{self.marvel_version}.zip")
|
def marvel_path(self):
|
||||||
|
return self.payload_kexts_path / Path(f"Ethernet/MarvelYukonEthernet-v{self.marvel_version}.zip")
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def nforce_path(self): return self.payload_kexts_path / Path(f"Ethernet/nForceEthernet-v{self.nforce_version}.zip")
|
def nforce_path(self):
|
||||||
|
return self.payload_kexts_path / Path(f"Ethernet/nForceEthernet-v{self.nforce_version}.zip")
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def mce_path(self): return self.payload_kexts_path / Path(f"Misc/AppleMCEReporterDisabler-v{self.mce_version}.zip")
|
def mce_path(self):
|
||||||
|
return self.payload_kexts_path / Path(f"Misc/AppleMCEReporterDisabler-v{self.mce_version}.zip")
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def mousse_path(self): return self.payload_kexts_path / Path(f"SSE/AAAMouSSE-v{self.mousse_version}.zip")
|
def mousse_path(self):
|
||||||
|
return self.payload_kexts_path / Path(f"SSE/AAAMouSSE-v{self.mousse_version}.zip")
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def telemetrap_path(self): return self.payload_kexts_path / Path(f"SSE/telemetrap-v{self.telemetrap_version}.zip")
|
def telemetrap_path(self):
|
||||||
|
return self.payload_kexts_path / Path(f"SSE/telemetrap-v{self.telemetrap_version}.zip")
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def corecaptureelcap_path(self): return self.payload_kexts_path / Path(f"Wifi/corecaptureElCap-v{self.corecaptureelcap_version}.zip")
|
def corecaptureelcap_path(self):
|
||||||
|
return self.payload_kexts_path / Path(f"Wifi/corecaptureElCap-v{self.corecaptureelcap_version}.zip")
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def io80211elcap_path(self): return self.payload_kexts_path / Path(f"Wifi/IO80211ElCap-v{self.io80211elcap_version}.zip")
|
def io80211elcap_path(self):
|
||||||
|
return self.payload_kexts_path / Path(f"Wifi/IO80211ElCap-v{self.io80211elcap_version}.zip")
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def io80211high_sierra_path(self): return self.payload_kexts_path / Path(f"Wifi/IO80211HighSierra-v{self.io80211high_sierra_version}.zip")
|
def io80211high_sierra_path(self):
|
||||||
|
return self.payload_kexts_path / Path(f"Wifi/IO80211HighSierra-v{self.io80211high_sierra_version}.zip")
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def io80211mojave_path(self): return self.payload_kexts_path / Path(f"Wifi/IO80211Mojave-v{self.io80211mojave_version}.zip")
|
def io80211mojave_path(self):
|
||||||
|
return self.payload_kexts_path / Path(f"Wifi/IO80211Mojave-v{self.io80211mojave_version}.zip")
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def applealc_path(self): return self.payload_kexts_path / Path(f"Acidanthera/AppleALC-v{self.applealc_version}.zip")
|
def applealc_path(self):
|
||||||
|
return self.payload_kexts_path / Path(f"Acidanthera/AppleALC-v{self.applealc_version}.zip")
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def piixata_path(self): return self.payload_kexts_path / Path(f"Misc/AppleIntelPIIXATA-v{self.piixata_version}.zip")
|
def piixata_path(self):
|
||||||
|
return self.payload_kexts_path / Path(f"Misc/AppleIntelPIIXATA-v{self.piixata_version}.zip")
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def backlight_path(self): return self.payload_kexts_path / Path(f"Misc/AppleBacklightFixup-v{self.backlight_version}.zip")
|
def backlight_path(self):
|
||||||
|
return self.payload_kexts_path / Path(f"Misc/AppleBacklightFixup-v{self.backlight_version}.zip")
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def backlight_injector_path(self): return self.payload_kexts_path / Path(f"Misc/BacklightInjector-v{self.backlight_injector_version}.zip")
|
def backlight_injector_path(self):
|
||||||
|
return self.payload_kexts_path / Path(f"Misc/BacklightInjector-v{self.backlight_injector_version}.zip")
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def cpufriend_path(self): return self.payload_kexts_path / Path(f"Acidanthera/CPUFriend-v{self.cpufriend_version}.zip")
|
def cpufriend_path(self):
|
||||||
|
return self.payload_kexts_path / Path(f"Acidanthera/CPUFriend-v{self.cpufriend_version}.zip")
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def nightshift_path(self): return self.payload_kexts_path / Path(f"Misc/NightShiftEnabler-v{self.nightshift_version}.zip")
|
def nightshift_path(self):
|
||||||
|
return self.payload_kexts_path / Path(f"Misc/NightShiftEnabler-v{self.nightshift_version}.zip")
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def smcspoof_path(self): return self.payload_kexts_path / Path(f"Misc/SMC-Spoof-v{self.smcspoof_version}.zip")
|
def smcspoof_path(self):
|
||||||
|
return self.payload_kexts_path / Path(f"Misc/SMC-Spoof-v{self.smcspoof_version}.zip")
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def cputscsync_path(self): return self.payload_kexts_path / Path(f"Acidanthera/CpuTscSync-v{self.cputscsync}.zip")
|
def nvmefix_path(self):
|
||||||
|
return self.payload_kexts_path / Path(f"Acidanthera/NVMeFix-v{self.nvmefix_version}.zip")
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def hibernationfixup_path(self): return self.payload_kexts_path / Path(f"Acidanthera/HibernationFixup-v{self.hibernationfixup}.zip")
|
def featureunlock_path(self):
|
||||||
|
return self.payload_kexts_path / Path(f"Acidanthera/FeatureUnlock-v{self.featureunlock_version}.zip")
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def nvmefix_path(self): return self.payload_kexts_path / Path(f"Acidanthera/NVMeFix-v{self.nvmefix_version}.zip")
|
def debugenhancer_path(self):
|
||||||
|
return self.payload_kexts_path / Path(f"Acidanthera/DebugEnhancer-v{self.debugenhancer_version}.zip")
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def sidecarfixup_path(self): return self.payload_kexts_path / Path(f"Acidanthera/SidecarFixup-v{self.sidecarfixup_version}.zip")
|
def innie_path(self):
|
||||||
|
return self.payload_kexts_path / Path(f"Misc/Innie-v{self.innie_version}.zip")
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def innie_path(self): return self.payload_kexts_path / Path(f"Misc/Innie-v{self.innie_version}.zip")
|
def latebloom_path(self):
|
||||||
|
return self.payload_kexts_path / Path(f"Misc/latebloom-v{self.latebloom_version}.zip")
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def plist_folder_path(self): return self.payload_kexts_path / Path(f"Plists")
|
def plist_folder_path(self):
|
||||||
|
return self.payload_kexts_path / Path("Plists")
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def platform_plugin_plist_path(self): return self.plist_folder_path / Path(f"PlatformPlugin")
|
def platform_plugin_plist_path(self):
|
||||||
|
return self.plist_folder_path / Path("PlatformPlugin")
|
||||||
|
|
||||||
|
@property
|
||||||
|
def fw_family_path(self):
|
||||||
|
return self.payload_kexts_path / Path(f"FireWire/IOFireWireFamily-v{self.fw_kext}.zip")
|
||||||
|
|
||||||
|
@property
|
||||||
|
def fw_sbp2_path(self):
|
||||||
|
return self.payload_kexts_path / Path(f"FireWire/IOFireWireSBP2-v{self.fw_kext}.zip")
|
||||||
|
|
||||||
|
@property
|
||||||
|
def fw_bus_path(self):
|
||||||
|
return self.payload_kexts_path / Path(f"FireWire/IOFireWireSerialBusProtocolTransport-v{self.fw_kext}.zip")
|
||||||
|
|
||||||
# Build Location
|
# Build Location
|
||||||
@property
|
@property
|
||||||
def build_path(self): return self.current_path / Path("Build-Folder/")
|
def build_path(self):
|
||||||
@property
|
return self.current_path / Path("Build-Folder/")
|
||||||
def opencore_release_folder(self): return self.build_path / Path(f"OpenCore-{self.opencore_build}")
|
|
||||||
@property
|
|
||||||
def opencore_zip_copied(self): return self.build_path / Path(f"OpenCore-{self.opencore_build}.zip")
|
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def oc_folder(self): return self.opencore_release_folder / Path("EFI/OC/")
|
def opencore_release_folder(self):
|
||||||
|
return self.build_path / Path(f"OpenCore-Build")
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def plist_path(self): return self.oc_folder / Path("config.plist")
|
def opencore_zip_copied(self):
|
||||||
|
return self.build_path / Path(f"OpenCore-{self.opencore_build}.zip")
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def acpi_path(self): return self.oc_folder / Path("ACPI")
|
def oc_folder(self):
|
||||||
|
return self.opencore_release_folder / Path("EFI/OC/")
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def drivers_path(self): return self.oc_folder / Path("Drivers")
|
def plist_path(self):
|
||||||
|
return self.oc_folder / Path("config.plist")
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def kexts_path(self): return self.oc_folder / Path("Kexts")
|
def acpi_path(self):
|
||||||
|
return self.oc_folder / Path("ACPI")
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def resources_path(self): return self.oc_folder / Path("Resources")
|
def drivers_path(self):
|
||||||
|
return self.oc_folder / Path("Drivers")
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def map_kext_folder(self): return self.kexts_path / Path("USB-Map.kext")
|
def kexts_path(self):
|
||||||
|
return self.oc_folder / Path("Kexts")
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def map_contents_folder(self): return self.map_kext_folder / Path("Contents")
|
def resources_path(self):
|
||||||
|
return self.oc_folder / Path("Resources")
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def pp_kext_folder(self): return self.kexts_path / Path("CPUFriendDataProvider.kext")
|
def map_kext_folder(self):
|
||||||
|
return self.kexts_path / Path("USB-Map.kext")
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def pp_contents_folder(self): return self.pp_kext_folder / Path("Contents")
|
def map_contents_folder(self):
|
||||||
|
return self.map_kext_folder / Path("Contents")
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def agdp_kext_folder(self): return self.kexts_path / Path("AGDP-Override.kext")
|
def pp_kext_folder(self):
|
||||||
|
return self.kexts_path / Path("CPUFriendDataProvider.kext")
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def agdp_contents_folder(self): return self.agdp_kext_folder / Path("Contents")
|
def pp_contents_folder(self):
|
||||||
|
return self.pp_kext_folder / Path("Contents")
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def agpm_kext_folder(self): return self.kexts_path / Path("AGPM-Override.kext")
|
def agdp_kext_folder(self):
|
||||||
|
return self.kexts_path / Path("AGDP-Override.kext")
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def agpm_contents_folder(self): return self.agpm_kext_folder / Path("Contents")
|
def agdp_contents_folder(self):
|
||||||
|
return self.agdp_kext_folder / Path("Contents")
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def amc_kext_folder(self): return self.kexts_path / Path("AMC-Override.kext")
|
def agpm_kext_folder(self):
|
||||||
|
return self.kexts_path / Path("AGPM-Override.kext")
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def amc_contents_folder(self): return self.amc_kext_folder / Path("Contents")
|
def agpm_contents_folder(self):
|
||||||
|
return self.agpm_kext_folder / Path("Contents")
|
||||||
|
|
||||||
|
@property
|
||||||
|
def amc_kext_folder(self):
|
||||||
|
return self.kexts_path / Path("AMC-Override.kext")
|
||||||
|
|
||||||
|
@property
|
||||||
|
def amc_contents_folder(self):
|
||||||
|
return self.amc_kext_folder / Path("Contents")
|
||||||
|
|
||||||
# Tools
|
# Tools
|
||||||
@property
|
@property
|
||||||
def macserial_path(self): return self.payload_path / Path("Tools/macserial")
|
def macserial_path(self):
|
||||||
|
return self.payload_path / Path("Tools/macserial")
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def gfxutil_path(self): return self.payload_path / Path("Tools/gfxutil")
|
def gfxutil_path(self):
|
||||||
|
return self.payload_path / Path("Tools/gfxutil")
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def vault_path(self): return self.payload_path / Path("Tools/CreateVault/sign.command")
|
def vault_path(self):
|
||||||
|
return self.payload_path / Path("Tools/CreateVault/sign.command")
|
||||||
|
|
||||||
|
@property
|
||||||
|
def ocvalidate_path(self):
|
||||||
|
return self.payload_path / Path("Tools/ocvalidate")
|
||||||
|
|
||||||
# Icons
|
# Icons
|
||||||
@property
|
@property
|
||||||
def app_icon_path(self): return self.current_path / Path("OC-Patcher.icns")
|
def app_icon_path(self):
|
||||||
|
return self.current_path / Path("OC-Patcher.icns")
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def icon_path_external(self): return self.payload_path / Path("Icon/External/.VolumeIcon.icns")
|
def icon_path_external(self):
|
||||||
|
return self.payload_path / Path("Icon/External/.VolumeIcon.icns")
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def icon_path_internal(self): return self.payload_path / Path("Icon/Internal/.VolumeIcon.icns")
|
def icon_path_internal(self):
|
||||||
|
return self.payload_path / Path("Icon/Internal/.VolumeIcon.icns")
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def icon_path_sd(self): return self.payload_path / Path("Icon/SD-Card/.VolumeIcon.icns")
|
def icon_path_sd(self):
|
||||||
|
return self.payload_path / Path("Icon/SD-Card/.VolumeIcon.icns")
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def icon_path_ssd(self): return self.payload_path / Path("Icon/SSD/.VolumeIcon.icns")
|
def icon_path_ssd(self):
|
||||||
|
return self.payload_path / Path("Icon/SSD/.VolumeIcon.icns")
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def gui_path(self): return self.payload_path / Path("Icon/Resources.zip")
|
def gui_path(self):
|
||||||
|
return self.payload_path / Path("Icon/Resources.zip")
|
||||||
|
|
||||||
# Apple Payloads Paths
|
# Apple Payloads Paths
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def payload_apple_root_path_unzip(self): return self.payload_path / Path(f"Apple-Binaries-OCLP-{self.payload_version}")
|
def payload_apple_root_path_zip(self):
|
||||||
|
return self.payload_path / Path("Apple.zip")
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def payload_apple_root_path_zip(self): return self.payload_path / Path("Apple.zip")
|
def payload_apple_root_path(self):
|
||||||
|
return self.payload_path / Path("Apple")
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def payload_apple_root_path(self): return self.payload_path / Path("Apple")
|
def payload_apple_kexts_path(self):
|
||||||
|
return self.payload_apple_root_path / Path("Extensions")
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def payload_apple_kexts_path(self): return self.payload_apple_root_path / Path("Extensions")
|
def payload_apple_frameworks_path(self):
|
||||||
|
return self.payload_apple_root_path / Path("Frameworks")
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def payload_apple_frameworks_path(self): return self.payload_apple_root_path / Path("Frameworks")
|
def payload_apple_frameworks_path_accel(self):
|
||||||
|
return self.payload_apple_frameworks_path / Path("Graphics-Acceleration")
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def payload_apple_frameworks_path_accel(self): return self.payload_apple_frameworks_path / Path("Graphics-Acceleration")
|
def payload_apple_frameworks_path_accel_ts2(self):
|
||||||
|
return self.payload_apple_frameworks_path / Path("Graphics-Acceleration-TeraScale-2")
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def payload_apple_lauchd_path(self): return self.payload_apple_root_path / Path("LaunchDaemons")
|
def payload_apple_frameworks_path_accel_ivy(self):
|
||||||
|
return self.payload_apple_frameworks_path / Path("Graphics-Acceleration-Ivy-Bridge")
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def payload_apple_lauchd_path_accel(self): return self.payload_apple_lauchd_path / Path("Graphics-Acceleration")
|
def payload_apple_lauchd_path(self):
|
||||||
|
return self.payload_apple_root_path / Path("LaunchDaemons")
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def payload_apple_private_frameworks_path(self): return self.payload_apple_root_path / Path("PrivateFrameworks")
|
def payload_apple_lauchd_path_accel(self):
|
||||||
|
return self.payload_apple_lauchd_path / Path("Graphics-Acceleration")
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def payload_apple_private_frameworks_path_accel(self): return self.payload_apple_private_frameworks_path / Path("Graphics-Acceleration")
|
def payload_apple_private_frameworks_path(self):
|
||||||
|
return self.payload_apple_root_path / Path("PrivateFrameworks")
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def payload_apple_private_frameworks_path_brightness(self): return self.payload_apple_private_frameworks_path / Path("Brightness-Control")
|
def payload_apple_private_frameworks_path_accel(self):
|
||||||
|
return self.payload_apple_private_frameworks_path / Path("Graphics-Acceleration")
|
||||||
|
|
||||||
|
@property
|
||||||
|
def payload_apple_private_frameworks_path_accel_ts2(self):
|
||||||
|
return self.payload_apple_private_frameworks_path / Path("Graphics-Acceleration-TeraScale-2")
|
||||||
|
|
||||||
|
@property
|
||||||
|
def payload_apple_private_frameworks_path_accel_ivy(self):
|
||||||
|
return self.payload_apple_private_frameworks_path / Path("Graphics-Acceleration-Ivy-Bridge")
|
||||||
|
|
||||||
|
@property
|
||||||
|
def payload_apple_private_frameworks_path_brightness(self):
|
||||||
|
return self.payload_apple_private_frameworks_path / Path("Brightness-Control")
|
||||||
|
|
||||||
# Apple Extensions
|
# Apple Extensions
|
||||||
@property
|
@property
|
||||||
def audio_path(self): return self.payload_apple_kexts_path / Path("Audio")
|
def audio_path(self):
|
||||||
|
return self.payload_apple_kexts_path / Path("Audio")
|
||||||
|
|
||||||
# GPU Kexts and Bundles
|
# GPU Kexts and Bundles
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def legacy_graphics(self): return self.payload_apple_kexts_path / Path("Graphics-Acceleration")
|
def legacy_graphics(self):
|
||||||
@property
|
return self.payload_apple_kexts_path / Path("Graphics-Acceleration")
|
||||||
def legacy_nvidia_path(self): return self.legacy_graphics / Path("Nvidia-Tesla-Fermi")
|
|
||||||
@property
|
|
||||||
def legacy_nvidia_kepler_path(self): return self.legacy_graphics / Path("Nvidia-Kepler")
|
|
||||||
@property
|
|
||||||
def legacy_amd_path(self): return self.legacy_graphics / Path("AMD-ATI")
|
|
||||||
@property
|
|
||||||
def legacy_intel_gen1_path(self): return self.legacy_graphics / Path("Intel-Gen5-Ironlake")
|
|
||||||
@property
|
|
||||||
def legacy_intel_gen2_path(self): return self.legacy_graphics / Path("Intel-Gen6-SandyBridge")
|
|
||||||
@property
|
|
||||||
def legacy_intel_gen3_path(self): return self.legacy_graphics / Path("Intel-Gen7-IvyBridge")
|
|
||||||
@property
|
|
||||||
def legacy_general_path(self): return self.legacy_graphics / Path("General-Patches")
|
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def legacy_brightness(self): return self.payload_apple_kexts_path / Path("Brightness-Control")
|
def legacy_nvidia_path(self):
|
||||||
|
return self.legacy_graphics / Path("Nvidia-Tesla")
|
||||||
|
|
||||||
# Apple Frameworks
|
|
||||||
@property
|
@property
|
||||||
def coredisplay_path(self): return self.payload_apple_frameworks_path_accel / Path("CoreDisplay.framework")
|
def legacy_nvidia_kepler_path(self):
|
||||||
@property
|
return self.legacy_graphics / Path("Nvidia-Kepler")
|
||||||
def iosurface_f_path(self): return self.payload_apple_frameworks_path_accel / Path("IOSurface.framework")
|
|
||||||
@property
|
|
||||||
def opengl_path(self): return self.payload_apple_frameworks_path_accel / Path("OpenGL.framework")
|
|
||||||
|
|
||||||
# Apple LaunchDaemons
|
|
||||||
@property
|
@property
|
||||||
def hiddhack_path(self): return self.payload_apple_lauchd_path_accel / Path("IOHID-Fixup.plist")
|
def legacy_amd_path(self):
|
||||||
@property
|
return self.legacy_graphics / Path("AMD-TeraScale")
|
||||||
def legacy_hiddhack_path(self): return self.payload_apple_lauchd_path_accel / Path("HiddHack.plist")
|
|
||||||
|
|
||||||
# Apple PrivateFrameworks
|
|
||||||
@property
|
@property
|
||||||
def gpusupport_path(self): return self.payload_apple_private_frameworks_path_accel / Path("GPUSupport.framework")
|
def legacy_amd_path_ts2(self):
|
||||||
|
return self.legacy_graphics / Path("AMD-TeraScale-2")
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def skylight_path(self): return self.payload_apple_private_frameworks_path_accel / Path("SkyLight.framework")
|
def legacy_intel_gen1_path(self):
|
||||||
|
return self.legacy_graphics / Path("Intel-Gen5-Ironlake")
|
||||||
|
|
||||||
|
@property
|
||||||
|
def legacy_intel_gen2_path(self):
|
||||||
|
return self.legacy_graphics / Path("Intel-Gen6-SandyBridge")
|
||||||
|
|
||||||
|
@property
|
||||||
|
def legacy_intel_gen3_path(self):
|
||||||
|
return self.legacy_graphics / Path("Intel-Gen7-IvyBridge")
|
||||||
|
|
||||||
|
@property
|
||||||
|
def legacy_general_path(self):
|
||||||
|
return self.legacy_graphics / Path("General-Patches")
|
||||||
|
|
||||||
|
@property
|
||||||
|
def legacy_brightness(self):
|
||||||
|
return self.payload_apple_kexts_path / Path("Brightness-Control")
|
||||||
|
|
||||||
csr_values = {
|
csr_values = {
|
||||||
"CSR_ALLOW_UNTRUSTED_KEXTS ": False, # 0x1 - Introduced in El Capitan
|
# Source: macOS 11.4 (XNU's csr.h)
|
||||||
"CSR_ALLOW_UNRESTRICTED_FS ": False, # 0x2 - Introduced in El Capitan
|
# https://opensource.apple.com/source/xnu/xnu-7195.121.3/bsd/sys/csr.h.auto.html
|
||||||
"CSR_ALLOW_TASK_FOR_PID ": False, # 0x4 - Introduced in El Capitan
|
"CSR_ALLOW_UNTRUSTED_KEXTS": False, # 0x1 - Allows Unsigned Kexts - Introduced in El Capitan # noqa: E241
|
||||||
"CSR_ALLOW_KERNEL_DEBUGGER ": False, # 0x8 - Introduced in El Capitan
|
"CSR_ALLOW_UNRESTRICTED_FS": False, # 0x2 - File System Access - Introduced in El Capitan # noqa: E241
|
||||||
"CSR_ALLOW_APPLE_INTERNAL ": False, # 0x10 - Introduced in El Capitan
|
"CSR_ALLOW_TASK_FOR_PID": False, # 0x4 - Unrestricted task_for_pid() - Introduced in El Capitan # noqa: E241
|
||||||
"CSR_ALLOW_UNRESTRICTED_DTRACE ": False, # 0x20 - Introduced in El Capitan
|
"CSR_ALLOW_KERNEL_DEBUGGER": False, # 0x8 - Allow Kernel Debugger - Introduced in El Capitan # noqa: E241
|
||||||
"CSR_ALLOW_UNRESTRICTED_NVRAM ": False, # 0x40 - Introduced in El Capitan
|
"CSR_ALLOW_APPLE_INTERNAL": False, # 0x10 - Set AppleInternal Features - Introduced in El Capitan # noqa: E241
|
||||||
"CSR_ALLOW_DEVICE_CONFIGURATION ": False, # 0x80 - Introduced in El Capitan
|
# "CSR_ALLOW_DESTRUCTIVE_DTRACE": False, # 0x20 - Allow destructive DTrace - Deprecated # noqa: E241
|
||||||
"CSR_ALLOW_ANY_RECOVERY_OS ": False, # 0x100 - Introduced in Sierra
|
"CSR_ALLOW_UNRESTRICTED_DTRACE": False, # 0x20 - Unrestricted DTrace usage - Introduced in El Capitan # noqa: E241
|
||||||
"CSR_ALLOW_UNAPPROVED_KEXTS ": False, # 0x200 - Introduced in High Sierra
|
"CSR_ALLOW_UNRESTRICTED_NVRAM": False, # 0x40 - Unrestricted NVRAM write - Introduced in El Capitan # noqa: E241
|
||||||
"CSR_ALLOW_EXECUTABLE_POLICY_OVERRIDE": False, # 0x400 - Introduced in Mojave
|
"CSR_ALLOW_DEVICE_CONFIGURATION": False, # 0x80 - Allow custom DeviceTree (iOS) - Introduced in El Capitan # noqa: E241
|
||||||
"CSR_ALLOW_UNAUTHENTICATED_ROOT ": False, # 0x800 - Introduced in Big Sur
|
"CSR_ALLOW_ANY_RECOVERY_OS": False, # 0x100 - Skip BaseSystem Verification - Introduced in Sierra # noqa: E241
|
||||||
|
"CSR_ALLOW_UNAPPROVED_KEXTS": False, # 0x200 - Allow Unnotarized Kexts - Introduced in High Sierra # noqa: E241
|
||||||
|
"CSR_ALLOW_EXECUTABLE_POLICY_OVERRIDE": False, # 0x400 - Override Executable Policy - Introduced in Mojave # noqa: E241
|
||||||
|
"CSR_ALLOW_UNAUTHENTICATED_ROOT": False, # 0x800 - Allow Root Volume Mounting - Introduced in Big Sur # noqa: E241
|
||||||
}
|
}
|
||||||
|
|
||||||
sbm_values = [
|
root_patch_sip_mojave = [
|
||||||
"j137",
|
# Variables required to root patch in Mojave and Catalina
|
||||||
"j680",
|
"CSR_ALLOW_UNTRUSTED_KEXTS",
|
||||||
"j132",
|
"CSR_ALLOW_UNRESTRICTED_FS",
|
||||||
"j174",
|
"CSR_ALLOW_UNAPPROVED_KEXTS",
|
||||||
"j140k",
|
"CSR_ALLOW_EXECUTABLE_POLICY_OVERRIDE",
|
||||||
"j780",
|
|
||||||
"j213",
|
|
||||||
"j140a",
|
|
||||||
"j152f",
|
|
||||||
"j160",
|
|
||||||
"j230k",
|
|
||||||
"j214k",
|
|
||||||
"j223",
|
|
||||||
"j215",
|
|
||||||
"j185",
|
|
||||||
"j185f",
|
|
||||||
]
|
]
|
||||||
|
|
||||||
|
root_patch_sip_big_sur = [
|
||||||
|
# Variables required to root patch in Big Sur and Monterey
|
||||||
|
"CSR_ALLOW_UNTRUSTED_KEXTS",
|
||||||
|
"CSR_ALLOW_UNRESTRICTED_FS",
|
||||||
|
"CSR_ALLOW_UNAPPROVED_KEXTS",
|
||||||
|
"CSR_ALLOW_EXECUTABLE_POLICY_OVERRIDE",
|
||||||
|
"CSR_ALLOW_UNAUTHENTICATED_ROOT",
|
||||||
|
]
|
||||||
|
|
||||||
|
sbm_values = [
|
||||||
|
"j137", # iMacPro1,1
|
||||||
|
"j680", # MacBookPro15,1
|
||||||
|
"j132", # MacBookPro15,2
|
||||||
|
"j174", # Macmini8,1
|
||||||
|
"j140k", # MacBookAir8,1
|
||||||
|
"j780", # MacBookPro15,3
|
||||||
|
"j213", # MacBookPro15,4
|
||||||
|
"j140a", # MacBookAir8,2
|
||||||
|
"j152f", # MacBookPro16,1
|
||||||
|
"j160", # MacPro7,1
|
||||||
|
"j230k", # MacBookAir9,1
|
||||||
|
"j214k", # MacBookPro16,2
|
||||||
|
"j223", # MacBookPro16,3
|
||||||
|
"j215", # MacBookPro16,4
|
||||||
|
"j185", # iMac20,1
|
||||||
|
"j185f", # iMac20,2
|
||||||
|
]
|
||||||
|
|
||||||
|
sandy_board_id = [
|
||||||
|
"Mac-E43C1C25D4880AD6", # MacBookPro12,1
|
||||||
|
"Mac-06F11F11946D27C5", # MacBookPro11,5
|
||||||
|
"Mac-9F18E312C5C2BF0B", # MacBookAir7,1
|
||||||
|
"Mac-937CB26E2E02BB01", # MacBookAir7,2
|
||||||
|
"Mac-35C5E08120C7EEAF", # Macmini7,1
|
||||||
|
"Mac-7BA5B2D9E42DDD94", # iMacPro1,1
|
||||||
|
]
|
||||||
|
|
||||||
|
board_id = {
|
||||||
|
"MacBook1,1": "Mac-F4208CC8",
|
||||||
|
"MacBook2,1": "Mac-F4208CA9",
|
||||||
|
"MacBook3,1": "Mac-F22788C8",
|
||||||
|
"MacBook4,1": "Mac-F22788A9",
|
||||||
|
"MacBook5,1": "Mac-F42D89C8",
|
||||||
|
"MacBook5,2": "Mac-F22788AA",
|
||||||
|
"MacBook6,1": "Mac-F22C8AC8",
|
||||||
|
"MacBook7,1": "Mac-F22C89C8",
|
||||||
|
"MacBook8,1": "Mac-BE0E8AC46FE800CC",
|
||||||
|
"MacBook9,1": "Mac-9AE82516C7C6B903",
|
||||||
|
"MacBook10,1": "Mac-EE2EBD4B90B839A8",
|
||||||
|
"MacBookAir1,1": "Mac-F42C8CC8",
|
||||||
|
"MacBookAir2,1": "Mac-F42D88C8",
|
||||||
|
"MacBookAir3,1": "Mac-942452F5819B1C1B",
|
||||||
|
"MacBookAir3,2": "Mac-942C5DF58193131B",
|
||||||
|
"MacBookAir4,1": "Mac-C08A6BB70A942AC2",
|
||||||
|
"MacBookAir4,2": "Mac-742912EFDBEE19B3",
|
||||||
|
"MacBookAir5,1": "Mac-66F35F19FE2A0D05",
|
||||||
|
"MacBookAir5,2": "Mac-2E6FAB96566FE58C",
|
||||||
|
"MacBookAir6,1": "Mac-35C1E88140C3E6CF",
|
||||||
|
"MacBookAir6,2": "Mac-7DF21CB3ED6977E5",
|
||||||
|
"MacBookAir7,1": "Mac-9F18E312C5C2BF0B",
|
||||||
|
"MacBookAir7,2": "Mac-937CB26E2E02BB01",
|
||||||
|
"MacBookAir8,1": "Mac-827FAC58A8FDFA22",
|
||||||
|
"MacBookAir8,2": "Mac-226CB3C6A851A671",
|
||||||
|
"MacBookAir9,1": "Mac-0CFF9C7C2B63DF8D",
|
||||||
|
"MacBookPro1,1": "Mac-F425BEC8",
|
||||||
|
"MacBookPro1,2": "Mac-F42DBEC8",
|
||||||
|
"MacBookPro2,1": "Mac-F42189C8",
|
||||||
|
"MacBookPro2,2": "Mac-F42187C8",
|
||||||
|
"MacBookPro3,1": "Mac-F4238BC8",
|
||||||
|
"MacBookPro4,1": "Mac-F42C89C8",
|
||||||
|
"MacBookPro5,1": "Mac-F42D86C8",
|
||||||
|
"MacBookPro5,2": "Mac-F2268EC8",
|
||||||
|
"MacBookPro5,3": "Mac-F22587C8",
|
||||||
|
"MacBookPro5,4": "Mac-F22587A1",
|
||||||
|
"MacBookPro5,5": "Mac-F2268AC8",
|
||||||
|
"MacBookPro6,1": "Mac-F22589C8",
|
||||||
|
"MacBookPro6,2": "Mac-F22586C8",
|
||||||
|
"MacBookPro7,1": "Mac-F222BEC8",
|
||||||
|
"MacBookPro8,1": "Mac-94245B3640C91C81",
|
||||||
|
"MacBookPro8,2": "Mac-94245A3940C91C80",
|
||||||
|
"MacBookPro8,3": "Mac-942459F5819B171B",
|
||||||
|
"MacBookPro9,1": "Mac-4B7AC7E43945597E",
|
||||||
|
"MacBookPro9,2": "Mac-6F01561E16C75D06",
|
||||||
|
"MacBookPro10,1": "Mac-C3EC7CD22292981F",
|
||||||
|
"MacBookPro10,2": "Mac-AFD8A9D944EA4843",
|
||||||
|
"MacBookPro11,1": "Mac-189A3D4F975D5FFC",
|
||||||
|
"MacBookPro11,2": "Mac-3CBD00234E554E41",
|
||||||
|
"MacBookPro11,3": "Mac-2BD1B31983FE1663",
|
||||||
|
"MacBookPro11,4": "Mac-06F11FD93F0323C5",
|
||||||
|
"MacBookPro11,5": "Mac-06F11F11946D27C5",
|
||||||
|
"MacBookPro12,1": "Mac-E43C1C25D4880AD6",
|
||||||
|
"MacBookPro13,1": "Mac-473D31EABEB93F9B",
|
||||||
|
"MacBookPro13,2": "Mac-66E35819EE2D0D05",
|
||||||
|
"MacBookPro13,3": "Mac-A5C67F76ED83108C",
|
||||||
|
"MacBookPro14,1": "Mac-B4831CEBD52A0C4C",
|
||||||
|
"MacBookPro14,2": "Mac-CAD6701F7CEA0921",
|
||||||
|
"MacBookPro14,3": "Mac-551B86E5744E2388",
|
||||||
|
"MacBookPro15,1": "Mac-937A206F2EE63C01",
|
||||||
|
"MacBookPro15,2": "Mac-827FB448E656EC26",
|
||||||
|
"MacBookPro15,3": "Mac-1E7E29AD0135F9BC",
|
||||||
|
"MacBookPro15,4": "Mac-53FDB3D8DB8CA971",
|
||||||
|
"MacBookPro16,1": "Mac-E1008331FDC96864",
|
||||||
|
"MacBookPro16,2": "Mac-5F9802EFE386AA28",
|
||||||
|
"MacBookPro16,3": "Mac-E7203C0F68AA0004",
|
||||||
|
"MacBookPro16,4": "Mac-A61BADE1FDAD7B05",
|
||||||
|
"Macmini1,1": "Mac-F4208EC8",
|
||||||
|
"Macmini2,1": "Mac-F4208EAA",
|
||||||
|
"Macmini3,1": "Mac-F22C86C8",
|
||||||
|
"Macmini4,1": "Mac-F2208EC8",
|
||||||
|
"Macmini5,1": "Mac-8ED6AF5B48C039E1",
|
||||||
|
"Macmini5,2": "Mac-4BC72D62AD45599E",
|
||||||
|
"Macmini5,3": "Mac-7BA5B2794B2CDB12",
|
||||||
|
"Macmini6,1": "Mac-031AEE4D24BFF0B1",
|
||||||
|
"Macmini6,2": "Mac-F65AE981FFA204ED",
|
||||||
|
"Macmini7,1": "Mac-35C5E08120C7EEAF",
|
||||||
|
"Macmini8,1": "Mac-7BA5B2DFE22DDD8C",
|
||||||
|
"iMac4,1": "Mac-F42786C8",
|
||||||
|
"iMac4,2": "Mac-F4218EC8",
|
||||||
|
"iMac5,1": "Mac-F4228EC8",
|
||||||
|
"iMac5,2": "Mac-F4218EC8",
|
||||||
|
"iMac6,1": "Mac-F4218FC8",
|
||||||
|
"iMac7,1": "Mac-F42386C8",
|
||||||
|
"iMac8,1": "Mac-F227BEC8",
|
||||||
|
"iMac9,1": "Mac-F2218FA9",
|
||||||
|
"iMac10,1": "Mac-F221DCC8",
|
||||||
|
# "iMac10,1": "Mac-F2268CC8",
|
||||||
|
"iMac11,1": "Mac-F2268DAE",
|
||||||
|
"iMac11,2": "Mac-F2238AC8",
|
||||||
|
"iMac11,3": "Mac-F2238BAE",
|
||||||
|
"iMac12,1": "Mac-942B5BF58194151B",
|
||||||
|
"iMac12,2": "Mac-942B59F58194171B",
|
||||||
|
"iMac13,1": "Mac-00BE6ED71E35EB86",
|
||||||
|
"iMac13,2": "Mac-FC02E91DDD3FA6A4",
|
||||||
|
"iMac13,3": "Mac-7DF2A3B5E5D671ED",
|
||||||
|
"iMac14,1": "Mac-031B6874CF7F642A",
|
||||||
|
"iMac14,2": "Mac-27ADBB7B4CEE8E61",
|
||||||
|
"iMac14,3": "Mac-77EB7D7DAF985301",
|
||||||
|
"iMac14,4": "Mac-81E3E92DD6088272",
|
||||||
|
"iMac15,1": "Mac-42FD25EABCABB274",
|
||||||
|
"iMac16,1": "Mac-A369DDC4E67F1C45",
|
||||||
|
"iMac16,2": "Mac-FFE5EF870D7BA81A",
|
||||||
|
"iMac17,1": "Mac-DB15BD556843C820",
|
||||||
|
"iMac18,1": "Mac-4B682C642B45593E",
|
||||||
|
"iMac18,2": "Mac-77F17D7DA9285301",
|
||||||
|
"iMac18,3": "Mac-BE088AF8C5EB4FA2",
|
||||||
|
"iMac19,1": "Mac-AA95B1DDAB278B95",
|
||||||
|
"iMac19,2": "Mac-63001698E7A34814",
|
||||||
|
"iMac20,1": "Mac-CFF7D910A743CAAF",
|
||||||
|
"iMac20,2": "Mac-AF89B6D9451A490B",
|
||||||
|
"iMacPro1,1": "Mac-7BA5B2D9E42DDD94",
|
||||||
|
"MacPro1,1": "Mac-F4208DC8",
|
||||||
|
"MacPro2,1": "Mac-F4208DA9",
|
||||||
|
"MacPro3,1": "Mac-F42C88C8",
|
||||||
|
"MacPro4,1": "Mac-F221BEC8",
|
||||||
|
"MacPro5,1": "Mac-F221BEC8",
|
||||||
|
"MacPro6,1": "Mac-F60DEB81FF30ACF6",
|
||||||
|
"MacPro7,1": "Mac-27AD2F918AE68F61",
|
||||||
|
"Xserve1,1": "Mac-F4208AC8",
|
||||||
|
"Xserve2,1": "Mac-F42289C8",
|
||||||
|
"Xserve3,1": "Mac-F223BEC8",
|
||||||
|
}
|
||||||
|
|||||||
@@ -1,93 +0,0 @@
|
|||||||
# Probe devices, return device entries
|
|
||||||
# Copyright (C) 2021 Mykola Grymalyuk
|
|
||||||
from __future__ import print_function
|
|
||||||
|
|
||||||
import binascii
|
|
||||||
import plistlib
|
|
||||||
import subprocess
|
|
||||||
|
|
||||||
from Resources import Constants
|
|
||||||
|
|
||||||
class pci_probe:
|
|
||||||
def __init__(self):
|
|
||||||
self.constants = Constants.Constants()
|
|
||||||
|
|
||||||
def hexswap(self, input_hex: str):
|
|
||||||
hex_pairs = [input_hex[i:i + 2] for i in range(0, len(input_hex), 2)]
|
|
||||||
hex_rev = hex_pairs[::-1]
|
|
||||||
hex_str = "".join(["".join(x) for x in hex_rev])
|
|
||||||
return hex_str.upper()
|
|
||||||
|
|
||||||
# Converts given device IDs to DeviceProperty pathing, requires ACPI pathing as DeviceProperties shouldn't be used otherwise
|
|
||||||
def deviceproperty_probe(self, vendor_id, device_id, acpi_path):
|
|
||||||
gfxutil_output: str = subprocess.run([self.constants.gfxutil_path] + f"-v".split(), stdout=subprocess.PIPE, stderr=subprocess.STDOUT).stdout.decode()
|
|
||||||
try:
|
|
||||||
if acpi_path == "":
|
|
||||||
acpi_path = "No ACPI Path Given"
|
|
||||||
raise IndexError
|
|
||||||
device_path = [line.strip().split("= ", 1)[1] for line in gfxutil_output.split("\n") if f'{vendor_id}:{device_id}'.lower() in line.strip() and acpi_path in line.strip()][0]
|
|
||||||
return device_path
|
|
||||||
except IndexError:
|
|
||||||
print(f"- No DevicePath found for {vendor_id}:{device_id} ({acpi_path})")
|
|
||||||
return ""
|
|
||||||
|
|
||||||
# Returns the device path of parent controller
|
|
||||||
def device_property_parent(self, device_path):
|
|
||||||
device_path_parent = "/".join(device_path.split("/")[:-1])
|
|
||||||
return device_path_parent
|
|
||||||
|
|
||||||
def acpi_strip(self, acpi_path_full):
|
|
||||||
# Strip IOACPIPlane:/_SB, remove 000's, convert ffff into 0 and finally make everything upper case
|
|
||||||
# IOReg | gfxutil
|
|
||||||
# IOACPIPlane:/_SB/PC00@0/DMI0@0 -> /PC00@0/DMI0@0
|
|
||||||
# IOACPIPlane:/_SB/PC03@0/BR3A@0/SL09@ffff -> /PC03@0/BR3A@0/SL09@0
|
|
||||||
# IOACPIPlane:/_SB/PC03@0/M2U0@150000 -> /PC03@0/M2U0@15
|
|
||||||
# IOACPIPlane:/_SB/PC01@0/CHA6@100000 -> /PC01@0/CHA6@10
|
|
||||||
# IOACPIPlane:/_SB/PC00@0/RP09@1d0000/PXSX@0 -> /PC00@0/RP09@1D/PXSX@0
|
|
||||||
# IOACPIPlane:/_SB/PCI0@0/P0P2@10000 -> /PCI0@0/P0P2@1
|
|
||||||
acpi_path = acpi_path_full.replace("IOACPIPlane:/_SB", "")
|
|
||||||
acpi_path = acpi_path.replace("0000", "")
|
|
||||||
acpi_path = acpi_path.replace("ffff", "0")
|
|
||||||
acpi_path = acpi_path.upper()
|
|
||||||
return acpi_path
|
|
||||||
|
|
||||||
# Note gpu_probe should only be used on IGPU and GFX0 entries
|
|
||||||
def gpu_probe(self, gpu_type):
|
|
||||||
try:
|
|
||||||
devices = plistlib.loads(subprocess.run(f"ioreg -r -n {gpu_type} -a".split(), stdout=subprocess.PIPE).stdout.decode().strip().encode())
|
|
||||||
vendor_id = self.hexswap(binascii.hexlify(devices[0]["vendor-id"]).decode()[:4])
|
|
||||||
device_id = self.hexswap(binascii.hexlify(devices[0]["device-id"]).decode()[:4])
|
|
||||||
try:
|
|
||||||
acpi_path = devices[0]["acpi-path"]
|
|
||||||
acpi_path = self.acpi_strip(acpi_path)
|
|
||||||
return vendor_id, device_id, acpi_path
|
|
||||||
except KeyError:
|
|
||||||
print(f"- No ACPI entry found for {gpu_type}")
|
|
||||||
return vendor_id, device_id, ""
|
|
||||||
except ValueError:
|
|
||||||
print(f"- No IOService entry found for {gpu_type} (V)")
|
|
||||||
return "", "", ""
|
|
||||||
except IndexError:
|
|
||||||
print(f"- No IOService entry found for {gpu_type} (I)")
|
|
||||||
return "", "", "", ""
|
|
||||||
|
|
||||||
def wifi_probe(self):
|
|
||||||
devices = plistlib.loads(subprocess.run("ioreg -c IOPCIDevice -r -d2 -a".split(), stdout=subprocess.PIPE).stdout.decode().strip().encode())
|
|
||||||
try:
|
|
||||||
devices = [i for i in devices if i["class-code"] == binascii.unhexlify(self.constants.classcode_wifi)]
|
|
||||||
vendor_id = self.hexswap(binascii.hexlify(devices[0]["vendor-id"]).decode()[:4])
|
|
||||||
device_id = self.hexswap(binascii.hexlify(devices[0]["device-id"]).decode()[:4])
|
|
||||||
ioname = devices[0]["IOName"]
|
|
||||||
try:
|
|
||||||
acpi_path = devices[0]["acpi-path"]
|
|
||||||
acpi_path = self.acpi_strip(acpi_path)
|
|
||||||
return vendor_id, device_id, ioname, acpi_path
|
|
||||||
except KeyError:
|
|
||||||
print(f"- No ACPI entry found for {vendor_id}:{device_id}")
|
|
||||||
return vendor_id, device_id, ioname, ""
|
|
||||||
except ValueError:
|
|
||||||
print(f"- No IOService entry found for Wireless Card (V)")
|
|
||||||
return "", "", "", ""
|
|
||||||
except IndexError:
|
|
||||||
print(f"- No IOService entry found for Wireless Card (I)")
|
|
||||||
return "", "", "", ""
|
|
||||||
File diff suppressed because it is too large
Load Diff
260
Resources/ModelExample.py
Normal file
260
Resources/ModelExample.py
Normal file
@@ -0,0 +1,260 @@
|
|||||||
|
# Example Hardware probe of multiple models
|
||||||
|
# To be used when running validation tests
|
||||||
|
from Resources import device_probe
|
||||||
|
|
||||||
|
class MacBook:
|
||||||
|
|
||||||
|
MacBook71 = device_probe.Computer(
|
||||||
|
real_model="MacBook7,1",
|
||||||
|
real_board_id="Mac-F22C89C8",
|
||||||
|
reported_model="MacBook7,1",
|
||||||
|
reported_board_id="Mac-F22C89C8",
|
||||||
|
gpus=[
|
||||||
|
device_probe.NVIDIA(vendor_id=4318, device_id=2208, class_code=196608, name="IGPU", model="NVIDIA GeForce 320M", pci_path="PciRoot(0x0)/Pci(0x2,0x0)"),
|
||||||
|
],
|
||||||
|
igpu=device_probe.NVIDIA(vendor_id=4318, device_id=2208, class_code=196608, name="IGPU", model="NVIDIA GeForce 320M", pci_path="PciRoot(0x0)/Pci(0x2,0x0)"),
|
||||||
|
dgpu=None,
|
||||||
|
storage=[
|
||||||
|
device_probe.SATAController(vendor_id=4318, device_id=3464, class_code=67073, name="SATA", model=None, pci_path="PciRoot(0x0)/Pci(0xa,0x0)"),
|
||||||
|
],
|
||||||
|
wifi=device_probe.Broadcom(vendor_id=5348, device_id=17235, class_code=163840, name="ARPT", model=None, pci_path="PciRoot(0x0)/Pci(0x15,0x0)/Pci(0x0,0x0)"),
|
||||||
|
cpu=device_probe.CPU(
|
||||||
|
name="Intel(R) Core(TM)2 Duo CPU P8600 @ 2.40GHz",
|
||||||
|
flags=["FPU", "VME", "DE", "PSE", "TSC", "MSR", "PAE", "MCE", "CX8", "APIC", "SEP", "MTRR", "PGE", "MCA", "CMOV", "PAT", "PSE36", "CLFSH", "DS", "ACPI", "MMX", "FXSR", "SSE", "SSE2", "SS", "HTT", "TM", "PBE", "SSE3", "DTES64", "MON", "DSCPL", "VMX", "SMX", "EST", "TM2", "SSSE3", "CX16", "TPR", "PDCM", "SSE4.1"],
|
||||||
|
),
|
||||||
|
oclp_version=None,
|
||||||
|
opencore_version=None,
|
||||||
|
)
|
||||||
|
|
||||||
|
class MacBookPro:
|
||||||
|
|
||||||
|
MacBookPro92_Stock = device_probe.Computer(
|
||||||
|
real_model="MacBookPro9,2",
|
||||||
|
real_board_id="Mac-6F01561E16C75D06",
|
||||||
|
reported_model="MacBookPro9,2",
|
||||||
|
reported_board_id="Mac-6F01561E16C75D06",
|
||||||
|
gpus=[
|
||||||
|
device_probe.Intel(vendor_id=32902, device_id=358, class_code=196608, name="IGPU", model="Intel HD Graphics 4000", pci_path="PciRoot(0x0)/Pci(0x2,0x0)")
|
||||||
|
],
|
||||||
|
igpu=device_probe.Intel(vendor_id=32902, device_id=358, class_code=196608, name="IGPU", model="Intel HD Graphics 4000", pci_path="PciRoot(0x0)/Pci(0x2,0x0)"),
|
||||||
|
dgpu=None,
|
||||||
|
storage=[device_probe.SATAController(vendor_id=32902, device_id=7683, class_code=67073, name="SATA", model=None, pci_path="PciRoot(0x0)/Pci(0x1f,0x2)")],
|
||||||
|
wifi=device_probe.Broadcom(vendor_id=5348, device_id=17201, class_code=163840, name="ARPT", model=None, pci_path="PciRoot(0x0)/Pci(0x1c,0x1)/Pci(0x0,0x0)"),
|
||||||
|
cpu=device_probe.CPU(
|
||||||
|
name='Intel(R) Core(TM) i5-3210M CPU @ 2.50GHz',
|
||||||
|
flags=['FPU', 'VME', 'DE', 'PSE', 'TSC', 'MSR', 'PAE', 'MCE', 'CX8', 'APIC', 'SEP', 'MTRR', 'PGE', 'MCA', 'CMOV', 'PAT', 'PSE36', 'CLFSH', 'DS', 'ACPI', 'MMX', 'FXSR', 'SSE', 'SSE2', 'SS', 'HTT', 'TM', 'PBE', 'SSE3', 'PCLMULQDQ', 'DTES64', 'MON', 'DSCPL', 'VMX', 'EST', 'TM2', 'SSSE3', 'CX16', 'TPR', 'PDCM', 'SSE4.1', 'SSE4.2', 'x2APIC', 'POPCNT', 'AES', 'PCID', 'XSAVE', 'OSXSAVE', 'TSCTMR', 'AVX1.0', 'RDRAND', 'F16C']
|
||||||
|
),
|
||||||
|
oclp_version=None,
|
||||||
|
opencore_version=None,
|
||||||
|
)
|
||||||
|
|
||||||
|
MacBookPro171_Stock = device_probe.Computer(
|
||||||
|
# Run under Rosetta
|
||||||
|
real_model="MacBookPro17,1",
|
||||||
|
real_board_id="J293",
|
||||||
|
reported_model="MacBookPro17,1",
|
||||||
|
reported_board_id="J293",
|
||||||
|
gpus=[device_probe.AMD(vendor_id=4098, device_id=26640, class_code=196608, name="display", model="Unknown Unknown", pci_path="")],
|
||||||
|
igpu=None,
|
||||||
|
dgpu=None,
|
||||||
|
storage=[],
|
||||||
|
wifi=device_probe.Broadcom(vendor_id=5348, device_id=17445, class_code=163840, name="wlan", model=None, pci_path=""),
|
||||||
|
cpu=device_probe.CPU(
|
||||||
|
name="Apple M1",
|
||||||
|
flags=["FPU", "VME", "DE", "PSE", "TSC", "MSR", "PAE", "MCE", "CX8", "APIC", "SEP", "MTRR", "PGE", "MCA", "CMOV", "PAT", "PSE36", "CLFSH", "DS", "ACPI", "MMX", "FXSR", "SSE", "SSE2", "SS", "HTT", "TM", "PBE", "SSE3", "PCLMULQDQ", "DTSE64", "MON", "DSCPL", "VMX", "EST", "TM2", "SSSE3", "CX16", "TPR", "PDCM", "SSE4.1", "SSE4.2", "AES", "SEGLIM64"],
|
||||||
|
),
|
||||||
|
oclp_version=None,
|
||||||
|
opencore_version=None,
|
||||||
|
)
|
||||||
|
|
||||||
|
class Macmini:
|
||||||
|
|
||||||
|
Macmini91_Stock = device_probe.Computer(
|
||||||
|
# Run under Rosetta
|
||||||
|
real_model="Macmini9,1",
|
||||||
|
real_board_id="J274",
|
||||||
|
reported_model="Macmini9,1",
|
||||||
|
reported_board_id="J274",
|
||||||
|
gpus=[
|
||||||
|
device_probe.AMD(vendor_id=4098, device_id=26640, class_code=196608, name="display", model="Unknown Unknown", pci_path="", )
|
||||||
|
],
|
||||||
|
igpu=None,
|
||||||
|
dgpu=None,
|
||||||
|
storage=[],
|
||||||
|
wifi=device_probe.Broadcom(vendor_id=5348, device_id=17445, class_code=163840, name="wlan", model=None, pci_path=""),
|
||||||
|
cpu=device_probe.CPU(
|
||||||
|
name="Apple M1",
|
||||||
|
flags=["FPU", "VME", "DE", "PSE", "TSC", "MSR", "PAE", "MCE", "CX8", "APIC", "SEP", "MTRR", "PGE", "MCA", "CMOV", "PAT", "PSE36", "CLFSH", "DS", "ACPI", "MMX", "FXSR", "SSE", "SSE2", "SS", "HTT", "TM", "PBE", "SSE3", "PCLMULQDQ", "DTSE64", "MON", "DSCPL", "VMX", "EST", "TM2", "SSSE3", "CX16", "TPR", "PDCM", "SSE4.1", "SSE4.2", "AES", "SEGLIM64"]
|
||||||
|
),
|
||||||
|
oclp_version=None,
|
||||||
|
opencore_version=None
|
||||||
|
)
|
||||||
|
|
||||||
|
class iMac:
|
||||||
|
|
||||||
|
iMac81_Stock = device_probe.Computer(
|
||||||
|
# Stock Model
|
||||||
|
real_model="iMac8,1",
|
||||||
|
real_board_id="Mac-F226BEC8",
|
||||||
|
reported_model="iMac8,1",
|
||||||
|
reported_board_id="Mac-F226BEC8",
|
||||||
|
gpus=[
|
||||||
|
device_probe.AMD(vendor_id=4098, device_id=38088, class_code=196608, name="GFX0", model="ATI Radeon HD 2400", pci_path="PciRoot(0x0)/Pci(0x1,0x0)/Pci(0x0,0x0)")
|
||||||
|
],
|
||||||
|
igpu=None,
|
||||||
|
dgpu=device_probe.AMD(vendor_id=4098, device_id=38088, class_code=196608, name="GFX0", model="ATI Radeon HD 2400", pci_path="PciRoot(0x0)/Pci(0x1,0x0)/Pci(0x0,0x0)"),
|
||||||
|
storage=[
|
||||||
|
device_probe.SATAController(vendor_id=32902, device_id=10281, class_code=67073, name="SATA", model=None, pci_path="PciRoot(0x0)/Pci(0x1f,0x2)")
|
||||||
|
],
|
||||||
|
wifi=device_probe.Broadcom(vendor_id=5348, device_id=17192, class_code=163840, name="ARPT", model=None, pci_path="PciRoot(0x0)/Pci(0x1c,0x4)/Pci(0x0,0x0)"),
|
||||||
|
cpu=device_probe.CPU(
|
||||||
|
name="Intel(R) Core(TM)2 Duo CPU E8135 @ 2.40GHz",
|
||||||
|
flags=["FPU", "VME", "DE", "PSE", "TSC", "MSR", "PAE", "MCE", "CX8", "APIC", "SEP", "MTRR", "PGE", "MCA", "CMOV", "PAT", "PSE36", "CLFSH", "DS", "ACPI", "MMX", "FXSR", "SSE", "SSE2", "SS", "HTT", "TM", "PBE", "SSE3", "DTES64", "MON", "DSCPL", "VMX", "EST", "TM2", "SSSE3", "CX16", "TPR", "PDCM", "SSE4.1"]
|
||||||
|
),
|
||||||
|
oclp_version=None,
|
||||||
|
opencore_version=None,
|
||||||
|
)
|
||||||
|
|
||||||
|
iMac112_Stock = device_probe.Computer(
|
||||||
|
# Stock Model
|
||||||
|
real_model="iMac11,2",
|
||||||
|
real_board_id="Mac-F2238AC8",
|
||||||
|
reported_model="iMac11,2",
|
||||||
|
reported_board_id="Mac-F2238AC8",
|
||||||
|
gpus=[
|
||||||
|
device_probe.AMD(vendor_id=4098, device_id=38024, class_code=196608, name="GFX0", model="ATI Radeon HD 4670", pci_path="PciRoot(0x0)/Pci(0x1,0x0)/Pci(0x0,0x0)")
|
||||||
|
],
|
||||||
|
igpu=None,
|
||||||
|
dgpu=device_probe.AMD(vendor_id=4098, device_id=38024, class_code=196608, name="GFX0", model="ATI Radeon HD 4670", pci_path="PciRoot(0x0)/Pci(0x1,0x0)/Pci(0x0,0x0)"),
|
||||||
|
storage=[
|
||||||
|
device_probe.SATAController(vendor_id=32902, device_id=15138, class_code=67073, name="SATA", model=None, pci_path="PciRoot(0x0)/Pci(0x1f,0x2)")
|
||||||
|
],
|
||||||
|
wifi=device_probe.Atheros(vendor_id=5772, device_id=42, class_code=163840, name="ARPT", model=None, pci_path="PciRoot(0x0)/Pci(0x1c,0x1)/Pci(0x0,0x0)"),
|
||||||
|
cpu=device_probe.CPU(
|
||||||
|
name="Intel(R) Core(TM) i3 CPU 540 @ 3.07GHz",
|
||||||
|
flags=["FPU", "VME", "DE", "PSE", "TSC", "MSR", "PAE", "MCE", "CX8", "APIC", "SEP", "MTRR", "PGE", "MCA", "CMOV", "PAT", "PSE36", "CLFSH", "DS", "ACPI", "MMX", "FXSR", "SSE", "SSE2", "SS", "HTT", "TM", "PBE", "SSE3", "DTES64", "MON", "DSCPL", "VMX", "EST", "TM2", "SSSE3", "CX16", "TPR", "PDCM", "SSE4.1", "SSE4.2", "POPCNT", "PCID"]
|
||||||
|
),
|
||||||
|
oclp_version=None,
|
||||||
|
opencore_version=None,
|
||||||
|
)
|
||||||
|
|
||||||
|
iMac122_Upgraded = device_probe.Computer(
|
||||||
|
real_model="iMac12,2",
|
||||||
|
real_board_id="Mac-942B59F58194171B",
|
||||||
|
reported_model="iMac12,2",
|
||||||
|
reported_board_id="Mac-942B59F58194171B",
|
||||||
|
gpus=[
|
||||||
|
device_probe.Intel(vendor_id=32902, device_id=258, class_code=196608, name="HD Graphics 3000", model=None, pci_path="PciRoot(0x0)/Pci(0x2,0x0)"),
|
||||||
|
device_probe.AMD(vendor_id=4098, device_id=26600, class_code=196608, name="GFX0", model="Radeon Pro WX4130", pci_path="PciRoot(0x0)/Pci(0x1,0x0)/Pci(0x0,0x0)"),
|
||||||
|
],
|
||||||
|
igpu=device_probe.Intel(vendor_id=32902, device_id=258, class_code=196608, name="HD Graphics 3000", model=None, pci_path="PciRoot(0x0)/Pci(0x2,0x0)"),
|
||||||
|
dgpu=device_probe.AMD(vendor_id=4098, device_id=26600, class_code=196608, name="GFX0", model="Radeon Pro WX4130", pci_path="PciRoot(0x0)/Pci(0x1,0x0)/Pci(0x0,0x0)"),
|
||||||
|
storage=[
|
||||||
|
device_probe.SATAController(vendor_id=32902, device_id=7170, class_code=67073, name="SATA", model=None, pci_path="PciRoot(0x0)/Pci(0x1f,0x2)")
|
||||||
|
],
|
||||||
|
wifi=device_probe.Broadcom(vendor_id=5348, device_id=17338, class_code=163840, name="ARPT", model=None, pci_path="PciRoot(0x0)/Pci(0x1c,0x1)/Pci(0x0,0x0)"),
|
||||||
|
cpu=device_probe.CPU(
|
||||||
|
name="Intel(R) Core(TM) i7-2600 CPU @ 3.40GHz",
|
||||||
|
flags=["FPU", "VME", "DE", "PSE", "TSC", "MSR", "PAE", "MCE", "CX8", "APIC", "SEP", "MTRR", "PGE", "MCA", "CMOV", "PAT", "PSE36", "CLFSH", "DS", "ACPI", "MMX", "FXSR", "SSE", "SSE2", "SS", "HTT", "TM", "PBE", "SSE3", "PCLMULQDQ", "DTES64", "MON", "DSCPL", "VMX", "SMX", "EST", "TM2", "SSSE3", "CX16", "TPR", "PDCM", "SSE4.1", "SSE4.2", "xAPIC", "POPCNT", "AES", "PCID", "XSAVE", "OSXSAVE", "TSCTMR", "AVX1.0"]
|
||||||
|
),
|
||||||
|
oclp_version=None,
|
||||||
|
opencore_version=None,
|
||||||
|
)
|
||||||
|
|
||||||
|
class MacPro:
|
||||||
|
|
||||||
|
MacPro31_Stock = device_probe.Computer(
|
||||||
|
# Stock Model, stock TS1 GPU and no Wifi card
|
||||||
|
real_model="MacPro3,1",
|
||||||
|
real_board_id="Mac-F42C88C8",
|
||||||
|
reported_model="MacPro3,1",
|
||||||
|
reported_board_id="Mac-F42C88C8",
|
||||||
|
gpus=[
|
||||||
|
device_probe.AMD(vendor_id=4098, device_id=38272, class_code=196608, name="GFX0", model="ATI Radeon HD 2600", pci_path="PciRoot(0x0)/Pci(0x5,0x0)/Pci(0x0,0x0)")
|
||||||
|
],
|
||||||
|
igpu=None,
|
||||||
|
dgpu=device_probe.AMD(vendor_id=4098, device_id=38272, class_code=196608, name="GFX0", model="ATI Radeon HD 2600", pci_path="PciRoot(0x0)/Pci(0x5,0x0)/Pci(0x0,0x0)"),
|
||||||
|
storage=[
|
||||||
|
device_probe.SATAController(vendor_id=32902, device_id=9857, class_code=67073, name="SATA", model=None, pci_path="PciRoot(0x0)/Pci(0x1f,0x2)")
|
||||||
|
],
|
||||||
|
wifi=None,
|
||||||
|
cpu=device_probe.CPU(
|
||||||
|
name="Intel(R) Xeon(R) CPU X5482 @ 3.20GHz",
|
||||||
|
flags=["FPU", "VME", "DE", "PSE", "TSC", "MSR", "PAE", "MCE", "CX8", "APIC", "SEP", "MTRR", "PGE", "MCA", "CMOV", "PAT", "PSE36", "CLFSH", "DS", "ACPI", "MMX", "FXSR", "SSE", "SSE2", "SS", "HTT", "TM", "PBE", "SSE3", "DTES64", "MON", "DSCPL", "VMX", "EST", "TM2", "SSSE3", "CX16", "TPR", "PDCM", "SSE4.1"],
|
||||||
|
),
|
||||||
|
oclp_version=None,
|
||||||
|
opencore_version=None,
|
||||||
|
)
|
||||||
|
|
||||||
|
MacPro31_Upgrade = device_probe.Computer(
|
||||||
|
# Upgraded Model, TS2 GPU and El-Capitan era Wifi card
|
||||||
|
real_model="MacPro3,1",
|
||||||
|
real_board_id="Mac-F42C88C8",
|
||||||
|
reported_model="MacPro3,1",
|
||||||
|
reported_board_id="Mac-F42C88C8",
|
||||||
|
gpus=[
|
||||||
|
device_probe.AMD(vendor_id=4098, device_id=26808, class_code=196608, name="GFX0", model="ATI Radeon HD 5770", pci_path="PciRoot(0x0)/Pci(0x5,0x0)/Pci(0x0,0x0)")
|
||||||
|
],
|
||||||
|
igpu=None,
|
||||||
|
dgpu=device_probe.AMD(vendor_id=4098, device_id=26808, class_code=196608, name="GFX0", model="ATI Radeon HD 5770", pci_path="PciRoot(0x0)/Pci(0x5,0x0)/Pci(0x0,0x0)"),
|
||||||
|
storage=[
|
||||||
|
device_probe.SATAController(vendor_id=32902, device_id=9857, class_code=67073, name="SATA", model=None, pci_path="PciRoot(0x0)/Pci(0x1f,0x2)")
|
||||||
|
],
|
||||||
|
wifi=device_probe.Broadcom(
|
||||||
|
vendor_id=5348, device_id=17192, class_code=163840, name="ARPT", model=None, pci_path="PciRoot(0x0)/Pci(0x1c,0x3)/Pci(0x0,0x0)"
|
||||||
|
),
|
||||||
|
cpu=device_probe.CPU(
|
||||||
|
name="Intel(R) Xeon(R) CPU X5482 @ 3.20GHz",
|
||||||
|
flags=["FPU", "VME", "DE", "PSE", "TSC", "MSR", "PAE", "MCE", "CX8", "APIC", "SEP", "MTRR", "PGE", "MCA", "CMOV", "PAT", "PSE36", "CLFSH", "DS", "ACPI", "MMX", "FXSR", "SSE", "SSE2", "SS", "HTT", "TM", "PBE", "SSE3", "DTES64", "MON", "DSCPL", "VMX", "EST", "TM2", "SSSE3", "CX16", "TPR", "PDCM", "SSE4.1"],
|
||||||
|
),
|
||||||
|
oclp_version=None,
|
||||||
|
opencore_version=None,
|
||||||
|
)
|
||||||
|
|
||||||
|
MacPro31_Modern_AMD = device_probe.Computer(
|
||||||
|
# Upgraded Model, Polaris GPU and BCM94360CD
|
||||||
|
real_model="MacPro3,1",
|
||||||
|
real_board_id="Mac-F42C88C8",
|
||||||
|
reported_model="MacPro3,1",
|
||||||
|
reported_board_id="Mac-F42C88C8",
|
||||||
|
gpus=[
|
||||||
|
device_probe.AMD(vendor_id=4098, device_id=26591, class_code=196608, name="GFX0", model="Radeon RX 470/570", pci_path="PciRoot(0x0)/Pci(0x5,0x0)/Pci(0x0,0x0)")
|
||||||
|
],
|
||||||
|
igpu=None,
|
||||||
|
dgpu=device_probe.AMD(vendor_id=4098, device_id=26591, class_code=196608, name="GFX0", model="Radeon RX 470/570", pci_path="PciRoot(0x0)/Pci(0x5,0x0)/Pci(0x0,0x0)"),
|
||||||
|
storage=[
|
||||||
|
device_probe.SATAController(vendor_id=32902, device_id=9857, class_code=67073, name="SATA", model=None, pci_path="PciRoot(0x0)/Pci(0x1f,0x2)")
|
||||||
|
],
|
||||||
|
wifi=device_probe.Broadcom(
|
||||||
|
vendor_id=5348, device_id=17312, class_code=163840, name="ARPT", model=None, pci_path="PciRoot(0x0)/Pci(0x1c,0x3)/Pci(0x0,0x0)"
|
||||||
|
),
|
||||||
|
cpu=device_probe.CPU(
|
||||||
|
name="Intel(R) Xeon(R) CPU X5482 @ 3.20GHz",
|
||||||
|
flags=["FPU", "VME", "DE", "PSE", "TSC", "MSR", "PAE", "MCE", "CX8", "APIC", "SEP", "MTRR", "PGE", "MCA", "CMOV", "PAT", "PSE36", "CLFSH", "DS", "ACPI", "MMX", "FXSR", "SSE", "SSE2", "SS", "HTT", "TM", "PBE", "SSE3", "DTES64", "MON", "DSCPL", "VMX", "EST", "TM2", "SSSE3", "CX16", "TPR", "PDCM", "SSE4.1"],
|
||||||
|
),
|
||||||
|
oclp_version=None,
|
||||||
|
opencore_version=None,
|
||||||
|
)
|
||||||
|
|
||||||
|
MacPro31_Modern_Kepler = device_probe.Computer(
|
||||||
|
# Upgraded Model, Kepler GPU and BCM94360CD
|
||||||
|
real_model="MacPro3,1",
|
||||||
|
real_board_id="Mac-F42C88C8",
|
||||||
|
reported_model="MacPro3,1",
|
||||||
|
reported_board_id="Mac-F42C88C8",
|
||||||
|
gpus=[device_probe.NVIDIA(vendor_id=4318, device_id=4737, class_code=196608, name="GFX0", model="NVIDIA GeForce GT 710", pci_path="PciRoot(0x0)/Pci(0x5,0x0)/Pci(0x0,0x0)")],
|
||||||
|
igpu=None,
|
||||||
|
dgpu=device_probe.NVIDIA(vendor_id=4318, device_id=4737, class_code=196608, name="GFX0", model="NVIDIA GeForce GT 710", pci_path="PciRoot(0x0)/Pci(0x5,0x0)/Pci(0x0,0x0)"),
|
||||||
|
storage=[
|
||||||
|
device_probe.SATAController(vendor_id=32902, device_id=9857, class_code=67073, name="SATA", model=None, pci_path="PciRoot(0x0)/Pci(0x1f,0x2)")
|
||||||
|
],
|
||||||
|
wifi=device_probe.Broadcom(
|
||||||
|
vendor_id=5348, device_id=17312, class_code=163840, name="ARPT", model=None, pci_path="PciRoot(0x0)/Pci(0x1c,0x3)/Pci(0x0,0x0)"
|
||||||
|
),
|
||||||
|
cpu=device_probe.CPU(
|
||||||
|
name="Intel(R) Xeon(R) CPU X5482 @ 3.20GHz",
|
||||||
|
flags=["FPU", "VME", "DE", "PSE", "TSC", "MSR", "PAE", "MCE", "CX8", "APIC", "SEP", "MTRR", "PGE", "MCA", "CMOV", "PAT", "PSE36", "CLFSH", "DS", "ACPI", "MMX", "FXSR", "SSE", "SSE2", "SS", "HTT", "TM", "PBE", "SSE3", "DTES64", "MON", "DSCPL", "VMX", "EST", "TM2", "SSSE3", "CX16", "TPR", "PDCM", "SSE4.1"],
|
||||||
|
),
|
||||||
|
oclp_version=None,
|
||||||
|
opencore_version=None,
|
||||||
|
)
|
||||||
File diff suppressed because it is too large
Load Diff
@@ -4,91 +4,170 @@
|
|||||||
# - Full System/Library Snapshotting (need to research how Apple achieves this)
|
# - Full System/Library Snapshotting (need to research how Apple achieves this)
|
||||||
# - Temporary Work-around: sudo bless --mount /System/Volumes/Update/mnt1 --bootefi --last-sealed-snapshot
|
# - Temporary Work-around: sudo bless --mount /System/Volumes/Update/mnt1 --bootefi --last-sealed-snapshot
|
||||||
# - Work-around battery throttling on laptops with no battery (IOPlatformPluginFamily.kext/Contents/PlugIns/ACPI_SMC_PlatformPlugin.kext/Contents/Resources/)
|
# - Work-around battery throttling on laptops with no battery (IOPlatformPluginFamily.kext/Contents/PlugIns/ACPI_SMC_PlatformPlugin.kext/Contents/Resources/)
|
||||||
from __future__ import print_function
|
|
||||||
|
|
||||||
import plistlib
|
import os
|
||||||
import shutil
|
import shutil
|
||||||
import subprocess
|
import subprocess
|
||||||
import zipfile
|
import zipfile
|
||||||
import os
|
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
|
|
||||||
from Resources import Constants, ModelArray, PCIIDArray, Utilities, DeviceProbe
|
from Resources import Constants, device_probe, ModelArray, SysPatchArray, Utilities
|
||||||
|
|
||||||
|
|
||||||
class PatchSysVolume:
|
class PatchSysVolume:
|
||||||
def __init__(self, model, versions):
|
def __init__(self, model, versions):
|
||||||
self.model = model
|
self.model = model
|
||||||
self.constants: Constants.Constants = versions
|
self.constants: Constants.Constants = versions
|
||||||
|
self.computer = self.constants.computer
|
||||||
|
self.root_mount_path = None
|
||||||
|
self.sip_enabled = True
|
||||||
|
self.sbm_enabled = True
|
||||||
|
self.amfi_enabled = True
|
||||||
|
self.fv_enabled = True
|
||||||
|
self.nvidia_legacy = False
|
||||||
|
self.amd_ts1 = False
|
||||||
|
self.amd_ts2 = False
|
||||||
|
self.iron_gpu = False
|
||||||
|
self.sandy_gpu = False
|
||||||
|
self.ivy_gpu = False
|
||||||
|
self.brightness_legacy = False
|
||||||
|
self.legacy_audio = False
|
||||||
|
self.added_legacy_kexts = False
|
||||||
|
self.amfi_must_disable = False
|
||||||
|
self.check_board_id = False
|
||||||
|
self.bad_board_id = False
|
||||||
|
self.no_patch = True
|
||||||
|
|
||||||
def hexswap(self, input_hex: str):
|
if self.constants.detected_os > self.constants.catalina:
|
||||||
hex_pairs = [input_hex[i:i + 2] for i in range(0, len(input_hex), 2)]
|
# Big Sur and newer use APFS snapshots
|
||||||
hex_rev = hex_pairs[::-1]
|
self.mount_location = "/System/Volumes/Update/mnt1"
|
||||||
hex_str = "".join(["".join(x) for x in hex_rev])
|
|
||||||
return hex_str.upper()
|
|
||||||
|
|
||||||
def csr_decode(self, sip_raw, print_status):
|
|
||||||
sip_int = int.from_bytes(sip_raw, byteorder='little')
|
|
||||||
i = 0
|
|
||||||
for current_sip_bit in self.constants.csr_values:
|
|
||||||
if sip_int & (1 << i):
|
|
||||||
temp = True
|
|
||||||
self.constants.csr_values[current_sip_bit] = True
|
|
||||||
else:
|
|
||||||
temp = False
|
|
||||||
if print_status is True:
|
|
||||||
print(f"- {current_sip_bit}\t {temp}")
|
|
||||||
i = i + 1
|
|
||||||
if ((self.constants.csr_values["CSR_ALLOW_UNTRUSTED_KEXTS "] is True) \
|
|
||||||
and (self.constants.csr_values["CSR_ALLOW_UNRESTRICTED_FS "] is True) \
|
|
||||||
and (self.constants.csr_values["CSR_ALLOW_UNRESTRICTED_DTRACE "] is True) \
|
|
||||||
and (self.constants.csr_values["CSR_ALLOW_UNRESTRICTED_NVRAM "] is True) \
|
|
||||||
and (self.constants.csr_values["CSR_ALLOW_DEVICE_CONFIGURATION "] is True) \
|
|
||||||
and (self.constants.csr_values["CSR_ALLOW_UNAPPROVED_KEXTS "] is True) \
|
|
||||||
and (self.constants.csr_values["CSR_ALLOW_EXECUTABLE_POLICY_OVERRIDE"] is True) \
|
|
||||||
and (self.constants.csr_values["CSR_ALLOW_UNAUTHENTICATED_ROOT "] is True)):
|
|
||||||
self.sip_patch_status = False
|
|
||||||
else:
|
else:
|
||||||
self.sip_patch_status = True
|
self.mount_location = ""
|
||||||
|
|
||||||
def find_mount_root_vol(self, patch):
|
|
||||||
root_partition_info = plistlib.loads(subprocess.run("diskutil info -plist /".split(), stdout=subprocess.PIPE).stdout.decode().strip().encode())
|
|
||||||
self.root_mount_path = root_partition_info["DeviceIdentifier"]
|
|
||||||
self.mount_location = "/System/Volumes/Update/mnt1"
|
|
||||||
self.mount_extensions = f"{self.mount_location}/System/Library/Extensions"
|
self.mount_extensions = f"{self.mount_location}/System/Library/Extensions"
|
||||||
self.mount_frameworks = f"{self.mount_location}/System/Library/Frameworks"
|
self.mount_frameworks = f"{self.mount_location}/System/Library/Frameworks"
|
||||||
self.mount_lauchd = f"{self.mount_location}/System/Library/LaunchDaemons"
|
self.mount_lauchd = f"{self.mount_location}/System/Library/LaunchDaemons"
|
||||||
self.mount_private_frameworks = f"{self.mount_location}/System/Library/PrivateFrameworks"
|
self.mount_private_frameworks = f"{self.mount_location}/System/Library/PrivateFrameworks"
|
||||||
|
|
||||||
|
def elevated(self, *args, **kwargs) -> subprocess.CompletedProcess:
|
||||||
|
if os.getuid() == 0 or self.constants.gui_mode is True:
|
||||||
|
return subprocess.run(*args, **kwargs)
|
||||||
|
else:
|
||||||
|
return subprocess.run(["sudo"] + [args[0][0]] + args[0][1:], **kwargs)
|
||||||
|
|
||||||
|
def find_mount_root_vol(self, patch):
|
||||||
|
self.root_mount_path = Utilities.get_disk_path()
|
||||||
if self.root_mount_path.startswith("disk"):
|
if self.root_mount_path.startswith("disk"):
|
||||||
self.root_mount_path = self.root_mount_path[:-2] if self.root_mount_path.endswith('s1') else self.root_mount_path
|
if self.constants.detected_os == self.constants.catalina:
|
||||||
|
print("- Mounting Catalina Root Volume as writable")
|
||||||
|
self.elevated(["mount", "-uw", f"{self.mount_location}/"], stdout=subprocess.PIPE).stdout.decode().strip().encode()
|
||||||
print(f"- Found Root Volume at: {self.root_mount_path}")
|
print(f"- Found Root Volume at: {self.root_mount_path}")
|
||||||
if Path(self.mount_extensions).exists():
|
if Path(self.mount_extensions).exists():
|
||||||
print("- Root Volume is already mounted")
|
print("- Root Volume is already mounted")
|
||||||
if patch is True:
|
if patch is True:
|
||||||
self.patch_root_vol()
|
self.patch_root_vol()
|
||||||
|
return True
|
||||||
else:
|
else:
|
||||||
self.unpatch_root_vol()
|
self.unpatch_root_vol()
|
||||||
|
return True
|
||||||
else:
|
else:
|
||||||
print("- Mounting drive as writable")
|
if self.constants.detected_os > self.constants.catalina:
|
||||||
subprocess.run(["sudo", "mount", "-o", "nobrowse", "-t", "apfs", f"/dev/{self.root_mount_path}", self.mount_location], stdout=subprocess.PIPE).stdout.decode().strip().encode()
|
print("- Mounting APFS Snapshot as writable")
|
||||||
|
self.elevated(["mount", "-o", "nobrowse", "-t", "apfs", f"/dev/{self.root_mount_path}", self.mount_location], stdout=subprocess.PIPE).stdout.decode().strip().encode()
|
||||||
if Path(self.mount_extensions).exists():
|
if Path(self.mount_extensions).exists():
|
||||||
print("- Successfully mounted the Root Volume")
|
print("- Successfully mounted the Root Volume")
|
||||||
if patch is True:
|
if patch is True:
|
||||||
self.patch_root_vol()
|
self.patch_root_vol()
|
||||||
|
return True
|
||||||
else:
|
else:
|
||||||
self.unpatch_root_vol()
|
self.unpatch_root_vol()
|
||||||
|
return True
|
||||||
else:
|
else:
|
||||||
print("- Failed to mount the Root Volume")
|
print("- Failed to mount the Root Volume")
|
||||||
|
print("- Recommend rebooting the machine and trying to patch again")
|
||||||
|
if self.constants.gui_mode is False:
|
||||||
|
input("- Press [ENTER] to exit: ")
|
||||||
else:
|
else:
|
||||||
print("- Could not find root volume")
|
print("- Could not find root volume")
|
||||||
|
if self.constants.gui_mode is False:
|
||||||
|
input("- Press [ENTER] to exit: ")
|
||||||
|
|
||||||
|
def unpatch_root_vol(self):
|
||||||
|
if self.constants.detected_os > self.constants.catalina:
|
||||||
|
print("- Reverting to last signed APFS snapshot")
|
||||||
|
result = self.elevated(["bless", "--mount", self.mount_location, "--bootefi", "--last-sealed-snapshot"], stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
|
||||||
|
if result.returncode != 0:
|
||||||
|
print("- Unable to revert root volume patches")
|
||||||
|
print("Reason for unpatch Failure:")
|
||||||
|
print(result.stdout.decode())
|
||||||
|
# print("- Failed to revert snapshot via bless, falling back on manual restoration")
|
||||||
|
# self.undo_root_patch()
|
||||||
|
else:
|
||||||
|
print("- Unpatching complete")
|
||||||
|
print("\nPlease reboot the machine for patches to take effect")
|
||||||
|
# else:
|
||||||
|
# self.undo_root_patch()
|
||||||
|
|
||||||
|
def rebuild_snapshot(self):
|
||||||
|
if self.constants.gui_mode is False:
|
||||||
|
input("Press [ENTER] to continue with cache rebuild: ")
|
||||||
|
print("- Rebuilding Kernel Cache (This may take some time)")
|
||||||
|
if self.constants.detected_os > self.constants.catalina:
|
||||||
|
result = self.elevated(["kmutil", "install", "--volume-root", self.mount_location, "--update-all"], stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
|
||||||
|
else:
|
||||||
|
result = self.elevated(["kextcache", "-i", f"{self.mount_location}/"], stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
|
||||||
|
|
||||||
|
# kextcache always returns 0, even if it fails
|
||||||
|
# Check the output for 'KernelCache ID' to see if the cache was successfully rebuilt
|
||||||
|
if result.returncode != 0 or (self.constants.detected_os < self.constants.catalina and "KernelCache ID" not in result.stdout.decode()):
|
||||||
|
self.success_status = False
|
||||||
|
print("- Unable to build new kernel cache")
|
||||||
|
print("\nPlease report this to Github")
|
||||||
|
print("Reason for Patch Failure:")
|
||||||
|
print(result.stdout.decode())
|
||||||
|
print("")
|
||||||
|
print("\nPlease reboot the machine to avoid potential issues rerunning the patcher")
|
||||||
|
if self.constants.gui_mode is False:
|
||||||
|
input("Press [ENTER] to continue")
|
||||||
|
else:
|
||||||
|
self.success_status = True
|
||||||
|
print("- Successfully built new kernel cache")
|
||||||
|
if self.constants.gui_mode is False:
|
||||||
|
if self.constants.detected_os > self.constants.catalina:
|
||||||
|
input("Press [ENTER] to continue with snapshotting")
|
||||||
|
else:
|
||||||
|
input("Press [ENTER] to continue with kernel and dyld cache merging")
|
||||||
|
if self.constants.detected_os > self.constants.catalina:
|
||||||
|
print("- Creating new APFS snapshot")
|
||||||
|
self.elevated(["bless", "--folder", f"{self.mount_location}/System/Library/CoreServices", "--bootefi", "--create-snapshot"], stdout=subprocess.PIPE).stdout.decode().strip().encode()
|
||||||
|
self.unmount_drive()
|
||||||
|
else:
|
||||||
|
if self.constants.detected_os == self.constants.catalina:
|
||||||
|
print("- Merging kernel cache")
|
||||||
|
Utilities.process_status(self.elevated(["kcditto"], stdout=subprocess.PIPE, stderr=subprocess.STDOUT))
|
||||||
|
print("- Merging dyld cache")
|
||||||
|
Utilities.process_status(self.elevated(["update_dyld_shared_cache", "-root", f"{self.mount_location}/"]))
|
||||||
|
print("- Patching complete")
|
||||||
|
print("\nPlease reboot the machine for patches to take effect")
|
||||||
|
if self.amd_ts2 is True:
|
||||||
|
print(
|
||||||
|
"""\nPlease note that with ATI TeraScale 2 GPUs, you may experience colour strobing
|
||||||
|
on reboot. Please use SwitchResX or ResXtreme to force 1 million colours on your
|
||||||
|
monitor to fix this. If you are epileptic, please ask for someone to aid you or
|
||||||
|
set million colour before rebooting"""
|
||||||
|
)
|
||||||
|
if self.constants.gui_mode is False:
|
||||||
|
input("\nPress [ENTER] to continue")
|
||||||
|
|
||||||
|
def unmount_drive(self):
|
||||||
|
print("- Unmounting Root Volume (Don't worry if this fails)")
|
||||||
|
self.elevated(["diskutil", "unmount", self.root_mount_path], stdout=subprocess.PIPE).stdout.decode().strip().encode()
|
||||||
|
|
||||||
def delete_old_binaries(self, vendor_patch):
|
def delete_old_binaries(self, vendor_patch):
|
||||||
for delete_current_kext in vendor_patch:
|
for delete_current_kext in vendor_patch:
|
||||||
delete_path = Path(self.mount_extensions) / Path(delete_current_kext)
|
delete_path = Path(self.mount_extensions) / Path(delete_current_kext)
|
||||||
if Path(delete_path).exists():
|
if Path(delete_path).exists():
|
||||||
print(f"- Deleting {delete_current_kext}")
|
print(f"- Deleting {delete_current_kext}")
|
||||||
subprocess.run(["sudo", "rm", "-R", delete_path], stdout=subprocess.PIPE).stdout.decode().strip().encode()
|
Utilities.process_status(self.elevated(["rm", "-R", delete_path], stdout=subprocess.PIPE, stderr=subprocess.STDOUT))
|
||||||
else:
|
else:
|
||||||
print(f"- Couldn't find {delete_current_kext}, skipping")
|
print(f"- Couldn't find {delete_current_kext}, skipping")
|
||||||
|
|
||||||
@@ -97,190 +176,230 @@ class PatchSysVolume:
|
|||||||
existing_path = Path(self.mount_extensions) / Path(add_current_kext)
|
existing_path = Path(self.mount_extensions) / Path(add_current_kext)
|
||||||
if Path(existing_path).exists():
|
if Path(existing_path).exists():
|
||||||
print(f"- Found conflicting kext, Deleting Root Volume's {add_current_kext}")
|
print(f"- Found conflicting kext, Deleting Root Volume's {add_current_kext}")
|
||||||
subprocess.run(["sudo", "rm", "-R", existing_path], stdout=subprocess.PIPE).stdout.decode().strip().encode()
|
Utilities.process_status(self.elevated(["rm", "-R", existing_path], stdout=subprocess.PIPE, stderr=subprocess.STDOUT))
|
||||||
print(f"- Adding {add_current_kext}")
|
print(f"- Adding {add_current_kext}")
|
||||||
subprocess.run(["sudo", "cp", "-R", f"{vendor_location}/{add_current_kext}", self.mount_extensions], stdout=subprocess.PIPE).stdout.decode().strip().encode()
|
Utilities.process_status(self.elevated(["cp", "-R", f"{vendor_location}/{add_current_kext}", self.mount_extensions], stdout=subprocess.PIPE, stderr=subprocess.STDOUT))
|
||||||
subprocess.run(["sudo", "chmod", "-Rf", "755", f"{self.mount_extensions}/{add_current_kext}"], stdout=subprocess.PIPE).stdout.decode().strip().encode()
|
Utilities.process_status(self.elevated(["chmod", "-Rf", "755", f"{self.mount_extensions}/{add_current_kext}"], stdout=subprocess.PIPE, stderr=subprocess.STDOUT))
|
||||||
subprocess.run(["sudo", "chown", "-Rf", "root:wheel", f"{self.mount_extensions}/{add_current_kext}"], stdout=subprocess.PIPE).stdout.decode().strip().encode()
|
Utilities.process_status(self.elevated(["chown", "-Rf", "root:wheel", f"{self.mount_extensions}/{add_current_kext}"], stdout=subprocess.PIPE, stderr=subprocess.STDOUT))
|
||||||
|
|
||||||
def add_brightness_patch(self):
|
def add_brightness_patch(self):
|
||||||
print("- Merging legacy Brightness Control Patches")
|
self.delete_old_binaries(SysPatchArray.DeleteBrightness)
|
||||||
self.delete_old_binaries(ModelArray.DeleteBrightness)
|
self.add_new_binaries(SysPatchArray.AddBrightness, self.constants.legacy_brightness)
|
||||||
self.add_new_binaries(ModelArray.AddBrightness, self.constants.legacy_brightness)
|
Utilities.process_status(
|
||||||
subprocess.run(["sudo", "ditto", self.constants.payload_apple_private_frameworks_path_brightness, self.mount_private_frameworks], stdout=subprocess.PIPE).stdout.decode().strip().encode()
|
self.elevated(["rsync", "-r", "-i", "-a", f"{self.constants.payload_apple_private_frameworks_path_brightness}/", self.mount_private_frameworks], stdout=subprocess.PIPE)
|
||||||
subprocess.run(["sudo", "chmod", "-Rf", "755", f"{self.mount_private_frameworks}/DisplayServices.framework"], stdout=subprocess.PIPE).stdout.decode().strip().encode()
|
)
|
||||||
subprocess.run(["sudo", "chown", "-Rf", "root:wheel", f"{self.mount_private_frameworks}/DisplayServices.framework"], stdout=subprocess.PIPE).stdout.decode().strip().encode()
|
Utilities.process_status(self.elevated(["chmod", "-Rf", "755", f"{self.mount_private_frameworks}/DisplayServices.framework"], stdout=subprocess.PIPE, stderr=subprocess.STDOUT))
|
||||||
|
Utilities.process_status(self.elevated(["chown", "-Rf", "root:wheel", f"{self.mount_private_frameworks}/DisplayServices.framework"], stdout=subprocess.PIPE, stderr=subprocess.STDOUT))
|
||||||
|
|
||||||
def gpu_accel_patches_11(self):
|
def add_audio_patch(self):
|
||||||
igpu_vendor,igpu_device,igpu_acpi = DeviceProbe.pci_probe().gpu_probe("IGPU")
|
self.delete_old_binaries(SysPatchArray.DeleteVolumeControl)
|
||||||
dgpu_vendor,dgpu_device,dgpu_acpi = DeviceProbe.pci_probe().gpu_probe("GFX0")
|
self.add_new_binaries(SysPatchArray.AddVolumeControl, self.constants.audio_path)
|
||||||
if dgpu_vendor:
|
|
||||||
print(f"- Found GFX0: {dgpu_vendor}:{dgpu_device}")
|
|
||||||
if dgpu_vendor == self.constants.pci_nvidia:
|
|
||||||
if dgpu_device in PCIIDArray.nvidia_ids().tesla_ids or dgpu_device in PCIIDArray.nvidia_ids().fermi_ids:
|
|
||||||
print("- Merging legacy Nvidia Tesla and Fermi Kexts and Bundles")
|
|
||||||
self.delete_old_binaries(ModelArray.DeleteNvidiaAccel11)
|
|
||||||
self.add_new_binaries(ModelArray.AddGeneralAccel, self.constants.legacy_general_path)
|
|
||||||
self.add_new_binaries(ModelArray.AddNvidiaAccel11, self.constants.legacy_nvidia_path)
|
|
||||||
# TODO: Enable below code if macOS 12 drops support
|
|
||||||
#elif dgpu_device in PCIIDArray.nvidia_ids().kepler_ids and self.constants.detected_os > self.constants.big_sur:
|
|
||||||
# print("- Merging legacy Nvidia Kepler Kexts and Bundles")
|
|
||||||
# self.add_new_binaries(ModelArray.AddNvidiaKeplerAccel11, self.constants.legacy_nvidia_kepler_path)
|
|
||||||
elif dgpu_vendor == self.constants.pci_amd_ati:
|
|
||||||
if dgpu_device in PCIIDArray.amd_ids().terascale_1_ids:
|
|
||||||
print("- Merging legacy AMD Kexts and Bundles")
|
|
||||||
self.delete_old_binaries(ModelArray.DeleteAMDAccel11)
|
|
||||||
self.add_new_binaries(ModelArray.AddGeneralAccel, self.constants.legacy_general_path)
|
|
||||||
self.add_new_binaries(ModelArray.AddAMDAccel11, self.constants.legacy_amd_path)
|
|
||||||
if self.model in ["MacBookPro8,2", "MacBookPro8,3"]:
|
|
||||||
# This is used for MacBookPro8,2/3 where dGPU is disabled via NVRAM and still requires AMD framebuffer
|
|
||||||
# For reference:
|
|
||||||
#- deMUX: Don't need the AMD patches
|
|
||||||
#- dGPUs enabled: Don't install the AMD patches (Infinite login loop otherwise)
|
|
||||||
#- dGPUs disabled: Do need the AMD patches (Restores Brightness control)
|
|
||||||
dgpu_status: str = subprocess.run("nvram FA4CE28D-B62F-4C99-9CC3-6815686E30F9:gpu-power-prefs".split(), stdout=subprocess.PIPE, stderr=subprocess.STDOUT).stdout.decode()
|
|
||||||
if dgpu_status.startswith("FA4CE28D-B62F-4C99-9CC3-6815686E30F9:gpu-power-prefs %01"):
|
|
||||||
print("- Detected dGPU is disabled via NVRAM")
|
|
||||||
print("- Merging legacy AMD Kexts and Bundles")
|
|
||||||
self.delete_old_binaries(ModelArray.DeleteAMDAccel11)
|
|
||||||
self.add_new_binaries(ModelArray.AddGeneralAccel, self.constants.legacy_general_path)
|
|
||||||
self.add_new_binaries(ModelArray.AddAMDAccel11, self.constants.legacy_amd_path)
|
|
||||||
else:
|
|
||||||
print("- Cannot install Brightness Control, pleas ensure the dGPU is disabled via NVRAM")
|
|
||||||
if igpu_vendor:
|
|
||||||
print(f"- Found IGPU: {igpu_vendor}:{igpu_device}")
|
|
||||||
if igpu_vendor == self.constants.pci_intel:
|
|
||||||
if igpu_device in PCIIDArray.intel_ids().iron_ids:
|
|
||||||
print("- Merging legacy Intel 1st Gen Kexts and Bundles")
|
|
||||||
self.delete_old_binaries(ModelArray.DeleteNvidiaAccel11)
|
|
||||||
self.add_new_binaries(ModelArray.AddGeneralAccel, self.constants.legacy_general_path)
|
|
||||||
self.add_new_binaries(ModelArray.AddIntelGen1Accel, self.constants.legacy_intel_gen1_path)
|
|
||||||
elif igpu_device in PCIIDArray.intel_ids().sandy_ids:
|
|
||||||
print("- Merging legacy Intel 2nd Gen Kexts and Bundles")
|
|
||||||
self.delete_old_binaries(ModelArray.DeleteNvidiaAccel11)
|
|
||||||
self.add_new_binaries(ModelArray.AddGeneralAccel, self.constants.legacy_general_path)
|
|
||||||
self.add_new_binaries(ModelArray.AddIntelGen2Accel, self.constants.legacy_intel_gen2_path)
|
|
||||||
|
|
||||||
# TODO: Enable below code if macOS 12 drops support
|
def gpu_accel_legacy(self):
|
||||||
#elif igpu_device in PCIIDArray.intel_ids().ivy_ids:
|
if self.constants.detected_os == self.constants.mojave:
|
||||||
# print("- Merging legacy Intel 3rd Gen Kexts and Bundles")
|
print("- Installing General Acceleration Kext patches for Mojave")
|
||||||
# self.add_new_binaries(ModelArray.AddIntelGen3Accel, self.constants.legacy_intel_gen3_path)
|
self.add_new_binaries(SysPatchArray.AddGeneralAccelMojave, self.constants.legacy_general_path)
|
||||||
elif igpu_vendor == self.constants.pci_nvidia:
|
elif self.constants.detected_os == self.constants.catalina:
|
||||||
if not dgpu_vendor:
|
print("- Installing General Acceleration Kext patches for Catalina")
|
||||||
# Avoid patching twice, as Nvidia iGPUs will only have Nvidia dGPUs
|
self.add_new_binaries(SysPatchArray.AddGeneralAccelCatalina, self.constants.legacy_general_path)
|
||||||
print("- Merging legacy Nvidia Kexts and Bundles")
|
elif self.constants.detected_os == self.constants.big_sur:
|
||||||
self.delete_old_binaries(ModelArray.DeleteNvidiaAccel11)
|
print("- Installing General Acceleration Kext patches for Big Sur")
|
||||||
self.add_new_binaries(ModelArray.AddGeneralAccel, self.constants.legacy_general_path)
|
self.add_new_binaries(SysPatchArray.AddGeneralAccel, self.constants.legacy_general_path)
|
||||||
self.add_new_binaries(ModelArray.AddNvidiaAccel11, self.constants.legacy_nvidia_path)
|
|
||||||
|
|
||||||
# Frameworks
|
# Nvidia
|
||||||
print("- Merging legacy Frameworks")
|
def gpu_accel_legacy_nvidia_master(self):
|
||||||
subprocess.run(["sudo", "ditto", self.constants.payload_apple_frameworks_path_accel, self.mount_frameworks], stdout=subprocess.PIPE).stdout.decode().strip().encode()
|
if self.constants.detected_os in [self.constants.mojave, self.constants.catalina]:
|
||||||
|
print("- Installing Nvidia Acceleration Kext patches for Mojave/Catalina")
|
||||||
|
self.gpu_accel_legacy()
|
||||||
|
self.add_new_binaries(SysPatchArray.AddNvidiaAccelLegacy, self.constants.legacy_nvidia_path)
|
||||||
|
elif self.constants.detected_os == self.constants.big_sur:
|
||||||
|
print("- Installing Nvidia Acceleration Kext patches for Big Sur")
|
||||||
|
self.delete_old_binaries(SysPatchArray.DeleteNvidiaAccel11)
|
||||||
|
self.gpu_accel_legacy()
|
||||||
|
self.add_new_binaries(SysPatchArray.AddNvidiaAccel11, self.constants.legacy_nvidia_path)
|
||||||
|
else:
|
||||||
|
print("- Installing basic Nvidia Framebuffer Kext patches for generic OS")
|
||||||
|
self.add_new_binaries(SysPatchArray.AddNvidiaBrightness, self.constants.legacy_nvidia_path)
|
||||||
|
|
||||||
if self.model in ModelArray.LegacyBrightness:
|
# AMD/ATI
|
||||||
self.add_brightness_patch()
|
def gpu_accel_legacy_ts1_master(self):
|
||||||
|
if self.constants.detected_os in [self.constants.mojave, self.constants.catalina]:
|
||||||
|
print("- Installing TeraScale 1 Acceleration Kext patches for Mojave/Catalina")
|
||||||
|
self.gpu_accel_legacy()
|
||||||
|
self.add_new_binaries(SysPatchArray.AddAMDAccelLegacy, self.constants.legacy_amd_path)
|
||||||
|
elif self.constants.detected_os == self.constants.big_sur:
|
||||||
|
print("- Installing TeraScale 1 Acceleration Kext patches for Big Sur")
|
||||||
|
self.delete_old_binaries(SysPatchArray.DeleteAMDAccel11)
|
||||||
|
self.gpu_accel_legacy()
|
||||||
|
self.add_new_binaries(SysPatchArray.AddAMDAccel11, self.constants.legacy_amd_path)
|
||||||
|
else:
|
||||||
|
print("- Installing basic TeraScale 1 Framebuffer Kext patches for generic OS")
|
||||||
|
self.add_new_binaries(SysPatchArray.AddAMDBrightness, self.constants.legacy_amd_path)
|
||||||
|
|
||||||
# LaunchDaemons
|
def gpu_accel_legacy_ts2_master(self):
|
||||||
if Path(self.mount_lauchd / Path("HiddHack.plist")).exists():
|
if self.constants.detected_os in [self.constants.mojave, self.constants.catalina]:
|
||||||
print("- Removing legacy HiddHack")
|
print("- Installing TeraScale 2 Acceleration Kext patches for Mojave/Catalina")
|
||||||
subprocess.run(["sudo", "rm", f"{self.mount_lauchd}/HiddHack.plist"], stdout=subprocess.PIPE).stdout.decode().strip().encode()
|
self.gpu_accel_legacy()
|
||||||
print("- Adding IOHID-Fixup.plist")
|
self.add_new_binaries(SysPatchArray.AddAMDAccelLegacy, self.constants.legacy_amd_path)
|
||||||
subprocess.run(["sudo", "ditto", self.constants.payload_apple_lauchd_path_accel, self.mount_lauchd], stdout=subprocess.PIPE).stdout.decode().strip().encode()
|
elif self.constants.detected_os == self.constants.big_sur:
|
||||||
subprocess.run(["sudo", "chmod", "755", f"{self.mount_lauchd}/IOHID-Fixup.plist"], stdout=subprocess.PIPE).stdout.decode().strip().encode()
|
print("- Installing TeraScale 2 Acceleration Kext patches for Big Sur")
|
||||||
subprocess.run(["sudo", "chown", "root:wheel", f"{self.mount_lauchd}/IOHID-Fixup.plist"], stdout=subprocess.PIPE).stdout.decode().strip().encode()
|
self.delete_old_binaries(SysPatchArray.DeleteAMDAccel11)
|
||||||
|
self.delete_old_binaries(SysPatchArray.DeleteAMDAccel11TS2)
|
||||||
|
self.gpu_accel_legacy()
|
||||||
|
self.add_new_binaries(SysPatchArray.AddAMDAccel11, self.constants.legacy_amd_path)
|
||||||
|
else:
|
||||||
|
print("- Installing basic TeraScale 2 Framebuffer Kext patches for generic OS")
|
||||||
|
self.add_new_binaries(SysPatchArray.AddAMDBrightness, self.constants.legacy_amd_path)
|
||||||
|
|
||||||
# PrivateFrameworks
|
# Intel
|
||||||
print("- Merging legacy PrivateFrameworks")
|
def gpu_accel_legacy_ironlake_master(self):
|
||||||
subprocess.run(["sudo", "ditto", self.constants.payload_apple_private_frameworks_path_accel, self.mount_private_frameworks], stdout=subprocess.PIPE).stdout.decode().strip().encode()
|
if self.constants.detected_os in [self.constants.mojave, self.constants.catalina]:
|
||||||
|
print("- Installing Ironlake Acceleration Kext patches for Mojave/Catalina")
|
||||||
|
self.gpu_accel_legacy()
|
||||||
|
self.add_new_binaries(SysPatchArray.AddIntelGen1Accel, self.constants.legacy_intel_gen1_path)
|
||||||
|
elif self.constants.detected_os == self.constants.big_sur:
|
||||||
|
print("- Installing Ironlake Acceleration Kext patches for Big Sur")
|
||||||
|
self.delete_old_binaries(SysPatchArray.DeleteNvidiaAccel11)
|
||||||
|
self.gpu_accel_legacy()
|
||||||
|
self.add_new_binaries(SysPatchArray.AddIntelGen1Accel, self.constants.legacy_intel_gen1_path)
|
||||||
|
else:
|
||||||
|
print("- Installing basic Ironlake Framebuffer Kext patches for generic OS")
|
||||||
|
self.add_new_binaries(SysPatchArray.AddIntelGen1Accel, self.constants.legacy_intel_gen1_path)
|
||||||
|
|
||||||
# Sets AppKit to Catalina Window Drawing codepath
|
def gpu_accel_legacy_sandybridge_master(self):
|
||||||
# Disabled upon ASentientBot request
|
if self.constants.detected_os in [self.constants.mojave, self.constants.catalina]:
|
||||||
#print("- Enabling NSDefenestratorModeEnabled")
|
print("- Installing Sandy Bridge Acceleration Kext patches for Mojave/Catalina")
|
||||||
#subprocess.run("defaults write -g NSDefenestratorModeEnabled -bool true".split(), stdout=subprocess.PIPE).stdout.decode().strip().encode()
|
self.gpu_accel_legacy()
|
||||||
|
self.add_new_binaries(SysPatchArray.AddIntelGen2Accel, self.constants.legacy_intel_gen2_path)
|
||||||
|
elif self.constants.detected_os == self.constants.big_sur:
|
||||||
|
print("- Installing Sandy Bridge Acceleration Kext patches for Big Sur")
|
||||||
|
self.delete_old_binaries(SysPatchArray.DeleteNvidiaAccel11)
|
||||||
|
self.gpu_accel_legacy()
|
||||||
|
self.add_new_binaries(SysPatchArray.AddIntelGen2Accel, self.constants.legacy_intel_gen2_path)
|
||||||
|
else:
|
||||||
|
print("- Installing basic Sandy Bridge Framebuffer Kext patches for generic OS")
|
||||||
|
self.add_new_binaries(SysPatchArray.AddIntelGen2Accel, self.constants.legacy_intel_gen2_path)
|
||||||
|
|
||||||
|
def gpu_framebuffer_ivybridge_master(self):
|
||||||
|
if self.constants.detected_os == self.constants.monterey:
|
||||||
|
print("- Installing IvyBridge Acceleration Kext patches for Monterey")
|
||||||
|
self.add_new_binaries(SysPatchArray.AddIntelGen3Accel, self.constants.legacy_intel_gen3_path)
|
||||||
|
print("- Fixing Acceleration in CoreMedia")
|
||||||
|
Utilities.process_status(subprocess.run(["defaults", "write", "com.apple.coremedia", "hardwareVideoDecoder", "-string", "enable"], stdout=subprocess.PIPE, stderr=subprocess.STDOUT))
|
||||||
|
print("- Merging Ivy Bridge Frameworks")
|
||||||
|
Utilities.process_status(
|
||||||
|
self.elevated(["rsync", "-r", "-i", "-a", f"{self.constants.payload_apple_frameworks_path_accel_ivy}/", self.mount_frameworks], stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
|
||||||
|
)
|
||||||
|
print("- Merging Ivy Bridge PrivateFrameworks")
|
||||||
|
Utilities.process_status(
|
||||||
|
self.elevated(["rsync", "-r", "-i", "-a", f"{self.constants.payload_apple_private_frameworks_path_accel_ivy}/", self.mount_private_frameworks], stdout=subprocess.PIPE)
|
||||||
|
)
|
||||||
|
else:
|
||||||
|
print("- Installing basic Ivy Bridge Kext patches for generic OS")
|
||||||
|
self.add_new_binaries(SysPatchArray.AddIntelGen3Accel, self.constants.legacy_intel_gen3_path)
|
||||||
|
|
||||||
|
def gpu_accel_legacy_extended(self):
|
||||||
|
print("- Merging general legacy Frameworks")
|
||||||
|
Utilities.process_status(
|
||||||
|
self.elevated(["rsync", "-r", "-i", "-a", f"{self.constants.payload_apple_frameworks_path_accel}/", self.mount_frameworks], stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
|
||||||
|
)
|
||||||
|
print("- Merging general legacy PrivateFrameworks")
|
||||||
|
Utilities.process_status(self.elevated(["rsync", "-r", "-i", "-a", f"{self.constants.payload_apple_private_frameworks_path_accel}/", self.mount_private_frameworks], stdout=subprocess.PIPE))
|
||||||
|
if self.constants.detected_os > self.constants.catalina:
|
||||||
|
print("- Adding IOHID-Fixup.plist")
|
||||||
|
Utilities.process_status(
|
||||||
|
self.elevated(["rsync", "-r", "-i", "-a", f"{self.constants.payload_apple_lauchd_path_accel}/", self.mount_lauchd], stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
|
||||||
|
)
|
||||||
|
Utilities.process_status(self.elevated(["chmod", "755", f"{self.mount_lauchd}/IOHID-Fixup.plist"], stdout=subprocess.PIPE, stderr=subprocess.STDOUT))
|
||||||
|
Utilities.process_status(self.elevated(["chown", "root:wheel", f"{self.mount_lauchd}/IOHID-Fixup.plist"], stdout=subprocess.PIPE, stderr=subprocess.STDOUT))
|
||||||
|
|
||||||
|
def gpu_accel_legacy_extended_ts2(self):
|
||||||
|
print("- Merging TeraScale 2 legacy Frameworks")
|
||||||
|
Utilities.process_status(
|
||||||
|
self.elevated(["rsync", "-r", "-i", "-a", f"{self.constants.payload_apple_frameworks_path_accel_ts2}/", self.mount_frameworks], stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
|
||||||
|
)
|
||||||
|
print("- Merging TeraScale 2 PrivateFrameworks")
|
||||||
|
Utilities.process_status(
|
||||||
|
self.elevated(["rsync", "-r", "-i", "-a", f"{self.constants.payload_apple_private_frameworks_path_accel_ts2}/", self.mount_private_frameworks], stdout=subprocess.PIPE)
|
||||||
|
)
|
||||||
|
print("- Fixing Acceleration in CMIO")
|
||||||
|
Utilities.process_status(subprocess.run(["defaults", "write", "com.apple.cmio", "CMIO_Unit_Input_ASC.DoNotUseOpenCL", "-bool", "true"], stdout=subprocess.PIPE, stderr=subprocess.STDOUT))
|
||||||
|
|
||||||
def patch_root_vol(self):
|
def patch_root_vol(self):
|
||||||
print(f"- Detecting patches for {self.model}")
|
print(f"- Running patches for {self.model}")
|
||||||
rebuild_required = False
|
# Graphics patches
|
||||||
# TODO: Create Backup of S*/L*/Extensions, Frameworks and PrivateFramework to easily revert changes
|
if self.nvidia_legacy is True:
|
||||||
# APFS snapshotting seems to ignore System Volume changes inconsistently, would like a backup to avoid total brick
|
print("- Installing legacy Nvidia Patches")
|
||||||
# Perhaps a basic py2 script to run in recovery to restore
|
if self.constants.detected_os in self.constants.legacy_accel_support:
|
||||||
# Ensures no .DS_Stores got in
|
print("- Detected supported OS, installing Acceleration Patches")
|
||||||
print("- Preparing Files")
|
self.added_legacy_kexts = True
|
||||||
subprocess.run(["sudo", "find", self.constants.payload_apple_root_path, "-name", "'.DS_Store'", "-delete"], stdout=subprocess.PIPE).stdout.decode().strip().encode()
|
|
||||||
|
|
||||||
if self.model in ModelArray.LegacyGPU or self.constants.assume_legacy is True:
|
|
||||||
dgpu_vendor,dgpu_device,dgpu_acpi = DeviceProbe.pci_probe().gpu_probe("GFX0")
|
|
||||||
if dgpu_vendor and dgpu_vendor == self.constants.pci_amd_ati and (dgpu_device in PCIIDArray.amd_ids().polaris_ids or dgpu_device in PCIIDArray.amd_ids().vega_ids or dgpu_device in PCIIDArray.amd_ids().navi_ids or dgpu_device in PCIIDArray.amd_ids().legacy_gcn_ids):
|
|
||||||
print("- Detected Metal-based AMD GPU, skipping legacy patches")
|
|
||||||
elif dgpu_vendor and dgpu_vendor == self.constants.pci_nvidia and dgpu_device in PCIIDArray.nvidia_ids().kepler_ids:
|
|
||||||
print("- Detected Metal-based Nvidia GPU, skipping legacy patches")
|
|
||||||
else:
|
else:
|
||||||
print("- Detected legacy GPU, attempting legacy acceleration patches")
|
print("- Detected unsupported OS, installing Basic Framebuffer")
|
||||||
self.gpu_accel_patches_11()
|
self.gpu_accel_legacy_nvidia_master()
|
||||||
rebuild_required = True
|
|
||||||
|
|
||||||
if self.model in ["iMac7,1", "iMac8,1"]:
|
elif self.amd_ts1 is True:
|
||||||
|
print("- Installing legacy TeraScale 1 Patches")
|
||||||
|
if self.constants.detected_os in self.constants.legacy_accel_support:
|
||||||
|
print("- Detected supported OS, installing Acceleration Patches")
|
||||||
|
self.added_legacy_kexts = True
|
||||||
|
else:
|
||||||
|
print("- Detected unsupported OS, installing Basic Framebuffer")
|
||||||
|
self.gpu_accel_legacy_ts1_master()
|
||||||
|
|
||||||
|
elif self.amd_ts2 is True:
|
||||||
|
print("- Installing legacy TeraScale 2 Patches")
|
||||||
|
if self.constants.detected_os in self.constants.legacy_accel_support:
|
||||||
|
print("- Detected supported OS, installing Acceleration Patches")
|
||||||
|
self.added_legacy_kexts = True
|
||||||
|
else:
|
||||||
|
print("- Detected unsupported OS, installing Basic Framebuffer")
|
||||||
|
self.gpu_accel_legacy_ts2_master()
|
||||||
|
|
||||||
|
if self.iron_gpu is True:
|
||||||
|
print("- Installing legacy Ironlake Patches")
|
||||||
|
if self.constants.detected_os in self.constants.legacy_accel_support:
|
||||||
|
print("- Detected supported OS, installing Acceleration Patches")
|
||||||
|
self.added_legacy_kexts = True
|
||||||
|
else:
|
||||||
|
print("- Detected unsupported OS, installing Basic Framebuffer")
|
||||||
|
self.gpu_accel_legacy_ironlake_master()
|
||||||
|
|
||||||
|
elif self.sandy_gpu is True:
|
||||||
|
print("- Installing legacy Sandy Bridge Patches")
|
||||||
|
if self.constants.detected_os in self.constants.legacy_accel_support:
|
||||||
|
print("- Detected supported OS, installing Acceleration Patches")
|
||||||
|
self.added_legacy_kexts = True
|
||||||
|
else:
|
||||||
|
print("- Detected unsupported OS, installing Basic Framebuffer")
|
||||||
|
self.gpu_accel_legacy_sandybridge_master()
|
||||||
|
|
||||||
|
elif self.ivy_gpu is True:
|
||||||
|
print("- Installing Ivy Bridge Patches")
|
||||||
|
if self.constants.detected_os == self.constants.monterey:
|
||||||
|
print("- Detected supported OS, installing Acceleration Patches")
|
||||||
|
else:
|
||||||
|
print("- Detected unsupported OS, installing Basic Framebuffer")
|
||||||
|
self.gpu_framebuffer_ivybridge_master()
|
||||||
|
|
||||||
|
if self.amd_ts2 is True and self.constants.detected_os in self.constants.legacy_accel_support:
|
||||||
|
# TeraScale 2 patches must be installed after Intel HD3000
|
||||||
|
self.add_new_binaries(SysPatchArray.AddAMDAccel11TS2, self.constants.legacy_amd_path_ts2)
|
||||||
|
|
||||||
|
if self.added_legacy_kexts is True and self.constants.detected_os in self.constants.legacy_accel_support:
|
||||||
|
self.gpu_accel_legacy_extended()
|
||||||
|
if self.amd_ts2 is True:
|
||||||
|
self.gpu_accel_legacy_extended_ts2()
|
||||||
|
|
||||||
|
# Misc patches
|
||||||
|
if self.brightness_legacy is True:
|
||||||
|
print("- Installing legacy Brightness Control")
|
||||||
|
self.add_brightness_patch()
|
||||||
|
|
||||||
|
if self.legacy_audio is True:
|
||||||
print("- Fixing Volume Control Support")
|
print("- Fixing Volume Control Support")
|
||||||
self.delete_old_binaries(ModelArray.DeleteVolumeControl)
|
self.add_audio_patch()
|
||||||
self.add_new_binaries(ModelArray.AddVolumeControl, self.constants.audio_path)
|
|
||||||
rebuild_required = True
|
|
||||||
|
|
||||||
if rebuild_required is True:
|
self.rebuild_snapshot()
|
||||||
self.rebuild_snapshot()
|
|
||||||
|
|
||||||
def unpatch_root_vol(self):
|
|
||||||
print("- Reverting to last signed APFS snapshot")
|
|
||||||
subprocess.run(["sudo", "bless", "--mount", self.mount_location, "--bootefi", "--last-sealed-snapshot"], stdout=subprocess.PIPE).stdout.decode().strip().encode()
|
|
||||||
|
|
||||||
def rebuild_snapshot(self):
|
|
||||||
if self.constants.gui_mode is False:
|
|
||||||
input("Press [ENTER] to continue with cache rebuild")
|
|
||||||
print("- Rebuilding Kernel Cache (This may take some time)")
|
|
||||||
result = subprocess.run(["sudo", "kmutil", "install", "--volume-root", self.mount_location, "--update-all"], stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
|
|
||||||
|
|
||||||
if result.returncode != 0:
|
|
||||||
self.success_status = False
|
|
||||||
print("- Unable to build new kernel cache")
|
|
||||||
print("\nPlease report this to Github")
|
|
||||||
print("Reason for Patch Failure:")
|
|
||||||
print(result.stdout.decode())
|
|
||||||
print("")
|
|
||||||
else:
|
|
||||||
self.success_status = True
|
|
||||||
print("- Successfully built new kernel cache")
|
|
||||||
if self.constants.gui_mode is False:
|
|
||||||
input("Press [ENTER] to continue with snapshotting")
|
|
||||||
print("- Creating new APFS snapshot")
|
|
||||||
subprocess.run(["sudo", "bless", "--folder", f"{self.mount_location}/System/Library/CoreServices", "--bootefi", "--create-snapshot"], stdout=subprocess.PIPE).stdout.decode().strip().encode()
|
|
||||||
|
|
||||||
def unmount_drive(self):
|
|
||||||
print("- Unmounting Root Volume (Don't worry if this fails)")
|
|
||||||
subprocess.run(["sudo", "diskutil", "unmount", self.root_mount_path], stdout=subprocess.PIPE).stdout.decode().strip().encode()
|
|
||||||
|
|
||||||
def check_status(self):
|
|
||||||
nvram_dump = plistlib.loads(subprocess.run("nvram -x -p".split(), stdout=subprocess.PIPE).stdout.decode().strip().encode())
|
|
||||||
try:
|
|
||||||
self.sip_status = nvram_dump["csr-active-config"]
|
|
||||||
except KeyError:
|
|
||||||
self.sip_status = b'\x00\x00\x00\x00'
|
|
||||||
|
|
||||||
self.smb_model: str = subprocess.run("nvram 94B73556-2197-4702-82A8-3E1337DAFBFB:HardwareModel ".split(), stdout=subprocess.PIPE, stderr=subprocess.STDOUT).stdout.decode()
|
|
||||||
if not self.smb_model.startswith("nvram: Error getting variable"):
|
|
||||||
self.smb_model = [line.strip().split(":HardwareModel ", 1)[1] for line in self.smb_model.split("\n") if line.strip().startswith("94B73556-2197-4702-82A8-3E1337DAFBFB:")][0]
|
|
||||||
if self.smb_model.startswith("j137"):
|
|
||||||
self.smb_status = True
|
|
||||||
else:
|
|
||||||
self.smb_status = False
|
|
||||||
else:
|
|
||||||
self.smb_status = False
|
|
||||||
self.fv_status = True
|
|
||||||
self.fv_status: str = subprocess.run("fdesetup status".split(), stdout=subprocess.PIPE, stderr=subprocess.STDOUT).stdout.decode()
|
|
||||||
if self.fv_status.startswith("FileVault is Off"):
|
|
||||||
self.fv_status = False
|
|
||||||
else:
|
|
||||||
self.fv_status = True
|
|
||||||
self.sip_patch_status = True
|
|
||||||
self.csr_decode(self.sip_status, False)
|
|
||||||
|
|
||||||
def check_files(self):
|
def check_files(self):
|
||||||
if Path(self.constants.payload_apple_root_path).exists():
|
if Path(self.constants.payload_apple_root_path).exists():
|
||||||
@@ -297,101 +416,207 @@ class PatchSysVolume:
|
|||||||
self.download_files()
|
self.download_files()
|
||||||
|
|
||||||
def download_files(self):
|
def download_files(self):
|
||||||
Utilities.cls()
|
if self.constants.detected_os == self.constants.monterey:
|
||||||
print("- Downloading Apple binaries")
|
os_ver = "12-Monterey"
|
||||||
popen_oclp = subprocess.Popen(["curl", "-S", "-L", f"{self.constants.url_apple_binaries}{self.constants.payload_version}.zip", "--output", self.constants.payload_apple_root_path_zip], stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.STDOUT, universal_newlines=True)
|
elif self.constants.detected_os == self.constants.big_sur:
|
||||||
for stdout_line in iter(popen_oclp.stdout.readline, ""):
|
os_ver = "11-Big-Sur"
|
||||||
print(stdout_line, end="")
|
elif self.constants.detected_os == self.constants.catalina:
|
||||||
popen_oclp.stdout.close()
|
os_ver = "10.15-Catalina"
|
||||||
|
elif self.constants.detected_os == self.constants.mojave:
|
||||||
|
os_ver = "10.14-Mojave"
|
||||||
|
else:
|
||||||
|
raise Exception(f"Unsupported OS: {self.constants.detected_os}")
|
||||||
|
link = f"{self.constants.url_patcher_support_pkg}{self.constants.patcher_support_pkg_version}/{os_ver}.zip"
|
||||||
|
|
||||||
|
if Path(self.constants.payload_apple_root_path).exists():
|
||||||
|
print("- Removing old Apple Binaries folder")
|
||||||
|
Path(self.constants.payload_apple_root_path).unlink()
|
||||||
|
if Path(self.constants.payload_apple_root_path_zip).exists():
|
||||||
|
print("- Removing old Apple Binaries zip")
|
||||||
|
Path(self.constants.payload_apple_root_path_zip).unlink()
|
||||||
|
|
||||||
|
Utilities.download_file(link, self.constants.payload_apple_root_path_zip)
|
||||||
|
|
||||||
if self.constants.payload_apple_root_path_zip.exists():
|
if self.constants.payload_apple_root_path_zip.exists():
|
||||||
print("- Download completed")
|
print("- Download completed")
|
||||||
print("- Unzipping download...")
|
print("- Unzipping download...")
|
||||||
try:
|
try:
|
||||||
subprocess.run(["unzip", self.constants.payload_apple_root_path_zip], stdout=subprocess.PIPE, stderr=subprocess.STDOUT, cwd=self.constants.payload_path).stdout.decode()
|
Utilities.process_status(subprocess.run(["unzip", self.constants.payload_apple_root_path_zip], stdout=subprocess.PIPE, stderr=subprocess.STDOUT, cwd=self.constants.payload_path))
|
||||||
print("- Renaming folder")
|
print("- Renaming folder")
|
||||||
os.rename(self.constants.payload_apple_root_path_unzip, self.constants.payload_apple_root_path)
|
os.rename(self.constants.payload_path / Path(os_ver), self.constants.payload_apple_root_path)
|
||||||
|
Path(self.constants.payload_apple_root_path_zip).unlink()
|
||||||
print("- Binaries downloaded to:")
|
print("- Binaries downloaded to:")
|
||||||
print(self.constants.payload_path)
|
print(self.constants.payload_path)
|
||||||
if self.constants.gui_mode is False:
|
if self.constants.gui_mode is False:
|
||||||
input("Press [ENTER] to continue")
|
input("Press [ENTER] to continue")
|
||||||
except zipfile.BadZipFile:
|
except zipfile.BadZipFile:
|
||||||
print("- Couldn't unzip")
|
print("- Couldn't unzip")
|
||||||
os.remove(self.constants.payload_apple_root_path_zip)
|
return
|
||||||
else:
|
else:
|
||||||
print("- Download failed, please verify the below link works:")
|
print("- Download failed, please verify the below link works:")
|
||||||
print(f"{self.constants.url_apple_binaries}{self.constants.payload_version}")
|
print(link)
|
||||||
|
input("Press [ENTER] to continue")
|
||||||
|
|
||||||
def start_patch(self):
|
def detect_gpus(self):
|
||||||
# Check SIP
|
dgpu = self.constants.computer.dgpu
|
||||||
# self.check_files()
|
igpu = self.constants.computer.igpu
|
||||||
if self.constants.custom_model is not None:
|
if self.constants.moj_cat_accel is True:
|
||||||
print("Root Patching must be done on target machine!")
|
non_metal_os = self.constants.high_sierra
|
||||||
elif self.model in ModelArray.NoRootPatch11 and self.constants.assume_legacy is False:
|
|
||||||
print("Root Patching not required for this machine!")
|
|
||||||
elif self.model not in ModelArray.SupportedSMBIOS11 and self.constants.assume_legacy is False:
|
|
||||||
print("Cannot run on this machine, model is unsupported!")
|
|
||||||
elif self.constants.detected_os < self.constants.big_sur:
|
|
||||||
print(f"Cannot run on this OS, requires macOS 11!")
|
|
||||||
else:
|
else:
|
||||||
self.check_status()
|
non_metal_os = self.constants.catalina
|
||||||
Utilities.cls()
|
if dgpu:
|
||||||
if (self.sip_patch_status is False) and (self.smb_status is False):
|
print(f"- Found GFX0: {Utilities.friendly_hex(dgpu.vendor_id)}:{Utilities.friendly_hex(dgpu.device_id)}")
|
||||||
print("- Detected SIP and SecureBootModel are disabled, continuing")
|
if dgpu.arch in [device_probe.NVIDIA.Archs.Tesla, device_probe.NVIDIA.Archs.Fermi]:
|
||||||
if self.constants.gui_mode is False:
|
if self.constants.detected_os > non_metal_os:
|
||||||
input("\nPress [ENTER] to continue")
|
self.nvidia_legacy = True
|
||||||
|
self.amfi_must_disable = True
|
||||||
|
elif dgpu.arch == device_probe.AMD.Archs.TeraScale_1:
|
||||||
|
if self.constants.detected_os > non_metal_os:
|
||||||
|
self.amd_ts1 = True
|
||||||
|
self.amfi_must_disable = True
|
||||||
|
elif dgpu.arch == device_probe.AMD.Archs.TeraScale_2:
|
||||||
|
if self.constants.detected_os > non_metal_os:
|
||||||
|
self.amd_ts2 = True
|
||||||
|
self.amfi_must_disable = True
|
||||||
|
if igpu and igpu.class_code != 0xFFFFFF:
|
||||||
|
print(f"- Found IGPU: {Utilities.friendly_hex(igpu.vendor_id)}:{Utilities.friendly_hex(igpu.device_id)}")
|
||||||
|
if igpu.arch == device_probe.Intel.Archs.Iron_Lake:
|
||||||
|
if self.constants.detected_os > non_metal_os:
|
||||||
|
self.iron_gpu = True
|
||||||
|
self.amfi_must_disable = True
|
||||||
|
elif igpu.arch == device_probe.Intel.Archs.Sandy_Bridge:
|
||||||
|
if self.constants.detected_os > non_metal_os:
|
||||||
|
self.sandy_gpu = True
|
||||||
|
self.amfi_must_disable = True
|
||||||
|
self.check_board_id = True
|
||||||
|
elif igpu.arch == device_probe.Intel.Archs.Ivy_Bridge:
|
||||||
|
if self.constants.detected_os > self.constants.big_sur:
|
||||||
|
self.ivy_gpu = True
|
||||||
|
elif isinstance(igpu, device_probe.NVIDIA):
|
||||||
|
if self.constants.detected_os > non_metal_os:
|
||||||
|
self.nvidia_legacy = True
|
||||||
|
self.amfi_must_disable = True
|
||||||
|
|
||||||
|
def detect_patch_set(self):
|
||||||
|
self.detect_gpus()
|
||||||
|
if self.model in ModelArray.LegacyBrightness:
|
||||||
|
if self.constants.detected_os > self.constants.catalina:
|
||||||
|
self.brightness_legacy = True
|
||||||
|
|
||||||
|
if self.model in ["iMac7,1", "iMac8,1"]:
|
||||||
|
if self.constants.detected_os > self.constants.catalina:
|
||||||
|
self.legacy_audio = True
|
||||||
|
|
||||||
|
Utilities.cls()
|
||||||
|
print("The following patches will be applied:")
|
||||||
|
if self.nvidia_legacy is True:
|
||||||
|
print("- Add Legacy Nvidia Tesla Graphics Patch")
|
||||||
|
elif self.amd_ts1 is True:
|
||||||
|
print("- Add Legacy ATI TeraScale 1 Graphics Patch")
|
||||||
|
elif self.amd_ts2 is True:
|
||||||
|
print("- Add Legacy ATI TeraScale 2 Graphics Patch")
|
||||||
|
if self.iron_gpu is True:
|
||||||
|
print("- Add Legacy Intel IronLake Graphics Patch")
|
||||||
|
elif self.sandy_gpu is True:
|
||||||
|
print("- Add Legacy Intel Sandy Bridge Graphics Patch")
|
||||||
|
elif self.ivy_gpu is True:
|
||||||
|
print("- Add Legacy Intel Ivy Bridge Graphics Patch")
|
||||||
|
if self.brightness_legacy is True:
|
||||||
|
print("- Add Legacy Brightness Control")
|
||||||
|
if self.legacy_audio is True:
|
||||||
|
print("- Add legacy Audio Control")
|
||||||
|
|
||||||
|
self.no_patch = not any(
|
||||||
|
[
|
||||||
|
self.nvidia_legacy,
|
||||||
|
self.amd_ts1,
|
||||||
|
self.amd_ts2,
|
||||||
|
self.iron_gpu,
|
||||||
|
self.sandy_gpu,
|
||||||
|
self.ivy_gpu,
|
||||||
|
self.brightness_legacy,
|
||||||
|
self.legacy_audio,
|
||||||
|
]
|
||||||
|
)
|
||||||
|
|
||||||
|
def verify_patch_allowed(self):
|
||||||
|
sip = self.constants.root_patch_sip_big_sur if self.constants.detected_os > self.constants.catalina else self.constants.root_patch_sip_mojave
|
||||||
|
if sip == self.constants.root_patch_sip_mojave:
|
||||||
|
sip_value = "For Hackintoshes, please set csr-active-config to '03060000' (0x603)\nFor non-OpenCore Macs, please run 'csrutil disable' in RecoveryOS"
|
||||||
|
else:
|
||||||
|
sip_value = (
|
||||||
|
"For Hackintoshes, please set csr-active-config to '030A0000' (0xA03)\nFor non-OpenCore Macs, please run 'csrutil disable' and \n'csrutil authenticated-root disable' in RecoveryOS"
|
||||||
|
)
|
||||||
|
self.sip_enabled, self.sbm_enabled, self.amfi_enabled, self.fv_enabled, self.dosdude_patched = Utilities.patching_status(sip)
|
||||||
|
if self.sip_enabled is True:
|
||||||
|
print("\nCannot patch! Please disable System Integrity Protection (SIP).")
|
||||||
|
print("Disable SIP in Patcher Settings and Rebuild OpenCore\n")
|
||||||
|
print("Ensure the following bits are set for csr-active-config:")
|
||||||
|
print("\n".join(sip))
|
||||||
|
print(sip_value)
|
||||||
|
|
||||||
|
if self.sbm_enabled is True:
|
||||||
|
print("\nCannot patch! Please disable Apple Secure Boot.")
|
||||||
|
print("Disable SecureBootModel in Patcher Settings and Rebuild OpenCore")
|
||||||
|
print("For Hackintoshes, set SecureBootModel to Disabled")
|
||||||
|
|
||||||
|
if self.fv_enabled is True:
|
||||||
|
print("\nCannot patch! Please disable FileVault.")
|
||||||
|
print("Go to System Preferences -> Security and disable FileVault")
|
||||||
|
|
||||||
|
if self.amfi_enabled is True and self.amfi_must_disable is True:
|
||||||
|
print("\nCannot patch! Please disable AMFI.")
|
||||||
|
print("For Hackintoshes, please add amfi_get_out_of_my_way=1 to boot-args")
|
||||||
|
|
||||||
|
if self.check_board_id is True and self.computer.reported_board_id not in self.constants.sandy_board_id:
|
||||||
|
print("\nCannot patch! Board ID not supported by AppleIntelSNBGraphicsFB")
|
||||||
|
print(f"Detected Board ID: {self.computer.reported_board_id}")
|
||||||
|
print("Please ensure your Board ID is listed below:")
|
||||||
|
print("\n".join(self.constants.sandy_board_id))
|
||||||
|
self.bad_board_id = True
|
||||||
|
|
||||||
|
if self.dosdude_patched is True:
|
||||||
|
print("\nCannot patch! Detected machine has already been patched by another patcher")
|
||||||
|
print("Please ensure your install is either clean or patched with OpenCore Legacy Patcher")
|
||||||
|
|
||||||
|
if any(
|
||||||
|
[self.sip_enabled, self.sbm_enabled, self.fv_enabled, self.dosdude_patched, self.amfi_enabled if self.amfi_must_disable else False, self.bad_board_id if self.check_board_id else False]
|
||||||
|
):
|
||||||
|
return False
|
||||||
|
else:
|
||||||
|
return True
|
||||||
|
|
||||||
|
# Entry Function
|
||||||
|
def start_patch(self):
|
||||||
|
print("- Starting Patch Process")
|
||||||
|
print(f"- Determinging Required Patch set for Darwin {self.constants.detected_os}")
|
||||||
|
self.detect_patch_set()
|
||||||
|
if self.no_patch is True:
|
||||||
|
change_menu = None
|
||||||
|
print("- No Root Patches required for your machine!")
|
||||||
|
if self.constants.gui_mode is False:
|
||||||
|
input("\nPress [ENTER] to return to the main menu: ")
|
||||||
|
elif self.constants.gui_mode is False:
|
||||||
|
change_menu = input("Would you like to continue with Root Volume Patching?(y/n): ")
|
||||||
|
else:
|
||||||
|
change_menu = "y"
|
||||||
|
print("Continuing root patching")
|
||||||
|
if change_menu in ["y", "Y"]:
|
||||||
|
print("- Continuing with Patching")
|
||||||
|
print("- Verifying whether Root Patching possible")
|
||||||
|
if self.verify_patch_allowed() is True:
|
||||||
|
print("- Patcher is capable of patching")
|
||||||
self.check_files()
|
self.check_files()
|
||||||
if self.constants.payload_apple_root_path.exists():
|
self.find_mount_root_vol(True)
|
||||||
self.find_mount_root_vol(True)
|
elif self.constants.gui_mode is False:
|
||||||
self.unmount_drive()
|
input("\nPress [ENTER] to return to the main menu: ")
|
||||||
print("- Patching complete")
|
|
||||||
if self.success_status is True:
|
else:
|
||||||
print("\nPlease reboot the machine for patches to take effect")
|
print("- Returning to main menu")
|
||||||
else:
|
|
||||||
print("\nPlease reboot the machine to avoid potential issues rerunning the patcher")
|
|
||||||
if self.sip_patch_status is True:
|
|
||||||
print("SIP set incorrectly, cannot patch on this machine!")
|
|
||||||
print("Please disable SIP and SecureBootModel in Patcher Settings")
|
|
||||||
self.csr_decode(self.sip_status, True)
|
|
||||||
print("")
|
|
||||||
if self.smb_status is True:
|
|
||||||
print("SecureBootModel set incorrectly, unable to patch!")
|
|
||||||
print("Please disable SecureBootModel in Patcher Settings")
|
|
||||||
print("")
|
|
||||||
if self.fv_status is True:
|
|
||||||
print("FileVault enabled, unable to patch!")
|
|
||||||
print("Please disable FileVault in System Preferences")
|
|
||||||
print("")
|
|
||||||
if self.constants.gui_mode is False:
|
|
||||||
input("Press [Enter] to go exit.")
|
|
||||||
|
|
||||||
def start_unpatch(self):
|
def start_unpatch(self):
|
||||||
if self.constants.custom_model is not None:
|
print("- Starting Unpatch Process")
|
||||||
print("Unpatching must be done on target machine!")
|
if self.verify_patch_allowed() is True:
|
||||||
elif self.constants.detected_os < self.constants.big_sur:
|
self.find_mount_root_vol(False)
|
||||||
print(f"Cannot run on this OS, requires macOS 11!")
|
if self.constants.gui_mode is False:
|
||||||
else:
|
input("\nPress [ENTER] to return to the main menu")
|
||||||
self.check_status()
|
|
||||||
Utilities.cls()
|
|
||||||
if (self.sip_patch_status is False) and (self.smb_status is False):
|
|
||||||
print("- Detected SIP and SecureBootModel are disabled, continuing")
|
|
||||||
if self.constants.gui_mode is False:
|
|
||||||
input("\nPress [ENTER] to continue")
|
|
||||||
self.find_mount_root_vol(False)
|
|
||||||
self.unmount_drive()
|
|
||||||
print("- Unpatching complete")
|
|
||||||
print("\nPlease reboot the machine for patches to take effect")
|
|
||||||
if self.sip_patch_status is True:
|
|
||||||
print("SIP set incorrectly, cannot unpatch on this machine!")
|
|
||||||
print("Please disable SIP and SecureBootModel in Patcher Settings")
|
|
||||||
self.csr_decode(self.sip_status, True)
|
|
||||||
print("")
|
|
||||||
if self.smb_status is True:
|
|
||||||
print("SecureBootModel set incorrectly, unable to unpatch!")
|
|
||||||
print("Please disable SecureBootModel in Patcher Settings")
|
|
||||||
print("")
|
|
||||||
if self.fv_status is True:
|
|
||||||
print("FileVault enabled, unable to unpatch!")
|
|
||||||
print("Please disable FileVault in System Preferences")
|
|
||||||
print("")
|
|
||||||
if self.constants.gui_mode is False:
|
|
||||||
input("Press [Enter] to go exit.")
|
|
||||||
|
|||||||
247
Resources/SysPatchArray.py
Normal file
247
Resources/SysPatchArray.py
Normal file
@@ -0,0 +1,247 @@
|
|||||||
|
# Lists Root patches used by SysPatch.py
|
||||||
|
# Copyright (C) 2020-2021, Dhinak G, Mykola Grymalyuk
|
||||||
|
DeleteNvidiaAccel11 = [
|
||||||
|
"AMDRadeonX4000.kext",
|
||||||
|
"AMDRadeonX4000HWServices.kext",
|
||||||
|
"AMDRadeonX5000.kext",
|
||||||
|
"AMDRadeonX5000HWServices.kext",
|
||||||
|
"AMDRadeonX6000.kext",
|
||||||
|
"AMDRadeonX6000Framebuffer.kext",
|
||||||
|
"AMDRadeonX6000HWServices.kext",
|
||||||
|
"AppleIntelBDWGraphics.kext",
|
||||||
|
"AppleIntelBDWGraphicsFramebuffer.kext",
|
||||||
|
"AppleIntelCFLGraphicsFramebuffer.kext",
|
||||||
|
"AppleIntelHD4000Graphics.kext",
|
||||||
|
"AppleIntelHD5000Graphics.kext",
|
||||||
|
"AppleIntelICLGraphics.kext",
|
||||||
|
"AppleIntelICLLPGraphicsFramebuffer.kext",
|
||||||
|
"AppleIntelKBLGraphics.kext",
|
||||||
|
"AppleIntelKBLGraphicsFramebuffer.kext",
|
||||||
|
"AppleIntelSKLGraphics.kext",
|
||||||
|
"AppleIntelSKLGraphicsFramebuffer.kext",
|
||||||
|
"AppleIntelFramebufferAzul.kext",
|
||||||
|
"AppleIntelFramebufferCapri.kext",
|
||||||
|
"AppleParavirtGPU.kext",
|
||||||
|
"GeForce.kext",
|
||||||
|
"IOAcceleratorFamily2.kext",
|
||||||
|
"IOGPUFamily.kext",
|
||||||
|
]
|
||||||
|
|
||||||
|
DeleteAMDAccel11 = [
|
||||||
|
"AMDRadeonX4000.kext",
|
||||||
|
"AMDRadeonX4000HWServices.kext",
|
||||||
|
"AMDRadeonX5000.kext",
|
||||||
|
"AMDRadeonX5000HWServices.kext",
|
||||||
|
"AMDRadeonX6000.kext",
|
||||||
|
"AMDRadeonX6000Framebuffer.kext",
|
||||||
|
"AMDRadeonX6000HWServices.kext",
|
||||||
|
"AMD7000Controller.kext", # AMDSupport Dependency
|
||||||
|
"AMD8000Controller.kext", # AMDSupport Dependency
|
||||||
|
"AMD9000Controller.kext", # AMDSupport Dependency
|
||||||
|
"AMD9500Controller.kext", # AMDSupport Dependency
|
||||||
|
"AMD10000Controller.kext", # AMDSupport Dependency
|
||||||
|
"AppleIntelBDWGraphics.kext",
|
||||||
|
"AppleIntelBDWGraphicsFramebuffer.kext",
|
||||||
|
"AppleIntelCFLGraphicsFramebuffer.kext",
|
||||||
|
"AppleIntelHD4000Graphics.kext",
|
||||||
|
"AppleIntelHD5000Graphics.kext",
|
||||||
|
"AppleIntelICLGraphics.kext",
|
||||||
|
"AppleIntelICLLPGraphicsFramebuffer.kext",
|
||||||
|
"AppleIntelKBLGraphics.kext",
|
||||||
|
"AppleIntelKBLGraphicsFramebuffer.kext",
|
||||||
|
"AppleIntelSKLGraphics.kext",
|
||||||
|
"AppleIntelSKLGraphicsFramebuffer.kext",
|
||||||
|
"AppleIntelFramebufferAzul.kext",
|
||||||
|
"AppleIntelFramebufferCapri.kext",
|
||||||
|
"AppleParavirtGPU.kext",
|
||||||
|
"GeForce.kext",
|
||||||
|
"IOGPUFamily.kext",
|
||||||
|
]
|
||||||
|
|
||||||
|
DeleteAMDAccel11TS2 = [
|
||||||
|
"AppleCameraInterface.kext",
|
||||||
|
]
|
||||||
|
|
||||||
|
AddNvidiaAccel11 = [
|
||||||
|
"GeForceGA.bundle",
|
||||||
|
"GeForceTesla.kext",
|
||||||
|
"GeForceTeslaGLDriver.bundle",
|
||||||
|
"GeForceTeslaVADriver.bundle",
|
||||||
|
"NVDANV50HalTesla.kext",
|
||||||
|
"NVDAResmanTesla.kext",
|
||||||
|
"IOSurface.kext",
|
||||||
|
]
|
||||||
|
|
||||||
|
AddNvidiaBrightness = [
|
||||||
|
"GeForceGA.bundle",
|
||||||
|
"GeForceTesla.kext",
|
||||||
|
"GeForceTeslaGLDriver.bundle",
|
||||||
|
"GeForceTeslaVADriver.bundle",
|
||||||
|
"NVDANV50HalTesla.kext",
|
||||||
|
"NVDAResmanTesla.kext",
|
||||||
|
]
|
||||||
|
|
||||||
|
AddNvidiaKeplerAccel11 = [
|
||||||
|
"GeForce.kext",
|
||||||
|
"GeForceAIRPlugin.bundle",
|
||||||
|
"GeForceGLDriver.bundle",
|
||||||
|
"GeForceMTLDriver.bundle",
|
||||||
|
"GeForceVADriver.bundle",
|
||||||
|
"NVDAGF100Hal.kext",
|
||||||
|
"NVDAGK100Hal.kext",
|
||||||
|
"NVDAResman.kext",
|
||||||
|
"NVDAStartup.kext",
|
||||||
|
"NVSMU.kext",
|
||||||
|
]
|
||||||
|
|
||||||
|
AddAMDAccel11 = [
|
||||||
|
"AMD2400Controller.kext",
|
||||||
|
"AMD2600Controller.kext",
|
||||||
|
"AMD3800Controller.kext",
|
||||||
|
"AMD4600Controller.kext",
|
||||||
|
"AMD4800Controller.kext",
|
||||||
|
"AMD5000Controller.kext",
|
||||||
|
"AMD6000Controller.kext",
|
||||||
|
"AMDFramebuffer.kext",
|
||||||
|
"AMDLegacyFramebuffer.kext",
|
||||||
|
"AMDLegacySupport.kext",
|
||||||
|
"AMDRadeonVADriver.bundle",
|
||||||
|
"AMDRadeonVADriver2.bundle",
|
||||||
|
"AMDRadeonX3000.kext",
|
||||||
|
"AMDRadeonX3000GLDriver.bundle",
|
||||||
|
"AMDShared.bundle",
|
||||||
|
"AMDSupport.kext",
|
||||||
|
"ATIRadeonX2000.kext",
|
||||||
|
"ATIRadeonX2000GA.plugin",
|
||||||
|
"ATIRadeonX2000GLDriver.bundle",
|
||||||
|
"ATIRadeonX2000VADriver.bundle",
|
||||||
|
]
|
||||||
|
|
||||||
|
AddAMDBrightness = [
|
||||||
|
"AMD2400Controller.kext",
|
||||||
|
"AMD2600Controller.kext",
|
||||||
|
"AMD3800Controller.kext",
|
||||||
|
"AMD4600Controller.kext",
|
||||||
|
"AMD4800Controller.kext",
|
||||||
|
"AMD5000Controller.kext",
|
||||||
|
"AMD6000Controller.kext",
|
||||||
|
"AMDLegacyFramebuffer.kext",
|
||||||
|
"AMDLegacySupport.kext",
|
||||||
|
"AMDRadeonVADriver.bundle",
|
||||||
|
"AMDRadeonVADriver2.bundle",
|
||||||
|
# "AMDRadeonX3000.kext",
|
||||||
|
# "AMDRadeonX3000GLDriver.bundle",
|
||||||
|
"AMDShared.bundle",
|
||||||
|
"ATIRadeonX2000.kext",
|
||||||
|
"ATIRadeonX2000GA.plugin",
|
||||||
|
"ATIRadeonX2000GLDriver.bundle",
|
||||||
|
"ATIRadeonX2000VADriver.bundle",
|
||||||
|
]
|
||||||
|
|
||||||
|
AddAMDAccel11TS2 = [
|
||||||
|
"IOSurface.kext",
|
||||||
|
"IOAcceleratorFamily2.kext",
|
||||||
|
]
|
||||||
|
|
||||||
|
AddIntelGen1Accel = [
|
||||||
|
"AppleIntelHDGraphics.kext",
|
||||||
|
"AppleIntelHDGraphicsFB.kext",
|
||||||
|
"AppleIntelHDGraphicsGA.plugin",
|
||||||
|
"AppleIntelHDGraphicsGLDriver.bundle",
|
||||||
|
"AppleIntelHDGraphicsVADriver.bundle",
|
||||||
|
]
|
||||||
|
|
||||||
|
AddIntelGen2Accel = [
|
||||||
|
"AppleIntelHD3000Graphics.kext",
|
||||||
|
"AppleIntelHD3000GraphicsGA.plugin",
|
||||||
|
"AppleIntelHD3000GraphicsGLDriver.bundle",
|
||||||
|
"AppleIntelHD3000GraphicsVADriver.bundle",
|
||||||
|
"AppleIntelSNBGraphicsFB.kext",
|
||||||
|
"AppleIntelSNBVA.bundle",
|
||||||
|
]
|
||||||
|
|
||||||
|
AddIntelGen3Accel = [
|
||||||
|
"AppleIntelFramebufferCapri.kext",
|
||||||
|
"AppleIntelHD4000Graphics.kext",
|
||||||
|
"AppleIntelHD4000GraphicsGLDriver.bundle",
|
||||||
|
"AppleIntelHD4000GraphicsMTLDriver.bundle",
|
||||||
|
"AppleIntelHD4000GraphicsVADriver.bundle",
|
||||||
|
"AppleIntelIVBVA.bundle",
|
||||||
|
"AppleIntelGraphicsShared.bundle",
|
||||||
|
]
|
||||||
|
|
||||||
|
AddGeneralAccel = ["IOAcceleratorFamily2.kext", "IOSurface.kext"]
|
||||||
|
|
||||||
|
DeleteBrightness = ["AppleGraphicsControl.kext/Contents/PlugIns/AGDCBacklightControl.kext"]
|
||||||
|
|
||||||
|
AddBrightness = [
|
||||||
|
"AppleBacklight.kext",
|
||||||
|
"AppleBacklightExpert.kext",
|
||||||
|
]
|
||||||
|
|
||||||
|
AddVolumeControl = [
|
||||||
|
"AppleHDA.kext",
|
||||||
|
"IOAudioFamily.kext",
|
||||||
|
]
|
||||||
|
|
||||||
|
DeleteVolumeControl = [
|
||||||
|
"AppleVirtIO.kext",
|
||||||
|
"AppleVirtualGraphics.kext",
|
||||||
|
"AppleVirtualPlatform.kext",
|
||||||
|
"ApplePVPanic.kext",
|
||||||
|
"AppleVirtIOStorage.kext",
|
||||||
|
]
|
||||||
|
|
||||||
|
AddNvidiaAccelLegacy = [
|
||||||
|
"GeForceGA.bundle",
|
||||||
|
"GeForceTesla.kext",
|
||||||
|
"GeForceTeslaGLDriver.bundle",
|
||||||
|
"GeForceTeslaVADriver.bundle",
|
||||||
|
"NVDANV50HalTesla.kext",
|
||||||
|
"NVDAResmanTesla.kext",
|
||||||
|
]
|
||||||
|
|
||||||
|
AddAMDAccelLegacy = [
|
||||||
|
"AMD2400Controller.kext",
|
||||||
|
"AMD2600Controller.kext",
|
||||||
|
"AMD3800Controller.kext",
|
||||||
|
"AMD4600Controller.kext",
|
||||||
|
"AMD4800Controller.kext",
|
||||||
|
"AMD5000Controller.kext",
|
||||||
|
"AMD6000Controller.kext",
|
||||||
|
"AMDFramebuffer.kext",
|
||||||
|
"AMDLegacyFramebuffer.kext",
|
||||||
|
"AMDLegacySupport.kext",
|
||||||
|
"AMDRadeonVADriver.bundle",
|
||||||
|
"AMDRadeonVADriver2.bundle",
|
||||||
|
"AMDRadeonX3000.kext",
|
||||||
|
"AMDRadeonX3000GLDriver.bundle",
|
||||||
|
"AMDRadeonX4000HWServices.kext",
|
||||||
|
"AMDRadeonX4000.kext",
|
||||||
|
"AMDRadeonX4000GLDriver.bundle",
|
||||||
|
"AMDShared.bundle",
|
||||||
|
"AMDSupport.kext",
|
||||||
|
"ATIRadeonX2000.kext",
|
||||||
|
"ATIRadeonX2000GA.plugin",
|
||||||
|
"ATIRadeonX2000GLDriver.bundle",
|
||||||
|
"ATIRadeonX2000VADriver.bundle",
|
||||||
|
]
|
||||||
|
|
||||||
|
AddGeneralAccelCatalina = [
|
||||||
|
"AppleGraphicsControl.kext",
|
||||||
|
"AppleGraphicsPowerManagement.kext",
|
||||||
|
"AppleMCCSControl.kext",
|
||||||
|
"IOGraphicsFamily.kext",
|
||||||
|
"IONDRVSupport.kext",
|
||||||
|
"IOSurface.kext",
|
||||||
|
]
|
||||||
|
|
||||||
|
AddGeneralAccelMojave = [
|
||||||
|
"IONDRVSupport.kext",
|
||||||
|
"AppleGraphicsControl.kext",
|
||||||
|
"AppleGraphicsPowerManagement.kext",
|
||||||
|
"AppleMCCSControl.kext",
|
||||||
|
"IOAccelerator2D.plugin",
|
||||||
|
"IOAcceleratorFamily2.kext",
|
||||||
|
"IOGraphicsFamily.kext",
|
||||||
|
]
|
||||||
@@ -1,37 +1,215 @@
|
|||||||
# Copyright (C) 2020-2021, Dhinak G
|
# Copyright (C) 2020-2021, Dhinak G
|
||||||
from __future__ import print_function
|
from __future__ import print_function
|
||||||
|
|
||||||
|
import hashlib
|
||||||
|
import math
|
||||||
import os
|
import os
|
||||||
import math as m
|
|
||||||
import plistlib
|
import plistlib
|
||||||
import subprocess
|
import subprocess
|
||||||
|
from pathlib import Path
|
||||||
|
import re
|
||||||
|
import os
|
||||||
|
import requests
|
||||||
|
|
||||||
|
from Resources import Constants, ioreg
|
||||||
|
|
||||||
|
|
||||||
|
def hexswap(input_hex: str):
|
||||||
|
hex_pairs = [input_hex[i : i + 2] for i in range(0, len(input_hex), 2)]
|
||||||
|
hex_rev = hex_pairs[::-1]
|
||||||
|
hex_str = "".join(["".join(x) for x in hex_rev])
|
||||||
|
return hex_str.upper()
|
||||||
|
|
||||||
|
|
||||||
|
def process_status(process_result):
|
||||||
|
if process_result.returncode != 0:
|
||||||
|
print(f"Process failed with exit code {process_result.returncode}")
|
||||||
|
print(f"Please file an issue on our Github")
|
||||||
|
raise Exception(f"Process result: \n{process_result.stdout.decode()}")
|
||||||
|
|
||||||
|
|
||||||
|
def human_fmt(num):
|
||||||
|
for unit in ["B", "KB", "MB", "GB", "TB", "PB"]:
|
||||||
|
if abs(num) < 1000.0:
|
||||||
|
return "%3.1f %s" % (num, unit)
|
||||||
|
num /= 1000.0
|
||||||
|
return "%.1f %s" % (num, "EB")
|
||||||
|
|
||||||
|
|
||||||
def header(lines):
|
def header(lines):
|
||||||
lines = [i for i in lines if i is not None]
|
lines = [i for i in lines if i is not None]
|
||||||
total_length = len(max(lines, key=len)) + 4
|
total_length = len(max(lines, key=len)) + 4
|
||||||
print("#" * (total_length))
|
print("#" * (total_length))
|
||||||
for line in lines:
|
for line in lines:
|
||||||
left_side = m.floor(((total_length - 2 - len(line.strip())) / 2))
|
left_side = math.floor(((total_length - 2 - len(line.strip())) / 2))
|
||||||
print("#" + " " * left_side + line.strip() + " " * (total_length - len("#" + " " * left_side + line.strip()) - 1) + "#")
|
print("#" + " " * left_side + line.strip() + " " * (total_length - len("#" + " " * left_side + line.strip()) - 1) + "#")
|
||||||
print("#" * total_length)
|
print("#" * total_length)
|
||||||
|
|
||||||
|
|
||||||
|
RECOVERY_STATUS = None
|
||||||
|
|
||||||
|
|
||||||
def check_recovery():
|
def check_recovery():
|
||||||
|
global RECOVERY_STATUS # pylint: disable=global-statement # We need to cache the result
|
||||||
|
|
||||||
|
if RECOVERY_STATUS is None:
|
||||||
|
RECOVERY_STATUS = Path("/System/Library/BaseSystem").exists()
|
||||||
|
|
||||||
|
return RECOVERY_STATUS
|
||||||
|
|
||||||
|
|
||||||
|
def get_disk_path():
|
||||||
root_partition_info = plistlib.loads(subprocess.run("diskutil info -plist /".split(), stdout=subprocess.PIPE).stdout.decode().strip().encode())
|
root_partition_info = plistlib.loads(subprocess.run("diskutil info -plist /".split(), stdout=subprocess.PIPE).stdout.decode().strip().encode())
|
||||||
if root_partition_info["VolumeName"] == "macOS Base System" and \
|
root_mount_path = root_partition_info["DeviceIdentifier"]
|
||||||
root_partition_info["FilesystemType"] == "apfs" and \
|
root_mount_path = root_mount_path[:-2] if root_mount_path.count("s") > 1 else root_mount_path
|
||||||
root_partition_info["BusProtocol"] == "Disk Image":
|
return root_mount_path
|
||||||
return True
|
|
||||||
|
|
||||||
|
def latebloom_detection(model):
|
||||||
|
if model in ["MacPro4,1", "MacPro5,1", "iMac7,1", "iMac8,1"]:
|
||||||
|
# These machines are more likely to experience boot hangs, increase delays to accomodate
|
||||||
|
lb_delay = "250"
|
||||||
else:
|
else:
|
||||||
|
lb_delay = "100"
|
||||||
|
lb_range = "1"
|
||||||
|
lb_debug = "1"
|
||||||
|
if get_nvram("boot-args", decode=False):
|
||||||
|
if "latebloom=" in get_nvram("boot-args", decode=False):
|
||||||
|
lb_delay = re.search(r"(?:[, ])latebloom=(\d+)", get_nvram("boot-args", decode=False))
|
||||||
|
lb_delay = lb_delay[1]
|
||||||
|
if "lb_range=" in get_nvram("boot-args", decode=False):
|
||||||
|
lb_range = re.search(r"(?:[, ])lb_range=(\d+)", get_nvram("boot-args", decode=False))
|
||||||
|
lb_range = lb_range[1]
|
||||||
|
if "lb_debug=" in get_nvram("boot-args", decode=False):
|
||||||
|
lb_debug = re.search(r"(?:[, ])lb_debug=(\d+)", get_nvram("boot-args", decode=False))
|
||||||
|
lb_debug = lb_debug[1]
|
||||||
|
return int(lb_delay), int(lb_range), int(lb_debug)
|
||||||
|
|
||||||
|
|
||||||
|
def csr_decode(csr_active_config, os_sip):
|
||||||
|
if csr_active_config is None:
|
||||||
|
csr_active_config = b"\x00\x00\x00\x00"
|
||||||
|
sip_int = int.from_bytes(csr_active_config, byteorder="little")
|
||||||
|
i = 0
|
||||||
|
for current_sip_bit in Constants.Constants.csr_values:
|
||||||
|
if sip_int & (1 << i):
|
||||||
|
Constants.Constants.csr_values[current_sip_bit] = True
|
||||||
|
i = i + 1
|
||||||
|
|
||||||
|
# Can be adjusted to whatever OS needs patching
|
||||||
|
sip_needs_change = all(Constants.Constants.csr_values[i] for i in os_sip)
|
||||||
|
if sip_needs_change is True:
|
||||||
return False
|
return False
|
||||||
|
else:
|
||||||
|
return True
|
||||||
|
|
||||||
|
|
||||||
|
def friendly_hex(integer: int):
|
||||||
|
return "{:02X}".format(integer)
|
||||||
|
|
||||||
|
|
||||||
|
def amfi_status():
|
||||||
|
amfi_1 = "amfi_get_out_of_my_way=0x1"
|
||||||
|
amfi_2 = "amfi_get_out_of_my_way=1"
|
||||||
|
if get_nvram("boot-args", decode=False) and (amfi_1 in get_nvram("boot-args", decode=False) or amfi_2 in get_nvram("boot-args", decode=False)):
|
||||||
|
return False
|
||||||
|
return True
|
||||||
|
|
||||||
|
|
||||||
|
def patching_status(os_sip):
|
||||||
|
# Detection for Root Patching
|
||||||
|
sip_enabled = True # System Integrity Protection
|
||||||
|
sbm_enabled = True # Secure Boot Status (SecureBootModel)
|
||||||
|
amfi_enabled = True # Apple Mobile File Integrity
|
||||||
|
fv_enabled = True # FileVault
|
||||||
|
dosdude_patched = True
|
||||||
|
|
||||||
|
gen6_kext = "/System/Library/Extension/AppleIntelHDGraphics.kext"
|
||||||
|
gen7_kext = "/System/Library/Extension/AppleIntelHD3000Graphics.kext"
|
||||||
|
|
||||||
|
amfi_enabled = amfi_status()
|
||||||
|
|
||||||
|
if get_nvram("HardwareModel", "94B73556-2197-4702-82A8-3E1337DAFBFB", decode=False) not in Constants.Constants.sbm_values:
|
||||||
|
sbm_enabled = False
|
||||||
|
|
||||||
|
if get_nvram("csr-active-config", decode=False) and csr_decode(get_nvram("csr-active-config", decode=False), os_sip) is False:
|
||||||
|
sip_enabled = False
|
||||||
|
|
||||||
|
fv_status: str = subprocess.run("fdesetup status".split(), stdout=subprocess.PIPE, stderr=subprocess.STDOUT).stdout.decode()
|
||||||
|
if fv_status.startswith("FileVault is Off"):
|
||||||
|
fv_enabled = False
|
||||||
|
|
||||||
|
if not (Path(gen6_kext).exists() and Path(gen7_kext).exists()):
|
||||||
|
dosdude_patched = False
|
||||||
|
|
||||||
|
return sip_enabled, sbm_enabled, amfi_enabled, fv_enabled, dosdude_patched
|
||||||
|
|
||||||
|
|
||||||
|
clear = True
|
||||||
|
|
||||||
|
|
||||||
|
def disable_cls():
|
||||||
|
global clear
|
||||||
|
clear = False
|
||||||
|
|
||||||
|
|
||||||
def cls():
|
def cls():
|
||||||
# RecoveryOS doesn't support terminal clearing
|
global clear
|
||||||
if check_recovery() == False:
|
if not clear:
|
||||||
os.system('cls' if os.name == 'nt' else 'clear')
|
return
|
||||||
|
if not check_recovery():
|
||||||
|
os.system("cls" if os.name == "nt" else "clear")
|
||||||
else:
|
else:
|
||||||
# Default terminal window is 24 lines tall
|
print("\u001Bc")
|
||||||
for i in range(24):
|
|
||||||
print("")
|
|
||||||
|
def get_nvram(variable: str, uuid: str = None, *, decode: bool = False):
|
||||||
|
# TODO: Properly fix for El Capitan, which does not print the XML representation even though we say to
|
||||||
|
|
||||||
|
if uuid is not None:
|
||||||
|
uuid += ":"
|
||||||
|
else:
|
||||||
|
uuid = ""
|
||||||
|
|
||||||
|
nvram = ioreg.IORegistryEntryFromPath(ioreg.kIOMasterPortDefault, "IODeviceTree:/options".encode())
|
||||||
|
|
||||||
|
value = ioreg.IORegistryEntryCreateCFProperty(nvram, f"{uuid}{variable}", ioreg.kCFAllocatorDefault, ioreg.kNilOptions)
|
||||||
|
|
||||||
|
ioreg.IOObjectRelease(nvram)
|
||||||
|
|
||||||
|
if not value:
|
||||||
|
return None
|
||||||
|
|
||||||
|
value = ioreg.corefoundation_to_native(value)
|
||||||
|
|
||||||
|
if decode and isinstance(value, bytes):
|
||||||
|
value = value.strip(b"\0").decode()
|
||||||
|
return value
|
||||||
|
|
||||||
|
|
||||||
|
def download_file(link, location):
|
||||||
|
print("- Attempting download from following link:")
|
||||||
|
print(link)
|
||||||
|
if Path(location).exists():
|
||||||
|
print("- Removing old file")
|
||||||
|
Path(location).unlink()
|
||||||
|
response = requests.get(link, stream=True)
|
||||||
|
with location.open("wb") as file:
|
||||||
|
count = 0
|
||||||
|
for chunk in response.iter_content(1024 * 1024 * 4):
|
||||||
|
file.write(chunk)
|
||||||
|
count += len(chunk)
|
||||||
|
cls()
|
||||||
|
print(f"- Downloading package")
|
||||||
|
print(f"- {count / 1024 / 1024}MB Downloaded")
|
||||||
|
checksum = hashlib.sha256()
|
||||||
|
with location.open("rb") as file:
|
||||||
|
chunk = file.read(1024 * 1024 * 16)
|
||||||
|
while chunk:
|
||||||
|
checksum.update(chunk)
|
||||||
|
chunk = file.read(1024 * 1024 * 16)
|
||||||
|
print(f"- Checksum: {checksum.hexdigest()}")
|
||||||
|
|
||||||
|
|
||||||
# def menu(title, prompt, menu_options, add_quit=True, auto_number=False, in_between=[], top_level=False):
|
# def menu(title, prompt, menu_options, add_quit=True, auto_number=False, in_between=[], top_level=False):
|
||||||
# return_option = ["Q", "Quit", None] if top_level else ["B", "Back", None]
|
# return_option = ["Q", "Quit", None] if top_level else ["B", "Back", None]
|
||||||
@@ -61,7 +239,7 @@ def cls():
|
|||||||
# menu_options[keys.index(selected.upper())][2]() if menu_options[keys.index(selected.upper())][2] else None
|
# menu_options[keys.index(selected.upper())][2]() if menu_options[keys.index(selected.upper())][2] else None
|
||||||
|
|
||||||
|
|
||||||
class TUIMenu():
|
class TUIMenu:
|
||||||
def __init__(self, title, prompt, options=None, return_number_instead_of_direct_call=False, add_quit=True, auto_number=False, in_between=None, top_level=False, loop=False):
|
def __init__(self, title, prompt, options=None, return_number_instead_of_direct_call=False, add_quit=True, auto_number=False, in_between=None, top_level=False, loop=False):
|
||||||
self.title = title
|
self.title = title
|
||||||
self.prompt = prompt
|
self.prompt = prompt
|
||||||
@@ -80,8 +258,7 @@ class TUIMenu():
|
|||||||
def start(self):
|
def start(self):
|
||||||
return_option = ["Q", "Quit"] if self.top_level else ["B", "Back"]
|
return_option = ["Q", "Quit"] if self.top_level else ["B", "Back"]
|
||||||
if self.add_quit and not self.added_quit:
|
if self.add_quit and not self.added_quit:
|
||||||
self.add_menu_option(
|
self.add_menu_option(return_option[1], function=None, key=return_option[0])
|
||||||
return_option[1], function=None, key=return_option[0])
|
|
||||||
self.added_quit = True
|
self.added_quit = True
|
||||||
|
|
||||||
while True:
|
while True:
|
||||||
@@ -120,7 +297,7 @@ class TUIMenu():
|
|||||||
return
|
return
|
||||||
|
|
||||||
|
|
||||||
class TUIOnlyPrint():
|
class TUIOnlyPrint:
|
||||||
def __init__(self, title, prompt, in_between=None):
|
def __init__(self, title, prompt, in_between=None):
|
||||||
self.title = title
|
self.title = title
|
||||||
self.prompt = prompt
|
self.prompt = prompt
|
||||||
|
|||||||
418
Resources/device_probe.py
Normal file
418
Resources/device_probe.py
Normal file
@@ -0,0 +1,418 @@
|
|||||||
|
# Hardware probing
|
||||||
|
# Copyright (C) 2020-2021, Dhinak G, Mykola Grymalyuk
|
||||||
|
|
||||||
|
from __future__ import annotations
|
||||||
|
|
||||||
|
import binascii
|
||||||
|
import enum
|
||||||
|
import itertools
|
||||||
|
import subprocess
|
||||||
|
from dataclasses import dataclass, field
|
||||||
|
from typing import Any, ClassVar, Optional, Type, Union
|
||||||
|
|
||||||
|
from Resources import PCIIDArray, Utilities, ioreg
|
||||||
|
|
||||||
|
|
||||||
|
@dataclass
|
||||||
|
class CPU:
|
||||||
|
name: str
|
||||||
|
flags: list[str]
|
||||||
|
|
||||||
|
|
||||||
|
@dataclass
|
||||||
|
class PCIDevice:
|
||||||
|
VENDOR_ID: ClassVar[int] # Default vendor id, for subclasses.
|
||||||
|
|
||||||
|
vendor_id: int # The vendor ID of this PCI device
|
||||||
|
device_id: int # The device ID of this PCI device
|
||||||
|
class_code: int # The class code of this PCI device
|
||||||
|
|
||||||
|
# ioregistryentry: Optional[ioreg.IORegistryEntry] = None
|
||||||
|
name: Optional[str] = None # Name of IORegistryEntry
|
||||||
|
model: Optional[str] = None # model property
|
||||||
|
pci_path: Optional[str] = None
|
||||||
|
|
||||||
|
# def __getstate__(self):
|
||||||
|
# state = self.__dict__.copy()
|
||||||
|
# state.pop("ioregistryentry")
|
||||||
|
# return state
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def from_ioregistry(cls, entry: ioreg.io_registry_entry_t, anti_spoof=False):
|
||||||
|
properties: dict = ioreg.corefoundation_to_native(ioreg.IORegistryEntryCreateCFProperties(entry, None, ioreg.kCFAllocatorDefault, ioreg.kNilOptions)[1]) # type: ignore
|
||||||
|
if anti_spoof and "IOName" in properties:
|
||||||
|
vendor_id, device_id = (int(i, 16) for i in properties["IOName"][3:].split(","))
|
||||||
|
else:
|
||||||
|
vendor_id, device_id = [int.from_bytes(properties[i][:4], byteorder="little") for i in ["vendor-id", "device-id"]]
|
||||||
|
|
||||||
|
device = cls(vendor_id, device_id, int.from_bytes(properties["class-code"][:6], byteorder="little"), name=ioreg.io_name_t_to_str(ioreg.IORegistryEntryGetName(entry, None)[1]))
|
||||||
|
if "model" in properties:
|
||||||
|
device.model = properties["model"].strip(b"\0").decode()
|
||||||
|
device.populate_pci_path(entry)
|
||||||
|
return device
|
||||||
|
|
||||||
|
# @staticmethod
|
||||||
|
# def vendor_detect_old(device):
|
||||||
|
# for i in [NVIDIA, AMD]:
|
||||||
|
# if i.detect(device):
|
||||||
|
# return i
|
||||||
|
# return None
|
||||||
|
|
||||||
|
def vendor_detect(self, *, inherits: ClassVar[Any] = None, classes: list = None):
|
||||||
|
for i in classes or itertools.chain.from_iterable([subclass.__subclasses__() for subclass in PCIDevice.__subclasses__()]):
|
||||||
|
if issubclass(i, inherits or object) and i.detect(self):
|
||||||
|
return i
|
||||||
|
return None
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def detect(cls, device):
|
||||||
|
return device.vendor_id == cls.VENDOR_ID and ((device.class_code == cls.CLASS_CODE) if getattr(cls, "CLASS_CODE", None) else True) # type: ignore # pylint: disable=no-member
|
||||||
|
|
||||||
|
# def acpi_path(self):
|
||||||
|
# # Eventually
|
||||||
|
# raise NotImplementedError
|
||||||
|
|
||||||
|
def populate_pci_path(self, original_entry: ioreg.io_registry_entry_t):
|
||||||
|
# Based off gfxutil logic, seems to work.
|
||||||
|
paths = []
|
||||||
|
entry = original_entry
|
||||||
|
while entry:
|
||||||
|
if ioreg.IOObjectConformsTo(entry, "IOPCIDevice".encode()):
|
||||||
|
location = [hex(int(i, 16)) for i in ioreg.io_name_t_to_str(ioreg.IORegistryEntryGetLocationInPlane(entry, "IOService".encode(), None)[1]).split(",") + ["0"]]
|
||||||
|
paths.append(f"Pci({location[0]},{location[1]})")
|
||||||
|
elif ioreg.IOObjectConformsTo(entry, "IOACPIPlatformDevice".encode()):
|
||||||
|
paths.append(f"PciRoot({hex(int(ioreg.corefoundation_to_native(ioreg.IORegistryEntryCreateCFProperty(entry, '_UID', ioreg.kCFAllocatorDefault, ioreg.kNilOptions)) or 0))})") # type: ignore
|
||||||
|
break
|
||||||
|
elif ioreg.IOObjectConformsTo(entry, "IOPCIBridge".encode()):
|
||||||
|
pass
|
||||||
|
else:
|
||||||
|
# There's something in between that's not PCI! Abort
|
||||||
|
paths = []
|
||||||
|
break
|
||||||
|
parent = ioreg.IORegistryEntryGetParentEntry(entry, "IOService".encode(), None)[1]
|
||||||
|
if entry != original_entry:
|
||||||
|
ioreg.IOObjectRelease(entry)
|
||||||
|
entry = parent
|
||||||
|
self.pci_path = "/".join(reversed(paths))
|
||||||
|
|
||||||
|
|
||||||
|
@dataclass
|
||||||
|
class GPU(PCIDevice):
|
||||||
|
arch: enum.Enum = field(init=False) # The architecture, see subclasses.
|
||||||
|
|
||||||
|
def __post_init__(self):
|
||||||
|
self.detect_arch()
|
||||||
|
|
||||||
|
def detect_arch(self):
|
||||||
|
raise NotImplementedError
|
||||||
|
|
||||||
|
|
||||||
|
@dataclass
|
||||||
|
class WirelessCard(PCIDevice):
|
||||||
|
CLASS_CODE: ClassVar[int] = 0x028000 # 00800200 hexswapped
|
||||||
|
country_code: str = field(init=False)
|
||||||
|
chipset: enum.Enum = field(init=False)
|
||||||
|
|
||||||
|
def __post_init__(self):
|
||||||
|
self.detect_chipset()
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def from_ioregistry(cls, entry: ioreg.io_registry_entry_t, anti_spoof=True):
|
||||||
|
device = super().from_ioregistry(entry, anti_spoof=anti_spoof)
|
||||||
|
|
||||||
|
matching_dict = {
|
||||||
|
"IOParentMatch": ioreg.corefoundation_to_native(ioreg.IORegistryEntryIDMatching(ioreg.IORegistryEntryGetRegistryEntryID(entry, None)[1])),
|
||||||
|
"IOProviderClass": "IO80211Interface",
|
||||||
|
}
|
||||||
|
|
||||||
|
interface = next(ioreg.ioiterator_to_list(ioreg.IOServiceGetMatchingServices(ioreg.kIOMasterPortDefault, matching_dict, None)[1]), None)
|
||||||
|
if interface:
|
||||||
|
device.country_code = ioreg.corefoundation_to_native(ioreg.IORegistryEntryCreateCFProperty(interface, "IO80211CountryCode", ioreg.kCFAllocatorDefault, ioreg.kNilOptions)) # type: ignore # If not present, will be None anyways
|
||||||
|
else:
|
||||||
|
device.country_code = None # type: ignore
|
||||||
|
|
||||||
|
return device
|
||||||
|
|
||||||
|
def detect_chipset(self):
|
||||||
|
raise NotImplementedError
|
||||||
|
|
||||||
|
|
||||||
|
@dataclass
|
||||||
|
class NVMeController(PCIDevice):
|
||||||
|
CLASS_CODE: ClassVar[int] = 0x010802
|
||||||
|
|
||||||
|
aspm: Optional[int] = None
|
||||||
|
# parent_aspm: Optional[int] = None
|
||||||
|
|
||||||
|
|
||||||
|
@dataclass
|
||||||
|
class SATAController(PCIDevice):
|
||||||
|
CLASS_CODE: ClassVar[int] = 0x010601
|
||||||
|
|
||||||
|
|
||||||
|
@dataclass
|
||||||
|
class NVIDIA(GPU):
|
||||||
|
VENDOR_ID: ClassVar[int] = 0x10DE
|
||||||
|
|
||||||
|
class Archs(enum.Enum):
|
||||||
|
# pylint: disable=invalid-name
|
||||||
|
Fermi = "Fermi"
|
||||||
|
Tesla = "Tesla"
|
||||||
|
Kepler = "Kepler"
|
||||||
|
Unknown = "Unknown"
|
||||||
|
|
||||||
|
arch: Archs = field(init=False)
|
||||||
|
|
||||||
|
def detect_arch(self):
|
||||||
|
# G80/G80GL
|
||||||
|
if self.device_id in PCIIDArray.nvidia_ids.tesla_ids:
|
||||||
|
self.arch = NVIDIA.Archs.Tesla
|
||||||
|
elif self.device_id in PCIIDArray.nvidia_ids.fermi_ids:
|
||||||
|
self.arch = NVIDIA.Archs.Fermi
|
||||||
|
elif self.device_id in PCIIDArray.nvidia_ids.kepler_ids:
|
||||||
|
self.arch = NVIDIA.Archs.Kepler
|
||||||
|
else:
|
||||||
|
self.arch = NVIDIA.Archs.Unknown
|
||||||
|
|
||||||
|
|
||||||
|
@dataclass
|
||||||
|
class AMD(GPU):
|
||||||
|
VENDOR_ID: ClassVar[int] = 0x1002
|
||||||
|
|
||||||
|
class Archs(enum.Enum):
|
||||||
|
# pylint: disable=invalid-name
|
||||||
|
Legacy_GCN = "Legacy GCN"
|
||||||
|
TeraScale_1 = "TeraScale 1"
|
||||||
|
TeraScale_2 = "TeraScale 2"
|
||||||
|
Polaris = "Polaris"
|
||||||
|
Vega = "Vega"
|
||||||
|
Navi = "Navi"
|
||||||
|
Unknown = "Unknown"
|
||||||
|
|
||||||
|
arch: Archs = field(init=False)
|
||||||
|
|
||||||
|
def detect_arch(self):
|
||||||
|
if self.device_id in PCIIDArray.amd_ids.legacy_gcn_ids:
|
||||||
|
self.arch = AMD.Archs.Legacy_GCN
|
||||||
|
elif self.device_id in PCIIDArray.amd_ids.terascale_1_ids:
|
||||||
|
self.arch = AMD.Archs.TeraScale_1
|
||||||
|
elif self.device_id in PCIIDArray.amd_ids.terascale_2_ids:
|
||||||
|
self.arch = AMD.Archs.TeraScale_2
|
||||||
|
elif self.device_id in PCIIDArray.amd_ids.polaris_ids:
|
||||||
|
self.arch = AMD.Archs.Polaris
|
||||||
|
elif self.device_id in PCIIDArray.amd_ids.vega_ids:
|
||||||
|
self.arch = AMD.Archs.Vega
|
||||||
|
elif self.device_id in PCIIDArray.amd_ids.navi_ids:
|
||||||
|
self.arch = AMD.Archs.Navi
|
||||||
|
else:
|
||||||
|
self.arch = AMD.Archs.Unknown
|
||||||
|
|
||||||
|
|
||||||
|
@dataclass
|
||||||
|
class Intel(GPU):
|
||||||
|
VENDOR_ID: ClassVar[int] = 0x8086
|
||||||
|
|
||||||
|
class Archs(enum.Enum):
|
||||||
|
# pylint: disable=invalid-name
|
||||||
|
Iron_Lake = "Iron Lake"
|
||||||
|
Sandy_Bridge = "Sandy Bridge"
|
||||||
|
Ivy_Bridge = "Ivy Bridge"
|
||||||
|
Unknown = "Unknown"
|
||||||
|
|
||||||
|
arch: Archs = field(init=False)
|
||||||
|
|
||||||
|
def detect_arch(self):
|
||||||
|
if self.device_id in PCIIDArray.intel_ids.iron_ids:
|
||||||
|
self.arch = Intel.Archs.Iron_Lake
|
||||||
|
elif self.device_id in PCIIDArray.intel_ids.sandy_ids:
|
||||||
|
self.arch = Intel.Archs.Sandy_Bridge
|
||||||
|
elif self.device_id in PCIIDArray.intel_ids.ivy_ids:
|
||||||
|
self.arch = Intel.Archs.Ivy_Bridge
|
||||||
|
else:
|
||||||
|
self.arch = Intel.Archs.Unknown
|
||||||
|
|
||||||
|
|
||||||
|
@dataclass
|
||||||
|
class Broadcom(WirelessCard):
|
||||||
|
VENDOR_ID: ClassVar[int] = 0x14E4
|
||||||
|
|
||||||
|
class Chipsets(enum.Enum):
|
||||||
|
# pylint: disable=invalid-name
|
||||||
|
AirportBrcmNIC = "AirportBrcmNIC supported"
|
||||||
|
AirPortBrcm4360 = "AirPortBrcm4360 supported"
|
||||||
|
AirPortBrcm4331 = "AirPortBrcm4331 supported"
|
||||||
|
AirPortBrcm43224 = "AppleAirPortBrcm43224 supported"
|
||||||
|
Unknown = "Unknown"
|
||||||
|
|
||||||
|
chipset: Chipsets = field(init=False)
|
||||||
|
|
||||||
|
def detect_chipset(self):
|
||||||
|
if self.device_id in PCIIDArray.broadcom_ids.AirPortBrcmNIC:
|
||||||
|
self.chipset = Broadcom.Chipsets.AirportBrcmNIC
|
||||||
|
elif self.device_id in PCIIDArray.broadcom_ids.AirPortBrcm4360:
|
||||||
|
self.chipset = Broadcom.Chipsets.AirPortBrcm4360
|
||||||
|
elif self.device_id in PCIIDArray.broadcom_ids.AirPortBrcm4331:
|
||||||
|
self.chipset = Broadcom.Chipsets.AirPortBrcm4331
|
||||||
|
elif self.device_id in PCIIDArray.broadcom_ids.AppleAirPortBrcm43224:
|
||||||
|
self.chipset = Broadcom.Chipsets.AirPortBrcm43224
|
||||||
|
else:
|
||||||
|
self.chipset = Broadcom.Chipsets.Unknown
|
||||||
|
|
||||||
|
|
||||||
|
@dataclass
|
||||||
|
class Atheros(WirelessCard):
|
||||||
|
VENDOR_ID: ClassVar[int] = 0x168C
|
||||||
|
|
||||||
|
class Chipsets(enum.Enum):
|
||||||
|
# pylint: disable=invalid-name
|
||||||
|
# Well there's only one model but
|
||||||
|
AirPortAtheros40 = "AirPortAtheros40 supported"
|
||||||
|
Unknown = "Unknown"
|
||||||
|
|
||||||
|
chipset: Chipsets = field(init=False)
|
||||||
|
|
||||||
|
def detect_chipset(self):
|
||||||
|
if self.device_id in PCIIDArray.atheros_ids.AtherosWifi:
|
||||||
|
self.chipset = Atheros.Chipsets.AirPortAtheros40
|
||||||
|
else:
|
||||||
|
self.chipset = Atheros.Chipsets.Unknown
|
||||||
|
|
||||||
|
|
||||||
|
@dataclass
|
||||||
|
class Computer:
|
||||||
|
real_model: Optional[str] = None
|
||||||
|
real_board_id: Optional[str] = None
|
||||||
|
reported_model: Optional[str] = None
|
||||||
|
reported_board_id: Optional[str] = None
|
||||||
|
gpus: list[GPU] = field(default_factory=list)
|
||||||
|
igpu: Optional[GPU] = None # Shortcut for IGPU
|
||||||
|
dgpu: Optional[GPU] = None # Shortcut for GFX0
|
||||||
|
storage: list[PCIDevice] = field(default_factory=list)
|
||||||
|
wifi: Optional[WirelessCard] = None
|
||||||
|
cpu: Optional[CPU] = None
|
||||||
|
oclp_version: Optional[str] = None
|
||||||
|
opencore_version: Optional[str] = None
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def probe():
|
||||||
|
computer = Computer()
|
||||||
|
computer.gpu_probe()
|
||||||
|
computer.dgpu_probe()
|
||||||
|
computer.igpu_probe()
|
||||||
|
computer.wifi_probe()
|
||||||
|
computer.storage_probe()
|
||||||
|
computer.smbios_probe()
|
||||||
|
computer.cpu_probe()
|
||||||
|
return computer
|
||||||
|
|
||||||
|
def gpu_probe(self):
|
||||||
|
# Chain together two iterators: one for class code 00000300, the other for class code 00800300
|
||||||
|
devices = ioreg.ioiterator_to_list(
|
||||||
|
ioreg.IOServiceGetMatchingServices(
|
||||||
|
ioreg.kIOMasterPortDefault, {"IOProviderClass": "IOPCIDevice", "IOPropertyMatch": [{"class-code": binascii.a2b_hex("00000300")}, {"class-code": binascii.a2b_hex("00800300")}]}, None
|
||||||
|
)[1]
|
||||||
|
)
|
||||||
|
|
||||||
|
for device in devices:
|
||||||
|
vendor: Type[GPU] = PCIDevice.from_ioregistry(device).vendor_detect(inherits=GPU) # type: ignore
|
||||||
|
if vendor:
|
||||||
|
self.gpus.append(vendor.from_ioregistry(device)) # type: ignore
|
||||||
|
ioreg.IOObjectRelease(device)
|
||||||
|
|
||||||
|
def dgpu_probe(self):
|
||||||
|
device = next(ioreg.ioiterator_to_list(ioreg.IOServiceGetMatchingServices(ioreg.kIOMasterPortDefault, ioreg.IOServiceNameMatching("GFX0".encode()), None)[1]), None)
|
||||||
|
if not device:
|
||||||
|
# No devices
|
||||||
|
return
|
||||||
|
|
||||||
|
vendor: Type[GPU] = PCIDevice.from_ioregistry(device).vendor_detect(inherits=GPU) # type: ignore
|
||||||
|
if vendor:
|
||||||
|
self.dgpu = vendor.from_ioregistry(device) # type: ignore
|
||||||
|
ioreg.IOObjectRelease(device)
|
||||||
|
|
||||||
|
def igpu_probe(self):
|
||||||
|
device = next(ioreg.ioiterator_to_list(ioreg.IOServiceGetMatchingServices(ioreg.kIOMasterPortDefault, ioreg.IOServiceNameMatching("IGPU".encode()), None)[1]), None)
|
||||||
|
if not device:
|
||||||
|
# No devices
|
||||||
|
return
|
||||||
|
|
||||||
|
vendor: Type[GPU] = PCIDevice.from_ioregistry(device).vendor_detect(inherits=GPU) # type: ignore
|
||||||
|
if vendor:
|
||||||
|
self.igpu = vendor.from_ioregistry(device) # type: ignore
|
||||||
|
ioreg.IOObjectRelease(device)
|
||||||
|
|
||||||
|
def wifi_probe(self):
|
||||||
|
# result = subprocess.run("ioreg -r -c IOPCIDevice -a -d2".split(), stdout=subprocess.PIPE).stdout.strip()
|
||||||
|
devices = ioreg.ioiterator_to_list(
|
||||||
|
ioreg.IOServiceGetMatchingServices(
|
||||||
|
ioreg.kIOMasterPortDefault,
|
||||||
|
{"IOProviderClass": "IOPCIDevice", "IOPropertyMatch": {"class-code": binascii.a2b_hex(Utilities.hexswap(hex(WirelessCard.CLASS_CODE)[2:].zfill(8)))}},
|
||||||
|
None,
|
||||||
|
)[1]
|
||||||
|
)
|
||||||
|
|
||||||
|
for device in devices:
|
||||||
|
vendor: Type[WirelessCard] = PCIDevice.from_ioregistry(device, anti_spoof=True).vendor_detect(inherits=WirelessCard) # type: ignore
|
||||||
|
if vendor:
|
||||||
|
self.wifi = vendor.from_ioregistry(device, anti_spoof=True) # type: ignore
|
||||||
|
break
|
||||||
|
ioreg.IOObjectRelease(device)
|
||||||
|
|
||||||
|
def storage_probe(self):
|
||||||
|
sata_controllers = ioreg.ioiterator_to_list(
|
||||||
|
ioreg.IOServiceGetMatchingServices(
|
||||||
|
ioreg.kIOMasterPortDefault,
|
||||||
|
{"IOProviderClass": "IOPCIDevice", "IOPropertyMatch": [{"class-code": binascii.a2b_hex(Utilities.hexswap(hex(SATAController.CLASS_CODE)[2:].zfill(8)))}]},
|
||||||
|
None,
|
||||||
|
)[1]
|
||||||
|
)
|
||||||
|
nvme_controllers = ioreg.ioiterator_to_list(
|
||||||
|
ioreg.IOServiceGetMatchingServices(
|
||||||
|
ioreg.kIOMasterPortDefault, {"IOProviderClass": "IONVMeController", "IOParentMatch": {"IOProviderClass": "IOPCIDevice"}, "IOPropertyMatch": {"IOClass": "IONVMeController"}}, None
|
||||||
|
)[1]
|
||||||
|
)
|
||||||
|
for device in sata_controllers:
|
||||||
|
self.storage.append(SATAController.from_ioregistry(device))
|
||||||
|
ioreg.IOObjectRelease(device)
|
||||||
|
for device in nvme_controllers:
|
||||||
|
parent = ioreg.IORegistryEntryGetParentEntry(device, "IOService".encode(), None)[1]
|
||||||
|
ioreg.IOObjectRelease(device)
|
||||||
|
|
||||||
|
aspm: Union[int, bytes] = ioreg.corefoundation_to_native(ioreg.IORegistryEntryCreateCFProperty(parent, "pci-aspm-default", ioreg.kCFAllocatorDefault, ioreg.kNilOptions)) or 0 # type: ignore
|
||||||
|
if isinstance(aspm, bytes):
|
||||||
|
aspm = int.from_bytes(aspm, byteorder="little")
|
||||||
|
|
||||||
|
controller = NVMeController.from_ioregistry(parent)
|
||||||
|
controller.aspm = aspm
|
||||||
|
|
||||||
|
if controller.vendor_id != 0x106B:
|
||||||
|
self.storage.append(controller)
|
||||||
|
|
||||||
|
ioreg.IOObjectRelease(parent)
|
||||||
|
|
||||||
|
def smbios_probe(self):
|
||||||
|
# Reported model
|
||||||
|
entry = next(ioreg.ioiterator_to_list(ioreg.IOServiceGetMatchingServices(ioreg.kIOMasterPortDefault, ioreg.IOServiceMatching("IOPlatformExpertDevice".encode()), None)[1]))
|
||||||
|
self.reported_model = ioreg.corefoundation_to_native(ioreg.IORegistryEntryCreateCFProperty(entry, "model", ioreg.kCFAllocatorDefault, ioreg.kNilOptions)).strip(b"\0").decode() # type: ignore
|
||||||
|
translated = subprocess.run("sysctl -in sysctl.proc_translated".split(), stdout=subprocess.PIPE).stdout.decode()
|
||||||
|
if translated:
|
||||||
|
board = "target-type"
|
||||||
|
else:
|
||||||
|
board = "board-id"
|
||||||
|
self.reported_board_id = ioreg.corefoundation_to_native(ioreg.IORegistryEntryCreateCFProperty(entry, board, ioreg.kCFAllocatorDefault, ioreg.kNilOptions)).strip(b"\0").decode() # type: ignore
|
||||||
|
ioreg.IOObjectRelease(entry)
|
||||||
|
|
||||||
|
# Real model
|
||||||
|
# TODO: We previously had logic for OC users using iMacPro1,1 with incorrect ExposeSensitiveData. Add logic?
|
||||||
|
self.real_model = Utilities.get_nvram("oem-product", "4D1FDA02-38C7-4A6A-9CC6-4BCCA8B30102", decode=True) or self.reported_model
|
||||||
|
self.real_board_id = Utilities.get_nvram("oem-board", "4D1FDA02-38C7-4A6A-9CC6-4BCCA8B30102", decode=True) or self.reported_board_id
|
||||||
|
|
||||||
|
# OCLP version
|
||||||
|
self.oclp_version = Utilities.get_nvram("OCLP-Version", "4D1FDA02-38C7-4A6A-9CC6-4BCCA8B30102", decode=True)
|
||||||
|
self.opencore_version = Utilities.get_nvram("opencore-version", "4D1FDA02-38C7-4A6A-9CC6-4BCCA8B30102", decode=True)
|
||||||
|
|
||||||
|
def cpu_probe(self):
|
||||||
|
self.cpu = CPU(
|
||||||
|
subprocess.run("sysctl machdep.cpu.brand_string".split(), stdout=subprocess.PIPE).stdout.decode().partition(": ")[2].strip(),
|
||||||
|
subprocess.run("sysctl machdep.cpu.features".split(), stdout=subprocess.PIPE).stdout.decode().partition(": ")[2].strip().split(" "),
|
||||||
|
)
|
||||||
244
Resources/ioreg.py
Normal file
244
Resources/ioreg.py
Normal file
@@ -0,0 +1,244 @@
|
|||||||
|
# Handle misc CLI menu options
|
||||||
|
# Copyright (C) 2020-2021, Dhinak G
|
||||||
|
|
||||||
|
from __future__ import annotations
|
||||||
|
|
||||||
|
from typing import NewType, Union
|
||||||
|
|
||||||
|
import objc
|
||||||
|
from CoreFoundation import CFRelease, kCFAllocatorDefault # type: ignore # pylint: disable=no-name-in-module
|
||||||
|
from Foundation import NSBundle # type: ignore # pylint: disable=no-name-in-module
|
||||||
|
from PyObjCTools import Conversion
|
||||||
|
|
||||||
|
IOKit_bundle = NSBundle.bundleWithIdentifier_("com.apple.framework.IOKit")
|
||||||
|
|
||||||
|
# pylint: disable=invalid-name
|
||||||
|
io_name_t_ref_out = b"[128c]" # io_name_t is char[128]
|
||||||
|
const_io_name_t_ref_in = b"r*"
|
||||||
|
CFStringRef = b"^{__CFString=}"
|
||||||
|
CFDictionaryRef = b"^{__CFDictionary=}"
|
||||||
|
CFAllocatorRef = b"^{__CFAllocator=}"
|
||||||
|
# pylint: enable=invalid-name
|
||||||
|
|
||||||
|
# https://developer.apple.com/library/archive/documentation/Cocoa/Conceptual/ObjCRuntimeGuide/Articles/ocrtTypeEncodings.html
|
||||||
|
functions = [
|
||||||
|
("IORegistryEntryCreateCFProperties", b"IIo^@" + CFAllocatorRef + b"I"),
|
||||||
|
("IOServiceMatching", CFDictionaryRef + b"r*"),
|
||||||
|
("IOServiceGetMatchingServices", b"II" + CFDictionaryRef + b"o^I"),
|
||||||
|
("IOIteratorNext", b"II"),
|
||||||
|
("IORegistryEntryGetParentEntry", b"IIr*o^I"),
|
||||||
|
("IOObjectRelease", b"II"),
|
||||||
|
("IORegistryEntryGetName", b"IIo" + io_name_t_ref_out),
|
||||||
|
("IOObjectGetClass", b"IIo" + io_name_t_ref_out),
|
||||||
|
("IOObjectCopyClass", CFStringRef + b"I"),
|
||||||
|
("IOObjectCopySuperclassForClass", CFStringRef + CFStringRef),
|
||||||
|
("IORegistryEntryGetChildIterator", b"IIr*o^I"),
|
||||||
|
("IORegistryCreateIterator", b"IIr*Io^I"),
|
||||||
|
("IORegistryEntryCreateIterator", b"IIr*Io^I"),
|
||||||
|
("IORegistryIteratorEnterEntry", b"II"),
|
||||||
|
("IORegistryIteratorExitEntry", b"II"),
|
||||||
|
("IORegistryEntryCreateCFProperty", b"@I" + CFStringRef + CFAllocatorRef + b"I"),
|
||||||
|
("IORegistryEntryGetPath", b"IIr*oI"),
|
||||||
|
("IORegistryEntryCopyPath", CFStringRef + b"Ir*"),
|
||||||
|
("IOObjectConformsTo", b"II" + const_io_name_t_ref_in),
|
||||||
|
("IORegistryEntryGetLocationInPlane", b"II" + const_io_name_t_ref_in + b"o" + io_name_t_ref_out),
|
||||||
|
("IOServiceNameMatching", CFDictionaryRef + b"r*"),
|
||||||
|
("IORegistryEntryGetRegistryEntryID", b"IIo^Q"),
|
||||||
|
("IORegistryEntryIDMatching", CFDictionaryRef + b"Q"),
|
||||||
|
("IORegistryEntryFromPath", b"II" + const_io_name_t_ref_in),
|
||||||
|
]
|
||||||
|
|
||||||
|
variables = [("kIOMasterPortDefault", b"I")]
|
||||||
|
|
||||||
|
# pylint: disable=invalid-name
|
||||||
|
pointer = type(None)
|
||||||
|
|
||||||
|
kern_return_t = NewType("kern_return_t", int)
|
||||||
|
boolean_t = int
|
||||||
|
|
||||||
|
io_object_t = NewType("io_object_t", object)
|
||||||
|
io_name_t = bytes
|
||||||
|
io_string_t = bytes
|
||||||
|
|
||||||
|
# io_registry_entry_t = NewType("io_registry_entry_t", io_object_t)
|
||||||
|
io_registry_entry_t = io_object_t
|
||||||
|
io_iterator_t = NewType("io_iterator_t", io_object_t)
|
||||||
|
|
||||||
|
CFTypeRef = Union[int, float, bytes, dict, list]
|
||||||
|
|
||||||
|
IOOptionBits = int
|
||||||
|
mach_port_t = int
|
||||||
|
CFAllocatorType = type(kCFAllocatorDefault)
|
||||||
|
|
||||||
|
NULL = 0
|
||||||
|
|
||||||
|
kIOMasterPortDefault: mach_port_t
|
||||||
|
kNilOptions: IOOptionBits = NULL
|
||||||
|
|
||||||
|
# IOKitLib.h
|
||||||
|
kIORegistryIterateRecursively = 1
|
||||||
|
kIORegistryIterateParents = 2
|
||||||
|
|
||||||
|
# pylint: enable=invalid-name
|
||||||
|
|
||||||
|
|
||||||
|
# kern_return_t IORegistryEntryCreateCFProperties(io_registry_entry_t entry, CFMutableDictionaryRef * properties, CFAllocatorRef allocator, IOOptionBits options);
|
||||||
|
def IORegistryEntryCreateCFProperties(entry: io_registry_entry_t, properties: pointer, allocator: CFAllocatorType, options: IOOptionBits) -> tuple[kern_return_t, dict]: # pylint: disable=invalid-name
|
||||||
|
raise NotImplementedError
|
||||||
|
|
||||||
|
|
||||||
|
# CFMutableDictionaryRef IOServiceMatching(const char * name);
|
||||||
|
def IOServiceMatching(name: bytes) -> dict: # pylint: disable=invalid-name
|
||||||
|
raise NotImplementedError
|
||||||
|
|
||||||
|
|
||||||
|
# kern_return_t IOServiceGetMatchingServices(mach_port_t masterPort, CFDictionaryRef matching CF_RELEASES_ARGUMENT, io_iterator_t * existing);
|
||||||
|
def IOServiceGetMatchingServices(masterPort: mach_port_t, matching: dict, existing: pointer) -> tuple[kern_return_t, io_iterator_t]: # pylint: disable=invalid-name
|
||||||
|
raise NotImplementedError
|
||||||
|
|
||||||
|
|
||||||
|
# io_object_t IOIteratorNext(io_iterator_t iterator);
|
||||||
|
def IOIteratorNext(iterator: io_iterator_t) -> io_object_t: # pylint: disable=invalid-name
|
||||||
|
raise NotImplementedError
|
||||||
|
|
||||||
|
|
||||||
|
# kern_return_t IORegistryEntryGetParentEntry(io_registry_entry_t entry, const io_name_t plane, io_registry_entry_t * parent);
|
||||||
|
def IORegistryEntryGetParentEntry(entry: io_registry_entry_t, plane: io_name_t, parent: pointer) -> tuple[kern_return_t, io_registry_entry_t]: # pylint: disable=invalid-name
|
||||||
|
raise NotImplementedError
|
||||||
|
|
||||||
|
|
||||||
|
# kern_return_t IOObjectRelease(io_object_t object);
|
||||||
|
def IOObjectRelease(object: io_object_t) -> kern_return_t: # pylint: disable=invalid-name
|
||||||
|
raise NotImplementedError
|
||||||
|
|
||||||
|
|
||||||
|
# kern_return_t IORegistryEntryGetName(io_registry_entry_t entry, io_name_t name);
|
||||||
|
def IORegistryEntryGetName(entry: io_registry_entry_t, name: pointer) -> tuple[kern_return_t, bytes]: # pylint: disable=invalid-name
|
||||||
|
raise NotImplementedError
|
||||||
|
|
||||||
|
|
||||||
|
# kern_return_t IOObjectGetClass(io_object_t object, io_name_t className);
|
||||||
|
def IOObjectGetClass(object: io_object_t, className: pointer) -> tuple[kern_return_t, bytes]: # pylint: disable=invalid-name
|
||||||
|
raise NotImplementedError
|
||||||
|
|
||||||
|
|
||||||
|
# CFStringRef IOObjectCopyClass(io_object_t object);
|
||||||
|
def IOObjectCopyClass(object: io_object_t) -> str: # pylint: disable=invalid-name
|
||||||
|
raise NotImplementedError
|
||||||
|
|
||||||
|
|
||||||
|
# CFStringRef IOObjectCopySuperclassForClass(CFStringRef classname)
|
||||||
|
def IOObjectCopySuperclassForClass(classname: str) -> str: # pylint: disable=invalid-name
|
||||||
|
raise NotImplementedError
|
||||||
|
|
||||||
|
|
||||||
|
# kern_return_t IORegistryEntryGetChildIterator(io_registry_entry_t entry, const io_name_t plane, io_iterator_t * iterator);
|
||||||
|
def IORegistryEntryGetChildIterator(entry: io_registry_entry_t, plane: io_name_t, iterator: pointer) -> tuple[kern_return_t, io_iterator_t]: # pylint: disable=invalid-name
|
||||||
|
raise NotImplementedError
|
||||||
|
|
||||||
|
|
||||||
|
# kern_return_t IORegistryCreateIterator(mach_port_t masterPort, const io_name_t plane, IOOptionBits options, io_iterator_t * iterator)
|
||||||
|
def IORegistryCreateIterator(masterPort: mach_port_t, plane: io_name_t, options: IOOptionBits, iterator: pointer) -> tuple[kern_return_t, io_iterator_t]: # pylint: disable=invalid-name
|
||||||
|
raise NotImplementedError
|
||||||
|
|
||||||
|
|
||||||
|
# kern_return_t IORegistryEntryCreateIterator(io_registry_entry_t entry, const io_name_t plane, IOOptionBits options, io_iterator_t * iterator)
|
||||||
|
def IORegistryEntryCreateIterator(entry: io_registry_entry_t, plane: io_name_t, options: IOOptionBits, iterator: pointer) -> tuple[kern_return_t, io_iterator_t]: # pylint: disable=invalid-name
|
||||||
|
raise NotImplementedError
|
||||||
|
|
||||||
|
|
||||||
|
# kern_return_t IORegistryIteratorEnterEntry(io_iterator_t iterator)
|
||||||
|
def IORegistryIteratorEnterEntry(iterator: io_iterator_t) -> kern_return_t: # pylint: disable=invalid-name
|
||||||
|
raise NotImplementedError
|
||||||
|
|
||||||
|
|
||||||
|
# kern_return_t IORegistryIteratorExitEntry(io_iterator_t iterator)
|
||||||
|
def IORegistryIteratorExitEntry(iterator: io_iterator_t) -> kern_return_t: # pylint: disable=invalid-name
|
||||||
|
raise NotImplementedError
|
||||||
|
|
||||||
|
|
||||||
|
# CFTypeRef IORegistryEntryCreateCFProperty(io_registry_entry_t entry, CFStringRef key, CFAllocatorRef allocator, IOOptionBits options);
|
||||||
|
def IORegistryEntryCreateCFProperty(entry: io_registry_entry_t, key: str, allocator: CFAllocatorType, options: IOOptionBits) -> CFTypeRef: # pylint: disable=invalid-name
|
||||||
|
raise NotImplementedError
|
||||||
|
|
||||||
|
|
||||||
|
# kern_return_t IORegistryEntryGetPath(io_registry_entry_t entry, const io_name_t plane, io_string_t path);
|
||||||
|
def IORegistryEntryGetPath(entry: io_registry_entry_t, plane: io_name_t, path: pointer) -> tuple[kern_return_t, io_string_t]: # pylint: disable=invalid-name
|
||||||
|
raise NotImplementedError
|
||||||
|
|
||||||
|
|
||||||
|
# CFStringRef IORegistryEntryCopyPath(io_registry_entry_t entry, const io_name_t plane)
|
||||||
|
def IORegistryEntryCopyPath(entry: io_registry_entry_t, plane: bytes) -> str: # pylint: disable=invalid-name
|
||||||
|
raise NotImplementedError
|
||||||
|
|
||||||
|
|
||||||
|
# boolean_t IOObjectConformsTo(io_object_t object, const io_name_t className)
|
||||||
|
def IOObjectConformsTo(object: io_object_t, className: bytes) -> boolean_t: # pylint: disable=invalid-name
|
||||||
|
raise NotImplementedError
|
||||||
|
|
||||||
|
|
||||||
|
# kern_return_t IORegistryEntryGetLocationInPlane(io_registry_entry_t entry, const io_name_t plane, io_name_t location)
|
||||||
|
def IORegistryEntryGetLocationInPlane(entry: io_registry_entry_t, plane: io_name_t, location: pointer) -> tuple[kern_return_t, bytes]: # pylint: disable=invalid-name
|
||||||
|
raise NotImplementedError
|
||||||
|
|
||||||
|
|
||||||
|
# CFMutableDictionaryRef IOServiceNameMatching(const char * name);
|
||||||
|
def IOServiceNameMatching(name: bytes) -> dict: # pylint: disable=invalid-name
|
||||||
|
raise NotImplementedError
|
||||||
|
|
||||||
|
|
||||||
|
# kern_return_t IORegistryEntryGetRegistryEntryID(io_registry_entry_t entry, uint64_t * entryID)
|
||||||
|
def IORegistryEntryGetRegistryEntryID(entry: io_registry_entry_t, entryID: pointer) -> tuple[kern_return_t, int]: # pylint: disable=invalid-name
|
||||||
|
raise NotImplementedError
|
||||||
|
|
||||||
|
|
||||||
|
# CFMutableDictionaryRef IORegistryEntryIDMatching(uint64_t entryID);
|
||||||
|
def IORegistryEntryIDMatching(entryID: int) -> dict: # pylint: disable=invalid-name
|
||||||
|
raise NotImplementedError
|
||||||
|
|
||||||
|
|
||||||
|
# io_registry_entry_t IORegistryEntryFromPath(mach_port_t mainPort, const io_string_t path)
|
||||||
|
def IORegistryEntryFromPath(mainPort: mach_port_t, path: io_string_t) -> io_registry_entry_t: # pylint: disable=invalid-name
|
||||||
|
raise NotImplementedError
|
||||||
|
|
||||||
|
|
||||||
|
objc.loadBundleFunctions(IOKit_bundle, globals(), functions) # type: ignore # pylint: disable=no-member
|
||||||
|
objc.loadBundleVariables(IOKit_bundle, globals(), variables) # type: ignore # pylint: disable=no-member
|
||||||
|
|
||||||
|
|
||||||
|
def ioiterator_to_list(iterator: io_iterator_t):
|
||||||
|
# items = []
|
||||||
|
item = IOIteratorNext(iterator) # noqa: F821
|
||||||
|
while item:
|
||||||
|
# items.append(next)
|
||||||
|
yield item
|
||||||
|
item = IOIteratorNext(iterator) # noqa: F821
|
||||||
|
IOObjectRelease(iterator) # noqa: F821
|
||||||
|
# return items
|
||||||
|
|
||||||
|
|
||||||
|
def corefoundation_to_native(collection):
|
||||||
|
if collection is None: # nullptr
|
||||||
|
return None
|
||||||
|
native = Conversion.pythonCollectionFromPropertyList(collection)
|
||||||
|
CFRelease(collection)
|
||||||
|
return native
|
||||||
|
|
||||||
|
|
||||||
|
def native_to_corefoundation(native):
|
||||||
|
return Conversion.propertyListFromPythonCollection(native)
|
||||||
|
|
||||||
|
|
||||||
|
def io_name_t_to_str(name):
|
||||||
|
return name.partition(b"\0")[0].decode()
|
||||||
|
|
||||||
|
|
||||||
|
def get_class_inheritance(io_object):
|
||||||
|
classes = []
|
||||||
|
cls = IOObjectCopyClass(io_object)
|
||||||
|
while cls:
|
||||||
|
# yield cls
|
||||||
|
classes.append(cls)
|
||||||
|
CFRelease(cls)
|
||||||
|
cls = IOObjectCopySuperclassForClass(cls)
|
||||||
|
return classes
|
||||||
@@ -1,303 +0,0 @@
|
|||||||
[
|
|
||||||
{
|
|
||||||
"models": [
|
|
||||||
"MacBook5,1",
|
|
||||||
"MacBook5,2"
|
|
||||||
],
|
|
||||||
"patches": [
|
|
||||||
"WifiBCM94322",
|
|
||||||
"LegacyAudio",
|
|
||||||
"MissingSSE42",
|
|
||||||
"EthernetNvidia",
|
|
||||||
"LegacyGPU"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"models": [
|
|
||||||
"MacBook6,1",
|
|
||||||
"MacBook7,1"
|
|
||||||
],
|
|
||||||
"patches": [
|
|
||||||
"WifiBCM943224",
|
|
||||||
"LegacyAudio",
|
|
||||||
"MissingSSE42",
|
|
||||||
"EthernetNvidia",
|
|
||||||
"LegacyGPU"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"models": [
|
|
||||||
"MacBookAir2,1",
|
|
||||||
"MacBookAir3,1",
|
|
||||||
"MacBookAir3,2"
|
|
||||||
],
|
|
||||||
"patches": [
|
|
||||||
"WifiBCM94322",
|
|
||||||
"LegacyAudio",
|
|
||||||
"MissingSSE42",
|
|
||||||
"LegacyGPU"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"models": [
|
|
||||||
"MacBookAir4,1",
|
|
||||||
"MacBookAir4,2"
|
|
||||||
],
|
|
||||||
"patches": [
|
|
||||||
"WifiBCM94322",
|
|
||||||
"LegacyAudio",
|
|
||||||
"LegacyGPU"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"models": [
|
|
||||||
"MacBookAir5,1",
|
|
||||||
"MacBookAir5,2"
|
|
||||||
],
|
|
||||||
"patches": [
|
|
||||||
"WifiBCM94322"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"models": [
|
|
||||||
"MacBookPro3,1"
|
|
||||||
],
|
|
||||||
"patches": [
|
|
||||||
"WifiAtheros",
|
|
||||||
"EthernetMarvell",
|
|
||||||
"LegacyAudio",
|
|
||||||
"MissingSSE42",
|
|
||||||
"LegacyGPU"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"models": [
|
|
||||||
"MacBookPro4,1"
|
|
||||||
],
|
|
||||||
"patches": [
|
|
||||||
"WifiBCM94328",
|
|
||||||
"EthernetMarvell",
|
|
||||||
"LegacyAudio",
|
|
||||||
"MissingSSE42",
|
|
||||||
"LegacyGPU"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"models": [
|
|
||||||
"MacBookPro5,1",
|
|
||||||
"MacBookPro5,2",
|
|
||||||
"MacBookPro5,3",
|
|
||||||
"MacBookPro5,4",
|
|
||||||
"MacBookPro5,5"
|
|
||||||
],
|
|
||||||
"patches": [
|
|
||||||
"WifiBCM94322",
|
|
||||||
"EthernetNvidia",
|
|
||||||
"LegacyAudio",
|
|
||||||
"MissingSSE42",
|
|
||||||
"LegacyGPU"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"models": [
|
|
||||||
"MacBookPro6,1",
|
|
||||||
"MacBookPro6,2"
|
|
||||||
],
|
|
||||||
"patches": [
|
|
||||||
"WifiBCM943224",
|
|
||||||
"EthernetBroadcom",
|
|
||||||
"LegacyAudio",
|
|
||||||
"LegacyGPU",
|
|
||||||
"PCIBridge"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"models": [
|
|
||||||
"MacBookPro7,1"
|
|
||||||
],
|
|
||||||
"patches": [
|
|
||||||
"WifiBCM94322",
|
|
||||||
"EthernetNvidia",
|
|
||||||
"LegacyAudio",
|
|
||||||
"MissingSSE42",
|
|
||||||
"LegacyGPU"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"models": [
|
|
||||||
"MacBookPro8,1",
|
|
||||||
"MacBookPro8,2",
|
|
||||||
"MacBookPro8,3"
|
|
||||||
],
|
|
||||||
"patches": [
|
|
||||||
"WifiBCM94331",
|
|
||||||
"EthernetBroadcom",
|
|
||||||
"LegacyAudio",
|
|
||||||
"LegacyGPU"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"models": [
|
|
||||||
"MacBookPro9,1",
|
|
||||||
"MacBookPro9,2",
|
|
||||||
"MacBookPro10,1",
|
|
||||||
"MacBookPro10,2"
|
|
||||||
],
|
|
||||||
"patches": [
|
|
||||||
"WifiBCM94331"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"models": [
|
|
||||||
"MacMini3,1",
|
|
||||||
"MacMini4,1"
|
|
||||||
],
|
|
||||||
"patches": [
|
|
||||||
"WifiBCM943224",
|
|
||||||
"EthernetNvidia",
|
|
||||||
"LegacyAudio",
|
|
||||||
"MissingSSE42",
|
|
||||||
"LegacyGPU"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"models": [
|
|
||||||
"Macmini5,1",
|
|
||||||
"Macmini5,2",
|
|
||||||
"Macmini5,3"
|
|
||||||
],
|
|
||||||
"patches": [
|
|
||||||
"WifiBCM94331",
|
|
||||||
"EthernetBroadcom",
|
|
||||||
"LegacyAudio",
|
|
||||||
"LegacyGPU"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"models": [
|
|
||||||
"MacMini6,1",
|
|
||||||
"MacMini6,2"
|
|
||||||
],
|
|
||||||
"patches": [
|
|
||||||
"WifiBCM94331"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"models": [
|
|
||||||
"iMac7,1",
|
|
||||||
"iMac8,1"
|
|
||||||
],
|
|
||||||
"patches": [
|
|
||||||
"WifiBCM94328",
|
|
||||||
"EthernetNvidia",
|
|
||||||
"LegacyAudio",
|
|
||||||
"MissingSSE42",
|
|
||||||
"LegacyGPU"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"models": [
|
|
||||||
"iMac9,1"
|
|
||||||
],
|
|
||||||
"patches": [
|
|
||||||
"WifiBCM94322",
|
|
||||||
"EthernetNvidia",
|
|
||||||
"LegacyAudio",
|
|
||||||
"MissingSSE42",
|
|
||||||
"LegacyGPU"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"models": [
|
|
||||||
"iMac10,1"
|
|
||||||
],
|
|
||||||
"patches": [
|
|
||||||
"WifiAtheros",
|
|
||||||
"EthernetNvidia",
|
|
||||||
"LegacyAudio",
|
|
||||||
"MissingSSE42",
|
|
||||||
"LegacyGPU"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"models": [
|
|
||||||
"iMac11,1",
|
|
||||||
"iMac11,2",
|
|
||||||
"iMac11,3"
|
|
||||||
],
|
|
||||||
"patches": [
|
|
||||||
"WifiAtheros",
|
|
||||||
"EthernetBroadcom",
|
|
||||||
"LegacyAudio",
|
|
||||||
"LegacyGPU",
|
|
||||||
"PCIBridge"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"models": [
|
|
||||||
"iMac12,1",
|
|
||||||
"iMac12,2"
|
|
||||||
],
|
|
||||||
"patches": [
|
|
||||||
"WifiAtheros",
|
|
||||||
"EthernetBroadcom",
|
|
||||||
"LegacyAudio",
|
|
||||||
"LegacyGPU"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"models": [
|
|
||||||
"iMac13,1",
|
|
||||||
"iMac13,2"
|
|
||||||
],
|
|
||||||
"patches": [
|
|
||||||
"WifiBCM94331"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"models": [
|
|
||||||
"iMac14,1",
|
|
||||||
"iMac14,2",
|
|
||||||
"iMac14,3"
|
|
||||||
],
|
|
||||||
"patches": []
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"models": [
|
|
||||||
"MacPro3,1"
|
|
||||||
],
|
|
||||||
"patches": [
|
|
||||||
"WifiAtheros",
|
|
||||||
"LegacyAudio",
|
|
||||||
"MissingSSE42",
|
|
||||||
"SSEEmulator",
|
|
||||||
"DualSocket"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"models": [
|
|
||||||
"MacPro4,1"
|
|
||||||
],
|
|
||||||
"patches": [
|
|
||||||
"WifiAtheros",
|
|
||||||
"DualSocket"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"models": [
|
|
||||||
"MacPro5,1"
|
|
||||||
],
|
|
||||||
"patches": [
|
|
||||||
"WifiBCM94322",
|
|
||||||
"DualSocket"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"models": [
|
|
||||||
"Xserve3,1"
|
|
||||||
],
|
|
||||||
"patches": [
|
|
||||||
"DualSocket"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
]
|
|
||||||
@@ -93,6 +93,14 @@ module.exports = {
|
|||||||
]
|
]
|
||||||
|
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
title: 'macOS Monterey',
|
||||||
|
collapsable: false,
|
||||||
|
sidebarDepth: 1,
|
||||||
|
children: [
|
||||||
|
'MONTEREY-DROP',
|
||||||
|
]
|
||||||
|
},
|
||||||
{
|
{
|
||||||
title: 'Misc',
|
title: 'Misc',
|
||||||
collapsable: false,
|
collapsable: false,
|
||||||
|
|||||||
@@ -32,6 +32,27 @@ Currently Zoom relies partially on Metal and so needs a small binary patch. Dosd
|
|||||||
|
|
||||||
Due to the usage of `amfi_get_out_of_my_way=1`, macOS will fail to prompt users for special permissions upon application start as well as omit the entires in System Preferences. To work around this, we recommend users install [tccplus](https://github.com/jslegendre/tccplus) to manage permissions.
|
Due to the usage of `amfi_get_out_of_my_way=1`, macOS will fail to prompt users for special permissions upon application start as well as omit the entires in System Preferences. To work around this, we recommend users install [tccplus](https://github.com/jslegendre/tccplus) to manage permissions.
|
||||||
|
|
||||||
|
Example usage with Discord and microphone permissions:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
# Open Terminal and run the following commands
|
||||||
|
cd ~/Downloads/
|
||||||
|
chmod +x tccplus
|
||||||
|
./tccplus add Microphone com.hnc.Discord
|
||||||
|
```
|
||||||
|
|
||||||
|
For those who may experience issues with `tccplus`, you can manually patch `com.apple.TCC` to add permissions:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
# get app id (Zoom.us used in example):
|
||||||
|
$ osascript -e 'id of app "zoom.us"'
|
||||||
|
# output: us.zoom.xos
|
||||||
|
|
||||||
|
$ sudo sqlite3 ~/Library/Application\ Support/com.apple.TCC/TCC.db "INSERT or REPLACE INTO access VALUES('kTCCServiceMicrophone','us.zoom.xos',0,2,0,1,NULL,NULL,NULL,'UNUSED',NULL,0,1541440109);"
|
||||||
|
|
||||||
|
$ sudo sqlite3 ~/Library/Application\ Support/com.apple.TCC/TCC.db "INSERT or REPLACE INTO access VALUES('kTCCServiceCamera','us.zoom.xos',0,2,0,1,NULL,NULL,NULL,'UNUSED',NULL,0,1541440109);"
|
||||||
|
```
|
||||||
|
|
||||||
## Keyboard Backlight broken
|
## Keyboard Backlight broken
|
||||||
|
|
||||||
Due to forcing `hidd` into spinning up with the fallback mode enabled, this can break the OS's recognition of backlight keyboards. Thankfully the drivers themselves still do operate so applications such as [LabTick](https://www.macupdate.com/app/mac/22151/lab-tick) are able to set the brightness manually.
|
Due to forcing `hidd` into spinning up with the fallback mode enabled, this can break the OS's recognition of backlight keyboards. Thankfully the drivers themselves still do operate so applications such as [LabTick](https://www.macupdate.com/app/mac/22151/lab-tick) are able to set the brightness manually.
|
||||||
@@ -59,7 +80,7 @@ Currently OpenCore Legacy Patcher doesn't have support for the TeraScale 2 serie
|
|||||||
The best way to achieve this is to boot Recovery (or Single User Mode if the dGPU refuses to function at all) and run the following command:
|
The best way to achieve this is to boot Recovery (or Single User Mode if the dGPU refuses to function at all) and run the following command:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
nvram fa4ce28d-b62f-4c99-9cc3-6815686e30f9:gpu-power-prefs=%01%00%00%00
|
nvram FA4CE28D-B62F-4C99-9CC3-6815686E30F9:gpu-power-prefs=%01%00%00%00
|
||||||
```
|
```
|
||||||
|
|
||||||
This will disable the dGPU and allow graphics acceleration in Big Sur. Note that external display outputs are directly routed to the dGPU and therefore can no longer be used. Solutions such as a [DisplayLink Adapters](https://www.displaylink.com/products/usb-adapters) can work around this limitation.
|
This will disable the dGPU and allow graphics acceleration in Big Sur. Note that external display outputs are directly routed to the dGPU and therefore can no longer be used. Solutions such as a [DisplayLink Adapters](https://www.displaylink.com/products/usb-adapters) can work around this limitation in theory. However, currently the proprietary DisplayLink driver refuses to function on legacy-patched systems, either resulting in a windowserver crash loop or no output at all.
|
||||||
|
|||||||
@@ -7,18 +7,18 @@ With OpenCore Legacy Patcher we recommend users go through the below table to un
|
|||||||
| Features | [OpenCore Legacy Patcher](https://github.com/dortania/OpenCore-Legacy-Patcher/) | [Patched Sur](https://github.com/BenSova/Patched-Sur) |
|
| Features | [OpenCore Legacy Patcher](https://github.com/dortania/OpenCore-Legacy-Patcher/) | [Patched Sur](https://github.com/BenSova/Patched-Sur) |
|
||||||
| :--- | :--- | :--- |
|
| :--- | :--- | :--- |
|
||||||
| Over The Air Updates | <span style="color:#30BCD5">Native System Preferences, additionally supports Deltas (~2GB) for Metal GPUs</span> | <span style="color:red">Inside Patcher Sur app (~12GB), only available when InstallAssistants release.</span> InstallAssistants generally available same day as System Preference updates, however developer betas will lag behind by 1 day compared to OTAs |
|
| Over The Air Updates | <span style="color:#30BCD5">Native System Preferences, additionally supports Deltas (~2GB) for Metal GPUs</span> | <span style="color:red">Inside Patcher Sur app (~12GB), only available when InstallAssistants release.</span> InstallAssistants generally available same day as System Preference updates, however developer betas will lag behind by 1 day compared to OTAs |
|
||||||
| FileVault | <span style="color:#30BCD5">Supported on Metal GPUs</span> | <span style="color:red">Not supported</span> |
|
| FileVault | <span style="color:#30BCD5">Supported on Metal GPUs</span> | <span style="color:red">Not supported</span> |
|
||||||
| System Integrity Protection | <span style="color:#30BCD5">Fully enabled on Metal GPUs</span> | <span style="color:red">Disabled for early 2013 and older during the patching process and first boot afterwards, otherwise enabled</span> |
|
| System Integrity Protection | <span style="color:#30BCD5">Fully enabled on Metal GPUs</span> | <span style="color:red">Disabled for early 2013 and older during the patching process and first boot afterwards, otherwise enabled</span> |
|
||||||
| APFS Snapshots | <span style="color:#30BCD5">Fully enabled</span> | <span style="color:red">Disabled</span> |
|
| APFS Snapshots | <span style="color:#30BCD5">Fully enabled</span> | <span style="color:red">Disabled</span> |
|
||||||
| User facing | <span style="color:red">TUI interface</span> | <span style="color:#30BCD5">SwiftUI interface, more user friendly</span> |
|
| User facing | <span style="color:red">TUI interface</span> | <span style="color:#30BCD5">SwiftUI interface, more user friendly</span> |
|
||||||
| Supported OSes | <span style="color:#30BCD5">10.7-11</span> | <span style="color:red">10.15-11</span> |
|
| Supported OSes | <span style="color:#30BCD5">10.7-11</span> | <span style="color:red">10.15-11</span> |
|
||||||
| Firmware Patching | <span style="color:#30BCD5">None required</span> | <span style="color:red">Required for models without native APFS support</span> |
|
| Firmware Patching | <span style="color:#30BCD5">None required</span> | <span style="color:red">Required for models without native APFS support</span> |
|
||||||
| BootCamp Switching | <span style="color:red">Requires EFI Conversion for Start Disk support, otherwise still supported</span> | <span style="color:#30BCD5">Native</span> |
|
| BootCamp Switching | <span style="color:red">Requires EFI Conversion for Start Disk support, otherwise still supported</span> | <span style="color:#30BCD5">Native</span> |
|
||||||
| Legacy GPU Acceleration | <span style="color:#30BCD5">In active development</span>, see Acceleration Progress Tracker: [Link](https://github.com/dortania/OpenCore-Legacy-Patcher/issues/108) | <span style="color:red">Currently not researching</span> |
|
| Non-Metal GPU Acceleration | <span style="color:#30BCD5">In active development</span>, see Acceleration Progress Tracker: [Link](https://github.com/dortania/OpenCore-Legacy-Patcher/issues/108) | <span style="color:red">Currently not researching</span> |
|
||||||
| El Capitan-era Wifi cards | <span style="color:#30BCD5">Supported</span> | <span style="colorred">Not supported</span> |
|
| El Capitan-era Wifi cards | <span style="color:#30BCD5">Supported</span> | <span style="colorred">Not supported</span> |
|
||||||
| WPA Wireless Support | <span style="color:#30BCD5">Supported</span> | <span style="color:red">Minority may experience issues on early 2013 and older Models</span> |
|
| WPA Wireless Support | <span style="color:#30BCD5">Supported</span> | <span style="color:red">Minority may experience issues on early 2013 and older Models</span> |
|
||||||
| Personal Hotspot Support | <span style="color:#30BCD5">Native</span> | <span style="color:red">Often requires extra steps to achieve on early 2013 and older Models</span> |
|
| Personal Hotspot Support | <span style="color:#30BCD5">Native</span> | <span style="color:red">Often requires extra steps to achieve on early 2013 and older Models</span> |
|
||||||
| HEVC/H.265 Support for Mac Pros and iMacs with Polaris+ GPUs | <span style="color:#30BCD5">Supported</span> | <span style="color:red">Not supported</span> |
|
| HEVC/H.265 Support for Mac Pros and iMacs with Polaris+ GPUs | <span style="color:#30BCD5">Supported</span> | <span style="color:red">Not supported</span> |
|
||||||
| Big Sur-styled Boot Picker | <span style="color:#30BCD5">Available</span>, though as a shim to the original boot picker | <span style="color:red">Not available</span> |
|
| Big Sur-styled Boot Picker | <span style="color:#30BCD5">Available</span>, though as a shim to the original boot picker | <span style="color:red">Not available</span> |
|
||||||
| Hibernation Support | <span style="color:#30BCD5">Supports 3rd party SATA SSDs on 2011 and older models in addition to stock drives</span> | <span style="color:red">Only supports stock drives on 2011 and older models</span> |
|
| Hibernation Support | <span style="color:#30BCD5">Supports 3rd party SATA SSDs on 2011 and older models in addition to stock drives</span> | <span style="color:red">Only supports stock drives on 2011 and older models</span> |
|
||||||
| Sidecar Support | <span style="color:#30BCD5">Supports any Mac with Metal Intel iGPU</span>, artifacting way exhibited on high movement screen content | <span style="color:red">Not supported at all</span> |
|
| Sidecar Support | <span style="color:#30BCD5">Supports any Mac with Metal Intel iGPU</span>, artifacting way exhibited on high movement screen content | <span style="color:red">Not supported at all</span> |
|
||||||
|
|||||||
@@ -14,7 +14,6 @@ Now that you've loaded OpenCore, now select Install macOS!:
|
|||||||
|
|
||||||

|

|
||||||
|
|
||||||
|
|
||||||
After plenty of verbose booting, you will reach the installer screen! From there it's just like any normal macOS install. For an example of how the boot process looks, see the following video:
|
After plenty of verbose booting, you will reach the installer screen! From there it's just like any normal macOS install. For an example of how the boot process looks, see the following video:
|
||||||
|
|
||||||
* [OpenCore Legacy Patcher Boot Process](https://www.youtube.com/watch?v=AN3zsbQV_n4)
|
* [OpenCore Legacy Patcher Boot Process](https://www.youtube.com/watch?v=AN3zsbQV_n4)
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
Now that we have a macOS installer, lets now build our OpenCore configuration!
|
Now that we have a macOS installer, lets now build our OpenCore configuration!
|
||||||
|
|
||||||
First Download the latest release:
|
First Download the latest release:
|
||||||
|
|
||||||
* [OpenCore Legacy Patcher Releases](https://github.com/dortania/Opencore-Legacy-Patcher/releases)
|
* [OpenCore Legacy Patcher Releases](https://github.com/dortania/Opencore-Legacy-Patcher/releases)
|
||||||
|
|
||||||
@@ -15,7 +15,7 @@ From here you have a couple important options:
|
|||||||
* Build OpenCore
|
* Build OpenCore
|
||||||
* Install OpenCore to USB/internal drive
|
* Install OpenCore to USB/internal drive
|
||||||
* Change Model
|
* Change Model
|
||||||
* Patcher Settings
|
* Patcher Settings
|
||||||
|
|
||||||
If you're patching for a different machine than you're running, please select "Change Model" and enter the updated SMBIOS. For more advanced users, you may also tweak the patcher's build settings via "Patcher Settings"
|
If you're patching for a different machine than you're running, please select "Change Model" and enter the updated SMBIOS. For more advanced users, you may also tweak the patcher's build settings via "Patcher Settings"
|
||||||
|
|
||||||
@@ -31,7 +31,6 @@ Next lets run `Install OpenCore to USB/internal drive`:
|
|||||||
| :--- | :--- |
|
| :--- | :--- |
|
||||||
|  |  |
|
|  |  |
|
||||||
|
|
||||||
* If you have issues, please ensure you install OpenCore onto a FAT32 partition to ensure your Mac is able to boot it. You will need to format your drive as GUID/GPT in Disk Utility
|
* If you have issues, please ensure you install OpenCore onto a FAT32 partition to ensure your Mac is able to boot it. You will need to format your drive as GUID/GPT in Disk Utility
|
||||||
|
|
||||||
|
# Once finished, head to [Booting OpenCore and macOS](./BOOT.md)
|
||||||
# Once finished, head to [Booting OpenCore and macOS](./BOOT.md)
|
|
||||||
|
|||||||
@@ -8,9 +8,9 @@ With OpenCore Legacy Patcher, we include an extra binary called [OCLP-CLI](https
|
|||||||
* **--model xxxx**: override default model detection
|
* **--model xxxx**: override default model detection
|
||||||
* ex. **--model iMac11,2**
|
* ex. **--model iMac11,2**
|
||||||
* **--metal_gpu xxxx**: override default GPU detection (ie. Nvidia, AMD)
|
* **--metal_gpu xxxx**: override default GPU detection (ie. Nvidia, AMD)
|
||||||
* **--metal_gpu Nvidia**
|
* **--metal_gpu Nvidia**
|
||||||
* **--smbios_spoof xxxx**: set spoofing mode, defaults to Minimal if no arg provided (ie. Minimal, Moderate, Advanced)
|
* **--smbios_spoof xxxx**: set spoofing mode, defaults to Minimal if no arg provided (ie. Minimal, Moderate, Advanced)
|
||||||
* ex. **--smbios_spoof Moderate**
|
* ex. **--smbios_spoof Moderate**
|
||||||
* **--verbose**: enable verbose booting
|
* **--verbose**: enable verbose booting
|
||||||
* **--debug_oc**: enable debug OpenCore
|
* **--debug_oc**: enable debug OpenCore
|
||||||
* **--debug_kext**: enable debug kexts
|
* **--debug_kext**: enable debug kexts
|
||||||
@@ -38,4 +38,4 @@ Example usage:
|
|||||||
sudo ./OCLP-CLI --patch_sys_vol
|
sudo ./OCLP-CLI --patch_sys_vol
|
||||||
```
|
```
|
||||||
|
|
||||||
Note, root volume patching needs to be run as sudo
|
Note, root volume patching needs to be run as sudo
|
||||||
|
|||||||
@@ -12,7 +12,6 @@ The easiest way to debug yourself is via Patcher Settings. Here there are many d
|
|||||||
* "Enable OpenCore DEBUG"
|
* "Enable OpenCore DEBUG"
|
||||||
* "Enable Kext DEBUG"
|
* "Enable Kext DEBUG"
|
||||||
|
|
||||||
|
|
||||||
When you've enabled these 3 options, rebuild OpenCore and install to your drive. This will provide much greater debug information as well as write logs to the EFI Partition.
|
When you've enabled these 3 options, rebuild OpenCore and install to your drive. This will provide much greater debug information as well as write logs to the EFI Partition.
|
||||||
|
|
||||||
## Obtaining OpenCore logs from disk
|
## Obtaining OpenCore logs from disk
|
||||||
@@ -46,4 +45,4 @@ Now that you have proper logs, you can now [file issues with us](https://github.
|
|||||||
* Upload of your OpenCore log (if applicable)
|
* Upload of your OpenCore log (if applicable)
|
||||||
* Upload of your Kernel log (if applicable)
|
* Upload of your Kernel log (if applicable)
|
||||||
|
|
||||||
Additionally, please search whether the issue has been reported before. This avoids having duplicate issues.
|
Additionally, please search whether the issue has been reported before. This avoids having duplicate issues.
|
||||||
|
|||||||
@@ -11,13 +11,13 @@ Main sections of help we'd appreciate:
|
|||||||
* Donating any spare SATA SSDs
|
* Donating any spare SATA SSDs
|
||||||
* Having extra SSDs on hand allows us to quickly and easily test specific builds of macOS without having to wipe drives and reinstall as much
|
* Having extra SSDs on hand allows us to quickly and easily test specific builds of macOS without having to wipe drives and reinstall as much
|
||||||
* Aiding by buying items in our Amazon Wishlist
|
* Aiding by buying items in our Amazon Wishlist
|
||||||
* Currently we have a few members within Dortania testing so we recommend messaging the email listed below to see which member at the time would something purchased the most
|
* Currently we have a few members within Dortania testing so we recommend messaging the email listed below to see which member at the time would require something purchased the most
|
||||||
|
|
||||||
Additionally, hardware info dumps are greatly beneficial for us to determine what patches a machine might need:
|
Additionally, hardware info dumps are greatly beneficial for us to determine what patches a machine might need:
|
||||||
|
|
||||||
* [IORegistryExplorer](https://github.com/khronokernel/IORegistryClone/blob/master/ioreg-210.zip?raw=true)
|
* [IORegistryExplorer](https://github.com/khronokernel/IORegistryClone/blob/master/ioreg-210.zip?raw=true)
|
||||||
* `File -> SaveAs` and open an issue on Github
|
* `File -> SaveAs` and open an issue on Github
|
||||||
* Note: We want IOReg dumps of hardware not running on OpenCore, instead running a clean, supported OS
|
* Note: We want IOReg dumps of hardware not running on OpenCore, instead running a clean, officially supported OS by the machine
|
||||||
|
|
||||||
If you have any legacy hardware you're willing to donate or what to buy us something, please contact us at the following email:
|
If you have any legacy hardware you're willing to donate or what to buy us something, please contact us at the following email:
|
||||||
|
|
||||||
@@ -29,7 +29,7 @@ Current hardware we own:
|
|||||||
| :--- | :--- | :--- | :--- | :--- |
|
| :--- | :--- | :--- | :--- | :--- |
|
||||||
| MacBook7,1 | Penryn | GT320M | Dhinak | N/A |
|
| MacBook7,1 | Penryn | GT320M | Dhinak | N/A |
|
||||||
| MacBook7,1 | Penryn | GT320M | Mykola | N/A |
|
| MacBook7,1 | Penryn | GT320M | Mykola | N/A |
|
||||||
| MacBookPro8,1 | Sandy Bridge | HD 3000 | Mykola | N/A |
|
|
||||||
| MacBookPro5,3 | Penryn | 9400M + 9600M | Dhinak | Display's partially broken |
|
| MacBookPro5,3 | Penryn | 9400M + 9600M | Dhinak | Display's partially broken |
|
||||||
| Macmini4,1 | Penryn | GT320M | Dhinak | N/A |
|
| Macmini4,1 | Penryn | GT320M | Dhinak | N/A |
|
||||||
| iMac11,2 | Clarksdale | HD4670 | Mykola | N/A |
|
| iMac11,2 | Clarksdale | HD4670 | Mykola | N/A |
|
||||||
|
| MacPro3,1 | Penryn | HD5770, RX570, GT710 | Mykola | N/A |
|
||||||
|
|||||||
@@ -6,4 +6,4 @@ OpenCore Legacy Patcher itself is actually quite a "dumb" program, and essential
|
|||||||
|
|
||||||
To understand a bit more of how OpenCore is able revive older Macs in such a native-like way, we need to go over *how* OpenCore works with your Mac:
|
To understand a bit more of how OpenCore is able revive older Macs in such a native-like way, we need to go over *how* OpenCore works with your Mac:
|
||||||
|
|
||||||

|

|
||||||
|
|||||||
@@ -2,12 +2,10 @@
|
|||||||
|
|
||||||
For users who want to customize your setup to be more personal, OpenCore does allow for custom icons and images in the boot picker.
|
For users who want to customize your setup to be more personal, OpenCore does allow for custom icons and images in the boot picker.
|
||||||
|
|
||||||
|
|
||||||
* [Custom OpenCore icons](#custom-opencore-icons)
|
* [Custom OpenCore icons](#custom-opencore-icons)
|
||||||
* [Custom Mac Boot Picker icons](#custom-mac-boot-picker-icons)
|
* [Custom Mac Boot Picker icons](#custom-mac-boot-picker-icons)
|
||||||
* [Installing updated icons](#installing-updated-icons)
|
* [Installing updated icons](#installing-updated-icons)
|
||||||
|
|
||||||
|
|
||||||
# Custom OpenCore icons
|
# Custom OpenCore icons
|
||||||
|
|
||||||
To generate custom OpenCore icons, you'll need the following:
|
To generate custom OpenCore icons, you'll need the following:
|
||||||
@@ -32,7 +30,6 @@ To generate custom OpenCore icons, you'll need the following:
|
|||||||
|
|
||||||
Note, for each image we recommend having one of double the size. This ensures that icons are scaled correctly since .icns support dedicated images depending on HiDPI or not.
|
Note, for each image we recommend having one of double the size. This ensures that icons are scaled correctly since .icns support dedicated images depending on HiDPI or not.
|
||||||
|
|
||||||
|
|
||||||
Once you have a custom image you want to use(for example, as a background), download the [latest release of OpenCorePkg](https://github.com/acidanthera/OpenCorePkg/releases) and enter the `Utilities/icnspack/` folder:
|
Once you have a custom image you want to use(for example, as a background), download the [latest release of OpenCorePkg](https://github.com/acidanthera/OpenCorePkg/releases) and enter the `Utilities/icnspack/` folder:
|
||||||
|
|
||||||

|

|
||||||
@@ -42,6 +39,7 @@ Now `cd` this folder in terminal and run the following:
|
|||||||
```sh
|
```sh
|
||||||
./icnspack Background.icns <insert_x1_image> <insert_x2_image>
|
./icnspack Background.icns <insert_x1_image> <insert_x2_image>
|
||||||
```
|
```
|
||||||
|
|
||||||
Once done, you'll see your custom icon generated in `icnspack`'s folder:
|
Once done, you'll see your custom icon generated in `icnspack`'s folder:
|
||||||
|
|
||||||

|

|
||||||
@@ -54,7 +52,7 @@ To generate legacy icons, you'll need the following:
|
|||||||
|
|
||||||
* A machine running macOS 10.4 through 10.11
|
* A machine running macOS 10.4 through 10.11
|
||||||
* Icon Composer.app (Requires Apple Developer Account for official download)
|
* Icon Composer.app (Requires Apple Developer Account for official download)
|
||||||
* Users without the developer account can find a mirrors here:
|
* Users without the developer account can find a mirrors here:
|
||||||
* [Icon Composer 10.6](https://github.com/dortania/OpenCore-Legacy-Patcher/blob/main/docs/Icon-Composer-10.6.zip)
|
* [Icon Composer 10.6](https://github.com/dortania/OpenCore-Legacy-Patcher/blob/main/docs/Icon-Composer-10.6.zip)
|
||||||
* [Icon Composer 10.11](https://github.com/dortania/OpenCore-Legacy-Patcher/blob/main/docs/Icon-Composer-10.11.zip)
|
* [Icon Composer 10.11](https://github.com/dortania/OpenCore-Legacy-Patcher/blob/main/docs/Icon-Composer-10.11.zip)
|
||||||
* PNG Image you wish to convert
|
* PNG Image you wish to convert
|
||||||
@@ -102,4 +100,4 @@ To update the Mac Boot Picker icons is actually quite simple, on the root of you
|
|||||||
|
|
||||||

|

|
||||||
|
|
||||||
Now reboot and you'll see the new icon!
|
Now reboot and you'll see the new icon!
|
||||||
|
|||||||
@@ -14,6 +14,7 @@ The simplest way to download macOS installs would be to use installinstallmacos:
|
|||||||
```sh
|
```sh
|
||||||
[ ! -d ~/macOS-installer/ ] && mkdir ~/macOS-installer; cd ~/macOS-installer; [ ! -f ~/macOS-installer/installinstallmacos.py ] && curl -O https://raw.githubusercontent.com/munki/macadmin-scripts/main/installinstallmacos.py; sudo python installinstallmacos.py
|
[ ! -d ~/macOS-installer/ ] && mkdir ~/macOS-installer; cd ~/macOS-installer; [ ! -f ~/macOS-installer/installinstallmacos.py ] && curl -O https://raw.githubusercontent.com/munki/macadmin-scripts/main/installinstallmacos.py; sudo python installinstallmacos.py
|
||||||
```
|
```
|
||||||
|
|
||||||
* Note: On El Capitan (10.11) and older, you'll need to specify a catalog at the end of the command:
|
* Note: On El Capitan (10.11) and older, you'll need to specify a catalog at the end of the command:
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|||||||
@@ -9,31 +9,13 @@ This patcher is made of multiple external applications from different people and
|
|||||||
* [AirportBrcmFixup](https://github.com/acidanthera/AirportBrcmFixup/blob/master/LICENSE.txt)
|
* [AirportBrcmFixup](https://github.com/acidanthera/AirportBrcmFixup/blob/master/LICENSE.txt)
|
||||||
* [CPUFriend](https://github.com/acidanthera/CPUFriend/blob/master/LICENSE)
|
* [CPUFriend](https://github.com/acidanthera/CPUFriend/blob/master/LICENSE)
|
||||||
* [RestrictEvents](https://github.com/acidanthera/RestrictEvents/blob/master/LICENSE.txt)
|
* [RestrictEvents](https://github.com/acidanthera/RestrictEvents/blob/master/LICENSE.txt)
|
||||||
* [NightShiftEnabler](https://github.com/cdf/NightShiftEnabler/blob/master/LICENSE.txt)
|
* [FeatureUnlock](https://github.com/acidanthera/FeatureUnlock/blob/master/LICENSE.txt)
|
||||||
* [Innie](https://github.com/cdf/Innie/blob/master/LICENSE.txt)
|
* [Innie](https://github.com/cdf/Innie/blob/master/LICENSE.txt)
|
||||||
* GPL 2.0
|
* GPL 2.0
|
||||||
* [NVMeFix](https://github.com/acidanthera/NVMeFix/blob/master/LICENSE.txt)
|
* [NVMeFix](https://github.com/acidanthera/NVMeFix/blob/master/LICENSE.txt)
|
||||||
* All rights reserved to respective authors
|
* All rights reserved to respective authors
|
||||||
* [AAAMouSSE](https://forums.macrumors.com/threads/mp3-1-others-sse-4-2-emulation-to-enable-amd-metal-driver.2206682/) - Syncretic
|
* [AAAMouSSE](https://forums.macrumors.com/threads/mp3-1-others-sse-4-2-emulation-to-enable-amd-metal-driver.2206682/) - Syncretic
|
||||||
* [telemetrap](https://forums.macrumors.com/threads/mp3-1-others-sse-4-2-emulation-to-enable-amd-metal-driver.2206682/post-28447707) - Syncretic
|
* [telemetrap](https://forums.macrumors.com/threads/mp3-1-others-sse-4-2-emulation-to-enable-amd-metal-driver.2206682/post-28447707) - Syncretic
|
||||||
* [SidecarFixup](https://github.com/khronokernel/SidecarFixup) - Khronokernel
|
|
||||||
* Apple Binaries - Apple Inc.
|
* Apple Binaries - Apple Inc.
|
||||||
|
|
||||||
Remaining files within OpenCore Legacy Patcher are copyrighted 2020-2021 Mykola Grymalyuk & Dhinak G, under the BSD-3 Clause license:
|
Remaining files within OpenCore Legacy Patcher are copyrighted 2020-2021 Mykola Grymalyuk & Dhinak G. For integration into other projects, please request written permission.
|
||||||
|
|
||||||
```
|
|
||||||
Copyright (c) 2020-2021, Dhinak G
|
|
||||||
Copyright (c) 2020-2021, Mykola Grymalyuk
|
|
||||||
|
|
||||||
All rights reserved.
|
|
||||||
|
|
||||||
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
|
|
||||||
|
|
||||||
1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
|
|
||||||
|
|
||||||
2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
|
|
||||||
|
|
||||||
3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
|
|
||||||
|
|
||||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
||||||
```
|
|
||||||
|
|||||||
@@ -20,7 +20,7 @@ Regarding OS support, see below:
|
|||||||
|
|
||||||
| Support Entry | Supported OSes | Description | Comment |
|
| Support Entry | Supported OSes | Description | Comment |
|
||||||
| :--- | :--- | :--- | :--- |
|
| :--- | :--- | :--- | :--- |
|
||||||
| HostOS | macOS 10.9 - macOS 11 | Refers to OSes where running OpenCore-Patcher.app are supported | Supports 10.7+ if [Python 3.6 or higher](https://www.python.org/downloads/) is manually installed, simply run the `OpenCore-Patcher.command` located in the repo |
|
| HostOS | macOS 10.9 - macOS 11 | Refers to OSes where running OpenCore-Patcher.app are supported | Supports 10.7+ if [Python 3.9 or higher](https://www.python.org/downloads/) is manually installed, simply run the `OpenCore-Patcher.command` located in the repo |
|
||||||
| TargetOS | macOS 11 | Refers to OSes that can be patched to run with OpenCore | May support 10.4 and newer (in a potentially broken state). No support provided. |
|
| TargetOS | macOS 11 | Refers to OSes that can be patched to run with OpenCore | May support 10.4 and newer (in a potentially broken state). No support provided. |
|
||||||
|
|
||||||
### MacBook
|
### MacBook
|
||||||
@@ -126,7 +126,6 @@ Regarding OS support, see below:
|
|||||||
| MacPro4,1 | Early 2009 | ^^ | <span style="color:green"> Everything is supported as long as GPU is Metal capable </span> |
|
| MacPro4,1 | Early 2009 | ^^ | <span style="color:green"> Everything is supported as long as GPU is Metal capable </span> |
|
||||||
| MacPro5,1 | Mid-2010, Mid-2012 | ^^ | ^^ |
|
| MacPro5,1 | Mid-2010, Mid-2012 | ^^ | ^^ |
|
||||||
|
|
||||||
|
|
||||||
### Xserve
|
### Xserve
|
||||||
|
|
||||||
| SMBIOS | Year | Supported | Comment |
|
| SMBIOS | Year | Supported | Comment |
|
||||||
|
|||||||
108
docs/MONTEREY-DROP.md
Normal file
108
docs/MONTEREY-DROP.md
Normal file
@@ -0,0 +1,108 @@
|
|||||||
|
# macOS Monterey Support
|
||||||
|
|
||||||
|
With OpenCore Legacy Patcher v0.1.7 and newer, we've implemented beta macOS Monterey support for users. Please note that Apple has dropped a lot of hardware with this release as well as broken many of our previous patch sets. This page will be used to inform users regarding current issues and will be updated as new patch sets are developed and added to our patcher.
|
||||||
|
|
||||||
|
Current models with full, unhindered support in OpenCore Legacy Patcher are the following:
|
||||||
|
|
||||||
|
* iMac13,x and newer
|
||||||
|
* iMac10,1-12,x included if Wireless Card and Bluetooth upgraded as well as Metal GPU
|
||||||
|
* Macmini7,1 and newer
|
||||||
|
* MacBook8,1 and newer
|
||||||
|
* MacBookAir6,x and newer
|
||||||
|
* MacBookPro11,x and newer
|
||||||
|
* MacPro3,1 and newer
|
||||||
|
* Requires Wireless Card and Bluetooth upgrade for 3,1-5,1 as well as Metal GPU
|
||||||
|
|
||||||
|
## Current Hardware Drawbacks:
|
||||||
|
|
||||||
|
Below is a list of hardware that currently has issues with Monterey:
|
||||||
|
|
||||||
|
* [Acceleration Support Dropped](#acceleration-support-dropped)
|
||||||
|
* [Metal GPUs](#metal-gpus)
|
||||||
|
* [Non-Metal GPUs](#non-metal-gpus)
|
||||||
|
* [Bluetooth Support Dropped](#bluetooth-support-dropped)
|
||||||
|
* [Wireless Support Dropped](#wireless-support-dropped)
|
||||||
|
|
||||||
|
## Acceleration Support Dropped
|
||||||
|
|
||||||
|
### Metal GPUs
|
||||||
|
|
||||||
|
* Intel HD4000 iGPUs lost support
|
||||||
|
* Re-introduced with OpenCore Legacy Patcher v0.1.7
|
||||||
|
|
||||||
|
By default these machines require root volume patches to gain graphics acceleration in Monterey. OpenCore Legacy Patcher supports readding support however SIP and FileVault can no longer be enabled due to root patching:
|
||||||
|
|
||||||
|
* Macmini6,x
|
||||||
|
* MacBookAir5,x
|
||||||
|
* MacBookPro9,x
|
||||||
|
* MacBookPro10,x
|
||||||
|
|
||||||
|
### Non-Metal GPUs
|
||||||
|
|
||||||
|
* Non-Metal GPUs no longer have working acceleration patches:
|
||||||
|
* Intel Ironlake and Sandy Bridge iGPUs
|
||||||
|
* Nvidia Tesla and Fermi GPUs
|
||||||
|
* AMD TeraScale 1 and 2 GPUs
|
||||||
|
|
||||||
|
The following machines cannot gain graphics acceleration at all in Monterey, only basic framebuffer and brightness control (iMac8,1/9,1 and MacBook5,2 excluded):
|
||||||
|
|
||||||
|
* iMac12,x and older
|
||||||
|
* Macmini5,x and older
|
||||||
|
* MacBook7,1 and older
|
||||||
|
* MacBookAir4,x and older
|
||||||
|
* MacBookPro8,x and older
|
||||||
|
|
||||||
|
Note: iMac10,1 through iMac12,x can be upgraded with Metal GPUs, [see here for more info](https://forums.macrumors.com/threads/2011-imac-graphics-card-upgrade.1596614/)
|
||||||
|
|
||||||
|
## Bluetooth Support Dropped
|
||||||
|
|
||||||
|
* BRCM2046 and BRCM2070 Bluetooth Chipsets lost support
|
||||||
|
|
||||||
|
The following models lost Bluetooth support in macOS Monterey due to their legacy Bluetooth chipset:
|
||||||
|
|
||||||
|
* iMac12,x and older
|
||||||
|
* Macmini5,1 and older
|
||||||
|
* MacBook7,1 and older
|
||||||
|
* MacBookAir4,1 and older
|
||||||
|
* MacBookPro8,1 and older
|
||||||
|
* MacPro5,1 and older
|
||||||
|
|
||||||
|
::: details Dropped Firmwares
|
||||||
|
|
||||||
|
Here are the firmwares macOS Monterey Dropped (previously located within IOBluetoothUSBDFU.kext):
|
||||||
|
|
||||||
|
* 2046_820F.dfu
|
||||||
|
* 2046_8210.dfu
|
||||||
|
* 2046_8213.dfu
|
||||||
|
* 2046_8215.dfu
|
||||||
|
* 2046_8216.dfu
|
||||||
|
* 2046_8217.dfu
|
||||||
|
* 2070_821A.dfu
|
||||||
|
* 2070_821B.dfu
|
||||||
|
* 2070_8218.dfu
|
||||||
|
* 20702_821D.dfu
|
||||||
|
* 20702_821F.dfu
|
||||||
|
* 20702_828A.dfu
|
||||||
|
* 20702_828B.dfu
|
||||||
|
* 20702_828C.dfu
|
||||||
|
* 20702_8281.dfu
|
||||||
|
* 20702_8286.dfu
|
||||||
|
|
||||||
|
:::
|
||||||
|
|
||||||
|
Note: Native BRCM20702 and BRCM20703 are still fully support by OpenCore Legacy Patcher
|
||||||
|
|
||||||
|
## Wireless Support Dropped
|
||||||
|
|
||||||
|
* Broadcom BCM94328, BCM94322 and Atheros Wireless Chipsets lost support
|
||||||
|
|
||||||
|
The following models lost Bluetooth support in macOS Monterey due to their legacy Wireless chipset:
|
||||||
|
|
||||||
|
* iMac12,x and older
|
||||||
|
* Macmini3,1 and older
|
||||||
|
* MacBook5,x and older
|
||||||
|
* MacBookAir2,1 and older
|
||||||
|
* MacBookPro7,1 and older
|
||||||
|
* MacPro5,1 and older
|
||||||
|
|
||||||
|
Note: BCM943224, BCM94331, BCM94360 and BCM943602 are still fully support by OpenCore Legacy Patcher
|
||||||
@@ -100,11 +100,12 @@ Below is a run down of the main logic OpenCore Legacy Patcher uses to gain nativ
|
|||||||
* Reason: Fixes DRM support on models with upgraded AMD Metal GPUs
|
* Reason: Fixes DRM support on models with upgraded AMD Metal GPUs
|
||||||
* Logic: Adds args to NVRAM
|
* Logic: Adds args to NVRAM
|
||||||
* Models: Models with upgraded AMD Metal GPUs
|
* Models: Models with upgraded AMD Metal GPUs
|
||||||
|
|
||||||
### UEFI -> ProtocolOverrides
|
### UEFI -> ProtocolOverrides
|
||||||
|
|
||||||
* GopPassThrough
|
* GopPassThrough
|
||||||
* Reason: Used for proper output on machines with UGA firmware but GOP GPU
|
* Reason: Used for proper output on machines with UGA firmware but GOP GPU
|
||||||
* Logic: Provide GOP protocol instances on top of UGA protocol instances
|
* Logic: Provide GOP protocol instances on top of UGA protocol instances
|
||||||
* Models: MacPro3,1, MacBook4,1 iMac7,1-8,1
|
* Models: MacPro3,1, MacBook4,1 iMac7,1-8,1
|
||||||
|
|
||||||
:::
|
:::
|
||||||
@@ -191,7 +192,6 @@ Below is an explanation of what Kexts OpenCore Legacy Patcher will inject into m
|
|||||||
* Models: All models require
|
* Models: All models require
|
||||||
:::
|
:::
|
||||||
|
|
||||||
|
|
||||||
## On-Disk Patches
|
## On-Disk Patches
|
||||||
|
|
||||||
Unfortunately certain on-disk patches are required to achieve full functionality. Below is a breakdown of patches supported
|
Unfortunately certain on-disk patches are required to achieve full functionality. Below is a breakdown of patches supported
|
||||||
@@ -226,13 +226,15 @@ Note, GPU Acceleration Patches are not public yet, the below section is simply d
|
|||||||
* GeForceGA.bundle
|
* GeForceGA.bundle
|
||||||
* GeForceTesla.kext
|
* GeForceTesla.kext
|
||||||
* Skip IOFree Panic - Mojave+
|
* Skip IOFree Panic - Mojave+
|
||||||
* At Offset `0x5CF9A` replace following bytes with `0xEB`
|
* At Offset `0x5CF9A` replace following bytes with `0xEB`
|
||||||
* Avoids `addMemoryRegion/removeMemoryRegion` calls
|
* Avoids `addMemoryRegion/removeMemoryRegion` calls
|
||||||
* At Offset `0x5527` and `0x77993`, replace following bytes with `0x909090909090`
|
* At Offset `0x5527` and `0x77993`, replace following bytes with `0x909090909090`
|
||||||
* GeForceTeslaGLDriver.bundle
|
* GeForceTeslaGLDriver.bundle
|
||||||
* GeForceTeslaVADriver.bundle
|
* GeForceTeslaVADriver.bundle
|
||||||
* NVDANV50HalTesla.kext
|
* NVDANV50HalTesla.kext
|
||||||
* NVDAResmanTesla.kext
|
* NVDAResmanTesla.kext
|
||||||
|
* 0x1ea59a - 0x1ea5b3: nop
|
||||||
|
* Replace VSLGestalt to IOLockLock or any other known symbol of the same length.
|
||||||
|
|
||||||
* AMD/ATI Binaries
|
* AMD/ATI Binaries
|
||||||
* AMD2400Controller.kext
|
* AMD2400Controller.kext
|
||||||
@@ -271,6 +273,8 @@ Note, GPU Acceleration Patches are not public yet, the below section is simply d
|
|||||||
* AppleIntelHD3000GraphicsGLDriver.bundle
|
* AppleIntelHD3000GraphicsGLDriver.bundle
|
||||||
* AppleIntelHD3000GraphicsVADriver.bundle
|
* AppleIntelHD3000GraphicsVADriver.bundle
|
||||||
* AppleIntelSNBGraphicsFB.kext
|
* AppleIntelSNBGraphicsFB.kext
|
||||||
|
* Board ID Patch
|
||||||
|
* Replace original Board ID with updated model
|
||||||
* AppleIntelSNBVA.bundle
|
* AppleIntelSNBVA.bundle
|
||||||
|
|
||||||
### Frameworks
|
### Frameworks
|
||||||
|
|||||||
@@ -28,6 +28,14 @@ Here you can change different patcher settings, however the main interest is:
|
|||||||
|
|
||||||
Once you've toggled them both off, build your OpenCore EFI once again and install to your desired drive. Now to show the OpenCore selector, you can simply hold down the "ESC" key while clicking on EFI boot, then you can release the "ESC" key when you see the cursor arrow at the top left.
|
Once you've toggled them both off, build your OpenCore EFI once again and install to your desired drive. Now to show the OpenCore selector, you can simply hold down the "ESC" key while clicking on EFI boot, then you can release the "ESC" key when you see the cursor arrow at the top left.
|
||||||
|
|
||||||
|
## Enabling SIP
|
||||||
|
|
||||||
|
For many users, SIP will be enabled by default on build. For Intel HD 4000 users, you may have noticed that SIP is disabled. This is to ensure full compatibility with macOS Monterey and allow seamless booting between it and older OSes. However for users who do not plan to boot Monterey, you can re-enable under Patcher Settings.
|
||||||
|
|
||||||
|
Note: Machines with non-Metal GPUs cannot enable SIP in Big Sur either due to patched root volume
|
||||||
|
|
||||||
|
Note 2: NVRAM may need to be reset to ensure SIP is correctly re-enabled
|
||||||
|
|
||||||
## Applying Post Install Volume Patches
|
## Applying Post Install Volume Patches
|
||||||
|
|
||||||
**Note**: For users who need Post-Install Volume patches for legacy video acceleration support, you **must** disable the following settings in "Patcher Settings" when building and installing your new OpenCore:
|
**Note**: For users who need Post-Install Volume patches for legacy video acceleration support, you **must** disable the following settings in "Patcher Settings" when building and installing your new OpenCore:
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ For those who wish to support this patcher, please see the [Supporting the Patch
|
|||||||
Since this patcher tricks macOS into thinking you're running a newer Mac, certain functionality may be broken:
|
Since this patcher tricks macOS into thinking you're running a newer Mac, certain functionality may be broken:
|
||||||
|
|
||||||
* Boot Camp Assistant.app
|
* Boot Camp Assistant.app
|
||||||
* We recommend following our [guide on getting a UEFI Windows Install working](). Legacy MBR Based installs won't show up in OpenCore
|
* We recommend following our [guide on getting a UEFI Windows Install working](./WINDOWS.md). Legacy MBR Based installs won't show up in OpenCore
|
||||||
|
|
||||||
## How do I get started?
|
## How do I get started?
|
||||||
|
|
||||||
|
|||||||
@@ -26,7 +26,7 @@ Term | Description
|
|||||||
**IOKit** | Backbone of how Kernel Extentions (Kexts) probe and attach onto hardware, starts quickly after kernel initates
|
**IOKit** | Backbone of how Kernel Extentions (Kexts) probe and attach onto hardware, starts quickly after kernel initates
|
||||||
**WindowServer** | Backbone of the GUI interface in macOS, one of the first userfacing userspace programs to kick-in
|
**WindowServer** | Backbone of the GUI interface in macOS, one of the first userfacing userspace programs to kick-in
|
||||||
**OTA** | Short for **O**ver **T**he **A**ir, refers to native OS updates via System Preferences like a supported Mac
|
**OTA** | Short for **O**ver **T**he **A**ir, refers to native OS updates via System Preferences like a supported Mac
|
||||||
**DELTA** | Often used with OTA, refers to OS updates that much smaller than full installers (generally ~3GB), note Deltas require the root volume to be unmotified otherwise ~12GB updates will occur.
|
**DELTA** | Often used with OTA, refers to OS updates that much smaller than full installers (generally ~3GB), note Deltas require the root volume to be unmodified otherwise ~12GB updates will occur.
|
||||||
---
|
---
|
||||||
Term | Description
|
Term | Description
|
||||||
--- | ---
|
--- | ---
|
||||||
|
|||||||
@@ -2,7 +2,6 @@
|
|||||||
|
|
||||||
To aid users in troubleshooting, we've compiled a list of users who've reported success with OpenCore Legacy patcher as well as the version used. This should aid users in verifying whether issues with the patcher are regression-related with newer versions.
|
To aid users in troubleshooting, we've compiled a list of users who've reported success with OpenCore Legacy patcher as well as the version used. This should aid users in verifying whether issues with the patcher are regression-related with newer versions.
|
||||||
|
|
||||||
|
|
||||||
### MacBook
|
### MacBook
|
||||||
|
|
||||||
| SMBIOS | Tested | Tester | Comment |
|
| SMBIOS | Tested | Tester | Comment |
|
||||||
@@ -17,12 +16,12 @@ To aid users in troubleshooting, we've compiled a list of users who've reported
|
|||||||
|
|
||||||
### MacBook Air
|
### MacBook Air
|
||||||
|
|
||||||
| SMBIOS | Year | Supported | Comment |
|
| SMBIOS | Tested | Tester | Comment |
|
||||||
| :--- | :--- | :--- | :--- |
|
| :--- | :--- | :--- | :--- |
|
||||||
| MacBookAir2,1 | No reports | N/A | N/A |
|
| MacBookAir2,1 | No reports | N/A | N/A |
|
||||||
| MacBookAir3,1 | ^^ | ^^ | ^^ |
|
| MacBookAir3,1 | ^^ | ^^ | ^^ |
|
||||||
| MacBookAir3,2 | ^^ | ^^ | ^^ |
|
| MacBookAir3,2 | <span style="color:#30BCD5"> YES </span> | houser42 | - Stock model <br/>- Patcher version unknown |
|
||||||
| MacBookAir4,1 | ^^ | ^^ | ^^ |
|
| MacBookAir4,1 | No reports | N/A | N/A |
|
||||||
| MacBookAir4,2 | ^^ | ^^ | ^^ |
|
| MacBookAir4,2 | ^^ | ^^ | ^^ |
|
||||||
| MacBookAir5,1 | <span style="color:#30BCD5"> YES </span> | Ausdauersportler | - Stock Model<br/>- Patcher version 0.0.9 |
|
| MacBookAir5,1 | <span style="color:#30BCD5"> YES </span> | Ausdauersportler | - Stock Model<br/>- Patcher version 0.0.9 |
|
||||||
| ^^ | ^^ | webg3 | Stock Model |
|
| ^^ | ^^ | webg3 | Stock Model |
|
||||||
@@ -106,7 +105,8 @@ To aid users in troubleshooting, we've compiled a list of users who've reported
|
|||||||
|
|
||||||
| SMBIOS | Tested | Tester | Comment |
|
| SMBIOS | Tested | Tester | Comment |
|
||||||
| :--- | :--- | :--- | :--- |
|
| :--- | :--- | :--- | :--- |
|
||||||
| MacPro3,1 | <span style="color:#30BCD5"> YES </span> | christiann | - Upgraded with RX 560 and BCM94322<br/>- Stock Bluetooth card removed<br/>- Patcher version 0.0.21 |
|
| MacPro3,1 | <span style="color:#30BCD5"> YES </span> | MykolaG | - Upgraded with RX 470 and BCM94360CD<br/>- Stock Bluetooth card removed<br/>- Patcher version 0.1.6 |
|
||||||
|
| ^^ | ^^ | christiann | - Upgraded with RX 560 and BCM94322<br/>- Stock Bluetooth card removed<br/>- Patcher version 0.0.21 |
|
||||||
| ^^ | ^^ | gw463 | - Upgraded GTX 680<br/>- Upgraded BCM94360<br/>- Patcher version 0.0.22 |
|
| ^^ | ^^ | gw463 | - Upgraded GTX 680<br/>- Upgraded BCM94360<br/>- Patcher version 0.0.22 |
|
||||||
| ^^ | ^^ | AlexSakha67 | - Upgraded R9 280<br/>- Patcher version 0.0.20 |
|
| ^^ | ^^ | AlexSakha67 | - Upgraded R9 280<br/>- Patcher version 0.0.20 |
|
||||||
| ^^ | ^^ | nekton1 | - Upgraded GTX 680<br/>- Patcher version 0.0.20 |
|
| ^^ | ^^ | nekton1 | - Upgraded GTX 680<br/>- Patcher version 0.0.20 |
|
||||||
|
|||||||
@@ -59,7 +59,6 @@ By default, the patcher will try to hide extra boot options such as recovery fro
|
|||||||
|
|
||||||
Full error: "Your Mac needs a firmware update in order to install to this Volume. Please select a Mac OS Extended (Journaled) volume instead."
|
Full error: "Your Mac needs a firmware update in order to install to this Volume. Please select a Mac OS Extended (Journaled) volume instead."
|
||||||
|
|
||||||
|
|
||||||
This error occurs when macOS determines the firmware to not have full APFS support. To resolve is quite simple, when building OpenCore head to "Patcher Settings" and enable "Moderate SMBIOS Patching" or higher. This will ensure that the firmware reported will show as supporting full APFS capabilities.
|
This error occurs when macOS determines the firmware to not have full APFS support. To resolve is quite simple, when building OpenCore head to "Patcher Settings" and enable "Moderate SMBIOS Patching" or higher. This will ensure that the firmware reported will show as supporting full APFS capabilities.
|
||||||
|
|
||||||
## No Brightness Control
|
## No Brightness Control
|
||||||
@@ -68,4 +67,4 @@ With OCLP v0.0.22, we've added support for brightness control on many models. Ho
|
|||||||
|
|
||||||
To work-around, we recommend user try out the below app:
|
To work-around, we recommend user try out the below app:
|
||||||
|
|
||||||
* [Brightness Slider](https://actproductions.net/free-apps/brightness-slider/)
|
* [Brightness Slider](https://actproductions.net/free-apps/brightness-slider/)
|
||||||
|
|||||||
@@ -3,10 +3,13 @@
|
|||||||
To remove OpenCore is actually quite simply:
|
To remove OpenCore is actually quite simply:
|
||||||
|
|
||||||
1. Remove OpenCore either from the USB or internal drive
|
1. Remove OpenCore either from the USB or internal drive
|
||||||
* You'll need to mount the drive's EFI partition, and delete the EFI/OC folder as well as the System folder
|
|
||||||
* Note **do not** delete the entire EFI folder, this will likely break any existing Windows and Linux installations
|
|
||||||
* [See here for example how to mount](https://dortania.github.io/OpenCore-Post-Install/universal/oc2hdd.html)
|
|
||||||
2. Reset NVRAM
|
|
||||||
* [Reset NVRAM or PRAM on your Mac](https://support.apple.com/HT204063)
|
|
||||||
|
|
||||||
Know that if you are on Big Sur when you remove the EFI folder, your Mac will no longer boot and show the prohibited symbol. Be ready to install an older version of macOS before you uninstall OpenCore.
|
* You'll need to mount the drive's EFI partition, and delete the EFI/OC folder as well as the System folder
|
||||||
|
* Note **do not** delete the entire EFI folder, this will likely break any existing Windows and Linux installations
|
||||||
|
* [See here for example how to mount](https://dortania.github.io/OpenCore-Post-Install/universal/oc2hdd.html)
|
||||||
|
|
||||||
|
2. Reset NVRAM
|
||||||
|
|
||||||
|
* [Reset NVRAM or PRAM on your Mac](https://support.apple.com/HT204063)
|
||||||
|
|
||||||
|
Know that if you are on Big Sur when you remove the EFI folder, your Mac will no longer boot and show the prohibited symbol. Be ready to install an older version of macOS before you uninstall OpenCore.
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
# Updating OpenCore and Co.
|
# Updating OpenCore and Co
|
||||||
|
|
||||||
With OpenCore Legacy Patcher, generally there's very little reason for users to update the OpenCore installed on their machine unless you feel there's a benefit with new versions for your setup.
|
With OpenCore Legacy Patcher, generally there's very little reason for users to update the OpenCore installed on their machine unless you feel there's a benefit with new versions for your setup.
|
||||||
|
|
||||||
@@ -19,4 +19,4 @@ nvram 4D1FDA02-38C7-4A6A-9CC6-4BCCA8B30102:OCLP-Version
|
|||||||
|
|
||||||

|

|
||||||
|
|
||||||
From this, we can see we're running a RELEASE version of OpenCore 0.6.8 built on March 27th, 2021 with Patcher Version 0.0.20!
|
From this, we can see we're running a RELEASE version of OpenCore 0.6.8 built on March 27th, 2021 with Patcher Version 0.0.20!
|
||||||
|
|||||||
@@ -75,7 +75,7 @@ Once done, lets reboot into OpenCore's Menu and you'll see a new Windows' entry:
|
|||||||
|
|
||||||

|

|
||||||
|
|
||||||
From there, install Windows as normal and you'll get a new BootCamp entry in OpenCore's picker when done!
|
From there, install Windows as normal and you'll get a new BootCamp entry in OpenCore's picker when done!
|
||||||
|
|
||||||
* Don't forget to run BootCamp's utilities installer as well to ensure Wifi and such are functioning correctly. This can be downloaded from the BootCamp Assistant app in macOS
|
* Don't forget to run BootCamp's utilities installer as well to ensure Wifi and such are functioning correctly. This can be downloaded from the BootCamp Assistant app in macOS
|
||||||
|
|
||||||
|
|||||||
@@ -4,5 +4,7 @@
|
|||||||
<dict>
|
<dict>
|
||||||
<key>com.apple.security.cs.disable-library-validation</key>
|
<key>com.apple.security.cs.disable-library-validation</key>
|
||||||
<true/>
|
<true/>
|
||||||
|
<key>com.apple.security.cs.disable-executable-page-protection</key>
|
||||||
|
<true/>
|
||||||
</dict>
|
</dict>
|
||||||
</plist>
|
</plist>
|
||||||
|
|||||||
10
merge_gui.py
Normal file
10
merge_gui.py
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
# Updates build version in OCLP-GUI during CI builds
|
||||||
|
# Copyright (C) 2021 Mykola Grymalyuk
|
||||||
|
import plistlib
|
||||||
|
from pathlib import Path
|
||||||
|
from Resources import Constants
|
||||||
|
|
||||||
|
app_path = Path.cwd() / Path ("OpenCore Patcher.app/Contents/Info.plist")
|
||||||
|
info = plistlib.load(Path(app_path).open("rb"))
|
||||||
|
info["CFBundleShortVersionString"] = Constants.Constants().patcher_version
|
||||||
|
plistlib.dump(info, Path(app_path).open("wb"), sort_keys=True)
|
||||||
@@ -169,6 +169,8 @@
|
|||||||
<false/>
|
<false/>
|
||||||
<key>ResetLogoStatus</key>
|
<key>ResetLogoStatus</key>
|
||||||
<false/>
|
<false/>
|
||||||
|
<key>SyncTableIds</key>
|
||||||
|
<false/>
|
||||||
</dict>
|
</dict>
|
||||||
</dict>
|
</dict>
|
||||||
<key>Booter</key>
|
<key>Booter</key>
|
||||||
@@ -236,11 +238,11 @@
|
|||||||
<key>Comment</key>
|
<key>Comment</key>
|
||||||
<string>Patching Engine</string>
|
<string>Patching Engine</string>
|
||||||
<key>Enabled</key>
|
<key>Enabled</key>
|
||||||
<true/>
|
<false/>
|
||||||
<key>MaxKernel</key>
|
<key>MaxKernel</key>
|
||||||
<string></string>
|
<string></string>
|
||||||
<key>MinKernel</key>
|
<key>MinKernel</key>
|
||||||
<string></string>
|
<string>10.0.0</string>
|
||||||
<key>BundlePath</key>
|
<key>BundlePath</key>
|
||||||
<string>Lilu.kext</string>
|
<string>Lilu.kext</string>
|
||||||
<key>ExecutablePath</key>
|
<key>ExecutablePath</key>
|
||||||
@@ -272,11 +274,11 @@
|
|||||||
<key>Comment</key>
|
<key>Comment</key>
|
||||||
<string>GPU Patching</string>
|
<string>GPU Patching</string>
|
||||||
<key>Enabled</key>
|
<key>Enabled</key>
|
||||||
<true/>
|
<false/>
|
||||||
<key>MaxKernel</key>
|
<key>MaxKernel</key>
|
||||||
<string></string>
|
<string></string>
|
||||||
<key>MinKernel</key>
|
<key>MinKernel</key>
|
||||||
<string></string>
|
<string>10.0.0</string>
|
||||||
<key>BundlePath</key>
|
<key>BundlePath</key>
|
||||||
<string>WhateverGreen.kext</string>
|
<string>WhateverGreen.kext</string>
|
||||||
<key>ExecutablePath</key>
|
<key>ExecutablePath</key>
|
||||||
@@ -294,7 +296,7 @@
|
|||||||
<key>MaxKernel</key>
|
<key>MaxKernel</key>
|
||||||
<string></string>
|
<string></string>
|
||||||
<key>MinKernel</key>
|
<key>MinKernel</key>
|
||||||
<string></string>
|
<string>12.0.0</string>
|
||||||
<key>BundlePath</key>
|
<key>BundlePath</key>
|
||||||
<string>RestrictEvents.kext</string>
|
<string>RestrictEvents.kext</string>
|
||||||
<key>ExecutablePath</key>
|
<key>ExecutablePath</key>
|
||||||
@@ -312,7 +314,7 @@
|
|||||||
<key>MaxKernel</key>
|
<key>MaxKernel</key>
|
||||||
<string></string>
|
<string></string>
|
||||||
<key>MinKernel</key>
|
<key>MinKernel</key>
|
||||||
<string></string>
|
<string>16.0.0</string>
|
||||||
<key>BundlePath</key>
|
<key>BundlePath</key>
|
||||||
<string>AAAMouSSE.kext</string>
|
<string>AAAMouSSE.kext</string>
|
||||||
<key>ExecutablePath</key>
|
<key>ExecutablePath</key>
|
||||||
@@ -418,7 +420,7 @@
|
|||||||
<key>Enabled</key>
|
<key>Enabled</key>
|
||||||
<false/>
|
<false/>
|
||||||
<key>MaxKernel</key>
|
<key>MaxKernel</key>
|
||||||
<string></string>
|
<string>20.99.99</string>
|
||||||
<key>MinKernel</key>
|
<key>MinKernel</key>
|
||||||
<string>16.0.0</string>
|
<string>16.0.0</string>
|
||||||
<key>BundlePath</key>
|
<key>BundlePath</key>
|
||||||
@@ -436,7 +438,7 @@
|
|||||||
<key>Enabled</key>
|
<key>Enabled</key>
|
||||||
<false/>
|
<false/>
|
||||||
<key>MaxKernel</key>
|
<key>MaxKernel</key>
|
||||||
<string></string>
|
<string>20.99.99</string>
|
||||||
<key>MinKernel</key>
|
<key>MinKernel</key>
|
||||||
<string>16.0.0</string>
|
<string>16.0.0</string>
|
||||||
<key>BundlePath</key>
|
<key>BundlePath</key>
|
||||||
@@ -454,7 +456,7 @@
|
|||||||
<key>Enabled</key>
|
<key>Enabled</key>
|
||||||
<false/>
|
<false/>
|
||||||
<key>MaxKernel</key>
|
<key>MaxKernel</key>
|
||||||
<string></string>
|
<string>20.99.99</string>
|
||||||
<key>MinKernel</key>
|
<key>MinKernel</key>
|
||||||
<string>16.0.0</string>
|
<string>16.0.0</string>
|
||||||
<key>BundlePath</key>
|
<key>BundlePath</key>
|
||||||
@@ -472,7 +474,7 @@
|
|||||||
<key>Enabled</key>
|
<key>Enabled</key>
|
||||||
<false/>
|
<false/>
|
||||||
<key>MaxKernel</key>
|
<key>MaxKernel</key>
|
||||||
<string></string>
|
<string>20.99.99</string>
|
||||||
<key>MinKernel</key>
|
<key>MinKernel</key>
|
||||||
<string>18.0.0</string>
|
<string>18.0.0</string>
|
||||||
<key>BundlePath</key>
|
<key>BundlePath</key>
|
||||||
@@ -490,7 +492,7 @@
|
|||||||
<key>Enabled</key>
|
<key>Enabled</key>
|
||||||
<false/>
|
<false/>
|
||||||
<key>MaxKernel</key>
|
<key>MaxKernel</key>
|
||||||
<string></string>
|
<string>20.99.99</string>
|
||||||
<key>MinKernel</key>
|
<key>MinKernel</key>
|
||||||
<string>18.0.0</string>
|
<string>18.0.0</string>
|
||||||
<key>BundlePath</key>
|
<key>BundlePath</key>
|
||||||
@@ -508,7 +510,7 @@
|
|||||||
<key>Enabled</key>
|
<key>Enabled</key>
|
||||||
<false/>
|
<false/>
|
||||||
<key>MaxKernel</key>
|
<key>MaxKernel</key>
|
||||||
<string></string>
|
<string>20.99.99</string>
|
||||||
<key>MinKernel</key>
|
<key>MinKernel</key>
|
||||||
<string>19.0.0</string>
|
<string>19.0.0</string>
|
||||||
<key>BundlePath</key>
|
<key>BundlePath</key>
|
||||||
@@ -526,7 +528,7 @@
|
|||||||
<key>Enabled</key>
|
<key>Enabled</key>
|
||||||
<false/>
|
<false/>
|
||||||
<key>MaxKernel</key>
|
<key>MaxKernel</key>
|
||||||
<string></string>
|
<string>20.99.99</string>
|
||||||
<key>MinKernel</key>
|
<key>MinKernel</key>
|
||||||
<string>19.0.0</string>
|
<string>19.0.0</string>
|
||||||
<key>BundlePath</key>
|
<key>BundlePath</key>
|
||||||
@@ -582,7 +584,7 @@
|
|||||||
<key>MaxKernel</key>
|
<key>MaxKernel</key>
|
||||||
<string></string>
|
<string></string>
|
||||||
<key>MinKernel</key>
|
<key>MinKernel</key>
|
||||||
<string>20.0.0</string>
|
<string>19.0.0</string>
|
||||||
<key>BundlePath</key>
|
<key>BundlePath</key>
|
||||||
<string>AppleIntelPIIXATA.kext</string>
|
<string>AppleIntelPIIXATA.kext</string>
|
||||||
<key>ExecutablePath</key>
|
<key>ExecutablePath</key>
|
||||||
@@ -590,42 +592,6 @@
|
|||||||
<key>PlistPath</key>
|
<key>PlistPath</key>
|
||||||
<string>Contents/Info.plist</string>
|
<string>Contents/Info.plist</string>
|
||||||
</dict>
|
</dict>
|
||||||
<dict>
|
|
||||||
<key>Arch</key>
|
|
||||||
<string>x86_64</string>
|
|
||||||
<key>Comment</key>
|
|
||||||
<string>AppleBacklightFixup - Modded Nvidia GPUs</string>
|
|
||||||
<key>Enabled</key>
|
|
||||||
<false/>
|
|
||||||
<key>MaxKernel</key>
|
|
||||||
<string></string>
|
|
||||||
<key>MinKernel</key>
|
|
||||||
<string></string>
|
|
||||||
<key>BundlePath</key>
|
|
||||||
<string>AppleBacklightFixup.kext</string>
|
|
||||||
<key>ExecutablePath</key>
|
|
||||||
<string>Contents/MacOS/AppleBacklightFixup</string>
|
|
||||||
<key>PlistPath</key>
|
|
||||||
<string>Contents/Info.plist</string>
|
|
||||||
</dict>
|
|
||||||
<dict>
|
|
||||||
<key>Arch</key>
|
|
||||||
<string>x86_64</string>
|
|
||||||
<key>Comment</key>
|
|
||||||
<string>NightShiftEnabler</string>
|
|
||||||
<key>Enabled</key>
|
|
||||||
<false/>
|
|
||||||
<key>MaxKernel</key>
|
|
||||||
<string></string>
|
|
||||||
<key>MinKernel</key>
|
|
||||||
<string></string>
|
|
||||||
<key>BundlePath</key>
|
|
||||||
<string>NightShiftEnabler.kext</string>
|
|
||||||
<key>ExecutablePath</key>
|
|
||||||
<string>Contents/MacOS/NightShiftEnabler</string>
|
|
||||||
<key>PlistPath</key>
|
|
||||||
<string>Contents/Info.plist</string>
|
|
||||||
</dict>
|
|
||||||
<dict>
|
<dict>
|
||||||
<key>Arch</key>
|
<key>Arch</key>
|
||||||
<string>x86_64</string>
|
<string>x86_64</string>
|
||||||
@@ -636,7 +602,7 @@
|
|||||||
<key>MaxKernel</key>
|
<key>MaxKernel</key>
|
||||||
<string></string>
|
<string></string>
|
||||||
<key>MinKernel</key>
|
<key>MinKernel</key>
|
||||||
<string></string>
|
<string>15.0.0</string>
|
||||||
<key>BundlePath</key>
|
<key>BundlePath</key>
|
||||||
<string>CPUFriend.kext</string>
|
<string>CPUFriend.kext</string>
|
||||||
<key>ExecutablePath</key>
|
<key>ExecutablePath</key>
|
||||||
@@ -654,7 +620,7 @@
|
|||||||
<key>MaxKernel</key>
|
<key>MaxKernel</key>
|
||||||
<string></string>
|
<string></string>
|
||||||
<key>MinKernel</key>
|
<key>MinKernel</key>
|
||||||
<string></string>
|
<string>15.0.0</string>
|
||||||
<key>BundlePath</key>
|
<key>BundlePath</key>
|
||||||
<string>CPUFriendDataProvider.kext</string>
|
<string>CPUFriendDataProvider.kext</string>
|
||||||
<key>ExecutablePath</key>
|
<key>ExecutablePath</key>
|
||||||
@@ -762,7 +728,7 @@
|
|||||||
<key>MaxKernel</key>
|
<key>MaxKernel</key>
|
||||||
<string></string>
|
<string></string>
|
||||||
<key>MinKernel</key>
|
<key>MinKernel</key>
|
||||||
<string></string>
|
<string>12.0.0</string>
|
||||||
<key>BundlePath</key>
|
<key>BundlePath</key>
|
||||||
<string>CpuTscSync.kext</string>
|
<string>CpuTscSync.kext</string>
|
||||||
<key>ExecutablePath</key>
|
<key>ExecutablePath</key>
|
||||||
@@ -780,7 +746,7 @@
|
|||||||
<key>MaxKernel</key>
|
<key>MaxKernel</key>
|
||||||
<string></string>
|
<string></string>
|
||||||
<key>MinKernel</key>
|
<key>MinKernel</key>
|
||||||
<string></string>
|
<string>14.0.0</string>
|
||||||
<key>BundlePath</key>
|
<key>BundlePath</key>
|
||||||
<string>HibernationFixup.kext</string>
|
<string>HibernationFixup.kext</string>
|
||||||
<key>ExecutablePath</key>
|
<key>ExecutablePath</key>
|
||||||
@@ -798,7 +764,7 @@
|
|||||||
<key>MaxKernel</key>
|
<key>MaxKernel</key>
|
||||||
<string></string>
|
<string></string>
|
||||||
<key>MinKernel</key>
|
<key>MinKernel</key>
|
||||||
<string></string>
|
<string>18.0.0</string>
|
||||||
<key>BundlePath</key>
|
<key>BundlePath</key>
|
||||||
<string>NVMeFix.kext</string>
|
<string>NVMeFix.kext</string>
|
||||||
<key>ExecutablePath</key>
|
<key>ExecutablePath</key>
|
||||||
@@ -810,17 +776,17 @@
|
|||||||
<key>Arch</key>
|
<key>Arch</key>
|
||||||
<string>x86_64</string>
|
<string>x86_64</string>
|
||||||
<key>Comment</key>
|
<key>Comment</key>
|
||||||
<string>SidecarFixup</string>
|
<string>FeatureUnlock</string>
|
||||||
<key>Enabled</key>
|
<key>Enabled</key>
|
||||||
<false/>
|
<false/>
|
||||||
<key>MaxKernel</key>
|
<key>MaxKernel</key>
|
||||||
<string></string>
|
<string></string>
|
||||||
<key>MinKernel</key>
|
<key>MinKernel</key>
|
||||||
<string>19.0.0</string>
|
<string>16.0.0</string>
|
||||||
<key>BundlePath</key>
|
<key>BundlePath</key>
|
||||||
<string>SidecarFixup.kext</string>
|
<string>FeatureUnlock.kext</string>
|
||||||
<key>ExecutablePath</key>
|
<key>ExecutablePath</key>
|
||||||
<string>Contents/MacOS/SidecarFixup</string>
|
<string>Contents/MacOS/FeatureUnlock</string>
|
||||||
<key>PlistPath</key>
|
<key>PlistPath</key>
|
||||||
<string>Contents/Info.plist</string>
|
<string>Contents/Info.plist</string>
|
||||||
</dict>
|
</dict>
|
||||||
@@ -860,6 +826,114 @@
|
|||||||
<key>PlistPath</key>
|
<key>PlistPath</key>
|
||||||
<string>Contents/Info.plist</string>
|
<string>Contents/Info.plist</string>
|
||||||
</dict>
|
</dict>
|
||||||
|
<dict>
|
||||||
|
<key>Arch</key>
|
||||||
|
<string>x86_64</string>
|
||||||
|
<key>BundlePath</key>
|
||||||
|
<string>IOFireWireFamily.kext</string>
|
||||||
|
<key>Comment</key>
|
||||||
|
<string></string>
|
||||||
|
<key>Enabled</key>
|
||||||
|
<false/>
|
||||||
|
<key>ExecutablePath</key>
|
||||||
|
<string>Contents/MacOS/IOFireWireFamily</string>
|
||||||
|
<key>MaxKernel</key>
|
||||||
|
<string></string>
|
||||||
|
<key>MinKernel</key>
|
||||||
|
<string>19.0.0</string>
|
||||||
|
<key>PlistPath</key>
|
||||||
|
<string>Contents/Info.plist</string>
|
||||||
|
</dict>
|
||||||
|
<dict>
|
||||||
|
<key>Arch</key>
|
||||||
|
<string>x86_64</string>
|
||||||
|
<key>BundlePath</key>
|
||||||
|
<string>IOFireWireFamily.kext/Contents/PlugIns/AppleFWOHCI.kext</string>
|
||||||
|
<key>Comment</key>
|
||||||
|
<string></string>
|
||||||
|
<key>Enabled</key>
|
||||||
|
<false/>
|
||||||
|
<key>ExecutablePath</key>
|
||||||
|
<string>Contents/MacOS/AppleFWOHCI</string>
|
||||||
|
<key>MaxKernel</key>
|
||||||
|
<string></string>
|
||||||
|
<key>MinKernel</key>
|
||||||
|
<string>19.0.0</string>
|
||||||
|
<key>PlistPath</key>
|
||||||
|
<string>Contents/Info.plist</string>
|
||||||
|
</dict>
|
||||||
|
<dict>
|
||||||
|
<key>Arch</key>
|
||||||
|
<string>x86_64</string>
|
||||||
|
<key>BundlePath</key>
|
||||||
|
<string>IOFireWireSBP2.kext</string>
|
||||||
|
<key>Comment</key>
|
||||||
|
<string></string>
|
||||||
|
<key>Enabled</key>
|
||||||
|
<false/>
|
||||||
|
<key>ExecutablePath</key>
|
||||||
|
<string>Contents/MacOS/IOFireWireSBP2</string>
|
||||||
|
<key>MaxKernel</key>
|
||||||
|
<string></string>
|
||||||
|
<key>MinKernel</key>
|
||||||
|
<string>19.0.0</string>
|
||||||
|
<key>PlistPath</key>
|
||||||
|
<string>Contents/Info.plist</string>
|
||||||
|
</dict>
|
||||||
|
<dict>
|
||||||
|
<key>Arch</key>
|
||||||
|
<string>x86_64</string>
|
||||||
|
<key>BundlePath</key>
|
||||||
|
<string>IOFireWireSerialBusProtocolTransport.kext</string>
|
||||||
|
<key>Comment</key>
|
||||||
|
<string></string>
|
||||||
|
<key>Enabled</key>
|
||||||
|
<false/>
|
||||||
|
<key>ExecutablePath</key>
|
||||||
|
<string>Contents/MacOS/IOFireWireSerialBusProtocolTransport</string>
|
||||||
|
<key>MaxKernel</key>
|
||||||
|
<string></string>
|
||||||
|
<key>MinKernel</key>
|
||||||
|
<string>19.0.0</string>
|
||||||
|
<key>PlistPath</key>
|
||||||
|
<string>Contents/Info.plist</string>
|
||||||
|
</dict>
|
||||||
|
<dict>
|
||||||
|
<key>Arch</key>
|
||||||
|
<string>x86_64</string>
|
||||||
|
<key>BundlePath</key>
|
||||||
|
<string>DebugEnhancer.kext</string>
|
||||||
|
<key>Comment</key>
|
||||||
|
<string>Enhance DEBUG output in system logs</string>
|
||||||
|
<key>Enabled</key>
|
||||||
|
<false/>
|
||||||
|
<key>ExecutablePath</key>
|
||||||
|
<string>Contents/MacOS/DebugEnhancer</string>
|
||||||
|
<key>MaxKernel</key>
|
||||||
|
<string></string>
|
||||||
|
<key>MinKernel</key>
|
||||||
|
<string>12.0.0</string>
|
||||||
|
<key>PlistPath</key>
|
||||||
|
<string>Contents/Info.plist</string>
|
||||||
|
</dict>
|
||||||
|
<dict>
|
||||||
|
<key>Arch</key>
|
||||||
|
<string>x86_64</string>
|
||||||
|
<key>BundlePath</key>
|
||||||
|
<string>latebloom.kext</string>
|
||||||
|
<key>Comment</key>
|
||||||
|
<string>Work-around PCI race condition</string>
|
||||||
|
<key>Enabled</key>
|
||||||
|
<false/>
|
||||||
|
<key>ExecutablePath</key>
|
||||||
|
<string>Contents/MacOS/latebloom</string>
|
||||||
|
<key>MaxKernel</key>
|
||||||
|
<string></string>
|
||||||
|
<key>MinKernel</key>
|
||||||
|
<string>20.4.0</string>
|
||||||
|
<key>PlistPath</key>
|
||||||
|
<string>Contents/Info.plist</string>
|
||||||
|
</dict>
|
||||||
</array>
|
</array>
|
||||||
<key>Block</key>
|
<key>Block</key>
|
||||||
<array/>
|
<array/>
|
||||||
@@ -975,6 +1049,8 @@
|
|||||||
<true/>
|
<true/>
|
||||||
<key>PowerTimeoutKernelPanic</key>
|
<key>PowerTimeoutKernelPanic</key>
|
||||||
<false/>
|
<false/>
|
||||||
|
<key>ProvideCurrentCpuInfo</key>
|
||||||
|
<false/>
|
||||||
<key>SetApfsTrimTimeout</key>
|
<key>SetApfsTrimTimeout</key>
|
||||||
<integer>-1</integer>
|
<integer>-1</integer>
|
||||||
<key>ThirdPartyDrives</key>
|
<key>ThirdPartyDrives</key>
|
||||||
@@ -984,6 +1060,8 @@
|
|||||||
</dict>
|
</dict>
|
||||||
<key>Scheme</key>
|
<key>Scheme</key>
|
||||||
<dict>
|
<dict>
|
||||||
|
<key>CustomKernel</key>
|
||||||
|
<false/>
|
||||||
<key>FuzzyMatch</key>
|
<key>FuzzyMatch</key>
|
||||||
<true/>
|
<true/>
|
||||||
<key>KernelArch</key>
|
<key>KernelArch</key>
|
||||||
@@ -995,7 +1073,8 @@
|
|||||||
<key>Misc</key>
|
<key>Misc</key>
|
||||||
<dict>
|
<dict>
|
||||||
<key>BlessOverride</key>
|
<key>BlessOverride</key>
|
||||||
<array/>
|
<array>
|
||||||
|
</array>
|
||||||
<key>Boot</key>
|
<key>Boot</key>
|
||||||
<dict>
|
<dict>
|
||||||
<key>ConsoleAttributes</key>
|
<key>ConsoleAttributes</key>
|
||||||
@@ -1009,13 +1088,13 @@
|
|||||||
<key>LauncherOption</key>
|
<key>LauncherOption</key>
|
||||||
<string>Full</string>
|
<string>Full</string>
|
||||||
<key>PickerAttributes</key>
|
<key>PickerAttributes</key>
|
||||||
<integer>17</integer>
|
<integer>145</integer>
|
||||||
<key>PickerAudioAssist</key>
|
<key>PickerAudioAssist</key>
|
||||||
<false/>
|
<false/>
|
||||||
<key>PickerMode</key>
|
<key>PickerMode</key>
|
||||||
<string>External</string>
|
<string>External</string>
|
||||||
<key>PickerVariant</key>
|
<key>PickerVariant</key>
|
||||||
<string>Modern</string>
|
<string>Acidanthera\GoldenGate</string>
|
||||||
<key>PollAppleHotKeys</key>
|
<key>PollAppleHotKeys</key>
|
||||||
<true/>
|
<true/>
|
||||||
<key>ShowPicker</key>
|
<key>ShowPicker</key>
|
||||||
@@ -1052,6 +1131,8 @@
|
|||||||
<true/>
|
<true/>
|
||||||
<key>AllowSetDefault</key>
|
<key>AllowSetDefault</key>
|
||||||
<true/>
|
<true/>
|
||||||
|
<key>AllowToggleSip</key>
|
||||||
|
<false/>
|
||||||
<key>ApECID</key>
|
<key>ApECID</key>
|
||||||
<integer>0</integer>
|
<integer>0</integer>
|
||||||
<key>AuthRestart</key>
|
<key>AuthRestart</key>
|
||||||
@@ -1090,6 +1171,8 @@
|
|||||||
<string>BootKicker.efi</string>
|
<string>BootKicker.efi</string>
|
||||||
<key>Enabled</key>
|
<key>Enabled</key>
|
||||||
<true/>
|
<true/>
|
||||||
|
<key>Flavour</key>
|
||||||
|
<string>Auto</string>
|
||||||
<key>Path</key>
|
<key>Path</key>
|
||||||
<string>BootKicker.efi</string>
|
<string>BootKicker.efi</string>
|
||||||
<key>RealPath</key>
|
<key>RealPath</key>
|
||||||
@@ -1106,6 +1189,8 @@
|
|||||||
<string>OpenShell.efi</string>
|
<string>OpenShell.efi</string>
|
||||||
<key>Comment</key>
|
<key>Comment</key>
|
||||||
<string>OpenShell.efi</string>
|
<string>OpenShell.efi</string>
|
||||||
|
<key>Flavour</key>
|
||||||
|
<string>OpenShell:UEFIShell:Shell</string>
|
||||||
<key>Enabled</key>
|
<key>Enabled</key>
|
||||||
<true/>
|
<true/>
|
||||||
<key>Path</key>
|
<key>Path</key>
|
||||||
@@ -1125,8 +1210,6 @@
|
|||||||
<dict>
|
<dict>
|
||||||
<key>DefaultBackgroundColor</key>
|
<key>DefaultBackgroundColor</key>
|
||||||
<data>AAAAAA==</data>
|
<data>AAAAAA==</data>
|
||||||
<key>UIScale</key>
|
|
||||||
<data>AQ==</data>
|
|
||||||
</dict>
|
</dict>
|
||||||
<key>4D1FDA02-38C7-4A6A-9CC6-4BCCA8B30102</key>
|
<key>4D1FDA02-38C7-4A6A-9CC6-4BCCA8B30102</key>
|
||||||
<dict>
|
<dict>
|
||||||
@@ -1135,10 +1218,8 @@
|
|||||||
</dict>
|
</dict>
|
||||||
<key>7C436110-AB2A-4BBB-A880-FE41995C9F82</key>
|
<key>7C436110-AB2A-4BBB-A880-FE41995C9F82</key>
|
||||||
<dict>
|
<dict>
|
||||||
<key>SystemAudioVolume</key>
|
|
||||||
<data>Rg==</data>
|
|
||||||
<key>boot-args</key>
|
<key>boot-args</key>
|
||||||
<string>keepsyms=1 debug=0x100</string>
|
<string>keepsyms=1 debug=0x100 -lilubetaall</string>
|
||||||
<key>csr-active-config</key>
|
<key>csr-active-config</key>
|
||||||
<data>AAAAAA==</data>
|
<data>AAAAAA==</data>
|
||||||
</dict>
|
</dict>
|
||||||
@@ -1149,7 +1230,6 @@
|
|||||||
<dict>
|
<dict>
|
||||||
<key>4D1EDE05-38C7-4A6A-9CC6-4BCCA8B38C14</key>
|
<key>4D1EDE05-38C7-4A6A-9CC6-4BCCA8B38C14</key>
|
||||||
<array>
|
<array>
|
||||||
<string>UIScale</string>
|
|
||||||
<string>DefaultBackgroundColor</string>
|
<string>DefaultBackgroundColor</string>
|
||||||
</array>
|
</array>
|
||||||
<key>4D1FDA02-38C7-4A6A-9CC6-4BCCA8B30102</key>
|
<key>4D1FDA02-38C7-4A6A-9CC6-4BCCA8B30102</key>
|
||||||
@@ -1213,7 +1293,7 @@
|
|||||||
</dict>
|
</dict>
|
||||||
<key>Generic</key>
|
<key>Generic</key>
|
||||||
<dict>
|
<dict>
|
||||||
<key>AdviseWindows</key>
|
<key>AdviseFeatures</key>
|
||||||
<false/>
|
<false/>
|
||||||
<key>SystemMemoryStatus</key>
|
<key>SystemMemoryStatus</key>
|
||||||
<string>Auto</string>
|
<string>Auto</string>
|
||||||
@@ -1260,7 +1340,7 @@
|
|||||||
<key>DeviceLocator</key>
|
<key>DeviceLocator</key>
|
||||||
<string>Slot 1</string>
|
<string>Slot 1</string>
|
||||||
<key>Manufacturer</key>
|
<key>Manufacturer</key>
|
||||||
<string>Acidanthera</string>
|
<string>Acidanthera\GoldenGate</string>
|
||||||
<key>PartNumber</key>
|
<key>PartNumber</key>
|
||||||
<string>M00001-4GB</string>
|
<string>M00001-4GB</string>
|
||||||
<key>SerialNumber</key>
|
<key>SerialNumber</key>
|
||||||
@@ -1642,7 +1722,7 @@
|
|||||||
<key>ForceResolution</key>
|
<key>ForceResolution</key>
|
||||||
<false/>
|
<false/>
|
||||||
<key>GopPassThrough</key>
|
<key>GopPassThrough</key>
|
||||||
<false/>
|
<string>Disabled</string>
|
||||||
<key>IgnoreTextInGraphics</key>
|
<key>IgnoreTextInGraphics</key>
|
||||||
<false/>
|
<false/>
|
||||||
<key>ProvideConsoleGop</key>
|
<key>ProvideConsoleGop</key>
|
||||||
@@ -1668,6 +1748,8 @@
|
|||||||
<true/>
|
<true/>
|
||||||
<key>AppleDebugLog</key>
|
<key>AppleDebugLog</key>
|
||||||
<true/>
|
<true/>
|
||||||
|
<key>AppleEg2Info</key>
|
||||||
|
<false/>
|
||||||
<key>AppleFramebufferInfo</key>
|
<key>AppleFramebufferInfo</key>
|
||||||
<false/>
|
<false/>
|
||||||
<key>AppleImageConversion</key>
|
<key>AppleImageConversion</key>
|
||||||
|
|||||||
BIN
payloads/Drivers/XhciDxe.efi
Normal file
BIN
payloads/Drivers/XhciDxe.efi
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
payloads/Kexts/Acidanthera/AirportBrcmFixup-v2.1.3.zip
Normal file
BIN
payloads/Kexts/Acidanthera/AirportBrcmFixup-v2.1.3.zip
Normal file
Binary file not shown.
Binary file not shown.
BIN
payloads/Kexts/Acidanthera/AppleALC-v1.6.2.zip
Normal file
BIN
payloads/Kexts/Acidanthera/AppleALC-v1.6.2.zip
Normal file
Binary file not shown.
Binary file not shown.
BIN
payloads/Kexts/Acidanthera/CPUFriend-v1.2.4.zip
Normal file
BIN
payloads/Kexts/Acidanthera/CPUFriend-v1.2.4.zip
Normal file
Binary file not shown.
Binary file not shown.
BIN
payloads/Kexts/Acidanthera/DebugEnhancer-v1.0.3.zip
Normal file
BIN
payloads/Kexts/Acidanthera/DebugEnhancer-v1.0.3.zip
Normal file
Binary file not shown.
BIN
payloads/Kexts/Acidanthera/FeatureUnlock-v1.0.3.zip
Normal file
BIN
payloads/Kexts/Acidanthera/FeatureUnlock-v1.0.3.zip
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
payloads/Kexts/Acidanthera/Lilu-v1.5.4.zip
Normal file
BIN
payloads/Kexts/Acidanthera/Lilu-v1.5.4.zip
Normal file
Binary file not shown.
Binary file not shown.
BIN
payloads/Kexts/Acidanthera/NVMeFix-v1.0.9.zip
Normal file
BIN
payloads/Kexts/Acidanthera/NVMeFix-v1.0.9.zip
Normal file
Binary file not shown.
Binary file not shown.
BIN
payloads/Kexts/Acidanthera/RestrictEvents-MBP91-v1.0.3.zip
Normal file
BIN
payloads/Kexts/Acidanthera/RestrictEvents-MBP91-v1.0.3.zip
Normal file
Binary file not shown.
Binary file not shown.
BIN
payloads/Kexts/Acidanthera/RestrictEvents-v1.0.3.zip
Normal file
BIN
payloads/Kexts/Acidanthera/RestrictEvents-v1.0.3.zip
Normal file
Binary file not shown.
Binary file not shown.
BIN
payloads/Kexts/Acidanthera/SidecarFixup-v1.0.2.zip
Normal file
BIN
payloads/Kexts/Acidanthera/SidecarFixup-v1.0.2.zip
Normal file
Binary file not shown.
Binary file not shown.
BIN
payloads/Kexts/Acidanthera/WhateverGreen-v1.5.1.zip
Normal file
BIN
payloads/Kexts/Acidanthera/WhateverGreen-v1.5.1.zip
Normal file
Binary file not shown.
BIN
payloads/Kexts/FireWire/IOFireWireFamily-v1.0.0.zip
Normal file
BIN
payloads/Kexts/FireWire/IOFireWireFamily-v1.0.0.zip
Normal file
Binary file not shown.
BIN
payloads/Kexts/FireWire/IOFireWireSBP2-v1.0.0.zip
Normal file
BIN
payloads/Kexts/FireWire/IOFireWireSBP2-v1.0.0.zip
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
payloads/Kexts/Misc/latebloom-v0.19.zip
Normal file
BIN
payloads/Kexts/Misc/latebloom-v0.19.zip
Normal file
Binary file not shown.
@@ -113,6 +113,28 @@
|
|||||||
<string>none</string>
|
<string>none</string>
|
||||||
<key>iMac14,3</key>
|
<key>iMac14,3</key>
|
||||||
<string>none</string>
|
<string>none</string>
|
||||||
|
<key>iMac14,4</key>
|
||||||
|
<string>Config2</string>
|
||||||
|
<key>iMac15,1</key>
|
||||||
|
<string>Config2</string>
|
||||||
|
<key>iMac17,1</key>
|
||||||
|
<string>Config2</string>
|
||||||
|
<key>iMac18,2</key>
|
||||||
|
<string>Config3</string>
|
||||||
|
<key>iMac18,3</key>
|
||||||
|
<string>Config3</string>
|
||||||
|
<key>iMac19,1</key>
|
||||||
|
<string>Config3</string>
|
||||||
|
<key>iMac19,2</key>
|
||||||
|
<string>Config3</string>
|
||||||
|
<key>iMac20,1</key>
|
||||||
|
<string>Config3</string>
|
||||||
|
<key>iMac20,2</key>
|
||||||
|
<string>Config3</string>
|
||||||
|
<key>iMacPro1,1</key>
|
||||||
|
<string>Config4</string>
|
||||||
|
<key>MacPro6,1</key>
|
||||||
|
<string>Config1</string>
|
||||||
<key>MacBookPro9,1</key>
|
<key>MacBookPro9,1</key>
|
||||||
<string>none</string>
|
<string>none</string>
|
||||||
<key>MacBookPro10,1</key>
|
<key>MacBookPro10,1</key>
|
||||||
|
|||||||
@@ -295,6 +295,166 @@
|
|||||||
<key>LogControl</key>
|
<key>LogControl</key>
|
||||||
<integer>0</integer>
|
<integer>0</integer>
|
||||||
</dict>
|
</dict>
|
||||||
|
<key>MacBook8,1</key>
|
||||||
|
<dict>
|
||||||
|
<key>IGPU</key>
|
||||||
|
<dict>
|
||||||
|
<key>BoostPState</key>
|
||||||
|
<array>
|
||||||
|
<integer>18</integer>
|
||||||
|
<integer>18</integer>
|
||||||
|
<integer>18</integer>
|
||||||
|
<integer>18</integer>
|
||||||
|
</array>
|
||||||
|
<key>BoostTime</key>
|
||||||
|
<array>
|
||||||
|
<integer>1</integer>
|
||||||
|
<integer>1</integer>
|
||||||
|
<integer>1</integer>
|
||||||
|
<integer>15</integer>
|
||||||
|
</array>
|
||||||
|
<key>HardPlimit</key>
|
||||||
|
<integer>1</integer>
|
||||||
|
<key>Heuristic</key>
|
||||||
|
<dict>
|
||||||
|
<key>BusyDownThresholdPercent</key>
|
||||||
|
<integer>60</integer>
|
||||||
|
<key>BusyUpThresholdPercent</key>
|
||||||
|
<integer>80</integer>
|
||||||
|
<key>DownStep</key>
|
||||||
|
<integer>1</integer>
|
||||||
|
<key>EnableOverride</key>
|
||||||
|
<integer>1</integer>
|
||||||
|
<key>EnableRingTableOverride</key>
|
||||||
|
<integer>1</integer>
|
||||||
|
<key>EvaluateDownInterval</key>
|
||||||
|
<integer>31250</integer>
|
||||||
|
<key>EvaluateUpInterval</key>
|
||||||
|
<integer>31250</integer>
|
||||||
|
<key>GT3Floor</key>
|
||||||
|
<integer>6</integer>
|
||||||
|
<key>ID</key>
|
||||||
|
<integer>2</integer>
|
||||||
|
<key>IOBusynessSamplingInterval</key>
|
||||||
|
<integer>1</integer>
|
||||||
|
<key>LowPriorityPeff</key>
|
||||||
|
<integer>11</integer>
|
||||||
|
<key>NumOfRingTableOverride</key>
|
||||||
|
<integer>23</integer>
|
||||||
|
<key>NumOfRingTables</key>
|
||||||
|
<integer>3</integer>
|
||||||
|
<key>NumOfThresholdsForRingTables</key>
|
||||||
|
<integer>2</integer>
|
||||||
|
<key>RingOverrideTable0</key>
|
||||||
|
<array>
|
||||||
|
<integer>8</integer>
|
||||||
|
<integer>8</integer>
|
||||||
|
<integer>8</integer>
|
||||||
|
<integer>8</integer>
|
||||||
|
<integer>8</integer>
|
||||||
|
<integer>9</integer>
|
||||||
|
<integer>10</integer>
|
||||||
|
<integer>10</integer>
|
||||||
|
<integer>10</integer>
|
||||||
|
<integer>10</integer>
|
||||||
|
<integer>10</integer>
|
||||||
|
<integer>10</integer>
|
||||||
|
<integer>10</integer>
|
||||||
|
<integer>10</integer>
|
||||||
|
<integer>10</integer>
|
||||||
|
<integer>10</integer>
|
||||||
|
<integer>10</integer>
|
||||||
|
<integer>10</integer>
|
||||||
|
<integer>10</integer>
|
||||||
|
<integer>10</integer>
|
||||||
|
<integer>10</integer>
|
||||||
|
<integer>10</integer>
|
||||||
|
<integer>10</integer>
|
||||||
|
</array>
|
||||||
|
<key>RingOverrideTable1</key>
|
||||||
|
<array>
|
||||||
|
<integer>8</integer>
|
||||||
|
<integer>8</integer>
|
||||||
|
<integer>8</integer>
|
||||||
|
<integer>9</integer>
|
||||||
|
<integer>10</integer>
|
||||||
|
<integer>11</integer>
|
||||||
|
<integer>13</integer>
|
||||||
|
<integer>14</integer>
|
||||||
|
<integer>15</integer>
|
||||||
|
<integer>16</integer>
|
||||||
|
<integer>16</integer>
|
||||||
|
<integer>16</integer>
|
||||||
|
<integer>16</integer>
|
||||||
|
<integer>16</integer>
|
||||||
|
<integer>16</integer>
|
||||||
|
<integer>16</integer>
|
||||||
|
<integer>16</integer>
|
||||||
|
<integer>16</integer>
|
||||||
|
<integer>16</integer>
|
||||||
|
<integer>16</integer>
|
||||||
|
<integer>16</integer>
|
||||||
|
<integer>16</integer>
|
||||||
|
<integer>16</integer>
|
||||||
|
</array>
|
||||||
|
<key>RingOverrideTable2</key>
|
||||||
|
<array>
|
||||||
|
<integer>8</integer>
|
||||||
|
<integer>8</integer>
|
||||||
|
<integer>8</integer>
|
||||||
|
<integer>9</integer>
|
||||||
|
<integer>10</integer>
|
||||||
|
<integer>11</integer>
|
||||||
|
<integer>13</integer>
|
||||||
|
<integer>14</integer>
|
||||||
|
<integer>15</integer>
|
||||||
|
<integer>16</integer>
|
||||||
|
<integer>18</integer>
|
||||||
|
<integer>19</integer>
|
||||||
|
<integer>20</integer>
|
||||||
|
<integer>21</integer>
|
||||||
|
<integer>23</integer>
|
||||||
|
<integer>24</integer>
|
||||||
|
<integer>25</integer>
|
||||||
|
<integer>26</integer>
|
||||||
|
<integer>28</integer>
|
||||||
|
<integer>29</integer>
|
||||||
|
<integer>30</integer>
|
||||||
|
<integer>31</integer>
|
||||||
|
<integer>33</integer>
|
||||||
|
</array>
|
||||||
|
<key>StartingPstateForRingTableOverride</key>
|
||||||
|
<integer>11</integer>
|
||||||
|
<key>ThresholdsForRingOverrideTable0</key>
|
||||||
|
<array>
|
||||||
|
<integer>0</integer>
|
||||||
|
<integer>10</integer>
|
||||||
|
</array>
|
||||||
|
<key>ThresholdsForRingOverrideTable1</key>
|
||||||
|
<array>
|
||||||
|
<integer>5</integer>
|
||||||
|
<integer>15</integer>
|
||||||
|
</array>
|
||||||
|
<key>ThresholdsForRingOverrideTable2</key>
|
||||||
|
<array>
|
||||||
|
<integer>10</integer>
|
||||||
|
<integer>100</integer>
|
||||||
|
</array>
|
||||||
|
<key>UpStep</key>
|
||||||
|
<integer>2</integer>
|
||||||
|
<key>sampleInterval</key>
|
||||||
|
<integer>1000</integer>
|
||||||
|
</dict>
|
||||||
|
<key>NumPriorityLevels</key>
|
||||||
|
<integer>4</integer>
|
||||||
|
<key>PriorityLevelMask</key>
|
||||||
|
<integer>8</integer>
|
||||||
|
<key>ThermalSupport</key>
|
||||||
|
<integer>1</integer>
|
||||||
|
<key>control-id</key>
|
||||||
|
<integer>16</integer>
|
||||||
|
</dict>
|
||||||
|
</dict>
|
||||||
<key>MacBookAir2,1</key>
|
<key>MacBookAir2,1</key>
|
||||||
<dict>
|
<dict>
|
||||||
<key>IGPU</key>
|
<key>IGPU</key>
|
||||||
@@ -2274,6 +2434,500 @@
|
|||||||
<integer>16</integer>
|
<integer>16</integer>
|
||||||
</dict>
|
</dict>
|
||||||
</dict>
|
</dict>
|
||||||
|
<key>MacBookPro11,1</key>
|
||||||
|
<dict>
|
||||||
|
<key>IGPU</key>
|
||||||
|
<dict>
|
||||||
|
<key>Heuristic</key>
|
||||||
|
<dict>
|
||||||
|
<key>BusyDownThresholdPercent</key>
|
||||||
|
<integer>50</integer>
|
||||||
|
<key>BusyUpThresholdPercent</key>
|
||||||
|
<integer>70</integer>
|
||||||
|
<key>DownStep</key>
|
||||||
|
<integer>1</integer>
|
||||||
|
<key>EnableOverride</key>
|
||||||
|
<integer>1</integer>
|
||||||
|
<key>EnableRingTableOverride</key>
|
||||||
|
<integer>1</integer>
|
||||||
|
<key>EvaluateDownInterval</key>
|
||||||
|
<integer>31250</integer>
|
||||||
|
<key>EvaluateUpInterval</key>
|
||||||
|
<integer>31250</integer>
|
||||||
|
<key>GT2Floor</key>
|
||||||
|
<integer>8</integer>
|
||||||
|
<key>GT3Floor</key>
|
||||||
|
<integer>11</integer>
|
||||||
|
<key>ID</key>
|
||||||
|
<integer>2</integer>
|
||||||
|
<key>IOBusynessSamplingInterval</key>
|
||||||
|
<integer>1</integer>
|
||||||
|
<key>NumOfRingTableOverride</key>
|
||||||
|
<integer>23</integer>
|
||||||
|
<key>NumOfRingTables</key>
|
||||||
|
<integer>3</integer>
|
||||||
|
<key>NumOfThresholdsForRingTables</key>
|
||||||
|
<integer>2</integer>
|
||||||
|
<key>RingOverrideTable0</key>
|
||||||
|
<array>
|
||||||
|
<integer>8</integer>
|
||||||
|
<integer>8</integer>
|
||||||
|
<integer>8</integer>
|
||||||
|
<integer>8</integer>
|
||||||
|
<integer>8</integer>
|
||||||
|
<integer>9</integer>
|
||||||
|
<integer>10</integer>
|
||||||
|
<integer>10</integer>
|
||||||
|
<integer>10</integer>
|
||||||
|
<integer>10</integer>
|
||||||
|
<integer>10</integer>
|
||||||
|
<integer>10</integer>
|
||||||
|
<integer>10</integer>
|
||||||
|
<integer>10</integer>
|
||||||
|
<integer>10</integer>
|
||||||
|
<integer>10</integer>
|
||||||
|
<integer>10</integer>
|
||||||
|
<integer>10</integer>
|
||||||
|
<integer>10</integer>
|
||||||
|
<integer>10</integer>
|
||||||
|
<integer>10</integer>
|
||||||
|
<integer>10</integer>
|
||||||
|
<integer>10</integer>
|
||||||
|
</array>
|
||||||
|
<key>RingOverrideTable1</key>
|
||||||
|
<array>
|
||||||
|
<integer>8</integer>
|
||||||
|
<integer>8</integer>
|
||||||
|
<integer>8</integer>
|
||||||
|
<integer>9</integer>
|
||||||
|
<integer>10</integer>
|
||||||
|
<integer>11</integer>
|
||||||
|
<integer>13</integer>
|
||||||
|
<integer>14</integer>
|
||||||
|
<integer>15</integer>
|
||||||
|
<integer>16</integer>
|
||||||
|
<integer>16</integer>
|
||||||
|
<integer>16</integer>
|
||||||
|
<integer>16</integer>
|
||||||
|
<integer>16</integer>
|
||||||
|
<integer>16</integer>
|
||||||
|
<integer>16</integer>
|
||||||
|
<integer>16</integer>
|
||||||
|
<integer>16</integer>
|
||||||
|
<integer>16</integer>
|
||||||
|
<integer>16</integer>
|
||||||
|
<integer>16</integer>
|
||||||
|
<integer>16</integer>
|
||||||
|
<integer>16</integer>
|
||||||
|
</array>
|
||||||
|
<key>RingOverrideTable2</key>
|
||||||
|
<array>
|
||||||
|
<integer>8</integer>
|
||||||
|
<integer>8</integer>
|
||||||
|
<integer>8</integer>
|
||||||
|
<integer>9</integer>
|
||||||
|
<integer>10</integer>
|
||||||
|
<integer>11</integer>
|
||||||
|
<integer>13</integer>
|
||||||
|
<integer>14</integer>
|
||||||
|
<integer>15</integer>
|
||||||
|
<integer>16</integer>
|
||||||
|
<integer>18</integer>
|
||||||
|
<integer>19</integer>
|
||||||
|
<integer>20</integer>
|
||||||
|
<integer>21</integer>
|
||||||
|
<integer>23</integer>
|
||||||
|
<integer>24</integer>
|
||||||
|
<integer>25</integer>
|
||||||
|
<integer>26</integer>
|
||||||
|
<integer>28</integer>
|
||||||
|
<integer>29</integer>
|
||||||
|
<integer>30</integer>
|
||||||
|
<integer>31</integer>
|
||||||
|
<integer>33</integer>
|
||||||
|
</array>
|
||||||
|
<key>StartingPstateForRingTableOverride</key>
|
||||||
|
<integer>11</integer>
|
||||||
|
<key>ThresholdsForRingOverrideTable0</key>
|
||||||
|
<array>
|
||||||
|
<integer>0</integer>
|
||||||
|
<integer>10</integer>
|
||||||
|
</array>
|
||||||
|
<key>ThresholdsForRingOverrideTable1</key>
|
||||||
|
<array>
|
||||||
|
<integer>5</integer>
|
||||||
|
<integer>15</integer>
|
||||||
|
</array>
|
||||||
|
<key>ThresholdsForRingOverrideTable2</key>
|
||||||
|
<array>
|
||||||
|
<integer>10</integer>
|
||||||
|
<integer>100</integer>
|
||||||
|
</array>
|
||||||
|
<key>UpStep</key>
|
||||||
|
<integer>1</integer>
|
||||||
|
</dict>
|
||||||
|
<key>SliceControl</key>
|
||||||
|
<integer>1</integer>
|
||||||
|
<key>control-id</key>
|
||||||
|
<integer>16</integer>
|
||||||
|
</dict>
|
||||||
|
</dict>
|
||||||
|
<key>MacBookPro11,2</key>
|
||||||
|
<dict>
|
||||||
|
<key>IGPU</key>
|
||||||
|
<dict>
|
||||||
|
<key>Heuristic</key>
|
||||||
|
<dict>
|
||||||
|
<key>BusyDownThresholdPercent</key>
|
||||||
|
<integer>50</integer>
|
||||||
|
<key>BusyUpThresholdPercent</key>
|
||||||
|
<integer>70</integer>
|
||||||
|
<key>DownStep</key>
|
||||||
|
<integer>1</integer>
|
||||||
|
<key>EnableOverride</key>
|
||||||
|
<integer>1</integer>
|
||||||
|
<key>EnableRingTableOverride</key>
|
||||||
|
<integer>1</integer>
|
||||||
|
<key>EvaluateDownInterval</key>
|
||||||
|
<integer>31250</integer>
|
||||||
|
<key>EvaluateUpInterval</key>
|
||||||
|
<integer>31250</integer>
|
||||||
|
<key>GT2Floor</key>
|
||||||
|
<integer>12</integer>
|
||||||
|
<key>GT3Floor</key>
|
||||||
|
<integer>15</integer>
|
||||||
|
<key>ID</key>
|
||||||
|
<integer>2</integer>
|
||||||
|
<key>IOBusynessSamplingInterval</key>
|
||||||
|
<integer>1</integer>
|
||||||
|
<key>NumOfRingTableOverride</key>
|
||||||
|
<integer>23</integer>
|
||||||
|
<key>NumOfRingTables</key>
|
||||||
|
<integer>3</integer>
|
||||||
|
<key>NumOfThresholdsForRingTables</key>
|
||||||
|
<integer>2</integer>
|
||||||
|
<key>RingOverrideTable0</key>
|
||||||
|
<array>
|
||||||
|
<integer>8</integer>
|
||||||
|
<integer>8</integer>
|
||||||
|
<integer>8</integer>
|
||||||
|
<integer>8</integer>
|
||||||
|
<integer>8</integer>
|
||||||
|
<integer>9</integer>
|
||||||
|
<integer>10</integer>
|
||||||
|
<integer>10</integer>
|
||||||
|
<integer>10</integer>
|
||||||
|
<integer>10</integer>
|
||||||
|
<integer>10</integer>
|
||||||
|
<integer>10</integer>
|
||||||
|
<integer>10</integer>
|
||||||
|
<integer>10</integer>
|
||||||
|
<integer>10</integer>
|
||||||
|
<integer>10</integer>
|
||||||
|
<integer>10</integer>
|
||||||
|
<integer>10</integer>
|
||||||
|
<integer>10</integer>
|
||||||
|
<integer>10</integer>
|
||||||
|
<integer>10</integer>
|
||||||
|
<integer>10</integer>
|
||||||
|
<integer>10</integer>
|
||||||
|
</array>
|
||||||
|
<key>RingOverrideTable1</key>
|
||||||
|
<array>
|
||||||
|
<integer>8</integer>
|
||||||
|
<integer>8</integer>
|
||||||
|
<integer>8</integer>
|
||||||
|
<integer>9</integer>
|
||||||
|
<integer>10</integer>
|
||||||
|
<integer>11</integer>
|
||||||
|
<integer>13</integer>
|
||||||
|
<integer>14</integer>
|
||||||
|
<integer>15</integer>
|
||||||
|
<integer>16</integer>
|
||||||
|
<integer>16</integer>
|
||||||
|
<integer>16</integer>
|
||||||
|
<integer>16</integer>
|
||||||
|
<integer>16</integer>
|
||||||
|
<integer>16</integer>
|
||||||
|
<integer>16</integer>
|
||||||
|
<integer>16</integer>
|
||||||
|
<integer>16</integer>
|
||||||
|
<integer>16</integer>
|
||||||
|
<integer>29</integer>
|
||||||
|
<integer>30</integer>
|
||||||
|
<integer>31</integer>
|
||||||
|
<integer>33</integer>
|
||||||
|
</array>
|
||||||
|
<key>RingOverrideTable2</key>
|
||||||
|
<array>
|
||||||
|
<integer>8</integer>
|
||||||
|
<integer>8</integer>
|
||||||
|
<integer>8</integer>
|
||||||
|
<integer>9</integer>
|
||||||
|
<integer>10</integer>
|
||||||
|
<integer>11</integer>
|
||||||
|
<integer>13</integer>
|
||||||
|
<integer>14</integer>
|
||||||
|
<integer>15</integer>
|
||||||
|
<integer>16</integer>
|
||||||
|
<integer>18</integer>
|
||||||
|
<integer>19</integer>
|
||||||
|
<integer>20</integer>
|
||||||
|
<integer>21</integer>
|
||||||
|
<integer>23</integer>
|
||||||
|
<integer>24</integer>
|
||||||
|
<integer>25</integer>
|
||||||
|
<integer>26</integer>
|
||||||
|
<integer>28</integer>
|
||||||
|
<integer>29</integer>
|
||||||
|
<integer>30</integer>
|
||||||
|
<integer>31</integer>
|
||||||
|
<integer>33</integer>
|
||||||
|
</array>
|
||||||
|
<key>StartingPstateForRingTableOverride</key>
|
||||||
|
<integer>11</integer>
|
||||||
|
<key>ThresholdsForRingOverrideTable0</key>
|
||||||
|
<array>
|
||||||
|
<integer>0</integer>
|
||||||
|
<integer>10</integer>
|
||||||
|
</array>
|
||||||
|
<key>ThresholdsForRingOverrideTable1</key>
|
||||||
|
<array>
|
||||||
|
<integer>5</integer>
|
||||||
|
<integer>15</integer>
|
||||||
|
</array>
|
||||||
|
<key>ThresholdsForRingOverrideTable2</key>
|
||||||
|
<array>
|
||||||
|
<integer>10</integer>
|
||||||
|
<integer>100</integer>
|
||||||
|
</array>
|
||||||
|
<key>UpStep</key>
|
||||||
|
<integer>1</integer>
|
||||||
|
</dict>
|
||||||
|
<key>SliceControl</key>
|
||||||
|
<integer>1</integer>
|
||||||
|
<key>control-id</key>
|
||||||
|
<integer>16</integer>
|
||||||
|
</dict>
|
||||||
|
</dict>
|
||||||
|
<key>MacBookPro11,3</key>
|
||||||
|
<dict>
|
||||||
|
<key>GFX0</key>
|
||||||
|
<dict>
|
||||||
|
<key>BoostPState</key>
|
||||||
|
<array>
|
||||||
|
<integer>6</integer>
|
||||||
|
<integer>14</integer>
|
||||||
|
<integer>14</integer>
|
||||||
|
<integer>6</integer>
|
||||||
|
</array>
|
||||||
|
<key>BoostTime</key>
|
||||||
|
<array>
|
||||||
|
<integer>1</integer>
|
||||||
|
<integer>1</integer>
|
||||||
|
<integer>1</integer>
|
||||||
|
<integer>1</integer>
|
||||||
|
</array>
|
||||||
|
<key>Heuristic</key>
|
||||||
|
<dict>
|
||||||
|
<key>ID</key>
|
||||||
|
<integer>4</integer>
|
||||||
|
<key>MinP0P1</key>
|
||||||
|
<integer>10</integer>
|
||||||
|
<key>MinP5</key>
|
||||||
|
<integer>14</integer>
|
||||||
|
<key>MinP8</key>
|
||||||
|
<integer>15</integer>
|
||||||
|
<key>MinVP0</key>
|
||||||
|
<integer>10</integer>
|
||||||
|
<key>MinVP1</key>
|
||||||
|
<integer>21</integer>
|
||||||
|
<key>MinVP5</key>
|
||||||
|
<integer>28</integer>
|
||||||
|
<key>MinVP8</key>
|
||||||
|
<integer>29</integer>
|
||||||
|
<key>NumOfPstates</key>
|
||||||
|
<integer>16</integer>
|
||||||
|
<key>NumOfVPstates</key>
|
||||||
|
<integer>31</integer>
|
||||||
|
<key>P0Table</key>
|
||||||
|
<array>
|
||||||
|
<integer>0</integer>
|
||||||
|
<integer>1</integer>
|
||||||
|
<integer>2</integer>
|
||||||
|
<integer>3</integer>
|
||||||
|
<integer>4</integer>
|
||||||
|
<integer>5</integer>
|
||||||
|
<integer>6</integer>
|
||||||
|
<integer>7</integer>
|
||||||
|
<integer>8</integer>
|
||||||
|
<integer>9</integer>
|
||||||
|
<integer>10</integer>
|
||||||
|
<integer>25</integer>
|
||||||
|
<integer>26</integer>
|
||||||
|
<integer>27</integer>
|
||||||
|
<integer>28</integer>
|
||||||
|
<integer>29</integer>
|
||||||
|
</array>
|
||||||
|
<key>P1Table</key>
|
||||||
|
<array>
|
||||||
|
<integer>11</integer>
|
||||||
|
<integer>12</integer>
|
||||||
|
<integer>13</integer>
|
||||||
|
<integer>14</integer>
|
||||||
|
<integer>15</integer>
|
||||||
|
<integer>16</integer>
|
||||||
|
<integer>17</integer>
|
||||||
|
<integer>18</integer>
|
||||||
|
<integer>19</integer>
|
||||||
|
<integer>20</integer>
|
||||||
|
<integer>21</integer>
|
||||||
|
<integer>25</integer>
|
||||||
|
<integer>26</integer>
|
||||||
|
<integer>27</integer>
|
||||||
|
<integer>28</integer>
|
||||||
|
<integer>29</integer>
|
||||||
|
</array>
|
||||||
|
</dict>
|
||||||
|
<key>control-id</key>
|
||||||
|
<integer>17</integer>
|
||||||
|
</dict>
|
||||||
|
<key>IGPU</key>
|
||||||
|
<dict>
|
||||||
|
<key>Heuristic</key>
|
||||||
|
<dict>
|
||||||
|
<key>BusyDownThresholdPercent</key>
|
||||||
|
<integer>50</integer>
|
||||||
|
<key>BusyUpThresholdPercent</key>
|
||||||
|
<integer>70</integer>
|
||||||
|
<key>DownStep</key>
|
||||||
|
<integer>1</integer>
|
||||||
|
<key>EnableOverride</key>
|
||||||
|
<integer>1</integer>
|
||||||
|
<key>EnableRingTableOverride</key>
|
||||||
|
<integer>1</integer>
|
||||||
|
<key>EvaluateDownInterval</key>
|
||||||
|
<integer>31250</integer>
|
||||||
|
<key>EvaluateUpInterval</key>
|
||||||
|
<integer>31250</integer>
|
||||||
|
<key>GT2Floor</key>
|
||||||
|
<integer>12</integer>
|
||||||
|
<key>GT3Floor</key>
|
||||||
|
<integer>15</integer>
|
||||||
|
<key>ID</key>
|
||||||
|
<integer>2</integer>
|
||||||
|
<key>IOBusynessSamplingInterval</key>
|
||||||
|
<integer>1</integer>
|
||||||
|
<key>NumOfRingTableOverride</key>
|
||||||
|
<integer>23</integer>
|
||||||
|
<key>NumOfRingTables</key>
|
||||||
|
<integer>3</integer>
|
||||||
|
<key>NumOfThresholdsForRingTables</key>
|
||||||
|
<integer>2</integer>
|
||||||
|
<key>RingOverrideTable0</key>
|
||||||
|
<array>
|
||||||
|
<integer>8</integer>
|
||||||
|
<integer>8</integer>
|
||||||
|
<integer>8</integer>
|
||||||
|
<integer>8</integer>
|
||||||
|
<integer>8</integer>
|
||||||
|
<integer>9</integer>
|
||||||
|
<integer>10</integer>
|
||||||
|
<integer>10</integer>
|
||||||
|
<integer>10</integer>
|
||||||
|
<integer>10</integer>
|
||||||
|
<integer>10</integer>
|
||||||
|
<integer>10</integer>
|
||||||
|
<integer>10</integer>
|
||||||
|
<integer>10</integer>
|
||||||
|
<integer>10</integer>
|
||||||
|
<integer>10</integer>
|
||||||
|
<integer>10</integer>
|
||||||
|
<integer>10</integer>
|
||||||
|
<integer>10</integer>
|
||||||
|
<integer>10</integer>
|
||||||
|
<integer>10</integer>
|
||||||
|
<integer>10</integer>
|
||||||
|
<integer>10</integer>
|
||||||
|
</array>
|
||||||
|
<key>RingOverrideTable1</key>
|
||||||
|
<array>
|
||||||
|
<integer>8</integer>
|
||||||
|
<integer>8</integer>
|
||||||
|
<integer>8</integer>
|
||||||
|
<integer>9</integer>
|
||||||
|
<integer>10</integer>
|
||||||
|
<integer>11</integer>
|
||||||
|
<integer>13</integer>
|
||||||
|
<integer>14</integer>
|
||||||
|
<integer>15</integer>
|
||||||
|
<integer>16</integer>
|
||||||
|
<integer>16</integer>
|
||||||
|
<integer>16</integer>
|
||||||
|
<integer>16</integer>
|
||||||
|
<integer>16</integer>
|
||||||
|
<integer>16</integer>
|
||||||
|
<integer>16</integer>
|
||||||
|
<integer>16</integer>
|
||||||
|
<integer>16</integer>
|
||||||
|
<integer>16</integer>
|
||||||
|
<integer>29</integer>
|
||||||
|
<integer>30</integer>
|
||||||
|
<integer>31</integer>
|
||||||
|
<integer>33</integer>
|
||||||
|
</array>
|
||||||
|
<key>RingOverrideTable2</key>
|
||||||
|
<array>
|
||||||
|
<integer>8</integer>
|
||||||
|
<integer>8</integer>
|
||||||
|
<integer>8</integer>
|
||||||
|
<integer>9</integer>
|
||||||
|
<integer>10</integer>
|
||||||
|
<integer>11</integer>
|
||||||
|
<integer>13</integer>
|
||||||
|
<integer>14</integer>
|
||||||
|
<integer>15</integer>
|
||||||
|
<integer>16</integer>
|
||||||
|
<integer>18</integer>
|
||||||
|
<integer>19</integer>
|
||||||
|
<integer>20</integer>
|
||||||
|
<integer>21</integer>
|
||||||
|
<integer>23</integer>
|
||||||
|
<integer>24</integer>
|
||||||
|
<integer>25</integer>
|
||||||
|
<integer>26</integer>
|
||||||
|
<integer>28</integer>
|
||||||
|
<integer>29</integer>
|
||||||
|
<integer>30</integer>
|
||||||
|
<integer>31</integer>
|
||||||
|
<integer>33</integer>
|
||||||
|
</array>
|
||||||
|
<key>StartingPstateForRingTableOverride</key>
|
||||||
|
<integer>11</integer>
|
||||||
|
<key>ThresholdsForRingOverrideTable0</key>
|
||||||
|
<array>
|
||||||
|
<integer>0</integer>
|
||||||
|
<integer>10</integer>
|
||||||
|
</array>
|
||||||
|
<key>ThresholdsForRingOverrideTable1</key>
|
||||||
|
<array>
|
||||||
|
<integer>5</integer>
|
||||||
|
<integer>15</integer>
|
||||||
|
</array>
|
||||||
|
<key>ThresholdsForRingOverrideTable2</key>
|
||||||
|
<array>
|
||||||
|
<integer>10</integer>
|
||||||
|
<integer>100</integer>
|
||||||
|
</array>
|
||||||
|
<key>UpStep</key>
|
||||||
|
<integer>1</integer>
|
||||||
|
</dict>
|
||||||
|
<key>SliceControl</key>
|
||||||
|
<integer>1</integer>
|
||||||
|
<key>control-id</key>
|
||||||
|
<integer>16</integer>
|
||||||
|
</dict>
|
||||||
|
</dict>
|
||||||
<key>MacPro4,1</key>
|
<key>MacPro4,1</key>
|
||||||
<dict>
|
<dict>
|
||||||
<key>Vendor10deDevice05e2</key>
|
<key>Vendor10deDevice05e2</key>
|
||||||
@@ -4249,6 +4903,175 @@
|
|||||||
<integer>16</integer>
|
<integer>16</integer>
|
||||||
</dict>
|
</dict>
|
||||||
</dict>
|
</dict>
|
||||||
|
<key>iMac14,4</key>
|
||||||
|
<dict>
|
||||||
|
<key>IGPU</key>
|
||||||
|
<dict>
|
||||||
|
<key>Heuristic</key>
|
||||||
|
<dict>
|
||||||
|
<key>BusyDownThresholdPercent</key>
|
||||||
|
<integer>50</integer>
|
||||||
|
<key>BusyUpThresholdPercent</key>
|
||||||
|
<integer>70</integer>
|
||||||
|
<key>DownStep</key>
|
||||||
|
<integer>1</integer>
|
||||||
|
<key>EnableOverride</key>
|
||||||
|
<integer>1</integer>
|
||||||
|
<key>EnableRingTableOverride</key>
|
||||||
|
<integer>1</integer>
|
||||||
|
<key>EvaluateDownInterval</key>
|
||||||
|
<integer>31250</integer>
|
||||||
|
<key>EvaluateUpInterval</key>
|
||||||
|
<integer>31250</integer>
|
||||||
|
<key>GT2Floor</key>
|
||||||
|
<integer>12</integer>
|
||||||
|
<key>GT3Floor</key>
|
||||||
|
<integer>15</integer>
|
||||||
|
<key>ID</key>
|
||||||
|
<integer>2</integer>
|
||||||
|
<key>IOBusynessSamplingInterval</key>
|
||||||
|
<integer>1</integer>
|
||||||
|
<key>NumOfRingTableOverride</key>
|
||||||
|
<integer>23</integer>
|
||||||
|
<key>NumOfRingTables</key>
|
||||||
|
<integer>3</integer>
|
||||||
|
<key>NumOfThresholdsForRingTables</key>
|
||||||
|
<integer>2</integer>
|
||||||
|
<key>RingOverrideTable0</key>
|
||||||
|
<array>
|
||||||
|
<integer>8</integer>
|
||||||
|
<integer>8</integer>
|
||||||
|
<integer>8</integer>
|
||||||
|
<integer>8</integer>
|
||||||
|
<integer>8</integer>
|
||||||
|
<integer>9</integer>
|
||||||
|
<integer>10</integer>
|
||||||
|
<integer>10</integer>
|
||||||
|
<integer>10</integer>
|
||||||
|
<integer>10</integer>
|
||||||
|
<integer>10</integer>
|
||||||
|
<integer>10</integer>
|
||||||
|
<integer>10</integer>
|
||||||
|
<integer>10</integer>
|
||||||
|
<integer>10</integer>
|
||||||
|
<integer>10</integer>
|
||||||
|
<integer>10</integer>
|
||||||
|
<integer>10</integer>
|
||||||
|
<integer>10</integer>
|
||||||
|
<integer>10</integer>
|
||||||
|
<integer>10</integer>
|
||||||
|
<integer>10</integer>
|
||||||
|
<integer>10</integer>
|
||||||
|
</array>
|
||||||
|
<key>RingOverrideTable1</key>
|
||||||
|
<array>
|
||||||
|
<integer>8</integer>
|
||||||
|
<integer>8</integer>
|
||||||
|
<integer>8</integer>
|
||||||
|
<integer>9</integer>
|
||||||
|
<integer>10</integer>
|
||||||
|
<integer>11</integer>
|
||||||
|
<integer>13</integer>
|
||||||
|
<integer>14</integer>
|
||||||
|
<integer>15</integer>
|
||||||
|
<integer>16</integer>
|
||||||
|
<integer>16</integer>
|
||||||
|
<integer>16</integer>
|
||||||
|
<integer>16</integer>
|
||||||
|
<integer>16</integer>
|
||||||
|
<integer>16</integer>
|
||||||
|
<integer>16</integer>
|
||||||
|
<integer>16</integer>
|
||||||
|
<integer>16</integer>
|
||||||
|
<integer>16</integer>
|
||||||
|
<integer>16</integer>
|
||||||
|
<integer>16</integer>
|
||||||
|
<integer>16</integer>
|
||||||
|
<integer>16</integer>
|
||||||
|
</array>
|
||||||
|
<key>RingOverrideTable2</key>
|
||||||
|
<array>
|
||||||
|
<integer>8</integer>
|
||||||
|
<integer>8</integer>
|
||||||
|
<integer>8</integer>
|
||||||
|
<integer>9</integer>
|
||||||
|
<integer>10</integer>
|
||||||
|
<integer>11</integer>
|
||||||
|
<integer>13</integer>
|
||||||
|
<integer>14</integer>
|
||||||
|
<integer>15</integer>
|
||||||
|
<integer>16</integer>
|
||||||
|
<integer>18</integer>
|
||||||
|
<integer>19</integer>
|
||||||
|
<integer>20</integer>
|
||||||
|
<integer>21</integer>
|
||||||
|
<integer>23</integer>
|
||||||
|
<integer>24</integer>
|
||||||
|
<integer>25</integer>
|
||||||
|
<integer>26</integer>
|
||||||
|
<integer>28</integer>
|
||||||
|
<integer>29</integer>
|
||||||
|
<integer>30</integer>
|
||||||
|
<integer>31</integer>
|
||||||
|
<integer>33</integer>
|
||||||
|
</array>
|
||||||
|
<key>StartingPstateForRingTableOverride</key>
|
||||||
|
<integer>11</integer>
|
||||||
|
<key>ThresholdsForRingOverrideTable0</key>
|
||||||
|
<array>
|
||||||
|
<integer>0</integer>
|
||||||
|
<integer>10</integer>
|
||||||
|
</array>
|
||||||
|
<key>ThresholdsForRingOverrideTable1</key>
|
||||||
|
<array>
|
||||||
|
<integer>5</integer>
|
||||||
|
<integer>15</integer>
|
||||||
|
</array>
|
||||||
|
<key>ThresholdsForRingOverrideTable2</key>
|
||||||
|
<array>
|
||||||
|
<integer>10</integer>
|
||||||
|
<integer>100</integer>
|
||||||
|
</array>
|
||||||
|
<key>UpStep</key>
|
||||||
|
<integer>1</integer>
|
||||||
|
</dict>
|
||||||
|
<key>SliceControl</key>
|
||||||
|
<integer>1</integer>
|
||||||
|
<key>control-id</key>
|
||||||
|
<integer>16</integer>
|
||||||
|
</dict>
|
||||||
|
</dict>
|
||||||
|
<key>iMac15,1</key>
|
||||||
|
<dict>
|
||||||
|
<key>GFX0</key>
|
||||||
|
<dict>
|
||||||
|
<key>AGDCEnabled</key>
|
||||||
|
<integer>1</integer>
|
||||||
|
<key>Heuristic</key>
|
||||||
|
<dict>
|
||||||
|
<key>ID</key>
|
||||||
|
<integer>-1</integer>
|
||||||
|
</dict>
|
||||||
|
<key>control-id</key>
|
||||||
|
<integer>17</integer>
|
||||||
|
<key>max-power-state</key>
|
||||||
|
<integer>15</integer>
|
||||||
|
<key>min-power-state</key>
|
||||||
|
<integer>0</integer>
|
||||||
|
</dict>
|
||||||
|
<key>IGPU</key>
|
||||||
|
<dict>
|
||||||
|
<key>Heuristic</key>
|
||||||
|
<dict>
|
||||||
|
<key>EnableOverride</key>
|
||||||
|
<integer>0</integer>
|
||||||
|
<key>ID</key>
|
||||||
|
<integer>2</integer>
|
||||||
|
</dict>
|
||||||
|
<key>control-id</key>
|
||||||
|
<integer>16</integer>
|
||||||
|
</dict>
|
||||||
|
</dict>
|
||||||
</dict>
|
</dict>
|
||||||
</dict>
|
</dict>
|
||||||
</dict>
|
</dict>
|
||||||
|
|||||||
40
payloads/Kexts/Plists/PlatformPlugin/MacBook8,1/Info.plist
Normal file
40
payloads/Kexts/Plists/PlatformPlugin/MacBook8,1/Info.plist
Normal file
File diff suppressed because one or more lines are too long
@@ -0,0 +1,658 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||||
|
<plist version="1.0">
|
||||||
|
<dict>
|
||||||
|
<key>pmspFile</key>
|
||||||
|
<integer>8</integer>
|
||||||
|
<key>IOPlatformPowerProfile</key>
|
||||||
|
<dict>
|
||||||
|
<key>power_reduced_playback</key>
|
||||||
|
<true/>
|
||||||
|
<key>thermally_optimized_xcode</key>
|
||||||
|
<true/>
|
||||||
|
<key>optimized_photobooth</key>
|
||||||
|
<true/>
|
||||||
|
<key>optimized_screensavers</key>
|
||||||
|
<true/>
|
||||||
|
<key>optimized_slideshows</key>
|
||||||
|
<true/>
|
||||||
|
<key>optimized_visualizers</key>
|
||||||
|
<true/>
|
||||||
|
<key>thermally_optimized_maps</key>
|
||||||
|
<true/>
|
||||||
|
<key>CPUFloor</key>
|
||||||
|
<integer>1000</integer>
|
||||||
|
<key>BoostLimit</key>
|
||||||
|
<integer>0</integer>
|
||||||
|
<key>UnifiedSleepSliderPref</key>
|
||||||
|
<true/>
|
||||||
|
<key>PublishBatteryFactors</key>
|
||||||
|
<true/>
|
||||||
|
<key>NetworkTimerDelay</key>
|
||||||
|
<integer>900</integer>
|
||||||
|
<key>StandbyDelayHigh</key>
|
||||||
|
<integer>86400</integer>
|
||||||
|
<key>StandbyDelay</key>
|
||||||
|
<integer>10800</integer>
|
||||||
|
<key>StandbyBatteryThreshold</key>
|
||||||
|
<integer>50</integer>
|
||||||
|
<key>AutoPowerOff</key>
|
||||||
|
<true/>
|
||||||
|
<key>ProximityWake</key>
|
||||||
|
<integer>0</integer>
|
||||||
|
<key>IOPlatformSystemSleepPolicy</key>
|
||||||
|
<data>U0xQVAIAEwCEHhIABAAAAAAUAAAABAAABgAAAAAAAAAPJQAAAAAAAAAAQAAAAEAAAAAQAAAAEAAH
|
||||||
|
AAAAAAAAAA8lAAAAAAAAhB4SAAQAAAAAGAAAAAgAAAUAAAAAAAAADyUAAAAAAACEHhIABAAAAAgQ
|
||||||
|
AAAIAAAABQAAAAAAAAAPJQAAAAAAACAAAAAgAAAAAAAAAAAAAAAFAAAAAAAAAA8lAAAAAAAACAAA
|
||||||
|
AAgAAAAAAAAAAAAAAAYAAAAAAAAABAEAAAEAAAAAAAQAAAAEAAAAAAAAAAAABQAAAAAAAAAPJQAA
|
||||||
|
AAAAAAAAAQAAAAEAAAAAAAAAAAAGAAAAAAAAAAQBAAAAAAAAxBYAAAAAAAAIAAAACAAAAAUAAAAA
|
||||||
|
AAAADyUAAAAAAADEFhAAAAAQACBAAAAgQAAABwAAAAgAAAAPPQAAAAAAAMQWAAAAAAAAIAAAACAA
|
||||||
|
AAAFAAAAAAAAAA8lAAAAAAAA1BYAABAAAAAAAAAAAAAAAAUAAAAAAAAADyUAAAAAAADEHhIARAAA
|
||||||
|
AAYQAAAGAAAABwAAAAIAAAAPPQAAAAAAAIQeEgAEAAAAABAAAAAAAAAHAAAAAgAAAA89AAAAAAAA
|
||||||
|
xBYAAAAAAAAAwAAAAMAAAAcAAAAIAAAADz0AAAAAAADEFgAAAAAAAAiAAAAIgAAABQAAAAAAAAAP
|
||||||
|
JQAAAAAAAMQWAAAAAAAAAAAAAAAAAAAHAAAAAQAAAA89AAAAAAAAQAAAAEAAAAAGAAAABgAAAAcA
|
||||||
|
AAAAAAAADzUAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAAAAAAPNQAAAAAAAA==</data>
|
||||||
|
<key>Frequencies</key>
|
||||||
|
<dict>
|
||||||
|
<key>2400</key>
|
||||||
|
<integer>0</integer>
|
||||||
|
<key>2600</key>
|
||||||
|
<integer>1</integer>
|
||||||
|
<key>2900</key>
|
||||||
|
<integer>2</integer>
|
||||||
|
</dict>
|
||||||
|
<key>FrequencyVectors</key>
|
||||||
|
<array>
|
||||||
|
<data>
|
||||||
|
AgAAAA0AAAABAAAAAAAAAHgeAAAAAAAAyAAAAAAAAAAAZOgDAAAAAAAAAEvQBwAAAAAAAAAyuAsA
|
||||||
|
AAAAAAAAGaAPAAAAAAAAAAD///////8PAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAABEAAAABAAAAAAAAAKwNAAAAAAAAyAAAAAAAAAABZOgDAAAAAAAAAUvQBwAA
|
||||||
|
AAAAAAEyuAsAAAAAAAAAMqAPAAAAAAAAABn///////8PAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAABAAAAAAAAAKAPAAAAAAAAyAAAAAAAAAACZPQBAAAA
|
||||||
|
AAAAAUvoAwAAAAAAAAEy0AcAAAAAAAABGbgLAAAAAAAAADKgDwAAAAAAAAAZ////////DwAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABYAAAABAAAAAAAAAJQRAAAAAAAAyAAAAAAA
|
||||||
|
AAADZPQBAAAAAAAAAzLoAwAAAAAAAAMZ0AcAAAAAAAABMrgLAAAAAAAAADKgDwAAAAAAAAAZ////
|
||||||
|
////DwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAABAAAAAAAAAJQRAAAA
|
||||||
|
AAAAyAAAAAAAAAAEZOgDAAAAAAAABBnQBwAAAAAAAAEZuAsAAAAAAAAAMqAPAAAAAAAAABn/////
|
||||||
|
//8PAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAA////////DwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAEJBQ0tHUk9VTkQAAAAAAAAAAGQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUkVBTFRJTUVfU0hPUlQAAAEEAAAZABkA
|
||||||
|
ZABkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AABLRVJORUwAAAAAAAAAAAAAAARkAJYAyAAsASwBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFRIUlVfVElFUjIAAAAAAAAAAmQAyADIAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVEhS
|
||||||
|
VV9USUVSMwAAAAAAAAACZADIAMgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAABUSFJVX1RJRVI0AAAAAAAAAAHIAMgAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFRIUlVfVElF
|
||||||
|
UjUAAAAAAAAAAGQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAaGFyZC1ydC1ucwAAAAAAAAAAAAAACT0AAAAAAAAAAAAA
|
||||||
|
AAAAdXRpbGl0eS10bHZsAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAbm9uLWZvY2FsLXRsdmwAAAAA
|
||||||
|
AACWAAAAAAAAAAAAAAAAAAAAdWJwYwAAAAAAAAAAAAAAAAEAAABvZmYAAAAAAAAAAAAAAAAAaW9j
|
||||||
|
c19lbmdhZ2UAAAAAAAAAAAAAahgAAAAAAAAAAAAAAAAAaW9jc19kaXNlbmdhZ2UAAAAAAACgJSYA
|
||||||
|
AAAAAAAAAAAAAAAAaW9jc19jc3RmbHIAAAAAAAAAAAADAAAAAAAAAAAAAAAAAAAAaW9jc19ydHJp
|
||||||
|
Z2dlcgAAAAAAAABkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
</data>
|
||||||
|
<data>
|
||||||
|
AgAAAA0AAAABAAAAAAAAAHgeAAAAAAAAyAAAAAAAAAAAZOgDAAAAAAAAAEvQBwAAAAAAAAAyuAsA
|
||||||
|
AAAAAAAAGaAPAAAAAAAAAAD///////8PAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAABEAAAABAAAAAAAAAKwNAAAAAAAAyAAAAAAAAAABZOgDAAAAAAAAAUvQBwAA
|
||||||
|
AAAAAAEyuAsAAAAAAAAAMqAPAAAAAAAAABn///////8PAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAABAAAAAAAAAKAPAAAAAAAAyAAAAAAAAAACZPQBAAAA
|
||||||
|
AAAAAUvoAwAAAAAAAAEy0AcAAAAAAAABGbgLAAAAAAAAADKgDwAAAAAAAAAZ////////DwAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABYAAAABAAAAAAAAAJQRAAAAAAAAyAAAAAAA
|
||||||
|
AAADZPQBAAAAAAAAAzLoAwAAAAAAAAMZ0AcAAAAAAAABMrgLAAAAAAAAADKgDwAAAAAAAAAZ////
|
||||||
|
////DwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAABAAAAAAAAAJQRAAAA
|
||||||
|
AAAAyAAAAAAAAAAEZOgDAAAAAAAABBnQBwAAAAAAAAEZuAsAAAAAAAAAMqAPAAAAAAAAABn/////
|
||||||
|
//8PAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABoAAAABAAAA
|
||||||
|
AAAAAKCGAQAAAAAALAEAAAAAAAAFZPQBAAAAAAAAA0voAwAAAAAAAAMy0AcAAAAAAAADALgLAAAA
|
||||||
|
AAAAATKgDwAAAAAAAAEA////////DwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAA////////DwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAEJBQ0tHUk9VTkQAAAAAAAAAAGQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUkVBTFRJTUVfU0hPUlQAAAEFAAAZABkA
|
||||||
|
ZABkAGQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AABLRVJORUwAAAAAAAAAAAAAAAVkAJYAyAAsASwBLAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFRIUlVfVElFUjIAAAAAAAAAAmQAyADIAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVEhS
|
||||||
|
VV9USUVSMwAAAAAAAAACZADIAMgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAABUSFJVX1RJRVI0AAAAAAAAAAHIAMgAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFRIUlVfVElF
|
||||||
|
UjUAAAAAAAAAAGQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAaGFyZC1ydC1ucwAAAAAAAAAAAAAACT0AAAAAAAAAAAAA
|
||||||
|
AAAAdXRpbGl0eS10bHZsAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAbm9uLWZvY2FsLXRsdmwAAAAA
|
||||||
|
AACWAAAAAAAAAAAAAAAAAAAAdWJwYwAAAAAAAAAAAAAAAAEAAABvZmYAAAAAAAAAAAAAAAAAaW9j
|
||||||
|
c19lbmdhZ2UAAAAAAAAAAAAAahgAAAAAAAAAAAAAAAAAaW9jc19kaXNlbmdhZ2UAAAAAAACgJSYA
|
||||||
|
AAAAAAAAAAAAAAAAaW9jc19jc3RmbHIAAAAAAAAAAAADAAAAAAAAAAAAAAAAAAAAaW9jc19ydHJp
|
||||||
|
Z2dlcgAAAAAAAABkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
</data>
|
||||||
|
<data>
|
||||||
|
AgAAAA0AAAABAAAAAAAAAHgeAAAAAAAAyAAAAAAAAAAAZOgDAAAAAAAAAEvQBwAAAAAAAAAyuAsA
|
||||||
|
AAAAAAAAGaAPAAAAAAAAAAD///////8PAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAABEAAAABAAAAAAAAAKwNAAAAAAAAyAAAAAAAAAABZOgDAAAAAAAAAUvQBwAA
|
||||||
|
AAAAAAEyuAsAAAAAAAAAMqAPAAAAAAAAABn///////8PAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAABAAAAAAAAAKAPAAAAAAAAyAAAAAAAAAACZPQBAAAA
|
||||||
|
AAAAAUvoAwAAAAAAAAEy0AcAAAAAAAABGbgLAAAAAAAAADKgDwAAAAAAAAAZ////////DwAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABYAAAABAAAAAAAAAJQRAAAAAAAAyAAAAAAA
|
||||||
|
AAADZPQBAAAAAAAAAzLoAwAAAAAAAAMZ0AcAAAAAAAABMrgLAAAAAAAAADKgDwAAAAAAAAAZ////
|
||||||
|
////DwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAABAAAAAAAAAJQRAAAA
|
||||||
|
AAAAyAAAAAAAAAAEZOgDAAAAAAAABBnQBwAAAAAAAAEZuAsAAAAAAAAAMqAPAAAAAAAAABn/////
|
||||||
|
//8PAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB0AAAABAAAA
|
||||||
|
AAAAAKCGAQAAAAAALAEAAAAAAAAFZPQBAAAAAAAAA0voAwAAAAAAAAMy0AcAAAAAAAADALgLAAAA
|
||||||
|
AAAAATKgDwAAAAAAAAEA////////DwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAA////////DwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAEJBQ0tHUk9VTkQAAAAAAAAAAGQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUkVBTFRJTUVfU0hPUlQAAAEFAAAZABkA
|
||||||
|
ZABkAGQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AABLRVJORUwAAAAAAAAAAAAAAAVkAJYAyAAsASwBLAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFRIUlVfVElFUjIAAAAAAAAAAmQAyADIAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVEhS
|
||||||
|
VV9USUVSMwAAAAAAAAACZADIAMgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAABUSFJVX1RJRVI0AAAAAAAAAAHIAMgAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFRIUlVfVElF
|
||||||
|
UjUAAAAAAAAAAGQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAaGFyZC1ydC1ucwAAAAAAAAAAAAAACT0AAAAAAAAAAAAA
|
||||||
|
AAAAdXRpbGl0eS10bHZsAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAbm9uLWZvY2FsLXRsdmwAAAAA
|
||||||
|
AACWAAAAAAAAAAAAAAAAAAAAdWJwYwAAAAAAAAAAAAAAAAEAAABvZmYAAAAAAAAAAAAAAAAAaW9j
|
||||||
|
c19lbmdhZ2UAAAAAAAAAAAAAahgAAAAAAAAAAAAAAAAAaW9jc19kaXNlbmdhZ2UAAAAAAACgJSYA
|
||||||
|
AAAAAAAAAAAAAAAAaW9jc19jc3RmbHIAAAAAAAAAAAADAAAAAAAAAAAAAAAAAAAAaW9jc19ydHJp
|
||||||
|
Z2dlcgAAAAAAAABkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
</data>
|
||||||
|
</array>
|
||||||
|
<key>ThermalConfiguration</key>
|
||||||
|
<dict>
|
||||||
|
<key>Domain</key>
|
||||||
|
<dict>
|
||||||
|
<key>CPU</key>
|
||||||
|
<dict>
|
||||||
|
<key>SFIWindow</key>
|
||||||
|
<integer>50000</integer>
|
||||||
|
<key>SFIWindowHigh</key>
|
||||||
|
<integer>25000</integer>
|
||||||
|
<key>SFIWindowThreshold</key>
|
||||||
|
<integer>150</integer>
|
||||||
|
<key>SFIMaintenance</key>
|
||||||
|
<dict>
|
||||||
|
<key>EffortCurve</key>
|
||||||
|
<string>1=0%,10=25%,15=40%,20=75%,130=75%,150=87%</string>
|
||||||
|
</dict>
|
||||||
|
<key>SFIDarwinBG</key>
|
||||||
|
<dict>
|
||||||
|
<key>EffortCurve</key>
|
||||||
|
<string>1=0%,10=25%,15=40%,20=75%,130=75%,150=87%</string>
|
||||||
|
</dict>
|
||||||
|
<key>SFIAppNap</key>
|
||||||
|
<dict>
|
||||||
|
<key>EffortCurve</key>
|
||||||
|
<string>10=0%,20=25%,25=40%,30=75%,130=75%,150=87%</string>
|
||||||
|
</dict>
|
||||||
|
<key>SFIUtility</key>
|
||||||
|
<dict>
|
||||||
|
<key>EffortCurve</key>
|
||||||
|
<string>30=0%,40=20%,45=37%,50=50%,130=50%,150=75%</string>
|
||||||
|
</dict>
|
||||||
|
<key>SFIManagedFocal</key>
|
||||||
|
<dict>
|
||||||
|
<key>EffortCurve</key>
|
||||||
|
<string>190=0%,250=25%</string>
|
||||||
|
</dict>
|
||||||
|
<key>SFIManagedNonFocal</key>
|
||||||
|
<dict>
|
||||||
|
<key>EffortCurve</key>
|
||||||
|
<string>150=0%,200=50%</string>
|
||||||
|
</dict>
|
||||||
|
<key>QOSThermalThresholds</key>
|
||||||
|
<dict>
|
||||||
|
<key>Utility</key>
|
||||||
|
<integer>20</integer>
|
||||||
|
<key>NonFocal</key>
|
||||||
|
<integer>150</integer>
|
||||||
|
</dict>
|
||||||
|
<key>ThermalPressure</key>
|
||||||
|
<dict>
|
||||||
|
<key>Nominal</key>
|
||||||
|
<dict>
|
||||||
|
<key>LowThreshold</key>
|
||||||
|
<integer>0</integer>
|
||||||
|
<key>HighThreshold</key>
|
||||||
|
<integer>75</integer>
|
||||||
|
</dict>
|
||||||
|
<key>Moderate</key>
|
||||||
|
<dict>
|
||||||
|
<key>LowThreshold</key>
|
||||||
|
<integer>50</integer>
|
||||||
|
<key>HighThreshold</key>
|
||||||
|
<integer>125</integer>
|
||||||
|
</dict>
|
||||||
|
<key>Heavy</key>
|
||||||
|
<dict>
|
||||||
|
<key>LowThreshold</key>
|
||||||
|
<integer>100</integer>
|
||||||
|
<key>HighThreshold</key>
|
||||||
|
<integer>200</integer>
|
||||||
|
</dict>
|
||||||
|
<key>Trapping</key>
|
||||||
|
<dict>
|
||||||
|
<key>LowThreshold</key>
|
||||||
|
<integer>150</integer>
|
||||||
|
<key>HighThreshold</key>
|
||||||
|
<integer>250</integer>
|
||||||
|
</dict>
|
||||||
|
<key>Sleeping</key>
|
||||||
|
<dict>
|
||||||
|
<key>LowThreshold</key>
|
||||||
|
<integer>225</integer>
|
||||||
|
<key>HighThreshold</key>
|
||||||
|
<integer>252</integer>
|
||||||
|
</dict>
|
||||||
|
</dict>
|
||||||
|
</dict>
|
||||||
|
<key>GPU</key>
|
||||||
|
<dict>
|
||||||
|
<key>GPUTier1</key>
|
||||||
|
<dict>
|
||||||
|
<key>EffortCurve</key>
|
||||||
|
<string>0=0%</string>
|
||||||
|
</dict>
|
||||||
|
<key>GPUTier2</key>
|
||||||
|
<dict>
|
||||||
|
<key>EffortCurve</key>
|
||||||
|
<string>0=0%</string>
|
||||||
|
</dict>
|
||||||
|
<key>GPUTier3</key>
|
||||||
|
<dict>
|
||||||
|
<key>EffortCurve</key>
|
||||||
|
<string>0=0%</string>
|
||||||
|
</dict>
|
||||||
|
<key>GPUTier4</key>
|
||||||
|
<dict>
|
||||||
|
<key>EffortCurve</key>
|
||||||
|
<string>0=0%,150=0%,175=50%,200=75%,250=80%,251=87%</string>
|
||||||
|
</dict>
|
||||||
|
</dict>
|
||||||
|
<key>IO</key>
|
||||||
|
<dict>
|
||||||
|
<key>IOTier0</key>
|
||||||
|
<dict>
|
||||||
|
<key>EffortCurve</key>
|
||||||
|
<string>0=0%</string>
|
||||||
|
</dict>
|
||||||
|
<key>IOTier1</key>
|
||||||
|
<dict>
|
||||||
|
<key>EffortCurve</key>
|
||||||
|
<string>0=0%</string>
|
||||||
|
</dict>
|
||||||
|
<key>IOTier2</key>
|
||||||
|
<dict>
|
||||||
|
<key>EffortCurve</key>
|
||||||
|
<string>0=0%</string>
|
||||||
|
</dict>
|
||||||
|
<key>IOTier3</key>
|
||||||
|
<dict>
|
||||||
|
<key>EffortCurve</key>
|
||||||
|
<string>0=0%</string>
|
||||||
|
</dict>
|
||||||
|
</dict>
|
||||||
|
</dict>
|
||||||
|
</dict>
|
||||||
|
<key>TCPKeepAliveDuringSleep</key>
|
||||||
|
<true/>
|
||||||
|
<key>TCPKeepAliveExpirationTimeout</key>
|
||||||
|
<integer>43200</integer>
|
||||||
|
<key>NotificationWake</key>
|
||||||
|
<true/>
|
||||||
|
<key>DNDWhileDisplaySleeps</key>
|
||||||
|
<false/>
|
||||||
|
<key>DarkWakeServices</key>
|
||||||
|
<dict>
|
||||||
|
<key>DarkWakeBackgroundTasks</key>
|
||||||
|
<integer>1</integer>
|
||||||
|
<key>SleepServices</key>
|
||||||
|
<integer>7</integer>
|
||||||
|
<key>SleepServicesModes</key>
|
||||||
|
<dict>
|
||||||
|
<key>ModeA</key>
|
||||||
|
<dict>
|
||||||
|
<key>Expiration</key>
|
||||||
|
<integer>0</integer>
|
||||||
|
<key>BatteryFloor</key>
|
||||||
|
<integer>0</integer>
|
||||||
|
<key>BaseIntervals</key>
|
||||||
|
<dict>
|
||||||
|
<key>AC</key>
|
||||||
|
<dict>
|
||||||
|
<key>BaseSleepInterval</key>
|
||||||
|
<integer>3600</integer>
|
||||||
|
<key>BaseWakeCapInterval</key>
|
||||||
|
<integer>86400</integer>
|
||||||
|
</dict>
|
||||||
|
<key>Battery</key>
|
||||||
|
<dict>
|
||||||
|
<key>BaseSleepInterval</key>
|
||||||
|
<integer>3600</integer>
|
||||||
|
<key>BaseWakeCapInterval</key>
|
||||||
|
<integer>180</integer>
|
||||||
|
</dict>
|
||||||
|
</dict>
|
||||||
|
</dict>
|
||||||
|
</dict>
|
||||||
|
</dict>
|
||||||
|
</dict>
|
||||||
|
</dict>
|
||||||
|
</plist>
|
||||||
File diff suppressed because one or more lines are too long
@@ -0,0 +1,302 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||||
|
<plist version="1.0">
|
||||||
|
<dict>
|
||||||
|
<key>pmspFile</key>
|
||||||
|
<integer>5</integer>
|
||||||
|
<key>IOPlatformPowerProfile</key>
|
||||||
|
<dict>
|
||||||
|
<key>UnifiedSleepSliderPref</key>
|
||||||
|
<true/>
|
||||||
|
<key>enabler</key>
|
||||||
|
<true/>
|
||||||
|
<key>AGPM</key>
|
||||||
|
<true/>
|
||||||
|
<key>ASPM</key>
|
||||||
|
<true/>
|
||||||
|
<key>PublishBatteryFactors</key>
|
||||||
|
<true/>
|
||||||
|
<key>NetworkTimerDelay</key>
|
||||||
|
<integer>900</integer>
|
||||||
|
<key>StandbyDelayHigh</key>
|
||||||
|
<integer>86400</integer>
|
||||||
|
<key>StandbyDelay</key>
|
||||||
|
<integer>10800</integer>
|
||||||
|
<key>StandbyBatteryThreshold</key>
|
||||||
|
<integer>50</integer>
|
||||||
|
<key>AutoPowerOff</key>
|
||||||
|
<true/>
|
||||||
|
<key>ProximityWake</key>
|
||||||
|
<integer>0</integer>
|
||||||
|
<key>IOPlatformSystemSleepPolicy</key>
|
||||||
|
<data>U0xQVAIAEwCEHhIABAAAAAAUAAAABAAABgAAAAAAAAAPJQAAAAAAAAAAQAAAAEAAAAAQAAAAEAAH
|
||||||
|
AAAAAAAAAA8lAAAAAAAAhB4SAAQAAAAAGAAAAAgAAAUAAAAAAAAADyUAAAAAAACEHhIABAAAAAgQ
|
||||||
|
AAAIAAAABQAAAAAAAAAPJQAAAAAAACAAAAAgAAAAAAAAAAAAAAAFAAAAAAAAAA8lAAAAAAAACAAA
|
||||||
|
AAgAAAAAAAAAAAAAAAYAAAAAAAAAAAEAAAEAAAAAAAQAAAAEAAAAAAAAAAAABQAAAAAAAAAPJQAA
|
||||||
|
AAAAAAAAAQAAAAEAAAAAAAAAAAAGAAAAAAAAAAABAAAAAAAAxBYAAAAAAAAIAAAACAAAAAUAAAAA
|
||||||
|
AAAADyUAAAAAAADEFhAAAAAQACBAAAAgQAAABwAAAAgAAAAPOQAAAAAAAMQWAAAAAAAAIAAAACAA
|
||||||
|
AAAFAAAAAAAAAA8lAAAAAAAA1BYAABAAAAAAAAAAAAAAAAUAAAAAAAAADyUAAAAAAADEHhIARAAA
|
||||||
|
AAYQAAAGAAAABwAAAAIAAAAPOQAAAAAAAIQeEgAEAAAAABAAAAAAAAAHAAAAAgAAAA85AAAAAAAA
|
||||||
|
xBYAAAAAAAAAwAAAAMAAAAcAAAAIAAAADzkAAAAAAADEFgAAAAAAAAiAAAAIgAAABQAAAAAAAAAP
|
||||||
|
JQAAAAAAAMQWAAAAAAAAAAAAAAAAAAAHAAAAAQAAAA85AAAAAAAAQAAAAEAAAAAGAAAABgAAAAcA
|
||||||
|
AAAAAAAADzEAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAAAAAAPMQAAAAAAAA==</data>
|
||||||
|
<key>FanThrottledRPM</key>
|
||||||
|
<integer>2000</integer>
|
||||||
|
<key>FanMax</key>
|
||||||
|
<array>
|
||||||
|
<integer>6500</integer>
|
||||||
|
</array>
|
||||||
|
<key>InitialPLimit</key>
|
||||||
|
<integer>0</integer>
|
||||||
|
<key>FrequencyVectors</key>
|
||||||
|
<array>
|
||||||
|
<data>
|
||||||
|
AgAAAAAAAAACAAAAAAAAAMgAAAAAAAAA////////DwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAGQAAAACAAAAAAAAAHgeAAAAAAAAyAAAAAAAAAABZOgDAAAAAAAAAUvQBwAA
|
||||||
|
AAAAAAEyuAsAAAAAAAABGaAPAAAAAAAAAAD///////8PAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAADIAAAADAAAAAAAAANQXAAAAAAAAyAAAAAAAAAACZPQBAAAA
|
||||||
|
AAAAAjLoAwAAAAAAAAIA0AcAAAAAAAABMrgLAAAAAAAAAQCgDwAAAAAAAAAA////////DwAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGQAAAADAAAAAAAAAKCGAQAAAAAALAEAAAAA
|
||||||
|
AAADZPQBAAAAAAAAAkvoAwAAAAAAAAIy0AcAAAAAAAACALgLAAAAAAAAATKgDwAAAAAAAAAA////
|
||||||
|
////DwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAA////////DwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAEJBQ0tHUk9VTkQAAAAAAAAAAWQAZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUkVBTFRJTUVfU0hPUlQAAAEDAAAyADIA
|
||||||
|
ZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AABLRVJORUwAAAAAAAAAAAAAAAJkAJYAyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFRIUlVfVElFUjQAAAAAAAAAAmQAyADIAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVEhS
|
||||||
|
VV9USUVSNQAAAAAAAAAByADIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdXRpbGl0eS10bHZsAAAAAAAAAABAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAbm9uLWZvY2FsLXRsdmwAAAAAAAD6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
</data>
|
||||||
|
</array>
|
||||||
|
<key>ThermalConfiguration</key>
|
||||||
|
<dict>
|
||||||
|
<key>Domain</key>
|
||||||
|
<dict>
|
||||||
|
<key>CPU</key>
|
||||||
|
<dict>
|
||||||
|
<key>SFIWindow</key>
|
||||||
|
<integer>50000</integer>
|
||||||
|
<key>SFIMaintenance</key>
|
||||||
|
<dict>
|
||||||
|
<key>EffortCurve</key>
|
||||||
|
<string>40=0%,78=67%</string>
|
||||||
|
</dict>
|
||||||
|
<key>SFIDarwinBG</key>
|
||||||
|
<dict>
|
||||||
|
<key>EffortCurve</key>
|
||||||
|
<string>40=0%,78=67%</string>
|
||||||
|
</dict>
|
||||||
|
<key>SFIAppNap</key>
|
||||||
|
<dict>
|
||||||
|
<key>EffortCurve</key>
|
||||||
|
<string>40=0%,78=67%</string>
|
||||||
|
</dict>
|
||||||
|
<key>QOSThermalThresholds</key>
|
||||||
|
<dict>
|
||||||
|
<key>Utility</key>
|
||||||
|
<integer>64</integer>
|
||||||
|
<key>NonFocal</key>
|
||||||
|
<integer>251</integer>
|
||||||
|
</dict>
|
||||||
|
<key>ThermalPressure</key>
|
||||||
|
<dict>
|
||||||
|
<key>Nominal</key>
|
||||||
|
<dict>
|
||||||
|
<key>HighThreshold</key>
|
||||||
|
<integer>64</integer>
|
||||||
|
<key>LowThreshold</key>
|
||||||
|
<integer>0</integer>
|
||||||
|
</dict>
|
||||||
|
<key>Moderate</key>
|
||||||
|
<dict>
|
||||||
|
<key>HighThreshold</key>
|
||||||
|
<integer>120</integer>
|
||||||
|
<key>LowThreshold</key>
|
||||||
|
<integer>50</integer>
|
||||||
|
</dict>
|
||||||
|
<key>Heavy</key>
|
||||||
|
<dict>
|
||||||
|
<key>HighThreshold</key>
|
||||||
|
<integer>200</integer>
|
||||||
|
<key>LowThreshold</key>
|
||||||
|
<integer>90</integer>
|
||||||
|
</dict>
|
||||||
|
<key>Trapping</key>
|
||||||
|
<dict>
|
||||||
|
<key>HighThreshold</key>
|
||||||
|
<integer>250</integer>
|
||||||
|
<key>LowThreshold</key>
|
||||||
|
<integer>180</integer>
|
||||||
|
</dict>
|
||||||
|
<key>Sleeping</key>
|
||||||
|
<dict>
|
||||||
|
<key>HighThreshold</key>
|
||||||
|
<integer>252</integer>
|
||||||
|
<key>LowThreshold</key>
|
||||||
|
<integer>251</integer>
|
||||||
|
</dict>
|
||||||
|
</dict>
|
||||||
|
</dict>
|
||||||
|
<key>GPU</key>
|
||||||
|
<dict/>
|
||||||
|
<key>IO</key>
|
||||||
|
<dict/>
|
||||||
|
</dict>
|
||||||
|
</dict>
|
||||||
|
<key>DarkWakeServices</key>
|
||||||
|
<dict>
|
||||||
|
<key>DarkWakeBackgroundTasks</key>
|
||||||
|
<integer>1</integer>
|
||||||
|
<key>SleepServices</key>
|
||||||
|
<integer>7</integer>
|
||||||
|
<key>SleepServicesModes</key>
|
||||||
|
<dict>
|
||||||
|
<key>ModeA</key>
|
||||||
|
<dict>
|
||||||
|
<key>Expiration</key>
|
||||||
|
<integer>0</integer>
|
||||||
|
<key>BatteryFloor</key>
|
||||||
|
<integer>0</integer>
|
||||||
|
<key>BaseIntervals</key>
|
||||||
|
<dict>
|
||||||
|
<key>AC</key>
|
||||||
|
<dict>
|
||||||
|
<key>BaseSleepInterval</key>
|
||||||
|
<integer>3600</integer>
|
||||||
|
<key>BaseWakeCapInterval</key>
|
||||||
|
<integer>86400</integer>
|
||||||
|
</dict>
|
||||||
|
<key>Battery</key>
|
||||||
|
<dict>
|
||||||
|
<key>BaseSleepInterval</key>
|
||||||
|
<integer>3600</integer>
|
||||||
|
<key>BaseWakeCapInterval</key>
|
||||||
|
<integer>180</integer>
|
||||||
|
</dict>
|
||||||
|
</dict>
|
||||||
|
</dict>
|
||||||
|
</dict>
|
||||||
|
</dict>
|
||||||
|
</dict>
|
||||||
|
</dict>
|
||||||
|
</plist>
|
||||||
File diff suppressed because one or more lines are too long
@@ -0,0 +1,302 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||||
|
<plist version="1.0">
|
||||||
|
<dict>
|
||||||
|
<key>pmspFile</key>
|
||||||
|
<integer>5</integer>
|
||||||
|
<key>IOPlatformPowerProfile</key>
|
||||||
|
<dict>
|
||||||
|
<key>UnifiedSleepSliderPref</key>
|
||||||
|
<true/>
|
||||||
|
<key>enabler</key>
|
||||||
|
<true/>
|
||||||
|
<key>AGPM</key>
|
||||||
|
<true/>
|
||||||
|
<key>ASPM</key>
|
||||||
|
<true/>
|
||||||
|
<key>PublishBatteryFactors</key>
|
||||||
|
<true/>
|
||||||
|
<key>NetworkTimerDelay</key>
|
||||||
|
<integer>900</integer>
|
||||||
|
<key>StandbyDelayHigh</key>
|
||||||
|
<integer>86400</integer>
|
||||||
|
<key>StandbyDelay</key>
|
||||||
|
<integer>10800</integer>
|
||||||
|
<key>StandbyBatteryThreshold</key>
|
||||||
|
<integer>50</integer>
|
||||||
|
<key>AutoPowerOff</key>
|
||||||
|
<true/>
|
||||||
|
<key>ProximityWake</key>
|
||||||
|
<integer>0</integer>
|
||||||
|
<key>IOPlatformSystemSleepPolicy</key>
|
||||||
|
<data>U0xQVAIAEwCEHhIABAAAAAAUAAAABAAABgAAAAAAAAAPJQAAAAAAAAAAQAAAAEAAAAAQAAAAEAAH
|
||||||
|
AAAAAAAAAA8lAAAAAAAAhB4SAAQAAAAAGAAAAAgAAAUAAAAAAAAADyUAAAAAAACEHhIABAAAAAgQ
|
||||||
|
AAAIAAAABQAAAAAAAAAPJQAAAAAAACAAAAAgAAAAAAAAAAAAAAAFAAAAAAAAAA8lAAAAAAAACAAA
|
||||||
|
AAgAAAAAAAAAAAAAAAYAAAAAAAAAAAEAAAEAAAAAAAQAAAAEAAAAAAAAAAAABQAAAAAAAAAPJQAA
|
||||||
|
AAAAAAAAAQAAAAEAAAAAAAAAAAAGAAAAAAAAAAABAAAAAAAAxBYAAAAAAAAIAAAACAAAAAUAAAAA
|
||||||
|
AAAADyUAAAAAAADEFhAAAAAQACBAAAAgQAAABwAAAAgAAAAPOQAAAAAAAMQWAAAAAAAAIAAAACAA
|
||||||
|
AAAFAAAAAAAAAA8lAAAAAAAA1BYAABAAAAAAAAAAAAAAAAUAAAAAAAAADyUAAAAAAADEHhIARAAA
|
||||||
|
AAYQAAAGAAAABwAAAAIAAAAPOQAAAAAAAIQeEgAEAAAAABAAAAAAAAAHAAAAAgAAAA85AAAAAAAA
|
||||||
|
xBYAAAAAAAAAwAAAAMAAAAcAAAAIAAAADzkAAAAAAADEFgAAAAAAAAiAAAAIgAAABQAAAAAAAAAP
|
||||||
|
JQAAAAAAAMQWAAAAAAAAAAAAAAAAAAAHAAAAAQAAAA85AAAAAAAAQAAAAEAAAAAGAAAABgAAAAcA
|
||||||
|
AAAAAAAADzEAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAAAAAAPMQAAAAAAAA==</data>
|
||||||
|
<key>FanThrottledRPM</key>
|
||||||
|
<integer>2000</integer>
|
||||||
|
<key>FanMax</key>
|
||||||
|
<array>
|
||||||
|
<integer>6500</integer>
|
||||||
|
</array>
|
||||||
|
<key>InitialPLimit</key>
|
||||||
|
<integer>0</integer>
|
||||||
|
<key>FrequencyVectors</key>
|
||||||
|
<array>
|
||||||
|
<data>
|
||||||
|
AgAAAAAAAAACAAAAAAAAAMgAAAAAAAAA////////DwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAGQAAAACAAAAAAAAAHgeAAAAAAAAyAAAAAAAAAABZOgDAAAAAAAAAUvQBwAA
|
||||||
|
AAAAAAEyuAsAAAAAAAABGaAPAAAAAAAAAAD///////8PAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAADIAAAADAAAAAAAAANQXAAAAAAAAyAAAAAAAAAACZPQBAAAA
|
||||||
|
AAAAAjLoAwAAAAAAAAIA0AcAAAAAAAABMrgLAAAAAAAAAQCgDwAAAAAAAAAA////////DwAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGQAAAADAAAAAAAAAKCGAQAAAAAALAEAAAAA
|
||||||
|
AAADZPQBAAAAAAAAAkvoAwAAAAAAAAIy0AcAAAAAAAACALgLAAAAAAAAATKgDwAAAAAAAAAA////
|
||||||
|
////DwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAA////////DwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAEJBQ0tHUk9VTkQAAAAAAAAAAWQAZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUkVBTFRJTUVfU0hPUlQAAAEDAAAyADIA
|
||||||
|
ZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AABLRVJORUwAAAAAAAAAAAAAAAJkAJYAyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFRIUlVfVElFUjQAAAAAAAAAAmQAyADIAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVEhS
|
||||||
|
VV9USUVSNQAAAAAAAAAByADIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdXRpbGl0eS10bHZsAAAAAAAAAAA9AAAAAAAAAAAAAAAA
|
||||||
|
AAAAbm9uLWZvY2FsLXRsdmwAAAAAAAD6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
</data>
|
||||||
|
</array>
|
||||||
|
<key>ThermalConfiguration</key>
|
||||||
|
<dict>
|
||||||
|
<key>Domain</key>
|
||||||
|
<dict>
|
||||||
|
<key>CPU</key>
|
||||||
|
<dict>
|
||||||
|
<key>SFIWindow</key>
|
||||||
|
<integer>50000</integer>
|
||||||
|
<key>SFIMaintenance</key>
|
||||||
|
<dict>
|
||||||
|
<key>EffortCurve</key>
|
||||||
|
<string>40=0%,74=67%</string>
|
||||||
|
</dict>
|
||||||
|
<key>SFIDarwinBG</key>
|
||||||
|
<dict>
|
||||||
|
<key>EffortCurve</key>
|
||||||
|
<string>40=0%,74=67%</string>
|
||||||
|
</dict>
|
||||||
|
<key>SFIAppNap</key>
|
||||||
|
<dict>
|
||||||
|
<key>EffortCurve</key>
|
||||||
|
<string>40=0%,74=67%</string>
|
||||||
|
</dict>
|
||||||
|
<key>QOSThermalThresholds</key>
|
||||||
|
<dict>
|
||||||
|
<key>Utility</key>
|
||||||
|
<integer>61</integer>
|
||||||
|
<key>NonFocal</key>
|
||||||
|
<integer>251</integer>
|
||||||
|
</dict>
|
||||||
|
<key>ThermalPressure</key>
|
||||||
|
<dict>
|
||||||
|
<key>Nominal</key>
|
||||||
|
<dict>
|
||||||
|
<key>HighThreshold</key>
|
||||||
|
<integer>61</integer>
|
||||||
|
<key>LowThreshold</key>
|
||||||
|
<integer>0</integer>
|
||||||
|
</dict>
|
||||||
|
<key>Moderate</key>
|
||||||
|
<dict>
|
||||||
|
<key>HighThreshold</key>
|
||||||
|
<integer>120</integer>
|
||||||
|
<key>LowThreshold</key>
|
||||||
|
<integer>50</integer>
|
||||||
|
</dict>
|
||||||
|
<key>Heavy</key>
|
||||||
|
<dict>
|
||||||
|
<key>HighThreshold</key>
|
||||||
|
<integer>200</integer>
|
||||||
|
<key>LowThreshold</key>
|
||||||
|
<integer>90</integer>
|
||||||
|
</dict>
|
||||||
|
<key>Trapping</key>
|
||||||
|
<dict>
|
||||||
|
<key>HighThreshold</key>
|
||||||
|
<integer>250</integer>
|
||||||
|
<key>LowThreshold</key>
|
||||||
|
<integer>180</integer>
|
||||||
|
</dict>
|
||||||
|
<key>Sleeping</key>
|
||||||
|
<dict>
|
||||||
|
<key>HighThreshold</key>
|
||||||
|
<integer>252</integer>
|
||||||
|
<key>LowThreshold</key>
|
||||||
|
<integer>251</integer>
|
||||||
|
</dict>
|
||||||
|
</dict>
|
||||||
|
</dict>
|
||||||
|
<key>GPU</key>
|
||||||
|
<dict/>
|
||||||
|
<key>IO</key>
|
||||||
|
<dict/>
|
||||||
|
</dict>
|
||||||
|
</dict>
|
||||||
|
<key>DarkWakeServices</key>
|
||||||
|
<dict>
|
||||||
|
<key>DarkWakeBackgroundTasks</key>
|
||||||
|
<integer>1</integer>
|
||||||
|
<key>SleepServices</key>
|
||||||
|
<integer>7</integer>
|
||||||
|
<key>SleepServicesModes</key>
|
||||||
|
<dict>
|
||||||
|
<key>ModeA</key>
|
||||||
|
<dict>
|
||||||
|
<key>Expiration</key>
|
||||||
|
<integer>0</integer>
|
||||||
|
<key>BatteryFloor</key>
|
||||||
|
<integer>0</integer>
|
||||||
|
<key>BaseIntervals</key>
|
||||||
|
<dict>
|
||||||
|
<key>AC</key>
|
||||||
|
<dict>
|
||||||
|
<key>BaseSleepInterval</key>
|
||||||
|
<integer>3600</integer>
|
||||||
|
<key>BaseWakeCapInterval</key>
|
||||||
|
<integer>86400</integer>
|
||||||
|
</dict>
|
||||||
|
<key>Battery</key>
|
||||||
|
<dict>
|
||||||
|
<key>BaseSleepInterval</key>
|
||||||
|
<integer>3600</integer>
|
||||||
|
<key>BaseWakeCapInterval</key>
|
||||||
|
<integer>180</integer>
|
||||||
|
</dict>
|
||||||
|
</dict>
|
||||||
|
</dict>
|
||||||
|
</dict>
|
||||||
|
</dict>
|
||||||
|
</dict>
|
||||||
|
</dict>
|
||||||
|
</plist>
|
||||||
File diff suppressed because one or more lines are too long
@@ -0,0 +1,294 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||||
|
<plist version="1.0">
|
||||||
|
<dict>
|
||||||
|
<key>pmspFile</key>
|
||||||
|
<integer>6</integer>
|
||||||
|
<key>IOPlatformPowerProfile</key>
|
||||||
|
<dict>
|
||||||
|
<key>UnifiedSleepSliderPref</key>
|
||||||
|
<true/>
|
||||||
|
<key>enabler</key>
|
||||||
|
<true/>
|
||||||
|
<key>AGPM</key>
|
||||||
|
<true/>
|
||||||
|
<key>ASPM</key>
|
||||||
|
<true/>
|
||||||
|
<key>PublishBatteryFactors</key>
|
||||||
|
<true/>
|
||||||
|
<key>NetworkTimerDelay</key>
|
||||||
|
<integer>900</integer>
|
||||||
|
<key>StandbyDelayHigh</key>
|
||||||
|
<integer>86400</integer>
|
||||||
|
<key>StandbyDelay</key>
|
||||||
|
<integer>10800</integer>
|
||||||
|
<key>StandbyBatteryThreshold</key>
|
||||||
|
<integer>50</integer>
|
||||||
|
<key>AutoPowerOff</key>
|
||||||
|
<true/>
|
||||||
|
<key>ProximityWake</key>
|
||||||
|
<integer>0</integer>
|
||||||
|
<key>IOPlatformSystemSleepPolicy</key>
|
||||||
|
<data>U0xQVAIAEwCEHhIABAAAAAAUAAAABAAABgAAAAAAAAAPJQAAAAAAAAAAQAAAAEAAAAAQAAAAEAAH
|
||||||
|
AAAAAAAAAA8lAAAAAAAAhB4SAAQAAAAAGAAAAAgAAAUAAAAAAAAADyUAAAAAAACEHhIABAAAAAgQ
|
||||||
|
AAAIAAAABQAAAAAAAAAPJQAAAAAAACAAAAAgAAAAAAAAAAAAAAAFAAAAAAAAAA8lAAAAAAAACAAA
|
||||||
|
AAgAAAAAAAAAAAAAAAYAAAAAAAAAAAEAAAEAAAAAAAQAAAAEAAAAAAAAAAAABQAAAAAAAAAPJQAA
|
||||||
|
AAAAAAAAAQAAAAEAAAAAAAAAAAAGAAAAAAAAAAABAAAAAAAAxBYAAAAAAAAIAAAACAAAAAUAAAAA
|
||||||
|
AAAADyUAAAAAAADEFhAAAAAQACBAAAAgQAAABwAAAAgAAAAPPQAAAAAAAMQWAAAAAAAAIAAAACAA
|
||||||
|
AAAFAAAAAAAAAA8lAAAAAAAA1BYAABAAAAAAAAAAAAAAAAUAAAAAAAAADyUAAAAAAADEHhIARAAA
|
||||||
|
AAYQAAAGAAAABwAAAAIAAAAPPQAAAAAAAIQeEgAEAAAAABAAAAAAAAAHAAAAAgAAAA89AAAAAAAA
|
||||||
|
xBYAAAAAAAAAwAAAAMAAAAcAAAAIAAAADz0AAAAAAADEFgAAAAAAAAiAAAAIgAAABQAAAAAAAAAP
|
||||||
|
JQAAAAAAAMQWAAAAAAAAAAAAAAAAAAAHAAAAAQAAAA89AAAAAAAAQAAAAEAAAAAGAAAABgAAAAcA
|
||||||
|
AAAAAAAADzUAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAAAAAAPNQAAAAAAAA==</data>
|
||||||
|
<key>FrequencyVectors</key>
|
||||||
|
<array>
|
||||||
|
<data>
|
||||||
|
AgAAAAAAAAACAAAAAAAAAMgAAAAAAAAAGQAAAAAAAAAAZP///////w8AAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAADIAAAACAAAAAAAAADwPAAAAAAAAyAAAAAAAAAABZOgDAAAAAAAAAUvQBwAA
|
||||||
|
AAAAAAEyuAsAAAAAAAABGaAPAAAAAAAAAQD///////8PAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAGQAAAACAAAAAAAAAGQZAAAAAAAAyAAAAAAAAAACZOgDAAAA
|
||||||
|
AAAAAkvQBwAAAAAAAAIyuAsAAAAAAAABMqAPAAAAAAAAARn///////8PAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADIAAAADAAAAAAAAAKAPAAAAAAAAyAAAAAAA
|
||||||
|
AAADZPQBAAAAAAAAAzLoAwAAAAAAAAMZ0AcAAAAAAAACMrgLAAAAAAAAATKgDwAAAAAAAAEZ////
|
||||||
|
////DwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGQAAAADAAAAAAAAAKCGAQAA
|
||||||
|
AAAALAEAAAAAAAAEZPQBAAAAAAAAA0voAwAAAAAAAAMy0AcAAAAAAAADALgLAAAAAAAAAjKgDwAA
|
||||||
|
AAAAAAIA////////DwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAA////////DwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAEJBQ0tHUk9VTkQAAAAAAAAAAWQAZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUkVBTFRJTUVfU0hPUlQAAAIEAAAAABkA
|
||||||
|
GQBkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AABLRVJORUwAAAAAAAAAAAAAAARkAGQAZACWAMgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFRIUlVfVElFUjQAAAAAAAAAA2QAlgDIAMgAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVEhS
|
||||||
|
VV9USUVSNQAAAAAAAAACyADIAMgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdXRpbGl0eS10bHZsAAAAAAAAAAA+AAAAAAAAAAAAAAAA
|
||||||
|
AAAAbm9uLWZvY2FsLXRsdmwAAAAAAAD6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
</data>
|
||||||
|
</array>
|
||||||
|
<key>ThermalConfiguration</key>
|
||||||
|
<dict>
|
||||||
|
<key>Domain</key>
|
||||||
|
<dict>
|
||||||
|
<key>CPU</key>
|
||||||
|
<dict>
|
||||||
|
<key>SFIWindow</key>
|
||||||
|
<integer>50000</integer>
|
||||||
|
<key>SFIMaintenance</key>
|
||||||
|
<dict>
|
||||||
|
<key>EffortCurve</key>
|
||||||
|
<string>46=0%,73=67%</string>
|
||||||
|
</dict>
|
||||||
|
<key>SFIDarwinBG</key>
|
||||||
|
<dict>
|
||||||
|
<key>EffortCurve</key>
|
||||||
|
<string>46=0%,73=67%</string>
|
||||||
|
</dict>
|
||||||
|
<key>SFIAppNap</key>
|
||||||
|
<dict>
|
||||||
|
<key>EffortCurve</key>
|
||||||
|
<string>55=0%,73=67%</string>
|
||||||
|
</dict>
|
||||||
|
<key>QOSThermalThresholds</key>
|
||||||
|
<dict>
|
||||||
|
<key>Utility</key>
|
||||||
|
<integer>62</integer>
|
||||||
|
<key>NonFocal</key>
|
||||||
|
<integer>251</integer>
|
||||||
|
</dict>
|
||||||
|
<key>ThermalPressure</key>
|
||||||
|
<dict>
|
||||||
|
<key>Nominal</key>
|
||||||
|
<dict>
|
||||||
|
<key>HighThreshold</key>
|
||||||
|
<integer>65</integer>
|
||||||
|
<key>LowThreshold</key>
|
||||||
|
<integer>0</integer>
|
||||||
|
</dict>
|
||||||
|
<key>Moderate</key>
|
||||||
|
<dict>
|
||||||
|
<key>HighThreshold</key>
|
||||||
|
<integer>120</integer>
|
||||||
|
<key>LowThreshold</key>
|
||||||
|
<integer>50</integer>
|
||||||
|
</dict>
|
||||||
|
<key>Heavy</key>
|
||||||
|
<dict>
|
||||||
|
<key>HighThreshold</key>
|
||||||
|
<integer>200</integer>
|
||||||
|
<key>LowThreshold</key>
|
||||||
|
<integer>90</integer>
|
||||||
|
</dict>
|
||||||
|
<key>Trapping</key>
|
||||||
|
<dict>
|
||||||
|
<key>HighThreshold</key>
|
||||||
|
<integer>250</integer>
|
||||||
|
<key>LowThreshold</key>
|
||||||
|
<integer>180</integer>
|
||||||
|
</dict>
|
||||||
|
<key>Sleeping</key>
|
||||||
|
<dict>
|
||||||
|
<key>HighThreshold</key>
|
||||||
|
<integer>252</integer>
|
||||||
|
<key>LowThreshold</key>
|
||||||
|
<integer>251</integer>
|
||||||
|
</dict>
|
||||||
|
</dict>
|
||||||
|
</dict>
|
||||||
|
<key>GPU</key>
|
||||||
|
<dict/>
|
||||||
|
<key>IO</key>
|
||||||
|
<dict/>
|
||||||
|
</dict>
|
||||||
|
</dict>
|
||||||
|
<key>DarkWakeServices</key>
|
||||||
|
<dict>
|
||||||
|
<key>DarkWakeBackgroundTasks</key>
|
||||||
|
<integer>1</integer>
|
||||||
|
<key>SleepServices</key>
|
||||||
|
<integer>7</integer>
|
||||||
|
<key>SleepServicesModes</key>
|
||||||
|
<dict>
|
||||||
|
<key>ModeA</key>
|
||||||
|
<dict>
|
||||||
|
<key>Expiration</key>
|
||||||
|
<integer>0</integer>
|
||||||
|
<key>BatteryFloor</key>
|
||||||
|
<integer>0</integer>
|
||||||
|
<key>BaseIntervals</key>
|
||||||
|
<dict>
|
||||||
|
<key>AC</key>
|
||||||
|
<dict>
|
||||||
|
<key>BaseSleepInterval</key>
|
||||||
|
<integer>3600</integer>
|
||||||
|
<key>BaseWakeCapInterval</key>
|
||||||
|
<integer>86400</integer>
|
||||||
|
</dict>
|
||||||
|
<key>Battery</key>
|
||||||
|
<dict>
|
||||||
|
<key>BaseSleepInterval</key>
|
||||||
|
<integer>3600</integer>
|
||||||
|
<key>BaseWakeCapInterval</key>
|
||||||
|
<integer>180</integer>
|
||||||
|
</dict>
|
||||||
|
</dict>
|
||||||
|
</dict>
|
||||||
|
</dict>
|
||||||
|
</dict>
|
||||||
|
</dict>
|
||||||
|
</dict>
|
||||||
|
</plist>
|
||||||
File diff suppressed because one or more lines are too long
@@ -0,0 +1,294 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||||
|
<plist version="1.0">
|
||||||
|
<dict>
|
||||||
|
<key>pmspFile</key>
|
||||||
|
<integer>3</integer>
|
||||||
|
<key>IOPlatformPowerProfile</key>
|
||||||
|
<dict>
|
||||||
|
<key>UnifiedSleepSliderPref</key>
|
||||||
|
<true/>
|
||||||
|
<key>enabler</key>
|
||||||
|
<true/>
|
||||||
|
<key>AGPM</key>
|
||||||
|
<true/>
|
||||||
|
<key>ASPM</key>
|
||||||
|
<true/>
|
||||||
|
<key>PublishBatteryFactors</key>
|
||||||
|
<true/>
|
||||||
|
<key>NetworkTimerDelay</key>
|
||||||
|
<integer>900</integer>
|
||||||
|
<key>StandbyDelayHigh</key>
|
||||||
|
<integer>86400</integer>
|
||||||
|
<key>StandbyDelay</key>
|
||||||
|
<integer>10800</integer>
|
||||||
|
<key>StandbyBatteryThreshold</key>
|
||||||
|
<integer>50</integer>
|
||||||
|
<key>AutoPowerOff</key>
|
||||||
|
<true/>
|
||||||
|
<key>ProximityWake</key>
|
||||||
|
<integer>0</integer>
|
||||||
|
<key>IOPlatformSystemSleepPolicy</key>
|
||||||
|
<data>U0xQVAIAEgCEHhIABAAAAAAUAAAABAAABgAAAAAAAAAPJQAAAAAAAIQeEgAEAAAAABgAAAAIAAAF
|
||||||
|
AAAAAAAAAA8lAAAAAAAAhB4SAAQAAAAIEAAACAAAAAUAAAAAAAAADyUAAAAAAAAgAAAAIAAAAAAA
|
||||||
|
AAAAAAAABQAAAAAAAAAPJQAAAAAAAAgAAAAIAAAAAAAAAAAAAAAEAAAAAAAAAAABAAABAAAAAAAE
|
||||||
|
AAAABAAAAAAAAAAAAAUAAAAAAAAADyUAAAAAAAAAAAEAAAABAAAAAAAAAAAABAAAAAAAAAAAAQAA
|
||||||
|
AAAAAMQWAAAAAAAACAAAAAgAAAAFAAAAAAAAAA8lAAAAAAAAxBYQAAAAEAAgQAAAIEAAAAIAAAAI
|
||||||
|
AAAADz0AAAAAAADEFgAAAAAAACAAAAAgAAAABQAAAAAAAAAPJQAAAAAAANQWAAAQAAAAAAAAAAAA
|
||||||
|
AAAFAAAAAAAAAA8lAAAAAAAAxB4SAEQAAAAGEAAABgAAAAMAAAACAAAADz0AAAAAAACEHhIABAAA
|
||||||
|
AAAQAAAAAAAAAgAAAAIAAAAPPQAAAAAAAMQWAAAAAAAAAMAAAADAAAACAAAACAAAAA89AAAAAAAA
|
||||||
|
xBYAAAAAAAAIgAAACIAAAAUAAAAAAAAADyUAAAAAAADEFgAAAAAAAAAAAAAAAAAAAgAAAAEAAAAP
|
||||||
|
PQAAAAAAAEAAAABAAAAABgAAAAYAAAADAAAAAAAAAA81AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIA
|
||||||
|
AAAAAAAADzUAAAAAAAA=</data>
|
||||||
|
<key>FrequencyVectors</key>
|
||||||
|
<array>
|
||||||
|
<data>
|
||||||
|
AgAAAAAAAAACAAAAAAAAAMgAAAAAAAAAGQAAAAAAAAAAZP///////w8AAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAABEAAAABAAAAAAAAADwPAAAAAAAAyAAAAAAAAAABZOgDAAAAAAAAAUvQBwAA
|
||||||
|
AAAAAAEyuAsAAAAAAAABGaAPAAAAAAAAAQD///////8PAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAGQAAAACAAAAAAAAAKwNAAAAAAAAyAAAAAAAAAACZOgDAAAA
|
||||||
|
AAAAAkvQBwAAAAAAAAIyuAsAAAAAAAABMqAPAAAAAAAAARn///////8PAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABkAAAADAAAAAAAAALgLAAAAAAAAyAAAAAAA
|
||||||
|
AAADZPQBAAAAAAAAAkvoAwAAAAAAAAIy0AcAAAAAAAACGbgLAAAAAAAAATKgDwAAAAAAAAEZ////
|
||||||
|
////DwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADIAAAADAAAAAAAAAMQJAAAA
|
||||||
|
AAAAyAAAAAAAAAAEZPQBAAAAAAAABDLoAwAAAAAAAAQZ0AcAAAAAAAACMrgLAAAAAAAAATKgDwAA
|
||||||
|
AAAAAAEZ////////DwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEsAAAADAAAA
|
||||||
|
AAAAANwFAAAAAAAAyAAAAAAAAAAFZOgDAAAAAAAABRnQBwAAAAAAAAIZuAsAAAAAAAABMqAPAAAA
|
||||||
|
AAAAARn///////8PAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AGQAAAADAAAAAAAAAKCGAQAAAAAALAEAAAAAAAAGZPQBAAAAAAAABEvoAwAAAAAAAAQy0AcAAAAA
|
||||||
|
AAAEALgLAAAAAAAAAjKgDwAAAAAAAAIA////////DwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////////DwAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAEJBQ0tHUk9VTkQAAAAAAAAAAWQAZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUkVBTFRJTUVfU0hPUlQAAAIGAAAAABkA
|
||||||
|
GQBkAGQAZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AABLRVJORUwAAAAAAAAAAAAAAAZkAGQAZAB9AJYArwDIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFRIUlVfVElFUjQAAAAAAAAAA2QAlgDIAMgAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVEhS
|
||||||
|
VV9USUVSNQAAAAAAAAACyADIAMgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAaGFyZC1ydC1ucwAAAAAAAAAAAAAACT0AAAAAAAAAAAAA
|
||||||
|
AAAAdWJwYwAAAAAAAAAAAAAAAAEAAABvZmYAAAAAAAAAAAAAAAAAcGVyZi1iaWFzAAAAAAAAAAAA
|
||||||
|
AAAFAAAAAAAAAAAAAAAAAAAAdXRpbGl0eS10bHZsAAAAAAAAAAA1AAAAAAAAAAAAAAAAAAAAbm9u
|
||||||
|
LWZvY2FsLXRsdmwAAAAAAAD6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
</data>
|
||||||
|
</array>
|
||||||
|
<key>ThermalConfiguration</key>
|
||||||
|
<dict>
|
||||||
|
<key>Domain</key>
|
||||||
|
<dict>
|
||||||
|
<key>CPU</key>
|
||||||
|
<dict>
|
||||||
|
<key>SFIWindow</key>
|
||||||
|
<integer>50000</integer>
|
||||||
|
<key>SFIMaintenance</key>
|
||||||
|
<dict>
|
||||||
|
<key>EffortCurve</key>
|
||||||
|
<string>38=0%,67=67%</string>
|
||||||
|
</dict>
|
||||||
|
<key>SFIDarwinBG</key>
|
||||||
|
<dict>
|
||||||
|
<key>EffortCurve</key>
|
||||||
|
<string>38=0%,67=67%</string>
|
||||||
|
</dict>
|
||||||
|
<key>SFIAppNap</key>
|
||||||
|
<dict>
|
||||||
|
<key>EffortCurve</key>
|
||||||
|
<string>47=0%,67=67%</string>
|
||||||
|
</dict>
|
||||||
|
<key>QOSThermalThresholds</key>
|
||||||
|
<dict>
|
||||||
|
<key>Utility</key>
|
||||||
|
<integer>53</integer>
|
||||||
|
<key>NonFocal</key>
|
||||||
|
<integer>251</integer>
|
||||||
|
</dict>
|
||||||
|
<key>ThermalPressure</key>
|
||||||
|
<dict>
|
||||||
|
<key>Nominal</key>
|
||||||
|
<dict>
|
||||||
|
<key>HighThreshold</key>
|
||||||
|
<integer>57</integer>
|
||||||
|
<key>LowThreshold</key>
|
||||||
|
<integer>0</integer>
|
||||||
|
</dict>
|
||||||
|
<key>Moderate</key>
|
||||||
|
<dict>
|
||||||
|
<key>HighThreshold</key>
|
||||||
|
<integer>120</integer>
|
||||||
|
<key>LowThreshold</key>
|
||||||
|
<integer>50</integer>
|
||||||
|
</dict>
|
||||||
|
<key>Heavy</key>
|
||||||
|
<dict>
|
||||||
|
<key>HighThreshold</key>
|
||||||
|
<integer>200</integer>
|
||||||
|
<key>LowThreshold</key>
|
||||||
|
<integer>90</integer>
|
||||||
|
</dict>
|
||||||
|
<key>Trapping</key>
|
||||||
|
<dict>
|
||||||
|
<key>HighThreshold</key>
|
||||||
|
<integer>250</integer>
|
||||||
|
<key>LowThreshold</key>
|
||||||
|
<integer>180</integer>
|
||||||
|
</dict>
|
||||||
|
<key>Sleeping</key>
|
||||||
|
<dict>
|
||||||
|
<key>HighThreshold</key>
|
||||||
|
<integer>252</integer>
|
||||||
|
<key>LowThreshold</key>
|
||||||
|
<integer>251</integer>
|
||||||
|
</dict>
|
||||||
|
</dict>
|
||||||
|
</dict>
|
||||||
|
<key>GPU</key>
|
||||||
|
<dict/>
|
||||||
|
<key>IO</key>
|
||||||
|
<dict/>
|
||||||
|
</dict>
|
||||||
|
</dict>
|
||||||
|
<key>DarkWakeServices</key>
|
||||||
|
<dict>
|
||||||
|
<key>DarkWakeBackgroundTasks</key>
|
||||||
|
<integer>1</integer>
|
||||||
|
<key>SleepServices</key>
|
||||||
|
<integer>7</integer>
|
||||||
|
<key>SleepServicesModes</key>
|
||||||
|
<dict>
|
||||||
|
<key>ModeA</key>
|
||||||
|
<dict>
|
||||||
|
<key>Expiration</key>
|
||||||
|
<integer>0</integer>
|
||||||
|
<key>BatteryFloor</key>
|
||||||
|
<integer>0</integer>
|
||||||
|
<key>BaseIntervals</key>
|
||||||
|
<dict>
|
||||||
|
<key>AC</key>
|
||||||
|
<dict>
|
||||||
|
<key>BaseSleepInterval</key>
|
||||||
|
<integer>3600</integer>
|
||||||
|
<key>BaseWakeCapInterval</key>
|
||||||
|
<integer>86400</integer>
|
||||||
|
</dict>
|
||||||
|
<key>Battery</key>
|
||||||
|
<dict>
|
||||||
|
<key>BaseSleepInterval</key>
|
||||||
|
<integer>3600</integer>
|
||||||
|
<key>BaseWakeCapInterval</key>
|
||||||
|
<integer>180</integer>
|
||||||
|
</dict>
|
||||||
|
</dict>
|
||||||
|
</dict>
|
||||||
|
</dict>
|
||||||
|
</dict>
|
||||||
|
</dict>
|
||||||
|
</dict>
|
||||||
|
</plist>
|
||||||
File diff suppressed because one or more lines are too long
@@ -0,0 +1,294 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||||
|
<plist version="1.0">
|
||||||
|
<dict>
|
||||||
|
<key>pmspFile</key>
|
||||||
|
<integer>3</integer>
|
||||||
|
<key>IOPlatformPowerProfile</key>
|
||||||
|
<dict>
|
||||||
|
<key>UnifiedSleepSliderPref</key>
|
||||||
|
<true/>
|
||||||
|
<key>enabler</key>
|
||||||
|
<true/>
|
||||||
|
<key>AGPM</key>
|
||||||
|
<true/>
|
||||||
|
<key>ASPM</key>
|
||||||
|
<true/>
|
||||||
|
<key>PublishBatteryFactors</key>
|
||||||
|
<true/>
|
||||||
|
<key>NetworkTimerDelay</key>
|
||||||
|
<integer>900</integer>
|
||||||
|
<key>StandbyDelayHigh</key>
|
||||||
|
<integer>86400</integer>
|
||||||
|
<key>StandbyDelay</key>
|
||||||
|
<integer>10800</integer>
|
||||||
|
<key>StandbyBatteryThreshold</key>
|
||||||
|
<integer>50</integer>
|
||||||
|
<key>AutoPowerOff</key>
|
||||||
|
<true/>
|
||||||
|
<key>ProximityWake</key>
|
||||||
|
<integer>0</integer>
|
||||||
|
<key>IOPlatformSystemSleepPolicy</key>
|
||||||
|
<data>U0xQVAIAEgCEHhIABAAAAAAUAAAABAAABgAAAAAAAAAPJQAAAAAAAIQeEgAEAAAAABgAAAAIAAAF
|
||||||
|
AAAAAAAAAA8lAAAAAAAAhB4SAAQAAAAIEAAACAAAAAUAAAAAAAAADyUAAAAAAAAgAAAAIAAAAAAA
|
||||||
|
AAAAAAAABQAAAAAAAAAPJQAAAAAAAAgAAAAIAAAAAAAAAAAAAAAEAAAAAAAAAAABAAABAAAAAAAE
|
||||||
|
AAAABAAAAAAAAAAAAAUAAAAAAAAADyUAAAAAAAAAAAEAAAABAAAAAAAAAAAABAAAAAAAAAAAAQAA
|
||||||
|
AAAAAMQWAAAAAAAACAAAAAgAAAAFAAAAAAAAAA8lAAAAAAAAxBYQAAAAEAAgQAAAIEAAAAIAAAAI
|
||||||
|
AAAADz0AAAAAAADEFgAAAAAAACAAAAAgAAAABQAAAAAAAAAPJQAAAAAAANQWAAAQAAAAAAAAAAAA
|
||||||
|
AAAFAAAAAAAAAA8lAAAAAAAAxB4SAEQAAAAGEAAABgAAAAMAAAACAAAADz0AAAAAAACEHhIABAAA
|
||||||
|
AAAQAAAAAAAAAgAAAAIAAAAPPQAAAAAAAMQWAAAAAAAAAMAAAADAAAACAAAACAAAAA89AAAAAAAA
|
||||||
|
xBYAAAAAAAAIgAAACIAAAAUAAAAAAAAADyUAAAAAAADEFgAAAAAAAAAAAAAAAAAAAgAAAAEAAAAP
|
||||||
|
PQAAAAAAAEAAAABAAAAABgAAAAYAAAADAAAAAAAAAA81AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIA
|
||||||
|
AAAAAAAADzUAAAAAAAA=</data>
|
||||||
|
<key>FrequencyVectors</key>
|
||||||
|
<array>
|
||||||
|
<data>
|
||||||
|
AgAAAAAAAAACAAAAAAAAAMgAAAAAAAAAGQAAAAAAAAAAZP///////w8AAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAABEAAAABAAAAAAAAADwPAAAAAAAAyAAAAAAAAAABZOgDAAAAAAAAAUvQBwAA
|
||||||
|
AAAAAAEyuAsAAAAAAAABGaAPAAAAAAAAAQD///////8PAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAGQAAAACAAAAAAAAAKwNAAAAAAAAyAAAAAAAAAACZOgDAAAA
|
||||||
|
AAAAAkvQBwAAAAAAAAIyuAsAAAAAAAABMqAPAAAAAAAAARn///////8PAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABkAAAADAAAAAAAAALgLAAAAAAAAyAAAAAAA
|
||||||
|
AAADZPQBAAAAAAAAAkvoAwAAAAAAAAIy0AcAAAAAAAACGbgLAAAAAAAAATKgDwAAAAAAAAEZ////
|
||||||
|
////DwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADIAAAADAAAAAAAAAMQJAAAA
|
||||||
|
AAAAyAAAAAAAAAAEZPQBAAAAAAAABDLoAwAAAAAAAAQZ0AcAAAAAAAACMrgLAAAAAAAAATKgDwAA
|
||||||
|
AAAAAAEZ////////DwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEsAAAADAAAA
|
||||||
|
AAAAANwFAAAAAAAAyAAAAAAAAAAFZOgDAAAAAAAABRnQBwAAAAAAAAIZuAsAAAAAAAABMqAPAAAA
|
||||||
|
AAAAARn///////8PAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AGQAAAADAAAAAAAAAKCGAQAAAAAALAEAAAAAAAAGZPQBAAAAAAAABEvoAwAAAAAAAAQy0AcAAAAA
|
||||||
|
AAAEALgLAAAAAAAAAjKgDwAAAAAAAAIA////////DwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////////DwAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAEJBQ0tHUk9VTkQAAAAAAAAAAWQAZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUkVBTFRJTUVfU0hPUlQAAAIGAAAAABkA
|
||||||
|
GQBkAGQAZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AABLRVJORUwAAAAAAAAAAAAAAAZkAGQAZAB9AJYArwDIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFRIUlVfVElFUjQAAAAAAAAAA2QAlgDIAMgAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVEhS
|
||||||
|
VV9USUVSNQAAAAAAAAACyADIAMgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAaGFyZC1ydC1ucwAAAAAAAAAAAAAACT0AAAAAAAAAAAAA
|
||||||
|
AAAAdWJwYwAAAAAAAAAAAAAAAAEAAABvZmYAAAAAAAAAAAAAAAAAcGVyZi1iaWFzAAAAAAAAAAAA
|
||||||
|
AAAFAAAAAAAAAAAAAAAAAAAAdXRpbGl0eS10bHZsAAAAAAAAAAA1AAAAAAAAAAAAAAAAAAAAbm9u
|
||||||
|
LWZvY2FsLXRsdmwAAAAAAAD6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
</data>
|
||||||
|
</array>
|
||||||
|
<key>ThermalConfiguration</key>
|
||||||
|
<dict>
|
||||||
|
<key>Domain</key>
|
||||||
|
<dict>
|
||||||
|
<key>CPU</key>
|
||||||
|
<dict>
|
||||||
|
<key>SFIWindow</key>
|
||||||
|
<integer>50000</integer>
|
||||||
|
<key>SFIMaintenance</key>
|
||||||
|
<dict>
|
||||||
|
<key>EffortCurve</key>
|
||||||
|
<string>38=0%,67=67%</string>
|
||||||
|
</dict>
|
||||||
|
<key>SFIDarwinBG</key>
|
||||||
|
<dict>
|
||||||
|
<key>EffortCurve</key>
|
||||||
|
<string>38=0%,67=67%</string>
|
||||||
|
</dict>
|
||||||
|
<key>SFIAppNap</key>
|
||||||
|
<dict>
|
||||||
|
<key>EffortCurve</key>
|
||||||
|
<string>47=0%,67=67%</string>
|
||||||
|
</dict>
|
||||||
|
<key>QOSThermalThresholds</key>
|
||||||
|
<dict>
|
||||||
|
<key>Utility</key>
|
||||||
|
<integer>53</integer>
|
||||||
|
<key>NonFocal</key>
|
||||||
|
<integer>251</integer>
|
||||||
|
</dict>
|
||||||
|
<key>ThermalPressure</key>
|
||||||
|
<dict>
|
||||||
|
<key>Nominal</key>
|
||||||
|
<dict>
|
||||||
|
<key>HighThreshold</key>
|
||||||
|
<integer>57</integer>
|
||||||
|
<key>LowThreshold</key>
|
||||||
|
<integer>0</integer>
|
||||||
|
</dict>
|
||||||
|
<key>Moderate</key>
|
||||||
|
<dict>
|
||||||
|
<key>HighThreshold</key>
|
||||||
|
<integer>120</integer>
|
||||||
|
<key>LowThreshold</key>
|
||||||
|
<integer>50</integer>
|
||||||
|
</dict>
|
||||||
|
<key>Heavy</key>
|
||||||
|
<dict>
|
||||||
|
<key>HighThreshold</key>
|
||||||
|
<integer>200</integer>
|
||||||
|
<key>LowThreshold</key>
|
||||||
|
<integer>90</integer>
|
||||||
|
</dict>
|
||||||
|
<key>Trapping</key>
|
||||||
|
<dict>
|
||||||
|
<key>HighThreshold</key>
|
||||||
|
<integer>250</integer>
|
||||||
|
<key>LowThreshold</key>
|
||||||
|
<integer>180</integer>
|
||||||
|
</dict>
|
||||||
|
<key>Sleeping</key>
|
||||||
|
<dict>
|
||||||
|
<key>HighThreshold</key>
|
||||||
|
<integer>252</integer>
|
||||||
|
<key>LowThreshold</key>
|
||||||
|
<integer>251</integer>
|
||||||
|
</dict>
|
||||||
|
</dict>
|
||||||
|
</dict>
|
||||||
|
<key>GPU</key>
|
||||||
|
<dict/>
|
||||||
|
<key>IO</key>
|
||||||
|
<dict/>
|
||||||
|
</dict>
|
||||||
|
</dict>
|
||||||
|
<key>DarkWakeServices</key>
|
||||||
|
<dict>
|
||||||
|
<key>DarkWakeBackgroundTasks</key>
|
||||||
|
<integer>1</integer>
|
||||||
|
<key>SleepServices</key>
|
||||||
|
<integer>7</integer>
|
||||||
|
<key>SleepServicesModes</key>
|
||||||
|
<dict>
|
||||||
|
<key>ModeA</key>
|
||||||
|
<dict>
|
||||||
|
<key>Expiration</key>
|
||||||
|
<integer>0</integer>
|
||||||
|
<key>BatteryFloor</key>
|
||||||
|
<integer>0</integer>
|
||||||
|
<key>BaseIntervals</key>
|
||||||
|
<dict>
|
||||||
|
<key>AC</key>
|
||||||
|
<dict>
|
||||||
|
<key>BaseSleepInterval</key>
|
||||||
|
<integer>3600</integer>
|
||||||
|
<key>BaseWakeCapInterval</key>
|
||||||
|
<integer>86400</integer>
|
||||||
|
</dict>
|
||||||
|
<key>Battery</key>
|
||||||
|
<dict>
|
||||||
|
<key>BaseSleepInterval</key>
|
||||||
|
<integer>3600</integer>
|
||||||
|
<key>BaseWakeCapInterval</key>
|
||||||
|
<integer>180</integer>
|
||||||
|
</dict>
|
||||||
|
</dict>
|
||||||
|
</dict>
|
||||||
|
</dict>
|
||||||
|
</dict>
|
||||||
|
</dict>
|
||||||
|
</dict>
|
||||||
|
</plist>
|
||||||
40
payloads/Kexts/Plists/PlatformPlugin/iMac14,4/Info.plist
Normal file
40
payloads/Kexts/Plists/PlatformPlugin/iMac14,4/Info.plist
Normal file
File diff suppressed because one or more lines are too long
@@ -0,0 +1,289 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||||
|
<plist version="1.0">
|
||||||
|
<dict>
|
||||||
|
<key>pmspFile</key>
|
||||||
|
<integer>1</integer>
|
||||||
|
<key>IOPlatformPowerProfile</key>
|
||||||
|
<dict>
|
||||||
|
<key>NetworkTimerDelay</key>
|
||||||
|
<integer>900</integer>
|
||||||
|
<key>StandbyDelayHigh</key>
|
||||||
|
<integer>86400</integer>
|
||||||
|
<key>StandbyDelay</key>
|
||||||
|
<integer>86400</integer>
|
||||||
|
<key>StandbyBatteryThreshold</key>
|
||||||
|
<integer>50</integer>
|
||||||
|
<key>AutoPowerOff</key>
|
||||||
|
<true/>
|
||||||
|
<key>ProximityWake</key>
|
||||||
|
<integer>0</integer>
|
||||||
|
<key>IOPlatformSystemSleepPolicy</key>
|
||||||
|
<data>U0xQVAIAFQAAHhAAAAAAAAAVAAAABQAABgAAAAAAAAAABQAAAAAAACAAAAAgAAAAAAAAAAAAAAAF
|
||||||
|
AAAAAAAAAAABAAAAAAAAAAAEAAAABAAAAAAAAAAAAAYAAAAAAAAAAAUAAAAAAAAAAAEAAAABAAAA
|
||||||
|
AAAAAAAABAAAAAAAAAAAAQAAAAAAAEAeEAAAAAAAGBEAABgBAAAFAAAAAgAAAAAJAAAAAAAAQAYA
|
||||||
|
AAAAAAAYAAAAGAAAAAUAAAAAAAAAAAEAAAAAAABAHhAAAAAAACgRAAAgAQAABQAAAAIAAAAACQAA
|
||||||
|
AAAAAEAGEAAAABAAIEAAACBAAAACAAAACAAAAAANAAAAAAAAQAYQAAAAEAAAwAAAAMAAAAIAAAAI
|
||||||
|
AAAAAA0AAAAAAABABgAAAAAAAAiAAAAIgAAABQAAAAAAAAAAAQAAAAAAAEAGAAAAAAAAKAAAACAA
|
||||||
|
AAAFAAAAAAAAAAABAAAAAAAAUB4QABAAAAAAEQAAAAEAAAUAAAACAAAAAAkAAAAAAABQBgAAEAAA
|
||||||
|
AAAAAAAAAAAABQAAAAAAAAAAAQAAAAAAAAAeEAAAAAAAABkAAAAJAAAGAAAAAAAAAAAFAAAAAAAA
|
||||||
|
AB4QAAAAAAAIEQAACAEAAAYAAAAAAAAAAAUAAAAAAAAAHhAAAAAAAEARAABAAQAABgAAAAAAAAAA
|
||||||
|
BQAAAAAAAEAeEABAAAAABhEAAAYBAAADAAAAAgAAAAANAAAAAAAAQB4QAEAAAAAAEQAAAAEAAAIA
|
||||||
|
AAACAAAAAA0AAAAAAABABgAAAAAAAAAAAAAAAAAAAgAAAAEAAAAADQAAAAAAAEAAAABAAAAABgAA
|
||||||
|
AAYAAAADAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAUAAAAAAAA=</data>
|
||||||
|
<key>InitialPLimit</key>
|
||||||
|
<integer>0</integer>
|
||||||
|
<key>FrequencyVectors</key>
|
||||||
|
<array>
|
||||||
|
<data>
|
||||||
|
AgAAAAAAAAACAAAAAAAAAGQAAAAAAAAAGQAAAAAAAAAAZP///////w8AAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAGQAAAACAAAAAAAAAOgDAAAAAAAAoA8AAAAAAAABZP///////w8AAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAGQAAAADAAAAAAAAAEBCDwAAAAAAoA8AAAAAAAACZP//////
|
||||||
|
/w8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////////
|
||||||
|
DwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAEJBQ0tHUk9VTkQAAAAAAAAAAcgAZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUkVBTFRJTUVfU0hPUlQAAAICAAAAAGQA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAaGFyZC1ydC1ucwAAAAAAAAAAAAAACT0AAAAAAAAAAAAA
|
||||||
|
AAAAdWJwYwAAAAAAAAAAAAAAAAEAAABvZmYAAAAAAAAAAAAAAAAAcGVyZi1iaWFzAAAAAAAAAAAA
|
||||||
|
AAABAAAAAAAAAAAAAAAAAAAAdXRpbGl0eS10bHZsAAAAAAAAAABOAAAAAAAAAAAAAAAAAAAAbm9u
|
||||||
|
LWZvY2FsLXRsdmwAAAAAAAD6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
</data>
|
||||||
|
</array>
|
||||||
|
<key>ThermalConfiguration</key>
|
||||||
|
<dict>
|
||||||
|
<key>Domain</key>
|
||||||
|
<dict>
|
||||||
|
<key>CPU</key>
|
||||||
|
<dict>
|
||||||
|
<key>SFIWindow</key>
|
||||||
|
<integer>50000</integer>
|
||||||
|
<key>SFIMaintenance</key>
|
||||||
|
<dict>
|
||||||
|
<key>EffortCurve</key>
|
||||||
|
<string>40=0%,93=50%</string>
|
||||||
|
</dict>
|
||||||
|
<key>SFIDarwinBG</key>
|
||||||
|
<dict>
|
||||||
|
<key>EffortCurve</key>
|
||||||
|
<string>40=0%,93=50%</string>
|
||||||
|
</dict>
|
||||||
|
<key>SFIAppNap</key>
|
||||||
|
<dict>
|
||||||
|
<key>EffortCurve</key>
|
||||||
|
<string>40=0%,93=50%</string>
|
||||||
|
</dict>
|
||||||
|
<key>QOSThermalThresholds</key>
|
||||||
|
<dict>
|
||||||
|
<key>Utility</key>
|
||||||
|
<integer>251</integer>
|
||||||
|
<key>NonFocal</key>
|
||||||
|
<integer>251</integer>
|
||||||
|
</dict>
|
||||||
|
<key>ThermalPressure</key>
|
||||||
|
<dict>
|
||||||
|
<key>Nominal</key>
|
||||||
|
<dict>
|
||||||
|
<key>HighThreshold</key>
|
||||||
|
<integer>88</integer>
|
||||||
|
<key>LowThreshold</key>
|
||||||
|
<integer>0</integer>
|
||||||
|
</dict>
|
||||||
|
<key>Moderate</key>
|
||||||
|
<dict>
|
||||||
|
<key>HighThreshold</key>
|
||||||
|
<integer>120</integer>
|
||||||
|
<key>LowThreshold</key>
|
||||||
|
<integer>50</integer>
|
||||||
|
</dict>
|
||||||
|
<key>Heavy</key>
|
||||||
|
<dict>
|
||||||
|
<key>HighThreshold</key>
|
||||||
|
<integer>200</integer>
|
||||||
|
<key>LowThreshold</key>
|
||||||
|
<integer>90</integer>
|
||||||
|
</dict>
|
||||||
|
<key>Trapping</key>
|
||||||
|
<dict>
|
||||||
|
<key>HighThreshold</key>
|
||||||
|
<integer>250</integer>
|
||||||
|
<key>LowThreshold</key>
|
||||||
|
<integer>180</integer>
|
||||||
|
</dict>
|
||||||
|
<key>Sleeping</key>
|
||||||
|
<dict>
|
||||||
|
<key>HighThreshold</key>
|
||||||
|
<integer>252</integer>
|
||||||
|
<key>LowThreshold</key>
|
||||||
|
<integer>251</integer>
|
||||||
|
</dict>
|
||||||
|
</dict>
|
||||||
|
</dict>
|
||||||
|
<key>GPU</key>
|
||||||
|
<dict/>
|
||||||
|
<key>IO</key>
|
||||||
|
<dict/>
|
||||||
|
</dict>
|
||||||
|
</dict>
|
||||||
|
<key>UnifiedSleepSliderPref</key>
|
||||||
|
<true/>
|
||||||
|
<key>DarkWakeServices</key>
|
||||||
|
<dict>
|
||||||
|
<key>DarkWakeBackgroundTasks</key>
|
||||||
|
<integer>1</integer>
|
||||||
|
<key>SleepServices</key>
|
||||||
|
<integer>7</integer>
|
||||||
|
<key>SleepServicesModes</key>
|
||||||
|
<dict>
|
||||||
|
<key>ModeA</key>
|
||||||
|
<dict>
|
||||||
|
<key>Expiration</key>
|
||||||
|
<integer>0</integer>
|
||||||
|
<key>BatteryFloor</key>
|
||||||
|
<integer>0</integer>
|
||||||
|
<key>BaseIntervals</key>
|
||||||
|
<dict>
|
||||||
|
<key>AC</key>
|
||||||
|
<dict>
|
||||||
|
<key>BaseSleepInterval</key>
|
||||||
|
<integer>3600</integer>
|
||||||
|
<key>BaseWakeCapInterval</key>
|
||||||
|
<integer>86400</integer>
|
||||||
|
</dict>
|
||||||
|
<key>Battery</key>
|
||||||
|
<dict>
|
||||||
|
<key>BaseSleepInterval</key>
|
||||||
|
<integer>3600</integer>
|
||||||
|
<key>BaseWakeCapInterval</key>
|
||||||
|
<integer>180</integer>
|
||||||
|
</dict>
|
||||||
|
</dict>
|
||||||
|
</dict>
|
||||||
|
</dict>
|
||||||
|
</dict>
|
||||||
|
</dict>
|
||||||
|
</dict>
|
||||||
|
</plist>
|
||||||
40
payloads/Kexts/Plists/PlatformPlugin/iMac15,1/Info.plist
Normal file
40
payloads/Kexts/Plists/PlatformPlugin/iMac15,1/Info.plist
Normal file
File diff suppressed because one or more lines are too long
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user