Last active
August 13, 2024 08:20
-
-
Save Siguza/0331c183c8c59e4850cd0b62fd501424 to your computer and use it in GitHub Desktop.
newstyle OTA
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env zsh | |
set -e; | |
set +m; # Job control would've been nice, but manual round robin it is, sigh. | |
if [ -z "${ZSH_VERSION+x}" ]; then | |
echo 'Try again with zsh.'; | |
exit 1; | |
fi; | |
if ! hash curl &>/dev/null; then | |
echo 'Need curl.'; | |
exit 1; | |
fi; | |
if ! hash jq &>/dev/null; then | |
echo 'Need jq.'; | |
exit 1; | |
fi; | |
num_workers=256; | |
debug=false; | |
incr=false; | |
fatal=true; | |
legacy=true; | |
test=false; | |
rsr=false; | |
version=''; | |
devices=(); | |
filter='all'; | |
while [ "$#" -gt 0 ]; do | |
case "$1" in | |
'-d') # debug | |
debug=true; | |
;; | |
'-i') # incremental | |
incr=true; | |
;; | |
'-l') # latest | |
legacy=false; | |
;; | |
'-n') # non-fatal | |
fatal=false; | |
;; | |
'-t') # test | |
test=true; | |
;; | |
'-r') # rsr | |
rsr=true; | |
;; | |
'ios'|'tvos'|'watchos'|'audioos'|'macos') | |
filter="$1"; | |
;; | |
[1-9]*) | |
version="$1"; | |
;; | |
*) | |
devices+=("$1"); | |
;; | |
esac; | |
shift; | |
done; | |
dir="$(mktemp -d)"; | |
echo "$dir" >&2; | |
# Apple Root CA is not universally trusted. | |
cat >"$dir/AppleCA.pem" <<'EOF' | |
-----BEGIN CERTIFICATE----- | |
MIIEuzCCA6OgAwIBAgIBAjANBgkqhkiG9w0BAQUFADBiMQswCQYDVQQGEwJVUzET | |
MBEGA1UEChMKQXBwbGUgSW5jLjEmMCQGA1UECxMdQXBwbGUgQ2VydGlmaWNhdGlv | |
biBBdXRob3JpdHkxFjAUBgNVBAMTDUFwcGxlIFJvb3QgQ0EwHhcNMDYwNDI1MjE0 | |
MDM2WhcNMzUwMjA5MjE0MDM2WjBiMQswCQYDVQQGEwJVUzETMBEGA1UEChMKQXBw | |
bGUgSW5jLjEmMCQGA1UECxMdQXBwbGUgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkx | |
FjAUBgNVBAMTDUFwcGxlIFJvb3QgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAw | |
ggEKAoIBAQDkkakJH5HbHkdQ6wXtXnmELes2oldMVeyLGYne+Uts9QerIjAC6Bg+ | |
+FAJ039BqJj50cpmnCRrEdCju+QbKsMflZ56DKRHi1vUFjczy8QPTc4UadHJGXL1 | |
XQ7Vf1+b8iUDulWPTV0N8WQ1IxVLFVkds5T39pyez1C6wVhQZ48ItCD3y6wsIG9w | |
tj8BMIy3Q88PnT3zK0koGsj+zrW5DtleHNbLPbU6rfQPDgCSC7EhFi501TwN22IW | |
q6NxkkdTVcGvL0Gz+PvjcM3mo0xFfh9Ma1CWQYnEdGILEINBhzOKgbEwWOxaBDKM | |
aLOPHd5lc/9nXmW8Sdh2nzMUZaF3lMktAgMBAAGjggF6MIIBdjAOBgNVHQ8BAf8E | |
BAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUK9BpR5R2Cf70a40uQKb3 | |
R01/CF4wHwYDVR0jBBgwFoAUK9BpR5R2Cf70a40uQKb3R01/CF4wggERBgNVHSAE | |
ggEIMIIBBDCCAQAGCSqGSIb3Y2QFATCB8jAqBggrBgEFBQcCARYeaHR0cHM6Ly93 | |
d3cuYXBwbGUuY29tL2FwcGxlY2EvMIHDBggrBgEFBQcCAjCBthqBs1JlbGlhbmNl | |
IG9uIHRoaXMgY2VydGlmaWNhdGUgYnkgYW55IHBhcnR5IGFzc3VtZXMgYWNjZXB0 | |
YW5jZSBvZiB0aGUgdGhlbiBhcHBsaWNhYmxlIHN0YW5kYXJkIHRlcm1zIGFuZCBj | |
b25kaXRpb25zIG9mIHVzZSwgY2VydGlmaWNhdGUgcG9saWN5IGFuZCBjZXJ0aWZp | |
Y2F0aW9uIHByYWN0aWNlIHN0YXRlbWVudHMuMA0GCSqGSIb3DQEBBQUAA4IBAQBc | |
NplMLXi37Yyb3PN3m/J20ncwT8EfhYOFG5k9RzfyqZtAjizUsZAS2L70c5vu0mQP | |
y3lPNNiiPvl4/2vIB+x9OYOLUyDTOMSxv5pPCmv/K/xZpwUJfBdAVhEedNO3iyM7 | |
R6PVbyTi69G3cN8PReEnyvFteO3ntRcXqNx+IjXKJdXZD9Zr1KIkIxH3oayPc4Fg | |
xhtbCS+SsvhESPBgOJ4V9T0mZyCKM2r3DYLP3uujL/lTaltkwGMzd/c6ByxW69oP | |
IQ7aunMZT7XZNn/Bh1XZp5m5MkL72NVxnn6hUrcbvZNCJBIqxw8dtk2cXmPIS4AX | |
UKqK1drk/NAJBzewdXUh | |
-----END CERTIFICATE----- | |
EOF | |
# ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- | |
iOS_device=(); | |
iOS_model=(); | |
iOS_version=(); | |
iOS_build=(); | |
display_device=(); | |
display_model=(); | |
idevice() # device model | |
{ | |
iOS_device+=("$1"); | |
iOS_model+=("$2"); | |
} | |
ios() # version build | |
{ | |
iOS_version+=("$1"); | |
iOS_build+=("$2"); | |
} | |
display() # device model | |
{ | |
display_device+=("$1"); | |
display_model+=("$2"); | |
} | |
if ! $rsr; then | |
idevice 'iPhone6,1' 'N51AP' # iPhone 5s | |
idevice 'iPhone6,2' 'N53AP' # iPhone 5s | |
idevice 'iPhone7,1' 'N56AP' # iPhone 6+ | |
idevice 'iPhone7,2' 'N61AP' # iPhone 6 | |
idevice 'iPhone8,1' 'N71AP' # iPhone 6s | |
idevice 'iPhone8,1' 'N71mAP' # iPhone 6s | |
idevice 'iPhone8,2' 'N66AP' # iPhone 6s+ | |
idevice 'iPhone8,2' 'N66mAP' # iPhone 6s+ | |
idevice 'iPhone8,4' 'N69AP' # iPhone SE | |
idevice 'iPhone8,4' 'N69uAP' # iPhone SE | |
idevice 'iPhone9,1' 'D10AP' # iPhone 7 | |
idevice 'iPhone9,2' 'D11AP' # iPhone 7+ | |
idevice 'iPhone9,3' 'D101AP' # iPhone 7 | |
idevice 'iPhone9,4' 'D111AP' # iPhone 7+ | |
fi; | |
idevice 'iPhone10,1' 'D20AP' # iPhone 8 | |
idevice 'iPhone10,1' 'D20AAP' # iPhone 8 | |
idevice 'iPhone10,2' 'D21AP' # iPhone 8+ | |
idevice 'iPhone10,2' 'D21AAP' # iPhone 8+ | |
idevice 'iPhone10,3' 'D22AP' # iPhone X | |
idevice 'iPhone10,4' 'D201AP' # iPhone 8 | |
idevice 'iPhone10,4' 'D201AAP' # iPhone 8 | |
idevice 'iPhone10,5' 'D211AP' # iPhone 8+ | |
idevice 'iPhone10,5' 'D211AAP' # iPhone 8+ | |
idevice 'iPhone10,6' 'D221AP' # iPhone X | |
idevice 'iPhone11,2' 'D321AP' # iPhone XS | |
idevice 'iPhone11,4' 'D331AP' # iPhone XS Max | |
idevice 'iPhone11,6' 'D331pAP' # iPhone XS Max | |
idevice 'iPhone11,8' 'N841AP' # iPhone XR | |
idevice 'iPhone12,1' 'N104AP' # iPhone 11 | |
idevice 'iPhone12,3' 'D421AP' # iPhone 11 Pro | |
idevice 'iPhone12,5' 'D431AP' # iPhone 11 Pro Max | |
idevice 'iPhone12,8' 'D79AP' # iPhone SE 2 | |
idevice 'iPhone13,1' 'D52gAP' # iPhone 12 mini | |
idevice 'iPhone13,2' 'D53gAP' # iPhone 12 | |
idevice 'iPhone13,3' 'D53pAP' # iPhone 12 Pro | |
idevice 'iPhone13,4' 'D54pAP' # iPhone 12 Pro Max | |
idevice 'iPhone14,2' 'D63AP' # iPhone 13 Pro | |
idevice 'iPhone14,3' 'D64AP' # iPhone 13 Pro Max | |
idevice 'iPhone14,4' 'D16AP' # iPhone 13 mini | |
idevice 'iPhone14,5' 'D17AP' # iPhone 13 | |
idevice 'iPhone14,6' 'D49AP' # iPhone SE 3 | |
idevice 'iPhone14,7' 'D27AP' # iPhone 14 | |
idevice 'iPhone14,8' 'D28AP' # iPhone 14 Plus | |
idevice 'iPhone15,2' 'D73AP' # iPhone 14 Pro | |
idevice 'iPhone15,3' 'D74AP' # iPhone 14 Pro Max | |
idevice 'iPhone15,4' 'D37AP' # iPhone 15 | |
idevice 'iPhone15,5' 'D38AP' # iPhone 15 Plus | |
idevice 'iPhone16,1' 'D83AP' # iPhone 15 Pro | |
idevice 'iPhone16,2' 'D84AP' # iPhone 15 Pro Max | |
if ! $rsr; then | |
idevice 'iPod7,1' 'N102AP' # iPod touch 6 | |
idevice 'iPod9,1' 'N112AP' # iPod touch 7 | |
fi; | |
idevice 'iPad6,11' 'J71sAP' # iPad 5 | |
idevice 'iPad6,11' 'J71tAP' # iPad 5 | |
idevice 'iPad6,12' 'J72sAP' # iPad 5 | |
idevice 'iPad6,12' 'J72tAP' # iPad 5 | |
idevice 'iPad7,5' 'J71bAP' # iPad 6 | |
idevice 'iPad7,6' 'J72bAP' # iPad 6 | |
idevice 'iPad7,11' 'J171AP' # iPad 7 | |
idevice 'iPad7,12' 'J172AP' # iPad 7 | |
idevice 'iPad11,6' 'J171aAP' # iPad 8 | |
idevice 'iPad11,7' 'J172aAP' # iPad 8 | |
idevice 'iPad12,1' 'J181AP' # iPad 9 | |
idevice 'iPad12,2' 'J182AP' # iPad 9 | |
idevice 'iPad13,18' 'J271AP' # iPad 10 | |
idevice 'iPad13,19' 'J272AP' # iPad 10 | |
if ! $rsr; then | |
idevice 'iPad4,1' 'J71AP' # iPad Air 1 | |
idevice 'iPad4,2' 'J72AP' # iPad Air 1 | |
idevice 'iPad4,3' 'J73AP' # iPad Air 1 | |
idevice 'iPad5,3' 'J81AP' # iPad Air 2 | |
idevice 'iPad5,4' 'J82AP' # iPad Air 2 | |
fi; | |
idevice 'iPad11,3' 'J217AP' # iPad Air 3 | |
idevice 'iPad11,4' 'J218AP' # iPad Air 3 | |
idevice 'iPad13,1' 'J307AP' # iPad Air 4 | |
idevice 'iPad13,2' 'J308AP' # iPad Air 4 | |
idevice 'iPad13,16' 'J407AP' # iPad Air 5 | |
idevice 'iPad13,17' 'J408AP' # iPad Air 5 | |
idevice 'iPad14,8' 'J507AP' # iPad Air 6 (11.0") | |
idevice 'iPad14,9' 'J508AP' # iPad Air 6 (11.0") | |
idevice 'iPad14,10' 'J537AP' # iPad Air 6 (13.0") | |
idevice 'iPad14,11' 'J538AP' # iPad Air 6 (13.0") | |
if ! $rsr; then | |
idevice 'iPad4,4' 'J85AP' # iPad mini 2 | |
idevice 'iPad4,5' 'J86AP' # iPad mini 2 | |
idevice 'iPad4,6' 'J87AP' # iPad mini 2 | |
idevice 'iPad4,7' 'J85mAP' # iPad mini 3 | |
idevice 'iPad4,8' 'J86mAP' # iPad mini 3 | |
idevice 'iPad4,9' 'J87mAP' # iPad mini 3 | |
idevice 'iPad5,1' 'J96AP' # iPad mini 4 | |
idevice 'iPad5,2' 'J97AP' # iPad mini 4 | |
fi; | |
idevice 'iPad11,1' 'J210AP' # iPad mini 5 | |
idevice 'iPad11,2' 'J211AP' # iPad mini 5 | |
idevice 'iPad14,1' 'J310AP' # iPad mini 6 | |
idevice 'iPad14,2' 'J311AP' # iPad mini 6 | |
idevice 'iPad6,3' 'J127AP' # iPad Pro 1 (9.7") | |
idevice 'iPad6,4' 'J128AP' # iPad Pro 1 (9.7") | |
idevice 'iPad6,7' 'J98aAP' # iPad Pro 1 (12.9") | |
idevice 'iPad6,8' 'J99aAP' # iPad Pro 1 (12.9") | |
idevice 'iPad7,1' 'J120AP' # iPad Pro 2 (12.9") | |
idevice 'iPad7,2' 'J121AP' # iPad Pro 2 (12.9") | |
idevice 'iPad7,3' 'J207AP' # iPad Pro 2 (10.5") | |
idevice 'iPad7,4' 'J208AP' # iPad Pro 2 (10.5") | |
idevice 'iPad8,1' 'J317AP' # iPad Pro 3 (11.0") | |
idevice 'iPad8,2' 'J317xAP' # iPad Pro 3 (11.0") | |
idevice 'iPad8,3' 'J318AP' # iPad Pro 3 (11.0") | |
idevice 'iPad8,4' 'J318xAP' # iPad Pro 3 (11.0") | |
idevice 'iPad8,5' 'J320AP' # iPad Pro 3 (12.9") | |
idevice 'iPad8,6' 'J320xAP' # iPad Pro 3 (12.9") | |
idevice 'iPad8,7' 'J321AP' # iPad Pro 3 (12.9") | |
idevice 'iPad8,8' 'J321xAP' # iPad Pro 3 (12.9") | |
idevice 'iPad8,9' 'J417AP' # iPad Pro 4 (11.0") | |
idevice 'iPad8,10' 'J418AP' # iPad Pro 4 (11.0") | |
idevice 'iPad8,11' 'J420AP' # iPad Pro 4 (12.9") | |
idevice 'iPad8,12' 'J421AP' # iPad Pro 4 (12.9") | |
idevice 'iPad13,4' 'J517AP' # iPad Pro 5 (11.0") | |
idevice 'iPad13,5' 'J517xAP' # iPad Pro 5 (11.0") | |
idevice 'iPad13,6' 'J518AP' # iPad Pro 5 (11.0") | |
idevice 'iPad13,7' 'J518xAP' # iPad Pro 5 (11.0") | |
idevice 'iPad13,8' 'J522AP' # iPad Pro 5 (12.9") | |
idevice 'iPad13,9' 'J522xAP' # iPad Pro 5 (12.9") | |
idevice 'iPad13,10' 'J523AP' # iPad Pro 5 (12.9") | |
idevice 'iPad13,11' 'J523xAP' # iPad Pro 5 (12.9") | |
idevice 'iPad14,3' 'J617AP' # iPad Pro 6 (11.0") | |
idevice 'iPad14,4' 'J618AP' # iPad Pro 6 (11.0") | |
idevice 'iPad14,5' 'J620AP' # iPad Pro 6 (12.9") | |
idevice 'iPad14,6' 'J621AP' # iPad Pro 6 (12.9") | |
idevice 'iPad16,3' 'J717AP' # iPad Pro 7 (11.0") | |
idevice 'iPad16,4' 'J718AP' # iPad Pro 7 (11.0") | |
idevice 'iPad16,5' 'J720AP' # iPad Pro 7 (13.0") | |
idevice 'iPad16,6' 'J721AP' # iPad Pro 7 (13.0") | |
# Bruh | |
display 'AppleDisplay2,1' 'J327AP' # Studio Display | |
if ! $rsr; then | |
ios '0' '0' | |
fi; | |
if $incr && ! $rsr; then | |
ios '10.0' '14A5261v' # beta 1 | |
ios '10.0' '14A5297c' # beta 2 | |
ios '10.0' '14A5309d' # beta 3 | |
ios '10.0' '14A5322e' # beta 4 | |
ios '10.0' '14A5335b' # beta 5 | |
ios '10.0' '14A5341a' # beta 6 | |
ios '10.0' '14A5345a' # beta 7 | |
ios '10.0' '14A5346a' # beta 8 | |
ios '10.0' '14A346' | |
ios '10.0.1' '14A403' | |
ios '10.0.2' '14A456' | |
ios '10.0.3' '14A551' | |
ios '10.1' '14B5072' | |
ios '10.1' '14B55c' # beta 1 | |
ios '10.1' '14B67' # beta 2 | |
ios '10.1' '14B71' # beta 3 | |
ios '10.1' '14B72b' # beta 4 | |
ios '10.1' '14B72c' # beta 5 | |
ios '10.1' '14B72' | |
ios '10.1.1' '14B100' | |
ios '10.1.1' '14B150' | |
ios '10.2' '14C5062e' # beta 1 | |
ios '10.2' '14C5069c' # beta 2 | |
ios '10.2' '14C5077b' # beta 3 | |
ios '10.2' '14C82' # beta 4 | |
ios '10.2' '14C89' # beta 5 | |
ios '10.2' '14C90' # beta 6 | |
ios '10.2' '14C91' # beta 6 | |
ios '10.2' '14C92' | |
ios '10.2.1' '14D10' # beta 1 | |
ios '10.2.1' '14D15' # beta 2 | |
ios '10.2.1' '14D23' # beta 3 | |
ios '10.2.1' '14D27' | |
ios '10.3' '14E5230e' # beta 1 | |
ios '10.3' '14E5239e' # beta 2 | |
ios '10.3' '14E5249d' # beta 3 | |
ios '10.3' '14E5260b' # beta 4 | |
ios '10.3' '14E5269a' # beta 5 | |
ios '10.3' '14E5273a' # beta 6 | |
ios '10.3' '14E5277a' # beta 7 | |
ios '10.3' '14E277' | |
ios '10.3.1' '14E304' | |
ios '10.3.2' '14F5065b' # beta 1 | |
ios '10.3.2' '14F5075a' # beta 2 | |
ios '10.3.2' '14F5080a' # beta 3 | |
ios '10.3.2' '14F5086a' # beta 4 | |
ios '10.3.2' '14F5089a' # beta 5 | |
ios '10.3.2' '14F89' | |
ios '10.3.2' '14F90' | |
ios '10.3.2' '14F91' | |
ios '10.3.2' '14F8089' | |
ios '10.3.3' '14G5028a' # beta 1 | |
ios '10.3.3' '14G5037b' # beta 2 | |
ios '10.3.3' '14G5047a' # beta 3 | |
ios '10.3.3' '14G5053a' # beta 4 | |
ios '10.3.3' '14G5057a' # beta 5 | |
ios '10.3.3' '14G57' # beta 6 | |
ios '10.3.3' '14G58' # beta 6 | |
ios '10.3.3' '14G60' | |
ios '10.3.3' '14G61' | |
ios '11.0' '15A5278f' # beta 1 | |
ios '11.0' '15A5304i' # beta 2 | |
ios '11.0' '15A5304j' # beta 2 | |
ios '11.0' '15A5318g' # beta 3 | |
ios '11.0' '15A5327g' # beta 4 | |
ios '11.0' '15A5341f' # beta 5 | |
ios '11.0' '15A5354b' # beta 6 | |
ios '11.0' '15A5362a' # beta 7 | |
ios '11.0' '15A5368a' # beta 8 | |
ios '11.0' '15A5370a' # beta 9 | |
ios '11.0' '15A5372a' # beta 10 | |
ios '11.0' '15A372' | |
ios '11.0.1' '15A402' | |
ios '11.0.1' '15A403' | |
ios '11.0.2' '15A421' | |
ios '11.0.3' '15A432' | |
ios '11.1' '15B5066f' # beta 1 | |
ios '11.1' '15B5078e' # beta 2 | |
ios '11.1' '15B5086a' # beta 3 | |
ios '11.1' '15B92' # beta 4 | |
ios '11.1' '15B93' | |
ios '11.1' '15B101' | |
ios '11.1.1' '15B150' | |
ios '11.1.2' '15B202' | |
ios '11.2' '15C5092b' # beta 1 | |
ios '11.2' '15C5097d' # beta 2 | |
ios '11.2' '15C5107a' # beta 3 | |
ios '11.2' '15C5110b' # beta 4 | |
ios '11.2' '15C5111a' # beta 5 | |
ios '11.2' '15C114' | |
ios '11.2.1' '15C153' | |
ios '11.2.2' '15C202' | |
ios '11.2.5' '15D5037e' # beta 1 | |
ios '11.2.5' '15D5046b' # beta 2 | |
ios '11.2.5' '15D5049a' # beta 3 | |
ios '11.2.5' '15D5054a' # beta 4 | |
ios '11.2.5' '15D5057a' # beta 5 | |
ios '11.2.5' '15D5059a' # beta 6 | |
ios '11.2.5' '15D60' | |
ios '11.2.6' '15D100' | |
ios '11.3' '15E5167f' # beta 1 | |
ios '11.3' '15E5178f' # beta 2 | |
ios '11.3' '15E5189f' # beta 3 | |
ios '11.3' '15E5201e' # beta 4 | |
ios '11.3' '15E5211a' # beta 5 | |
ios '11.3' '15E5216a' # beta 6 | |
ios '11.3' '15E216' | |
ios '11.3' '15E218' | |
ios '11.3.1' '15E302' | |
ios '11.4' '15F5037c' # beta 1 | |
ios '11.4' '15F5049c' # beta 2 | |
ios '11.4' '15F5061d' # beta 3 | |
ios '11.4' '15F5061e' # beta 3 | |
ios '11.4' '15F5071a' # beta 4 | |
ios '11.4' '15F5077a' # beta 5 | |
ios '11.4' '15F5079a' # beta 6 | |
ios '11.4' '15F79' | |
ios '11.4.1' '15G5054c' # beta 1 | |
ios '11.4.1' '15G5063b' # beta 2 | |
ios '11.4.1' '15G5072a' # beta 3 | |
ios '11.4.1' '15G5074a' # beta 4 | |
ios '11.4.1' '15G5077a' # beta 5 | |
ios '11.4.1' '15G77' | |
ios '12.0' '16A5288q' # beta 1 | |
ios '12.0' '16A5308e' # beta 2 | |
ios '12.0' '16A5318d' # beta 3 | |
ios '12.0' '16A5327f' # beta 4 | |
ios '12.0' '16A5339e' # beta 5 | |
ios '12.0' '16A5345f' # beta 6 | |
ios '12.0' '16A5354b' # beta 7 | |
ios '12.0' '16A5357b' # beta 8 | |
ios '12.0' '16A5362a' # beta 9 | |
ios '12.0' '16A5364a' # beta 10 | |
ios '12.0' '16A5365b' # beta 11 | |
ios '12.0' '16A5366a' # beta 12 | |
ios '12.0' '16A366' | |
ios '12.0' '16A367' # preinstalled | |
ios '12.0.1' '16A404' | |
ios '12.0.1' '16A405' | |
ios '12.1' '16B5059d' # beta 1 | |
ios '12.1' '16B5068i' # beta 2 | |
ios '12.1' '16B5077c' # beta 3 | |
ios '12.1' '16B5084a' # beta 4 | |
ios '12.1' '16B5089b' # beta 5 | |
ios '12.1' '16B92' | |
ios '12.1' '16B93' | |
ios '12.1' '16B94' | |
ios '12.1.1' '16C5036c' # beta 1 | |
ios '12.1.1' '16C5043b' # beta 2 | |
ios '12.1.1' '16C5050a' # beta 3 | |
ios '12.1.1' '16C50' | |
ios '12.1.2' '16D5024a' # beta 1 | |
ios '12.1.2' '16C101' | |
ios '12.1.2' '16C104' | |
ios '12.1.3' '16D5032a' # beta 2 | |
ios '12.1.3' '16D5037a' # beta 3 | |
ios '12.1.3' '16D5039a' # beta 4 | |
ios '12.1.3' '16D39' | |
ios '12.1.3' '16D40' | |
ios '12.1.4' '16D57' | |
ios '12.2' '16E5181f' # beta 1 | |
ios '12.2' '16E5191d' # beta 2 | |
ios '12.2' '16E5201e' # beta 3 | |
ios '12.2' '16E5212f' # beta 4 | |
ios '12.2' '16E5223a' # beta 5 | |
ios '12.2' '16E5227a' # beta 6 | |
ios '12.2' '16E227' | |
ios '12.3' '16F5117h' # beta 1 | |
ios '12.3' '16F5129d' # beta 2 | |
ios '12.3' '16F5139e' # beta 3 | |
ios '12.3' '16F5148a' # beta 4 | |
ios '12.3' '16F5155a' # beta 5 | |
ios '12.3' '16F5156a' # beta 6 | |
ios '12.3' '16F156' | |
ios '12.3.1' '16F203' | |
ios '12.3.1' '16F8202' | |
ios '12.3.2' '16F250' | |
ios '12.4' '16G5027g' # beta 1 | |
ios '12.4' '16G5027i' # beta 2 | |
ios '12.4' '16G5038d' # beta 3 | |
ios '12.4' '16G5046d' # beta 4 | |
ios '12.4' '16G5056d' # beta 5 | |
ios '12.4' '16G5069a' # beta 6 | |
ios '12.4' '16G5077a' # beta 7 | |
ios '12.4' '16G77' | |
ios '12.4.1' '16G102' | |
ios '12.4.2' '16G114' | |
ios '12.4.3' '16G130' | |
ios '12.4.4' '16G140' | |
ios '12.4.5' '16G161' | |
ios '12.4.6' '16G183' | |
ios '12.4.7' '16G192' | |
ios '12.4.8' '16G201' | |
ios '12.4.9' '16H5' | |
ios '12.5' '16H20' | |
ios '12.5.1' '16H22' | |
ios '12.5.2' '16H30' | |
ios '12.5.3' '16H41' | |
ios '12.5.4' '16H50' | |
ios '12.5.5' '16H62' | |
ios '12.5.6' '16H71' | |
ios '12.5.7' '16H81' | |
ios '13.0' '17A5492t' # beta 1 | |
ios '13.0' '17A5508m' # beta 2 | |
ios '13.0' '17A5522f' # beta 3 | |
ios '13.0' '17A5522g' # beta 3 | |
ios '13.0' '17A5534f' # beta 4 | |
ios '13.0' '17A5547d' # beta 5 | |
ios '13.0' '17A5556d' # beta 6 | |
ios '13.0' '17A5565b' # beta 7 | |
ios '13.0' '17A5572a' # beta 8 | |
ios '13.0' '17A577' | |
ios '13.1' '17A5821e' # beta 1 | |
ios '13.1' '17A5831c' # beta 2 | |
ios '13.1' '17A5837a' # beta 3 | |
ios '13.1' '17A5844a' # beta 4 | |
ios '13.1' '17A5844b' # beta 4 | |
ios '13.1' '17A844' | |
ios '13.1.1' '17A854' | |
ios '13.1.2' '17A860' | |
ios '13.1.2' '17A861' | |
ios '13.1.3' '17A878' | |
ios '13.2' '17B5059g' | |
ios '13.2' '17B5068e' | |
ios '13.2' '17B5077a' | |
ios '13.2' '17B5084a' | |
ios '13.2' '17B84' | |
ios '13.2.2' '17B102' | |
ios '13.2.3' '17B111' | |
ios '13.3' '17C5032d' # beta 1 | |
ios '13.3' '17C5038a' # beta 2 | |
ios '13.3' '17C5046a' # beta 3 | |
ios '13.3' '17C5053a' # beta 4 | |
ios '13.3' '17C54' | |
ios '13.3.1' '17D5026c' # beta 1 | |
ios '13.3.1' '17D5044a' # beta 2 | |
ios '13.3.1' '17D5050a' # beta 3 | |
ios '13.3.1' '17D50' | |
ios '13.4' '17E5223h' # beta 1 | |
ios '13.4' '17E5233g' # beta 2 | |
ios '13.4' '17E5241d' # beta 3 | |
ios '13.4' '17E5249a' # beta 4 | |
ios '13.4' '17E5255a' # beta 5 | |
ios '13.4' '17E255' | |
ios '13.4' '17E8255' # preinstalled | |
ios '13.4.1' '17E262' | |
ios '13.4.1' '17E8258' | |
ios '13.4.5' '17F5034c' # beta 1 | |
ios '13.4.5' '17F5044d' # beta 2 | |
ios '13.5' '17F5054h' # beta 3 | |
ios '13.5' '17F5065a' # beta 4 | |
ios '13.5' '17F75' | |
ios '13.5.1' '17F80' | |
ios '13.5.5' '17G5035d' # beta 1 | |
ios '13.6' '17G5045c' # beta 2 | |
ios '13.6' '17G5059c' # beta 3 | |
ios '13.6' '17G68' | |
ios '13.6.1' '17G80' | |
ios '13.7' '17H33' # beta 1 | |
ios '13.7' '17H35' | |
ios '14.0' '18A5301v' # beta 1 | |
ios '14.0' '18A5319i' # beta 2 | |
ios '14.0' '18A5332f' # beta 3 | |
ios '14.0' '18A5342e' # beta 4 | |
ios '14.0' '18A5351d' # beta 5 | |
ios '14.0' '18A5357e' # beta 6 | |
ios '14.0' '18A5369b' # beta 7 | |
ios '14.0' '18A5373a' # beta 8 | |
ios '14.0' '18A373' | |
ios '14.0.1' '18A393' | |
ios '14.1' '18A8395' | |
ios '14.2' '18B5052h' # beta 1 | |
ios '14.2' '18B5052i' # beta 1 update | |
ios '14.2' '18B5061e' # beta 2 | |
ios '14.2' '18B5072f' # beta 3 | |
ios '14.2' '18B5083a' # beta 4 | |
ios '14.2' '18B91' # RC 1 | |
ios '14.2' '18B92' | |
ios '14.2' '18B111' | |
ios '14.2.1' '18B121' | |
ios '14.3' '18C5044f' # beta 1 | |
ios '14.3' '18C5054c' # beta 2 | |
ios '14.3' '18C5061a' # beta 3 | |
ios '14.3' '18C65' # RC 1 | |
ios '14.3' '18C66' | |
ios '14.4' '18D5030e' # beta 1 | |
ios '14.4' '18D5043d' # beta 2 | |
ios '14.4' '18D52' | |
ios '14.4.1' '18D61' | |
ios '14.4.2' '18D70' | |
ios '14.5' '18E5140j' # beta 1 | |
ios '14.5' '18E5140k' # beta 1 update | |
ios '14.5' '18E5154f' # beta 2 | |
ios '14.5' '18E5164h' # beta 3 | |
ios '14.5' '18E5178a' # beta 4 | |
ios '14.5' '18E5186a' # beta 5 | |
ios '14.5' '18E5194a' # beta 6 | |
ios '14.5' '18E5198a' # beta 7 | |
ios '14.5' '18E5199a' # beta 8 | |
ios '14.5' '18E199' | |
ios '14.5.1' '18E212' | |
ios '14.6' '18F5046e' # beta 1 | |
ios '14.6' '18F5046f' # beta 1 | |
ios '14.6' '18F5055b' # beta 2 | |
ios '14.6' '18F5065a' # beta 3 | |
ios '14.6' '18F71' # RC 1 | |
ios '14.6' '18F72' | |
ios '14.7' '18G5023c' # beta 1 | |
ios '14.7' '18G5033e' # beta 2 | |
ios '14.7' '18G5023c' # beta 1 | |
ios '14.7' '18G5033e' # beta 2 | |
ios '14.7' '18G5042c' # beta 3 | |
ios '14.7' '18G5052d' # beta 4 | |
ios '14.7' '18G5063a' # beta 5 | |
ios '14.7' '18G68' # RC 1 | |
ios '14.7' '18G69' | |
ios '14.7' '18G70' | |
ios '14.7.1' '18G82' | |
ios '14.8' '18H17' | |
ios '14.8.1' '18H107' | |
ios '15.0' '19A5261w' # beta 1 | |
ios '15.0' '19A5281h' # beta 2 | |
ios '15.0' '19A5281j' # beta 2 update | |
ios '15.0' '19A5297e' # beta 3 | |
ios '15.0' '19A5307g' # beta 4 | |
ios '15.0' '19A5318f' # beta 5 | |
ios '15.0' '19A5325f' # beta 6 | |
ios '15.0' '19A5337a' # beta 7 | |
ios '15.0' '19A5340a' # beta 8 | |
ios '15.0' '19A344' # RC 1 | |
ios '15.0' '19A341' # preinstalled | |
ios '15.0' '19A345' # preinstalled | |
ios '15.0' '19A346' | |
ios '15.0.1' '19A348' | |
ios '15.0.2' '19A404' | |
ios '15.1' '19B5042h' # beta 1 | |
ios '15.1' '19B5052f' # beta 2 | |
ios '15.1' '19B5060d' # beta 3 | |
ios '15.1' '19B5068a' # beta 4 | |
ios '15.1' '19B74' | |
ios '15.1' '19B75' | |
ios '15.1' '19B81' | |
ios '15.2' '19C5026i' # beta 1 | |
ios '15.2' '19C5036e' # beta 2 | |
ios '15.2' '19C5044b' # beta 3 | |
ios '15.2' '19C5050b' # beta 4 | |
ios '15.2' '19C56' | |
ios '15.2' '19C57' | |
ios '15.2.1' '19C63' | |
ios '15.3' '19D5026g' # beta 1 | |
ios '15.3' '19D5040e' # beta 2 | |
ios '15.3' '19D49' # RC 1 | |
ios '15.3' '19D50' | |
ios '15.3' '19D8050' # Studio Display preinstalled | |
ios '15.3.1' '19D52' | |
ios '15.4' '19E5209h' # beta 1 | |
ios '15.4' '19E5219e' # beta 2 | |
ios '15.4' '19E5225g' # beta 3 | |
ios '15.4' '19E5235a' # beta 4 | |
ios '15.4' '19E5241a' # beta 5 | |
ios '15.4' '19E241' | |
ios '15.4.1' '19E258' | |
ios '15.5' '19F5047e' # beta 1 | |
ios '15.5' '19F5057e' # beta 2 | |
ios '15.5' '19F5062g' # beta 3 | |
ios '15.5' '19F5070b' # beta 4 | |
ios '15.5' '19F77' | |
ios '15.5' '19F80' # Studio Display only | |
ios '15.6' '19G5027e' # beta 1 | |
ios '15.6' '19G5037d' # beta 2 | |
ios '15.6' '19G5046d' # beta 3 | |
ios '15.6' '19G5056c' # beta 4 | |
ios '15.6' '19G5063a' # beta 5 | |
ios '15.6' '19G69' # RC 1 | |
ios '15.6' '19G71' | |
ios '15.6.1' '19G82' | |
ios '15.7' '19H12' | |
ios '15.7.1' '19H115' # RC 1 | |
ios '15.7.1' '19H117' | |
ios '15.7.2' '19H218' | |
ios '15.7.3' '19H307' | |
ios '15.7.4' '19H321' | |
ios '15.7.5' '19H332' | |
ios '15.7.6' '19H349' | |
ios '15.7.7' '19H357' | |
ios '15.7.8' '19H364' | |
ios '15.7.9' '19H365' | |
ios '15.8' '19H370' | |
ios '15.8.1' '19H380' | |
ios '15.8.2' '19H384' | |
ios '15.8.3' '19H386' # RC 1 | |
fi; | |
if $incr || $rsr; then | |
ios '16.0' '20A5283p' # beta 1 | |
ios '16.0' '20A5303i' # beta 2 | |
ios '16.0' '20A5312g' # beta 3 | |
ios '16.0' '20A5312j' # beta 3 update | |
ios '16.0' '20A5328h' # beta 4 | |
ios '16.0' '20A5339d' # beta 5 | |
ios '16.0' '20A5349b' # beta 6 | |
ios '16.0' '20A5356a' # beta 7 | |
ios '16.0' '20A5358a' # beta 8 | |
ios '16.0' '20A357' # preinstalled | |
ios '16.0' '20A362' | |
ios '16.0' '20A8372' # preinstalled iPadOS | |
ios '16.0.1' '20A371' | |
ios '16.0.2' '20A380' | |
ios '16.0.3' '20A392' | |
ios '16.1' '20B5027f' # cursed iPadOS | |
ios '16.1' '20B5045d' # beta 1 | |
ios '16.1' '20B5050f' # beta 2 | |
ios '16.1' '20B5056e' # beta 3 | |
ios '16.1' '20B5064c' # beta 4 | |
ios '16.1' '20B5072b' # beta 5 | |
ios '16.1' '20B79' # RC 1 | |
ios '16.1' '20B82' | |
ios '16.1.1' '20B101' | |
ios '16.1.2' '20B110' | |
ios '16.2' '20C5032e' # beta 1 | |
ios '16.2' '20C5043e' # beta 2 | |
ios '16.2' '20C5049e' # beta 3 | |
ios '16.2' '20C5058d' # beta 4 | |
ios '16.2' '20C65' | |
ios '16.3' '20D5024e' # beta 1 | |
ios '16.3' '20D5035i' # beta 2 | |
ios '16.3' '20D47' | |
ios '16.3' '20D50' # preinstalled | |
ios '16.3.1' '20D67' | |
ios '16.4' '20E5212f' # beta 1 | |
ios '16.4' '20E5223e' # beta 2 | |
ios '16.4' '20E5229e' # beta 3 | |
ios '16.4' '20E5239b' # beta 4 | |
ios '16.4' '20E246' # RC 1 | |
ios '16.4' '20E247' | |
ios '16.4.1' '20E252' | |
ios '16.5' '20F5028e' # beta 1 | |
ios '16.5' '20F5039e' # beta 2 | |
ios '16.5' '20F5050f' # beta 3 | |
ios '16.5' '20F5059a' # beta 4 | |
ios '16.5' '20F65' # RC 1 | |
ios '16.5' '20F66' | |
ios '16.5.1' '20F75' | |
ios '16.6' '20G5026e' # beta 1 | |
ios '16.6' '20G5037d' # beta 2 | |
ios '16.6' '20G5047d' # beta 3 | |
ios '16.6' '20G5058d' # beta 4 | |
ios '16.6' '20G5070a' # beta 5 | |
ios '16.6' '20G75' | |
ios '16.6.1' '20G81' | |
ios '16.7' '20H18' # RC 1 | |
ios '16.7' '20H19' | |
ios '16.7.1' '20H30' | |
ios '16.7.2' '20H115' | |
ios '16.7.3' '20H232' | |
ios '16.7.4' '20H240' | |
ios '16.7.5' '20H307' | |
ios '16.7.6' '20H320' | |
ios '16.7.7' '20H330' | |
ios '16.7.8' '20H343' | |
ios '16.7.9' '20H348' | |
ios '16.7.10' '20H350' | |
ios '17.0' '21A5248v' # beta 1 | |
ios '17.0' '21A5268h' # beta 2 | |
ios '17.0' '21A5277h' # beta 3 | |
ios '17.0' '21A5277j' # beta 3 update | |
ios '17.0' '21A5291h' # beta 4 | |
ios '17.0' '21A5291j' # beta 4 update | |
ios '17.0' '21A5303d' # beta 5 | |
ios '17.0' '21A5312c' # beta 6 | |
ios '17.0' '21A5319a' # beta 7 | |
ios '17.0' '21A5326a' # beta 8 | |
ios '17.0' '21A326' # preinstalled | |
ios '17.0' '21A327' # preinstalled | |
ios '17.0' '21A329' | |
ios '17.0' '21A331' | |
ios '17.0.1' '21A340' | |
ios '17.0.2' '21A350' | |
ios '17.0.2' '21A351' | |
ios '17.0.3' '21A360' | |
ios '17.1' '21B5045h' # beta 1 | |
ios '17.1' '21B5056e' # beta 2 | |
ios '17.1' '21B5066a' # beta 3 | |
ios '17.1' '21B74' | |
ios '17.1' '21B77' # RC 1 | |
ios '17.1' '21B80' | |
ios '17.1.1' '21B91' | |
ios '17.1.2' '21B101' | |
ios '17.2' '21C5029g' # beta 1 | |
ios '17.2' '21C5040g' # beta 2 | |
ios '17.2' '21C5046c' # beta 3 | |
ios '17.2' '21C5054b' # beta 4 | |
ios '17.2' '21C62' | |
ios '17.2.1' '21C66' | |
ios '17.3' '21D5026f' # beta 1 | |
ios '17.3' '21D5036c' # beta 2 | |
ios '17.3' '21D5044a' # beta 3 | |
ios '17.3' '21D50' | |
ios '17.3.1' '21D61' | |
ios '17.4' '21E5184i' # beta 1 | |
ios '17.4' '21E5184k' # beta 1 update | |
ios '17.4' '21E5195e' # beta 2 | |
ios '17.4' '21E5200d' # beta 3 | |
ios '17.4' '21E5209b' # beta 4 | |
ios '17.4' '21E217' # RC 1 | |
ios '17.4' '21E219' | |
ios '17.4' '21E8237' # preinstalled | |
ios '17.4.1' '21E236' | |
ios '17.4.1' '21E237' | |
ios '17.5' '21F5048f' # beta 1 | |
ios '17.5' '21F5058e' # beta 2 | |
ios '17.5' '21F5063f' # beta 3 | |
ios '17.5' '21F5073b' # beta 4 | |
ios '17.5' '21F79' | |
ios '17.5.1' '21F90' | |
ios '17.5.1' '21F91' | |
ios '17.6' '21G5052e' # beta 1 | |
ios '17.6' '21G5061c' # beta 2 | |
ios '17.6' '21G5066d' # beta 3 | |
ios '17.6' '21G5075a' # beta 4 | |
ios '17.6' '21G79' # RC 1 | |
ios '17.6' '21G80' | |
ios '17.6.1' '21G93' | |
ios '18.0' '22A5282m' # beta 1 | |
ios '18.0' '22A5297f' # beta 2 | |
ios '18.0' '22A5307f' # beta 3 | |
ios '18.0' '22A5307i' # beta 3 update | |
ios '18.0' '22A5316j' # beta 4 | |
ios '18.0' '22A5326f' # beta 5 | |
ios '18.0' '22A5338b' # beta 6 | |
ios '18.1' '22B5007p' # beta 1 | |
ios '18.1' '22B5023e' # beta 2 | |
fi; | |
# ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- | |
tvOS_device=(); | |
tvOS_model=(); | |
tvOS_version=(); | |
tvOS_build=(); | |
atv() # device model | |
{ | |
tvOS_device+=("$1"); | |
tvOS_model+=("$2"); | |
} | |
tvos() # version build | |
{ | |
tvOS_version+=("$1"); | |
tvOS_build+=("$2"); | |
} | |
atv 'AppleTV5,3' 'J42dAP' # AppleTV 4 | |
atv 'AppleTV6,2' 'J105aAP' # AppleTV 4k | |
atv 'AppleTV11,1' 'J305AP' # AppleTV 4k 2 | |
atv 'AppleTV14,1' 'J255AP' # AppleTV 4k 3 | |
tvos '0' '0' | |
if $incr; then | |
tvos '11.0' '15J5284e' # beta 1 | |
tvos '11.0' '15J5284g' # beta 1 reloaded | |
tvos '11.0' '15J5310e' # beta 2 | |
tvos '11.0' '15J5310h' # beta 2 reloaded | |
tvos '11.0' '15J5324f' # beta 3 | |
tvos '11.0' '15J5333f' # beta 4 | |
tvos '11.0' '15J5347f' # beta 5 | |
tvos '11.0' '15J5360b' # beta 6 | |
tvos '11.0' '15J5369a' # beta 7 | |
tvos '11.0' '15J5374a' # beta 8 | |
tvos '11.0' '15J5378a' # beta 9 | |
tvos '11.0' '15J5380a' # beta 10 | |
tvos '11.0' '15J381' # GM | |
tvos '11.0' '15J6381' | |
tvos '11.1' '15J5559d' # beta 1 | |
tvos '11.1' '15J5571d' # beta 2 | |
tvos '11.1' '15J5580a' # beta 3 | |
tvos '11.1' '15J5582a' # beta 4 | |
tvos '11.1' '15J582' | |
tvos '11.1' '15J6582' | |
tvos '11.2' '15K5085b' # beta 1 | |
tvos '11.2' '15K5090c' # beta 2 | |
tvos '11.2' '15K5099a' # beta 3 | |
tvos '11.2' '15K5102a' # beta 4 | |
tvos '11.2' '15K5105a' # beta 5 | |
tvos '11.2' '15K106' | |
tvos '11.2' '15K6106' | |
tvos '11.2.1' '15K152' | |
tvos '11.2.1' '15K6152' | |
tvos '11.2.5' '15K5531d' # beta 1 | |
tvos '11.2.5' '15K5539b' # beta 2 | |
tvos '11.2.5' '15K5544a' # beta 3 | |
tvos '11.2.5' '15K5544b' # beta 4 | |
tvos '11.2.5' '15K5549a' # beta 5 | |
tvos '11.2.5' '15K5552a' # beta 6 | |
tvos '11.2.5' '15K552' | |
tvos '11.2.5' '15K6552' | |
tvos '11.2.6' '15K600' | |
tvos '11.2.6' '15K6600' | |
tvos '11.3' '15L5164e' # beta 1 | |
tvos '11.3' '15L5175d' # beta 2 | |
tvos '11.3' '15L5186e' # beta 3 | |
tvos '11.3' '15L5198d' # beta 4 | |
tvos '11.3' '15L5208a' # beta 5 | |
tvos '11.3' '15L5211b' # beta 6 | |
tvos '11.3' '15L211' | |
tvos '11.3' '15L6211' | |
tvos '11.4' '15L5536c' # beta 1 | |
tvos '11.4' '15L5546a' # beta 2 | |
tvos '11.4' '15L5560b' # beta 3 | |
tvos '11.4' '15L5570a' # beta 4 | |
tvos '11.4' '15L5576a' # beta 5 | |
tvos '11.4' '15L577' | |
tvos '11.4' '15L6577' | |
tvos '11.4.1' '15M5054b' # beta 1 | |
tvos '11.4.1' '15M5063a' # beta 2 | |
tvos '11.4.1' '15M5071b' # beta 3 | |
tvos '11.4.1' '15M5072a' # beta 4 | |
tvos '11.4.1' '15M6073' | |
tvos '11.4.1' '15M73' | |
tvos '12.0' '16J5283n' # beta 1 | |
tvos '12.0' '16J5303e' # beta 2 | |
tvos '12.0' '16J5313d' # beta 3 | |
tvos '12.0' '16J5322d' # beta 4 | |
tvos '12.0' '16J5334e' # beta 5 | |
tvos '12.0' '16J5340e' # beta 6 | |
tvos '12.0' '16J5349a' # beta 7 | |
tvos '12.0' '16J5355a' # beta 8 | |
tvos '12.0' '16J5360a' # beta 9 | |
tvos '12.0' '16J5364a' # beta 10 | |
tvos '12.0' '16J364' # GM | |
tvos '12.0' '16J6364' | |
tvos '12.0.1' '16J380' | |
tvos '12.0.1' '16J6380' | |
tvos '12.1' '16J5575c' # beta 1 | |
tvos '12.1' '16J5584c' # beta 2 | |
tvos '12.1' '16J5593c' # beta 3 | |
tvos '12.1' '16J5600a' # beta 4 | |
tvos '12.1' '16J5602a' # beta 5 | |
tvos '12.1' '16J602' | |
tvos '12.1' '16J6602' | |
tvos '12.1.1' '16K5035b' # beta 1 | |
tvos '12.1.1' '16K5041a' # beta 2 | |
tvos '12.1.1' '16K5044a' # beta 3 | |
tvos '12.1.1' '16K5045a' # beta 4 | |
tvos '12.1.1' '16K45' | |
tvos '12.1.1' '16K6045' | |
tvos '12.1.2' '16K5524a' # beta 1 | |
tvos '12.1.2' '16K5532a' # beta 2 | |
tvos '12.1.2' '16K5534a' # beta 3 | |
tvos '12.1.2' '16K534' | |
tvos '12.1.2' '16K6534' | |
tvos '12.2' '16L5181f' # beta 1 | |
tvos '12.2' '16L5191d' # beta 2 | |
tvos '12.2' '16L5201d' # beta 3 | |
tvos '12.2' '16L5212e' # beta 4 | |
tvos '12.2' '16L5221a' # beta 5 | |
tvos '12.2' '16L5226a' # beta 6 | |
tvos '12.2' '16L226' | |
tvos '12.2' '16L6226' | |
tvos '12.2.1' '16L250' | |
tvos '12.2.1' '16L6250' | |
tvos '12.3' '16M5117f' # beta 1 | |
tvos '12.3' '16M5129d' # beta 2 | |
tvos '12.3' '16M5139a' # beta 3 | |
tvos '12.3' '16M5146a' # beta 4 | |
tvos '12.3' '16M5151a' # beta 5 | |
tvos '12.3' '16M153' | |
tvos '12.3' '16M6153' | |
tvos '12.4' '16M5526d' # beta 1 | |
tvos '12.4' '16M5537c' # beta 2 | |
tvos '12.4' '16M5545c' # beta 3 | |
tvos '12.4' '16M568' | |
tvos '12.4' '16M6568' | |
tvos '12.4.1' '16M600' | |
tvos '12.4.1' '16M6600' | |
tvos '13.0' '17J5485s' # beta 1 | |
tvos '13.0' '17J5501l' # beta 2 | |
tvos '13.0' '17J5515e' # beta 3 | |
tvos '13.0' '17J5526e' # beta 4 | |
tvos '13.0' '17J5540d' # beta 5 | |
tvos '13.0' '17J5549c' # beta 6 | |
tvos '13.0' '17J5557a' # beta 7 | |
tvos '13.0' '17J5564c' # beta 8 | |
tvos '13.0' '17J5573a' # beta 9 | |
tvos '13.0' '17J5579a' # beta 10 | |
tvos '13.0' '17J5584a' # beta 11 | |
tvos '13.0' '17J586' # GM | |
tvos '13.0' '17J6586' | |
tvos '13.2' '17K5059d' # beta 1 | |
tvos '13.2' '17K5068b' # beta 2 | |
tvos '13.2' '17K5078a' # beta 3 | |
tvos '13.2' '17K5082a' # beta 4 | |
tvos '13.2' '17K82' | |
tvos '13.2' '17K6082' | |
tvos '13.3' '17K5433c' # beta 1 | |
tvos '13.3' '17K5440a' # beta 2 | |
tvos '13.3' '17K5445a' # beta 3 | |
tvos '13.3' '17K5449a' # beta 4 | |
tvos '13.3' '17K449' | |
tvos '13.3' '17K6449' | |
tvos '13.3.1' '17K5775c' # beta 1 | |
tvos '13.3.1' '17K5792a' # beta 2 | |
tvos '13.3.1' '17K5795a' # beta 3 | |
tvos '13.3.1' '17K795' | |
tvos '13.3.1' '17K6795' | |
tvos '13.4' '17L5225g' # beta 1 | |
tvos '13.4' '17L5235e' # beta 2 | |
tvos '13.4' '17L5245b' # beta 3 | |
tvos '13.4' '17L5251a' # beta 4 | |
tvos '13.4' '17L5255a' # beta 5 | |
tvos '13.4' '17L256' | |
tvos '13.4' '17L6256' | |
tvos '13.4.5' '17L5533c' # beta 1 | |
tvos '13.4.5' '17L5543d' # beta 2 | |
tvos '13.4.5' '17L5553c' # beta 3 | |
tvos '13.4.5' '17L5560a' # beta 4 | |
tvos '13.4.5' '17L562' | |
tvos '13.4.5' '17L6562' | |
tvos '13.4.6' '17L570' | |
tvos '13.4.6' '17L6570' | |
tvos '13.4.8' '17M5535f' # beta 1 | |
tvos '13.4.8' '17M5545a' # beta 2 | |
tvos '13.4.8' '17M5558b' # beta 3 | |
tvos '13.4.8' '17M61' | |
tvos '13.4.8' '17M6061' | |
tvos '14.0' '18J5313t' # beta 1 | |
tvos '14.0' '18J5331g' # beta 2 | |
tvos '14.0' '18J5344d' # beta 3 | |
tvos '14.0' '18J5354d' # beta 4 | |
tvos '14.0' '18J5364d' # beta 5 | |
tvos '14.0' '18J5370e' # beta 6 | |
tvos '14.0' '18J5379a' # beta 7 | |
tvos '14.0' '18J5385a' # beta 8 | |
tvos '14.0' '18J386' | |
tvos '14.0.1' '18J400' | |
tvos '14.0.2' '18J411' | |
tvos '14.2' '18K5027e' # beta 1 | |
tvos '14.2' '18K5036d' # beta 2 | |
tvos '14.2' '18K5047f' # beta 3 | |
tvos '14.2' '18K5057a' # beta 4 | |
tvos '14.2' '18K57' | |
tvos '14.3' '18K5545e' # beta 1 | |
tvos '14.3' '18K5556a' # beta 2 | |
tvos '14.3' '18K5559a' # beta 3 | |
tvos '14.3' '18K561' | |
tvos '14.4' '18K5780c' # beta 1 | |
tvos '14.4' '18K5793d' # beta 2 | |
tvos '14.4' '18K802' | |
tvos '14.5' '18L5149j' # beta 1 | |
tvos '14.5' '18L5163d' # beta 2 | |
tvos '14.5' '18L5173f' # beta 3 | |
tvos '14.5' '18L5186a' # beta 4 | |
tvos '14.5' '18L5193a' # beta 5 | |
tvos '14.5' '18L5200a' # beta 6 | |
tvos '14.5' '18L5203a' # beta 7 | |
tvos '14.5' '18L204' | |
tvos '14.6' '18L5546f' # beta 1 | |
tvos '14.6' '18L5555c' # beta 2 | |
tvos '14.6' '18L5565a' # beta 3 | |
tvos '14.6' '18L569' | |
tvos '14.7' '18M5523d' # beta 1 | |
tvos '14.7' '18M5533c' # beta 2 | |
tvos '14.7' '18M5542c' # beta 3 | |
tvos '14.7' '18M5552d' # beta 4 | |
tvos '14.7' '18M5559a' # beta 5 | |
tvos '14.7' '18M60' | |
tvos '15.0' '19J5268r' # beta 1 | |
tvos '15.0' '19J5288e' # beta 2 | |
tvos '15.0' '19J5304d' # beta 3 | |
tvos '15.0' '19J5314e' # beta 4 | |
tvos '15.0' '19J5325f' # beta 5 | |
tvos '15.0' '19J5332e' # beta 6 | |
tvos '15.0' '19J5340a' # beta 7 | |
tvos '15.0' '19J5345a' # beta 8 | |
tvos '15.0' '19J5346a' # beta 9 | |
tvos '15.0' '19J346' | |
tvos '15.1' '19J5542e' # beta 1 | |
tvos '15.1' '19J5552f' # beta 2 | |
tvos '15.1' '19J5560d' # beta 3 | |
tvos '15.1' '19J5567a' # beta 4 | |
tvos '15.1' '19J572' | |
tvos '15.1.1' '19J581' | |
tvos '15.2' '19K5025g' # beta 1 | |
tvos '15.2' '19K5035d' # beta 2 | |
tvos '15.2' '19K5043b' # beta 3 | |
tvos '15.2' '19K5050a' # beta 4 | |
tvos '15.2' '19K53' | |
tvos '15.3' '19K5527e' # beta 1 | |
tvos '15.3' '19K5541d' # beta 2 | |
tvos '15.3' '19K545' # RC 1 | |
tvos '15.3' '19K547' | |
tvos '15.4' '19L5409j' # beta 1 | |
tvos '15.4' '19L5419e' # beta 2 | |
tvos '15.4' '19L5425e' # beta 3 | |
tvos '15.4' '19L5436a' # beta 4 | |
tvos '15.4' '19L5440a' # beta 5 | |
tvos '15.4' '19L440' | |
tvos '15.4.1' '19L452' | |
tvos '15.5' '19L5547e' # beta 1 | |
tvos '15.5' '19L5557d' # beta 2 | |
tvos '15.5' '19L5562e' # beta 3 | |
tvos '15.5' '19L5569a' # beta 4 | |
tvos '15.5' '19L570' | |
tvos '15.5.1' '19L580' | |
tvos '15.6' '19M5027c' # beta 1 | |
tvos '15.6' '19M5037c' # beta 2 | |
tvos '15.6' '19M5046c' # beta 3 | |
tvos '15.6' '19M5056c' # beta 4 | |
tvos '15.6' '19M5062a' # beta 5 | |
tvos '15.6' '19M63' # RC 1 | |
tvos '15.6' '19M65' | |
tvos '16.0' '20J5299n' # beta 1 | |
tvos '16.0' '20J5319h' # beta 2 | |
tvos '16.0' '20J5328g' # beta 3 | |
tvos '16.0' '20J5344f' # beta 4 | |
tvos '16.0' '20J5355f' # beta 5 | |
tvos '16.0' '20J5366a' # beta 6 | |
tvos '16.0' '20J5371a' # beta 7 | |
tvos '16.0' '20J8378' # preinstalled | |
tvos '16.0' '20J373' | |
tvos '16.1' '20K5041d' # beta 1 | |
tvos '16.1' '20K5046d' # beta 2 | |
tvos '16.1' '20K5052c' # beta 3 | |
tvos '16.1' '20K5062a' # beta 4 | |
tvos '16.1' '20K5068a' # beta 5 | |
tvos '16.1' '20K71' | |
tvos '16.1.1' '20K80' | |
tvos '16.2' '20K5331f' # beta 1 | |
tvos '16.2' '20K5342d' # beta 2 | |
tvos '16.2' '20K5348d' # beta 3 | |
tvos '16.2' '20K5357b' # beta 4 | |
tvos '16.2' '20K362' | |
tvos '16.3' '20K5626c' # beta 1 | |
tvos '16.3' '20K5637g' # beta 2 | |
tvos '16.3' '20K650' | |
tvos '16.3.1' '20K661' | |
tvos '16.3.2' '20K672' | |
tvos '16.3.3' '20K680' | |
tvos '16.4' '20L5463g' # beta 1 | |
tvos '16.4' '20L5474e' # beta 2 | |
tvos '16.4' '20L5480g' # beta 3 | |
tvos '16.4' '20L5490a' # beta 4 | |
tvos '16.4' '20L497' | |
tvos '16.4.1' '20L6498' | |
tvos '16.5' '20L5527d' # beta 1 | |
tvos '16.5' '20L5538d' # beta 2 | |
tvos '16.5' '20L5549e' # beta 3 | |
tvos '16.5' '20L5559a' # beta 4 | |
tvos '16.5' '20L562' # RC 1 | |
tvos '16.5' '20L563' | |
tvos '16.6' '20M5527e' # beta 1 | |
tvos '16.6' '20M5538d' # beta 2 | |
tvos '16.6' '20M5548b' # beta 3 | |
tvos '16.6' '20M5559c' # beta 4 | |
tvos '16.6' '20M5571a' # beta 5 | |
tvos '16.6' '20M73' | |
tvos '17.0' '21J5273q' # beta 1 | |
tvos '17.0' '21J5293g' # beta 2 | |
tvos '17.0' '21J5303f' # beta 3 | |
tvos '17.0' '21J5303h' # beta 3 update | |
tvos '17.0' '21J5318f' # beta 4 | |
tvos '17.0' '21J5330e' # beta 5 | |
tvos '17.0' '21J5339b' # beta 6 | |
tvos '17.0' '21J5347a' # beta 7 | |
tvos '17.0' '21J5353a' # beta 8 | |
tvos '17.0' '21J5354a' # beta 9 | |
tvos '17.0' '21J354' | |
tvos '17.1' '21K5043e' # beta 1 | |
tvos '17.1' '21K5054e' # beta 2 | |
tvos '17.1' '21K5064b' # beta 3 | |
tvos '17.1' '21K69' | |
tvos '17.2' '21K5330g' # beta 1 | |
tvos '17.2' '21K5341f' # beta 2 | |
tvos '17.2' '21K5348f' # beta 3 | |
tvos '17.2' '21K5356c' # beta 4 | |
tvos '17.2' '21K364' # RC 1 | |
tvos '17.2' '21K365' | |
tvos '17.3' '21K5625e' # beta 1 | |
tvos '17.3' '21K5635c' # beta 2 | |
tvos '17.3' '21K5643b' # beta 3 | |
tvos '17.3' '21K646' | |
tvos '17.4' '21L5195h' # beta 1 | |
tvos '17.4' '21L5206f' # beta 2 | |
tvos '17.4' '21L5212d' # beta 3 | |
tvos '17.4' '21L5222a' # beta 4 | |
tvos '17.4' '21L5225a' # beta 5 | |
tvos '17.4' '21L227' | |
tvos '17.5' '21L5543d' # beta 1 | |
tvos '17.5' '21L5553e' # beta 2 | |
tvos '17.5' '21L5558d' # beta 3 | |
tvos '17.5' '21L5567a' # beta 4 | |
tvos '17.5' '21L569' | |
tvos '17.5.1' '21L580' | |
tvos '17.6' '21M5045c' # beta 1 | |
tvos '17.6' '21M5054a' # beta 2 | |
tvos '17.6' '21M5059b' # beta 3 | |
tvos '17.6' '21M5068a' # beta 4 | |
tvos '17.6' '21M71' | |
tvos '18.0' '22J5290l' # beta 1 | |
tvos '18.0' '22J5305e' # beta 2 | |
tvos '18.0' '22J5315e' # beta 3 | |
tvos '18.0' '22J5324f' # beta 4 | |
tvos '18.0' '22J5335d' # beta 5 | |
tvos '18.0' '22J5346a' # beta 6 | |
fi; | |
# ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- | |
watchOS_device=(); | |
watchOS_model=(); | |
watchOS_version=(); | |
watchOS_build=(); | |
iwatch() # device model | |
{ | |
watchOS_device+=("$1"); | |
watchOS_model+=("$2"); | |
} | |
watchos() # version build | |
{ | |
watchOS_version+=("$1"); | |
watchOS_build+=("$2"); | |
} | |
iwatch 'Watch1,1' 'N27aAP' # Apple Watch | |
iwatch 'Watch1,2' 'N28aAP' # Apple Watch | |
iwatch 'Watch2,6' 'N27dAP' # Apple Watch Series 1 | |
iwatch 'Watch2,7' 'N28dAP' # Apple Watch Series 1 | |
iwatch 'Watch2,3' 'N74AP' # Apple Watch Series 2 | |
iwatch 'Watch2,4' 'N75AP' # Apple Watch Series 2 | |
iwatch 'Watch3,1' 'N111sAP' # Apple Watch Series 3 | |
iwatch 'Watch3,2' 'N111bAP' # Apple Watch Series 3 | |
iwatch 'Watch3,3' 'N121sAP' # Apple Watch Series 3 | |
iwatch 'Watch3,4' 'N121bAP' # Apple Watch Series 3 | |
iwatch 'Watch4,1' 'N131sAP' # Apple Watch Series 4 | |
iwatch 'Watch4,2' 'N131bAP' # Apple Watch Series 4 | |
iwatch 'Watch4,3' 'N141sAP' # Apple Watch Series 4 | |
iwatch 'Watch4,4' 'N141bAP' # Apple Watch Series 4 | |
iwatch 'Watch5,1' 'N144sAP' # Apple Watch Series 5 | |
iwatch 'Watch5,2' 'N144bAP' # Apple Watch Series 5 | |
iwatch 'Watch5,3' 'N146sAP' # Apple Watch Series 5 | |
iwatch 'Watch5,4' 'N146bAP' # Apple Watch Series 5 | |
iwatch 'Watch5,9' 'N140sAP' # Apple Watch SE | |
iwatch 'Watch5,10' 'N140bAP' # Apple Watch SE | |
iwatch 'Watch5,11' 'N142sAP' # Apple Watch SE | |
iwatch 'Watch5,12' 'N142bAP' # Apple Watch SE | |
iwatch 'Watch6,1' 'N157sAP' # Apple Watch Series 6 | |
iwatch 'Watch6,2' 'N157bAP' # Apple Watch Series 6 | |
iwatch 'Watch6,3' 'N158sAP' # Apple Watch Series 6 | |
iwatch 'Watch6,4' 'N158bAP' # Apple Watch Series 6 | |
iwatch 'Watch6,6' 'N187sAP' # Apple Watch Series 7 | |
iwatch 'Watch6,7' 'N187bAP' # Apple Watch Series 7 | |
iwatch 'Watch6,8' 'N188sAP' # Apple Watch Series 7 | |
iwatch 'Watch6,9' 'N188bAP' # Apple Watch Series 7 | |
iwatch 'Watch6,10' 'N143sAP' # Apple Watch SE 2 | |
iwatch 'Watch6,11' 'N143bAP' # Apple Watch SE 2 | |
iwatch 'Watch6,12' 'N149sAP' # Apple Watch SE 2 (Cellular) | |
iwatch 'Watch6,13' 'N149bAP' # Apple Watch SE 2 (Cellular) | |
iwatch 'Watch6,14' 'N197sAP' # Apple Watch Series 8 | |
iwatch 'Watch6,15' 'N197bAP' # Apple Watch Series 8 | |
iwatch 'Watch6,16' 'N198sAP' # Apple Watch Series 8 (Cellular) | |
iwatch 'Watch6,17' 'N198bAP' # Apple Watch Series 8 (Cellular) | |
iwatch 'Watch6,18' 'N199AP' # Apple Watch Ultra | |
iwatch 'Watch7,1' 'N207sAP' # Apple Watch Series 9 | |
iwatch 'Watch7,2' 'N207bAP' # Apple Watch Series 9 | |
iwatch 'Watch7,3' 'N208sAP' # Apple Watch Series 9 (Cellular) | |
iwatch 'Watch7,4' 'N208bAP' # Apple Watch Series 9 (Cellular) | |
iwatch 'Watch7,5' 'N210AP' # Apple Watch Ultra 2 | |
watchos '0' '0' | |
if $incr; then | |
watchos '4.0' '15R5281f' # beta 1 | |
watchos '4.0' '15R5307f' # beta 2 | |
watchos '4.0' '15R5321h' # beta 3 | |
watchos '4.0' '15R5331g' # beta 4 | |
watchos '4.0' '15R5345g' # beta 5 | |
watchos '4.0' '15R5357b' # beta 6 | |
watchos '4.0' '15R5365a' # beta 7 | |
watchos '4.0' '15R5371a' # beta 8 | |
watchos '4.0' '15R372' | |
watchos '4.1' '15R5823c' # beta 1 | |
watchos '4.1' '15R5835d' # beta 2 | |
watchos '4.1' '15R5843a' # beta 3 | |
watchos '4.1' '15R846' | |
watchos '4.2' '15S5085b' # beta 1 | |
watchos '4.2' '15S5090c' # beta 2 | |
watchos '4.2' '15S5100a' # beta 3 | |
watchos '4.2' '15S5102b' # beta 4 | |
watchos '4.2' '15S102' | |
watchos '4.2.2' '15S5530d' # beta 1 | |
watchos '4.2.2' '15S5534a' # beta 2 | |
watchos '4.2.2' '15S5536a' # beta 3 | |
watchos '4.2.2' '15S5540a' # beta 4 | |
watchos '4.2.2' '15S542' | |
watchos '4.2.3' '15S600b' | |
watchos '4.3' '15T5165e' # beta 1 | |
watchos '4.3' '15T5176c' # beta 2 | |
watchos '4.3' '15T5187e' # beta 3 | |
watchos '4.3' '15T5199f' # beta 4 | |
watchos '4.3' '15T5209a' # beta 5 | |
watchos '4.3' '15T5212a' # beta 6 | |
watchos '4.3' '15T212' | |
watchos '4.3.1' '15T5535b' # beta 1 | |
watchos '4.3.1' '15T5545b' # beta 2 | |
watchos '4.3.1' '15T5555c' # beta 3 | |
watchos '4.3.1' '15T5565a' # beta 4 | |
watchos '4.3.1' '15T5567a' # beta 5 | |
watchos '4.3.1' '15T567' | |
watchos '4.3.2' '15U5053b' # beta 1 | |
watchos '4.3.2' '15U5062a' # beta 2 | |
watchos '4.3.2' '15U5069a' # beta 3 | |
watchos '4.3.2' '15U70' | |
watchos '5.0' '16R5283q' # beta 1 | |
watchos '5.0' '16R5283r' # beta 1 | |
watchos '5.0' '16R5303d' # beta 2 | |
watchos '5.0' '16R5313d' # beta 3 | |
watchos '5.0' '16R5322d' # beta 4 | |
watchos '5.0' '16R5334f' # beta 5 | |
watchos '5.0' '16R5340g' # beta 6 | |
watchos '5.0' '16R5349a' # beta 7 | |
watchos '5.0' '16R5357a' # beta 8 | |
watchos '5.0' '16R5360a' # beta 9 | |
watchos '5.0' '16R5363a' # beta 10 | |
watchos '5.0' '16R364' | |
watchos '5.0.1' '16R381' | |
watchos '5.0.1' '16R382' | |
watchos '5.1' '16R5559d' # beta 1 | |
watchos '5.1' '16R5568d' # beta 2 | |
watchos '5.1' '16R5577c' # beta 3 | |
watchos '5.1' '16R5584a' # beta 4 | |
watchos '5.1' '16R5589c' # beta 5 | |
watchos '5.1' '16R591' | |
watchos '5.1.1' '16R600' | |
watchos '5.1.2' '16S5042a' # beta 1 | |
watchos '5.1.2' '16S5046a' # beta 2 | |
watchos '5.1.2' '16S46' | |
watchos '5.1.3' '16S5523a' # beta 1 | |
watchos '5.1.3' '16S5531a' # beta 2 | |
watchos '5.1.3' '16S5535a' # beta 3 | |
watchos '5.1.3' '16S535' | |
watchos '5.2' '16T5181f' # beta 1 | |
watchos '5.2' '16T5191d' # beta 2 | |
watchos '5.2' '16T5201c' # beta 3 | |
watchos '5.2' '16T5212e' # beta 4 | |
watchos '5.2' '16T5222a' # beta 5 | |
watchos '5.2' '16T5225a' # beta 6 | |
watchos '5.2' '16T225' | |
watchos '5.2.1' '16U5079d' # beta 1 | |
watchos '5.2.1' '16U5091b' # beta 2 | |
watchos '5.2.1' '16U5101c' # beta 3 | |
watchos '5.2.1' '16U5110a' # beta 4 | |
watchos '5.2.1' '16U5113a' # beta 5 | |
watchos '5.2.1' '16U113' | |
watchos '5.3' '16U5526f' # beta 1 | |
watchos '5.3' '16U5537b' # beta 2 | |
watchos '5.3' '16U5545c' # beta 3 | |
watchos '5.3' '16U5558b' # beta 4 | |
watchos '5.3' '16U5566a' # beta 5 | |
watchos '5.3' '16U5569a' # beta 6 | |
watchos '5.3.1' '16U600' | |
watchos '5.3.2' '16U611' | |
watchos '5.3.3' '16U620' | |
watchos '5.3.4' '16U627' | |
watchos '5.3.5' '16U652' | |
watchos '5.3.6' '16U662' | |
watchos '5.3.7' '16U674' | |
watchos '5.3.8' '16U680' | |
watchos '6.0' '17R5491t' # beta 1 | |
watchos '6.0' '17R5507l' # beta 2 | |
watchos '6.0' '17R5521e' # beta 3 | |
watchos '6.0' '17R5532f' # beta 4 | |
watchos '6.0' '17R5546f' # beta 5 | |
watchos '6.0' '17R5556d' # beta 6 | |
watchos '6.0' '17R5566a' # beta 7 | |
watchos '6.0' '17R5571a' # beta 8 | |
watchos '6.0' '17R5575a' # beta 9 | |
watchos '6.0' '17R575' | |
watchos '6.0.1' '17R604' | |
watchos '6.0.1' '17R605' | |
watchos '6.1' '17S5054e' # beta 1 | |
watchos '6.1' '17S5059e' # beta 2 | |
watchos '6.1' '17S5068e' # beta 3 | |
watchos '6.1' '17S5076a' # beta 4 | |
watchos '6.1' '17S5083a' # beta 5 | |
watchos '6.1' '17S84' | |
watchos '6.1.1' '17S5433b' # beta 1 | |
watchos '6.1.1' '17S5439a' # beta 2 | |
watchos '6.1.1' '17S5446a' # beta 3 | |
watchos '6.1.1' '17S5449b' # beta 4 | |
watchos '6.1.1' '17S449' | |
watchos '6.1.2' '17S5775c' # beta 1 | |
watchos '6.1.2' '17S5792a' # beta 2 | |
watchos '6.1.2' '17S5796a' # beta 3 | |
watchos '6.1.2' '17S796' | |
watchos '6.1.3' '17S811' | |
watchos '6.2' '17T5224g' # beta 1 | |
watchos '6.2' '17T5234f' # beta 2 | |
watchos '6.2' '17T5244c' # beta 3 | |
watchos '6.2' '17T5251a' # beta 4 | |
watchos '6.2' '17T5254a' # beta 5 | |
watchos '6.2' '17T529' | |
watchos '6.2.1' '17T530' | |
watchos '6.2.5' '17T5580e' # beta 1 | |
watchos '6.2.5' '17T5590d' # beta 2 | |
watchos '6.2.5' '17T5600c' # beta 3 | |
watchos '6.2.5' '17T5607a' # beta 4 | |
watchos '6.2.5' '17T608' | |
watchos '6.2.6' '17T620' | |
watchos '6.2.8' '17U5535e' # beta 1 | |
watchos '6.2.8' '17U5545c' # beta 2 | |
watchos '6.2.8' '17U5559d' # beta 3 | |
watchos '6.2.8' '17U63' | |
watchos '6.3' '17U208' | |
watchos '6.3' '17U216' | |
watchos '7.0' '18R5310a' # beta 1 | |
watchos '7.0' '18R5327h' # beta 2 | |
watchos '7.0' '18R5340d' # beta 3 | |
watchos '7.0' '18R5350e' # beta 4 | |
watchos '7.0' '18R5361d' # beta 5 | |
watchos '7.0' '18R5368d' # beta 6 | |
watchos '7.0' '18R5378a' # beta 7 | |
watchos '7.0' '18R5382a' # beta 8 | |
watchos '7.0' '18R382' | |
watchos '7.0.1' '18R395' | |
watchos '7.0.2' '18R402' | |
watchos '7.0.3' '18R410' | |
watchos '7.1' '18R5552f' # beta 1 | |
watchos '7.1' '18R5561e' # beta 2 | |
watchos '7.1' '18R5572f' # beta 3 | |
watchos '7.1' '18R5572g' # beta 3 | |
watchos '7.1' '18R5585a' # beta 4 | |
watchos '7.1' '18R5586a' # beta 4 | |
watchos '7.1' '18R589' # RC 1 | |
watchos '7.1' '18R590' | |
watchos '7.2' '18S5545f' # beta 1 | |
watchos '7.2' '18S5555c' # beta 2 | |
watchos '7.2' '18S5561a' # beta 3 | |
watchos '7.2' '18S563' | |
watchos '7.2' '18S564' | |
watchos '7.3' '18S5780d' # beta 1 | |
watchos '7.3' '18S5793d' # beta 2 | |
watchos '7.3' '18S801' | |
watchos '7.3.1' '18S801' | |
watchos '7.3.2' '18S821' | |
watchos '7.3.3' '18S830' | |
watchos '7.4' '18T5144k' # beta 1 | |
watchos '7.4' '18T5159f' # beta 2 | |
watchos '7.4' '18T5169f' # beta 3 | |
watchos '7.4' '18T5183b' # beta 4 | |
watchos '7.4' '18T5190a' # beta 5 | |
watchos '7.4' '18T5193a' # beta 6 | |
watchos '7.4' '18T5194a' # beta 7 | |
watchos '7.4' '18T195' | |
watchos '7.4.1' '18T201' | |
watchos '7.5' '18T5546f' # beta 1 | |
watchos '7.5' '18T5555c' # beta 2 | |
watchos '7.5' '18T5564a' # beta 3 | |
watchos '7.5' '18T567' | |
watchos '7.6' '18U5523d' # beta 1 | |
watchos '7.6' '18U5533b' # beta 2 | |
watchos '7.6' '18U5542b' # beta 3 | |
watchos '7.6' '18U5552d' # beta 4 | |
watchos '7.6' '18U5561a' # beta 5 | |
watchos '7.6' '18U63' | |
watchos '7.6.1' '18U70' | |
watchos '7.6.2' '18U80' | |
watchos '8.0' '19R5266q' # beta 1 | |
watchos '8.0' '19R5286f' # beta 2 | |
watchos '8.0' '19R5302f' # beta 3 | |
watchos '8.0' '19R5312e' # beta 4 | |
watchos '8.0' '19R5323g' # beta 5 | |
watchos '8.0' '19R5330d' # beta 6 | |
watchos '8.0' '19R5340a' # beta 7 | |
watchos '8.0' '19R5342a' # beta 8 | |
watchos '8.0' '19R343' # preinstalled | |
watchos '8.0' '19R346' | |
watchos '8.0.1' '19R354' | |
watchos '8.1' '19R5541f' # beta 1 | |
watchos '8.1' '19R5551d' # beta 2 | |
watchos '8.1' '19R5559e' # beta 3 | |
watchos '8.1' '19R5566a' # beta 4 | |
watchos '8.1' '19R570' | |
watchos '8.1.1' '19R580' | |
watchos '8.3' '19S5026e' # beta 1 | |
watchos '8.3' '19S5036d' # beta 2 | |
watchos '8.3' '19S5044c' # beta 3 | |
watchos '8.3' '19S5050c' # beta 4 | |
watchos '8.3' '19S55' | |
watchos '8.4' '19S5525f' # beta 1 | |
watchos '8.4' '19S5539e' # beta 2 | |
watchos '8.4' '19S546' | |
watchos '8.4.1' '19S550' | |
watchos '8.4.2' '19S553' | |
watchos '8.5' '19T5212h' # beta 1 | |
watchos '8.5' '19T5223e' # beta 2 | |
watchos '8.5' '19T5228d' # beta 3 | |
watchos '8.5' '19T5238a' # beta 4 | |
watchos '8.5' '19T5241a' # beta 5 | |
watchos '8.5' '19T242' | |
watchos '8.5.1' '19T252' | |
watchos '8.6' '19T5547f' # beta 1 | |
watchos '8.6' '19T5557d' # beta 2 | |
watchos '8.6' '19T5562f' # beta 3 | |
watchos '8.6' '19T5570a' # beta 4 | |
watchos '8.6' '19T572' | |
watchos '8.7' '19U5027c' # beta 1 | |
watchos '8.7' '19U5037d' # beta 2 | |
watchos '8.7' '19U5046b' # beta 3 | |
watchos '8.7' '19U5056c' # beta 4 | |
watchos '8.7' '19U5063a' # beta 5 | |
watchos '8.7' '19U66' | |
watchos '8.7.1' '19U67' | |
watchos '8.8.1' '19U512' | |
watchos '9.0' '20R5287q' # beta 1 | |
watchos '9.0' '20R5307h' # beta 2 | |
watchos '9.0' '20R5316f' # beta 3 | |
watchos '9.0' '20R5332g' # beta 4 | |
watchos '9.0' '20R5343e' # beta 5 | |
watchos '9.0' '20R5353a' # beta 6 | |
watchos '9.0' '20R5359a' # beta 7 | |
watchos '9.0' '20R361' | |
watchos '9.0.1' '20R8380' | |
watchos '9.0.2' '20R383' | |
watchos '9.0.2' '20R8391' | |
watchos '9.1' '20S5044e' # beta 1 | |
watchos '9.1' '20S5049d' # beta 2 | |
watchos '9.1' '20S5055e' # beta 3 | |
watchos '9.1' '20S5063c' # beta 4 | |
watchos '9.1' '20S5072a' # beta 5 | |
watchos '9.1' '20S75' | |
watchos '9.2' '20S5331e' # beta 1 | |
watchos '9.2' '20S5342d' # beta 2 | |
watchos '9.2' '20S5348d' # beta 3 | |
watchos '9.2' '20S5357b' # beta 4 | |
watchos '9.2' '20S361' | |
watchos '9.3' '20S5626e' # beta 1 | |
watchos '9.3' '20S5637h' # beta 2 | |
watchos '9.3' '20S648' | |
watchos '9.3.1' '20S664' | |
watchos '9.4' '20T5222g' # beta 1 | |
watchos '9.4' '20T5233d' # beta 2 | |
watchos '9.4' '20T5239f' # beta 3 | |
watchos '9.4' '20T5249a' # beta 4 | |
watchos '9.4' '20T253' | |
watchos '9.5' '20T5527c' # beta 1 | |
watchos '9.5' '20T5538d' # beta 2 | |
watchos '9.5' '20T5549e' # beta 3 | |
watchos '9.5' '20T5560a' # beta 4 | |
watchos '9.5' '20T562' | |
watchos '9.5.1' '20T570' | |
watchos '9.5.2' '20T571' | |
watchos '9.6' '20U5527c' # beta 1 | |
watchos '9.6' '20U5538d' # beta 2 | |
watchos '9.6' '20U5548c' # beta 3 | |
watchos '9.6' '20U5559c' # beta 4 | |
watchos '9.6' '20U5570a' # beta 5 | |
watchos '9.6' '20U73' | |
watchos '9.6.1' '20U80' | |
watchos '9.6.2' '20U90' | |
watchos '9.6.3' '20U502' | |
watchos '10.0' '21R5275t' # beta 1 | |
watchos '10.0' '21R5295g' # beta 2 | |
watchos '10.0' '21R5305e' # beta 3 | |
watchos '10.0' '21R5320i' # beta 4 | |
watchos '10.0' '21R5332f' # beta 5 | |
watchos '10.0' '21R5341c' # beta 6 | |
watchos '10.0' '21R5349b' # beta 7 | |
watchos '10.0' '21R5355a' # beta 8 | |
watchos '10.0' '21R355' | |
watchos '10.0' '21R356' | |
watchos '10.0.1' '21R360' | |
watchos '10.0.2' '21R371' | |
watchos '10.1' '21S5042f' # beta 1 | |
watchos '10.1' '21S5053f' # beta 2 | |
watchos '10.1' '21S5063a' # beta 3 | |
watchos '10.1' '21S67' | |
watchos '10.1.1' '21S71' | |
watchos '10.2' '21S5331f' # beta 1 | |
watchos '10.2' '21S5342e' # beta 2 | |
watchos '10.2' '21S5349e' # beta 3 | |
watchos '10.2' '21S5358a' # beta 4 | |
watchos '10.2' '21S364' | |
watchos '10.3' '21S5625c' # beta 1 | |
watchos '10.3' '21S5635d' # beta 2 | |
watchos '10.3' '21S5642a' # beta 3 | |
watchos '10.3' '21S644' | |
watchos '10.3.1' '21S651' | |
watchos '10.4' '21T5185g' # beta 1 | |
watchos '10.4' '21T5196d' # beta 2 | |
watchos '10.4' '21T5202e' # beta 3 | |
watchos '10.4' '21T5213a' # beta 4 | |
watchos '10.4' '21T216' | |
watchos '10.5' '21T5545f' # beta 1 | |
watchos '10.5' '21T5555d' # beta 2 | |
watchos '10.5' '21T5560d' # beta 3 | |
watchos '10.5' '21T5571a' # beta 4 | |
watchos '10.5' '21T575' # RC 1 | |
watchos '10.5' '21T576' | |
watchos '10.6' '21U5551b' # beta 1 | |
watchos '10.6' '21U5560b' # beta 2 | |
watchos '10.6' '21U5565c' # beta 3 | |
watchos '10.6' '21U5574a' # beta 4 | |
watchos '10.6' '21U577' | |
watchos '11.0' '22R5284o' # beta 1 | |
watchos '11.0' '22R5299d' # beta 2 | |
watchos '11.0' '22R5309f' # beta 3 | |
watchos '11.0' '22R5318h' # beta 4 | |
watchos '11.0' '22R5328e' # beta 5 | |
watchos '11.0' '22R5340a' # beta 6 | |
fi; | |
# ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- | |
audioOS_device=(); | |
audioOS_model=(); | |
audioOS_version=(); | |
audioOS_build=(); | |
homepod() # device model | |
{ | |
audioOS_device+=("$1"); | |
audioOS_model+=("$2"); | |
} | |
audioos() # version build | |
{ | |
audioOS_version+=("$1"); | |
audioOS_build+=("$2"); | |
} | |
homepod 'AudioAccessory1,1' 'B238aAP' | |
homepod 'AudioAccessory1,2' 'B238AP' | |
homepod 'AudioAccessory5,1' 'B520AP' | |
homepod 'AudioAccessory6,1' 'B620AP' | |
audioos '0' '0' | |
if $incr; then | |
audioos '11.0.2' '15C25' | |
audioos '11.2' '15C4092b' # beta 1 | |
audioos '11.2' '15C4097d' # beta 2 | |
audioos '11.2.5' '15D5037e' # beta 3 | |
audioos '11.2.5' '15D5046b' # beta 4 | |
audioos '11.2.5' '15D59' | |
audioos '11.2.5' '15D5059' | |
audioos '11.3' '15E217' | |
audioos '11.4' '15F80' | |
audioos '11.4.1' '15G77' | |
audioos '12.0' '16A366' | |
audioos '12.1' '16B92' | |
audioos '12.1' '16B6092' | |
audioos '12.1.1' '16C50' | |
audioos '12.1.3' '16D39' | |
audioos '12.2' '16E227' | |
audioos '12.3' '16F156' | |
audioos '12.4' '16G78' | |
audioos '13.2' '17B84' | |
audioos '13.2' '17B6084' | |
audioos '13.2.1' '17B90' | |
audioos '13.2.1' '17B6090' | |
audioos '13.3' '17C54' | |
audioos '13.3' '17C6054' | |
audioos '13.3.1' '17D50' | |
audioos '13.3.1' '17D6050' | |
audioos '13.4' '17L256' | |
audioos '13.4' '17L6256' | |
audioos '13.4.5' '17L562' | |
audioos '13.4.5' '17L6562' | |
audioos '13.4.6' '17L570' | |
audioos '13.4.6' '17L6570' | |
audioos '13.4.8' '17M61' | |
audioos '13.4.8' '17M6061' | |
audioos '14.0' '18J5313t' # beta 1 | |
audioos '14.0' '18J5331g' # beta 2 | |
audioos '14.0' '18J5344d' # beta 3 | |
audioos '14.0' '18J5354f' # beta 4 | |
audioos '14.1' '18J6370e' # beta 5 | |
audioos '14.1' '18J6379c' # beta 6 | |
audioos '14.1' '18J6385b' # beta 7 | |
audioos '14.1' '18J8394' | |
audioos '14.2' '18K5027e' # beta 1 | |
audioos '14.2' '18K5036d' # beta 2 | |
audioos '14.2' '18K5047f' # beta 3 | |
audioos '14.2' '18K5057c' # beta 4 | |
audioos '14.2' '18K60' | |
audioos '14.2.1' '18K75' | |
audioos '14.3' '18K5545e' # beta 1 | |
audioos '14.3' '18K5556a' # beta 2 | |
audioos '14.3' '18K5559a' # beta 3 | |
audioos '14.3' '18K561' # RC 1 | |
audioos '14.3' '18K563' | |
audioos '14.4' '18K5780c' # beta 1 | |
audioos '14.4' '18K5793d' # beta 2 | |
audioos '14.4' '18K802' | |
audioos '14.5' '18L5149j' # beta 1 | |
audioos '14.5' '18L5173f' # beta 3 | |
audioos '14.5' '18L5186a' # beta 4 | |
audioos '14.5' '18L5193a' # beta 5 | |
audioos '14.5' '18L5200a' # beta 6 | |
audioos '14.5' '18L5203a' # beta 7 | |
audioos '14.5' '18L203' | |
audioos '14.6' '18L5546f' # beta 1 | |
audioos '14.6' '18L5555c' # beta 2 | |
audioos '14.6' '18L5565a' # beta 3 | |
audioos '14.6' '18L569' | |
audioos '14.7' '18M5523d' # beta 1 | |
audioos '14.7' '18M5533c' # beta 2 | |
audioos '14.7' '18M5542c' # beta 3 | |
audioos '14.7' '18M5552d' # beta 4 | |
audioos '14.7' '18M5558a' # beta 5 | |
audioos '14.7' '18M60' | |
audioos '15.0' '19J5268r' # beta 1 | |
audioos '15.0' '19J5288e' # beta 2 | |
audioos '15.0' '19J5304b' # beta 3 | |
audioos '15.0' '19J5304e' # beta 4 | |
audioos '15.0' '19J5314e' # beta 5 | |
audioos '15.0' '19J5332b' # beta 6 | |
audioos '15.0' '19J5332d' # beta 7 | |
audioos '15.0' '19J5340a' # beta 8 | |
audioos '15.0' '19J5345a' # beta 9 | |
audioos '15.0' '19J5346a' # RC 1 | |
audioos '15.0' '19J346' | |
audioos '15.1' '19J5542e' # beta 1 | |
audioos '15.1' '19J5552e' # beta 2 | |
audioos '15.1' '19J5560d' # beta 3 | |
audioos '15.1' '19J5567a' # beta 4 | |
audioos '15.1' '19J572' | |
audioos '15.1.1' '19J582' | |
audioos '15.2' '19K5025g' # beta 1 | |
audioos '15.2' '19K5035d' # beta 2 | |
audioos '15.2' '19K5043b' # beta 3 | |
audioos '15.2' '19K5050a' # beta 4 | |
audioos '15.2' '19K52' | |
audioos '15.3' '19K5527d' # beta 1 | |
audioos '15.3' '19K5541d' # beta 2 | |
audioos '15.3' '19K546' # RC 1 | |
audioos '15.3' '19K547' | |
audioos '15.4' '19L5409j' # beta 1 | |
audioos '15.4' '19L5419e' # beta 2 | |
audioos '15.4' '19L5425e' # beta 3 | |
audioos '15.4' '19L5436a' # beta 4 | |
audioos '15.4' '19L5440a' # beta 5 | |
audioos '15.4' '19L440' | |
audioos '15.4.1' '19L452' | |
audioos '15.5' '19L5547e' # beta 1 | |
audioos '15.5' '19L5557d' # beta 2 | |
audioos '15.5' '19L5562e' # beta 3 | |
audioos '15.5' '19L5569a' # beta 4 | |
audioos '15.5' '19L570' | |
audioos '15.5.1' '19L580' | |
audioos '15.6' '19M5027c' # beta 1 | |
audioos '15.6' '19M5037c' # beta 2 | |
audioos '15.6' '19M5046c' # beta 3 | |
audioos '15.6' '19M5056c' # beta 4 | |
audioos '15.6' '19M5062a' # beta 5 | |
audioos '15.6' '19M63' # RC 1 | |
audioos '15.6' '19M65' | |
audioos '16.0' '20J5299n' # beta 1 | |
audioos '16.0' '20J5319h' # beta 2 | |
audioos '16.0' '20J5328f' # beta 3 | |
audioos '16.0' '20J5344f' # beta 4 | |
audioos '16.0' '20J5355f' # beta 5 | |
audioos '16.0' '20J5366a' # beta 6 | |
audioos '16.0' '20J5371a' # beta 7 | |
audioos '16.0' '20J373' | |
audioos '16.1' '20K5041d' # beta 1 | |
audioos '16.1' '20K5046d' # beta 2 | |
audioos '16.1' '20K5052c' # beta 3 | |
audioos '16.1' '20K5062a' # beta 4 | |
audioos '16.1' '20K5068a' # beta 5 | |
audioos '16.1' '20K71' | |
audioos '16.2' '20K5331f' # beta 1 | |
audioos '16.2' '20K5342d' # beta 2 | |
audioos '16.2' '20K5348d' # beta 3 | |
audioos '16.2' '20K5357b' # beta 4 | |
audioos '16.2' '20K362' | |
audioos '16.3' '20K5626c' # beta 1 | |
audioos '16.3' '20K5637g' # beta 2 | |
audioos '16.3' '20K649' | |
audioos '16.3.1' '20K661' | |
audioos '16.3.2' '20K672' | |
audioos '16.4' '20L5463g' # beta 1 | |
audioos '16.4' '20L5474e' # beta 2 | |
audioos '16.4' '20L5480g' # beta 3 | |
audioos '16.4' '20L5490a' # beta 4 | |
audioos '16.4' '20L6497' | |
audioos '16.4.1' '20L498' | |
audioos '16.5' '20L5527d' # beta 1 | |
audioos '16.5' '20L5538d' # beta 2 | |
audioos '16.5' '20L5549e' # beta 3 | |
audioos '16.5' '20L5559a' # beta 4 | |
audioos '16.5' '20L562' # RC 1 | |
audioos '16.5' '20L563' | |
audioos '16.6' '20M5527e' # beta 1 | |
audioos '16.6' '20M5538d' # beta 2 | |
audioos '16.6' '20M5548b' # beta 3 | |
audioos '16.6' '20M5559c' # beta 4 | |
audioos '16.6' '20M5571a' # beta 5 | |
audioos '16.6' '20M73' | |
audioos '17.0' '21J5273q' # beta 1 | |
audioos '17.0' '21J5303f' # beta 3 | |
audioos '17.0' '21J5318f' # beta 4 | |
audioos '17.0' '21J5330e' # beta 5 | |
audioos '17.0' '21J5339b' # beta 6 | |
audioos '17.0' '21J5347a' # beta 7 | |
audioos '17.0' '21J5353a' # beta 8 | |
audioos '17.0' '21J354' | |
audioos '17.1' '21K5043e' # beta 1 | |
audioos '17.1' '21K5054e' # beta 2 | |
audioos '17.1' '21K5064b' # beta 3 | |
audioos '17.1' '21K69' | |
audioos '17.1.1' '21K82' | |
audioos '17.2' '21K5330g' # beta 1 | |
audioos '17.2' '21K5341f' # beta 2 | |
audioos '17.2' '21K5348f' # beta 3 | |
audioos '17.2' '21K5356c' # beta 4 | |
audioos '17.2' '21K364' # RC 1 | |
audioos '17.2' '21K365' | |
audioos '17.3' '21K5625e' # beta 1 | |
audioos '17.3' '21K5635c' # beta 2 | |
audioos '17.3' '21K5643b' # beta 3 | |
audioos '17.3' '21K646' | |
audioos '17.4' '21L5195h' # beta 1 | |
audioos '17.4' '21L5206f' # beta 2 | |
audioos '17.4' '21L5212d' # beta 3 | |
audioos '17.4' '21L5222a' # beta 4 | |
audioos '17.4' '21L5225a' # beta 5 | |
audioos '17.4' '21L227' | |
audioos '17.5' '21L5543d' # beta 1 | |
audioos '17.5' '21L5553e' # beta 2 | |
audioos '17.5' '21L5558d' # beta 3 | |
audioos '17.5' '21L5567a' # beta 4 | |
audioos '17.5' '21L569' | |
audioos '17.6' '21M5045c' # beta 1 | |
audioos '17.6' '21M5054a' # beta 2 | |
audioos '17.6' '21M5059b' # beta 3 | |
audioos '17.6' '21M5068a' # beta 4 | |
audioos '17.6' '21M71' | |
audioos '18.0' '22J5290l' # beta 1 | |
audioos '18.0' '22J5305e' # beta 2 | |
audioos '18.0' '22J5315e' # beta 3 | |
audioos '18.0' '22J5324f' # beta 4 | |
audioos '18.0' '22J5335d' # beta 5 | |
audioos '18.0' '22J5346a' # beta 6 | |
fi; | |
# ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- | |
xrOS_device=(); | |
xrOS_model=(); | |
xrOS_version=(); | |
xrOS_build=(); | |
vision() # device model | |
{ | |
xrOS_device+=("$1"); | |
xrOS_model+=("$2"); | |
} | |
xros() # version build | |
{ | |
xrOS_version+=("$1"); | |
xrOS_build+=("$2"); | |
} | |
vision 'RealityDevice14,1' 'N301AP' # Vision Pro | |
xros '0' '0' | |
if $incr; then | |
xros '1.0' '21N5165g' # beta 1 | |
xros '1.0' '21N5207g' # beta 2 | |
xros '1.0' '21N5233f' # beta 3 | |
xros '1.0' '21N5259k' # beta 4 | |
xros '1.0' '21N5260b' # beta 5 | |
xros '1.0' '21N5300a' # beta 6 | |
xros '1.0' '21N307' | |
xros '1.0.1' '21N311' | |
xros '1.0.2' '21N323' | |
xros '1.0.3' '21N333' | |
xros '1.1' '21O5181e' # beta 1 | |
xros '1.1' '21O5188c' # beta 2 | |
xros '1.1' '21O5197a' # beta 3 | |
xros '1.1' '21O5203a' # beta 4 | |
xros '1.1' '21O209' # RC 1 | |
xros '1.1' '21O211' | |
xros '1.1.1' '21O224' | |
xros '1.1.2' '21O231' | |
xros '1.2' '21O5555e' # beta 1 | |
xros '1.2' '21O5555f' # beta 1 update | |
xros '1.2' '21O5565d' # beta 2 | |
xros '1.2' '21O5570d' # beta 3 | |
xros '1.2' '21O5580a' # beta 4 | |
xros '1.2' '21O5587a' # beta 5 | |
xros '1.2' '21O589' | |
xros '1.3' '21O5747c' # beta 1 | |
xros '1.3' '21O5756a' # beta 2 | |
xros '1.3' '21O5761a' # beta 3 | |
xros '1.3' '21O5768a' # beta 4 | |
xros '1.3' '21O771' | |
xros '2.0' '22N5252n' # beta 1 | |
xros '2.0' '22N5267g' # beta 2 | |
xros '2.0' '22N5277g' # beta 3 | |
xros '2.0' '22N5286g' # beta 4 | |
xros '2.0' '22N5297g' # beta 5 | |
xros '2.0' '22N5308b' # beta 6 | |
fi; | |
# ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- | |
macOS_device=(); | |
macOS_model=(); | |
macOS_version=(); | |
macOS_build=(); | |
mac() # device model | |
{ | |
macOS_device+=("$1"); | |
macOS_model+=("$2"); | |
} | |
macos() # version build | |
{ | |
macOS_version+=("$1"); | |
macOS_build+=("$2"); | |
} | |
if ! $rsr; then | |
mac 'ADP3,1' 'J273AP' # DTK | |
mac 'ADP3,2' 'J273aAP' # DTK | |
mac 'iProd99,1' 'T485AP' # DTK | |
fi; | |
mac 'Macmini9,1' 'J274AP' # M1 Mac mini | |
mac 'MacBookAir10,1' 'J313AP' # M1 MacBook Air | |
mac 'MacBookPro17,1' 'J293AP' # M1 MacBook Pro | |
mac 'iMac21,1' 'J456AP' # M1 iMac | |
mac 'iMac21,2' 'J457AP' # M1 iMac | |
mac 'MacBookPro18,3' 'J314sAP' # M1 Pro MacBook Pro (14") | |
mac 'MacBookPro18,1' 'J316sAP' # M1 Pro MacBook Pro (16") | |
mac 'MacBookPro18,4' 'J314cAP' # M1 Max MacBook Pro (14") | |
mac 'MacBookPro18,2' 'J316cAP' # M1 Max MacBook Pro (16") | |
mac 'Mac13,1' 'J375cAP' # M1 Max Mac Studio | |
mac 'Mac13,2' 'J375dAP' # M1 Ultra Mac Studio | |
mac 'Mac14,2' 'J413AP' # M2 MacBook Air (13") | |
mac 'Mac14,15' 'J415AP' # M2 MacBook Air (15") | |
mac 'Mac14,7' 'J493AP' # M2 MacBook Pro | |
mac 'Mac14,3' 'J473AP' # M2 Mac mini | |
mac 'Mac14,12' 'J474sAP' # M2 Pro Mac mini | |
mac 'Mac14,9' 'J414sAP' # M2 Pro MacBook Pro (14") | |
mac 'Mac14,10' 'J416sAP' # M2 Pro MacBook Pro (16") | |
mac 'Mac14,5' 'J414cAP' # M2 Max MacBook Pro (14") | |
mac 'Mac14,6' 'J416cAP' # M2 Max MacBook Pro (16") | |
mac 'Mac14,13' 'J475cAP' # M2 Max Mac Studio | |
mac 'Mac14,14' 'J475dAP' # M2 Ultra Mac Studio | |
mac 'Mac14,8' 'J180dAP' # M2 Ultra Mac Pro | |
mac 'Mac15,3' 'J504AP' # M3 MacBook Pro | |
mac 'Mac15,4' 'J433AP' # M3 iMac | |
mac 'Mac15,5' 'J434AP' # M3 iMac | |
mac 'Mac15,12' 'J613AP' # M3 MacBook Air (13") | |
mac 'Mac15,13' 'J615AP' # M3 MacBook Air (15") | |
mac 'Mac15,6' 'J514sAP' # M3 Pro MacBook Pro (14") | |
mac 'Mac15,7' 'J516sAP' # M3 Pro MacBook Pro (16") | |
mac 'Mac15,8' 'J514cAP' # M3 Max (16core) MacBook Pro (14") | |
mac 'Mac15,9' 'J516cAP' # M3 Max (16core) MacBook Pro (16") | |
mac 'Mac15,10' 'J514mAP' # M3 Max (14core) MacBook Pro (14") | |
mac 'Mac15,11' 'J516mAP' # M3 Max (14core) MacBook Pro (16") | |
mac 'VirtualMac1,1' 'VMA1AP' | |
mac 'VirtualMac2,1' 'VMA2MACOSAP' | |
if ! $rsr; then | |
mac 'iBridge2,1' 'J137AP' | |
mac 'iBridge2,3' 'J680AP' | |
mac 'iBridge2,4' 'J132AP' | |
mac 'iBridge2,5' 'J174AP' | |
mac 'iBridge2,6' 'J160AP' | |
mac 'iBridge2,7' 'J780AP' | |
mac 'iBridge2,8' 'J140kAP' | |
mac 'iBridge2,10' 'J213AP' | |
mac 'iBridge2,11' 'J230AP' | |
mac 'iBridge2,12' 'J140aAP' | |
mac 'iBridge2,13' 'J214AP' | |
mac 'iBridge2,14' 'J152fAP' | |
mac 'iBridge2,15' 'J230kAP' | |
mac 'iBridge2,16' 'J214kAP' | |
mac 'iBridge2,19' 'J185AP' | |
mac 'iBridge2,20' 'J185fAP' | |
mac 'iBridge2,21' 'J223AP' | |
mac 'iBridge2,22' 'J215AP' | |
fi; | |
if ! $rsr; then | |
macos '0' '0' | |
fi; | |
if $incr && ! $rsr; then | |
macos '11.0' '20A5299w' # beta 1 | |
macos '11.0' '20A5323l' # beta 3 | |
macos '11.0' '20A5343i' # beta 4 (dev) | |
macos '11.0' '20A5343j' # beta 4 (public) | |
macos '11.0' '20A5354i' # beta 5 | |
macos '11.0' '20A5364e' # beta 6 | |
macos '11.0' '20A5374g' # beta 7 | |
macos '11.0' '20A5374i' # beta 8 | |
macos '11.0' '20A5384c' # beta 9 | |
macos '11.0' '20A5395g' # beta 10 | |
macos '11.0' '20A2411' # preinstalled | |
macos '11.0.1' '20B5012d' # beta 1 | |
macos '11.0.1' '20B5022a' # RC 1 | |
macos '11.0.1' '20B28' # RC 2 | |
macos '11.0.1' '20B29' | |
macos '11.0.1' '20B50' | |
macos '11.1' '20C5048k' # beta 1 (ipsw) | |
macos '11.1' '20C5048l' # beta 1 (ia) | |
macos '11.1' '20C5061b' # beta 2 | |
macos '11.1' '20C69' | |
macos '11.2' '20D5029f' # beta 1 | |
macos '11.2' '20D5042d' # beta 2 | |
macos '11.2' '20D53' # RC 1 | |
macos '11.2' '20D62' # RC 2 | |
macos '11.2' '20D64' | |
macos '11.2.1' '20D74' | |
macos '11.2.1' '20D75' | |
macos '11.2.2' '20D80' | |
macos '11.2.3' '20D91' | |
macos '11.3' '20E5172i' # beta 1 | |
macos '11.3' '20E5186d' # beta 2 (ipsw) | |
macos '11.3' '20E5186e' # beta 2 (ia) | |
macos '11.3' '20E5196f' # beta 3 | |
macos '11.3' '20E5210c' # beta 4 | |
macos '11.3' '20E5217a' # beta 5 | |
macos '11.3' '20E5224a' # beta 6 | |
macos '11.3' '20E5229a' # beta 7 | |
macos '11.3' '20E5231a' # beta 8 | |
macos '11.3' '20E217' # preinstalled | |
macos '11.3' '20E232' | |
macos '11.3.1' '20E241' | |
macos '11.4' '20F5046g' # beta 1 | |
macos '11.4' '20F5055c' # beta 2 | |
macos '11.4' '20F5065a' # beta 3 | |
macos '11.4' '20F71' | |
macos '11.5' '20G5023d' # beta 1 | |
macos '11.5' '20G5033c' # beta 2 | |
macos '11.5' '20G5042c' # beta 3 | |
macos '11.5' '20G5052c' # beta 4 | |
macos '11.5' '20G5065a' # beta 5 | |
macos '11.5' '20G70' # RC 1 | |
macos '11.5' '20G71' | |
macos '11.5.1' '20G80' | |
macos '11.5.2' '20G95' | |
macos '11.6' '20G165' | |
macos '11.6.1' '20G211' # RC 1 | |
macos '11.6.1' '20G214' # RC 2 | |
macos '11.6.1' '20G219' # RC 3 | |
macos '11.6.1' '20G221' # RC 4 | |
macos '11.6.1' '20G224' | |
macos '11.6.2' '20G303' # RC 1 | |
macos '11.6.2' '20G306' # RC 2 | |
macos '11.6.2' '20G311' # RC 3 | |
macos '11.6.2' '20G313' # RC 4 | |
macos '11.6.2' '20G314' | |
macos '11.6.3' '20G405' # RC 1 | |
macos '11.6.3' '20G409' # RC 2 | |
macos '11.6.3' '20G413' # RC 3 | |
macos '11.6.3' '20G415' | |
macos '11.6.4' '20G507' # RC 1 | |
macos '11.6.4' '20G417' | |
macos '11.6.5' '20G517' # RC 1 | |
macos '11.6.5' '20G521' # RC 2 | |
macos '11.6.5' '20G525' # RC 3 | |
macos '11.6.5' '20G526' # RC 4 | |
macos '11.6.5' '20G527' | |
macos '11.6.6' '20G604' # RC 1 | |
macos '11.6.6' '20G608' # RC 2 | |
macos '11.6.6' '20G614' # RC 3 | |
macos '11.6.6' '20G618' # RC 4 | |
macos '11.6.6' '20G623' # RC 5 | |
macos '11.6.6' '20G624' | |
macos '11.6.7' '20G704' # RC 1 | |
macos '11.6.7' '20G710' # RC 2 | |
macos '11.6.7' '20G630' | |
macos '11.6.8' '20G715' # RC 1 | |
macos '11.6.8' '20G720' # RC 2 | |
macos '11.6.8' '20G725' # RC 3 | |
macos '11.6.8' '20G728' # RC 4 | |
macos '11.6.8' '20G730' | |
macos '11.7' '20G817' | |
macos '11.7.1' '20G908' # RC 1 | |
macos '11.7.1' '20G912' # RC 2 | |
macos '11.7.1' '20G916' # RC 3 | |
macos '11.7.1' '20G918' | |
macos '11.7.2' '20G1008' # RC 1 | |
macos '11.7.2' '20G1011' # RC 2 | |
macos '11.7.2' '20G1020' | |
macos '11.7.3' '20G1102' # RC 1 | |
macos '11.7.3' '20G1113' # RC 2 | |
macos '11.7.3' '20G1116' | |
macos '11.7.4' '20G1120' | |
macos '11.7.5' '20G1205' # RC 1 | |
macos '11.7.5' '20G1210' # RC 2 | |
macos '11.7.5' '20G1215' # RC 3 | |
macos '11.7.5' '20G1220' # RC 4 | |
macos '11.7.5' '20G1225' | |
macos '11.7.6' '20G1329' # RC 1 | |
macos '11.7.6' '20G1231' | |
macos '11.7.7' '20G1332' # RC 1 | |
macos '11.7.7' '20G1338' # RC 2 | |
macos '11.7.7' '20G1342' # RC 3 | |
macos '11.7.7' '20G1345' | |
macos '11.7.8' '20G1403' # RC 1 | |
macos '11.7.8' '20G1407' # RC 2 | |
macos '11.7.8' '20G1351' | |
macos '11.7.9' '20G1413' # RC 1 | |
macos '11.7.9' '20G1416' # RC 2 | |
macos '11.7.9' '20G1424' # RC 3 | |
macos '11.7.9' '20G1426' | |
macos '11.7.10' '20G1427' | |
macos '12.0' '21A5248p' # beta 1 | |
macos '12.0' '21A5268h' # beta 2 | |
macos '12.0' '21A5284e' # beta 3 | |
macos '12.0' '21A5294g' # beta 4 | |
macos '12.0' '21A5304g' # beta 5 | |
macos '12.0' '21A5506j' # beta 6 | |
macos '12.0' '21A5522h' # beta 7 | |
macos '12.0' '21A5534d' # beta 8 | |
macos '12.0' '21A5543b' # beta 9 | |
macos '12.0' '21A5552a' # beta 10 | |
macos '12.0' '21A344' # preinstalled | |
macos '12.0.1' '21A558' # RC 1 | |
macos '12.0.1' '21A559' | |
macos '12.1' '21C5021h' # beta 1 | |
macos '12.1' '21C5031d' # beta 2 | |
macos '12.1' '21C5039b' # beta 3 | |
macos '12.1' '21C5045a' # beta 4 | |
macos '12.1' '21C51' # RC 1 | |
macos '12.1' '21C52' | |
macos '12.2' '21D5025f' # beta 1 | |
macos '12.2' '21D5039d' # beta 2 | |
macos '12.2' '21D48' # RC 1 | |
macos '12.2' '21D49' | |
macos '12.2' '21D2048' # preinstalled | |
macos '12.2.1' '21D62' | |
macos '12.3' '21E5196i' # beta 1 | |
macos '12.3' '21E5206e' # beta 2 | |
macos '12.3' '21E5212f' # beta 3 | |
macos '12.3' '21E5222a' # beta 4 | |
macos '12.3' '21E5227a' # beta 5 | |
macos '12.3' '21E230' | |
macos '12.3.1' '21E258' | |
macos '12.4' '21F5048e' # beta 1 | |
macos '12.4' '21F5058e' # beta 2 | |
macos '12.4' '21F5063e' # beta 3 | |
macos '12.4' '21F5071b' # beta 4 | |
macos '12.4' '21F79' | |
macos '12.4' '21F2081' | |
macos '12.4' '21F2092' | |
macos '12.5' '21G5027d' # beta 1 | |
macos '12.5' '21G5037d' # beta 2 | |
macos '12.5' '21G5046c' # beta 3 | |
macos '12.5' '21G5056b' # beta 4 | |
macos '12.5' '21G5063a' # beta 5 | |
macos '12.5' '21G69' # RC 1 | |
macos '12.5' '21G72' | |
macos '12.5.1' '21G83' | |
macos '12.6' '21G115' | |
macos '12.6.1' '21G207' # RC 1 | |
macos '12.6.1' '21G211' # RC 2 | |
macos '12.6.1' '21G215' # RC 3 | |
macos '12.6.1' '21G217' | |
macos '12.6.2' '21G309' # RC 1 | |
macos '12.6.2' '21G312' # RC 2 | |
macos '12.6.2' '21G317' # RC 3 | |
macos '12.6.2' '21G320' | |
macos '12.6.3' '21G403' # RC 1 | |
macos '12.6.3' '21G417' # RC 2 | |
macos '12.6.3' '21G419' | |
macos '12.6.4' '21G506' # RC 1 | |
macos '12.6.4' '21G511' # RC 2 | |
macos '12.6.4' '21G516' # RC 3 | |
macos '12.6.4' '21G521' # RC 4 | |
macos '12.6.4' '21G526' | |
macos '12.6.5' '21G630' # RC 1 | |
macos '12.6.5' '21G531' | |
macos '12.6.6' '21G633' # RC 1 | |
macos '12.6.6' '21G639' # RC 2 | |
macos '12.6.6' '21G644' # RC 3 | |
macos '12.6.6' '21G646' | |
macos '12.6.7' '21G703' # RC 1 | |
macos '12.6.7' '21G708' # RC 2 | |
macos '11.6.7' '21G651' | |
macos '12.6.8' '21G713' # RC 1 | |
macos '12.6.8' '21G716' # RC 2 | |
macos '12.6.8' '21G724' # RC 3 | |
macos '12.6.8' '21G725' | |
macos '12.6.9' '21G726' | |
macos '12.7' '21G808' # RC 1 | |
macos '12.7' '21G813' # RC 2 | |
macos '12.7' '21G814' # RC 3 | |
macos '12.7' '21G816' | |
macos '12.7.1' '21G913' # RC 1 | |
macos '12.7.1' '21G918' # RC 2 | |
macos '12.7.1' '21G920' | |
macos '12.7.2' '21G1925' # RC 1 | |
macos '12.7.2' '21G1965' # RC 2 | |
macos '12.7.2' '21G1967' # RC 3 | |
macos '12.7.2' '21G1971' # RC 4 | |
macos '12.7.2' '21G1974' | |
macos '12.7.3' '21H1006' # RC 1 | |
macos '12.7.3' '21H1009' # RC 2 | |
macos '12.7.3' '21H1013' # RC 3 | |
macos '12.7.3' '21H1015' | |
macos '12.7.4' '21H1105' # RC 1 | |
macos '12.7.4' '21H1111' # RC 2 | |
macos '12.7.4' '21H1121' # RC 3 | |
macos '12.7.4' '21H1122' # RC 4 | |
macos '12.7.4' '21H1123' | |
macos '12.7.5' '21H1205' # RC 1 | |
macos '12.7.5' '21H1211' # RC 2 | |
macos '12.7.5' '21H1216' # RC 3 | |
macos '12.7.5' '21H1220' # RC 4 | |
macos '12.7.5' '21H1222' | |
macos '12.7.6' '21H1307' # RC 1 | |
macos '12.7.6' '21H1310' # RC 2 | |
macos '12.7.6' '21H1313' # RC 3 | |
macos '12.7.6' '21H1317' # RC 4 | |
macos '12.7.6' '21H1320' | |
fi; | |
if $incr || $rsr; then | |
macos '13.0' '22A5266r' # beta 1 | |
macos '13.0' '22A5286j' # beta 2 | |
macos '13.0' '22A5295h' # beta 3 | |
macos '13.0' '22A5295i' # beta 3 update | |
macos '13.0' '22A5311f' # beta 4 | |
macos '13.0' '22A5321d' # beta 5 | |
macos '13.0' '22A5331f' # beta 6 | |
macos '13.0' '22A5342f' # beta 7 | |
macos '13.0' '22A5352e' # beta 8 | |
macos '13.0' '22A5358e' # beta 9 | |
macos '13.0' '22A5365d' # beta 10 | |
macos '13.0' '22A5373b' # beta 11 | |
macos '13.0' '22A379' # RC 1 | |
macos '13.0' '22A380' | |
macos '13.0' '22A8380' # preinstalled | |
macos '13.0' '22A8381' # preinstalled | |
macos '13.0.1' '22A400' | |
macos '13.1' '22C5033e' # beta 1 | |
macos '13.1' '22C5044e' # beta 2 | |
macos '13.1' '22C5050e' # beta 3 | |
macos '13.1' '22C5059b' # beta 4 | |
macos '13.1' '22C65' | |
macos '13.2' '22D5027d' # beta 1 | |
macos '13.2' '22D5038i' # beta 2 | |
macos '13.2' '22D49' | |
macos '13.2.1' '22D68' | |
macos '13.3' '22E5219e' # beta 1 | |
macos '13.3' '22E5230e' # beta 2 | |
macos '13.3' '22E5236f' # beta 3 | |
macos '13.3' '22E5246b' # beta 4 | |
macos '13.3' '22E252' | |
macos '13.3' '22E8252' # preinstalled | |
macos '13.3.1' '22E261' | |
macos '13.4' '22F5027f' # beta 1 | |
macos '13.4' '22F5037d' # beta 2 | |
macos '13.4' '22F5049e' # beta 3 | |
macos '13.4' '22F5059b' # beta 4 | |
macos '13.4' '22F62' # RC 1 | |
macos '13.4' '22F63' # RC 2 | |
macos '13.4' '22F66' | |
macos '13.4' '22F2063' # preinstalled | |
macos '13.4' '22F2073' | |
macos '13.4.1' '22F82' | |
macos '13.4.1' '22F2083' | |
macos '13.5' '22G5027e' # beta 1 | |
macos '13.5' '22G5038d' # beta 2 | |
macos '13.5' '22G5048d' # beta 3 | |
macos '13.5' '22G5059d' # beta 4 | |
macos '13.5' '22G5072a' # beta 5 | |
macos '13.5' '22G74' | |
macos '13.5' '22G2074' # preinstalled | |
macos '13.5' '22G2080' # preinstalled | |
macos '13.5.1' '22G90' | |
macos '13.5.2' '22G91' | |
macos '13.6' '22G109' # RC 1 | |
macos '13.6' '22G115' # RC 2 | |
macos '13.6' '22G116' # RC 3 | |
macos '13.6' '22G120' | |
macos '13.6.1' '22G213' # RC 1 | |
macos '13.6.1' '22G311' # RC 2 | |
macos '13.6.1' '22G313' | |
macos '13.6.2' '22G417' # RC 1 | |
macos '13.6.2' '22G320' | |
macos '13.6.2' '22G2321' | |
macos '13.6.3' '22G423' # RC 1 | |
macos '13.6.3' '22G430' # RC 2 | |
macos '13.6.3' '22G433' # RC 3 | |
macos '13.6.3' '22G436' | |
macos '13.6.4' '22G504' # RC 1 | |
macos '13.6.4' '22G507' # RC 2 | |
macos '13.6.4' '22G511' # RC 3 | |
macos '13.6.4' '22G513' | |
macos '13.6.5' '22G605' # RC 1 | |
macos '13.6.5' '22G610' # RC 2 | |
macos '13.6.5' '22G619' # RC 3 | |
macos '13.6.5' '22G620' # RC 4 | |
macos '13.6.5' '22G621' | |
macos '13.6.6' '22G630' | |
macos '13.6.7' '22G705' # RC 1 | |
macos '13.6.7' '22G711' # RC 2 | |
macos '13.6.7' '22G716' # RC 3 | |
macos '13.6.7' '22G718' # RC 4 | |
macos '13.6.7' '22G720' | |
macos '13.6.7' '22G807' # dumb | |
macos '13.6.7' '22G810' # dumber | |
macos '13.6.8' '22G813' # RC 3 | |
macos '13.6.8' '22G817' # RC 4 | |
macos '13.6.8' '22G820' | |
macos '13.6.9' '22G830' | |
macos '14.0' '23A5257q' # beta 1 | |
macos '14.0' '23A5276g' # beta 2 | |
macos '14.0' '23A5286g' # beta 3 | |
macos '14.0' '23A5286i' # beta 3 update | |
macos '14.0' '23A5301g' # beta 4 | |
macos '14.0' '23A5301h' # beta 4 update | |
macos '14.0' '23A5312d' # beta 5 | |
macos '14.0' '23A5328b' # beta 6 | |
macos '14.0' '23A5337a' # beta 7 | |
macos '14.0' '23A339' # RC 1 | |
macos '14.0' '23A344' | |
macos '14.1' '23B5046f' # beta 1 | |
macos '14.1' '23B5056e' # beta 2 | |
macos '14.1' '23B5067a' # beta 3 | |
macos '14.1' '23B73' # RC 1 | |
macos '14.1' '23B74' | |
macos '14.1' '23B2073' # preinstalled | |
macos '14.1' '23B2077' | |
macos '14.1.1' '23B81' | |
macos '14.1.1' '23B2082' | |
macos '14.1.2' '23B92' | |
macos '14.1.2' '23B2091' | |
macos '14.2' '23C5030f' # beta 1 | |
macos '14.2' '23C5041e' # beta 2 | |
macos '14.2' '23C5047e' # beta 3 | |
macos '14.2' '23C5055b' # beta 4 | |
macos '14.2' '23C63' # RC 1 | |
macos '14.2' '23C64' | |
macos '14.2.1' '23C71' | |
macos '14.3' '23D5033f' # beta 1 | |
macos '14.3' '23D5043d' # beta 2 | |
macos '14.3' '23D5051b' # beta 3 | |
macos '14.3' '23D56' | |
macos '14.3' '23D2057' # preinstalled | |
macos '14.3.1' '23D60' | |
macos '14.4' '23E5180j' # beta 1 | |
macos '14.4' '23E5191e' # beta 2 | |
macos '14.4' '23E5196e' # beta 3 | |
macos '14.4' '23E5205c' # beta 4 | |
macos '14.4' '23E5211a' # beta 5 | |
macos '14.4' '23E214' | |
macos '14.4.1' '23E224' | |
macos '14.5' '23F5049f' # beta 1 | |
macos '14.5' '23F5059e' # beta 2 | |
macos '14.5' '23F5064f' # beta 3 | |
macos '14.5' '23F5074a' # beta 4 | |
macos '14.5' '23F79' | |
macos '14.6' '23G5052d' # beta 1 | |
macos '14.6' '23G5061b' # beta 2 | |
macos '14.6' '23G5066c' # beta 3 | |
macos '14.6' '23G5075b' # beta 4 | |
macos '14.6' '23G80' | |
macos '14.6.1' '23G93' | |
macos '15.0' '24A5264n' # beta 1 | |
macos '15.0' '24A5279h' # beta 2 | |
macos '15.0' '24A5289g' # beta 3 | |
macos '15.0' '24A5289h' # beta 3 update | |
macos '15.0' '24A5298h' # beta 4 | |
macos '15.0' '24A5309e' # beta 5 | |
macos '15.0' '24A5320a' # beta 6 | |
macos '15.1' '24B5009l' # beta 1 | |
macos '15.1' '24B5024e' # beta 2 | |
fi; | |
# ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- | |
# AssetAudiences: | |
# 01c1d682-6e8f-4908-b724-5501fe3f5e5c iOS release | |
# ce9c2203-903b-4fb3-9f03-040dc2202694 iOS internal (not publicly accessible) | |
# 0c88076f-c292-4dad-95e7-304db9d29d34 iOS generic | |
# c724cb61-e974-42d3-a911-ffd4dce11eda iOS security updates | |
# f23050eb-bdfa-4b23-9eca-453e3b1a247c iOS 11 customer beta | |
# b7580fda-59d3-43ae-9488-a81b825e3c73 iOS 11 developer beta | |
# 5839f7cf-9610-483a-980f-6c4266a22f17 iOS 11 public beta | |
# ef473147-b8e7-4004-988e-0ae20e2532ef iOS 12 developer beta | |
# 94bf0742-38e6-4379-adf9-ec9995dde586 iOS 12 public beta | |
# d8ab8a45-ee39-4229-891e-9d3ca78a87ca iOS 13 developer beta | |
# 98bcaac1-66ed-4691-80e4-739f8ed5bb19 iOS 13 public beta | |
# 84da8706-e267-4554-8207-865ae0c3a120 iOS 14 customer beta | |
# dbbb0481-d521-4cdf-a2a4-5358affc224b iOS 14 developer beta | |
# 1506c359-28af-4ee1-a043-42df9d496d38 iOS 14 public beta | |
# a98cc469-7f15-4e60-aca5-11a26d60f1e7 iOS 15 customer beta | |
# ce48f60c-f590-4157-a96f-41179ca08278 iOS 15 developer beta | |
# 9e12a7a5-36ac-4583-b4fb-484736c739a8 iOS 15 public beta | |
# 817ce601-f365-4294-8982-b00f547bbe4a iOS 16 customer beta | |
# a6050bca-50d8-4e45-adc2-f7333396a42c iOS 16 developer beta | |
# 7466521f-cc37-4267-8f46-78033fa700c2 iOS 16 public beta | |
# 6ce634ea-92a6-4cb9-9610-9c8ba98d67a6 iOS 17 customer beta | |
# 9dcdaf87-801d-42f6-8ec6-307bd2ab9955 iOS 17 developer beta | |
# 48407998-4446-46b0-9f57-f76b935dc223 iOS 17 public beta | |
# 7f27b76e-8bd5-4420-8c7e-cb0ac76d1d80 iOS 18 customer beta | |
# 41651cee-d0e2-442f-b786-85682ff6db86 iOS 18 developer beta | |
# c46ed8dd-1382-40bd-a153-2b6ad61292fd iOS 18 public beta | |
# 3a4d907d-83bd-4b2d-9f7b-98763071da91 iOS 18.x customer beta | |
# 9953ae7e-ec38-48d6-9d3c-5c1a15a536dc iOS 18.x developer beta | |
# 356d9da0-eee4-4c6c-bbe5-99b60eadddf0 tvOS release | |
# fe6f26f9-ec98-46d2-8faf-565375a83ba7 tvOS generic | |
# ebd90ea1-6216-4a7c-920e-666faccb2d50 tvOS 11 developer beta (returns 404) | |
# 5b220c65-fe50-460b-bac5-b6774b2ff475 tvOS 12 developer beta | |
# b79e95a7-1e51-4a6d-94f8-2bc2f9dbb000 tvOS 13 customer beta | |
# 975af5cb-019b-42db-9543-20327280f1b2 tvOS 13 developer beta | |
# a46c2f97-0afb-4a36-bcf6-8c0d74ec21be tvOS 14 customer beta | |
# 65254ac3-f331-4c19-8559-cbe22f5bc1a6 tvOS 14 developer beta | |
# 3565d2d0-06b5-450d-9c01-7086cdd13f97 tvOS 15 customer beta | |
# 4d0dcdf7-12f2-4ebf-9672-ac4a4459a8bc tvOS 15 developer beta | |
# 305f5233-93ed-45a4-9c91-985789b6506b tvOS 16 customer beta | |
# d6bac98b-9e2a-4f87-9aba-22c898b25d84 tvOS 16 developer beta | |
# 0c995cbe-84b5-4ea3-844a-a15a265ac0be tvOS 16 public beta | |
# 0e718292-408a-463d-bcc5-8ffc4bdeaabf tvOS 17 customer beta | |
# 61693fed-ab18-49f3-8983-7c3adf843913 tvOS 17 developer beta | |
# d9159cba-c93c-4e6d-8f9f-4d77b27b3a5e tvOS 17 public beta | |
# 1195a98c-04c7-43cb-90d6-d60267feff10 tvOS 18 customer beta | |
# 98847ed4-1c37-445c-9e7b-5b95d29281f2 tvOS 18 developer beta | |
# 879ce2f8-b7d1-420f-9935-58d647d6606a tvOS 18 public beta | |
# b82fcf9c-c284-41c9-8eb2-e69bf5a5269f watchOS release | |
# fe4c7f1c-f44c-4c00-b3df-eef225a1ac9d watchOS generic | |
# f659e06d-86a2-4bab-bcbb-61b7c60969ce watchOS 4 developer beta (returns 404) | |
# e841259b-ad2e-4046-b80f-ca96bc2e17f3 watchOS 5 developer beta | |
# 7303680f-f711-4020-acbd-58a706de6bf7 watchOS 6 customer beta | |
# d08cfd47-4a4a-4825-91b5-3353dfff194f watchOS 6 developer beta | |
# ff6df985-3cbe-4d54-ba5f-50d02428d2a3 watchOS 7 developer beta | |
# 6ac47c79-d0c4-42dc-b499-baa45e363c40 watchOS 7 public beta | |
# b407c130-d8af-42fc-ad7a-171efea5a3d0 watchOS 8 developer beta | |
# f755ea49-3d47-4829-9cdf-87aa76456282 watchOS 8 public beta | |
# 2778ab0c-de2e-46b9-83ce-f4b6fd659fa4 watchOS 9 customer beta | |
# 341f2a17-0024-46cd-968d-b4444ec3699f watchOS 9 developer beta | |
# 4935cf61-2a58-437a-be3f-4db423970e43 watchOS 9 public beta | |
# 982769a5-7551-424f-a599-7a855dddc9e8 watchOS 10 customer beta | |
# 7ae7f3b9-886a-437f-9b22-e9f017431b0e watchOS 10 developer beta | |
# f3d4d255-9db8-425c-bf9a-fea7dcdb940b watchOS 10 public beta | |
# 021091ad-06b8-410a-90ea-cd54d140d4d9 watchOS 11 customer beta | |
# 23d7265b-1000-47cf-8d0a-07144942db9e watchOS 11 developer beta | |
# 79b47e0c-cbce-4757-b84b-12a95db52f22 watchOS 11 public beta | |
# 0322d49d-d558-4ddf-bdff-c0443d0e6fac audioOS release | |
# 33c017cc-b820-4b88-8917-6776d7f42b66 audioOS generic | |
# b05ddb59-b26d-4c89-9d09-5fda15e99207 audioOS 14 customer beta | |
# 58ff8d56-1d77-4473-ba88-ee1690475e40 audioOS 15 customer beta | |
# 59377047-7b3f-45b9-8e99-294c0daf3c85 audioOS 16 customer beta | |
# 3c3d5f0c-1016-426a-9890-11d68820eb13 audioOS 16 public beta | |
# 17536d4c-1a9d-4169-bc62-920a3873f7a5 audioOS 17 customer beta | |
# f7655fc0-7a0a-43fa-b781-170a834a3108 audioOS 17 public beta | |
# bedbd9c7-738a-4060-958b-79da54a1f7ad audioOS 18 customer beta | |
# 1af931ed-e171-4dd0-b944-172cdebcd89d audioOS 18 public beta | |
# c59ff9d1-5468-4f6c-9e54-f68d5eeab93b visionOS release | |
# 5cb41593-0f8a-45ba-89c6-52928b9caaae visionOS generic | |
# 4d282764-95fe-4e0e-b7da-ea218fd1f75a visionOS 1 developer beta | |
# b2a6ec63-941e-4f6f-98ec-c6382510cada visionOS 2 customer beta | |
# 0bef3239-79ad-4d2a-99c3-2c05df2becf8 visionOS 2 developer beta | |
# 60b55e25-a8ed-4f45-826c-c1495a4ccc65 macOS release | |
# 02d8e57e-dd1c-4090-aa50-b4ed2aef0062 macOS generic | |
# 215447a0-bb03-4e18-8598-7b6b6e7d34fd macOS 11 customer beta | |
# ca60afc6-5954-46fd-8cb9-60dde6ac39fd macOS 11 developer beta | |
# 902eb66c-8e37-451f-b0f2-ffb3e878560b macOS 11 public beta | |
# a3799e8a-246d-4dee-b418-76b4519a15a2 macOS 12 customer beta | |
# 298e518d-b45e-4d36-94be-34a63d6777ec macOS 12 developer beta | |
# 9f86c787-7c59-45a7-a79a-9c164b00f866 macOS 12 public beta | |
# 3c45c074-41be-4b5b-a511-8592336e6783 macOS 13 customer beta | |
# 683e9586-8a82-4e5f-b0e7-767541864b8b macOS 13 developer beta | |
# 800034a9-994c-4ecc-af4d-7b3b2ee0a5a6 macOS 13 public beta | |
# 01b45520-b12e-48b3-b30f-46e2795b3eb1 macOS 14 customer beta | |
# 77c3bd36-d384-44e8-b550-05122d7da438 macOS 14 developer beta | |
# 707ddc61-9c3d-4040-a3d0-2a6521b1c2df macOS 14 public beta | |
# 374faeda-4d23-457d-9f73-ec84a286f4b3 macOS 15 customer beta | |
# 98df7800-8378-4469-93bf-5912da21a1e1 macOS 15 developer beta | |
# c8ba02c8-cc63-4388-99ee-a81d5a593283 macOS 15 public beta | |
# d422663f-c2c3-4ea0-89ca-b88696cd383a macOS 15.1 customer beta | |
# 1831c3e6-1dc4-4f6b-a9dc-7ae6a41d9af4 macOS 15.1 developer beta | |
if "$test"; then | |
source "$(dirname "$0")/test.sh"; | |
fi; | |
workers=(); | |
running=0; | |
failed=0; | |
n=0; | |
all=0; | |
if $rsr; then | |
if [ "$filter" = 'all' ] || [ "$filter" = 'ios' ]; then | |
#x=7; | |
x=4; | |
#if $legacy; then | |
# x=$((x+0)); | |
#fi; | |
if [ "${#devices}" -eq 0 ]; then | |
y="${#iOS_device}"; | |
else | |
y=0; | |
for ((i = 1; i <= ${#iOS_device}; i++)); do | |
d="${iOS_device[$i]}"; | |
if [[ "${devices[(ie)$d]}" -le "${#devices}" ]]; then | |
y=$((y+1)); | |
fi; | |
done; | |
fi; | |
all="$((all + x*y*${#iOS_version}))"; | |
fi; # ios | |
if [ "$filter" = 'all' ] || [ "$filter" = 'macos' ]; then | |
#x=7; | |
x=4; | |
#if $legacy; then | |
# x=$((x+0)); | |
#fi; | |
if [ "${#devices}" -eq 0 ]; then | |
y="${#macOS_device}"; | |
else | |
y=0; | |
for ((i = 1; i <= ${#macOS_device}; i++)); do | |
d="${macOS_device[$i]}"; | |
if [[ "${devices[(ie)$d]}" -le "${#devices}" ]]; then | |
y=$((y+1)); | |
fi; | |
done; | |
fi; | |
all="$((all + x*y*${#macOS_version}))"; | |
fi; # macos | |
else # rsr | |
if [ "$filter" = 'all' ] || [ "$filter" = 'ios' ]; then | |
x=10; | |
if $legacy; then | |
x=$((x+16)); | |
fi; | |
if [ "${#devices}" -eq 0 ]; then | |
y="${#iOS_device}"; | |
else | |
y=0; | |
for ((i = 1; i <= ${#iOS_device}; i++)); do | |
d="${iOS_device[$i]}"; | |
if [[ "${devices[(ie)$d]}" -le "${#devices}" ]]; then | |
y=$((y+1)); | |
fi; | |
done; | |
fi; | |
all="$((all + x*y*${#iOS_version}))"; | |
#x=13; | |
x=5; | |
if $legacy; then | |
x=$((x+3)); | |
fi; | |
if [ "${#devices}" -eq 0 ]; then | |
y="${#display_device}"; | |
else | |
y=0; | |
for ((i = 1; i <= ${#display_device}; i++)); do | |
d="${display_device[$i]}"; | |
if [[ "${devices[(ie)$d]}" -le "${#devices}" ]]; then | |
y=$((y+1)); | |
fi; | |
done; | |
fi; | |
all="$((all + x*y*${#iOS_version}))"; | |
fi; # ios | |
if [ "$filter" = 'all' ] || [ "$filter" = 'tvos' ]; then | |
x=7; | |
if $legacy; then | |
x=$((x+10)); | |
fi; | |
if [ "${#devices}" -eq 0 ]; then | |
y="${#tvOS_device}"; | |
else | |
y=0; | |
for ((i = 1; i <= ${#tvOS_device}; i++)); do | |
d="${tvOS_device[$i]}"; | |
if [[ "${devices[(ie)$d]}" -le "${#devices}" ]]; then | |
y=$((y+1)); | |
fi; | |
done; | |
fi; | |
all="$((all + x*y*${#tvOS_version}))"; | |
fi; # tvos | |
if [ "$filter" = 'all' ] || [ "$filter" = 'watchos' ]; then | |
x=7; | |
if $legacy; then | |
x=$((x+10)); | |
fi; | |
if [ "${#devices}" -eq 0 ]; then | |
y="${#watchOS_device}"; | |
else | |
y=0; | |
for ((i = 1; i <= ${#watchOS_device}; i++)); do | |
d="${watchOS_device[$i]}"; | |
if [[ "${devices[(ie)$d]}" -le "${#devices}" ]]; then | |
y=$((y+1)); | |
fi; | |
done; | |
fi; | |
all="$((all + x*y*${#watchOS_version}))"; | |
fi; # watchos | |
if [ "$filter" = 'all' ] || [ "$filter" = 'audioos' ]; then | |
x=5; | |
if $legacy; then | |
x=$((x+4)); | |
fi; | |
if [ "${#devices}" -eq 0 ]; then | |
y="${#audioOS_device}"; | |
else | |
y=0; | |
for ((i = 1; i <= ${#audioOS_device}; i++)); do | |
d="${audioOS_device[$i]}"; | |
if [[ "${devices[(ie)$d]}" -le "${#devices}" ]]; then | |
y=$((y+1)); | |
fi; | |
done; | |
fi; | |
all="$((all + x*y*${#audioOS_version}))"; | |
fi; # audioos | |
if [ "$filter" = 'all' ] || [ "$filter" = 'xros' ]; then | |
x=4; | |
#if $legacy; then | |
# x=$((x+1)); | |
#fi; | |
if [ "${#devices}" -eq 0 ]; then | |
y="${#xrOS_device}"; | |
else | |
y=0; | |
for ((i = 1; i <= ${#xrOS_device}; i++)); do | |
d="${xrOS_device[$i]}"; | |
if [[ "${devices[(ie)$d]}" -le "${#devices}" ]]; then | |
y=$((y+1)); | |
fi; | |
done; | |
fi; | |
all="$((all + x*y*${#xrOS_version}))"; | |
fi; # xros | |
if [ "$filter" = 'all' ] || [ "$filter" = 'macos' ]; then | |
x=18; | |
if $legacy; then | |
x=$((x+18)); | |
fi; | |
if [ "${#devices}" -eq 0 ]; then | |
y="${#macOS_device}"; | |
else | |
y=0; | |
for ((i = 1; i <= ${#macOS_device}; i++)); do | |
d="${macOS_device[$i]}"; | |
if [[ "${devices[(ie)$d]}" -le "${#devices}" ]]; then | |
y=$((y+1)); | |
fi; | |
done; | |
fi; | |
all="$((all + x*y*${#macOS_version}))"; | |
fi; # macos | |
fi; # rsr | |
printf '\r%d/%d' "$n" "$all" >&2; | |
waitfor() # pid | |
{ | |
if ! wait "$1"; then | |
ret=$?; | |
if $fatal; then | |
echo "Pid $1 exited with status $ret"; | |
exit 1; | |
else | |
failed=$((failed+1)); | |
fi; | |
fi; | |
if ! $debug; then | |
n="$((n+1))"; | |
fi; | |
} | |
_dl() # type audience device model version build extra | |
{ | |
extra=''; | |
if [ $# -ge 7 ] && ! [ -z "$7" ]; then | |
extra="$extra, $7"; | |
fi; | |
if ! [ -z "$version" ]; then | |
extra="$extra"', "RequestedProductVersion": "'"$version"'", "Supervised": true, "DelayRequested": false'; | |
fi; | |
num=0; | |
while true; do | |
if a="$(curl --cacert "$dir/AppleCA.pem" -s -S -f --retry 3 -H 'Content-Type: application/json' -H 'Accept: application/json' 'https://gdmf.apple.com/v2/assets' --data '{"ClientVersion":2, "AssetType":"'"$1"'", "AssetAudience":"'"$2"'", "ProductType":"'"$3"'", "HWModelStr":"'"$4"'", "ProductVersion":"'"$5"'", "Build":"'"$6"'", "BuildVersion":"'"$6"'", "CompatibilityVersion":20'"$extra"'}')"; then | |
break; | |
fi; | |
num=$((num+1)); | |
if [ "$num" -ge 3 ]; then | |
if [ $# -ge 7 ]; then | |
echo "Failed to fetch: $1 $2 $3 $4 $5 $6 $7" >&2; | |
else | |
echo "Failed to fetch: $1 $2 $3 $4 $5 $6" >&2; | |
fi; | |
return 1; | |
fi; | |
done; | |
a=("${(@s/./)a}"); | |
a="$(tr '_' '/' <<<"${a[2]}" | tr '-' '+')"; | |
while [ $((${#a} % 4)) -ne 0 ]; do | |
a="${a}="; | |
done; | |
a="$(base64 -d <<<"$a")"; | |
jq '.Assets' <<<"$a" >"$dir/$2-$3-$(jq -r '.PallasNonce' <<<"$a").json"; | |
} | |
dl() # type audience device model version build | |
{ | |
while [ "${#workers[@]}" -ge $num_workers ]; do | |
waitfor "${workers[1]}"; | |
workers[1]=(); | |
done; | |
if $debug; then | |
n="$((n+1))"; | |
printf 'dl %s (%d/%d)\n' "$*" "$n" "$all" >&2; | |
else | |
printf '\r%d/%d' "$n" "$all" >&2; | |
fi; | |
_dl "$@" & | |
workers+=("$!"); | |
} | |
if $rsr; then | |
if [ "$filter" = 'all' ] || [ "$filter" = 'ios' ]; then | |
for ((i = 1; i <= ${#iOS_device[@]}; i++)); do | |
d="${iOS_device[$i]}"; | |
m="${iOS_model[$i]}"; | |
if [ "${#devices}" -eq 0 ] || [[ "${devices[(ie)$d]}" -le "${#devices}" ]]; then | |
for ((j = 1; j <= ${#iOS_version[@]}; j++)); do | |
v="${iOS_version[$j]}"; | |
b="${iOS_build[$j]}"; | |