[
  {
    "path": ".gitignore",
    "content": ".DS_Store\n*.zip\nbackup/\n"
  },
  {
    "path": "ALCPlugFix/good.win.ALCPlugFix.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n    <key>KeepAlive</key>\n    <true/>\n    <key>Label</key>\n    <string>good.win.ALCPlugFix</string>\n    <key>ProgramArguments</key>\n    <array>\n        <string>/usr/bin/ALCPlugFix</string>\n    </array>\n    <key>RunAtLoad</key>\n    <true/>\n    <key>ServiceIPC</key>\n    <false/>\n</dict>\n</plist>\n"
  },
  {
    "path": "ALCPlugFix/install.command",
    "content": "#!/bin/bash\n\n\npath=${0%/*}\nsudo cp -a \"$path/ALCPlugFix\" /usr/bin\nsudo chmod 755 /usr/bin/ALCPlugFix\nsudo chown root:wheel /usr/bin/ALCPlugFix\nsudo cp -a \"$path/hda-verb\" /usr/bin\nsudo chmod 755 /usr/bin/hda-verb\nsudo chown root:wheel /usr/bin/hda-verb\nsudo cp -a \"$path/good.win.ALCPlugFix.plist\" /Library/LaunchAgents/\nsudo chmod 644 /Library/LaunchAgents/good.win.ALCPlugFix.plist\nsudo chown root:wheel /Library/LaunchAgents/good.win.ALCPlugFix.plist\nsudo launchctl load /Library/LaunchAgents/good.win.ALCPlugFix.plist\necho 'The installation of the ALCPlugFix daemon is complete'\necho 'Rebuild kextcache, please wait...'\nsudo chmod -Rf 755 /S*/L*/E*\nsudo chown -Rf 0:0 /S*/L*/E*\nsudo chmod -Rf 755 /L*/E*\nsudo chown -Rf 0:0 /L*/E*\nsudo rm -Rf /S*/L*/PrelinkedKernels/*\nsudo rm -Rf /S*/L*/Caches/com.apple.kext.caches/*\nsudo touch -f /S*/L*/E*\nsudo touch -f /L*/E*\nsudo kextcache -Boot -U /\necho 'Rebuild kextcache is complete'\nbash read -p 'Press any key to Exit'"
  },
  {
    "path": "ALCPlugFix/install双击自动卸载ALCPlugFix.command",
    "content": "#!/bin/bash\n\n\npath=${0%/*}\nsudo launchctl remove /Library/LaunchAgents/good.win.ALCPlugFix.plist\nsudo rm -rf /Library/LaunchAgents/good.win.ALCPlugFix.plist\nsudo rm -rf /usr/bin/ALCPlugFix\n\necho '重建缓存中，请稍候……'\nsudo chmod -Rf 755 /S*/L*/E*\nsudo chown -Rf 0:0 /S*/L*/E*\nsudo chmod -Rf 755 /L*/E*\nsudo chown -Rf 0:0 /L*/E*\nsudo rm -Rf /S*/L*/PrelinkedKernels/*\nsudo rm -Rf /S*/L*/Caches/com.apple.kext.caches/*\nsudo touch -f /S*/L*/E*\nsudo touch -f /L*/E*\nsudo kextcache -Boot -U /\necho '卸载ALCPlugFix守护进程完成！'\nbash read -p '按任何键退出'"
  },
  {
    "path": "ALCPlugFix/install双击自动安装.command",
    "content": "#!/bin/bash\n\n\npath=${0%/*}\nsudo cp -a \"$path/ALCPlugFix\" /usr/bin\nsudo chmod 755 /usr/bin/ALCPlugFix\nsudo chown root:wheel /usr/bin/ALCPlugFix\nsudo cp -a \"$path/hda-verb\" /usr/bin\nsudo chmod 755 /usr/bin/hda-verb\nsudo chown root:wheel /usr/bin/hda-verb\nsudo cp -a \"$path/good.win.ALCPlugFix.plist\" /Library/LaunchAgents/\nsudo chmod 644 /Library/LaunchAgents/good.win.ALCPlugFix.plist\nsudo chown root:wheel /Library/LaunchAgents/good.win.ALCPlugFix.plist\nsudo launchctl load /Library/LaunchAgents/good.win.ALCPlugFix.plist\necho '正在重建缓存中，请稍候......'\nsudo chmod -Rf 755 /S*/L*/E*\nsudo chown -Rf 0:0 /S*/L*/E*\nsudo chmod -Rf 755 /L*/E*\nsudo chown -Rf 0:0 /L*/E*\nsudo rm -Rf /S*/L*/PrelinkedKernels/*\nsudo rm -Rf /S*/L*/Caches/com.apple.kext.caches/*\nsudo touch -f /S*/L*/E*\nsudo touch -f /L*/E*\nsudo kextcache -Boot -U /\necho '重建缓存完毕！'\necho '安装ALCPlugFix守护进程完成！'\nbash read -p '按任何键退出'"
  },
  {
    "path": "ALCPlugFix/uninstall.command",
    "content": "#!/bin/bash\n\n\npath=${0%/*}\nsudo launchctl remove /Library/LaunchAgents/good.win.ALCPlugFix.plist\nsudo rm -rf /Library/LaunchAgents/good.win.ALCPlugFix.plist\nsudo rm -rf /usr/bin/ALCPlugFix\n\necho 'Rebuilding Kext Cache,please wait……'\nsudo chmod -Rf 755 /S*/L*/E*\nsudo chown -Rf 0:0 /S*/L*/E*\nsudo chmod -Rf 755 /L*/E*\nsudo chown -Rf 0:0 /L*/E*\nsudo rm -Rf /S*/L*/PrelinkedKernels/*\nsudo rm -Rf /S*/L*/Caches/com.apple.kext.caches/*\nsudo touch -f /S*/L*/E*\nsudo touch -f /L*/E*\nsudo kextcache -Boot -U /\necho 'Uninstall the ALCPlugFix daemon complete!'\nbash read -p 'Press any key to exit'"
  },
  {
    "path": "DisplayVendorID-dae/DisplayProductID-15e0",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>DisplayBacklight</key>\n\t<real>575.5</real>\n\t<key>DisplayBrightReflection</key>\n\t<real>573.10000000000002</real>\n\t<key>DisplayDarkReflection</key>\n\t<real>1.1000000000000001</real>\n\t<key>DisplayLeakage</key>\n\t<real>0.41899999999999998</real>\n\t<key>DisplayLowestLevel</key>\n\t<real>2</real>\n\t<key>DisplayLowestMeasured</key>\n\t<real>0.43230000000000002</real>\n\t<key>DisplayProductID</key>\n\t<integer>45061</integer>\n\t<key>DisplayProductName</key>\n\t<string>Color LCD</string>\n\t<key>DisplayVendorID</key>\n\t<integer>1552</integer>\n\t<key>IODisplayEDID</key>\n\t<data>\n\tAP///////wAGEBKgAAAAABwWAQS1MBt4Im+xp1VMniUMUFQAAAABAQEBAQEBAQEBAQEB\n\tAQEBtDuASnE4NEBQNmgAWMEQAAAawy+ASnE4NEBQNmgAWMEQAAAaAAAA/ABpTWFjCiAg\n\tICAgICAgAAAAAAAAQTGWARAAAAoBCiAgAIM=\n\t</data>\n\t<key>IOGFlags</key>\n\t<integer>4</integer>\n\t<key>scale-resolutions</key>\n\t<array>\n\t\t<data>\n\t\tAAAGQAAAA4QA\n\t\t</data>\n\t\t<data>\n\t\tAAALQAAABlQA\n\t\t</data>\n\t\t<data>\n\t\tAAAKAAAABaAA\n\t\t</data>\n\t</array>\n\t<key>target-default-ppmm</key>\n\t<real>10.069930100000001</real>\n</dict>\n</plist>\n"
  },
  {
    "path": "DisplayVendorID-dae/DisplayProductID-15e0_hidpi",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>DisplayProductID</key>\n\t<integer>45061</integer>\n\t<key>DisplayVendorID</key>\n\t<integer>1552</integer>\n\t<key>IODisplayEDID</key>\n\t<data>\n\tAP///////wAGEBKgAAAAABwWAQS1MBt4Im+xp1VMniUMUFQAAAABAQEBAQEBAQEBAQEB\n\tAQEBtDuASnE4NEBQNmgAWMEQAAAawy+ASnE4NEBQNmgAWMEQAAAaAAAA/ABpTWFjCiAg\n\tICAgICAgAAAAAAAAQTGWARAAAAoBCiAgAIM=\n\t</data>\n\t<key>scale-resolutions</key>\n\t<array>\n\t\t<data>\n\t\tAAAPAAAACHAAAAABACAAAA==\n\t\t</data>\n\t\t<data>\n\t\tAAAMgAAABwgAAAABACAAAA==\n\t\t</data>\n\t\t<data>\n\t\tAAALQAAABlQAAAABACAAAA==\n\t\t</data>\n\t\t<data>\n\t\tAAAHgAAABDgAAAABACAAAA==\n\t\t</data>\n\t\t<data>\n\t\tAAAGQAAAA4QAAAABACAAAA==\n\t\t</data>\n\t\t<data>\n\t\tAAAFoAAAAyoAAAABACAAAA==\n\t\t</data>\n\t</array>\n</dict>\n</plist>\n"
  },
  {
    "path": "DisplayVendorID-dae/Icons.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>board-ids</key>\n\t<dict>\n\t\t<key>Mac-189A3D4F975D5FFC</key>\n\t\t<dict>\n\t\t\t<key>display-resolution-preview-icon</key>\n\t\t\t<string>/System/Library/Displays/Contents/Resources/Overrides/Models/Mac-189A3D4F975D5FFC.tiff</string>\n\t\t\t<key>resolution-preview-height</key>\n\t\t\t<integer>83</integer>\n\t\t\t<key>resolution-preview-width</key>\n\t\t\t<integer>131</integer>\n\t\t\t<key>resolution-preview-x</key>\n\t\t\t<integer>47</integer>\n\t\t\t<key>resolution-preview-y</key>\n\t\t\t<integer>64</integer>\n\t\t</dict>\n\t\t<key>Mac-2BD1B31983FE1663</key>\n\t\t<dict>\n\t\t\t<key>display-resolution-preview-icon</key>\n\t\t\t<string>/System/Library/Displays/Contents/Resources/Overrides/Models/Mac-2BD1B31983FE1663.tiff</string>\n\t\t\t<key>resolution-preview-height</key>\n\t\t\t<integer>90</integer>\n\t\t\t<key>resolution-preview-width</key>\n\t\t\t<integer>144</integer>\n\t\t\t<key>resolution-preview-x</key>\n\t\t\t<integer>41</integer>\n\t\t\t<key>resolution-preview-y</key>\n\t\t\t<integer>67</integer>\n\t\t</dict>\n\t\t<key>Mac-3CBD00234E554E41</key>\n\t\t<dict>\n\t\t\t<key>display-resolution-preview-icon</key>\n\t\t\t<string>/System/Library/Displays/Contents/Resources/Overrides/Models/Mac-3CBD00234E554E41.tiff</string>\n\t\t\t<key>resolution-preview-height</key>\n\t\t\t<integer>90</integer>\n\t\t\t<key>resolution-preview-width</key>\n\t\t\t<integer>144</integer>\n\t\t\t<key>resolution-preview-x</key>\n\t\t\t<integer>41</integer>\n\t\t\t<key>resolution-preview-y</key>\n\t\t\t<integer>67</integer>\n\t\t</dict>\n\t\t<key>Mac-42FD25EABCABB274</key>\n\t\t<dict>\n\t\t\t<key>display-resolution-preview-icon</key>\n\t\t\t<string>/System/Library/Displays/Contents/Resources/Overrides/Models/Mac-42FD25EABCABB274.tiff</string>\n\t\t\t<key>resolution-preview-height</key>\n\t\t\t<integer>114</integer>\n\t\t\t<key>resolution-preview-width</key>\n\t\t\t<integer>202</integer>\n\t\t\t<key>resolution-preview-x</key>\n\t\t\t<integer>12</integer>\n\t\t\t<key>resolution-preview-y</key>\n\t\t\t<integer>71</integer>\n\t\t</dict>\n\t\t<key>Mac-4B682C642B45593E</key>\n\t\t<dict>\n\t\t\t<key>display-icon</key>\n\t\t\t<string>com.apple.imac-unibody-21</string>\n\t\t</dict>\n\t\t<key>Mac-65CE76090165799A</key>\n\t\t<dict>\n\t\t\t<key>display-resolution-preview-icon</key>\n\t\t\t<string>/System/Library/Displays/Contents/Resources/Overrides/Models/Mac-65CE76090165799A.tiff</string>\n\t\t\t<key>resolution-preview-height</key>\n\t\t\t<integer>114</integer>\n\t\t\t<key>resolution-preview-width</key>\n\t\t\t<integer>202</integer>\n\t\t\t<key>resolution-preview-x</key>\n\t\t\t<integer>12</integer>\n\t\t\t<key>resolution-preview-y</key>\n\t\t\t<integer>71</integer>\n\t\t</dict>\n\t\t<key>Mac-AFD8A9D944EA4843</key>\n\t\t<dict>\n\t\t\t<key>display-resolution-preview-icon</key>\n\t\t\t<string>/System/Library/Displays/Contents/Resources/Overrides/Models/Mac-AFD8A9D944EA4843.tiff</string>\n\t\t\t<key>resolution-preview-height</key>\n\t\t\t<integer>83</integer>\n\t\t\t<key>resolution-preview-width</key>\n\t\t\t<integer>131</integer>\n\t\t\t<key>resolution-preview-x</key>\n\t\t\t<integer>47</integer>\n\t\t\t<key>resolution-preview-y</key>\n\t\t\t<integer>64</integer>\n\t\t</dict>\n\t\t<key>Mac-B809C3757DA9BB8D</key>\n\t\t<dict>\n\t\t\t<key>display-resolution-preview-icon</key>\n\t\t\t<string>/System/Library/Displays/Contents/Resources/Overrides/Models/Mac-B809C3757DA9BB8D.tiff</string>\n\t\t\t<key>resolution-preview-height</key>\n\t\t\t<integer>114</integer>\n\t\t\t<key>resolution-preview-width</key>\n\t\t\t<integer>202</integer>\n\t\t\t<key>resolution-preview-x</key>\n\t\t\t<integer>12</integer>\n\t\t\t<key>resolution-preview-y</key>\n\t\t\t<integer>71</integer>\n\t\t</dict>\n\t\t<key>Mac-C3EC7CD22292981F</key>\n\t\t<dict>\n\t\t\t<key>display-resolution-preview-icon</key>\n\t\t\t<string>/System/Library/Displays/Contents/Resources/Overrides/Models/Mac-C3EC7CD22292981F.tiff</string>\n\t\t\t<key>resolution-preview-height</key>\n\t\t\t<integer>90</integer>\n\t\t\t<key>resolution-preview-width</key>\n\t\t\t<integer>144</integer>\n\t\t\t<key>resolution-preview-x</key>\n\t\t\t<integer>41</integer>\n\t\t\t<key>resolution-preview-y</key>\n\t\t\t<integer>67</integer>\n\t\t</dict>\n\t\t<key>Mac-DB15BD556843C820</key>\n\t\t<dict>\n\t\t\t<key>display-resolution-preview-icon</key>\n\t\t\t<string>/System/Library/Displays/Contents/Resources/Overrides/Models/Mac-DB15BD556843C820.tiff</string>\n\t\t\t<key>resolution-preview-height</key>\n\t\t\t<integer>114</integer>\n\t\t\t<key>resolution-preview-width</key>\n\t\t\t<integer>202</integer>\n\t\t\t<key>resolution-preview-x</key>\n\t\t\t<integer>12</integer>\n\t\t\t<key>resolution-preview-y</key>\n\t\t\t<integer>71</integer>\n\t\t</dict>\n\t\t<key>Mac-E43C1C25D4880AD6</key>\n\t\t<dict>\n\t\t\t<key>display-resolution-preview-icon</key>\n\t\t\t<string>/System/Library/Displays/Contents/Resources/Overrides/Models/Mac-E43C1C25D4880AD6.tiff</string>\n\t\t\t<key>resolution-preview-height</key>\n\t\t\t<integer>83</integer>\n\t\t\t<key>resolution-preview-width</key>\n\t\t\t<integer>131</integer>\n\t\t\t<key>resolution-preview-x</key>\n\t\t\t<integer>47</integer>\n\t\t\t<key>resolution-preview-y</key>\n\t\t\t<integer>64</integer>\n\t\t</dict>\n\t\t<key>Mac-FA842E06C61E91C5</key>\n\t\t<dict>\n\t\t\t<key>display-resolution-preview-icon</key>\n\t\t\t<string>/System/Library/Displays/Contents/Resources/Overrides/Models/Mac-FA842E06C61E91C5.tiff</string>\n\t\t\t<key>resolution-preview-height</key>\n\t\t\t<integer>114</integer>\n\t\t\t<key>resolution-preview-width</key>\n\t\t\t<integer>202</integer>\n\t\t\t<key>resolution-preview-x</key>\n\t\t\t<integer>12</integer>\n\t\t\t<key>resolution-preview-y</key>\n\t\t\t<integer>71</integer>\n\t\t</dict>\n\t</dict>\n\t<key>vendors</key>\n\t<dict>\n\t\t<key>1e6d</key>\n\t\t<dict>\n\t\t\t<key>products</key>\n\t\t\t<dict>\n\t\t\t\t<key>5b10</key>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>display-icon</key>\n\t\t\t\t\t<string>/System/Library/Displays/Contents/Resources/Overrides/DisplayVendorID-1e6d/DisplayProductID-5b10.icns</string>\n\t\t\t\t\t<key>display-resolution-preview-icon</key>\n\t\t\t\t\t<string>/System/Library/Displays/Contents/Resources/Overrides/DisplayVendorID-1e6d/DisplayProductID-5b10.tiff</string>\n\t\t\t\t\t<key>resolution-preview-height</key>\n\t\t\t\t\t<integer>90</integer>\n\t\t\t\t\t<key>resolution-preview-width</key>\n\t\t\t\t\t<integer>160</integer>\n\t\t\t\t\t<key>resolution-preview-x</key>\n\t\t\t\t\t<integer>33</integer>\n\t\t\t\t\t<key>resolution-preview-y</key>\n\t\t\t\t\t<integer>47</integer>\n\t\t\t\t</dict>\n\t\t\t\t<key>5b11</key>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>display-icon</key>\n\t\t\t\t\t<string>/System/Library/Displays/Contents/Resources/Overrides/DisplayVendorID-1e6d/DisplayProductID-5b11.icns</string>\n\t\t\t\t\t<key>display-resolution-preview-icon</key>\n\t\t\t\t\t<string>/System/Library/Displays/Contents/Resources/Overrides/DisplayVendorID-1e6d/DisplayProductID-5b11.tiff</string>\n\t\t\t\t\t<key>resolution-preview-height</key>\n\t\t\t\t\t<integer>114</integer>\n\t\t\t\t\t<key>resolution-preview-width</key>\n\t\t\t\t\t<integer>202</integer>\n\t\t\t\t\t<key>resolution-preview-x</key>\n\t\t\t\t\t<integer>11</integer>\n\t\t\t\t\t<key>resolution-preview-y</key>\n\t\t\t\t\t<integer>47</integer>\n\t\t\t\t</dict>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<key>610</key>\n\t\t<dict>\n\t\t\t<key>display-icon</key>\n\t\t\t<string>com.apple.cinema-display</string>\n\t\t\t<key>products</key>\n\t\t\t<dict>\n\t\t\t\t<key>9226</key>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>display-icon</key>\n\t\t\t\t\t<string>com.apple.led-cinema-display-27</string>\n\t\t\t\t</dict>\n\t\t\t\t<key>9227</key>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>display-icon</key>\n\t\t\t\t\t<string>com.apple.led-cinema-display-27</string>\n\t\t\t\t</dict>\n\t\t\t\t<key>9236</key>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>display-icon</key>\n\t\t\t\t\t<string>com.apple.led-cinema-display-24</string>\n\t\t\t\t</dict>\n\t\t\t\t<key>a027-9d9da0</key>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>display-resolution-preview-icon</key>\n\t\t\t\t\t<string>/System/Library/Displays/Contents/Resources/Overrides/DisplayVendorID-610/DisplayProductID-a027-9d9da0.tiff</string>\n\t\t\t\t\t<key>resolution-preview-height</key>\n\t\t\t\t\t<integer>76</integer>\n\t\t\t\t\t<key>resolution-preview-width</key>\n\t\t\t\t\t<integer>122</integer>\n\t\t\t\t\t<key>resolution-preview-x</key>\n\t\t\t\t\t<integer>52</integer>\n\t\t\t\t\t<key>resolution-preview-y</key>\n\t\t\t\t\t<integer>66</integer>\n\t\t\t\t</dict>\n\t\t\t\t<key>a027-e1e1df</key>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>display-resolution-preview-icon</key>\n\t\t\t\t\t<string>/System/Library/Displays/Contents/Resources/Overrides/DisplayVendorID-610/DisplayProductID-a027-e1e1df.tiff</string>\n\t\t\t\t\t<key>resolution-preview-height</key>\n\t\t\t\t\t<integer>76</integer>\n\t\t\t\t\t<key>resolution-preview-width</key>\n\t\t\t\t\t<integer>122</integer>\n\t\t\t\t\t<key>resolution-preview-x</key>\n\t\t\t\t\t<integer>52</integer>\n\t\t\t\t\t<key>resolution-preview-y</key>\n\t\t\t\t\t<integer>66</integer>\n\t\t\t\t</dict>\n\t\t\t\t<key>a027-e8c9c3</key>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>display-resolution-preview-icon</key>\n\t\t\t\t\t<string>/System/Library/Displays/Contents/Resources/Overrides/DisplayVendorID-610/DisplayProductID-a027-e8c9c3.tiff</string>\n\t\t\t\t\t<key>resolution-preview-height</key>\n\t\t\t\t\t<integer>76</integer>\n\t\t\t\t\t<key>resolution-preview-width</key>\n\t\t\t\t\t<integer>122</integer>\n\t\t\t\t\t<key>resolution-preview-x</key>\n\t\t\t\t\t<integer>52</integer>\n\t\t\t\t\t<key>resolution-preview-y</key>\n\t\t\t\t\t<integer>66</integer>\n\t\t\t\t</dict>\n\t\t\t\t<key>a027-ebd7bf</key>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>display-resolution-preview-icon</key>\n\t\t\t\t\t<string>/System/Library/Displays/Contents/Resources/Overrides/DisplayVendorID-610/DisplayProductID-a027-ebd7bf.tiff</string>\n\t\t\t\t\t<key>resolution-preview-height</key>\n\t\t\t\t\t<integer>76</integer>\n\t\t\t\t\t<key>resolution-preview-width</key>\n\t\t\t\t\t<integer>122</integer>\n\t\t\t\t\t<key>resolution-preview-x</key>\n\t\t\t\t\t<integer>52</integer>\n\t\t\t\t\t<key>resolution-preview-y</key>\n\t\t\t\t\t<integer>66</integer>\n\t\t\t\t</dict>\n\t\t\t\t<key>a028-9d9da0</key>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>display-resolution-preview-icon</key>\n\t\t\t\t\t<string>/System/Library/Displays/Contents/Resources/Overrides/DisplayVendorID-610/DisplayProductID-a028-9d9da0.tiff</string>\n\t\t\t\t\t<key>resolution-preview-height</key>\n\t\t\t\t\t<integer>76</integer>\n\t\t\t\t\t<key>resolution-preview-width</key>\n\t\t\t\t\t<integer>122</integer>\n\t\t\t\t\t<key>resolution-preview-x</key>\n\t\t\t\t\t<integer>52</integer>\n\t\t\t\t\t<key>resolution-preview-y</key>\n\t\t\t\t\t<integer>66</integer>\n\t\t\t\t</dict>\n\t\t\t\t<key>a028-e1e1df</key>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>display-resolution-preview-icon</key>\n\t\t\t\t\t<string>/System/Library/Displays/Contents/Resources/Overrides/DisplayVendorID-610/DisplayProductID-a028-e1e1df.tiff</string>\n\t\t\t\t\t<key>resolution-preview-height</key>\n\t\t\t\t\t<integer>76</integer>\n\t\t\t\t\t<key>resolution-preview-width</key>\n\t\t\t\t\t<integer>122</integer>\n\t\t\t\t\t<key>resolution-preview-x</key>\n\t\t\t\t\t<integer>52</integer>\n\t\t\t\t\t<key>resolution-preview-y</key>\n\t\t\t\t\t<integer>66</integer>\n\t\t\t\t</dict>\n\t\t\t\t<key>a028-e8c9c3</key>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>display-resolution-preview-icon</key>\n\t\t\t\t\t<string>/System/Library/Displays/Contents/Resources/Overrides/DisplayVendorID-610/DisplayProductID-a028-e8c9c3.tiff</string>\n\t\t\t\t\t<key>resolution-preview-height</key>\n\t\t\t\t\t<integer>76</integer>\n\t\t\t\t\t<key>resolution-preview-width</key>\n\t\t\t\t\t<integer>122</integer>\n\t\t\t\t\t<key>resolution-preview-x</key>\n\t\t\t\t\t<integer>52</integer>\n\t\t\t\t\t<key>resolution-preview-y</key>\n\t\t\t\t\t<integer>66</integer>\n\t\t\t\t</dict>\n\t\t\t\t<key>a028-ebd7bf</key>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>display-resolution-preview-icon</key>\n\t\t\t\t\t<string>/System/Library/Displays/Contents/Resources/Overrides/DisplayVendorID-610/DisplayProductID-a028-ebd7bf.tiff</string>\n\t\t\t\t\t<key>resolution-preview-height</key>\n\t\t\t\t\t<integer>76</integer>\n\t\t\t\t\t<key>resolution-preview-width</key>\n\t\t\t\t\t<integer>122</integer>\n\t\t\t\t\t<key>resolution-preview-x</key>\n\t\t\t\t\t<integer>52</integer>\n\t\t\t\t\t<key>resolution-preview-y</key>\n\t\t\t\t\t<integer>66</integer>\n\t\t\t\t</dict>\n\t\t\t\t<key>a029</key>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>display-resolution-preview-icon</key>\n\t\t\t\t\t<string>/System/Library/Displays/Contents/Resources/Overrides/DisplayVendorID-610/DisplayProductID-a029.tiff</string>\n\t\t\t\t\t<key>resolution-preview-height</key>\n\t\t\t\t\t<integer>83</integer>\n\t\t\t\t\t<key>resolution-preview-width</key>\n\t\t\t\t\t<integer>131</integer>\n\t\t\t\t\t<key>resolution-preview-x</key>\n\t\t\t\t\t<integer>47</integer>\n\t\t\t\t\t<key>resolution-preview-y</key>\n\t\t\t\t\t<integer>64</integer>\n\t\t\t\t</dict>\n\t\t\t\t<key>a02a</key>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>display-resolution-preview-icon</key>\n\t\t\t\t\t<string>/System/Library/Displays/Contents/Resources/Overrides/DisplayVendorID-610/DisplayProductID-a02a.tiff</string>\n\t\t\t\t\t<key>resolution-preview-height</key>\n\t\t\t\t\t<integer>83</integer>\n\t\t\t\t\t<key>resolution-preview-width</key>\n\t\t\t\t\t<integer>131</integer>\n\t\t\t\t\t<key>resolution-preview-x</key>\n\t\t\t\t\t<integer>47</integer>\n\t\t\t\t\t<key>resolution-preview-y</key>\n\t\t\t\t\t<integer>64</integer>\n\t\t\t\t</dict>\n\t\t\t\t<key>a02e</key>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>display-resolution-preview-icon</key>\n\t\t\t\t\t<string>/System/Library/Displays/Contents/Resources/Overrides/DisplayVendorID-610/DisplayProductID-a02e.tiff</string>\n\t\t\t\t\t<key>resolution-preview-height</key>\n\t\t\t\t\t<integer>90</integer>\n\t\t\t\t\t<key>resolution-preview-width</key>\n\t\t\t\t\t<integer>144</integer>\n\t\t\t\t\t<key>resolution-preview-x</key>\n\t\t\t\t\t<integer>41</integer>\n\t\t\t\t\t<key>resolution-preview-y</key>\n\t\t\t\t\t<integer>67</integer>\n\t\t\t\t</dict>\n\t\t\t\t<key>a02f</key>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>display-resolution-preview-icon</key>\n\t\t\t\t\t<string>/System/Library/Displays/Contents/Resources/Overrides/DisplayVendorID-610/DisplayProductID-a02f.tiff</string>\n\t\t\t\t\t<key>resolution-preview-height</key>\n\t\t\t\t\t<integer>90</integer>\n\t\t\t\t\t<key>resolution-preview-width</key>\n\t\t\t\t\t<integer>144</integer>\n\t\t\t\t\t<key>resolution-preview-x</key>\n\t\t\t\t\t<integer>41</integer>\n\t\t\t\t\t<key>resolution-preview-y</key>\n\t\t\t\t\t<integer>67</integer>\n\t\t\t\t</dict>\n\t\t\t\t<key>a030-9d9da0</key>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>display-resolution-preview-icon</key>\n\t\t\t\t\t<string>/System/Library/Displays/Contents/Resources/Overrides/DisplayVendorID-610/DisplayProductID-a030-9d9da0.tiff</string>\n\t\t\t\t\t<key>resolution-preview-height</key>\n\t\t\t\t\t<integer>92</integer>\n\t\t\t\t\t<key>resolution-preview-width</key>\n\t\t\t\t\t<integer>147</integer>\n\t\t\t\t\t<key>resolution-preview-x</key>\n\t\t\t\t\t<integer>40</integer>\n\t\t\t\t\t<key>resolution-preview-y</key>\n\t\t\t\t\t<integer>62</integer>\n\t\t\t\t</dict>\n\t\t\t\t<key>a030-e1e1df</key>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>display-resolution-preview-icon</key>\n\t\t\t\t\t<string>/System/Library/Displays/Contents/Resources/Overrides/DisplayVendorID-610/DisplayProductID-a030-e1e1df.tiff</string>\n\t\t\t\t\t<key>resolution-preview-height</key>\n\t\t\t\t\t<integer>92</integer>\n\t\t\t\t\t<key>resolution-preview-width</key>\n\t\t\t\t\t<integer>147</integer>\n\t\t\t\t\t<key>resolution-preview-x</key>\n\t\t\t\t\t<integer>40</integer>\n\t\t\t\t\t<key>resolution-preview-y</key>\n\t\t\t\t\t<integer>62</integer>\n\t\t\t\t</dict>\n\t\t\t\t<key>a031-9d9da0</key>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>display-resolution-preview-icon</key>\n\t\t\t\t\t<string>/System/Library/Displays/Contents/Resources/Overrides/DisplayVendorID-610/DisplayProductID-a030-9d9da0.tiff</string>\n\t\t\t\t\t<key>resolution-preview-height</key>\n\t\t\t\t\t<integer>92</integer>\n\t\t\t\t\t<key>resolution-preview-width</key>\n\t\t\t\t\t<integer>147</integer>\n\t\t\t\t\t<key>resolution-preview-x</key>\n\t\t\t\t\t<integer>40</integer>\n\t\t\t\t\t<key>resolution-preview-y</key>\n\t\t\t\t\t<integer>62</integer>\n\t\t\t\t</dict>\n\t\t\t\t<key>a031-e1e1df</key>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>display-resolution-preview-icon</key>\n\t\t\t\t\t<string>/System/Library/Displays/Contents/Resources/Overrides/DisplayVendorID-610/DisplayProductID-a030-e1e1df.tiff</string>\n\t\t\t\t\t<key>resolution-preview-height</key>\n\t\t\t\t\t<integer>92</integer>\n\t\t\t\t\t<key>resolution-preview-width</key>\n\t\t\t\t\t<integer>147</integer>\n\t\t\t\t\t<key>resolution-preview-x</key>\n\t\t\t\t\t<integer>40</integer>\n\t\t\t\t\t<key>resolution-preview-y</key>\n\t\t\t\t\t<integer>62</integer>\n\t\t\t\t</dict>\n\t\t\t\t<key>a032</key>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>display-resolution-preview-icon</key>\n\t\t\t\t\t<string>/System/Library/Displays/Contents/Resources/Overrides/DisplayVendorID-610/DisplayProductID-a032.tiff</string>\n\t\t\t\t\t<key>resolution-preview-height</key>\n\t\t\t\t\t<integer>90</integer>\n\t\t\t\t\t<key>resolution-preview-width</key>\n\t\t\t\t\t<integer>160</integer>\n\t\t\t\t\t<key>resolution-preview-x</key>\n\t\t\t\t\t<integer>33</integer>\n\t\t\t\t\t<key>resolution-preview-y</key>\n\t\t\t\t\t<integer>68</integer>\n\t\t\t\t</dict>\n\t\t\t\t<key>a033-9d9da0</key>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>display-resolution-preview-icon</key>\n\t\t\t\t\t<string>/System/Library/Displays/Contents/Resources/Overrides/DisplayVendorID-610/DisplayProductID-a033-9d9da0.tiff</string>\n\t\t\t\t\t<key>resolution-preview-height</key>\n\t\t\t\t\t<integer>83</integer>\n\t\t\t\t\t<key>resolution-preview-width</key>\n\t\t\t\t\t<integer>131</integer>\n\t\t\t\t\t<key>resolution-preview-x</key>\n\t\t\t\t\t<integer>48</integer>\n\t\t\t\t\t<key>resolution-preview-y</key>\n\t\t\t\t\t<integer>62</integer>\n\t\t\t\t</dict>\n\t\t\t\t<key>a033-e1e1df</key>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>display-resolution-preview-icon</key>\n\t\t\t\t\t<string>/System/Library/Displays/Contents/Resources/Overrides/DisplayVendorID-610/DisplayProductID-a033-e1e1df.tiff</string>\n\t\t\t\t\t<key>resolution-preview-height</key>\n\t\t\t\t\t<integer>83</integer>\n\t\t\t\t\t<key>resolution-preview-width</key>\n\t\t\t\t\t<integer>131</integer>\n\t\t\t\t\t<key>resolution-preview-x</key>\n\t\t\t\t\t<integer>48</integer>\n\t\t\t\t\t<key>resolution-preview-y</key>\n\t\t\t\t\t<integer>62</integer>\n\t\t\t\t</dict>\n\t\t\t\t<key>a034-9d9da0</key>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>display-resolution-preview-icon</key>\n\t\t\t\t\t<string>/System/Library/Displays/Contents/Resources/Overrides/DisplayVendorID-610/DisplayProductID-a033-9d9da0.tiff</string>\n\t\t\t\t\t<key>resolution-preview-height</key>\n\t\t\t\t\t<integer>83</integer>\n\t\t\t\t\t<key>resolution-preview-width</key>\n\t\t\t\t\t<integer>131</integer>\n\t\t\t\t\t<key>resolution-preview-x</key>\n\t\t\t\t\t<integer>48</integer>\n\t\t\t\t\t<key>resolution-preview-y</key>\n\t\t\t\t\t<integer>62</integer>\n\t\t\t\t</dict>\n\t\t\t\t<key>a034-e1e1df</key>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>display-resolution-preview-icon</key>\n\t\t\t\t\t<string>/System/Library/Displays/Contents/Resources/Overrides/DisplayVendorID-610/DisplayProductID-a033-e1e1df.tiff</string>\n\t\t\t\t\t<key>resolution-preview-height</key>\n\t\t\t\t\t<integer>83</integer>\n\t\t\t\t\t<key>resolution-preview-width</key>\n\t\t\t\t\t<integer>131</integer>\n\t\t\t\t\t<key>resolution-preview-x</key>\n\t\t\t\t\t<integer>48</integer>\n\t\t\t\t\t<key>resolution-preview-y</key>\n\t\t\t\t\t<integer>62</integer>\n\t\t\t\t</dict>\n\t\t\t\t<key>a037-9d9da0</key>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>display-resolution-preview-icon</key>\n\t\t\t\t\t<string>/System/Library/Displays/Contents/Resources/Overrides/DisplayVendorID-610/DisplayProductID-a033-9d9da0.tiff</string>\n\t\t\t\t\t<key>resolution-preview-height</key>\n\t\t\t\t\t<integer>83</integer>\n\t\t\t\t\t<key>resolution-preview-width</key>\n\t\t\t\t\t<integer>131</integer>\n\t\t\t\t\t<key>resolution-preview-x</key>\n\t\t\t\t\t<integer>48</integer>\n\t\t\t\t\t<key>resolution-preview-y</key>\n\t\t\t\t\t<integer>62</integer>\n\t\t\t\t</dict>\n\t\t\t\t<key>a037-e1e1df</key>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>display-resolution-preview-icon</key>\n\t\t\t\t\t<string>/System/Library/Displays/Contents/Resources/Overrides/DisplayVendorID-610/DisplayProductID-a033-e1e1df.tiff</string>\n\t\t\t\t\t<key>resolution-preview-height</key>\n\t\t\t\t\t<integer>83</integer>\n\t\t\t\t\t<key>resolution-preview-width</key>\n\t\t\t\t\t<integer>131</integer>\n\t\t\t\t\t<key>resolution-preview-x</key>\n\t\t\t\t\t<integer>48</integer>\n\t\t\t\t\t<key>resolution-preview-y</key>\n\t\t\t\t\t<integer>62</integer>\n\t\t\t\t</dict>\n\t\t\t\t<key>a038-9d9da0</key>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>display-resolution-preview-icon</key>\n\t\t\t\t\t<string>/System/Library/Displays/Contents/Resources/Overrides/DisplayVendorID-610/DisplayProductID-a030-9d9da0.tiff</string>\n\t\t\t\t\t<key>resolution-preview-height</key>\n\t\t\t\t\t<integer>92</integer>\n\t\t\t\t\t<key>resolution-preview-width</key>\n\t\t\t\t\t<integer>147</integer>\n\t\t\t\t\t<key>resolution-preview-x</key>\n\t\t\t\t\t<integer>40</integer>\n\t\t\t\t\t<key>resolution-preview-y</key>\n\t\t\t\t\t<integer>62</integer>\n\t\t\t\t</dict>\n\t\t\t\t<key>a038-e1e1df</key>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>display-resolution-preview-icon</key>\n\t\t\t\t\t<string>/System/Library/Displays/Contents/Resources/Overrides/DisplayVendorID-610/DisplayProductID-a030-e1e1df.tiff</string>\n\t\t\t\t\t<key>resolution-preview-height</key>\n\t\t\t\t\t<integer>92</integer>\n\t\t\t\t\t<key>resolution-preview-width</key>\n\t\t\t\t\t<integer>147</integer>\n\t\t\t\t\t<key>resolution-preview-x</key>\n\t\t\t\t\t<integer>40</integer>\n\t\t\t\t\t<key>resolution-preview-y</key>\n\t\t\t\t\t<integer>62</integer>\n\t\t\t\t</dict>\n\t\t\t\t<key>ae11</key>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>display-resolution-preview-icon</key>\n\t\t\t\t\t<string>/System/Library/Displays/Contents/Resources/Overrides/Models/Mac-65CE76090165799A.tiff</string>\n\t\t\t\t\t<key>resolution-preview-height</key>\n\t\t\t\t\t<integer>114</integer>\n\t\t\t\t\t<key>resolution-preview-width</key>\n\t\t\t\t\t<integer>202</integer>\n\t\t\t\t\t<key>resolution-preview-x</key>\n\t\t\t\t\t<integer>12</integer>\n\t\t\t\t\t<key>resolution-preview-y</key>\n\t\t\t\t\t<integer>71</integer>\n\t\t\t\t</dict>\n\t\t\t\t<key>ae12</key>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>display-resolution-preview-icon</key>\n\t\t\t\t\t<string>/System/Library/Displays/Contents/Resources/Overrides/Models/Mac-65CE76090165799A.tiff</string>\n\t\t\t\t\t<key>resolution-preview-height</key>\n\t\t\t\t\t<integer>114</integer>\n\t\t\t\t\t<key>resolution-preview-width</key>\n\t\t\t\t\t<integer>202</integer>\n\t\t\t\t\t<key>resolution-preview-x</key>\n\t\t\t\t\t<integer>12</integer>\n\t\t\t\t\t<key>resolution-preview-y</key>\n\t\t\t\t\t<integer>71</integer>\n\t\t\t\t</dict>\n\t\t\t\t<key>ae13</key>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>display-resolution-preview-icon</key>\n\t\t\t\t\t<string>/System/Library/Displays/Contents/Resources/Overrides/Models/Mac-65CE76090165799A.tiff</string>\n\t\t\t\t\t<key>resolution-preview-height</key>\n\t\t\t\t\t<integer>114</integer>\n\t\t\t\t\t<key>resolution-preview-width</key>\n\t\t\t\t\t<integer>202</integer>\n\t\t\t\t\t<key>resolution-preview-x</key>\n\t\t\t\t\t<integer>12</integer>\n\t\t\t\t\t<key>resolution-preview-y</key>\n\t\t\t\t\t<integer>71</integer>\n\t\t\t\t</dict>\n\t\t\t\t<key>ae15</key>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>display-resolution-preview-icon</key>\n\t\t\t\t\t<string>/System/Library/Displays/Contents/Resources/Overrides/Models/Mac-65CE76090165799A.tiff</string>\n\t\t\t\t\t<key>resolution-preview-height</key>\n\t\t\t\t\t<integer>114</integer>\n\t\t\t\t\t<key>resolution-preview-width</key>\n\t\t\t\t\t<integer>202</integer>\n\t\t\t\t\t<key>resolution-preview-x</key>\n\t\t\t\t\t<integer>12</integer>\n\t\t\t\t\t<key>resolution-preview-y</key>\n\t\t\t\t\t<integer>71</integer>\n\t\t\t\t</dict>\n\t\t\t\t<key>ae16</key>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>display-resolution-preview-icon</key>\n\t\t\t\t\t<string>/System/Library/Displays/Contents/Resources/Overrides/Models/Mac-65CE76090165799A.tiff</string>\n\t\t\t\t\t<key>resolution-preview-height</key>\n\t\t\t\t\t<integer>114</integer>\n\t\t\t\t\t<key>resolution-preview-width</key>\n\t\t\t\t\t<integer>202</integer>\n\t\t\t\t\t<key>resolution-preview-x</key>\n\t\t\t\t\t<integer>12</integer>\n\t\t\t\t\t<key>resolution-preview-y</key>\n\t\t\t\t\t<integer>71</integer>\n\t\t\t\t</dict>\n\t\t\t\t<key>ae17</key>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>display-resolution-preview-icon</key>\n\t\t\t\t\t<string>/System/Library/Displays/Contents/Resources/Overrides/Models/Mac-65CE76090165799A.tiff</string>\n\t\t\t\t\t<key>resolution-preview-height</key>\n\t\t\t\t\t<integer>114</integer>\n\t\t\t\t\t<key>resolution-preview-width</key>\n\t\t\t\t\t<integer>202</integer>\n\t\t\t\t\t<key>resolution-preview-x</key>\n\t\t\t\t\t<integer>12</integer>\n\t\t\t\t\t<key>resolution-preview-y</key>\n\t\t\t\t\t<integer>71</integer>\n\t\t\t\t</dict>\n\t\t\t\t<key>ae19</key>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>display-resolution-preview-icon</key>\n\t\t\t\t\t<string>/System/Library/Displays/Contents/Resources/Overrides/DisplayVendorID-610/DisplayProductID-a032.tiff</string>\n\t\t\t\t\t<key>resolution-preview-height</key>\n\t\t\t\t\t<integer>90</integer>\n\t\t\t\t\t<key>resolution-preview-width</key>\n\t\t\t\t\t<integer>160</integer>\n\t\t\t\t\t<key>resolution-preview-x</key>\n\t\t\t\t\t<integer>33</integer>\n\t\t\t\t\t<key>resolution-preview-y</key>\n\t\t\t\t\t<integer>68</integer>\n\t\t\t\t</dict>\n\t\t\t\t<key>ae1a</key>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>display-resolution-preview-icon</key>\n\t\t\t\t\t<string>/System/Library/Displays/Contents/Resources/Overrides/DisplayVendorID-610/DisplayProductID-a032.tiff</string>\n\t\t\t\t\t<key>resolution-preview-height</key>\n\t\t\t\t\t<integer>90</integer>\n\t\t\t\t\t<key>resolution-preview-width</key>\n\t\t\t\t\t<integer>160</integer>\n\t\t\t\t\t<key>resolution-preview-x</key>\n\t\t\t\t\t<integer>33</integer>\n\t\t\t\t\t<key>resolution-preview-y</key>\n\t\t\t\t\t<integer>68</integer>\n\t\t\t\t</dict>\n\t\t\t\t<key>ae1b</key>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>display-resolution-preview-icon</key>\n\t\t\t\t\t<string>/System/Library/Displays/Contents/Resources/Overrides/DisplayVendorID-610/DisplayProductID-a032.tiff</string>\n\t\t\t\t\t<key>resolution-preview-height</key>\n\t\t\t\t\t<integer>90</integer>\n\t\t\t\t\t<key>resolution-preview-width</key>\n\t\t\t\t\t<integer>160</integer>\n\t\t\t\t\t<key>resolution-preview-x</key>\n\t\t\t\t\t<integer>33</integer>\n\t\t\t\t\t<key>resolution-preview-y</key>\n\t\t\t\t\t<integer>68</integer>\n\t\t\t\t</dict>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<key>9e6d</key>\n\t\t<dict>\n\t\t\t<key>products</key>\n\t\t\t<dict>\n\t\t\t\t<key>5b11</key>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>display-icon</key>\n\t\t\t\t\t<string>/System/Library/Displays/Contents/Resources/Overrides/DisplayVendorID-1e6d/DisplayProductID-5b11.icns</string>\n\t\t\t\t\t<key>display-resolution-preview-icon</key>\n\t\t\t\t\t<string>/System/Library/Displays/Contents/Resources/Overrides/DisplayVendorID-1e6d/DisplayProductID-5b11.tiff</string>\n\t\t\t\t\t<key>resolution-preview-height</key>\n\t\t\t\t\t<integer>114</integer>\n\t\t\t\t\t<key>resolution-preview-width</key>\n\t\t\t\t\t<integer>202</integer>\n\t\t\t\t\t<key>resolution-preview-x</key>\n\t\t\t\t\t<integer>11</integer>\n\t\t\t\t\t<key>resolution-preview-y</key>\n\t\t\t\t\t<integer>47</integer>\n\t\t\t\t</dict>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<key>dae</key>\n\t\t<dict>\n\t\t\t<key>display-icon</key>\n\t\t\t<string>com.apple.cinema-display</string>\n\t\t\t<key>products</key>\n\t\t\t<dict>\n\t\t\t\t<key>15e0-9d9da0</key>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>display-resolution-preview-icon</key>\n\t\t\t\t\t<string>/System/Library/Displays/Contents/Resources/Overrides/DisplayVendorID-dae/DisplayProductID-15e0-9d9da0.tiff</string>\n\t\t\t\t\t<key>resolution-preview-height</key>\n\t\t\t\t\t<integer>83</integer>\n\t\t\t\t\t<key>resolution-preview-width</key>\n\t\t\t\t\t<integer>131</integer>\n\t\t\t\t\t<key>resolution-preview-x</key>\n\t\t\t\t\t<integer>48</integer>\n\t\t\t\t\t<key>resolution-preview-y</key>\n\t\t\t\t\t<integer>62</integer>\n\t\t\t\t</dict>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<key>display-icon</key>\n\t\t<string>public.display</string>\n\t</dict>\n</dict>\n</plist>\n"
  },
  {
    "path": "EFI/CLOVER/ACPI/origin/DumpLog.txt",
    "content": "40:353  38:194  Found BIOS RSDP at EB510\r\n40:353  0:000  Printing ACPI tables from RSDP EB510 ...\r\n40:353  0:000   EB510: 'RSD PTR ', Rev: 2 (Acpi 2.0 or newer), Len: 36\r\n40:353  0:000    (Xsdt: 6F0620C8, Rsdt: 6F062028)\r\n40:353  0:000    6F0620C8: 'XSDT', 'CBX3', Rev: 1, Len: 276\r\n40:353  0:000    6F062028: 'RSDT', 'CBX3', Rev: 1, Len: 156\r\n40:353  0:000    Tables in Xsdt: 30\r\n40:353  0:000    0. 6F0846F8: 'FACP', 'CBX3', Rev: 5, Len: 268\r\n40:353  0:000        (Dsdt: 6F062270, Facs: 6F9F2F80, XDsdt: 6F062270, XFacs: 0)\r\n40:353  0:000        6F062270: 'DSDT', 'CBX3', Rev: 2, Len: 140418\r\n40:355  0:001        6F9F2F80: 'FACS', Ver: 2, Len: 64\r\n40:355  0:000    1. 6F084808: 'APIC', 'CBX3', Rev: 3, Len: 132\r\n40:355  0:000    2. 6F084890: 'FPDT', 'CBX3', Rev: 1, Len: 68\r\n40:355  0:000    3. 6F0848D8: 'FIDT', 'CBX3', Rev: 1, Len: 156\r\n40:355  0:000    4. 6F084978: 'MCFG', 'CBX3', Rev: 1, Len: 60\r\n40:355  0:000    5. 6F0849B8: 'HPET', 'CBX3', Rev: 1, Len: 56\r\n40:355  0:000    6. 6F0849F0: 'SSDT', 'SataTabl', Rev: 1, Len: 882\r\n40:355  0:000    7. 6F084D68: 'BOOT', 'CBX3', Rev: 1, Len: 40\r\n40:355  0:000    8. 6F084D90: 'SSDT', 'SaSsdt', Rev: 2, Len: 4833\r\n40:355  0:000    9. 6F086078: 'HPET', 'KBL-ULT', Rev: 1, Len: 56\r\n40:355  0:000    10. 6F0860B0: 'SSDT', 'xh_OEMBD', Rev: 2, Len: 1716\r\n40:355  0:000    11. 6F086768: 'UEFI', '', Rev: 1, Len: 66\r\n40:355  0:000    12. 6F0867B0: 'SSDT', 'CpuSsdt', Rev: 2, Len: 3806\r\n40:355  0:000    13. 6F087690: 'LPIT', 'KBL-ULT', Rev: 1, Len: 148\r\n40:355  0:000    14. 6F087728: 'WSMT', 'KBL-ULT', Rev: 1, Len: 40\r\n40:355  0:000    15. 6F087750: 'SSDT', 'HdaDsp', Rev: 2, Len: 321\r\n40:355  0:000    16. 6F087898: 'SSDT', 'sensrhub', Rev: 2, Len: 671\r\n40:355  0:000    17. 6F087B38: 'SSDT', 'PtidDevc', Rev: 2, Len: 12290\r\n40:355  0:000    18. 6F08AB40: 'SSDT', 'TbtTypeC', Rev: 2, Len: 533\r\n40:355  0:000    19. 6F08AD58: 'DBGP', '', Rev: 1, Len: 52\r\n40:355  0:000    20. 6F08AD90: 'DBG2', '', Rev: 0, Len: 84\r\n40:355  0:000    21. 6F08ADE8: 'SSDT', 'DptfTabl', Rev: 2, Len: 23589\r\n40:355  0:000    22. 6F090A10: 'MSDM', 'CBX3', Rev: 3, Len: 85\r\n40:355  0:000    23. 6F090A68: 'SLIC', 'CBX3', Rev: 3, Len: 374\r\n40:355  0:000    24. 6F090BE0: 'SSDT', 'SgUlt', Rev: 2, Len: 1053\r\n40:355  0:000    25. 6F091000: 'SSDT', 'SgPch', Rev: 2, Len: 1874\r\n40:355  0:000    26. 6F091758: 'DMAR', 'KBL', Rev: 1, Len: 240\r\n40:355  0:000    27. 6F091848: 'TPM2', 'Tpm2Tabl', Rev: 3, Len: 52\r\n40:355  0:000    28. 6F091880: 'SSDT', 'OptTabl', Rev: 1, Len: 7776\r\n40:355  0:000    29. 6F0936E0: 'BGRT', '', Rev: 0, Len: 56\r\n40:355  0:000    Tables in Rsdt: 30\r\n40:355  0:000    0. 6F0621E8: 'FACP', 'CBX3', Rev: 2, Len: 132\r\n40:355  0:000        (Dsdt: 6F062270, Facs: 6F9F2F40)\r\n40:355  0:000        6F062270: 'DSDT', 'CBX3', Rev: 2, Len: 140418\r\n40:356  0:001        6F9F2F40: 'FACS', Ver: 0, Len: 64\r\n40:356  0:000    1. 6F084808: 'APIC', 'CBX3', Rev: 3, Len: 132\r\n40:356  0:000    2. 6F084890: 'FPDT', 'CBX3', Rev: 1, Len: 68\r\n40:356  0:000    3. 6F0848D8: 'FIDT', 'CBX3', Rev: 1, Len: 156\r\n40:356  0:000    4. 6F084978: 'MCFG', 'CBX3', Rev: 1, Len: 60\r\n40:356  0:000    5. 6F0849B8: 'HPET', 'CBX3', Rev: 1, Len: 56\r\n40:356  0:000    6. 6F0849F0: 'SSDT', 'SataTabl', Rev: 1, Len: 882\r\n40:356  0:000    7. 6F084D68: 'BOOT', 'CBX3', Rev: 1, Len: 40\r\n40:356  0:000    8. 6F084D90: 'SSDT', 'SaSsdt', Rev: 2, Len: 4833\r\n40:356  0:000    9. 6F086078: 'HPET', 'KBL-ULT', Rev: 1, Len: 56\r\n40:356  0:000    10. 6F0860B0: 'SSDT', 'xh_OEMBD', Rev: 2, Len: 1716\r\n40:356  0:000    11. 6F086768: 'UEFI', '', Rev: 1, Len: 66\r\n40:356  0:000    12. 6F0867B0: 'SSDT', 'CpuSsdt', Rev: 2, Len: 3806\r\n40:356  0:000    13. 6F087690: 'LPIT', 'KBL-ULT', Rev: 1, Len: 148\r\n40:356  0:000    14. 6F087728: 'WSMT', 'KBL-ULT', Rev: 1, Len: 40\r\n40:356  0:000    15. 6F087750: 'SSDT', 'HdaDsp', Rev: 2, Len: 321\r\n40:356  0:000    16. 6F087898: 'SSDT', 'sensrhub', Rev: 2, Len: 671\r\n40:356  0:000    17. 6F087B38: 'SSDT', 'PtidDevc', Rev: 2, Len: 12290\r\n40:356  0:000    18. 6F08AB40: 'SSDT', 'TbtTypeC', Rev: 2, Len: 533\r\n40:356  0:000    19. 6F08AD58: 'DBGP', '', Rev: 1, Len: 52\r\n40:356  0:000    20. 6F08AD90: 'DBG2', '', Rev: 0, Len: 84\r\n40:356  0:000    21. 6F08ADE8: 'SSDT', 'DptfTabl', Rev: 2, Len: 23589\r\n40:356  0:000    22. 6F090A10: 'MSDM', 'CBX3', Rev: 3, Len: 85\r\n40:356  0:000    23. 6F090A68: 'SLIC', 'CBX3', Rev: 3, Len: 374\r\n40:356  0:000    24. 6F090BE0: 'SSDT', 'SgUlt', Rev: 2, Len: 1053\r\n40:356  0:000    25. 6F091000: 'SSDT', 'SgPch', Rev: 2, Len: 1874\r\n40:356  0:000    26. 6F091758: 'DMAR', 'KBL', Rev: 1, Len: 240\r\n40:356  0:000    27. 6F091848: 'TPM2', 'Tpm2Tabl', Rev: 3, Len: 52\r\n40:356  0:000    28. 6F091880: 'SSDT', 'OptTabl', Rev: 1, Len: 7776\r\n40:356  0:000    29. 6F0936E0: 'BGRT', '', Rev: 0, Len: 56\r\n40:356  0:000  Found UEFI Acpi 2.0 RSDP at 6F062000\r\n40:356  0:000  Saving ACPI tables from RSDP 6F062000 to EFI\\CLOVER\\ACPI\\origin ...\r\n40:356  0:000   6F062000: 'RSD PTR ', Rev: 2 (Acpi 2.0 or newer), Len: 36 -> RSDP.aml\r\n40:380  0:023    (Xsdt: 6F0620C8, Rsdt: 6F062028)\r\n40:380  0:000    6F0620C8: 'XSDT', 'CBX3', Rev: 1, Len: 276 -> XSDT.aml\r\n40:400  0:019    6F062028: 'RSDT', 'CBX3', Rev: 1, Len: 156 -> RSDT.aml\r\n40:419  0:019    Tables in Xsdt: 30\r\n40:419  0:000    0. 6F0846F8: 'FACP', 'CBX3', Rev: 5, Len: 268 -> FACP.aml\r\n40:437  0:018        (Dsdt: 6F062270, Facs: 6F9F2F80, XDsdt: 6F062270, XFacs: 0)\r\n40:437  0:000        6F062270: 'DSDT', 'CBX3', Rev: 2, Len: 140418 -> DSDT.aml\r\n40:475  0:038        6F9F2F80: 'FACS', Ver: 2, Len: 64 -> FACS.aml\r\n40:494  0:018    1. 6F084808: 'APIC', 'CBX3', Rev: 3, Len: 132 -> APIC.aml\r\n40:511  0:017    2. 6F084890: 'FPDT', 'CBX3', Rev: 1, Len: 68 -> FPDT.aml\r\n40:540  0:029    3. 6F0848D8: 'FIDT', 'CBX3', Rev: 1, Len: 156 -> FIDT.aml\r\n40:558  0:017    4. 6F084978: 'MCFG', 'CBX3', Rev: 1, Len: 60 -> MCFG.aml\r\n40:577  0:018    5. 6F0849B8: 'HPET', 'CBX3', Rev: 1, Len: 56 -> HPET.aml\r\n40:595  0:018    6. 6F0849F0: 'SSDT', 'SataTabl', Rev: 1, Len: 882 -> SSDT-0-SataTabl.aml\r\n40:613  0:018    7. 6F084D68: 'BOOT', 'CBX3', Rev: 1, Len: 40 -> BOOT.aml\r\n40:632  0:018    8. 6F084D90: 'SSDT', 'SaSsdt', Rev: 2, Len: 4833 -> SSDT-1-SaSsdt.aml\r\n40:650  0:018    9. 6F086078: 'HPET', 'KBL-ULT', Rev: 1, Len: 56 -> HPET.aml\r\n40:667  0:017    10. 6F0860B0: 'SSDT', 'xh_OEMBD', Rev: 2, Len: 1716 -> SSDT-2-xh_OEMBD.aml\r\n40:685  0:017    11. 6F086768: 'UEFI', '', Rev: 1, Len: 66 -> UEFI.aml\r\n40:703  0:018    12. 6F0867B0: 'SSDT', 'CpuSsdt', Rev: 2, Len: 3806 -> SSDT-3-CpuSsdt.aml (Found hidden SSDT 7 pcs)\r\n40:721  0:018        * 6EDA6798: 'SSDT', 'Cpu0Ist', Rev: 2, Len: 1782  53 53 44 54 F6 06 00 00 02 AC 50 6D 52 65 66 00 Internal length = 1782 -> SSDT-x3_0-Cpu0Ist.aml\r\n40:738  0:016        * 6EDA5718: 'SSDT', 'ApIst', Rev: 2, Len: 1628  53 53 44 54 5C 06 00 00 02 AF 50 6D 52 65 66 00 Internal length = 1628 -> SSDT-x3_1-ApIst.aml\r\n40:756  0:018        * 6EDA4918: 'SSDT', 'Cpu0Cst', Rev: 2, Len: 1023  53 53 44 54 FF 03 00 00 02 AF 50 6D 52 65 66 00 Internal length = 1023 -> SSDT-x3_2-Cpu0Cst.aml\r\n40:776  0:019        * 6EDA5E18: 'SSDT', 'ApCst', Rev: 2, Len: 394  53 53 44 54 8A 01 00 00 02 39 50 6D 52 65 66 00 Internal length = 394 -> SSDT-x3_3-ApCst.aml\r\n40:795  0:018        * 6D7E2018: 'SSDT', 'Cpu0Hwp', Rev: 2, Len: 277  53 53 44 54 15 01 00 00 02 AE 50 6D 52 65 66 00 Internal length = 277 -> SSDT-x3_4-Cpu0Hwp.aml\r\n40:814  0:019        * 6CD44C18: 'SSDT', 'ApHwp', Rev: 2, Len: 407  53 53 44 54 97 01 00 00 02 F1 50 6D 52 65 66 00 Internal length = 407 -> SSDT-x3_5-ApHwp.aml\r\n40:832  0:018        * 6CD44A18: 'SSDT', 'HwpLvt', Rev: 2, Len: 420  53 53 44 54 A4 01 00 00 02 3C 50 6D 52 65 66 00 Internal length = 420 -> SSDT-x3_6-HwpLvt.aml\r\n40:850  0:018  \r\n40:850  0:000    13. 6F087690: 'LPIT', 'KBL-ULT', Rev: 1, Len: 148 -> LPIT.aml\r\n40:869  0:018    14. 6F087728: 'WSMT', 'KBL-ULT', Rev: 1, Len: 40 -> WSMT.aml\r\n40:886  0:017    15. 6F087750: 'SSDT', 'HdaDsp', Rev: 2, Len: 321 -> SSDT-4-HdaDsp.aml\r\n40:904  0:017    16. 6F087898: 'SSDT', 'sensrhub', Rev: 2, Len: 671 -> SSDT-5-sensrhub.aml\r\n40:922  0:018    17. 6F087B38: 'SSDT', 'PtidDevc', Rev: 2, Len: 12290 -> SSDT-6-PtidDevc.aml\r\n40:940  0:018    18. 6F08AB40: 'SSDT', 'TbtTypeC', Rev: 2, Len: 533 -> SSDT-7-TbtTypeC.aml\r\n40:957  0:017    19. 6F08AD58: 'DBGP', '', Rev: 1, Len: 52 -> DBGP.aml\r\n40:976  0:018    20. 6F08AD90: 'DBG2', '', Rev: 0, Len: 84 -> DBG2.aml\r\n40:994  0:017    21. 6F08ADE8: 'SSDT', 'DptfTabl', Rev: 2, Len: 23589 -> SSDT-8-DptfTabl.aml\r\n41:013  0:019    22. 6F090A10: 'MSDM', 'CBX3', Rev: 3, Len: 85 -> MSDM.aml\r\n41:030  0:017    23. 6F090A68: 'SLIC', 'CBX3', Rev: 3, Len: 374 -> SLIC.aml\r\n41:048  0:018    24. 6F090BE0: 'SSDT', 'SgUlt', Rev: 2, Len: 1053 -> SSDT-9-SgUlt.aml\r\n41:066  0:017    25. 6F091000: 'SSDT', 'SgPch', Rev: 2, Len: 1874 -> SSDT-10-SgPch.aml\r\n41:083  0:017    26. 6F091758: 'DMAR', 'KBL', Rev: 1, Len: 240 -> DMAR.aml\r\n41:102  0:018    27. 6F091848: 'TPM2', 'Tpm2Tabl', Rev: 3, Len: 52 -> TPM2.aml\r\n41:120  0:018    28. 6F091880: 'SSDT', 'OptTabl', Rev: 1, Len: 7776 -> SSDT-11-OptTabl.aml\r\n41:138  0:018    29. 6F0936E0: 'BGRT', '', Rev: 0, Len: 56 -> BGRT.aml\r\n41:157  0:018    Tables in Rsdt: 30\r\n41:157  0:000    0. 6F0621E8: 'FACP', 'CBX3', Rev: 2, Len: 132 -> RSDT-FACP.aml\r\n41:175  0:018        (Dsdt: 6F062270, Facs: 6F9F2F40)\r\n41:175  0:000        6F062270: 'DSDT', 'CBX3', Rev: 2, Len: 140418\r\n41:177  0:001        6F9F2F40: 'FACS', Ver: 0, Len: 64 -> RSDT-FACS.aml\r\n41:195  0:017    1. 6F084808: 'APIC', 'CBX3', Rev: 3, Len: 132\r\n41:195  0:000    2. 6F084890: 'FPDT', 'CBX3', Rev: 1, Len: 68\r\n41:195  0:000    3. 6F0848D8: 'FIDT', 'CBX3', Rev: 1, Len: 156\r\n41:195  0:000    4. 6F084978: 'MCFG', 'CBX3', Rev: 1, Len: 60\r\n41:195  0:000    5. 6F0849B8: 'HPET', 'CBX3', Rev: 1, Len: 56\r\n41:195  0:000    6. 6F0849F0: 'SSDT', 'SataTabl', Rev: 1, Len: 882\r\n41:195  0:000    7. 6F084D68: 'BOOT', 'CBX3', Rev: 1, Len: 40\r\n41:195  0:000    8. 6F084D90: 'SSDT', 'SaSsdt', Rev: 2, Len: 4833\r\n41:195  0:000    9. 6F086078: 'HPET', 'KBL-ULT', Rev: 1, Len: 56\r\n41:195  0:000    10. 6F0860B0: 'SSDT', 'xh_OEMBD', Rev: 2, Len: 1716\r\n41:195  0:000    11. 6F086768: 'UEFI', '', Rev: 1, Len: 66\r\n41:195  0:000    12. 6F0867B0: 'SSDT', 'CpuSsdt', Rev: 2, Len: 3806\r\n41:195  0:000    13. 6F087690: 'LPIT', 'KBL-ULT', Rev: 1, Len: 148\r\n41:195  0:000    14. 6F087728: 'WSMT', 'KBL-ULT', Rev: 1, Len: 40\r\n41:195  0:000    15. 6F087750: 'SSDT', 'HdaDsp', Rev: 2, Len: 321\r\n41:195  0:000    16. 6F087898: 'SSDT', 'sensrhub', Rev: 2, Len: 671\r\n41:195  0:000    17. 6F087B38: 'SSDT', 'PtidDevc', Rev: 2, Len: 12290\r\n41:195  0:000    18. 6F08AB40: 'SSDT', 'TbtTypeC', Rev: 2, Len: 533\r\n41:195  0:000    19. 6F08AD58: 'DBGP', '', Rev: 1, Len: 52\r\n41:195  0:000    20. 6F08AD90: 'DBG2', '', Rev: 0, Len: 84\r\n41:195  0:000    21. 6F08ADE8: 'SSDT', 'DptfTabl', Rev: 2, Len: 23589\r\n41:195  0:000    22. 6F090A10: 'MSDM', 'CBX3', Rev: 3, Len: 85\r\n41:195  0:000    23. 6F090A68: 'SLIC', 'CBX3', Rev: 3, Len: 374\r\n41:195  0:000    24. 6F090BE0: 'SSDT', 'SgUlt', Rev: 2, Len: 1053\r\n41:195  0:000    25. 6F091000: 'SSDT', 'SgPch', Rev: 2, Len: 1874\r\n41:195  0:000    26. 6F091758: 'DMAR', 'KBL', Rev: 1, Len: 240\r\n41:195  0:000    27. 6F091848: 'TPM2', 'Tpm2Tabl', Rev: 3, Len: 52\r\n41:195  0:000    28. 6F091880: 'SSDT', 'OptTabl', Rev: 1, Len: 7776\r\n41:195  0:000    29. 6F0936E0: 'BGRT', '', Rev: 0, Len: 56\r\n41:195  0:000  Found UEFI Acpi 1.0 RSDP at 6F062000\r\n41:195  0:000  Printing ACPI tables from RSDP 6F062000 ...\r\n41:195  0:000   6F062000: 'RSD PTR ', Rev: 2 (Acpi 2.0 or newer), Len: 36\r\n41:195  0:000    (Xsdt: 6F0620C8, Rsdt: 6F062028)\r\n41:195  0:000    6F0620C8: 'XSDT', 'CBX3', Rev: 1, Len: 276\r\n41:195  0:000    6F062028: 'RSDT', 'CBX3', Rev: 1, Len: 156\r\n41:195  0:000    Tables in Xsdt: 30\r\n41:195  0:000    0. 6F0846F8: 'FACP', 'CBX3', Rev: 5, Len: 268\r\n41:195  0:000        (Dsdt: 6F062270, Facs: 6F9F2F80, XDsdt: 6F062270, XFacs: 0)\r\n41:195  0:000        6F062270: 'DSDT', 'CBX3', Rev: 2, Len: 140418\r\n41:196  0:001        6F9F2F80: 'FACS', Ver: 2, Len: 64\r\n41:196  0:000    1. 6F084808: 'APIC', 'CBX3', Rev: 3, Len: 132\r\n41:196  0:000    2. 6F084890: 'FPDT', 'CBX3', Rev: 1, Len: 68\r\n41:196  0:000    3. 6F0848D8: 'FIDT', 'CBX3', Rev: 1, Len: 156\r\n41:196  0:000    4. 6F084978: 'MCFG', 'CBX3', Rev: 1, Len: 60\r\n41:196  0:000    5. 6F0849B8: 'HPET', 'CBX3', Rev: 1, Len: 56\r\n41:196  0:000    6. 6F0849F0: 'SSDT', 'SataTabl', Rev: 1, Len: 882\r\n41:196  0:000    7. 6F084D68: 'BOOT', 'CBX3', Rev: 1, Len: 40\r\n41:196  0:000    8. 6F084D90: 'SSDT', 'SaSsdt', Rev: 2, Len: 4833\r\n41:196  0:000    9. 6F086078: 'HPET', 'KBL-ULT', Rev: 1, Len: 56\r\n41:196  0:000    10. 6F0860B0: 'SSDT', 'xh_OEMBD', Rev: 2, Len: 1716\r\n41:196  0:000    11. 6F086768: 'UEFI', '', Rev: 1, Len: 66\r\n41:196  0:000    12. 6F0867B0: 'SSDT', 'CpuSsdt', Rev: 2, Len: 3806\r\n41:196  0:000    13. 6F087690: 'LPIT', 'KBL-ULT', Rev: 1, Len: 148\r\n41:196  0:000    14. 6F087728: 'WSMT', 'KBL-ULT', Rev: 1, Len: 40\r\n41:196  0:000    15. 6F087750: 'SSDT', 'HdaDsp', Rev: 2, Len: 321\r\n41:196  0:000    16. 6F087898: 'SSDT', 'sensrhub', Rev: 2, Len: 671\r\n41:196  0:000    17. 6F087B38: 'SSDT', 'PtidDevc', Rev: 2, Len: 12290\r\n41:196  0:000    18. 6F08AB40: 'SSDT', 'TbtTypeC', Rev: 2, Len: 533\r\n41:196  0:000    19. 6F08AD58: 'DBGP', '', Rev: 1, Len: 52\r\n41:196  0:000    20. 6F08AD90: 'DBG2', '', Rev: 0, Len: 84\r\n41:196  0:000    21. 6F08ADE8: 'SSDT', 'DptfTabl', Rev: 2, Len: 23589\r\n41:196  0:000    22. 6F090A10: 'MSDM', 'CBX3', Rev: 3, Len: 85\r\n41:196  0:000    23. 6F090A68: 'SLIC', 'CBX3', Rev: 3, Len: 374\r\n41:196  0:000    24. 6F090BE0: 'SSDT', 'SgUlt', Rev: 2, Len: 1053\r\n41:196  0:000    25. 6F091000: 'SSDT', 'SgPch', Rev: 2, Len: 1874\r\n41:196  0:000    26. 6F091758: 'DMAR', 'KBL', Rev: 1, Len: 240\r\n41:196  0:000    27. 6F091848: 'TPM2', 'Tpm2Tabl', Rev: 3, Len: 52\r\n41:196  0:000    28. 6F091880: 'SSDT', 'OptTabl', Rev: 1, Len: 7776\r\n41:196  0:000    29. 6F0936E0: 'BGRT', '', Rev: 0, Len: 56\r\n41:196  0:000    Tables in Rsdt: 30\r\n41:196  0:000    0. 6F0621E8: 'FACP', 'CBX3', Rev: 2, Len: 132\r\n41:196  0:000        (Dsdt: 6F062270, Facs: 6F9F2F40)\r\n41:196  0:000        6F062270: 'DSDT', 'CBX3', Rev: 2, Len: 140418\r\n41:198  0:001        6F9F2F40: 'FACS', Ver: 0, Len: 64\r\n41:198  0:000    1. 6F084808: 'APIC', 'CBX3', Rev: 3, Len: 132\r\n41:198  0:000    2. 6F084890: 'FPDT', 'CBX3', Rev: 1, Len: 68\r\n41:198  0:000    3. 6F0848D8: 'FIDT', 'CBX3', Rev: 1, Len: 156\r\n41:198  0:000    4. 6F084978: 'MCFG', 'CBX3', Rev: 1, Len: 60\r\n41:198  0:000    5. 6F0849B8: 'HPET', 'CBX3', Rev: 1, Len: 56\r\n41:198  0:000    6. 6F0849F0: 'SSDT', 'SataTabl', Rev: 1, Len: 882\r\n41:198  0:000    7. 6F084D68: 'BOOT', 'CBX3', Rev: 1, Len: 40\r\n41:198  0:000    8. 6F084D90: 'SSDT', 'SaSsdt', Rev: 2, Len: 4833\r\n41:198  0:000    9. 6F086078: 'HPET', 'KBL-ULT', Rev: 1, Len: 56\r\n41:198  0:000    10. 6F0860B0: 'SSDT', 'xh_OEMBD', Rev: 2, Len: 1716\r\n41:198  0:000    11. 6F086768: 'UEFI', '', Rev: 1, Len: 66\r\n41:198  0:000    12. 6F0867B0: 'SSDT', 'CpuSsdt', Rev: 2, Len: 3806\r\n41:198  0:000    13. 6F087690: 'LPIT', 'KBL-ULT', Rev: 1, Len: 148\r\n41:198  0:000    14. 6F087728: 'WSMT', 'KBL-ULT', Rev: 1, Len: 40\r\n41:198  0:000    15. 6F087750: 'SSDT', 'HdaDsp', Rev: 2, Len: 321\r\n41:198  0:000    16. 6F087898: 'SSDT', 'sensrhub', Rev: 2, Len: 671\r\n41:198  0:000    17. 6F087B38: 'SSDT', 'PtidDevc', Rev: 2, Len: 12290\r\n41:198  0:000    18. 6F08AB40: 'SSDT', 'TbtTypeC', Rev: 2, Len: 533\r\n41:198  0:000    19. 6F08AD58: 'DBGP', '', Rev: 1, Len: 52\r\n41:198  0:000    20. 6F08AD90: 'DBG2', '', Rev: 0, Len: 84\r\n41:198  0:000    21. 6F08ADE8: 'SSDT', 'DptfTabl', Rev: 2, Len: 23589\r\n41:198  0:000    22. 6F090A10: 'MSDM', 'CBX3', Rev: 3, Len: 85\r\n41:198  0:000    23. 6F090A68: 'SLIC', 'CBX3', Rev: 3, Len: 374\r\n41:198  0:000    24. 6F090BE0: 'SSDT', 'SgUlt', Rev: 2, Len: 1053\r\n41:198  0:000    25. 6F091000: 'SSDT', 'SgPch', Rev: 2, Len: 1874\r\n41:198  0:000    26. 6F091758: 'DMAR', 'KBL', Rev: 1, Len: 240\r\n41:198  0:000    27. 6F091848: 'TPM2', 'Tpm2Tabl', Rev: 3, Len: 52\r\n41:198  0:000    28. 6F091880: 'SSDT', 'OptTabl', Rev: 1, Len: 7776\r\n41:198  0:000    29. 6F0936E0: 'BGRT', '', Rev: 0, Len: 56\r\n"
  },
  {
    "path": "EFI/CLOVER/config.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>ACPI</key>\n\t<dict>\n\t\t<key>AutoMerge</key>\n\t\t<true/>\n\t\t<key>DSDT</key>\n\t\t<dict>\n\t\t\t<key>Debug</key>\n\t\t\t<false/>\n\t\t\t<key>DropOEM_DSM</key>\n\t\t\t<false/>\n\t\t\t<key>Fixes</key>\n\t\t\t<dict>\n\t\t\t\t<key>FixAirport</key>\n\t\t\t\t<true/>\n\t\t\t\t<key>FixRegions</key>\n\t\t\t\t<true/>\n\t\t\t</dict>\n\t\t\t<key>Patches</key>\n\t\t\t<array>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>Comment</key>\n\t\t\t\t\t<string>change _DSM to XSDM</string>\n\t\t\t\t\t<key>Disabled</key>\n\t\t\t\t\t<false/>\n\t\t\t\t\t<key>Find</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tX0RTTQ==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Replace</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tWERTTQ==\n\t\t\t\t\t</data>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>Comment</key>\n\t\t\t\t\t<string>change OSID to IDOS</string>\n\t\t\t\t\t<key>Disabled</key>\n\t\t\t\t\t<false/>\n\t\t\t\t\t<key>Find</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tT1NJRA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Replace</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tSURPUw==\n\t\t\t\t\t</data>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>Comment</key>\n\t\t\t\t\t<string>change _OSI to XOSI</string>\n\t\t\t\t\t<key>Disabled</key>\n\t\t\t\t\t<false/>\n\t\t\t\t\t<key>Find</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tX09TSQ==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Replace</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tWE9TSQ==\n\t\t\t\t\t</data>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>Comment</key>\n\t\t\t\t\t<string>change HDAS to HDEF</string>\n\t\t\t\t\t<key>Disabled</key>\n\t\t\t\t\t<false/>\n\t\t\t\t\t<key>Find</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tSERBUw==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Replace</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tSERFRg==\n\t\t\t\t\t</data>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>Comment</key>\n\t\t\t\t\t<string>change HECI to IMEI</string>\n\t\t\t\t\t<key>Disabled</key>\n\t\t\t\t\t<false/>\n\t\t\t\t\t<key>Find</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tSEVDSQ==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Replace</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tSU1FSQ==\n\t\t\t\t\t</data>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>Comment</key>\n\t\t\t\t\t<string>chang BRT6 to BRTX</string>\n\t\t\t\t\t<key>Disabled</key>\n\t\t\t\t\t<false/>\n\t\t\t\t\t<key>Find</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tIEJSVDY=\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Replace</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tIEJSVFg=\n\t\t\t\t\t</data>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>Comment</key>\n\t\t\t\t\t<string>change GFX0 to IGPU</string>\n\t\t\t\t\t<key>Disabled</key>\n\t\t\t\t\t<false/>\n\t\t\t\t\t<key>Find</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tR0ZYMA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Replace</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tSUdQVQ==\n\t\t\t\t\t</data>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>Comment</key>\n\t\t\t\t\t<string>change SAT0 to SATA</string>\n\t\t\t\t\t<key>Disabled</key>\n\t\t\t\t\t<false/>\n\t\t\t\t\t<key>Find</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tU0FUMA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Replace</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tU0FUQQ==\n\t\t\t\t\t</data>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>Comment</key>\n\t\t\t\t\t<string>change 6D03 to 6D00</string>\n\t\t\t\t\t<key>Disabled</key>\n\t\t\t\t\t<false/>\n\t\t\t\t\t<key>Find</key>\n\t\t\t\t\t<data>\n\t\t\t\t\toG2gAw==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Replace</key>\n\t\t\t\t\t<data>\n\t\t\t\t\toG2gAA==\n\t\t\t\t\t</data>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>Comment</key>\n\t\t\t\t\t<string>change _PTS to ZPTS</string>\n\t\t\t\t\t<key>Disabled</key>\n\t\t\t\t\t<false/>\n\t\t\t\t\t<key>Find</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tX1BUUw==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Replace</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tWlBUUw==\n\t\t\t\t\t</data>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>Comment</key>\n\t\t\t\t\t<string>change _WAK to ZWAK</string>\n\t\t\t\t\t<key>Disabled</key>\n\t\t\t\t\t<false/>\n\t\t\t\t\t<key>Find</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tX1dBSw==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Replace</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tWldBSw==\n\t\t\t\t\t</data>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>Comment</key>\n\t\t\t\t\t<string>change ECDV to EC(dell)</string>\n\t\t\t\t\t<key>Disabled</key>\n\t\t\t\t\t<false/>\n\t\t\t\t\t<key>Find</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tRUNEVg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Replace</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tRUNfXw==\n\t\t\t\t\t</data>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>Comment</key>\n\t\t\t\t\t<string>change LID0 to LID_</string>\n\t\t\t\t\t<key>Disabled</key>\n\t\t\t\t\t<false/>\n\t\t\t\t\t<key>Find</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tTElEMA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Replace</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tTElEXw==\n\t\t\t\t\t</data>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>Comment</key>\n\t\t\t\t\t<string>change _LID to XLID</string>\n\t\t\t\t\t<key>Disabled</key>\n\t\t\t\t\t<true/>\n\t\t\t\t\t<key>Find</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tX0xJRAA=\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Replace</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tWExJRAA=\n\t\t\t\t\t</data>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>Comment</key>\n\t\t\t\t\t<string>change NEVT to XEVT(dell)</string>\n\t\t\t\t\t<key>Disabled</key>\n\t\t\t\t\t<false/>\n\t\t\t\t\t<key>Find</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tTkVWVAA=\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Replace</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tWEVWVAA=\n\t\t\t\t\t</data>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>Comment</key>\n\t\t\t\t\t<string>XDCI:_PRW to XPRW</string>\n\t\t\t\t\t<key>Disabled</key>\n\t\t\t\t\t<false/>\n\t\t\t\t\t<key>Find</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tX1BSVw==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Replace</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tWFBSVw==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>TgtBridge</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tWERDSQ==\n\t\t\t\t\t</data>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>Comment</key>\n\t\t\t\t\t<string>GLAN:_PRW to XPRW</string>\n\t\t\t\t\t<key>Disabled</key>\n\t\t\t\t\t<false/>\n\t\t\t\t\t<key>Find</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tX1BSVw==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Replace</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tWFBSVw==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>TgtBridge</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tR0xBTg==\n\t\t\t\t\t</data>\n\t\t\t\t</dict>\n\t\t\t</array>\n\t\t\t<key>ReuseFFFF</key>\n\t\t\t<false/>\n\t\t</dict>\n\t\t<key>DropTables</key>\n\t\t<array>\n\t\t\t<dict>\n\t\t\t\t<key>Signature</key>\n\t\t\t\t<string>DMAR</string>\n\t\t\t</dict>\n\t\t</array>\n\t\t<key>FixHeaders</key>\n\t\t<true/>\n\t\t<key>FixMCFG</key>\n\t\t<false/>\n\t\t<key>SSDT</key>\n\t\t<dict>\n\t\t\t<key>DropOem</key>\n\t\t\t<false/>\n\t\t\t<key>Generate</key>\n\t\t\t<dict>\n\t\t\t\t<key>CStates</key>\n\t\t\t\t<false/>\n\t\t\t\t<key>PStates</key>\n\t\t\t\t<false/>\n\t\t\t\t<key>PluginType</key>\n\t\t\t\t<true/>\n\t\t\t</dict>\n\t\t</dict>\n\t</dict>\n\t<key>Boot</key>\n\t<dict>\n\t\t<key>Arguments</key>\n\t\t<string>darkwake=8 brcmfx-driver=1 brcmfx-country=#a -lilubetaall</string>\n\t\t<key>CustomLogo</key>\n\t\t<string>Theme</string>\n\t\t<key>Debug</key>\n\t\t<false/>\n\t\t<key>DefaultVolume</key>\n\t\t<string>MAC</string>\n\t\t<key>NoEarlyProgress</key>\n\t\t<true/>\n\t\t<key>Secure</key>\n\t\t<false/>\n\t\t<key>Timeout</key>\n\t\t<integer>1</integer>\n\t\t<key>XMPDetection</key>\n\t\t<false/>\n\t</dict>\n\t<key>BootGraphics</key>\n\t<dict>\n\t\t<key>EFILoginHiDPI</key>\n\t\t<integer>1</integer>\n\t\t<key>UIScale</key>\n\t\t<integer>1</integer>\n\t\t<key>flagstate</key>\n\t\t<integer>1</integer>\n\t</dict>\n\t<key>CPU</key>\n\t<dict>\n\t\t<key>HWPEnable</key>\n\t\t<true/>\n\t\t<key>UseARTFrequency</key>\n\t\t<true/>\n\t</dict>\n\t<key>Devices</key>\n\t<dict>\n\t\t<key>Audio</key>\n\t\t<dict>\n\t\t\t<key>Inject</key>\n\t\t\t<string>No</string>\n\t\t</dict>\n\t\t<key>Properties</key>\n\t\t<dict>\n\t\t\t<key>PciRoot(0x0)/Pci(0x0,0x0)</key>\n\t\t\t<dict>\n\t\t\t\t<key>AAPL,slot-name</key>\n\t\t\t\t<string>Internal</string>\n\t\t\t\t<key>device_type</key>\n\t\t\t\t<string>Host bridge</string>\n\t\t\t\t<key>model</key>\n\t\t\t\t<string>Xeon E3-1200 v6/7th Gen Core Processor Host Bridge/DRAM Registers</string>\n\t\t\t</dict>\n\t\t\t<key>PciRoot(0x0)/Pci(0x14,0x0)</key>\n\t\t\t<dict>\n\t\t\t\t<key>AAPL,slot-name</key>\n\t\t\t\t<string>Internal</string>\n\t\t\t\t<key>device_type</key>\n\t\t\t\t<string>USB controller</string>\n\t\t\t\t<key>model</key>\n\t\t\t\t<string>Sunrise Point-LP USB 3.0 xHCI Controller</string>\n\t\t\t</dict>\n\t\t\t<key>PciRoot(0x0)/Pci(0x14,0x2)</key>\n\t\t\t<dict>\n\t\t\t\t<key>AAPL,slot-name</key>\n\t\t\t\t<string>Internal</string>\n\t\t\t\t<key>device_type</key>\n\t\t\t\t<string>Signal processing controller</string>\n\t\t\t\t<key>model</key>\n\t\t\t\t<string>Sunrise Point-LP Thermal subsystem</string>\n\t\t\t</dict>\n\t\t\t<key>PciRoot(0x0)/Pci(0x15,0x0)</key>\n\t\t\t<dict>\n\t\t\t\t<key>AAPL,slot-name</key>\n\t\t\t\t<string>Internal</string>\n\t\t\t\t<key>device_type</key>\n\t\t\t\t<string>Signal processing controller</string>\n\t\t\t\t<key>model</key>\n\t\t\t\t<string>Sunrise Point-LP Serial IO I2C Controller #0</string>\n\t\t\t</dict>\n\t\t\t<key>PciRoot(0x0)/Pci(0x15,0x1)</key>\n\t\t\t<dict>\n\t\t\t\t<key>AAPL,slot-name</key>\n\t\t\t\t<string>Internal</string>\n\t\t\t\t<key>device_type</key>\n\t\t\t\t<string>Signal processing controller</string>\n\t\t\t\t<key>model</key>\n\t\t\t\t<string>Sunrise Point-LP Serial IO I2C Controller #1</string>\n\t\t\t</dict>\n\t\t\t<key>PciRoot(0x0)/Pci(0x16,0x0)</key>\n\t\t\t<dict>\n\t\t\t\t<key>AAPL,slot-name</key>\n\t\t\t\t<string>Internal</string>\n\t\t\t\t<key>device_type</key>\n\t\t\t\t<string>Communication controller</string>\n\t\t\t\t<key>model</key>\n\t\t\t\t<string>Sunrise Point-LP CSME HECI #1</string>\n\t\t\t</dict>\n\t\t\t<key>PciRoot(0x0)/Pci(0x17,0x0)</key>\n\t\t\t<dict>\n\t\t\t\t<key>AAPL,slot-name</key>\n\t\t\t\t<string>Internal</string>\n\t\t\t\t<key>device_type</key>\n\t\t\t\t<string>SATA controller</string>\n\t\t\t\t<key>model</key>\n\t\t\t\t<string>Q170/Q150/B150/H170/H110/Z170/CM236 Chipset SATA Controller [AHCI Mode]</string>\n\t\t\t</dict>\n\t\t\t<key>PciRoot(0x0)/Pci(0x1c,0x0)</key>\n\t\t\t<dict>\n\t\t\t\t<key>AAPL,slot-name</key>\n\t\t\t\t<string>Internal</string>\n\t\t\t\t<key>device_type</key>\n\t\t\t\t<string>PCI bridge</string>\n\t\t\t\t<key>model</key>\n\t\t\t\t<string>Sunrise Point-LP PCI Express Root Port #1</string>\n\t\t\t</dict>\n\t\t\t<key>PciRoot(0x0)/Pci(0x1c,0x0)/Pci(0x0,0x0)</key>\n\t\t\t<dict>\n\t\t\t\t<key>AAPL,slot-name</key>\n\t\t\t\t<string>Internal@1,0,0</string>\n\t\t\t\t<key>device_type</key>\n\t\t\t\t<string>Unassigned class</string>\n\t\t\t\t<key>model</key>\n\t\t\t\t<string>GM108M [GeForce 940MX]</string>\n\t\t\t</dict>\n\t\t\t<key>PciRoot(0x0)/Pci(0x1c,0x4)/Pci(0x0,0x0)</key>\n\t\t\t<dict>\n\t\t\t\t<key>AAPL,slot-name</key>\n\t\t\t\t<string>WLAN</string>\n\t\t\t\t<key>compatible</key>\n\t\t\t\t<string>pci14e4,4353</string>\n\t\t\t\t<key>device_type</key>\n\t\t\t\t<string>Airport Extreme</string>\n\t\t\t\t<key>model</key>\n\t\t\t\t<string>DW1820A (BCM4350) 802.11ac Wireless</string>\n\t\t\t\t<key>name</key>\n\t\t\t\t<string>Airport</string>\n\t\t\t</dict>\n\t\t\t<key>PciRoot(0x0)/Pci(0x1c,0x5)/Pci(0x0,0x0)</key>\n\t\t\t<dict>\n\t\t\t\t<key>AAPL,slot-name</key>\n\t\t\t\t<string>Internal@3,0,0</string>\n\t\t\t\t<key>device_type</key>\n\t\t\t\t<string>Ethernet controller</string>\n\t\t\t\t<key>model</key>\n\t\t\t\t<string>RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller</string>\n\t\t\t</dict>\n\t\t\t<key>PciRoot(0x0)/Pci(0x1f,0x0)</key>\n\t\t\t<dict>\n\t\t\t\t<key>AAPL,slot-name</key>\n\t\t\t\t<string>Internal</string>\n\t\t\t\t<key>device_type</key>\n\t\t\t\t<string>ISA bridge</string>\n\t\t\t\t<key>model</key>\n\t\t\t\t<string>Sunrise Point-LP LPC Controller</string>\n\t\t\t</dict>\n\t\t\t<key>PciRoot(0x0)/Pci(0x1f,0x2)</key>\n\t\t\t<dict>\n\t\t\t\t<key>AAPL,slot-name</key>\n\t\t\t\t<string>Internal</string>\n\t\t\t\t<key>device_type</key>\n\t\t\t\t<string>Memory controller</string>\n\t\t\t\t<key>model</key>\n\t\t\t\t<string>Sunrise Point-LP PMC</string>\n\t\t\t</dict>\n\t\t\t<key>PciRoot(0x0)/Pci(0x1f,0x3)</key>\n\t\t\t<dict>\n\t\t\t\t<key>layout-id</key>\n\t\t\t\t<data>\n\t\t\t\tOAAAAA==\n\t\t\t\t</data>\n\t\t\t</dict>\n\t\t\t<key>PciRoot(0x0)/Pci(0x1f,0x4)</key>\n\t\t\t<dict>\n\t\t\t\t<key>AAPL,slot-name</key>\n\t\t\t\t<string>Internal</string>\n\t\t\t\t<key>device_type</key>\n\t\t\t\t<string>SMBus</string>\n\t\t\t\t<key>model</key>\n\t\t\t\t<string>Sunrise Point-LP SMBus</string>\n\t\t\t</dict>\n\t\t\t<key>PciRoot(0x0)/Pci(0x2,0x0)</key>\n\t\t\t<dict>\n\t\t\t\t<key>#framebuffer-unifiedmem</key>\n\t\t\t\t<data>\n\t\t\t\tAAAAgA==\n\t\t\t\t</data>\n\t\t\t\t<key>AAPL,ig-platform-id</key>\n\t\t\t\t<data>\n\t\t\t\tAAAWWQ==\n\t\t\t\t</data>\n\t\t\t\t<key>device-id</key>\n\t\t\t\t<data>\n\t\t\t\tFlkAAA==\n\t\t\t\t</data>\n\t\t\t\t<key>framebuffer-con1-enable</key>\n\t\t\t\t<data>\n\t\t\t\tAQAAAA==\n\t\t\t\t</data>\n\t\t\t\t<key>framebuffer-con1-type</key>\n\t\t\t\t<data>\n\t\t\t\tAAgAAA==\n\t\t\t\t</data>\n\t\t\t\t<key>framebuffer-con2-busid</key>\n\t\t\t\t<data>\n\t\t\t\tAAAAAA==\n\t\t\t\t</data>\n\t\t\t\t<key>framebuffer-con2-enable</key>\n\t\t\t\t<data>\n\t\t\t\tAQAAAA==\n\t\t\t\t</data>\n\t\t\t\t<key>framebuffer-con2-flags</key>\n\t\t\t\t<data>\n\t\t\t\tAAAAAA==\n\t\t\t\t</data>\n\t\t\t\t<key>framebuffer-con2-index</key>\n\t\t\t\t<data>\n\t\t\t\t/////w==\n\t\t\t\t</data>\n\t\t\t\t<key>framebuffer-con2-pipe</key>\n\t\t\t\t<data>\n\t\t\t\tAAAAAA==\n\t\t\t\t</data>\n\t\t\t\t<key>framebuffer-con2-type</key>\n\t\t\t\t<data>\n\t\t\t\tAQAAAA==\n\t\t\t\t</data>\n\t\t\t\t<key>framebuffer-fbmem</key>\n\t\t\t\t<data>\n\t\t\t\tAACQAA==\n\t\t\t\t</data>\n\t\t\t\t<key>framebuffer-memorycount</key>\n\t\t\t\t<data>\n\t\t\t\tAgAAAA==\n\t\t\t\t</data>\n\t\t\t\t<key>framebuffer-patch-enable</key>\n\t\t\t\t<data>\n\t\t\t\tAQAAAA==\n\t\t\t\t</data>\n\t\t\t\t<key>framebuffer-pipecount</key>\n\t\t\t\t<data>\n\t\t\t\tAgAAAA==\n\t\t\t\t</data>\n\t\t\t\t<key>framebuffer-portcount</key>\n\t\t\t\t<data>\n\t\t\t\tAgAAAA==\n\t\t\t\t</data>\n\t\t\t\t<key>framebuffer-stolenmem</key>\n\t\t\t\t<data>\n\t\t\t\tAAAwAQ==\n\t\t\t\t</data>\n\t\t\t\t<key>model</key>\n\t\t\t\t<string>Intel Iris Plus Graphics 655</string>\n\t\t\t</dict>\n\t\t\t<key>PciRoot(0x0)/Pci(0x4,0x0)</key>\n\t\t\t<dict>\n\t\t\t\t<key>AAPL,slot-name</key>\n\t\t\t\t<string>Internal</string>\n\t\t\t\t<key>device_type</key>\n\t\t\t\t<string>Signal processing controller</string>\n\t\t\t\t<key>model</key>\n\t\t\t\t<string>Xeon E3-1200 v5/E3-1500 v5/6th Gen Core Processor Thermal Subsystem</string>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<key>USB</key>\n\t\t<dict>\n\t\t\t<key>AddClockID</key>\n\t\t\t<true/>\n\t\t\t<key>FixOwnership</key>\n\t\t\t<true/>\n\t\t\t<key>HighCurrent</key>\n\t\t\t<true/>\n\t\t\t<key>Inject</key>\n\t\t\t<true/>\n\t\t</dict>\n\t\t<key>UseIntelHDMI</key>\n\t\t<true/>\n\t</dict>\n\t<key>GUI</key>\n\t<dict>\n\t\t<key>Hide</key>\n\t\t<array>\n\t\t\t<string>Preboot</string>\n\t\t\t<string>Recovery</string>\n\t\t\t<string>Windows</string>\n\t\t</array>\n\t\t<key>Mouse</key>\n\t\t<dict>\n\t\t\t<key>DoubleClick</key>\n\t\t\t<integer>500</integer>\n\t\t\t<key>Enabled</key>\n\t\t\t<false/>\n\t\t\t<key>Mirror</key>\n\t\t\t<false/>\n\t\t\t<key>Speed</key>\n\t\t\t<integer>8</integer>\n\t\t</dict>\n\t\t<key>PlayAsync</key>\n\t\t<true/>\n\t\t<key>Scan</key>\n\t\t<dict>\n\t\t\t<key>Entries</key>\n\t\t\t<true/>\n\t\t\t<key>Legacy</key>\n\t\t\t<false/>\n\t\t\t<key>Linux</key>\n\t\t\t<true/>\n\t\t\t<key>Tool</key>\n\t\t\t<false/>\n\t\t</dict>\n\t\t<key>ScreenResolution</key>\n\t\t<string>1920x1080</string>\n\t\t<key>Theme</key>\n\t\t<string>Hackintosh_ID</string>\n\t</dict>\n\t<key>Graphics</key>\n\t<dict>\n\t\t<key>EDID</key>\n\t\t<dict>\n\t\t\t<key>Inject</key>\n\t\t\t<false/>\n\t\t</dict>\n\t\t<key>Inject</key>\n\t\t<dict>\n\t\t\t<key>ATI</key>\n\t\t\t<false/>\n\t\t\t<key>Intel</key>\n\t\t\t<false/>\n\t\t\t<key>NVidia</key>\n\t\t\t<false/>\n\t\t</dict>\n\t\t<key>NvidiaSingle</key>\n\t\t<false/>\n\t</dict>\n\t<key>KernelAndKextPatches</key>\n\t<dict>\n\t\t<key>AppleIntelCPUPM</key>\n\t\t<true/>\n\t\t<key>AppleRTC</key>\n\t\t<false/>\n\t\t<key>Debug</key>\n\t\t<false/>\n\t\t<key>DellSMBIOSPatch</key>\n\t\t<true/>\n\t\t<key>ForceKextsToLoad</key>\n\t\t<array>\n\t\t\t<string>\\System\\Library\\Extensions\\IONetworkingFamily.kext</string>\n\t\t</array>\n\t\t<key>KernelCpu</key>\n\t\t<false/>\n\t\t<key>KernelLapic</key>\n\t\t<false/>\n\t\t<key>KernelPm</key>\n\t\t<true/>\n\t\t<key>KernelToPatch</key>\n\t\t<array>\n\t\t\t<dict>\n\t\t\t\t<key>Comment</key>\n\t\t\t\t<string>Disable panic kext logging on 10.13 Debug kernel</string>\n\t\t\t\t<key>Disabled</key>\n\t\t\t\t<false/>\n\t\t\t\t<key>Find</key>\n\t\t\t\t<data>\n\t\t\t\tsABMi1Xw\n\t\t\t\t</data>\n\t\t\t\t<key>MatchOS</key>\n\t\t\t\t<string>10.13.x</string>\n\t\t\t\t<key>Replace</key>\n\t\t\t\t<data>\n\t\t\t\tSIPEQF3D\n\t\t\t\t</data>\n\t\t\t</dict>\n\t\t\t<dict>\n\t\t\t\t<key>Comment</key>\n\t\t\t\t<string>Disable panic kext logging on kernel by DalianSky</string>\n\t\t\t\t<key>Disabled</key>\n\t\t\t\t<false/>\n\t\t\t\t<key>Find</key>\n\t\t\t\t<data>\n\t\t\t\tigKEwHQ=\n\t\t\t\t</data>\n\t\t\t\t<key>Replace</key>\n\t\t\t\t<data>\n\t\t\t\tigKEwOs=\n\t\t\t\t</data>\n\t\t\t</dict>\n\t\t\t<dict>\n\t\t\t\t<key>Comment</key>\n\t\t\t\t<string>MSR 0xE2 _xcpm_idle instant reboot(c) Pike R. Alpha</string>\n\t\t\t\t<key>Disabled</key>\n\t\t\t\t<false/>\n\t\t\t\t<key>Find</key>\n\t\t\t\t<data>\n\t\t\t\tILniAAAADzA=\n\t\t\t\t</data>\n\t\t\t\t<key>Replace</key>\n\t\t\t\t<data>\n\t\t\t\tILniAAAAkJA=\n\t\t\t\t</data>\n\t\t\t</dict>\n\t\t</array>\n\t\t<key>KernelXCPM</key>\n\t\t<false/>\n\t\t<key>KextsToPatch</key>\n\t\t<array>\n\t\t\t<dict>\n\t\t\t\t<key>Comment</key>\n\t\t\t\t<string>Disable AppleIntelLpssI2C (credit by Coolstar)</string>\n\t\t\t\t<key>Disabled</key>\n\t\t\t\t<false/>\n\t\t\t\t<key>Find</key>\n\t\t\t\t<data>\n\t\t\t\tSU9LaXQ=\n\t\t\t\t</data>\n\t\t\t\t<key>InfoPlistPatch</key>\n\t\t\t\t<true/>\n\t\t\t\t<key>Name</key>\n\t\t\t\t<string>AppleIntelLpssI2C</string>\n\t\t\t\t<key>Replace</key>\n\t\t\t\t<data>\n\t\t\t\tSU9LaXM=\n\t\t\t\t</data>\n\t\t\t</dict>\n\t\t\t<dict>\n\t\t\t\t<key>Comment</key>\n\t\t\t\t<string>Disable AppleIntelLpssI2CCOntroller (credit by Coolstar)</string>\n\t\t\t\t<key>Disabled</key>\n\t\t\t\t<false/>\n\t\t\t\t<key>Find</key>\n\t\t\t\t<data>\n\t\t\t\tSU9LaXQ=\n\t\t\t\t</data>\n\t\t\t\t<key>InfoPlistPatch</key>\n\t\t\t\t<true/>\n\t\t\t\t<key>Name</key>\n\t\t\t\t<string>AppleIntelLpssI2CController</string>\n\t\t\t\t<key>Replace</key>\n\t\t\t\t<data>\n\t\t\t\tSU9LaXM=\n\t\t\t\t</data>\n\t\t\t</dict>\n\t\t\t<dict>\n\t\t\t\t<key>Comment</key>\n\t\t\t\t<string>AppleBacklightInjector.kext (credit RehabMan)</string>\n\t\t\t\t<key>Disabled</key>\n\t\t\t\t<false/>\n\t\t\t\t<key>Find</key>\n\t\t\t\t<data>\n\t\t\t\tRiV1VCUwNHgA\n\t\t\t\t</data>\n\t\t\t\t<key>InfoPlistPatch</key>\n\t\t\t\t<false/>\n\t\t\t\t<key>Name</key>\n\t\t\t\t<string>com.apple.driver.AppleBacklight</string>\n\t\t\t\t<key>Replace</key>\n\t\t\t\t<data>\n\t\t\t\tRiV1VHh4eHgA\n\t\t\t\t</data>\n\t\t\t</dict>\n\t\t\t<dict>\n\t\t\t\t<key>Comment</key>\n\t\t\t\t<string>Enable TRIM for SSD</string>\n\t\t\t\t<key>Disabled</key>\n\t\t\t\t<false/>\n\t\t\t\t<key>Find</key>\n\t\t\t\t<data>\n\t\t\t\tAEFQUExFIFNTRAA=\n\t\t\t\t</data>\n\t\t\t\t<key>InfoPlistPatch</key>\n\t\t\t\t<false/>\n\t\t\t\t<key>Name</key>\n\t\t\t\t<string>com.apple.iokit.IOAHCIBlockStorage</string>\n\t\t\t\t<key>Replace</key>\n\t\t\t\t<data>\n\t\t\t\tAAAAAAAAAAAAAAA=\n\t\t\t\t</data>\n\t\t\t</dict>\n\t\t\t<dict>\n\t\t\t\t<key>Comment</key>\n\t\t\t\t<string>USB Port limit patch 10.14.1 18B50C (credits DalianSky)</string>\n\t\t\t\t<key>Disabled</key>\n\t\t\t\t<false/>\n\t\t\t\t<key>Find</key>\n\t\t\t\t<data>\n\t\t\t\tg32IDw+DpwQA\n\t\t\t\t</data>\n\t\t\t\t<key>InfoPlistPatch</key>\n\t\t\t\t<false/>\n\t\t\t\t<key>MatchBuild</key>\n\t\t\t\t<string>10.13.6</string>\n\t\t\t\t<key>Name</key>\n\t\t\t\t<string>com.apple.driver.usb.AppleUSBXHCI</string>\n\t\t\t\t<key>Replace</key>\n\t\t\t\t<data>\n\t\t\t\tg32IkJCQkJCQ\n\t\t\t\t</data>\n\t\t\t</dict>\n\t\t\t<dict>\n\t\t\t\t<key>Comment</key>\n\t\t\t\t<string>USB Port limit patch 10.14.x 10.15.x #1 modify by DalianSky(credits PMheart)</string>\n\t\t\t\t<key>Disabled</key>\n\t\t\t\t<false/>\n\t\t\t\t<key>Find</key>\n\t\t\t\t<data>\n\t\t\t\tg/sPDw==\n\t\t\t\t</data>\n\t\t\t\t<key>InfoPlistPatch</key>\n\t\t\t\t<false/>\n\t\t\t\t<key>Name</key>\n\t\t\t\t<string>com.apple.iokit.IOUSBHostFamily</string>\n\t\t\t\t<key>Replace</key>\n\t\t\t\t<data>\n\t\t\t\tg/s/Dw==\n\t\t\t\t</data>\n\t\t\t</dict>\n\t\t\t<dict>\n\t\t\t\t<key>Comment</key>\n\t\t\t\t<string>USB port limit patch 10.14.x modify by DalianSky(credit PMHeart)</string>\n\t\t\t\t<key>Disabled</key>\n\t\t\t\t<false/>\n\t\t\t\t<key>Find</key>\n\t\t\t\t<data>\n\t\t\t\tg+MP0w==\n\t\t\t\t</data>\n\t\t\t\t<key>InfoPlistPatch</key>\n\t\t\t\t<false/>\n\t\t\t\t<key>Name</key>\n\t\t\t\t<string>com.apple.iokit.IOUSBHostFamily</string>\n\t\t\t\t<key>Replace</key>\n\t\t\t\t<data>\n\t\t\t\tg+M/0w==\n\t\t\t\t</data>\n\t\t\t</dict>\n\t\t\t<dict>\n\t\t\t\t<key>Comment</key>\n\t\t\t\t<string>USB Port limit patch 10.15.x #1 modify by DalianSky</string>\n\t\t\t\t<key>Disabled</key>\n\t\t\t\t<false/>\n\t\t\t\t<key>Find</key>\n\t\t\t\t<data>\n\t\t\t\tg/kPDw==\n\t\t\t\t</data>\n\t\t\t\t<key>InfoPlistPatch</key>\n\t\t\t\t<false/>\n\t\t\t\t<key>Name</key>\n\t\t\t\t<string>com.apple.driver.usb.AppleUSBXHCI</string>\n\t\t\t\t<key>Replace</key>\n\t\t\t\t<data>\n\t\t\t\tg/k/Dw==\n\t\t\t\t</data>\n\t\t\t</dict>\n\t\t\t<dict>\n\t\t\t\t<key>Comment</key>\n\t\t\t\t<string>USB Port limit patch 10.14.x modify by DalianSky(credits PMheart)</string>\n\t\t\t\t<key>Disabled</key>\n\t\t\t\t<false/>\n\t\t\t\t<key>Find</key>\n\t\t\t\t<data>\n\t\t\t\tg/sPDw==\n\t\t\t\t</data>\n\t\t\t\t<key>InfoPlistPatch</key>\n\t\t\t\t<false/>\n\t\t\t\t<key>Name</key>\n\t\t\t\t<string>com.apple.driver.usb.AppleUSBXHCI</string>\n\t\t\t\t<key>Replace</key>\n\t\t\t\t<data>\n\t\t\t\tg/s/Dw==\n\t\t\t\t</data>\n\t\t\t</dict>\n\t\t\t<dict>\n\t\t\t\t<key>Comment</key>\n\t\t\t\t<string>USB Port limit patch 10.14.x modify by DalianSky(credits PMheart)</string>\n\t\t\t\t<key>Disabled</key>\n\t\t\t\t<false/>\n\t\t\t\t<key>Find</key>\n\t\t\t\t<data>\n\t\t\t\tg/8PDw==\n\t\t\t\t</data>\n\t\t\t\t<key>InfoPlistPatch</key>\n\t\t\t\t<false/>\n\t\t\t\t<key>Name</key>\n\t\t\t\t<string>com.apple.driver.usb.AppleUSBXHCI</string>\n\t\t\t\t<key>Replace</key>\n\t\t\t\t<data>\n\t\t\t\tg/8/Dw==\n\t\t\t\t</data>\n\t\t\t</dict>\n\t\t</array>\n\t</dict>\n\t<key>RtVariables</key>\n\t<dict>\n\t\t<key>BooterConfig</key>\n\t\t<string>0x28</string>\n\t\t<key>CsrActiveConfig</key>\n\t\t<string>0x67</string>\n\t</dict>\n\t<key>SMBIOS</key>\n\t<dict>\n\t\t<key>ProductName</key>\n\t\t<string>MacBookPro15,2</string>\n\t</dict>\n\t<key>SystemParameters</key>\n\t<dict>\n\t\t<key>InjectKexts</key>\n\t\t<string>Detect</string>\n\t\t<key>InjectSystemID</key>\n\t\t<true/>\n\t</dict>\n</dict>\n</plist>\n"
  },
  {
    "path": "EFI/CLOVER/config_bak.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>ACPI</key>\n\t<dict>\n\t\t<key>AutoMerge</key>\n\t\t<true/>\n\t\t<key>DSDT</key>\n\t\t<dict>\n\t\t\t<key>Debug</key>\n\t\t\t<false/>\n\t\t\t<key>DropOEM_DSM</key>\n\t\t\t<false/>\n\t\t\t<key>Fixes</key>\n\t\t\t<dict>\n\t\t\t\t<key>FixRegions</key>\n\t\t\t\t<true/>\n\t\t\t</dict>\n\t\t\t<key>Patches</key>\n\t\t\t<array>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>Comment</key>\n\t\t\t\t\t<string>change _DSM to XSDM</string>\n\t\t\t\t\t<key>Disabled</key>\n\t\t\t\t\t<false/>\n\t\t\t\t\t<key>Find</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tX0RTTQ==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Replace</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tWERTTQ==\n\t\t\t\t\t</data>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>Comment</key>\n\t\t\t\t\t<string>change OSID to IDOS</string>\n\t\t\t\t\t<key>Disabled</key>\n\t\t\t\t\t<false/>\n\t\t\t\t\t<key>Find</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tT1NJRA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Replace</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tSURPUw==\n\t\t\t\t\t</data>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>Comment</key>\n\t\t\t\t\t<string>change _OSI to XOSI</string>\n\t\t\t\t\t<key>Disabled</key>\n\t\t\t\t\t<false/>\n\t\t\t\t\t<key>Find</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tX09TSQ==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Replace</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tWE9TSQ==\n\t\t\t\t\t</data>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>Comment</key>\n\t\t\t\t\t<string>change HDAS to HDEF</string>\n\t\t\t\t\t<key>Disabled</key>\n\t\t\t\t\t<false/>\n\t\t\t\t\t<key>Find</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tSERBUw==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Replace</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tSERFRg==\n\t\t\t\t\t</data>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>Comment</key>\n\t\t\t\t\t<string>change HECI to IMEI</string>\n\t\t\t\t\t<key>Disabled</key>\n\t\t\t\t\t<false/>\n\t\t\t\t\t<key>Find</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tSEVDSQ==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Replace</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tSU1FSQ==\n\t\t\t\t\t</data>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>Comment</key>\n\t\t\t\t\t<string>chang BRT6 to BRTX</string>\n\t\t\t\t\t<key>Disabled</key>\n\t\t\t\t\t<false/>\n\t\t\t\t\t<key>Find</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tIEJSVDY=\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Replace</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tIEJSVFg=\n\t\t\t\t\t</data>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>Comment</key>\n\t\t\t\t\t<string>change GFX0 to IGPU</string>\n\t\t\t\t\t<key>Disabled</key>\n\t\t\t\t\t<false/>\n\t\t\t\t\t<key>Find</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tR0ZYMA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Replace</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tSUdQVQ==\n\t\t\t\t\t</data>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>Comment</key>\n\t\t\t\t\t<string>change SAT0 to SATA</string>\n\t\t\t\t\t<key>Disabled</key>\n\t\t\t\t\t<false/>\n\t\t\t\t\t<key>Find</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tU0FUMA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Replace</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tU0FUQQ==\n\t\t\t\t\t</data>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>Comment</key>\n\t\t\t\t\t<string>change 6D03 to 6D00</string>\n\t\t\t\t\t<key>Disabled</key>\n\t\t\t\t\t<false/>\n\t\t\t\t\t<key>Find</key>\n\t\t\t\t\t<data>\n\t\t\t\t\toG2gAw==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Replace</key>\n\t\t\t\t\t<data>\n\t\t\t\t\toG2gAA==\n\t\t\t\t\t</data>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>Comment</key>\n\t\t\t\t\t<string>change _PTS to ZPTS</string>\n\t\t\t\t\t<key>Disabled</key>\n\t\t\t\t\t<false/>\n\t\t\t\t\t<key>Find</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tX1BUUw==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Replace</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tWlBUUw==\n\t\t\t\t\t</data>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>Comment</key>\n\t\t\t\t\t<string>change _WAK to ZWAK</string>\n\t\t\t\t\t<key>Disabled</key>\n\t\t\t\t\t<false/>\n\t\t\t\t\t<key>Find</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tX1dBSw==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Replace</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tWldBSw==\n\t\t\t\t\t</data>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>Comment</key>\n\t\t\t\t\t<string>change ECDV to EC(dell)</string>\n\t\t\t\t\t<key>Disabled</key>\n\t\t\t\t\t<false/>\n\t\t\t\t\t<key>Find</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tRUNEVg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Replace</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tRUNfXw==\n\t\t\t\t\t</data>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>Comment</key>\n\t\t\t\t\t<string>change LID0 to LID_</string>\n\t\t\t\t\t<key>Disabled</key>\n\t\t\t\t\t<false/>\n\t\t\t\t\t<key>Find</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tTElEMA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Replace</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tTElEXw==\n\t\t\t\t\t</data>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>Comment</key>\n\t\t\t\t\t<string>change _LID to XLID</string>\n\t\t\t\t\t<key>Disabled</key>\n\t\t\t\t\t<false/>\n\t\t\t\t\t<key>Find</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tX0xJRAA=\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Replace</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tWExJRAA=\n\t\t\t\t\t</data>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>Comment</key>\n\t\t\t\t\t<string>change NEVT to XEVT(dell)</string>\n\t\t\t\t\t<key>Disabled</key>\n\t\t\t\t\t<false/>\n\t\t\t\t\t<key>Find</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tTkVWVAA=\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Replace</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tWEVWVAA=\n\t\t\t\t\t</data>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>Comment</key>\n\t\t\t\t\t<string>XDCI:_PRW to XPRW</string>\n\t\t\t\t\t<key>Disabled</key>\n\t\t\t\t\t<false/>\n\t\t\t\t\t<key>Find</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tX1BSVw==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Replace</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tWFBSVw==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>TgtBridge</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tWERDSQ==\n\t\t\t\t\t</data>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>Comment</key>\n\t\t\t\t\t<string>GLAN:_PRW to XPRW</string>\n\t\t\t\t\t<key>Disabled</key>\n\t\t\t\t\t<false/>\n\t\t\t\t\t<key>Find</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tX1BSVw==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Replace</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tWFBSVw==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>TgtBridge</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tR0xBTg==\n\t\t\t\t\t</data>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>Comment</key>\n\t\t\t\t\t<string>HDEF:_PRW to XPRW</string>\n\t\t\t\t\t<key>Disabled</key>\n\t\t\t\t\t<false/>\n\t\t\t\t\t<key>Find</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tX1BSVw==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Replace</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tWFBSVw==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>TgtBridge</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tSERFRg==\n\t\t\t\t\t</data>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>Comment</key>\n\t\t\t\t\t<string>DELL:EV6 to XEV6</string>\n\t\t\t\t\t<key>Disabled</key>\n\t\t\t\t\t<false/>\n\t\t\t\t\t<key>Find</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tRVY2XwI=\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Replace</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tWEVWNgI=\n\t\t\t\t\t</data>\n\t\t\t\t</dict>\n\t\t\t</array>\n\t\t\t<key>ReuseFFFF</key>\n\t\t\t<false/>\n\t\t</dict>\n\t\t<key>DropTables</key>\n\t\t<array>\n\t\t\t<dict>\n\t\t\t\t<key>Signature</key>\n\t\t\t\t<string>DMAR</string>\n\t\t\t</dict>\n\t\t</array>\n\t\t<key>FixHeaders</key>\n\t\t<true/>\n\t\t<key>FixMCFG</key>\n\t\t<false/>\n\t\t<key>SSDT</key>\n\t\t<dict>\n\t\t\t<key>DropOem</key>\n\t\t\t<false/>\n\t\t\t<key>Generate</key>\n\t\t\t<dict>\n\t\t\t\t<key>CStates</key>\n\t\t\t\t<false/>\n\t\t\t\t<key>PStates</key>\n\t\t\t\t<false/>\n\t\t\t\t<key>PluginType</key>\n\t\t\t\t<true/>\n\t\t\t</dict>\n\t\t</dict>\n\t</dict>\n\t<key>Boot</key>\n\t<dict>\n\t\t<key>Arguments</key>\n\t\t<string>darkwake=8 -lilubetaall</string>\n\t\t<key>CustomLogo</key>\n\t\t<string>Theme</string>\n\t\t<key>Debug</key>\n\t\t<false/>\n\t\t<key>DefaultVolume</key>\n\t\t<string>MAC</string>\n\t\t<key>NoEarlyProgress</key>\n\t\t<true/>\n\t\t<key>Secure</key>\n\t\t<false/>\n\t\t<key>Timeout</key>\n\t\t<integer>1</integer>\n\t\t<key>XMPDetection</key>\n\t\t<false/>\n\t</dict>\n\t<key>BootGraphics</key>\n\t<dict>\n\t\t<key>EFILoginHiDPI</key>\n\t\t<integer>1</integer>\n\t\t<key>UIScale</key>\n\t\t<integer>1</integer>\n\t\t<key>flagstate</key>\n\t\t<integer>1</integer>\n\t</dict>\n\t<key>CPU</key>\n\t<dict>\n\t\t<key>HWPEnable</key>\n\t\t<true/>\n\t\t<key>UseARTFrequency</key>\n\t\t<true/>\n\t</dict>\n\t<key>Devices</key>\n\t<dict>\n\t\t<key>Audio</key>\n\t\t<dict>\n\t\t\t<key>Inject</key>\n\t\t\t<string>No</string>\n\t\t</dict>\n\t\t<key>Properties</key>\n\t\t<dict>\n\t\t\t<key>PciRoot(0x0)/Pci(0x0,0x0)</key>\n\t\t\t<dict>\n\t\t\t\t<key>AAPL,slot-name</key>\n\t\t\t\t<string>Internal</string>\n\t\t\t\t<key>device_type</key>\n\t\t\t\t<string>Host bridge</string>\n\t\t\t\t<key>model</key>\n\t\t\t\t<string>Xeon E3-1200 v6/7th Gen Core Processor Host Bridge/DRAM Registers</string>\n\t\t\t</dict>\n\t\t\t<key>PciRoot(0x0)/Pci(0x14,0x0)</key>\n\t\t\t<dict>\n\t\t\t\t<key>AAPL,slot-name</key>\n\t\t\t\t<string>Internal</string>\n\t\t\t\t<key>device_type</key>\n\t\t\t\t<string>USB controller</string>\n\t\t\t\t<key>model</key>\n\t\t\t\t<string>Sunrise Point-LP USB 3.0 xHCI Controller</string>\n\t\t\t</dict>\n\t\t\t<key>PciRoot(0x0)/Pci(0x14,0x2)</key>\n\t\t\t<dict>\n\t\t\t\t<key>AAPL,slot-name</key>\n\t\t\t\t<string>Internal</string>\n\t\t\t\t<key>device_type</key>\n\t\t\t\t<string>Signal processing controller</string>\n\t\t\t\t<key>model</key>\n\t\t\t\t<string>Sunrise Point-LP Thermal subsystem</string>\n\t\t\t</dict>\n\t\t\t<key>PciRoot(0x0)/Pci(0x15,0x0)</key>\n\t\t\t<dict>\n\t\t\t\t<key>AAPL,slot-name</key>\n\t\t\t\t<string>Internal</string>\n\t\t\t\t<key>device_type</key>\n\t\t\t\t<string>Signal processing controller</string>\n\t\t\t\t<key>model</key>\n\t\t\t\t<string>Sunrise Point-LP Serial IO I2C Controller #0</string>\n\t\t\t</dict>\n\t\t\t<key>PciRoot(0x0)/Pci(0x15,0x1)</key>\n\t\t\t<dict>\n\t\t\t\t<key>AAPL,slot-name</key>\n\t\t\t\t<string>Internal</string>\n\t\t\t\t<key>device_type</key>\n\t\t\t\t<string>Signal processing controller</string>\n\t\t\t\t<key>model</key>\n\t\t\t\t<string>Sunrise Point-LP Serial IO I2C Controller #1</string>\n\t\t\t</dict>\n\t\t\t<key>PciRoot(0x0)/Pci(0x16,0x0)</key>\n\t\t\t<dict>\n\t\t\t\t<key>AAPL,slot-name</key>\n\t\t\t\t<string>Internal</string>\n\t\t\t\t<key>device_type</key>\n\t\t\t\t<string>Communication controller</string>\n\t\t\t\t<key>model</key>\n\t\t\t\t<string>Sunrise Point-LP CSME HECI #1</string>\n\t\t\t</dict>\n\t\t\t<key>PciRoot(0x0)/Pci(0x17,0x0)</key>\n\t\t\t<dict>\n\t\t\t\t<key>AAPL,slot-name</key>\n\t\t\t\t<string>Internal</string>\n\t\t\t\t<key>device_type</key>\n\t\t\t\t<string>SATA controller</string>\n\t\t\t\t<key>model</key>\n\t\t\t\t<string>Q170/Q150/B150/H170/H110/Z170/CM236 Chipset SATA Controller [AHCI Mode]</string>\n\t\t\t</dict>\n\t\t\t<key>PciRoot(0x0)/Pci(0x1c,0x0)</key>\n\t\t\t<dict>\n\t\t\t\t<key>AAPL,slot-name</key>\n\t\t\t\t<string>Internal</string>\n\t\t\t\t<key>device_type</key>\n\t\t\t\t<string>PCI bridge</string>\n\t\t\t\t<key>model</key>\n\t\t\t\t<string>Sunrise Point-LP PCI Express Root Port #1</string>\n\t\t\t</dict>\n\t\t\t<key>PciRoot(0x0)/Pci(0x1c,0x0)/Pci(0x0,0x0)</key>\n\t\t\t<dict>\n\t\t\t\t<key>AAPL,slot-name</key>\n\t\t\t\t<string>Internal@1,0,0</string>\n\t\t\t\t<key>device_type</key>\n\t\t\t\t<string>Unassigned class</string>\n\t\t\t\t<key>model</key>\n\t\t\t\t<string>GM108M [GeForce 940MX]</string>\n\t\t\t</dict>\n\t\t\t<key>PciRoot(0x0)/Pci(0x1c,0x4)</key>\n\t\t\t<dict>\n\t\t\t\t<key>AAPL,slot-name</key>\n\t\t\t\t<string>Internal</string>\n\t\t\t\t<key>device_type</key>\n\t\t\t\t<string>PCI bridge</string>\n\t\t\t\t<key>model</key>\n\t\t\t\t<string>Sunrise Point-LP PCI Express Root Port #5</string>\n\t\t\t</dict>\n\t\t\t<key>PciRoot(0x0)/Pci(0x1c,0x4)/Pci(0x0,0x0)</key>\n\t\t\t<dict>\n\t\t\t\t<key>AAPL,slot-name</key>\n\t\t\t\t<string>Internal@2,0,0</string>\n\t\t\t\t<key>device_type</key>\n\t\t\t\t<string>Network controller</string>\n\t\t\t\t<key>model</key>\n\t\t\t\t<string>BCM4352 802.11ac Wireless Network Adapter</string>\n\t\t\t</dict>\n\t\t\t<key>PciRoot(0x0)/Pci(0x1c,0x5)</key>\n\t\t\t<dict>\n\t\t\t\t<key>AAPL,slot-name</key>\n\t\t\t\t<string>Internal</string>\n\t\t\t\t<key>device_type</key>\n\t\t\t\t<string>PCI bridge</string>\n\t\t\t\t<key>model</key>\n\t\t\t\t<string>Sunrise Point-LP PCI Express Root Port #6</string>\n\t\t\t</dict>\n\t\t\t<key>PciRoot(0x0)/Pci(0x1c,0x5)/Pci(0x0,0x0)</key>\n\t\t\t<dict>\n\t\t\t\t<key>AAPL,slot-name</key>\n\t\t\t\t<string>Internal@3,0,0</string>\n\t\t\t\t<key>device_type</key>\n\t\t\t\t<string>Ethernet controller</string>\n\t\t\t\t<key>model</key>\n\t\t\t\t<string>RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller</string>\n\t\t\t</dict>\n\t\t\t<key>PciRoot(0x0)/Pci(0x1f,0x0)</key>\n\t\t\t<dict>\n\t\t\t\t<key>AAPL,slot-name</key>\n\t\t\t\t<string>Internal</string>\n\t\t\t\t<key>device_type</key>\n\t\t\t\t<string>ISA bridge</string>\n\t\t\t\t<key>model</key>\n\t\t\t\t<string>Sunrise Point-LP LPC Controller</string>\n\t\t\t</dict>\n\t\t\t<key>PciRoot(0x0)/Pci(0x1f,0x2)</key>\n\t\t\t<dict>\n\t\t\t\t<key>AAPL,slot-name</key>\n\t\t\t\t<string>Internal</string>\n\t\t\t\t<key>device_type</key>\n\t\t\t\t<string>Memory controller</string>\n\t\t\t\t<key>model</key>\n\t\t\t\t<string>Sunrise Point-LP PMC</string>\n\t\t\t</dict>\n\t\t\t<key>PciRoot(0x0)/Pci(0x1f,0x3)</key>\n\t\t\t<dict>\n\t\t\t\t<key>layout-id</key>\n\t\t\t\t<data>\n\t\t\t\tOAAAAA==\n\t\t\t\t</data>\n\t\t\t</dict>\n\t\t\t<key>PciRoot(0x0)/Pci(0x1f,0x4)</key>\n\t\t\t<dict>\n\t\t\t\t<key>AAPL,slot-name</key>\n\t\t\t\t<string>Internal</string>\n\t\t\t\t<key>device_type</key>\n\t\t\t\t<string>SMBus</string>\n\t\t\t\t<key>model</key>\n\t\t\t\t<string>Sunrise Point-LP SMBus</string>\n\t\t\t</dict>\n\t\t\t<key>PciRoot(0x0)/Pci(0x2,0x0)</key>\n\t\t\t<dict>\n\t\t\t\t<key>#framebuffer-unifiedmem</key>\n\t\t\t\t<data>\n\t\t\t\tAAAAgA==\n\t\t\t\t</data>\n\t\t\t\t<key>AAPL,ig-platform-id</key>\n\t\t\t\t<data>\n\t\t\t\tAAAWWQ==\n\t\t\t\t</data>\n\t\t\t\t<key>device-id</key>\n\t\t\t\t<data>\n\t\t\t\tFlkAAA==\n\t\t\t\t</data>\n\t\t\t\t<key>framebuffer-con1-enable</key>\n\t\t\t\t<data>\n\t\t\t\tAQAAAA==\n\t\t\t\t</data>\n\t\t\t\t<key>framebuffer-con1-type</key>\n\t\t\t\t<data>\n\t\t\t\tAAgAAA==\n\t\t\t\t</data>\n\t\t\t\t<key>framebuffer-con2-busid</key>\n\t\t\t\t<data>\n\t\t\t\tAAAAAA==\n\t\t\t\t</data>\n\t\t\t\t<key>framebuffer-con2-enable</key>\n\t\t\t\t<data>\n\t\t\t\tAQAAAA==\n\t\t\t\t</data>\n\t\t\t\t<key>framebuffer-con2-flags</key>\n\t\t\t\t<data>\n\t\t\t\tAAAAAA==\n\t\t\t\t</data>\n\t\t\t\t<key>framebuffer-con2-index</key>\n\t\t\t\t<data>\n\t\t\t\t/////w==\n\t\t\t\t</data>\n\t\t\t\t<key>framebuffer-con2-pipe</key>\n\t\t\t\t<data>\n\t\t\t\tAAAAAA==\n\t\t\t\t</data>\n\t\t\t\t<key>framebuffer-con2-type</key>\n\t\t\t\t<data>\n\t\t\t\tAQAAAA==\n\t\t\t\t</data>\n\t\t\t\t<key>framebuffer-fbmem</key>\n\t\t\t\t<data>\n\t\t\t\tAACQAA==\n\t\t\t\t</data>\n\t\t\t\t<key>framebuffer-memorycount</key>\n\t\t\t\t<data>\n\t\t\t\tAgAAAA==\n\t\t\t\t</data>\n\t\t\t\t<key>framebuffer-patch-enable</key>\n\t\t\t\t<data>\n\t\t\t\tAQAAAA==\n\t\t\t\t</data>\n\t\t\t\t<key>framebuffer-pipecount</key>\n\t\t\t\t<data>\n\t\t\t\tAgAAAA==\n\t\t\t\t</data>\n\t\t\t\t<key>framebuffer-portcount</key>\n\t\t\t\t<data>\n\t\t\t\tAgAAAA==\n\t\t\t\t</data>\n\t\t\t\t<key>framebuffer-stolenmem</key>\n\t\t\t\t<data>\n\t\t\t\tAAAwAQ==\n\t\t\t\t</data>\n\t\t\t\t<key>model</key>\n\t\t\t\t<string>Intel Iris Plus Graphics 655</string>\n\t\t\t</dict>\n\t\t\t<key>PciRoot(0x0)/Pci(0x4,0x0)</key>\n\t\t\t<dict>\n\t\t\t\t<key>AAPL,slot-name</key>\n\t\t\t\t<string>Internal</string>\n\t\t\t\t<key>device_type</key>\n\t\t\t\t<string>Signal processing controller</string>\n\t\t\t\t<key>model</key>\n\t\t\t\t<string>Xeon E3-1200 v5/E3-1500 v5/6th Gen Core Processor Thermal Subsystem</string>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<key>USB</key>\n\t\t<dict>\n\t\t\t<key>AddClockID</key>\n\t\t\t<true/>\n\t\t\t<key>FixOwnership</key>\n\t\t\t<true/>\n\t\t\t<key>HighCurrent</key>\n\t\t\t<true/>\n\t\t\t<key>Inject</key>\n\t\t\t<true/>\n\t\t</dict>\n\t\t<key>UseIntelHDMI</key>\n\t\t<true/>\n\t</dict>\n\t<key>GUI</key>\n\t<dict>\n\t\t<key>Hide</key>\n\t\t<array>\n\t\t\t<string>Preboot</string>\n\t\t\t<string>Recovery</string>\n\t\t\t<string>Windows</string>\n\t\t</array>\n\t\t<key>Mouse</key>\n\t\t<dict>\n\t\t\t<key>DoubleClick</key>\n\t\t\t<integer>500</integer>\n\t\t\t<key>Enabled</key>\n\t\t\t<false/>\n\t\t\t<key>Mirror</key>\n\t\t\t<false/>\n\t\t\t<key>Speed</key>\n\t\t\t<integer>8</integer>\n\t\t</dict>\n\t\t<key>PlayAsync</key>\n\t\t<true/>\n\t\t<key>Scan</key>\n\t\t<dict>\n\t\t\t<key>Entries</key>\n\t\t\t<true/>\n\t\t\t<key>Legacy</key>\n\t\t\t<false/>\n\t\t\t<key>Linux</key>\n\t\t\t<true/>\n\t\t\t<key>Tool</key>\n\t\t\t<false/>\n\t\t</dict>\n\t\t<key>ScreenResolution</key>\n\t\t<string>1920x1080</string>\n\t\t<key>Theme</key>\n\t\t<string>Hackintosh_ID</string>\n\t</dict>\n\t<key>Graphics</key>\n\t<dict>\n\t\t<key>EDID</key>\n\t\t<dict>\n\t\t\t<key>Inject</key>\n\t\t\t<false/>\n\t\t</dict>\n\t\t<key>Inject</key>\n\t\t<dict>\n\t\t\t<key>ATI</key>\n\t\t\t<false/>\n\t\t\t<key>Intel</key>\n\t\t\t<false/>\n\t\t\t<key>NVidia</key>\n\t\t\t<false/>\n\t\t</dict>\n\t\t<key>NvidiaSingle</key>\n\t\t<false/>\n\t</dict>\n\t<key>KernelAndKextPatches</key>\n\t<dict>\n\t\t<key>AppleIntelCPUPM</key>\n\t\t<true/>\n\t\t<key>AppleRTC</key>\n\t\t<false/>\n\t\t<key>Debug</key>\n\t\t<false/>\n\t\t<key>DellSMBIOSPatch</key>\n\t\t<true/>\n\t\t<key>ForceKextsToLoad</key>\n\t\t<array>\n\t\t\t<string>\\System\\Library\\Extensions\\IONetworkingFamily.kext</string>\n\t\t</array>\n\t\t<key>KernelCpu</key>\n\t\t<false/>\n\t\t<key>KernelLapic</key>\n\t\t<false/>\n\t\t<key>KernelPm</key>\n\t\t<true/>\n\t\t<key>KernelToPatch</key>\n\t\t<array>\n\t\t\t<dict>\n\t\t\t\t<key>Comment</key>\n\t\t\t\t<string>Disable panic kext logging on 10.13 Debug kernel</string>\n\t\t\t\t<key>Disabled</key>\n\t\t\t\t<false/>\n\t\t\t\t<key>Find</key>\n\t\t\t\t<data>\n\t\t\t\tsABMi1Xw\n\t\t\t\t</data>\n\t\t\t\t<key>MatchOS</key>\n\t\t\t\t<string>10.13.x</string>\n\t\t\t\t<key>Replace</key>\n\t\t\t\t<data>\n\t\t\t\tSIPEQF3D\n\t\t\t\t</data>\n\t\t\t</dict>\n\t\t\t<dict>\n\t\t\t\t<key>Comment</key>\n\t\t\t\t<string>Disable panic kext logging on 10.13 Release kernel</string>\n\t\t\t\t<key>Disabled</key>\n\t\t\t\t<false/>\n\t\t\t\t<key>Find</key>\n\t\t\t\t<data>\n\t\t\t\tigKEwHRE\n\t\t\t\t</data>\n\t\t\t\t<key>MatchOS</key>\n\t\t\t\t<string>10.13.x</string>\n\t\t\t\t<key>Replace</key>\n\t\t\t\t<data>\n\t\t\t\tigKEwOtE\n\t\t\t\t</data>\n\t\t\t</dict>\n\t\t\t<dict>\n\t\t\t\t<key>Comment</key>\n\t\t\t\t<string>MSR 0xE2 _xcpm_idle instant reboot(c) Pike R. Alpha</string>\n\t\t\t\t<key>Disabled</key>\n\t\t\t\t<false/>\n\t\t\t\t<key>Find</key>\n\t\t\t\t<data>\n\t\t\t\tILniAAAADzA=\n\t\t\t\t</data>\n\t\t\t\t<key>Replace</key>\n\t\t\t\t<data>\n\t\t\t\tILniAAAAkJA=\n\t\t\t\t</data>\n\t\t\t</dict>\n\t\t\t<dict>\n\t\t\t\t<key>Comment</key>\n\t\t\t\t<string>Disable panic kext logging on 10.14 Release kernel (c) vit9696</string>\n\t\t\t\t<key>Disabled</key>\n\t\t\t\t<false/>\n\t\t\t\t<key>Find</key>\n\t\t\t\t<data>\n\t\t\t\tigKEwHRC\n\t\t\t\t</data>\n\t\t\t\t<key>MatchOS</key>\n\t\t\t\t<string>10.14.x</string>\n\t\t\t\t<key>Replace</key>\n\t\t\t\t<data>\n\t\t\t\tigKEwOtC\n\t\t\t\t</data>\n\t\t\t</dict>\n\t\t</array>\n\t\t<key>KernelXCPM</key>\n\t\t<false/>\n\t\t<key>KextsToPatch</key>\n\t\t<array>\n\t\t\t<dict>\n\t\t\t\t<key>Comment</key>\n\t\t\t\t<string>Disable AppleIntelLpssI2C (credit by Coolstar)</string>\n\t\t\t\t<key>Disabled</key>\n\t\t\t\t<false/>\n\t\t\t\t<key>Find</key>\n\t\t\t\t<data>\n\t\t\t\tSU9LaXQ=\n\t\t\t\t</data>\n\t\t\t\t<key>InfoPlistPatch</key>\n\t\t\t\t<true/>\n\t\t\t\t<key>Name</key>\n\t\t\t\t<string>AppleIntelLpssI2C</string>\n\t\t\t\t<key>Replace</key>\n\t\t\t\t<data>\n\t\t\t\tSU9LaXM=\n\t\t\t\t</data>\n\t\t\t</dict>\n\t\t\t<dict>\n\t\t\t\t<key>Comment</key>\n\t\t\t\t<string>Disable AppleIntelLpssI2CCOntroller (credit by Coolstar)</string>\n\t\t\t\t<key>Disabled</key>\n\t\t\t\t<false/>\n\t\t\t\t<key>Find</key>\n\t\t\t\t<data>\n\t\t\t\tSU9LaXQ=\n\t\t\t\t</data>\n\t\t\t\t<key>InfoPlistPatch</key>\n\t\t\t\t<true/>\n\t\t\t\t<key>Name</key>\n\t\t\t\t<string>AppleIntelLpssI2CController</string>\n\t\t\t\t<key>Replace</key>\n\t\t\t\t<data>\n\t\t\t\tSU9LaXM=\n\t\t\t\t</data>\n\t\t\t</dict>\n\t\t\t<dict>\n\t\t\t\t<key>Comment</key>\n\t\t\t\t<string>AppleBacklightInjector.kext (credit RehabMan)</string>\n\t\t\t\t<key>Disabled</key>\n\t\t\t\t<false/>\n\t\t\t\t<key>Find</key>\n\t\t\t\t<data>\n\t\t\t\tRiV1VCUwNHgA\n\t\t\t\t</data>\n\t\t\t\t<key>InfoPlistPatch</key>\n\t\t\t\t<false/>\n\t\t\t\t<key>Name</key>\n\t\t\t\t<string>com.apple.driver.AppleBacklight</string>\n\t\t\t\t<key>Replace</key>\n\t\t\t\t<data>\n\t\t\t\tRiV1VHh4eHgA\n\t\t\t\t</data>\n\t\t\t</dict>\n\t\t\t<dict>\n\t\t\t\t<key>Comment</key>\n\t\t\t\t<string>Enable TRIM for SSD</string>\n\t\t\t\t<key>Disabled</key>\n\t\t\t\t<false/>\n\t\t\t\t<key>Find</key>\n\t\t\t\t<data>\n\t\t\t\tAEFQUExFIFNTRAA=\n\t\t\t\t</data>\n\t\t\t\t<key>InfoPlistPatch</key>\n\t\t\t\t<false/>\n\t\t\t\t<key>Name</key>\n\t\t\t\t<string>com.apple.iokit.IOAHCIBlockStorage</string>\n\t\t\t\t<key>Replace</key>\n\t\t\t\t<data>\n\t\t\t\tAAAAAAAAAAAAAAA=\n\t\t\t\t</data>\n\t\t\t</dict>\n\t\t\t<dict>\n\t\t\t\t<key>Comment</key>\n\t\t\t\t<string>USB Port limit patch 10.14 (credits FredWst)</string>\n\t\t\t\t<key>Disabled</key>\n\t\t\t\t<false/>\n\t\t\t\t<key>Find</key>\n\t\t\t\t<data>\n\t\t\t\tg/sPD4MDBQAA\n\t\t\t\t</data>\n\t\t\t\t<key>InfoPlistPatch</key>\n\t\t\t\t<false/>\n\t\t\t\t<key>MatchBuild</key>\n\t\t\t\t<string>10.14</string>\n\t\t\t\t<key>Name</key>\n\t\t\t\t<string>com.apple.driver.usb.AppleUSBXHCI</string>\n\t\t\t\t<key>Replace</key>\n\t\t\t\t<data>\n\t\t\t\tg/sPkJCQkJCQ\n\t\t\t\t</data>\n\t\t\t</dict>\n\t\t\t<dict>\n\t\t\t\t<key>Comment</key>\n\t\t\t\t<string>USB Port limit patch 10.14.1 18B50C (credits DalianSky)</string>\n\t\t\t\t<key>Disabled</key>\n\t\t\t\t<false/>\n\t\t\t\t<key>Find</key>\n\t\t\t\t<data>\n\t\t\t\tg/sPD4OPBAAA\n\t\t\t\t</data>\n\t\t\t\t<key>InfoPlistPatch</key>\n\t\t\t\t<false/>\n\t\t\t\t<key>MatchBuild</key>\n\t\t\t\t<string>10.14.x</string>\n\t\t\t\t<key>Name</key>\n\t\t\t\t<string>com.apple.driver.usb.AppleUSBXHCI</string>\n\t\t\t\t<key>Replace</key>\n\t\t\t\t<data>\n\t\t\t\tg/sPkJCQkJCQ\n\t\t\t\t</data>\n\t\t\t</dict>\n\t\t\t<dict>\n\t\t\t\t<key>Comment</key>\n\t\t\t\t<string>USB Port limit patch 10.14.1 18B50C (credits DalianSky)</string>\n\t\t\t\t<key>Disabled</key>\n\t\t\t\t<false/>\n\t\t\t\t<key>Find</key>\n\t\t\t\t<data>\n\t\t\t\tg32IDw+DpwQA\n\t\t\t\t</data>\n\t\t\t\t<key>InfoPlistPatch</key>\n\t\t\t\t<false/>\n\t\t\t\t<key>MatchBuild</key>\n\t\t\t\t<string>10.13.6</string>\n\t\t\t\t<key>Name</key>\n\t\t\t\t<string>com.apple.driver.usb.AppleUSBXHCI</string>\n\t\t\t\t<key>Replace</key>\n\t\t\t\t<data>\n\t\t\t\tg32IkJCQkJCQ\n\t\t\t\t</data>\n\t\t\t</dict>\n\t\t</array>\n\t</dict>\n\t<key>RtVariables</key>\n\t<dict>\n\t\t<key>BooterConfig</key>\n\t\t<string>0x28</string>\n\t\t<key>CsrActiveConfig</key>\n\t\t<string>0x67</string>\n\t</dict>\n\t<key>SMBIOS</key>\n\t<dict>\n\t\t<key>ProductName</key>\n\t\t<string>MacBookPro15,2</string>\n\t</dict>\n\t<key>SystemParameters</key>\n\t<dict>\n\t\t<key>CustomUUID</key>\n\t\t<string>4BC7201E-AA4D-5041-858C-91B8B48F65E2</string>\n\t\t<key>InjectKexts</key>\n\t\t<string>Detect</string>\n\t\t<key>InjectSystemID</key>\n\t\t<true/>\n\t</dict>\n</dict>\n</plist>\n"
  },
  {
    "path": "EFI/CLOVER/kexts/Other/AirportBrcmFixup.kext/Contents/Info.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>BuildMachineOSBuild</key>\n\t<string>18F132</string>\n\t<key>CFBundleDevelopmentRegion</key>\n\t<string>en</string>\n\t<key>CFBundleExecutable</key>\n\t<string>AirportBrcmFixup</string>\n\t<key>CFBundleIdentifier</key>\n\t<string>as.lvs1974.AirportBrcmFixup</string>\n\t<key>CFBundleInfoDictionaryVersion</key>\n\t<string>6.0</string>\n\t<key>CFBundleName</key>\n\t<string>AirportBrcmFixup</string>\n\t<key>CFBundlePackageType</key>\n\t<string>KEXT</string>\n\t<key>CFBundleShortVersionString</key>\n\t<string>2.0.1</string>\n\t<key>CFBundleSignature</key>\n\t<string>????</string>\n\t<key>CFBundleSupportedPlatforms</key>\n\t<array>\n\t\t<string>MacOSX</string>\n\t</array>\n\t<key>CFBundleVersion</key>\n\t<string>2.0.1</string>\n\t<key>DTCompiler</key>\n\t<string>com.apple.compilers.llvm.clang.1_0</string>\n\t<key>DTPlatformBuild</key>\n\t<string>10E1001</string>\n\t<key>DTPlatformVersion</key>\n\t<string>GM</string>\n\t<key>DTSDKBuild</key>\n\t<string>18E219</string>\n\t<key>DTSDKName</key>\n\t<string>macosx10.14</string>\n\t<key>DTXcode</key>\n\t<string>1020</string>\n\t<key>DTXcodeBuild</key>\n\t<string>10E1001</string>\n\t<key>IOKitPersonalities</key>\n\t<dict>\n\t\t<key>Airport_Brcm4360</key>\n\t\t<dict>\n\t\t\t<key>CFBundleIdentifier</key>\n\t\t\t<string>com.apple.driver.AirPort.Brcm4360</string>\n\t\t\t<key>IOClass</key>\n\t\t\t<string>AirPort_Brcm4360</string>\n\t\t\t<key>IOMatchCategory</key>\n\t\t\t<string>IODefaultMatchCategory</string>\n\t\t\t<key>IONameMatch</key>\n\t\t\t<array>\n\t\t\t\t<string>pci14e4,4331</string>\n\t\t\t\t<string>pci14e4,4353</string>\n\t\t\t\t<string>pci14e4,4357</string>\n\t\t\t\t<string>pci14e4,43b1</string>\n\t\t\t\t<string>pci14e4,43b2</string>\n\t\t\t</array>\n\t\t\t<key>IOProbeScore</key>\n\t\t\t<integer>1110</integer>\n\t\t\t<key>IOProviderClass</key>\n\t\t\t<string>IOPCIDevice</string>\n\t\t\t<key>TruePowerOff</key>\n\t\t\t<true/>\n\t\t</dict>\n\t\t<key>Airport_BrcmNIC</key>\n\t\t<dict>\n\t\t\t<key>CFBundleIdentifier</key>\n\t\t\t<string>com.apple.driver.AirPort.BrcmNIC</string>\n\t\t\t<key>IOClass</key>\n\t\t\t<string>AirPort_BrcmNIC</string>\n\t\t\t<key>IOMatchCategory</key>\n\t\t\t<string>IODefaultMatchCategory</string>\n\t\t\t<key>IONameMatch</key>\n\t\t\t<array>\n\t\t\t\t<string>pci14e4,43ba</string>\n\t\t\t\t<string>pci14e4,43a3</string>\n\t\t\t\t<string>pci14e4,43a0</string>\n\t\t\t\t<string>pci14e4,43b1</string>\n\t\t\t\t<string>pci14e4,43b2</string>\n\t\t\t</array>\n\t\t\t<key>IOProbeScore</key>\n\t\t\t<integer>2048</integer>\n\t\t\t<key>IOProviderClass</key>\n\t\t\t<string>IOPCIDevice</string>\n\t\t\t<key>TruePowerOff</key>\n\t\t\t<true/>\n\t\t</dict>\n\t\t<key>Broadcom 802.11 PCI</key>\n\t\t<dict>\n\t\t\t<key>CFBundleIdentifier</key>\n\t\t\t<string>as.lvs1974.AirportBrcmFixup</string>\n\t\t\t<key>IOClass</key>\n\t\t\t<string>FakeBrcm</string>\n\t\t\t<key>IOMatchCategory</key>\n\t\t\t<string>IODefaultMatchCategory</string>\n\t\t\t<key>IONameMatch</key>\n\t\t\t<array>\n\t\t\t\t<string>pci14e4,43ba</string>\n\t\t\t\t<string>pci14e4,43a3</string>\n\t\t\t\t<string>pci14e4,43a0</string>\n\t\t\t\t<string>pci14e4,4331</string>\n\t\t\t\t<string>pci14e4,4353</string>\n\t\t\t\t<string>pci14e4,43b1</string>\n\t\t\t\t<string>pci14e4,43b2</string>\n\t\t\t\t<string>pci14e4,4357</string>\n\t\t\t\t<string>pci14e4,432b</string>\n\t\t\t\t<string>pci14e4,4311</string>\n\t\t\t\t<string>pci14e4,4312</string>\n\t\t\t\t<string>pci14e4,4313</string>\n\t\t\t\t<string>pci14e4,4318</string>\n\t\t\t\t<string>pci14e4,4319</string>\n\t\t\t\t<string>pci14e4,431a</string>\n\t\t\t\t<string>pci14e4,4320</string>\n\t\t\t\t<string>pci14e4,4324</string>\n\t\t\t\t<string>pci14e4,4325</string>\n\t\t\t\t<string>pci14e4,4328</string>\n\t\t\t\t<string>pci14e4,432c</string>\n\t\t\t\t<string>pci14e4,432d</string>\n\t\t\t</array>\n\t\t\t<key>IOProbeScore</key>\n\t\t\t<integer>6000</integer>\n\t\t\t<key>IOProviderClass</key>\n\t\t\t<string>IOPCIDevice</string>\n\t\t\t<key>TruePowerOff</key>\n\t\t\t<true/>\n\t\t</dict>\n\t\t<key>as.lvs1974.AirportBrcmFixup</key>\n\t\t<dict>\n\t\t\t<key>CFBundleIdentifier</key>\n\t\t\t<string>as.lvs1974.AirportBrcmFixup</string>\n\t\t\t<key>IOClass</key>\n\t\t\t<string>AirportBrcmFixup</string>\n\t\t\t<key>IOMatchCategory</key>\n\t\t\t<string>AirportBrcmFixup</string>\n\t\t\t<key>IOProviderClass</key>\n\t\t\t<string>IOResources</string>\n\t\t\t<key>IOResourceMatch</key>\n\t\t\t<string>IOKit</string>\n\t\t</dict>\n\t</dict>\n\t<key>NSHumanReadableCopyright</key>\n\t<string>Copyright © 2017 lvs1974. All rights reserved.</string>\n\t<key>OSBundleCompatibleVersion</key>\n\t<string>1.0</string>\n\t<key>OSBundleLibraries</key>\n\t<dict>\n\t\t<key>as.vit9696.Lilu</key>\n\t\t<string>1.2.6</string>\n\t\t<key>com.apple.iokit.IONetworkingFamily</key>\n\t\t<string>1.5</string>\n\t\t<key>com.apple.iokit.IOPCIFamily</key>\n\t\t<string>2.7</string>\n\t\t<key>com.apple.kpi.bsd</key>\n\t\t<string>12.0.0</string>\n\t\t<key>com.apple.kpi.dsep</key>\n\t\t<string>12.0.0</string>\n\t\t<key>com.apple.kpi.iokit</key>\n\t\t<string>12.0.0</string>\n\t\t<key>com.apple.kpi.libkern</key>\n\t\t<string>12.0.0</string>\n\t\t<key>com.apple.kpi.mach</key>\n\t\t<string>12.0.0</string>\n\t\t<key>com.apple.kpi.unsupported</key>\n\t\t<string>12.0.0</string>\n\t</dict>\n\t<key>OSBundleRequired</key>\n\t<string>Network-Root</string>\n</dict>\n</plist>\n"
  },
  {
    "path": "EFI/CLOVER/kexts/Other/AppleALC_v1.3.9.kext/Contents/Info.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>BuildMachineOSBuild</key>\n\t<string>18G29g</string>\n\t<key>CFBundleDevelopmentRegion</key>\n\t<string>en</string>\n\t<key>CFBundleExecutable</key>\n\t<string>AppleALC</string>\n\t<key>CFBundleIdentifier</key>\n\t<string>as.vit9696.AppleALC</string>\n\t<key>CFBundleInfoDictionaryVersion</key>\n\t<string>6.0</string>\n\t<key>CFBundleName</key>\n\t<string>AppleALC</string>\n\t<key>CFBundlePackageType</key>\n\t<string>KEXT</string>\n\t<key>CFBundleShortVersionString</key>\n\t<string>1.3.9</string>\n\t<key>CFBundleSignature</key>\n\t<string>????</string>\n\t<key>CFBundleSupportedPlatforms</key>\n\t<array>\n\t\t<string>MacOSX</string>\n\t</array>\n\t<key>CFBundleVersion</key>\n\t<string>1.3.9</string>\n\t<key>DTCompiler</key>\n\t<string>com.apple.compilers.llvm.clang.1_0</string>\n\t<key>DTPlatformBuild</key>\n\t<string>10E1001</string>\n\t<key>DTPlatformVersion</key>\n\t<string>GM</string>\n\t<key>DTSDKBuild</key>\n\t<string>18E219</string>\n\t<key>DTSDKName</key>\n\t<string>macosx10.14</string>\n\t<key>DTXcode</key>\n\t<string>1020</string>\n\t<key>DTXcodeBuild</key>\n\t<string>10E1001</string>\n\t<key>IOKitPersonalities</key>\n\t<dict>\n\t\t<key>HDA Hardware Config Resource</key>\n\t\t<dict>\n\t\t\t<key>CFBundleIdentifier</key>\n\t\t\t<string>com.apple.driver.AppleHDAHardwareConfigDriver</string>\n\t\t\t<key>HDAConfigDefault</key>\n\t\t\t<array>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>Creative CA0132, default</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>285343761</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tABcWHwAXFx4BVwoBAVcXDQFXGCQAtwwAANcc\n\t\t\t\t\t8ADXHQAA1x4AANcfQAEXBwQBJx+QATceAAE3\n\t\t\t\t\tH0ABhx4AAYcfQA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>0</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>Creative CA0132, Alienware 15 R2</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>285343761</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAVcKAQFnAwAAtxwQALcdQQC3HhAAtx+QANcc\n\t\t\t\t\t8ADXHQAA1x4AANcfQAD3HCABFxxAARcegQEn\n\t\t\t\t\tHDABJx+Q\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>Creative CA0132, 2.0 + front HP</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>285343761</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tABcXHgAXFRABVwoBAScIgQFnCIABVxcNAVcY\n\t\t\t\t\tJADXHPAA1x0AANceAADXH0ABBx4hAScfkAE3\n\t\t\t\t\tHPABNx0AATceAAE3H0A=\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>2</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>Creative CA0132, 2.0 + rear line-out</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>285343761</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tABcXHgAXFRQBVwoBAScIgQFnCIABVxcNAVcY\n\t\t\t\t\tJADXHPAA1x0AANceAADXH0AA5xzwAOcdAADn\n\t\t\t\t\tHgAA5x9AAQceAQEnH5A=\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>3</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>Creative CA0132, 5.1 with C/Sub</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>285343761</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tABcWHwAXFx4AFxUUAVcKAQEnCIEBZwiAAVcX\n\t\t\t\t\tDQFXGCQA1xzwANcdAADXHgAA1x9AAOcc8ADn\n\t\t\t\t\tHQAA5x4AAOcfQAEHHgEBJx+QATcc8AE3HQAB\n\t\t\t\t\tNx4AATcfQAGHHPABhx0AAYceAAGHH0A=\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>4</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>Creative CA0132, 2.0 front HP + Mic </string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>285343761</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tABcXHgAXFRIBVwoBAScIgQFnCIABVxcNAVcY\n\t\t\t\t\tIQC3HiEA1xzwANcdAADXHgAA1x9AAQceAQEX\n\t\t\t\t\tBwQBJx+Q\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>5</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>Creative CA0132, 5.1 with front HP</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>285343761</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tABcXHgAXFRABVwoBAScIgQFnCIABVxcNAVcY\n\t\t\t\t\tJADXHPAA1x0AANceAADXH0ABBx4hAScfkA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>6</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>Creative CA0132 by Andres ZeroCross</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>285343761</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tIVcKAQC3HBAAtx1AALceAQC3HwEAxxwgAMcd\n\t\t\t\t\tgADHHkUAxx8BANccIADXHUAA1x4BANcfAQD3\n\t\t\t\t\tHDAA9x1AAPceIQD3HwEBBxxAAQcdQAEHHiEB\n\t\t\t\t\tBx8CARccUAEXHUABFx4BARcfAQEnHFABJx2Q\n\t\t\t\t\tAScepwEnH5A=\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>9</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>Creative CA0132 by Andres ZeroCross</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>285343761</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAVcKAQAXFRQBJwiBAWcIgAFXFw0BVxgkIQce\n\t\t\t\t\tAQEnH5A=\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>10</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>Custom Creative CA0132 5.1 channel</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>285343761</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tIVcD8CFXFw0hVxgkIVcPgCC3HCAgtx1AILce\n\t\t\t\t\tASC3HwEgxxxgIMcdICDHHkUgxx8BINcc8CDX\n\t\t\t\t\tHQAg1x4AINcfQCDnHPAg5x0AIOceACDnH0Ag\n\t\t\t\t\t9xwvIPcdQCD3HiEg9x8BIQccMCEHHUAhBx4h\n\t\t\t\t\tIQcfASEXHEAhFx0QIRceASEXHwEhJxwQIScd\n\t\t\t\t\tkSEnHqEhJx+QITcc8CE3HQAhNx4AITcfQCGH\n\t\t\t\t\tHFAhhx1gIYceASGHHwE=\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>11</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>Custom Creative CA0132</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>285343761</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAVcKAQAXFx8AFxUQAScIgQFnCIABVxcNAVcY\n\t\t\t\t\tJAEnH5A=\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>12</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>InsanelyDeepak - Cirrus Logic CS4210</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>269697552</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAFccEABXHUAAVx4hAFcfAABnHCAAZx0AAGce\n\t\t\t\t\tFwBnH5AAdxwwAHcdkAB3HoEAdx8AAJccQACX\n\t\t\t\t\tHQAAlx6gAJcfkA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>13</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>InsanelyDeepak - Cirrus Logic -CS4213</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>269697555</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAEccEABHHRAARx4hAEcfAABXHCAAVx0AAFce\n\t\t\t\t\tFwBXH5AAZxwwAGcdEABnHoEAZx8AAHccQAB3\n\t\t\t\t\tHQAAdx6gAHcfkABXDAI=\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>28</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>MacPeet - AD1984 - for_IBM_Lenovo_ThinkPad_T61</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>299112836</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tARccEAEXHUABFx4hARcfAgFHHCABRx1QAUce\n\t\t\t\t\tgQFHHwIBJxwwAScdAAEnHhcBJx+QAScMAgFX\n\t\t\t\t\tHEABVx0AAVcepwFXH5ABtxygAbcdEAG3HkQB\n\t\t\t\t\ttx8h\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>11</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>MacPeet - AD1984A</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>299112778</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tISccECEnHUAhJx4BIScfASFHHCAhRx2QIUce\n\t\t\t\t\toSFHHwIhVxwwIVcdMCFXHoEhVx8BIRccQCEX\n\t\t\t\t\tHUAhFx4hIRcfAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>11</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>MacPeet - AD1984A - Version2</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>299112778</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tISccECEnHUAhJx4RIScfkCFHHCAhRx2QIUce\n\t\t\t\t\toSFHHwIhVxwwIVcdMCFXHoEhVx8BIRccQCEX\n\t\t\t\t\tHUAhFx4hIRcfAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>13</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>AD1984A - giesteira</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>299112778</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tASccAAEnHUABJx4BAScfAQHHHBABxx0wAcce\n\t\t\t\t\tgQHHHwEBdxwgAXcdEAF3HqYBdx+5ARccMAEX\n\t\t\t\t\tHUABFx4hARcfAQFnHEABZx1AAWceFwFnH5EB\n\t\t\t\t\tpxxQAacdEAGnHvcBpx9RAbccYAG3HWABtx5E\n\t\t\t\t\tAbcfAQE3HPABNx0QATceHwE3H1E=\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>44</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>AD1988A by chrome</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>299112840</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tARccQAEXHUABFx4hARcfAQEnHAABJx1AASce\n\t\t\t\t\tEQEnHwEBNxzwATcdAAE3HgABNx9AAUccYAFH\n\t\t\t\t\tHZABRx6gAUcfkAFXHIABVx0wAVcegQFXHwEB\n\t\t\t\t\tZxwgAWcdEAFnHgEBZx8BAXccUAF3HZABdx6B\n\t\t\t\t\tAXcfAQGHHPABhx0AAYceAAGHH0ABtxygAbcd\n\t\t\t\t\t8QG3HkUBtx8BAccc8AHHHQABxx4AAccfQAJH\n\t\t\t\t\tHBACRx1gAkceAQJHHwECVxwwAlcdIAJXHgEC\n\t\t\t\t\tVx8B\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>12</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>Mirone - ADI-1988B</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>299112843</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tARccEAEXHUABFx4hARcfAQEnHCABJx1AASce\n\t\t\t\t\tAQEnHwEBRxxAAUcdkAFHHqEBRx8BAVccUAFX\n\t\t\t\t\tHTABVx6BAVcfAQF3HHABdx2QAXceoQF3HwEB\n\t\t\t\t\ttxzwAbcd8QG3HkUBtx8B\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>5</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>Mirone - ADI-1988B</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>299112843</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tARccEAEXHUABFx4hARcfAQEnHCABJx1AASce\n\t\t\t\t\tEQEnHwEBRxwwAUcdkAFHHqABRx+QAWccQAFn\n\t\t\t\t\tHRABZx4BAWcfAQF3HFABdx2QAXcegQF3HwEB\n\t\t\t\t\ttxxgAbcd8QG3HkUBtx8BAccccAHHHfEBxx7F\n\t\t\t\t\tAccfAQHXHIAB1x3xAdceVgHXHxgCRxyQAkcd\n\t\t\t\t\tYAJHHgECRx8BAlcckAJXHSACVx4BAlcfAQ==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>7</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>0x11d4198b</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>299112843</integer>\n\t\t\t\t\t<key>Comment</key>\n\t\t\t\t\t<string>Custom AD1988B by Rodion</string>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAXccIAF3HZABdx6gAXcfkQFHHCEBRx2QAUce\n\t\t\t\t\tgQFHHwIBJxwQAScdQAEnHhEBJx8BAkccEQJH\n\t\t\t\t\tHWACRx4RAkcfAQFnHBIBZx0QAWceEQFnHwEC\n\t\t\t\t\tVxwUAlcdIAJXHhECVx8BAccc8AHHHQABxx4A\n\t\t\t\t\tAccfQAE3HPABNx0AATceAAE3H0ABpxzwAacd\n\t\t\t\t\tAAGnHgABpx9AAYcc8AGHHQABhx4AAYcfQA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>12</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>Mirone - ADI-2000B</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>299145371</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tARccEAEXHUABFx4hARcfAQEnHCABJx1AASce\n\t\t\t\t\tAQEnHwEBRxxAAUcdkAFHHqEBRx8BAVccUAFX\n\t\t\t\t\tHTABVx6BAVcfAQF3HHABdx2QAXceoQF3HwEB\n\t\t\t\t\ttxzwAbcd8QG3HkUBtx8B\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>5</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>Mirone - ADI-2000B</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>299145371</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tARccMAEXHUABFx4hARcfAQEnHBABJx1AASce\n\t\t\t\t\tEQEnHwEBRxxAAUcdkAFHHqABRx+QAWccUAFn\n\t\t\t\t\tHRABZx4BAWcfAQF3HCABdx2QAXcegQF3HwEB\n\t\t\t\t\ttxygAbcd8QG3HkUBtx8BAcccYAHHHfEBxx7F\n\t\t\t\t\tAccfAQHXHLAB1x3xAdceVgHXHxgCRxxwAkcd\n\t\t\t\t\tYAJHHgECRx8BAlccgAJXHSACVx4BAlcfAQ==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>7</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>Goldfish64 - ALC221 for HP Compaq Pro 4300/Pro 6300/Elite 8300</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283902497</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUccIAFHHUABRx4BAUcfAQFHDAIBdxwQAXcd\n\t\t\t\t\tAQF3HhcBdx+QAXcMAgGnHEABpx0QAacegQGn\n\t\t\t\t\tHwIBtxwwAbcdMAG3HoEBtx8BAhccUAIXHRAC\n\t\t\t\t\tFx4hAhcfAgIXDAI=\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>11</integer>\n\t\t\t\t\t<key>WakeConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUcMAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>WakeVerbReinit</key>\n\t\t\t\t\t<true/>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>MacPeet - ALC221 for HP ELITE DESK 800 G1</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283902497</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUccIAFHHUABRx4RAUcfkQFHDAIBpxwwAacd\n\t\t\t\t\tEAGnHoEBpx8CAXccQAF3HQABdx4XAXcfkAG3\n\t\t\t\t\tHFABtx0wAbcegQG3HwECFxxwAhcdEAIXHiEC\n\t\t\t\t\tFx8CAhcMAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>15</integer>\n\t\t\t\t\t<key>WakeConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUcMAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>WakeVerbReinit</key>\n\t\t\t\t\t<true/>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>ALC225/ALC3253 on dell 7579 by ChalesYu</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283902501</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tASccUAEnHQEBJx6mAScftwE3HAABNx0AATce\n\t\t\t\t\tAAE3H0ABRxywAUcdAQFHHhcBRx+QAWcc8AFn\n\t\t\t\t\tHREBZx4RAWcfQQF3HPABdx0RAXceEQF3H0EB\n\t\t\t\t\thxzwAYcdEQGHHhEBhx9BAZccQAGXHRABlx6B\n\t\t\t\t\tAZcfAQGnHPABpx0RAaceEQGnH0EBtxzwAbcd\n\t\t\t\t\tEQG3HhEBtx9BAdccAQHXHQAB1x5gAdcfQAHn\n\t\t\t\t\tHPAB5x0RAeceEQHnH0ECFxwgAhcdEAIXHiEC\n\t\t\t\t\tFx8EAUcMAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>28</integer>\n\t\t\t\t\t<key>WakeConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUcMAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>WakeVerbReinit</key>\n\t\t\t\t\t<true/>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>Custom ALC225/ALC3253 for Dell Inspiron 17-7779 by Constanta</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283902501</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tASccMAEnHQABJx6gAScfkAFHHEABRx0AAUce\n\t\t\t\t\tFwFHH5ABlxxwAZcdEAGXHoEBlx8AAhccIAIX\n\t\t\t\t\tHRACFx4hAhcfAAFHDAI=\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>30</integer>\n\t\t\t\t\t<key>WakeConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUcMAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>WakeVerbReinit</key>\n\t\t\t\t\t<true/>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>Custom ALC225/ALC3253 by ChalesYu</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283902501</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tASccEAEnHQEBJx6mAScfmQG3HCABtx0AAbce\n\t\t\t\t\tFwG3H5kBlxwwAZcdEAGXHoEBlx8CAhccQAIX\n\t\t\t\t\tHRACFx4hAhcfAgG3DAIBRwwCAhcMAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>33</integer>\n\t\t\t\t\t<key>WakeConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUcMAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>WakeVerbReinit</key>\n\t\t\t\t\t<true/>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>Andres Laptop Patch ALC230 Lenovo 310-14ISK</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283902512</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tASccEAEnHQABJx6gAScfkAFHHCABRx0AAUce\n\t\t\t\t\tFwFHH5ABlxwwAZcdEAGXHosBlx8EAhccQAIX\n\t\t\t\t\tHRACFx4rAhcfBAE3HFABNx0AATceAAE3H0AB\n\t\t\t\t\t1xxgAdcdsAHXHmYB1x9AAUcMAgGXDAI=\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>13</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>Realtek ALC230 for Lenovo Ideapad 320 by maiconjs</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283902512</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAhccEAIXHRACFx4rAhcfBAFHHCABRx0BAUce\n\t\t\t\t\tFwFHH5ABJxwwAScdAQEnHqABJx+QAZccQAGX\n\t\t\t\t\tHRABlx6LAZcfBA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>20</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>Mirone - Realtek ALC233</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283902515</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUccEAFHHQABRx4XAUcfkAGXHCABlx0QAZce\n\t\t\t\t\tqwGXHwMBpxwwAacdAAGnHqABpx+QAhccQAIX\n\t\t\t\t\tHRACFx4rAhcfAwFHDAI=\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>3</integer>\n\t\t\t\t\t<key>WakeConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUcMAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>WakeVerbReinit</key>\n\t\t\t\t\t<true/>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>Custom Realtek ALC233 (3236)</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283902515</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUccEAFHHQABRx4XAUcfkAG3HCABtx0AAbce\n\t\t\t\t\toAG3H5ACFxwwAhcdEAIXHiECFx8BAUcMAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>4</integer>\n\t\t\t\t\t<key>WakeConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUcMAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>WakeVerbReinit</key>\n\t\t\t\t\t<true/>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>Mirone - Realtek ALC233/ALC3236</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283902515</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUccEAFHHQABRx4XAUcfkAGXHCABlx2QAZce\n\t\t\t\t\tiwGXHwIBtxwwAbcdkAG3HqABtx+QAhccQAIX\n\t\t\t\t\tHUACFx4rAhcfAgFHDAIBtwwC\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>5</integer>\n\t\t\t\t\t<key>WakeConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUcMAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>WakeVerbReinit</key>\n\t\t\t\t\t<true/>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>InsanelyDeepak - Realtek ALC233 for Asus X550LC</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283902515</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUccEAFHHQABRx4XAUcfmQIXHCACFx0QAhce\n\t\t\t\t\tIQIXHwMBpxwwAacdAQGnHqABpx+ZAZccQAGX\n\t\t\t\t\tHRABlx6BAZcfAw==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>13</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>Andres ZeroCross - Realtek ALC233 for Asus A451LB-WX076D</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283902515</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUccEAFHHQEBRx4XAUcfkAGXHCABlx0QAZce\n\t\t\t\t\tgQGXHwQBtxwwAbcdAQG3HqABtx+QAhccQAIX\n\t\t\t\t\tHRACFx4hAhcfBAFHDAIBtwwCAhcMAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>21</integer>\n\t\t\t\t\t<key>WakeConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUcMAgG3DAICFwwC\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>WakeVerbReinit</key>\n\t\t\t\t\t<true/>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>Custom for Realtek ALC233 for SONY VAIO Fit 14E(SVF14316SCW) by SquallATF</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283902515</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tASccQAEnHQEBJx6mAScfkAGnHDABpx1QAace\n\t\t\t\t\tgQGnHwMBRxwQAUcdAQFHHhcBRx+QAUcMAgIX\n\t\t\t\t\tHCACFx0QAhceIQIXHwMCFwwC\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>27</integer>\n\t\t\t\t\t<key>WakeConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUcMAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>WakeVerbReinit</key>\n\t\t\t\t\t<true/>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>Custom for Realtek ALC3236 for Asus TP500LN by Mohamed Khairy</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283902515</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tASccEAEnHQABJx4AAScfQAFHHCABRx0AAUce\n\t\t\t\t\tEwFHH5ABtxxAAbcdAAG3HqABtx+QAdccUAHX\n\t\t\t\t\tHZAB1x5FAdcfQAIXHDACFx0QAhceIQIXHwAB\n\t\t\t\t\tRwwCAhcMAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>28</integer>\n\t\t\t\t\t<key>WakeConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUcMAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>WakeVerbReinit</key>\n\t\t\t\t\t<true/>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>Custom by Mirone - Realtek ALC233 (ALC3236) for Asus X550LDV</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283902515</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUccEAFHHQEBRx4TAUcfmQGXHEABlx0QAZce\n\t\t\t\t\tgQGXHwABpxwwAacdAQGnHqABpx+ZAhccIAIX\n\t\t\t\t\tHRACFx4hAhcfAAFHDAI=\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>29</integer>\n\t\t\t\t\t<key>WakeConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUcMAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>WakeVerbReinit</key>\n\t\t\t\t\t<true/>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>MacPeet - ALC233 (ALC3236) for ASUS VIVOBOOK S301LA </string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283902515</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAaccMAGnHQABpx6nAacfkAGXHEABlx0QAZce\n\t\t\t\t\tgQGXHwABRxxQAUcdAAFHHhcBRx+QAUcMAgIX\n\t\t\t\t\tHGACFx0QAhceIQIXHwACFwwC\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>32</integer>\n\t\t\t\t\t<key>WakeConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUcMAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>WakeVerbReinit</key>\n\t\t\t\t\t<true/>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>MacPeet - ALC233 (ALC3236) for ASUS VIVOBOOK S451LA </string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283902515</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAhccIAIXHRACFx4hAhcfAAIXDAIBtxwwAbcd\n\t\t\t\t\tAAG3HqcBtx+QAZccQAGXHRABlx6BAZcfAAFH\n\t\t\t\t\tHFABRx0AAUceFwFHH5ABRwwC\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>33</integer>\n\t\t\t\t\t<key>WakeConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUcMAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>WakeVerbReinit</key>\n\t\t\t\t\t<true/>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>Mirone - Realtek ALC235</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283902517</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tASccEAEnHQABJx6gAScfkAFHHCABRx0AAUce\n\t\t\t\t\tFwFHH5ABdxwwAXcdAAF3HgABdx9AAZccQAGX\n\t\t\t\t\tHRABlx6LAZcfAAHXHFAB1x2QAdce9wHXH0AC\n\t\t\t\t\tFxxgAhcdEAIXHisCFx8BAUcMAgIXDAI=\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>3</integer>\n\t\t\t\t\t<key>WakeConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUcMAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>WakeVerbReinit</key>\n\t\t\t\t\t<true/>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>Realtek ALC235 for Ienovo by soto2080</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283902517</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tASccEAEnHAEBJxygAScckAFHHAABRxwBAUcc\n\t\t\t\t\tEAFHHJABlxwwAZccEAGXHIEBlxwCAhccIAIX\n\t\t\t\t\tHBACFxwhAhccAgF3HPABdx0AAXceAAF3H0AB\n\t\t\t\t\thxzwAYcdAAGHHgABhx9AAacc8AGnHQABpx4A\n\t\t\t\t\tAacfQAG3HPABtx0AAbceAAG3H0AB1xzwAdcd\n\t\t\t\t\tAAHXHgAB1x9AAUcMAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>11</integer>\n\t\t\t\t\t<key>WakeConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUcMAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>WakeVerbReinit</key>\n\t\t\t\t\t<true/>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>the-braveknight - Realtek ALC235 for Lenovo Legion Y520</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283902517</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tASccQAEnHQABJx6gAScfsAFHHBABRx0AAUce\n\t\t\t\t\tFwFHH5ABRwwCAZccMAGXHRABlx6BAZcfAAIX\n\t\t\t\t\tHGACFx0QAhceIQIXHwA=\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>14</integer>\n\t\t\t\t\t<key>WakeConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUcMAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>WakeVerbReinit</key>\n\t\t\t\t\t<true/>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>qiuchenly - Realtek ALC235 for ASUS FX53VD</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283902517</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAbccAAG3HQEBtx6gAbcfmQIXHBACFx0QAhce\n\t\t\t\t\tKwIXHwEBRxwgAUcdAQFHHhABRx+ZAZccMAGX\n\t\t\t\t\tHRABlx6LAZcfAQEnHPABJx0AASceAAEnH0AB\n\t\t\t\t\tdxzwAXcdAAF3HgABdx9AAYcc8AGHHQABhx4A\n\t\t\t\t\tAYcfQAGnHPABpx0AAaceAAGnH0AB1xzwAdcd\n\t\t\t\t\tAAHXHgAB1x9AAecc8AHnHQAB5x4AAecfQAHX\n\t\t\t\t\tHPAB1x0AAdceAAHXH0AB1xzwAdcdAAHXHgAB\n\t\t\t\t\t1x9A\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>15</integer>\n\t\t\t\t\t<key>WakeVerbReinit</key>\n\t\t\t\t\t<true/>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>MacPeet - Realtek ALC235 for ASUS GL553VD</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283902517</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAhccIAIXHRACFx4rAhcfAAG3HDABtx0AAbce\n\t\t\t\t\tpwG3H5ABlxwwAZcdEAGXHosBlx8BAUccQAFH\n\t\t\t\t\tHQABRx4XAUcfkAFHDAI=\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>16</integer>\n\t\t\t\t\t<key>WakeConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUcMAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>WakeVerbReinit</key>\n\t\t\t\t\t<true/>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>vusun123 - Realtek ALC235 for Lenovo Legion Y520</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283902517</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tASccQAEnHQABJx6gAScfsAFHHBABRx0AAUce\n\t\t\t\t\tFwFHH5ABRwwCAZccMAGXHRABlx6BAZcfAAIX\n\t\t\t\t\tHGACFx0QAhceIQIXHwA=\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>28</integer>\n\t\t\t\t\t<key>WakeConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUcMAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>WakeVerbReinit</key>\n\t\t\t\t\t<true/>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>Mirone - Realtek ALC236</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283902518</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tASccEAEnHQABJx6mAScfkAFHHCABRx0AAUce\n\t\t\t\t\tFwFHH5ABlxwwAZcdEAGXHoEBlx8EAhccQAIX\n\t\t\t\t\tHRACFx4hAhcfBAFHDAI=\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>3</integer>\n\t\t\t\t\t<key>WakeConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUcMAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>WakeVerbReinit</key>\n\t\t\t\t\t<true/>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>Jake Lo - Realtek ALC236</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283902518</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tASccEAEnHQEBJx6gAScfkAE3HPABNx0AATce\n\t\t\t\t\tAAE3H0ABRxwwAUcdAQFHHhABRx+QAUcMAgGH\n\t\t\t\t\tHPABhx0AAYceAAGHH0ABlxwgAZcdMAGXHosB\n\t\t\t\t\tlx8BAacc8AGnHQABpx4AAacfQAG3HPABtx0A\n\t\t\t\t\tAbceAAG3H0AB1xzwAdcdAAHXHgAB1x9AAecc\n\t\t\t\t\t8AHnHQAB5x4AAecfQAIXHEACFx1AAhceKwIX\n\t\t\t\t\tHwECFwwCABcgAAAXIXIAFyJrABcjEA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>11</integer>\n\t\t\t\t\t<key>WakeConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUcMAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>WakeVerbReinit</key>\n\t\t\t\t\t<true/>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>Custom - Realtek ALC236 for Lenovi Air 13 Pro by rexx0520</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283902518</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tASccAAEnHQEBJx6mAScfkAFHHBABRx0BAUce\n\t\t\t\t\tEAFHH5ABdxzwAXcdAAF3HgABdx9AAYcc8AGH\n\t\t\t\t\tHQABhx4AAYcfQAGXHCABlx2QAZceqwGXHwAB\n\t\t\t\t\tpxzwAacdAAGnHgABpx9AAbcc8AG3HQABtx4A\n\t\t\t\t\tAbcfQAHXHPAB1x0AAdceAAHXH0AB5xzwAecd\n\t\t\t\t\tAAHnHgAB5x9AAhccMAIXHUACFx4rAhcfAAFH\n\t\t\t\t\tDAI=\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>13</integer>\n\t\t\t\t\t<key>WakeConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUcMAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>WakeVerbReinit</key>\n\t\t\t\t\t<true/>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>MacPeet - ALC236 for Lenovo Ideapad 500-15ISK</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283902518</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tASccAAEnHQEBJx6mAScfkAFHHBABRx0BAUce\n\t\t\t\t\tEAFHH5ABRwwCAZccIAGXHRABlx6LAZcfAAIX\n\t\t\t\t\tHDACFx0QAhceKwIXHwACFwwC\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>15</integer>\n\t\t\t\t\t<key>WakeConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUcMAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>WakeVerbReinit</key>\n\t\t\t\t\t<true/>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>ALC236 for Lenovo LEGION Y7000/Y530 by xiaoM</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283902518</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tASccMAEnHQEBJx6mAScfkAE3HPABNx0AATce\n\t\t\t\t\tAAE3H0ABRxwgAUcdkAFHHhcBRx+QAUcMAgGH\n\t\t\t\t\tHPABhx0AAYceAAGHH0ABlxwgAZcdEAGXHosB\n\t\t\t\t\tlx8BAacc8AGnHQABpx4AAacfQAG3HPABtx0A\n\t\t\t\t\tAbceAAG3H0AB1xzwAdcdAAHXHgAB1x9AAecc\n\t\t\t\t\t8AHnHQAB5x4AAecfQAIXHBACFx0QAhceKwIX\n\t\t\t\t\tHwECFwwC\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>18</integer>\n\t\t\t\t\t<key>WakeConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUcMAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>WakeVerbReinit</key>\n\t\t\t\t\t<true/>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>RodionS - ALC236 for Lenovo Ideapad 320s 14ikb</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283902518</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tASccAAEnHQEBJx6mAScfkAFHHBABRx0BAUce\n\t\t\t\t\tEAFHH5ABRwwCAZccIAGXHRABlx6LAZcfAAIX\n\t\t\t\t\tHDACFx0QAhceKwIXHwABRwwCAhcMAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>16</integer>\n\t\t\t\t\t<key>WakeConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUcMAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>WakeVerbReinit</key>\n\t\t\t\t\t<true/>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>ALC236 for DELL-5488 by Daggeryu</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283902518</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tASccMAEnHQEBJx6mAScfkAE3HPABNx0AATce\n\t\t\t\t\tAAE3H0ABRxwQAUcdAQFHHhcBRx+QAUcMAgGH\n\t\t\t\t\tHPABhx0AAYceAAGHH0ABlxxAAZcdEAGXHoEB\n\t\t\t\t\tlx8CAacc8AGnHQABpx4AAacfQAG3HPABtx0A\n\t\t\t\t\tAbceAAG3H0AB1xzwAdcdAAHXHgAB1x9AAecc\n\t\t\t\t\t8AHnHQAB5x4AAecfQAIXHCACFx0QAhceIQIX\n\t\t\t\t\tHwICFwwC\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>54</integer>\n\t\t\t\t\t<key>WakeConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUcMAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>WakeVerbReinit</key>\n\t\t\t\t\t<true/>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>ALC236 for Lenovo Air 13 IWL by DalianSky</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283902518</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tATcc8AE3HQABNx4AATcfQAFHHBABRx0BAUce\n\t\t\t\t\tFwFHH5ABRwwCAYcc8AGHHQABhx4AAYcfQAGX\n\t\t\t\t\tHDABlx0QAZcegQGXHwQBpxzwAacdAAGnHgAB\n\t\t\t\t\tpx9AAbcc8AG3HQABtx4AAbcfQAHXHEUB1x0b\n\t\t\t\t\tAdceZgHXH0AB5xzwAecdAAHnHgAB5x9AAhcc\n\t\t\t\t\tHwIXHRACFx4hAhcfBA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>99</integer>\n\t\t\t\t\t<key>WakeConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUcMAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>WakeVerbReinit</key>\n\t\t\t\t\t<true/>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>Mirone - Realtek ALC255</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283902549</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tASccEAEnHQABJx6mAScfkAFHHCABRx0AAUce\n\t\t\t\t\tFwFHH5ABlxwwAZcdEAGXHosBlx8AAhccUAIX\n\t\t\t\t\tHRACFx4rAhcfAgFHDAI=\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>3</integer>\n\t\t\t\t\t<key>WakeConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUcMAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>WakeVerbReinit</key>\n\t\t\t\t\t<true/>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>InsanelyDeepak - Realtek ALC255_v1</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283902549</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAbccIAG3HQABtx6gAbcfkAFHHDABRx0AAUce\n\t\t\t\t\tFwFHH5ACFxxQAhcdEAIXHiECFx8AAUcMAgIX\n\t\t\t\t\tDAI=\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>13</integer>\n\t\t\t\t\t<key>WakeConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUcMAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>WakeVerbReinit</key>\n\t\t\t\t\t<true/>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>Realtek ALC255 Gigabyte Brix BRI5(H) by Najdanovic Ivan</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283902549</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tASccMAEnHQEBJx6gAScfkAGXHCABlx0RAZce\n\t\t\t\t\tgQGXHwICFxxAAhcdEQIXHiECFx8CAhcMAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>15</integer>\n\t\t\t\t\t<key>WakeConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUcMAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>WakeVerbReinit</key>\n\t\t\t\t\t<true/>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>InsanelyDeepak - Realtek ALC255_v2</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283902549</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tASccEAEnHQABJx6mAScfkAFHHCABRx0AAUce\n\t\t\t\t\tFwFHH5ABdxwwAXcdAAF3HgABdx9AAdccQAHX\n\t\t\t\t\tHQAB1x5wAdcfQAIXHFACFx0QAhceIQIXHwIB\n\t\t\t\t\tRwwC\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>17</integer>\n\t\t\t\t\t<key>WakeConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUcMAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>WakeVerbReinit</key>\n\t\t\t\t\t<true/>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>DuNe - Realtek ALC255 for Aorus X5V7</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283902549</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tASccEAEnHQABJx6mAScfkAFHHCABRx0AAUce\n\t\t\t\t\tFwFHH5ABtxwhAbcdAAG3HhcBtx+QAXccMAF3\n\t\t\t\t\tHQABdx4AAXcfQAHXHEAB1x0AAdcecAHXH0AC\n\t\t\t\t\tFxxQAhcdEAIXHiECFx8CAaccYAGnHRABpx6B\n\t\t\t\t\tAacfAgHnHHAB5x0QAeceRQHnHwIBRwwC\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>18</integer>\n\t\t\t\t\t<key>WakeConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUcMAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>WakeVerbReinit</key>\n\t\t\t\t\t<true/>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>ALC255 for Asus X441UA-WX096D by Andres ZeroCross</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283902549</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAZcc8AGXHRABlx6BAZcfAgGnHDABpx0BAace\n\t\t\t\t\toAGnH5ABtxwQAbcdAQG3HhcBtx+QAhccIAIX\n\t\t\t\t\tHRACFx4hAhcfAgG3DAICFwwC\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>21</integer>\n\t\t\t\t\t<key>WakeConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAbcMAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>WakeVerbReinit</key>\n\t\t\t\t\t<true/>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>cowpod - Realtek ALC255 for UX360CA</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283902549</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUccEAFHHQABRx4XAUcfkAFHDAICFxwgAhcd\n\t\t\t\t\tEAIXHiECFx8AAhcMAgEnHDABJx0AAScepgEn\n\t\t\t\t\tH5ABlxxAAZcdAAGXHoEBlx8A\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>31</integer>\n\t\t\t\t\t<key>WakeConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUcMAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>WakeVerbReinit</key>\n\t\t\t\t\t<true/>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>ALC255 for Asus X556UA m-dudarev</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283902549</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUccEAFHHQEBRx4XAUcfkAGXHCABlx0QAZce\n\t\t\t\t\tgQGXHwQCFxwgAhcdEAIXHiECFx8EAbccMAG3\n\t\t\t\t\tHQEBtx6gAbcfkAFHDAI=\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>27</integer>\n\t\t\t\t\t<key>WakeConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUcMAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>WakeVerbReinit</key>\n\t\t\t\t\t<true/>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>Realtek ALC255 for Lenovo B470 - vusun123</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283902549</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tASccYAEnHQABJx6gAScfkAFHHCABRx0AAUce\n\t\t\t\t\tFwFHH5ABRwwCAhccMAIXHRACFx4hAhcfAQ==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>28</integer>\n\t\t\t\t\t<key>WakeConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUcMAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>WakeVerbReinit</key>\n\t\t\t\t\t<true/>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>HongyuS - Realtek ALC255 for XiaoMiAir 13.3</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283902549</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tASccMAEnHQEBJx6mAScfkAFHHBABRx0BAUce\n\t\t\t\t\tFwFHH5ABRwwCAXccAAF3HQABdx4AAXcfQAGH\n\t\t\t\t\tHPABhx0AAYceAAGHH0ABlxwgAZcdEAGXHoEB\n\t\t\t\t\tlx8EAacc8AGnHQABpx4AAacfQAG3HPABtx0A\n\t\t\t\t\tAbceAAG3H0AB1xwtAdcdmgHXHvcB1x9AAecc\n\t\t\t\t\t8AHnHQAB5x4AAecfQAIXHCACFx0QAhceIQIX\n\t\t\t\t\tHwQCFwwC\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>30</integer>\n\t\t\t\t\t<key>WakeConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUcMAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>WakeVerbReinit</key>\n\t\t\t\t\t<true/>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>DalianSky - Realtek ALC255 (3246) for XiaoMi Air</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283902549</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tASccMAEnHQEBJx6mAScfkAFHHBABRx0BAUce\n\t\t\t\t\tFwFHH5ABRwwCAXcc8AF3HQABdx4AAXcfQAGH\n\t\t\t\t\tHPABhx0AAYceAAGHH0ABlxxwAZcdEAGXHosB\n\t\t\t\t\tlx8CAacc8AGnHQABpx4AAacfQAG3HPABtx0A\n\t\t\t\t\tAbceAAG3H0AB1xzwAdcdAAHXHgAB1x9AAecc\n\t\t\t\t\t8AHnHQAB5x4AAecfQAIXHCACFx0QAhceKwIX\n\t\t\t\t\tHwQCFwwC\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>99</integer>\n\t\t\t\t\t<key>WakeConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUcMAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>WakeVerbReinit</key>\n\t\t\t\t\t<true/>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>DalianSky - Realtek ALC255 (3246) for alienware alpha r2</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283902549</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tASccIAEnHQEBJx6mAScfkAE3HPABNx0AATce\n\t\t\t\t\tAAE3H0ABRxxAAUcdAQFHHhcBRx+QAUcMAgF3\n\t\t\t\t\tHPABdx0AAXceAAF3H0ABhxzwAYcdAAGHHgAB\n\t\t\t\t\thx9AAZccEAGXHRABlx6LAZcfAgGnHPABpx0A\n\t\t\t\t\tAaceAAGnH0ABtxzwAbcdAAG3HgABtx9AAdcc\n\t\t\t\t\t8AHXHQAB1x4AAdcfQAHnHJAB5x3gAeceRQHn\n\t\t\t\t\tHwECFxwwAhcdEAIXHisCFx8CAhcMAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>100</integer>\n\t\t\t\t\t<key>WakeConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUcMAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>WakeVerbReinit</key>\n\t\t\t\t\t<true/>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>Realtek ALC256</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283902550</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAScc8AEnHQABJx4AAScfQAFHHCABRx0AAUce\n\t\t\t\t\tFwFHH5ABlxwwAZcdEAGXHosBlx8CAhccUAIX\n\t\t\t\t\tHRACFx4rAhcfAgE3HPABNx0AATceAAE3H0AB\n\t\t\t\t\thxzwAYcdAAGHHgABhx9AAacc8AGnHQABpx4A\n\t\t\t\t\tAacfQAG3HDABtx0AAbceoAG3H5AB1xzwAdcd\n\t\t\t\t\tAAHXHgAB1x9AAecc8AHnHQAB5x4AAecfQAFH\n\t\t\t\t\tDAIBtwwC\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>5</integer>\n\t\t\t\t\t<key>WakeConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUcMAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>WakeVerbReinit</key>\n\t\t\t\t\t<true/>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>Rockjesus - Realtek ALC256 (3246) - dell 7559</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283902550</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tASccAAEnHQEBJx6mAScfmQFHHBABRx0BAUce\n\t\t\t\t\tFwFHH5kCFxwgAhcdEAIXHiECFx8BAbcMAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>11</integer>\n\t\t\t\t\t<key>WakeConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUcMAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>WakeVerbReinit</key>\n\t\t\t\t\t<true/>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>Insanelydeepak - Realtek ALC256 (3246) for Dell Series</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283902550</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tASccEAEnHQABJx6gAScfkAFHHCABRx0AAUce\n\t\t\t\t\tFwFHH5ABlxwwAZcdEAGXHosBlx8CAhccUAIX\n\t\t\t\t\tHRACFx4rAhcfAgE3HPABNx0AATceAAE3H0AB\n\t\t\t\t\thxzwAYcdAAGHHgABhx9AAacc8AGnHQABpx4A\n\t\t\t\t\tAacfQAG3HPABtx0AAbceAAG3H0AB1xzwAdcd\n\t\t\t\t\tAAHXHgAB1x9AAecc8AHnHQAB5x4AAecfQAFH\n\t\t\t\t\tDAI=\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>13</integer>\n\t\t\t\t\t<key>WakeConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUcMAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>WakeVerbReinit</key>\n\t\t\t\t\t<true/>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>Andres ZeroCross for Dell 5570</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283902550</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tASccEAEnHQEBJx6gAScfkAFHHCABRx0BAUce\n\t\t\t\t\tFwFHH5ABlxwwAZcdEAGXHosBlx8CAhccUAIX\n\t\t\t\t\tHRACFx4rAhcfAgFHDAICFwwCAZcHJQIXCIM=\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>21</integer>\n\t\t\t\t\t<key>WakeConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUcMAgIXDAIBlwclAhcIgw==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>WakeVerbReinit</key>\n\t\t\t\t\t<true/>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283902550</integer>\n\t\t\t\t\t<key>Comment</key>\n\t\t\t\t\t<string>vusun123 - ALC256 for Asus X555UJ</string>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUccUAFHHQABRx4XAUcfkAFHDAIBpxwwAacd\n\t\t\t\t\tAAGnHqABpx+QAhccIAIXHRACFx4hAhcfAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>28</integer>\n\t\t\t\t\t<key>WakeConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUcMAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>WakeVerbReinit</key>\n\t\t\t\t\t<true/>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>DalianSky - Realtek ALC256 (3246) for Dell 7000 Series</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283902550</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tASccMAEnHQEBJx6mAScfkAE3HPABNx0AATce\n\t\t\t\t\tAAE3H0ABRxwQAUcdAQFHHhcBRx+QAUcMAgGH\n\t\t\t\t\tHPABhx0AAYceAAGHH0ABlxxAAZcdEAGXHoEB\n\t\t\t\t\tlx8CAacc8AGnHQABpx4AAacfQAG3HPABtx0A\n\t\t\t\t\tAbceAAG3H0AB1xzwAdcdAAHXHgAB1x9AAecc\n\t\t\t\t\t8AHnHQAB5x4AAecfQAIXHCACFx0QAhceIQIX\n\t\t\t\t\tHwICFwwC\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>56</integer>\n\t\t\t\t\t<key>WakeConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUcMAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>WakeVerbReinit</key>\n\t\t\t\t\t<true/>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>Kk for magicbook</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283902550</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAScccAEnHQEBJx6mAScfkAE3HPABNx0AATce\n\t\t\t\t\tAAE3H0ABRxzwAUcdAAFHHgABRx9AAYcc8AGH\n\t\t\t\t\tHQABhx4AAYcfQAGXHDABlx0QAZceiwGXHwIB\n\t\t\t\t\tpxzwAacdAAGnHgABpx9AAbccQAG3HQEBtx4Q\n\t\t\t\t\tAbcfkAG3DAIB1xzwAdcdAAHXHgAB1x9AAecc\n\t\t\t\t\t8AHnHQAB5x4AAecfQAIXHFACFx0QAhceKwIX\n\t\t\t\t\tHwICFwwC\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>57</integer>\n\t\t\t\t\t<key>WakeConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAbcMAgIXDAI=\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>WakeVerbReinit</key>\n\t\t\t\t\t<true/>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>MacPeet - Realtek ALC257 for Lenovo T480</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283902551</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tASccIAEnHQABJx6mAScfkAGXHDABlx0QAZce\n\t\t\t\t\tgQGXHwABRxxQAUcdAAFHHhcBRx+QAUcMAgIX\n\t\t\t\t\tHGACFx0QAhceIQIXHwA=\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>11</integer>\n\t\t\t\t\t<key>WakeConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUcMAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>WakeVerbReinit</key>\n\t\t\t\t\t<true/>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>MacPeet ALC260 for Fujitsu Celsius M 450</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283902560</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tIPccECD3HUAg9x4RIPcfASD3DAIhhxwgIYcd\n\t\t\t\t\tYCGHHkQhhx8BITccQCE3HZAhNx6hITcfmSFH\n\t\t\t\t\tHFAhRx0wIUcegSFHHwEhVxxgIVcdQCFXHiEh\n\t\t\t\t\tVx8C\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>11</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>Custom ALC260</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283902560</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAQccAAEHHUABBx4hAQcfAQEnHBABJx2QASce\n\t\t\t\t\toQEnH5kBNxwgATcdMAE3HoEBNx8B\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>12</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>DalianSky - ALC262 for MS-7480N1</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283902562</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAVccYAFXHUABVx4BAVcfAQFHHFABRx1AAUce\n\t\t\t\t\tIQFHHwEBhxwgAYcdMAGHHoEBhx8BAaccEAGn\n\t\t\t\t\tHZABpx6iAacfAQ==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>7</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>MacPeet - ALC262</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283902562</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tIUccECFHHUAhRx4BIUcfASHnHCAh5x1gIece\n\t\t\t\t\tRSHnHwAhhxwwIYcdkCGHHqEhhx+RIZccQCGX\n\t\t\t\t\tHZAhlx6hIZcfkiGnHFAhpx0wIacegSGnHwEh\n\t\t\t\t\ttxxgIbcdQCG3HiEhtx8C\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>11</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>Goldfish64 - ALC262 for HP Compaq dc7700 SFF</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283902562</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAbccEAG3HUABtx4BAbcfAQFXHCABVx0QAVce\n\t\t\t\t\tIQFXHwIBZxwwAWcdAQFnHhMBZx+QAZccQAGX\n\t\t\t\t\tHTABlx6BAZcfAQGnHFABpx0QAacegQGnHwI=\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>12</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>MacPeet - ALC262 for Fujitsu Celsius H270</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283902562</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUccEAFHHQABRx4TAUcfkAFXHCABVx0QAVce\n\t\t\t\t\tIQFXHwIBhxwwAYcdEAGHHoEBhx8CAZccQAGX\n\t\t\t\t\tHQABlx6jAZcfkAGnHFABpx0QAacegQGnHwE=\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>13</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>MacPeet - ALC262 for HP Z800-Z600 series</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283902562</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAZccAAGXHREBlx6gAZcfkgGnHBABpx0xAace\n\t\t\t\t\tgAGnH5EBVxwgAVcdQQFXHhABVx+RAWccMAFn\n\t\t\t\t\tHQEBZx4AAWcfKQGHHEABhx2QAYceoAGHH5EB\n\t\t\t\t\ttxxQAbcdEAG3HisBtx8C\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>28</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>Mirone - Realtek ALC268</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283902568</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUccEAFHHRABRx4hAUcfAQGHHEABhx2QAYce\n\t\t\t\t\tgQGHHwEBVxxQAVcdAAFXHhMBVx+QAZccYAGX\n\t\t\t\t\tHQABlx6jAZcfkAFXDAI=\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>3</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>Mirone Laptop patch ALC269 Asus N53J</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283902569</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAYccIAGHHRABhx6BAYcfBAGXHBABlx0BAZce\n\t\t\t\t\toAGXH5kBtxxAAbcdAQG3HhMBtx+ZAhccUAIX\n\t\t\t\t\tHRACFx4hAhcfBAFHDAI=\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>WakeConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUcMAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>WakeVerbReinit</key>\n\t\t\t\t\t<true/>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>Mirone - Realtek ALC269-VB v1</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283902569</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUccQAFHHQEBRx4TAUcfmQGHHCABhx0QAYce\n\t\t\t\t\tgQGHHwMBlxwQAZcdAQGXHqABlx+ZAhccUAIX\n\t\t\t\t\tHRACFx4hAhcfAwFHDAI=\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>2</integer>\n\t\t\t\t\t<key>WakeConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUcMAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>WakeVerbReinit</key>\n\t\t\t\t\t<true/>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>ALC269</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283902569</integer>\n\t\t\t\t\t<key>Comment</key>\n\t\t\t\t\t<string>Mirone - Realtek ALC269 for Asus K53SJ, Asus G73s</string>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAScc8AEnHQABJx4AAScfQAFHHBABRx0BAUce\n\t\t\t\t\tEwFHH5ABdxxQAXcdAQF3HhMBdx+QAYccIAGH\n\t\t\t\t\tHZABhx6BAYcfAwGXHDABlx0BAZceoAGXH5AB\n\t\t\t\t\tpxzwAacdAAGnHgABpx9AAbcc8AG3HQABtx4A\n\t\t\t\t\tAbcfQAHXHPAB1x0AAdceAAHXH0AB5xzwAecd\n\t\t\t\t\tAAHnHgAB5x9AAhccQAIXHRACFx4hAhcfAwFH\n\t\t\t\t\tDAI=\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>3</integer>\n\t\t\t\t\t<key>WakeConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUcMAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>WakeVerbReinit</key>\n\t\t\t\t\t<true/>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>Mirone - Realtek ALC269-VB v2</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283902569</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUccEAFHHQABRx4TAUcfkAGHHCABhx2QAYce\n\t\t\t\t\tgQGHHwIBtxwwAbcdEAG3HqABtx+QAhccQAIX\n\t\t\t\t\tHRACFx4hAhcfAgFHDAI=\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>4</integer>\n\t\t\t\t\t<key>WakeConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUcMAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>WakeVerbReinit</key>\n\t\t\t\t\t<true/>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>Mirone - Realtek ALC269-VB v3</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283902569</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tASccEAEnHQABJx6gAScfkAFHHCABRx0AAUce\n\t\t\t\t\tEwFHH5ABhxwwAYcdEAGHHoEBhx8AAhccUAIX\n\t\t\t\t\tHRACFx4hAhcfAAFHDAI=\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>5</integer>\n\t\t\t\t\t<key>WakeConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUcMAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>WakeVerbReinit</key>\n\t\t\t\t\t<true/>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>Mirone - Realtek ALC269-VC v1</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283902569</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUccEAFHHQABRx4TAUcfkAGHHDABhx0QAYce\n\t\t\t\t\tgQGHHwABJxxAAScdAAEnHqABJx+QAVccUAFX\n\t\t\t\t\tHRABVx4hAVcfAAFHDAI=\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>6</integer>\n\t\t\t\t\t<key>WakeConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUcMAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>WakeVerbReinit</key>\n\t\t\t\t\t<true/>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>Mirone - Realtek ALC269-VC v2</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283902569</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tASccEAEnHQABJx6mAScfkAFXHCABVx0QAVce\n\t\t\t\t\tIQFXHwABhxwwAYcdEAGHHoEBhx8CAbccQAG3\n\t\t\t\t\tHQABtx4XAbcfkAG3DAI=\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>7</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>Mirone - Realtek ALC269VC-v3</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283902569</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tASccEAEnHQABJx6mAScfkAFHHCABRx0AAUce\n\t\t\t\t\tFwFHH5ABVxwwAVcdEAFXHiEBVx8AAYccQAGH\n\t\t\t\t\tHZABhx6BAYcfAgFHDAI=\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>8</integer>\n\t\t\t\t\t<key>WakeConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUcMAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>WakeVerbReinit</key>\n\t\t\t\t\t<true/>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>Mirone - Realtek ALC269VB v4</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283902569</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tASccEAEnHQABJx6gAScfkAFHHCABRx0AAUce\n\t\t\t\t\tEwFHH5ABhxwwAYcdEAGHHoEBhx8AAhccUAIX\n\t\t\t\t\tHRACFx4hAhcfAAFHDAI=\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>9</integer>\n\t\t\t\t\t<key>WakeConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUcMAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>WakeVerbReinit</key>\n\t\t\t\t\t<true/>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283902569</integer>\n\t\t\t\t\t<key>Comment</key>\n\t\t\t\t\t<string>Toleda ALC269 patch for Brix</string>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tIUcc8CFHHQAhRx4AIUcfQCFXHHAhVx1AIVce\n\t\t\t\t\tISFXHwIhZxzwIWcdACFnHgAhZx9AIXcc8CF3\n\t\t\t\t\tHQAhdx4AIXcfQCGHHPAhhx0AIYceACGHH0Ah\n\t\t\t\t\tlxzwIZcdACGXHgAhlx9AIacc8CGnHQAhpx4A\n\t\t\t\t\tIacfQCG3HPAhtx0AIbceACG3H0Ah5xyQIecd\n\t\t\t\t\tYSHnHksh5x8B\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>10</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>Mosser - ALC269VB Dell Precision Workstation T1600</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283902569</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAbccIAG3HUABtx4BAbcfAQGHHDABhx2YAYce\n\t\t\t\t\tgQGHHwIBlxxAAZcdmAGXHoEBlx8BAhccUAIX\n\t\t\t\t\tHUACFx4hAhcfAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>11</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>InsanelyDeepak - Realtek ALC269VC for Samsung NP350V5C-S08IT</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283902569</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAZccEAGXHQABlx6nAZcfmQFXHCABVx0QAVce\n\t\t\t\t\tIQFXHwIBhxwwAYcdEAGHHoEBhx8CAUccQAFH\n\t\t\t\t\tHQABRx4XAUcfmQFHDAI=\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>13</integer>\n\t\t\t\t\t<key>WakeConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUcMAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>WakeVerbReinit</key>\n\t\t\t\t\t<true/>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283902569</integer>\n\t\t\t\t\t<key>Comment</key>\n\t\t\t\t\t<string>Custom ALC269VC for Samsung NT550P7C-S65 with subwoofer 2.1ch by Rockjesus</string>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAVccEAFXHRABVx4hAVcfAQGHHCABhx0QAYce\n\t\t\t\t\tgQGHHwEBlxwwAZcdAQGXHqcBlx+QAbccQAG3\n\t\t\t\t\tHQEBtx4XAbcfkAF3HEEBdx0BAXceFwF3H5AB\n\t\t\t\t\tJxzwAScdAAEnHgABJx9AAUcc8AFHHQABRx4A\n\t\t\t\t\tAUcfQAGnHPABpx0AAaceAAGnH0AB1xzwAdcd\n\t\t\t\t\tAAHXHgAB1x9AAecc8AHnHQAB5x4AAecfQAG3\n\t\t\t\t\tDAI=\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>14</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>MacPeet - ALC269VB for Dell Optiplex 790</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283902569</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAbccIAG3HUABtx4BAbcfAQGHHDABhx2QAYce\n\t\t\t\t\tgQGHHwIBlxxAAZcdkAGXHoEBlx8BAhccUAIX\n\t\t\t\t\tHUACFx4hAhcfAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>15</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>MacPeet - ALC269VB for Dell Optiplex 790 Version2</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283902569</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAbccIAG3HUABtx4RAbcfkAGHHDABhx2QAYce\n\t\t\t\t\toQGHH5ABlxxAAZcdkAGXHoEBlx8BAhccUAIX\n\t\t\t\t\tHUACFx4hAhcfAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>16</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>MacPeet - Latte Panda</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283902569</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAYccIAGHHVABhx6hAYcfkQFXHDABVx1AAVce\n\t\t\t\t\tIQFXHwEBVwwC\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>17</integer>\n\t\t\t\t\t<key>WakeConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAVcMAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>WakeVerbReinit</key>\n\t\t\t\t\t<true/>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>Hypereitan - ALC269VC for Thinkpad X230 i7</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283902569</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tASccEAEnHQEBJx6gAScfkAFHHEABRx0BAUce\n\t\t\t\t\tEAFHH5ABVxxQAVcdEAFXHiEBVx8BAYcccAGH\n\t\t\t\t\tHRABhx6hAYcfAQFHDAI=\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>18</integer>\n\t\t\t\t\t<key>WakeConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUcMAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>WakeVerbReinit</key>\n\t\t\t\t\t<true/>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>Asus Vivobook S300CA - Realtek ALC269VB</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283902569</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tASccEAEnHQEBJx6mAScfkAFHHCABRx0BAUce\n\t\t\t\t\tFwFHH5AB1xwwAdcdkAHXHgcB1x9AAhccQAIX\n\t\t\t\t\tHRACFx4hAhcfBAFHDAI=\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>19</integer>\n\t\t\t\t\t<key>WakeConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUcMAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>WakeVerbReinit</key>\n\t\t\t\t\t<true/>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>ALC269</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283902569</integer>\n\t\t\t\t\t<key>Comment</key>\n\t\t\t\t\t<string>Custom ALC269 Sony Vaio VPCEB3M1R by Rodion</string>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAVccQAFXHRABVx4hAVcfAwGHHCABhx0QAYce\n\t\t\t\t\tgQGHHwMBlxwwAZcdAQGXHqABlx+QAbccEAG3\n\t\t\t\t\tHQEBtx4XAbcfkAFXDAI=\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>20</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>Goldfish64 - ALC269VB for Dell Optiplex 7010</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283902569</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAScc8AEnHQABJx4AAScfQAFHHBABRx0BAUce\n\t\t\t\t\tEwFHH5ABRwwCAXcc8AF3HQABdx4AAXcfQAGH\n\t\t\t\t\tHDABhx2QAYcegQGHHwIBlxxAAZcdkAGXHoEB\n\t\t\t\t\tlx8BAacc8AGnHQABpx4AAacfQAG3HCABtx1A\n\t\t\t\t\tAbceAQG3HwEB1xzwAdcdAAHXHgAB1x9AAecc\n\t\t\t\t\t8AHnHQAB5x4AAecfQAIXHFACFx1AAhceIQIX\n\t\t\t\t\tHwI=\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>21</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>ALC269</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283902569</integer>\n\t\t\t\t\t<key>Comment</key>\n\t\t\t\t\t<string>Custom ALC269 for Acer Aspire by Andrey1970</string>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUccAAFHHUEBRx4XAUcfmQGHHBABhx2QAYce\n\t\t\t\t\tgQGHHwEBtxwgAbcdkQG3HqcBtx+ZAhccMAIX\n\t\t\t\t\tHUACFx4hAhcfAQ==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>27</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>ALC269VC</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283902569</integer>\n\t\t\t\t\t<key>Comment</key>\n\t\t\t\t\t<string>ALC269VC for Lenovo Z580, John</string>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAVccQAFXHRABVx4hAVcfAwGHHCABhx0QAYce\n\t\t\t\t\tgQGHHwMBlxwwAZcdAQGXHqABlx+QAbccEAG3\n\t\t\t\t\tHQEBtx4XAbcfkAFXDAI=\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>28</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283902569</integer>\n\t\t\t\t\t<key>Comment</key>\n\t\t\t\t\t<string>ALC269VC for Lenovo V580, ar4er</string>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tASccEAEnHQABJx6mAScfkAFHHCABRx0AAUce\n\t\t\t\t\tFwFHH5ABVxwwAVcdEAFXHiEBVx8AAYccQAGH\n\t\t\t\t\tHZABhx6BAYcfAgFHDAI=\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>29</integer>\n\t\t\t\t\t<key>WakeConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUcMAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>WakeVerbReinit</key>\n\t\t\t\t\t<true/>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>ALC269VC for Hasee Z6SL7R3 by HF</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283902569</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tASccEAEnHQEBJx6gAScfkAFHHBABRx0BAUce\n\t\t\t\t\tFwFHH5ABVxyAAVcdEAFXHiEBVx8CAYccIAGH\n\t\t\t\t\tHRABhx6BAYcfAgHnHGAB5x0AAeceQQHnHwIB\n\t\t\t\t\tRwwC\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>30</integer>\n\t\t\t\t\t<key>WakeConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUcMAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>WakeVerbReinit</key>\n\t\t\t\t\t<true/>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283902569</integer>\n\t\t\t\t\t<key>Comment</key>\n\t\t\t\t\t<string>Custom ALC269 Samsung np880z5e-x01ru by Constanta</string>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tASccEAEnHQABJx6mAScfkAG3HCABtx0AAbce\n\t\t\t\t\tFwG3H5ABVxwwAVcdEAFXHiEBVx8AAYccQAGH\n\t\t\t\t\tHZABhx6BAYcfAgG3DAI=\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>32</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283902569</integer>\n\t\t\t\t\t<key>Comment</key>\n\t\t\t\t\t<string>Custom ALC269VC for Samsung NP530U3C-A0F by BblDE3HAP</string>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUccEAFHHQEBRx4XAUcfkAFHDAIBVxxAAVcd\n\t\t\t\t\tEAFXHiEBVx8DAVcMAgGHHCABhx0QAYcegQGH\n\t\t\t\t\tHwMBlxwwAZcdAQGXHqABlx+Q\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>33</integer>\n\t\t\t\t\t<key>WakeConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUcMAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>WakeVerbReinit</key>\n\t\t\t\t\t<true/>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>Mirone - Realtek ALC269VC - Samsung NP350V5C-S0URU</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283902569</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUccEAFHHQABRx4XAUcfkAGHHCABhx0QAYce\n\t\t\t\t\tgQGHHwIBVxwwAVcdEAFXHiEBVx8CAZccQAGX\n\t\t\t\t\tHQABlx6gAZcfkAFHDAI=\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>35</integer>\n\t\t\t\t\t<key>WakeConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUcMAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>WakeVerbReinit</key>\n\t\t\t\t\t<true/>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>vusun123 - Realtek ALC269VC for Lenovo W530</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283902569</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tASccQAEnHQABJx6gAScfkAFHHBABRx0AAUce\n\t\t\t\t\tFwFHH5ABRwwCAVccIAFXHRABVx4hAVcfAAGH\n\t\t\t\t\tHDABhx0QAYcegQGHHwA=\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>40</integer>\n\t\t\t\t\t<key>WakeConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUcMAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>WakeVerbReinit</key>\n\t\t\t\t\t<true/>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>ALC269VC</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283902569</integer>\n\t\t\t\t\t<key>Comment</key>\n\t\t\t\t\t<string>Laptop patch ALC269VC Samsung _NP350V5C - Giesteira</string>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUccAAFHHQABRx4XAUcfmQGHHBABhx0QAYce\n\t\t\t\t\tgQGHHwEBVxwgAVcdEAFXHiEBVx8BAZccMAGX\n\t\t\t\t\tHQABlx6nAZcfmQFHDAI=\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>44</integer>\n\t\t\t\t\t<key>WakeConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUcMAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>WakeVerbReinit</key>\n\t\t\t\t\t<true/>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>maiconjs (Wolfield) - Asus A45A 269VB1</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283902569</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUccEAFHHQABRx4XAUcfmQGHHCABhx0QAYce\n\t\t\t\t\tgQGHHwEBJxwwAScdAAEnHqYBJx+ZAhccUAIX\n\t\t\t\t\tHRACFx4hAhcfAQFHDAI=\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>45</integer>\n\t\t\t\t\t<key>WakeConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUcMAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>WakeVerbReinit</key>\n\t\t\t\t\t<true/>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>ALC269VC for Thinkpad X230 with Dock4338</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283902569</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tASccEAEnHQEBJx6mAScfkAFHHEABRx0BAUce\n\t\t\t\t\tFwFHH5ABRwwCAVccUAFXHRABVx4rAVcfAgFX\n\t\t\t\t\tDAIBdxzwAXcdAAF3HgABdx9AAYccIAGHHRAB\n\t\t\t\t\thx6LAYcfAgGXHPABlx0AAZceAAGXH0ABpxzw\n\t\t\t\t\tAacdAAGnHgABpx9AAbccYAG3HUABtx4BAbcf\n\t\t\t\t\tAQHXHPAB1x0AAdceAAHXH0AB5xzwAecdAAHn\n\t\t\t\t\tHgAB5x9A\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>55</integer>\n\t\t\t\t\t<key>WakeConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUcMAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>WakeVerbReinit</key>\n\t\t\t\t\t<true/>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>HASEE Z6-i78154S2 ALC269 by lianny  </string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283902569</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUccEAFHHQABRx4TAUcfkAGHHDABhx0QAYce\n\t\t\t\t\tgQGHHwABJxxAAScdAAEnHqABJx+QAVccIAFX\n\t\t\t\t\tHRABVx4hAVcfAAF3HPABdx0AAXceAAF3H0AB\n\t\t\t\t\tlxzwAZcdAAGXHgABlx9AAacc8AGnHQABpx4A\n\t\t\t\t\tAacfQAG3HPABtx0AAbceAAG3H0AB1xzwAdcd\n\t\t\t\t\tAAHXHgAB1x9AAeccYAHnHRAB5x5EAecfAgFH\n\t\t\t\t\tDAI=\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>58</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>ALC269VC for Clevo N155RD by DalianSky</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283902569</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tASccEAEnHQEBJx6mAScfkAFHHDABRx0BAUce\n\t\t\t\t\tFwFHH5ABVxwgAVcdEAFXHiEBVx8CAXcc8AF3\n\t\t\t\t\tHQABdx4AAXcfQAGHHAABhx0QAYcegQGHHwIB\n\t\t\t\t\tlxzwAZcdAAGXHgABlx9AAacc8AGnHQABpx4A\n\t\t\t\t\tAacfQAG3HPABtx0AAbceAAG3H0AB5xxwAecd\n\t\t\t\t\tEQHnHkQB5x8CAUcMAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>66</integer>\n\t\t\t\t\t<key>WakeConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUcMAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>WakeVerbReinit</key>\n\t\t\t\t\t<true/>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>Custom ALC269VB for ENZ C16B by jimmy19990</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283902569</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUccEAFHHQEBRx4TAUcfkAGHHCABhx0QAYce\n\t\t\t\t\tgQGHHwEBlxwgAZcdAQGXHqABlx+QAhccEAIX\n\t\t\t\t\tHRACFx4hAhcfAQFHDAI=\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>76</integer>\n\t\t\t\t\t<key>WakeConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUcMAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>WakeVerbReinit</key>\n\t\t\t\t\t<true/>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>ALC269 for MECHREVO X8Ti Plus by DalianSky</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283902569</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tASccEAEnHQEBJx6mAScfkAFHHDABRx0BAUce\n\t\t\t\t\tFwFHH5ABVxwgAVcdEAFXHiEBVx8CAXcc8AF3\n\t\t\t\t\tHQABdx4AAXcfQAGHHAABhx0QAYcegQGHHwIB\n\t\t\t\t\tlxzwAZcdAAGXHgABlx9AAacc8AGnHQABpx4A\n\t\t\t\t\tAacfQAG3HPABtx0AAbceAAG3H0AB5xzwAecd\n\t\t\t\t\tAAHnHgAB5x9AAUcMAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>88</integer>\n\t\t\t\t\t<key>WakeConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUcMAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>WakeVerbReinit</key>\n\t\t\t\t\t<true/>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>ALC269</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283902569</integer>\n\t\t\t\t\t<key>Comment</key>\n\t\t\t\t\t<string>ALC269 Asus K53SJ, Asus G73s Mod by Andrey1970 (No input boost - no noise in Siri)</string>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAScc8AEnHQABJx4AAScfQAFHHBABRx0BAUce\n\t\t\t\t\tEwFHH5ABdxxQAXcdAQF3HhMBdx+QAYccIAGH\n\t\t\t\t\tHZABhx6BAYcfAwGXHDABlx0BAZceoAGXH5AB\n\t\t\t\t\tpxzwAacdAAGnHgABpx9AAbcc8AG3HQABtx4A\n\t\t\t\t\tAbcfQAHXHPAB1x0AAdceAAHXH0AB5xzwAecd\n\t\t\t\t\tAAHnHgAB5x9AAhccQAIXHRACFx4hAhcfAwFH\n\t\t\t\t\tDAI=\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>93</integer>\n\t\t\t\t\t<key>WakeConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUcMAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>WakeVerbReinit</key>\n\t\t\t\t\t<true/>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>ALC269-VB v4 Mod by Andrey1970 (No input boost - no noise in Siri)</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283902569</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tASccEAEnHQABJx6gAScfkAFHHCABRx0AAUce\n\t\t\t\t\tEwFHH5ABhxwwAYcdEAGHHoEBhx8AAhccUAIX\n\t\t\t\t\tHRACFx4hAhcfAAFHDAI=\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>99</integer>\n\t\t\t\t\t<key>WakeConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUcMAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>WakeVerbReinit</key>\n\t\t\t\t\t<true/>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>ALC269</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283902569</integer>\n\t\t\t\t\t<key>Comment</key>\n\t\t\t\t\t<string>Custom ALC269 Acer Aspire by Andrey1970 (No input boost - no noise in Siri)</string>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUccAAFHHUEBRx4XAUcfmQGHHBABhx2QAYce\n\t\t\t\t\tgQGHHwEBtxwgAbcdkQG3HqcBtx+ZAhccMAIX\n\t\t\t\t\tHUACFx4hAhcfAQ==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>127</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>ALC269</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283902569</integer>\n\t\t\t\t\t<key>Comment</key>\n\t\t\t\t\t<string>ALC269 for Lenovo Y500 by BaoStorm (No input boost - no noise in Siri)</string>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tASccQAEnHQkBJx6mAScfkAFHHBABRx0BAUce\n\t\t\t\t\tFwFHH5ABRwwCAVccIAFXHSABVx4hAVcfBAFX\n\t\t\t\t\tDAIBhxxQAYcdKAGHHqEBhx8EAeccMAHnHSEB\n\t\t\t\t\t5x5FAecfBA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>188</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>Mirone - Realtek ALC270 v1</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283902576</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUccEAFHHQABRx4TAUcfkAGXHCABlx0AAZce\n\t\t\t\t\toAGXH5ACFxwwAhcdEAIXHiECFx8AAUcMAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>3</integer>\n\t\t\t\t\t<key>WakeConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUcMAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>WakeVerbReinit</key>\n\t\t\t\t\t<true/>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>Mirone - Realtek ALC270 v2</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283902576</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tASccEAEnHQABJx6gAScfkAFHHCABRx0AAUce\n\t\t\t\t\tEwFHH5ACFxwwAhcdEAIXHiECFx8BAUcMAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>4</integer>\n\t\t\t\t\t<key>WakeConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUcMAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>WakeVerbReinit</key>\n\t\t\t\t\t<true/>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>ALC270</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283902576</integer>\n\t\t\t\t\t<key>Comment</key>\n\t\t\t\t\t<string>ALC270 for Asus A46CB-WX024D Laptop by Andres ZeroCross</string>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAScc8AEnHQABJx4AAScfQAFHHBABRx0BAUce\n\t\t\t\t\tFwFHH5ABdxzwAXcdAAF3HgABdx9AAYccIAGH\n\t\t\t\t\tHRABhx6BAYcfBAGXHDABlx0BAZceoAGXH5AB\n\t\t\t\t\tpxwgAacdEAGnHiEBpx8EAbcc8AG3HQABtx4A\n\t\t\t\t\tAbcfQAHXHPAB1x0AAdceAAHXH0AB5xzwAecd\n\t\t\t\t\tAAHnHgAB5x9AAhcc8AIXHQACFx4AAhcfQAFH\n\t\t\t\t\tDAI=\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>21</integer>\n\t\t\t\t\t<key>WakeConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUcMAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>WakeVerbReinit</key>\n\t\t\t\t\t<true/>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>ALC270</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283902576</integer>\n\t\t\t\t\t<key>Comment</key>\n\t\t\t\t\t<string>ALC270 for Asus Laptop with alternative microphone</string>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tASccEAEnHQEBJx6mAScfkAFHHCABRx0BAUce\n\t\t\t\t\tEwFHH5ABdxzwAXcdAAF3HgABdx9AAYccMAGH\n\t\t\t\t\tHRABhx6BAYcfAgGXHPABlx0AAZceAAGXH0AB\n\t\t\t\t\tpxzwAacdAAGnHgABpx9AAbcc8AG3HQABtx4A\n\t\t\t\t\tAbcfQAHXHPAB1x0AAdceAAHXH0AB5xzwAecd\n\t\t\t\t\tAAHnHgAB5x9AAhccQAIXHRACFx4hAhcfAgFH\n\t\t\t\t\tDAI=\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>27</integer>\n\t\t\t\t\t<key>WakeConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUcMAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>WakeVerbReinit</key>\n\t\t\t\t\t<true/>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>ALC270</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283902576</integer>\n\t\t\t\t\t<key>Comment</key>\n\t\t\t\t\t<string>ALC270 for Asus Laptop</string>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAScc8AEnHQABJx4AAScfQAFHHBABRx0BAUce\n\t\t\t\t\tFwFHH5ABdxzwAXcdAAF3HgABdx9AAYccIAGH\n\t\t\t\t\tHRABhx6BAYcfBAGXHDABlx0BAZceoAGXH5AB\n\t\t\t\t\tpxzwAacdAAGnHgABpx9AAbcc8AG3HQABtx4A\n\t\t\t\t\tAbcfQAHXHPAB1x0AAdceAAHXH0AB5xzwAecd\n\t\t\t\t\tAAHnHgAB5x9AAhccIAIXHRACFx4hAhcfBAFH\n\t\t\t\t\tDAI=\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>28</integer>\n\t\t\t\t\t<key>WakeConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUcMAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>WakeVerbReinit</key>\n\t\t\t\t\t<true/>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283902569</integer>\n\t\t\t\t\t<key>Comment</key>\n\t\t\t\t\t<string>Custom ALC271x Acer Aspire s3-951</string>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tASccEAEnHQABJx6gAScfkAFHHCABRx0AAUce\n\t\t\t\t\tEwFHH5ABhxwwAYcdkAGHHoEBhx8AAdccQAHX\n\t\t\t\t\tHZAB1x4XAdcfQAHnHFAB5x0QAeceRQHnHwAC\n\t\t\t\t\tFxxgAhcdEAIXHiECFx8AAUcMAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>31</integer>\n\t\t\t\t\t<key>WakeConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUcMAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>WakeVerbReinit</key>\n\t\t\t\t\t<true/>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>Mirone - Realtek ALC272</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283902578</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAYccMAGHHZABhx6BAYcfAAGXHCABlx0AAZce\n\t\t\t\t\towGXH5ABRxwQAUcdAAFHHhMBRx+QAhccUAIX\n\t\t\t\t\tHUACFx4hAhcfAAFHDAI=\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>3</integer>\n\t\t\t\t\t<key>WakeConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUcMAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>WakeVerbReinit</key>\n\t\t\t\t\t<true/>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>ALC 272 - Lenovo B470 - Sam Chen</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283902578</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tASccMAEnHQABJx6jAScfkAFHHBABRx0AAUce\n\t\t\t\t\tEwFHH5ABhxwgAYcdEAGHHoEBhx8AAhccUAIX\n\t\t\t\t\tHRACFx4hAhcfAAFHDAI=\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>11</integer>\n\t\t\t\t\t<key>WakeConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUcMAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>WakeVerbReinit</key>\n\t\t\t\t\t<true/>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>Mirone - Realtek ALC275</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283902581</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tASccAAEnHQABJx6gAScfkAFHHBABRx0BAUce\n\t\t\t\t\tFwFHH5ABVxwgAVcdEAFXHiEBVx8DAUcMAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>3</integer>\n\t\t\t\t\t<key>WakeConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUcMAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>WakeVerbReinit</key>\n\t\t\t\t\t<true/>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>InsanelyDeepak - Realtek ALC275</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283902581</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUccEAFHHQEBRx4XAUcfkAFXHCABVx0QAVce\n\t\t\t\t\tIQFXHwMBJxwwAScdAAEnHqABJx+QAYccQAGH\n\t\t\t\t\tHVABhx6BAYcfAAHnHFAB5x0QAeceRQHnHwAB\n\t\t\t\t\tRwwC\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>13</integer>\n\t\t\t\t\t<key>WakeConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUcMAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>WakeVerbReinit</key>\n\t\t\t\t\t<true/>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>Custom ALC275 for Sony Vaio - vusun123</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283902581</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tASccQAEnHQABJx6gAScfkAFXHBABVx0QAVce\n\t\t\t\t\tIQFXHwABhxwwAYcdUAGHHoEBhx8AAaccUAGn\n\t\t\t\t\tHQABpx4XAacfkAGnDAI=\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>28</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>Mirone - Realtek ALC280</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283902592</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUccEAFHHQABRx4TAUcfkAFXHCABVx0QAVce\n\t\t\t\t\tIQFXHwEBJxwwAScdAAEnHqABJx+QAaccQAGn\n\t\t\t\t\tHRABpx6BAacfAgFHDAIBVwwC\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>3</integer>\n\t\t\t\t\t<key>WakeConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUcMAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>WakeVerbReinit</key>\n\t\t\t\t\t<true/>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>Mirone - Realtek ALC280 - ComboJack</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283902592</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tASccEAEnHQABJx6gAScfkAFHHCABRx0AAUce\n\t\t\t\t\tFwFHH5ABVxwwAVcdEAFXHiEBVx8CAaccQAGn\n\t\t\t\t\tHRABpx6BAacfAgFHDAIBVwwC\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>4</integer>\n\t\t\t\t\t<key>WakeConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUcMAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>WakeVerbReinit</key>\n\t\t\t\t\t<true/>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>Alienware alpha - Realtek ALC280</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283902592</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tIUcc8CFHHQAhRx4AIUcfQCFXHPAhVx0AIVce\n\t\t\t\t\tACFXH0AhZxzwIWcdACFnHgAhZx9AIXcc8CF3\n\t\t\t\t\tHQAhdx4AIXcfQCGHHPAhhx0AIYceACGHH0Ah\n\t\t\t\t\tlxzwIZcdACGXHgAhlx9AIacc8CGnHQAhpx4A\n\t\t\t\t\tIacfQCG3HPAhtx0AIbceACG3H0Ah5xwQIecd\n\t\t\t\t\t4SHnHkUh5x8B\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>11</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>MacPeet - Realtek ALC280 - Dell T20 - Version1 - ManualMode</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283902592</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAbccIAG3HUABtx4BAbcfAQGnHDABpx2QAace\n\t\t\t\t\tgQGnHwIBhxxAAYcdMAGHHoEBhx8BAVccYAFX\n\t\t\t\t\tHUABVx4hAVcfAgFXDAI=\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>13</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>MacPeet - Realtek ALC280 - Dell T20 - Version2 - SwitchMode</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283902592</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAbccIAG3HUABtx4RAbcfkAGnHDABpx2QAace\n\t\t\t\t\tgQGnHwIBhxxAAYcdMAGHHoEBhx8BAVccYAFX\n\t\t\t\t\tHUABVx4hAVcfAgFXDAI=\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>15</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>cowpod - Realtek ALC280 - Optiplex 9020SFF</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283902592</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAaccMAGnHZABpx6BAacfAgGHHEABhx0wAYce\n\t\t\t\t\tgQGHHwEBRxxQAUcdAAFHHhcBRx+QAUcMAgFX\n\t\t\t\t\tHGABVx1AAVceIQFXHwIBVwwC\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>16</integer>\n\t\t\t\t\t<key>WakeConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUcMAgFXDAI=\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>WakeVerbReinit</key>\n\t\t\t\t\t<true/>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>Dell Precision T7610 Workstation ALC280 by Andres ZeroCross</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283902592</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAVccIAFXHUABVx4hAVcfAgGHHDABhx0AAYce\n\t\t\t\t\toAGHH5ABpxxAAacdkAGnHoEBpx8CAbccEAG3\n\t\t\t\t\tHQABtx4AAbcfAQFnDAI=\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>21</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>Mirone - Realtek ALC282_v1</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283902594</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tASccEAEnHQABJx6gAScfmQFHHCABRx0AAUce\n\t\t\t\t\tEwGXHDABlx0QAZceiwGXHwABRx+ZAhccUAIX\n\t\t\t\t\tHRACFx4rAhcfAQFHDAICFwwC\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>3</integer>\n\t\t\t\t\t<key>WakeConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUcMAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>WakeVerbReinit</key>\n\t\t\t\t\t<true/>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>Mirone - Realtek ALC282_v2</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283902594</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tASccQAEnHQABJx6gAScfkAFHHBABRx0AAUce\n\t\t\t\t\tFwFHH5ABhxwwAYcdEAGHHoEBhx8AAeccIAHn\n\t\t\t\t\tHRAB5x5EAecfAAIXHFACFx0QAhceIQIXHwAB\n\t\t\t\t\tRwwC\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>4</integer>\n\t\t\t\t\t<key>WakeConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUcMAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>WakeVerbReinit</key>\n\t\t\t\t\t<true/>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>InsanelyDeepak - Realtek ALC282</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283902594</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tASccQAEnHQABJx6gAScfkAFHHBABRx0AAUce\n\t\t\t\t\tFwFHH5ABhxwwAYcdEAGHHoEBhx8AAeccIAHn\n\t\t\t\t\tHRAB5x5EAecfAAIXHFACFx0QAhceIQIXHwAB\n\t\t\t\t\tRwwC\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>13</integer>\n\t\t\t\t\t<key>WakeConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUcMAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>WakeVerbReinit</key>\n\t\t\t\t\t<true/>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283902594</integer>\n\t\t\t\t\t<key>Comment</key>\n\t\t\t\t\t<string>Custom ALC282 lenovo y430p by loverto</string>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tASccEAEnHQEBJx6mAScfkAFHHPABRx0AAUcd\n\t\t\t\t\tAAFHH0ABdxzwAXcdAAF3HgABdx9AAYcccAGH\n\t\t\t\t\tHRABhx6BAYcfAQGHHAIBlxzwAZcdAAGXHgAB\n\t\t\t\t\tlx9AAacc8AGnHQABpx4AAacfQAG3HEABtx0B\n\t\t\t\t\tAbceFwG3H5AB1xzwAdcdAAHXHgAB1x9AAecc\n\t\t\t\t\tYAHnHRAB5x5EAecfAQIXHFACFx0QAhceIQIX\n\t\t\t\t\tHwECFxwC\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>22</integer>\n\t\t\t\t\t<key>WakeConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUcMAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>WakeVerbReinit</key>\n\t\t\t\t\t<true/>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283902594</integer>\n\t\t\t\t\t<key>Comment</key>\n\t\t\t\t\t<string>Skvo ALC282 Acer Aspire on IvyBridge by Andrey1970</string>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tASccMAEnHQABJx6gAScfkAFHHBABRx0AAUce\n\t\t\t\t\tFwFHH5ABdxzwAXcdAAF3HgABdx9AAYcc8AGH\n\t\t\t\t\tHQABhx4AAYcfQAGXHPABlx0AAZceAAGXH0AB\n\t\t\t\t\tpxzwAacdAAGnHgABpx9AAbcc8AG3HQABtx4A\n\t\t\t\t\tAbcfQAHnHPAB5x0AAeceAAHnH0ACFxwgAhcd\n\t\t\t\t\tEAIXHiECFx8B\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>27</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283902594</integer>\n\t\t\t\t\t<key>Comment</key>\n\t\t\t\t\t<string>Custom ALC282 Acer Aspire E1-572G</string>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAScc8AEnHQABJx4AAScfQAFHHBABRx0AAUce\n\t\t\t\t\tFwFHH5ABdxzwAXcdAAF3HgABdx9AAYcc8AGH\n\t\t\t\t\tHQABhx4AAYcfQAGXHPABlx0AAZceAAGXH0AB\n\t\t\t\t\tpxzwAacdAAGnHgABpx9AAbccMAG3HQEBtx6g\n\t\t\t\t\tAbcfkAHnHPAB5x0AAeceAAHnH0ACFxwgAhcd\n\t\t\t\t\tEAIXHiECFx8B\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>28</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283902594</integer>\n\t\t\t\t\t<key>Comment</key>\n\t\t\t\t\t<string>Custom ALC282 Dell Inspirion 3521 by Generation88</string>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tASccQAEnHQEBJx6gAScfkAFHHBABRx0BAUce\n\t\t\t\t\tFwFHH5ABlxwwAZcdEAGXHoEBlx8BAhccIAIX\n\t\t\t\t\tHRACFx4hAhcfAQFHDAI=\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>29</integer>\n\t\t\t\t\t<key>WakeConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUcMAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>WakeVerbReinit</key>\n\t\t\t\t\t<true/>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>Custom ALC282 Lenovo Y410P by yunsur</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283902594</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tASccEAEnHQEBJx6mAScfkAFHHPABRx0AAUce\n\t\t\t\t\tAAFHH0ABdxzwAXcdAAF3HgABdx9AAYccIAGH\n\t\t\t\t\tHRABhx6BAYcfAQGXHPABlx0AAZceAAGXH0AB\n\t\t\t\t\tpxzwAacdAAGnHgABpx9AAbccQAG3HQEBtx4X\n\t\t\t\t\tAbcfkAHXHPAB1x0AAdceAAHXH0AB5xxwAecd\n\t\t\t\t\tEAHnHkQB5x8BAhccUAIXHRACFx4hAhcfAQFH\n\t\t\t\t\tDAI=\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>41</integer>\n\t\t\t\t\t<key>WakeConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUcMAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>WakeVerbReinit</key>\n\t\t\t\t\t<true/>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>Custom ALC282 Lenovo Y430P by yunsur</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283902594</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tASccEAEnHQEBJx6mAScfkAFHHPABRx0AAUce\n\t\t\t\t\tAAFHH0ABdxzwAXcdAAF3HgABdx9AAYccIAGH\n\t\t\t\t\tHRABhx6BAYcfAQGXHPABlx0AAZceAAGXH0AB\n\t\t\t\t\tpxzwAacdAAGnHgABpx9AAbccQAG3HQEBtx4X\n\t\t\t\t\tAbcfkAHXHPAB1x0AAdceAAHXH0AB5xxwAecd\n\t\t\t\t\tEAHnHkQB5x8BAhccUAIXHRACFx4hAhcfAQFH\n\t\t\t\t\tDAI=\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>43</integer>\n\t\t\t\t\t<key>WakeConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUcMAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>WakeVerbReinit</key>\n\t\t\t\t\t<true/>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>Custom ALC282 Lenovo Y510P by yunsur</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283902594</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tASccEAEnHQEBJx6mAScfkAFHHEABRx0BAUce\n\t\t\t\t\tFwFHH5ABdxzwAXcdAAF3HgABdx9AAYccIAGH\n\t\t\t\t\tHRABhx6BAYcfAQGXHPABlx0AAZceAAGXH0AB\n\t\t\t\t\tpxzwAacdAAGnHgABpx9AAbcc8AG3HQABtx4A\n\t\t\t\t\tAbcfQAHXHPAB1x0AAdceAAHXH0AB5xxwAecd\n\t\t\t\t\tEAHnHkQB5x8BAhccUAIXHRACFx4hAhcfAQFH\n\t\t\t\t\tDAI=\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>51</integer>\n\t\t\t\t\t<key>WakeConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUcMAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>WakeVerbReinit</key>\n\t\t\t\t\t<true/>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>Custom ALC282 Hasee K580C by YM2008</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283902594</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tASccEAEnHQEBJx6mAScfkAFHHCABRx1AAUce\n\t\t\t\t\tEQFHHwEBdxzwAXcdAAF3HgABdx9AAYccIAGH\n\t\t\t\t\tHRABhx6BAYcfAQGXHPABlx0AAZceAQGXH0AB\n\t\t\t\t\tpxzwAacdAAGnHgEBpx9AAdcc8AG3HQABtx4B\n\t\t\t\t\tAbcfQAHXHPUB1x0AAdceBQHXH0AB5xzwAecd\n\t\t\t\t\tAAHnHgEB5x9AAhccQAIXHXACFx4hAhcfAQFH\n\t\t\t\t\tDAI=\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>76</integer>\n\t\t\t\t\t<key>WakeConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUcMAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>WakeVerbReinit</key>\n\t\t\t\t\t<true/>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283902594</integer>\n\t\t\t\t\t<key>Comment</key>\n\t\t\t\t\t<string>Custom ALC282 for Asus x200la</string>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tASccEAEnHQABJx6BAScfAAFHHCABRx0BAUce\n\t\t\t\t\tEAFHH5kBdxzwAXcdAAF3HgABdx9AAYcc8AGH\n\t\t\t\t\tHQABhx4AAYcfQAGXHDABlx0BAZcepgGXH5kB\n\t\t\t\t\tpxzwAacdAAGnHgABpx9AAbcc8AG3HQABtx4A\n\t\t\t\t\tAbcfQAHXHPAB1x0AAdceAAHXH0AB5xzwAecd\n\t\t\t\t\tAAHnHgAB5x9AAhccUAIXHUACFx4rAhcfAAFH\n\t\t\t\t\tDAICFwwC\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>86</integer>\n\t\t\t\t\t<key>WakeConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUcMAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>WakeVerbReinit</key>\n\t\t\t\t\t<true/>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283902594</integer>\n\t\t\t\t\t<key>Comment</key>\n\t\t\t\t\t<string>No input boost ALC282 Acer Aspire on IvyBridge by Andrey1970</string>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tASccMAEnHQABJx6gAScfkAFHHBABRx0AAUce\n\t\t\t\t\tFwFHH5ABdxzwAXcdAAF3HgABdx9AAYcc8AGH\n\t\t\t\t\tHQABhx4AAYcfQAGXHPABlx0AAZceAAGXH0AB\n\t\t\t\t\tpxzwAacdAAGnHgABpx9AAbcc8AG3HQABtx4A\n\t\t\t\t\tAbcfQAHnHPAB5x0AAeceAAHnH0ACFxwgAhcd\n\t\t\t\t\tEAIXHiECFx8B\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>127</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>Toleda NUC/BRIX patch ALC283</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283902595</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAScc8AEnHQABJx4AAScfQAFHHPABRx0AAUce\n\t\t\t\t\tAAFHH0ABdxzwAXcdAAF3HgABdx9AAYcc8AGH\n\t\t\t\t\tHQABhx4AAYcfQAGXHGABlx0wAZceiwGXHwEB\n\t\t\t\t\tpxzwAacdAAGnHgABpx9AAbcc8AG3HQABtx4A\n\t\t\t\t\tAbcfQAHXHPAB1x0AAdceAAHXH0AB5xzwAecd\n\t\t\t\t\tAAHnHgAB5x9AAhcccAIXHUACFx4rAhcfAQGX\n\t\t\t\t\tDAICFwwC\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>Mirone - Realtek ALC283</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283902595</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tASccEAEnHQEBJx6gAScfkAFHHCABRx0BAUce\n\t\t\t\t\tFwFHH5ABlxwwAZcdAAGXHosBlx8AAhccQAIX\n\t\t\t\t\tHRACFx4rAhcfAQFHDAICFwwC\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>3</integer>\n\t\t\t\t\t<key>WakeConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUcMAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>WakeVerbReinit</key>\n\t\t\t\t\t<true/>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>Custom by Slbomber ALC283 (V3-371)</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283902595</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tASccEAEnHQEBJx6gAScfkAFHHEABRx0BAUce\n\t\t\t\t\tFwFHH5ABdxzwAXcdAAF3HgABdx9AAYcc8AGH\n\t\t\t\t\tHQABhx4AAYcfQAGXHPABlx0AAZceAAGXH0AB\n\t\t\t\t\tpxzwAacdAAGnHgABpx8AAbcc8AG3HQABtx4A\n\t\t\t\t\tAbcfQAHXHPAB1x0AAdceAAHXH0AB5xzwAecd\n\t\t\t\t\tAAHnHgAB5x9AAhccUAIXHRACFx4hAhcfAwFH\n\t\t\t\t\tDAICFwwC\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>11</integer>\n\t\t\t\t\t<key>WakeConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUcMAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>WakeVerbReinit</key>\n\t\t\t\t\t<true/>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>MacPeet - alc283 for LENOVO IDEAPAD 14</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283902595</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUccEAFHHQABRx4XAUcfkAFHDAIBlxwgAZcd\n\t\t\t\t\tEAGXHoEBlx8AASccMAEnHQABJx6mAScfkAIX\n\t\t\t\t\tHGACFx0QAhceIQIXHwACFwwC\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>15</integer>\n\t\t\t\t\t<key>WakeConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUcMAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>WakeVerbReinit</key>\n\t\t\t\t\t<true/>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>Realtek ALC283 for ThinkCentre M93z 10AF ALC283 by giesteira </string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283902595</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAbccQAG3HQABtx4XAbcfmQEnHBABJx0AASce\n\t\t\t\t\tpgEnH5kBlxwgAZcdkAGXHoEBlx8BAaccMAGn\n\t\t\t\t\tHZABpx6BAacfAQIXHAACFx1AAhceIQIXHwEB\n\t\t\t\t\tRwwC\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>44</integer>\n\t\t\t\t\t<key>WakeConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUcMAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>WakeVerbReinit</key>\n\t\t\t\t\t<true/>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>ASRock DeskMini 110(H110M-STX) ALC283 by licheedev</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283902595</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tASccgAEnHQABJx4AAScfQAFHHEABRx0BAUce\n\t\t\t\t\tEwFHH5ABpxwgAacdkAGnHoEBpx8BAdccYAHX\n\t\t\t\t\tHZAB1x5VAdcfQAIXHFACFx0QAhceIQIXHwEB\n\t\t\t\t\tRwwCAhcMAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>66</integer>\n\t\t\t\t\t<key>WakeConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUcMAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>WakeVerbReinit</key>\n\t\t\t\t\t<true/>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>Mirone - Realtek ALC284</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283902596</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tASccEAEnHQABJx6gAScfkAE3HCABNx0AATce\n\t\t\t\t\tAAE3H0ABRxwwAUcdAAFHHhcBRx+QAVccQAFX\n\t\t\t\t\tHRABVx4hAVcfAAGHHFABhx0QAYcegQGHHwIB\n\t\t\t\t\t1xxgAdcdgAHXHmYB1x9AAUcMAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>3</integer>\n\t\t\t\t\t<key>WakeConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUcMAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>WakeVerbReinit</key>\n\t\t\t\t\t<true/>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>Rover Realtek ALC285 for X1C6th</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283902597</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tASccEAEnHQEBJx6mAScfkAFHHDABRx0BAUce\n\t\t\t\t\tFwFHH5ABlxwAAZcdEAGXHosBlx8BAhccIAIX\n\t\t\t\t\tHRACFx4rAhcfAQHXHGAB1x2AAdceZgHXH0AB\n\t\t\t\t\tRwwC\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>11</integer>\n\t\t\t\t\t<key>WakeConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUcMAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>WakeVerbReinit</key>\n\t\t\t\t\t<true/>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283902597</integer>\n\t\t\t\t\t<key>CodecName</key>\n\t\t\t\t\t<string>Andres - Realtek ALC285 for  Lenovo X1 Carbon 6th </string>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tASccEAEnHQEBJx6mAScfkAFHHDABRx0BAUce\n\t\t\t\t\tFwFHH5ABlxwAAZcdEAGXHosBlx8EAhccIAIX\n\t\t\t\t\tHRACFx4rAhcfBAFHDAI=\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>21</integer>\n\t\t\t\t\t<key>WakeConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUcMAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>WakeVerbReinit</key>\n\t\t\t\t\t<true/>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283902598</integer>\n\t\t\t\t\t<key>CodecName</key>\n\t\t\t\t\t<string>Mirone - Realtek ALC286</string>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tASccEAEnHQABJx6mAScfsAFHHCABRx0AAUce\n\t\t\t\t\tFwFHH5ABhxwwAYcdEAGHHosBhx8EAhccQAIX\n\t\t\t\t\tHRACFx4rAhcfBAFHDAI=\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>3</integer>\n\t\t\t\t\t<key>WakeConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUcMAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>WakeVerbReinit</key>\n\t\t\t\t\t<true/>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283902598</integer>\n\t\t\t\t\t<key>CodecName</key>\n\t\t\t\t\t<string>Lenovo YOGA3 pro ALC286 - gdllzkusi</string>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tASccIAEnHQEBJx6mAScfkAE3HPABNx0AATce\n\t\t\t\t\tAAE3H0ABRxxAAUcdAQFHHhcBRx+QAUcMAgF3\n\t\t\t\t\tHPABdx0AAXceAAF3H0ABhxwQAYcdEAGHHoEB\n\t\t\t\t\thx8EAZcc8AGXHQABlx4AAZcfQAGnHPABpx0A\n\t\t\t\t\tAaceAAGnH0AB1xzwAdcdAAHXHgAB1x9AAecc\n\t\t\t\t\t8AHnHQAB5x4AAecfQAIXHDACFx0QAhceIQIX\n\t\t\t\t\tHwQCFwwC\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>11</integer>\n\t\t\t\t\t<key>WakeConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUcMAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>WakeVerbReinit</key>\n\t\t\t\t\t<true/>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>Mirone - Realtek ALC288</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283902600</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tASccEAEnHQABJx6gAScfkAE3HCABNx0AATce\n\t\t\t\t\tAAE3H0ABRxwwAUcdAAFHHhcBRx+QAYccQAGH\n\t\t\t\t\tHRABhx6BAYcfAgHXHFAB1x2AAdceZQHXH0AC\n\t\t\t\t\tFxxgAhcdEAIXHiECFx8BAUcMAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>3</integer>\n\t\t\t\t\t<key>WakeConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUcMAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>WakeVerbReinit</key>\n\t\t\t\t\t<true/>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>InsanelyDeepak - Realtek ALC288 for Dell XPS 9343</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283902600</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tASccIAEnHQABJx6gAScfkAFHHDABRx0AAUce\n\t\t\t\t\tFwFHH5ABNxxAATcdEAE3HoEBNx8AAhccUAIX\n\t\t\t\t\tHRACFx4hAhcfAAFHDAI=\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>13</integer>\n\t\t\t\t\t<key>WakeConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUcMAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>WakeVerbReinit</key>\n\t\t\t\t\t<true/>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>yyfn - Realtek ALC288 for Dell XPS 9343</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283902600</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tASccIAEnHQEBJx6mAScfkAE3HPABNx0AATce\n\t\t\t\t\tAAE3H0ABRxwQAUcdAQFHHhcBRx+QAUcMAgF3\n\t\t\t\t\tHPABdx0AAXceAAF3H0ABhxzwAYcdAAGHHgAB\n\t\t\t\t\thx9AAZcc8AGXHQABlx4AAZcfQAGnHHABpx0g\n\t\t\t\t\tAacYqwGnHwIBpwwCAdcc8AHXHQAB1x4AAdcf\n\t\t\t\t\tQAHnHPAB5x0AAeceAAHnH0ACFxw/AhcdEAIX\n\t\t\t\t\tHisCFx8D\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>23</integer>\n\t\t\t\t\t<key>WakeConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUcMAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>WakeVerbReinit</key>\n\t\t\t\t\t<true/>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>Mirone - Realtek ALC290</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283902608</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUccEAFHHQABRx4XAUcfkAFXHCABVx0QAVce\n\t\t\t\t\tKwFXHwIBlxwwAZcdAAGXHqABlx+QAaccQAGn\n\t\t\t\t\tHRABpx6LAacfAAFHDAI=\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>3</integer>\n\t\t\t\t\t<key>WakeConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUcMAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>WakeVerbReinit</key>\n\t\t\t\t\t<true/>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283902608</integer>\n\t\t\t\t\t<key>Comment</key>\n\t\t\t\t\t<string>macpeetALC ALC290 aka ALC3241</string>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAaccIAGnHRABpx6BAacfAAEnHDABJx0AASce\n\t\t\t\t\towEnH5ABRxxAAUcdAAFHHhcBRx+QAVccUAFX\n\t\t\t\t\tHRABVx4hAVcfAAFHDAI=\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>4</integer>\n\t\t\t\t\t<key>WakeConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUcMAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>WakeVerbReinit</key>\n\t\t\t\t\t<true/>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283902608</integer>\n\t\t\t\t\t<key>Comment</key>\n\t\t\t\t\t<string>vusun123 - ALC 290 for Dell Vostro 5480</string>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tASccMAEnHQABJx6gAScfkAFHHBABRx0AAUce\n\t\t\t\t\tFwFHH5ABRwwCAVccIAFXHRABVx4hAVcfAAGn\n\t\t\t\t\tHEABpx0QAacegQGnHwA=\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>28</integer>\n\t\t\t\t\t<key>WakeConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUcMAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>WakeVerbReinit</key>\n\t\t\t\t\t<true/>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>Custom ALC292</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283902610</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tASccEAEnHQABJx6gAScfmQFHHCABRx0AAUce\n\t\t\t\t\tFwFHH5kBVxwwAVcdQAFXHiEBVx8BAZccUAGX\n\t\t\t\t\tHZABlx6BAZcfAQFHDAI=\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>12</integer>\n\t\t\t\t\t<key>WakeConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUcMAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>WakeVerbReinit</key>\n\t\t\t\t\t<true/>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283902610</integer>\n\t\t\t\t\t<key>Comment</key>\n\t\t\t\t\t<string>vanquybn - ALC 292 for Dell M4800</string>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUccEAFHHQABRx4XAUcfkAGHHCABhx2QAYce\n\t\t\t\t\tgQGHHwEBJxwwAScdAAEnHqYBJx+QAVccQAFX\n\t\t\t\t\tHUABVx4hAVcfAQ==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>18</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283902610</integer>\n\t\t\t\t\t<key>Comment</key>\n\t\t\t\t\t<string>vusun123 - ALC 292 for Lenovo T440</string>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tASccMAEnHQABJx6gAScfkAFHHEABRx0AAUce\n\t\t\t\t\tFwFHH5ABRwwCAVccUAFXHRABVx4hAVcfAAGn\n\t\t\t\t\tHCABpx0QAacegQGnHwA=\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>28</integer>\n\t\t\t\t\t<key>WakeConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUcMAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>WakeVerbReinit</key>\n\t\t\t\t\t<true/>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>ALC293 Dell E7450 by Andres ZeroCross</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283902611</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAScc8AEnHQABJx4AAScfQAE3HBABNx0BATce\n\t\t\t\t\toAE3H5ABRxwwAUcdAQFHHhcBRx+QAVccQAFX\n\t\t\t\t\tHUABVx4rAVcfAgFnHFABZx1AAWceAQFnHwIB\n\t\t\t\t\thxzwAYcdAAGHHgABhx9AAZcc8AGXHQABlx4A\n\t\t\t\t\tAZcfQAGnHCABpx0QAaceiwGnHwIBtxzwAbcd\n\t\t\t\t\tAAG3HgABtx9AAdcc8AHXHQAB1x4AAdcfQAHn\n\t\t\t\t\tHPAB5x0AAeceAAHnH0ABRwwCAVcMAgFnDAI=\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>11</integer>\n\t\t\t\t\t<key>WakeConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUcMAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>WakeVerbReinit</key>\n\t\t\t\t\t<true/>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>tluck - ALC 293 for Lenovo T460/T560 - extra LineOut on Dock</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283902611</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tASccEAEnHQEBJx6mAScfkAE3HPABNx0AATce\n\t\t\t\t\tAAE3H0ABRxwgAUcdAQFHHhcBRx+QAVccMAFX\n\t\t\t\t\tHRABVx4hAVcfAwFnHPABZx0AAWceAAFnH0AB\n\t\t\t\t\thxzwAYcdAAGHHgABhx9AAZcc8AGXHQABlx4A\n\t\t\t\t\tAZcfQAGnHEABpx0QAacegQGnHwMBtxzwAbcd\n\t\t\t\t\tAAG3HgABtx9AAdcc8AHXHQAB1x4AAdcfQAHn\n\t\t\t\t\tHPAB5x0AAeceAAHnH0ABRwwCAVcMAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>28</integer>\n\t\t\t\t\t<key>WakeConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUcMAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>WakeVerbReinit</key>\n\t\t\t\t\t<true/>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>tluck - ALC 293 for Lenovo T460/T560</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283902611</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tASccEAEnHQEBJx6mAScfkAE3HPABNx0AATce\n\t\t\t\t\tAAE3H0ABRxwgAUcdAQFHHhcBRx+QAVccMAFX\n\t\t\t\t\tHRABVx4hAVcfAwFnHPABZx0AAWceAAFnH0AB\n\t\t\t\t\thxzwAYcdAAGHHgABhx9AAZcc8AGXHQABlx4A\n\t\t\t\t\tAZcfQAGnHEABpx0QAacegQGnHwMBtxzwAbcd\n\t\t\t\t\tAAG3HgABtx9AAdcc8AHXHQAB1x4AAdcfQAHn\n\t\t\t\t\tHPAB5x0AAeceAAHnH0ABRwwCAVcMAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>29</integer>\n\t\t\t\t\t<key>WakeConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUcMAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>WakeVerbReinit</key>\n\t\t\t\t\t<true/>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>Rover - Realtek ALC294 for Asus FL8000U</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283902612</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAbccEAG3HQEBtx6nAbcfkAFHHCABRx0BAUce\n\t\t\t\t\tFwFHH5ACFxwwAhcdEAIXHiECFx8BAUcMAgG3\n\t\t\t\t\tDAICFwwC\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>11</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>MacPeet - Realtek ALC294 for Lenovo M710Q</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283902612</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAhccIAIXHRACFx4hAhcfAAGXHDABlx0QAZce\n\t\t\t\t\tgQGXHwABpxxAAacdkAGnHoEBpx8AAUccUAFH\n\t\t\t\t\tHQABRx4XAUcfkAFHDAI=\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>12</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>InsanelyDeepak - Realtek ALC294</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283902612</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAXccEAF3HQABdx4XAXcfkAEnHCABJx0AASce\n\t\t\t\t\toAEnH5ACFxwwAhcdEAIXHiECFx8A\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>13</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>Andres ZeroCross - ALC294 ASUS ZenBook Flip 14 UX461UA</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283902612</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tASccIAEnHQEBJx6gAScfkAF3HBABdx0BAXce\n\t\t\t\t\tFwF3H5ABlxxAAZcdEAGXHoEBlx8EAhccMAIX\n\t\t\t\t\tHRACFx4hAhcfBAF3DAICFwwC\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>21</integer>\n\t\t\t\t\t<key>WakeConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAXcMAgIXDAI=\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>WakeVerbReinit</key>\n\t\t\t\t\t<true/>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>Damon - Realtek ALC 295 for HP Envy x360 15-bp107tx</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283902613</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tASccMAEnHQEBJx6mAScfkAE3HPABNx0AATce\n\t\t\t\t\tAAE3H0ABRxzwAUcdAAFHHgABRx9AAUcMAgFn\n\t\t\t\t\tHPABZx0AAWceAAFnH0ABdxwQAXcdAQF3HhcB\n\t\t\t\t\tdx+QAYcc8AGHHQABhx4BAYcfQAGXHEABlx0Q\n\t\t\t\t\tAZcegQGXHwIBpxzwAacdAAGnHgABpx9AAbcc\n\t\t\t\t\t8AG3HQABtx4AAbcfQAG3DAIB1xzwAdcdAAHX\n\t\t\t\t\tHgAB1x9AAecc8AHnHQAB5x4BAecfQAIXHCAC\n\t\t\t\t\tFx0QAhceIQIXHwICFwwC\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>WakeConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUcMAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>WakeVerbReinit</key>\n\t\t\t\t\t<true/>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>Mirone - Realtek ALC295/ALC3254</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283902613</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tASccEAEnHQABJx6mAScfmQF3HCABdx0AAXce\n\t\t\t\t\tFwF3H5kBlxwwAZcdEAGXHoEBlx8CAhccQAIX\n\t\t\t\t\tHRACFx4hAhcfAgF3DAIBRwwCAhcMAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>3</integer>\n\t\t\t\t\t<key>WakeConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUcMAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>WakeVerbReinit</key>\n\t\t\t\t\t<true/>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>DalianSky - Realtek ALC295/ALC3254 Dell7570</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283902613</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tASccIAEnHQEBJx6mAScfkAE3HPABNx0AATce\n\t\t\t\t\tAAE3H0ABRxxAAUcdAQFHHhcBRx+QAUcMAgFn\n\t\t\t\t\tHPABZx0AAWceAAFnH0ABdxzwAXcdAAF3HgAB\n\t\t\t\t\tdx9AAYcc8AGHHQABhx4AAYcfQAGXHBABlx0Q\n\t\t\t\t\tAZcegQGXHwIBpxzwAacdAAGnHgABpx9AAbcc\n\t\t\t\t\t8AG3HQABtx4AAbcfQAHXHPAB1x0AAdceAAHX\n\t\t\t\t\tH0AB5xzwAecdAAHnHgAB5x9AAhccMAIXHRAC\n\t\t\t\t\tFx4hAhcfAgIXDAI=\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>13</integer>\n\t\t\t\t\t<key>WakeConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUcMAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>WakeVerbReinit</key>\n\t\t\t\t\t<true/>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>InsanelyDeepak - Realtek ALC295 v2 Asus UX430UA</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283902613</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAXccEAF3HQABdx4XAXcfkAEnHCABJx0AASce\n\t\t\t\t\toAEnH5ACFxwwAhcdEAIXHiECFx8AAZccQAGX\n\t\t\t\t\tHRABlx6BAZcfAAIXDAI=\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>14</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>InsanelyDeepak - Realtek ALC295/ALC3254 </string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283902613</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUccEAFHHQABRx4XAUcfkAEnHCABJx0AASce\n\t\t\t\t\toAEnH5ACFxwwAhcdEAIXHiECFx8AAZccQAGX\n\t\t\t\t\tHRABlx6BAZcfAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>15</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>Andres - ALC295 Acer Nitro 5 Spin (NP515-51)</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283902613</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tASccIAEnHQEBJx6gAScfkAE3HPABNx0AATce\n\t\t\t\t\tAAE3H0ABRxwQAUcdAQFHHhcBRx+QAWcc8AFn\n\t\t\t\t\tHQABZx4AAWcfQAF3HPABdx0AAXceAAF3H0AB\n\t\t\t\t\thxzwAYcdAAGHHgABhx9AAZccMAGXHRABlx6B\n\t\t\t\t\tAZcfAgGnHPABpx0AAaceAAGnH0ABtxzwAbcd\n\t\t\t\t\tAAG3HgABtx9AAdcc8AHXHQAB1x4AAdcfQAHn\n\t\t\t\t\tHPAB5x0AAeceAAHnH0ACFxxAAhcdEAIXHiEC\n\t\t\t\t\tFx8CAUcMAgIXDAI=\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>21</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>vusun123 - ALC 295 for Skylake HP Pavilion</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283902613</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tASccMAEnHQABJx6gAScfuQFHHFABRx0AAUce\n\t\t\t\t\tFwFHH5ABRwwCAZccQAGXHRABlx6BAZcfAAIX\n\t\t\t\t\tHCACFx0QAhceIQIXHwA=\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>28</integer>\n\t\t\t\t\t<key>WakeConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUcMAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>WakeVerbReinit</key>\n\t\t\t\t\t<true/>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>Unbelievable9 - Realtek ALC295/ALC3254 for Dell Latitude 5290</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283902613</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tASccMAEnHQEBJx6mAScftwE3HPABNx0AATce\n\t\t\t\t\tAAE3H0ABRxwQAUcdAQFHHhcBRx+QAUcMAgFn\n\t\t\t\t\tHPABZx0AAWceAAFnH0ABdxzwAXcdAAF3HgAB\n\t\t\t\t\tdx9AAYcc8AGHHQABhx4AAYcfQAGXHHABlx0g\n\t\t\t\t\tAZceqwGXHwIBpxzwAacdAAGnHgABpx9AAbcc\n\t\t\t\t\t8AG3GwABtx4AAbcfQAHXHPAB1x0AAdceAAHX\n\t\t\t\t\tH0AB5xzwAecdAAHnHgAB5x9AAhccMAIXHRAC\n\t\t\t\t\tFx4rAhcfAgIXDAI=\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>77</integer>\n\t\t\t\t\t<key>WakeConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUcMAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>WakeVerbReinit</key>\n\t\t\t\t\t<true/>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>Mirone - Realtek ALC298 SP4 - ComboJack</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283902616</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tASccEAEnHQABJx6gAScfkAFHHCABRx0AAUce\n\t\t\t\t\tFwFHH5ABhxwwAYcdEAGHHoEBhx8CAhccQAIX\n\t\t\t\t\tHRACFx4hAhcfAgFHDAICFwwC\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>3</integer>\n\t\t\t\t\t<key>WakeConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUcMAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>WakeVerbReinit</key>\n\t\t\t\t\t<true/>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>Rockjesus - Realtek ALC298 for Alienware 17 ALC3266</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283902616</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tASccQAEnHQEBJx6mAScftwF3HBABdx0BAXce\n\t\t\t\t\tFwF3H5ABpxwwAacdEAGnHqEBpx8DAhccIAIX\n\t\t\t\t\tHRACFx4hAhcfAw==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>11</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>InsanelyDeepak - Realtek ALC298</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283902616</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAXccEAF3HQABdx4XAXcfkAEnHCABJx0AASce\n\t\t\t\t\toAEnH5ACFxwwAhcdEAIXHiECFx8CAYccQAGH\n\t\t\t\t\tHRABhx6BAYcfAgFHDAICFwwC\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>13</integer>\n\t\t\t\t\t<key>WakeConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUcMAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>WakeVerbReinit</key>\n\t\t\t\t\t<true/>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>Lenovo 720S-15IKB ALC298 by Andres ZeroCross</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283902616</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tASccMAEnHQEBJx6gAScfkAE3HPABNx0AATce\n\t\t\t\t\tAAE3H0ABRxzwAUcdAAFHHgABRx9AAXcc8AF3\n\t\t\t\t\tHQABdx4AAXcfQAGHHHABhx0QAYcegQGHHwAB\n\t\t\t\t\tlxzwAZcdAAGXHgABlx9AAaccUAGnHQEBpx4X\n\t\t\t\t\tAacfkAHXHPAB1x0AAdceAAHXH0AB5xzwAecd\n\t\t\t\t\tAAHnHgAB5x9AAfcc8AH3HQAB9x4AAfcfQAIX\n\t\t\t\t\tHCACFx0QAhceIQIXHwABpwwC\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>21</integer>\n\t\t\t\t\t<key>WakeConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAacMAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>WakeVerbReinit</key>\n\t\t\t\t\t<true/>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>Razer Blade 14 2017 by Andres ZeroCross</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283902616</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tASccMAEnHQEBJx6gAScfkAE3HPABNx0AATce\n\t\t\t\t\tAAE3H0ABRxwQAUcdAQFHHhcBRx+QAXcc8AF3\n\t\t\t\t\tHQABdx4AAXcfQAGHHEABhx0QAYcegQGHHwMB\n\t\t\t\t\tlxzwAZcdAAGXHgABlx9AAacc8AGnHQABpx4A\n\t\t\t\t\tAacfQAHXHPAB1x0AAdceAAHXH0AB5xzwAecd\n\t\t\t\t\tAAHnHgAB5x9AAfcc8AH3HQAB9x4AAfcfQAIX\n\t\t\t\t\tHCACFx0QAhceIQIXHwMBRwwC\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>22</integer>\n\t\t\t\t\t<key>WakeConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUcMAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>WakeVerbReinit</key>\n\t\t\t\t\t<true/>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>vusun123 - Realtek ALC298 for Dell XPS 9x50</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283902616</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tASccMAEnHQABJx6gAScfkAF3HEABdx0AAXce\n\t\t\t\t\tFwF3H5ABdwwCAhccIAIXHRACFx4hAhcfAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>28</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>vusun123 - Realtek ALC298 for Lenovo X270</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283902616</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAEcc8ABHHQAARx4AAEcfAABXHPAAVx0AAFce\n\t\t\t\t\tAABXHwAAdxzwAHcdAAB3HgAAdx8AAOcc8ADn\n\t\t\t\t\tHQAA5x4AAOcfAAD3HPAA9x0AAPceAAD3HwAB\n\t\t\t\t\tBxzwAQcdAAEHHgABBx8AASccQAEnHQEBJx6g\n\t\t\t\t\tAScfkAE3HPABNx0AATceAAE3HwABRxwQAUcd\n\t\t\t\t\tAQFHHhcBRx+QAUcMAgFXHPABVx0AAVceAAFX\n\t\t\t\t\tHwABZxzwAWcdAAFnHgABZx8AAXcc8AF3HQAB\n\t\t\t\t\tdx4AAXcfAAGHHDABhx0QAYcegQGHHwMBlxzw\n\t\t\t\t\tAZcdAAGXHgABlx8AAacc8AGnHQABpx4AAacf\n\t\t\t\t\tAAG3HPABtx0AAbceAAG3HwABxxzwAccdAAHH\n\t\t\t\t\tHgABxx8AAdcc8AHXHQAB1x4AAdcfAAHnHPAB\n\t\t\t\t\t5x0AAeceAAHnHwAB9xzwAfcdAAH3HgAB9x8A\n\t\t\t\t\tAgcc8AIHHQACBx4AAgcfAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>29</integer>\n\t\t\t\t\t<key>WakeConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUcMAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>WakeVerbReinit</key>\n\t\t\t\t\t<true/>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>Constanta - Realtek ALC298 for Xiaomi Mi Notebook Air 13.3 Fingerprint 2018</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283902616</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tASccMAEnHQABJx6gAScfkAF3HEABdx0AAXce\n\t\t\t\t\tFwF3H5ABdwwCAYcccAGHHRABhx6BAYcfAAIX\n\t\t\t\t\tHCACFx0QAhceIQIXHwA=\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>30</integer>\n\t\t\t\t\t<key>WakeConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAXcMAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>WakeVerbReinit</key>\n\t\t\t\t\t<true/>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>Daliansky - Realtek ALC298 ThinkPad T470p</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283902616</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tASccEAEnHQABJx6gAScfkAFHHCABRx0AAUce\n\t\t\t\t\tFwFHH5ABhxwwAYcdEAGHHoEBhx8CAhccQAIX\n\t\t\t\t\tHRACFx4hAhcfAgFHDAICFwwC\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>47</integer>\n\t\t\t\t\t<key>WakeConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUcMAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>WakeVerbReinit</key>\n\t\t\t\t\t<true/>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>lgs3137 - Realtek ALC298 MECHREVO S1</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283902616</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tASccMAEnHQEBJx6mAScfkAFHHEABRx0BAUce\n\t\t\t\t\tFwFHH5ABhxwQAYcdEAGHHqsBhx8CAhccIAIX\n\t\t\t\t\tHRACFx4rAhcfAgFHDAICFwwC\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>66</integer>\n\t\t\t\t\t<key>WakeConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUcMAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>WakeVerbReinit</key>\n\t\t\t\t\t<true/>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>Custom - Realtek ALC298 for Dell XPS 9560 by KNNSpeed</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283902616</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tASccEAEnHQEBJx6mAScfkAF3HCABdx0BAXce\n\t\t\t\t\tFwF3H5ABhxwwAYcdEAGHHqsBhx8DAaccQAGn\n\t\t\t\t\tHRABpx6LAacfAwIXHFACFx0QAhceKwIXHwMB\n\t\t\t\t\tRwwCAXcMAgGnDAICFwwC\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>72</integer>\n\t\t\t\t\t<key>WakeConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUcMAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>WakeVerbReinit</key>\n\t\t\t\t\t<true/>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>Daliansky - Realtek ALC298 XiaoMi Pro</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283902616</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tASccEAEnHQEBJx6gAScfkAE3HPABNx0AATce\n\t\t\t\t\tAAE3H0ABRxzwAUcdAAFHHgABRx9AAXccIAF3\n\t\t\t\t\tHQEBdx4XAXcfkAGHHDABhx0QAYcegQGHHwMB\n\t\t\t\t\tlxzwAZcdAAGXHgABlx9AAacc8AGnHQABpx4A\n\t\t\t\t\tAacfQAHXHPAB1x0AAdceAAHXH0AB5xzwAecd\n\t\t\t\t\tAAHnHgAB5x9AAfcc8AH3HQAB9x4AAfcfQAIX\n\t\t\t\t\tHEACFx0QAhceIQIXHwMBdwwC\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>99</integer>\n\t\t\t\t\t<key>WakeConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAXcMAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>WakeVerbReinit</key>\n\t\t\t\t\t<true/>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>Andres - ALC299 Acer Helios 500</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283902617</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tASccQAEnHQEBJx6gAScfkAFHHBABRx0BAUce\n\t\t\t\t\tFwFHH5ABlxwwAZcdEAGXHoEBlx8EAhccIAIX\n\t\t\t\t\tHRACFx4hAhcfBAFHDAICFwwC\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>21</integer>\n\t\t\t\t\t<key>WakeConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUcMAgIXDAI=\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>WakeVerbReinit</key>\n\t\t\t\t\t<true/>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>Andres - ALC299 Dell XPS13</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283902617</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tASccQAEnHQEBJx6gAScfkAF3HBABdx0BAXce\n\t\t\t\t\tFwF3H5ABlxwwAZcdEAGXHoEBlx8EAhccIAIX\n\t\t\t\t\tHRACFx4hAhcfBA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>22</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>Mirone - Realtek ALC662</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283903586</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUccEAFHHUABRx4RAUcfkAGHHCABhx2QAYce\n\t\t\t\t\toAGHH5AB5xwwAecdYQHnHksB5x8BAaccQAGn\n\t\t\t\t\tHTABpx6BAacfAQG3HFABtx1AAbceIQG3HwEB\n\t\t\t\t\tlxxgAZcdkAGXHoEBlx8C\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>5</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>Mirone - Realtek ALC662</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283903586</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUccEAFHHUABRx4RAUcfAQFXHCABVx0QAVce\n\t\t\t\t\tAQFXHwEBZxwwAWcdYAFnHgEBZx8BAXccQAF3\n\t\t\t\t\tHSABdx4BAXcfAQGHHFABhx2QAYceoAGHH5AB\n\t\t\t\t\tlxxgAZcdkAGXHoEBlx8CAacccAGnHTABpx6B\n\t\t\t\t\tAacfAQG3HIABtx1AAbceIQG3HwIB5xyQAecd\n\t\t\t\t\tYAHnHkUB5x8B\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>7</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>Custom ALC662 by Irving23 for Lenovo ThinkCentre M8400t-N000</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283903586</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tIUccECFHHUAhRx4RIUcfASGHHCAhhx2QIYce\n\t\t\t\t\toCGHH5AhlxxgIZcdkCGXHqEhlx8CIaccQCGn\n\t\t\t\t\tHTAhpx6BIacfASG3HFAhtx1AIbceISG3HwIh\n\t\t\t\t\t5xwwIecdYSHnHksh5x8B\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>11</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>Custom ALC662 by stich86 for Lenovo ThinkCentre M800</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283903586</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tIUccECFHHUAhRx4RIUcfASGHHCAhhx2QIYce\n\t\t\t\t\toCGHH5AhlxxgIZcdkCGXHqEhlx8CIaccQCGn\n\t\t\t\t\tHTAhpx6BIacfASG3HFAhtx1AIbceISG3HwIh\n\t\t\t\t\t5xwwIecdYSHnHksh5x8B\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>12</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>Custom ALC662 by Vandroiy for Asus X66Ic</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283903586</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUccMAFHHQEBRx4QAUcfkAG3HEABtx0AAbce\n\t\t\t\t\tIQG3HwEBlxwQAZcdAQGXHqABlx+QAYccIAGH\n\t\t\t\t\tHQABhx6BAYcfAQFXHPABVx0AAVceAAFXH0AB\n\t\t\t\t\tZxzwAWcdAAFnHgABZx9AAacc8AGnHQABpx4A\n\t\t\t\t\tAacfQAHHHPABxx0AAcceAAHHH0AB1xzwAdcd\n\t\t\t\t\tAAHXHgAB1x9AAecc8AHnHQAB5x4AAecfQAFH\n\t\t\t\t\tDAI=\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>13</integer>\n\t\t\t\t\t<key>WakeConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUcMAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>WakeVerbReinit</key>\n\t\t\t\t\t<true/>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>MacPeet - ALC662 for Acer Aspire A7600U All in One</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283903586</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAbccEAG3HUABtx4hAbcfAAG3DAIBRxwgAUcd\n\t\t\t\t\tAAFHHhcBRx+QAUcMAgGHHDABhx2QAYcegQGH\n\t\t\t\t\tHwABJxxAAScdAAEnHqYBJx+QAeccYAHnHWAB\n\t\t\t\t\t5x5LAecfAQ==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>15</integer>\n\t\t\t\t\t<key>WakeConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUcMAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>WakeVerbReinit</key>\n\t\t\t\t\t<true/>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>phucnguyen.2411 - ALC662v3 for Lenovo ThinkCentre M92P SFF</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283903586</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAZccEAGXHZEBlx6gAZcfkQFHHCABRx1AAUce\n\t\t\t\t\tIQFHHwEBVxwwAVcdQQFXHhEBVx8BAYccQAGH\n\t\t\t\t\tHZABhx6BAYcfAQG3HFABtx1AAbceIQG3HwIB\n\t\t\t\t\t5xxgAecdYAHnHksB5x8B\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>16</integer>\n\t\t\t\t\t<key>WakeConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUcMAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>WakeVerbReinit</key>\n\t\t\t\t\t<true/>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>Custom ALC662 by aloha_cn for HP Compaq Elite 8000 SFF</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283903586</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUccEAFHHUABRx4hAUcfAQFXHCABVx0AAVce\n\t\t\t\t\tEwFXH5ABtxwwAbcdEAG3HiEBtx8BAYccQAGH\n\t\t\t\t\tHTABhx6hAYcfkAGXHFABlx0QAZcegQGXHwI=\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>17</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>Mirone - Realtek ALC663</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283903587</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tASccEAEnHQABJx6gAScfkAFHHCABRx0AAUce\n\t\t\t\t\tEwFHH5ACFxwwAhcdEAIXHiECFx8CAUcMAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>3</integer>\n\t\t\t\t\t<key>WakeConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUcMAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>WakeVerbReinit</key>\n\t\t\t\t\t<true/>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>Mirone - Realtek ALC663_V2</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283903587</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUccEAFHHQABRx4TAUcfkAGHHCABhx0QAYce\n\t\t\t\t\tgQGHHwIBlxwwAZcdAAGXHqABlx+QAdccQAHX\n\t\t\t\t\tHYAB1x4FAdcfQAHnHFAB5x0QAeceRQHnHwAC\n\t\t\t\t\tFxxgAhcdEAIXHiECFx8BAUcMAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>4</integer>\n\t\t\t\t\t<key>WakeConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUcMAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>WakeVerbReinit</key>\n\t\t\t\t\t<true/>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>ALC663</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283903587</integer>\n\t\t\t\t\t<key>Comment</key>\n\t\t\t\t\t<string>Custom ALC663 for Asus N56/76 by m-dudarev</string>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAZccEAGXHQABlx6gAZcfkAGHHCABhx0QAYce\n\t\t\t\t\tgQGHHwIBRxwwAUcdAAFHHhABRx+QAUcMAgIX\n\t\t\t\t\tHEACFx0QAhceIQIXHwIBFxzwARcdAAEXHgAB\n\t\t\t\t\tFx9AAecc8AHnHQAB5x4AAecfQA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>28</integer>\n\t\t\t\t\t<key>WakeConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUcMAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>WakeVerbReinit</key>\n\t\t\t\t\t<true/>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>ALC663</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283903587</integer>\n\t\t\t\t\t<key>Comment</key>\n\t\t\t\t\t<string>Custom by alex1960 for ASUS N71J</string>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUccAAFHHQEBRx4TAUcfmQA3HBAANx0AADce\n\t\t\t\t\tVgA3HxgCFxwgAhcdQAIXHiECFx8BAbccMAG3\n\t\t\t\t\tHUABtx4hAbcfAQHnHEAB5x0BAeceQwHnH5kB\n\t\t\t\t\thxxQAYcdCQGHHqMBhx+ZAZccYAGXHZwBlx6B\n\t\t\t\t\tAZcfAQF3HPABdx0BAXceEwF3H5k=\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>99</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>InsanelyDeepak - Realtek ALC665</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283903589</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tASccEAEnHQEBJx6gAScfmQGnHCABpx0QAace\n\t\t\t\t\tgQGnH5MBVxxAAVcdAQFXHhMBVx+ZAZccUAGX\n\t\t\t\t\tHRABlx4hAZcfAwG3HGABtx0QAbceIQG3HwMB\n\t\t\t\t\t5xxwAecdEAHnHkUB5x8D\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>12</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>InsanelyDeepak - Realtek ALC665</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283903589</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tASccUAEnHQABJx6gAScfkAFXHBABVx0AAVce\n\t\t\t\t\tEwFXH5ABVwwCAZccIAGXHRABlx4hAZcfAAGn\n\t\t\t\t\tHEABpx0QAacegQGnHwABtxxgAbcdEAG3HiEB\n\t\t\t\t\ttx8AAdcc8AHXHQAB1x6DAdcfUA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>13</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283903592</integer>\n\t\t\t\t\t<key>Comment</key>\n\t\t\t\t\t<string>ALC668 Mirone Laptop Patch</string>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tABJxwQAScdAAEnHqABJx+QAUccIAFHHQABRx\n\t\t\t\t\t4XAUcfkAFXHDABVx0QAVceIQFXHwEBZxxAAW\n\t\t\t\t\tcdAAFnHgABZx9AAbccUAG3HRABtx6BAbcfAg\n\t\t\t\t\tHXHGAB1x0AAdcewAHXH0ABRwwA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>3</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283903592</integer>\n\t\t\t\t\t<key>Comment</key>\n\t\t\t\t\t<string>Custom ALC668 by lazzy for laptop ASUS G551JM</string>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tASccMAEnHQABJx6gAScfkAFHHBABRx0AAUce\n\t\t\t\t\tFwFHH5ABVxwgAVcdEAFXHiEBVx8AAbccQAG3\n\t\t\t\t\tHRABtx6BAbcfAAFHDAI=\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>20</integer>\n\t\t\t\t\t<key>WakeConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUcMAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>WakeVerbReinit</key>\n\t\t\t\t\t<true/>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283903592</integer>\n\t\t\t\t\t<key>Comment</key>\n\t\t\t\t\t<string>ALC668 syscl Laptop Patch (DELL Precision M3800)</string>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tASccAQEnHQEBJx6gAScfkAFHHAIBRx0BAUce\n\t\t\t\t\tFwFHH5ABRwwCAVccAwFXHRABVx4rAVcfAwFX\n\t\t\t\t\tDAIBZxzwAWcdAAFnHgABZx9AAYcc8AGHHQAB\n\t\t\t\t\thx4AAYcfQAGXHPABlx0AAZceAAGXH0ABpxzw\n\t\t\t\t\tAacdAAGnHgABpx9AAbccBAG3HRABtx6LAbcf\n\t\t\t\t\tAwHXHPAB1x0AAdceAAHXH0AB5xzwAecdAAHn\n\t\t\t\t\tHgAB5x9AAfcc8AH3HQAB9x4AAfcfQAIFAAEC\n\t\t\t\t\tBL6+AgUAAgIEqqoCBQADAgQAAAIFAAQCBAGA\n\t\t\t\t\tAgUABgIEAAACBQAHAgQPgAIFAAgCBAAxAgUA\n\t\t\t\t\tCgIEAGACBQALAgQAAAIFAAwCBHz3AgUADQIE\n\t\t\t\t\tEIACBQAOAgR/fwIFAA8CBMzMAgUAEAIE3cwC\n\t\t\t\t\tBQARAgQAAQIFABMCBAAAAgUAFAIEKqACBQAX\n\t\t\t\t\tAgSpQAIFABkCBAAAAgUAGgIEAAACBQAbAgQA\n\t\t\t\t\tAAIFABwCBAAAAgUAHQIEAAACBQAeAgR0GAIF\n\t\t\t\t\tAB8CBAgEAgUAIAIEQgACBQAhAgQEaAIFACIC\n\t\t\t\t\tBIzMAgUAIwIEAlACBQAkAgR0GAIFACcCBAAA\n\t\t\t\t\tAgUAKAIEjMwCBQAqAgT/AAIFACsCBIAAAgUA\n\t\t\t\t\tpwIE/wACBQCoAgSAAAIFAKoCBC4XAgUAqwIE\n\t\t\t\t\toMACBQCsAgQAAAIFAK0CBAAAAgUArgIEKsYC\n\t\t\t\t\tBQCvAgSkgAIFALACBAAAAgUAsQIEAAACBQCy\n\t\t\t\t\tAgQAAAIFALMCBAAAAgUAtAIEAAACBQC1AgQQ\n\t\t\t\t\tQAIFALYCBNaXAgUAtwIEkCsCBQC4AgTWlwIF\n\t\t\t\t\tALkCBJArAgUAugIEuLoCBQC7AgSqqwIFALwC\n\t\t\t\t\tBKqvAgUAvQIEaqoCBQC+AgQcAgIFAMACBAD/\n\t\t\t\t\tAgUAwQIED6Y=\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>27</integer>\n\t\t\t\t\t<key>WakeConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUcMAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>WakeVerbReinit</key>\n\t\t\t\t\t<true/>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283903592</integer>\n\t\t\t\t\t<key>Comment</key>\n\t\t\t\t\t<string>ALC668 Mirone Laptop Patch (Asus N750Jk)</string>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tABJxwQAScdAAEnHqABJx+QAUccIAFHHQABRx\n\t\t\t\t\t4XAUcfkAFXHDABVx0QAVceIQFXHwEBZxxAAW\n\t\t\t\t\tcdAAFnHgABZx9AAbccUAG3HRABtx6BAbcfAg\n\t\t\t\t\tHXHGAB1x0AAdcewAHXH0ABRwwA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>28</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283903592</integer>\n\t\t\t\t\t<key>Comment</key>\n\t\t\t\t\t<string>ALC668 Custom (Asus N750JV)</string>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tASccAAEnHQEBJx6mAScfkAFHHBABRx0BAUce\n\t\t\t\t\tFwFHH5ABVxwfAVcdEAFXHiEBVx8DAWcc8AFn\n\t\t\t\t\tHQABZx4AAWcfQAGHHPABhx0AAYceAAGHH0AB\n\t\t\t\t\tlxzwAZcdAAGXHgABlx9AAacc8AGnHQABpx4A\n\t\t\t\t\tAacfQAG3HDABtx0QAbcegQG3HwMB1xzwAdcd\n\t\t\t\t\tAAHXHgAB1x9AAecc8AHnHQAB5x4AAecfQAH3\n\t\t\t\t\tHPAB9x0AAfceAAH3H0ABRwwCAVcMAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>29</integer>\n\t\t\t\t\t<key>WakeConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUcMAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>WakeVerbReinit</key>\n\t\t\t\t\t<true/>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283903600</integer>\n\t\t\t\t\t<key>Comment</key>\n\t\t\t\t\t<string>Custom ALC670 by Alex Auditore</string>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAbccQAG3HRABtx4rAbcfAQFXHDABVx0BAVce\n\t\t\t\t\tEwFXH5ABJxwQAScdAQEnHqABJx+QAaccUAGn\n\t\t\t\t\tHTEBpx6BAacfAQGXHCABlx2QAZcegQGXHwEB\n\t\t\t\t\t5xxgAecdEQHnHksB5x8BARcc8AEXHQABFx4A\n\t\t\t\t\tARcfQAE3HPABNx0AATceAAE3H0ABRxzwAUcd\n\t\t\t\t\tAAFHHgABRx9AAWcc8AFnHQABZx4AAWcfQAF3\n\t\t\t\t\tHPABdx0AAXceAAF3H0ABhxzwAYcdAAGHHgAB\n\t\t\t\t\thx9AAdcc8AHXHQAB1x4AAdcfQAIXHPACFx0A\n\t\t\t\t\tAhceAAIXH0A=\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>12</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283903601</integer>\n\t\t\t\t\t<key>Comment</key>\n\t\t\t\t\t<string>MacPeet - ALC671 for Fujitsu-Siemens D3433-S (Q170 chip)</string>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAYccIAGHHTABhx6BAYcfAQIXHDACFx1AAhce\n\t\t\t\t\tAQIXHwECFwwC\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>12</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283903601</integer>\n\t\t\t\t\t<key>Comment</key>\n\t\t\t\t\t<string>MacPeet - ALC671 for Fujitsu  Esprimo C720</string>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tIXccECF3HQAhdx4TIXcfkCFHHCAhRx0QIUce\n\t\t\t\t\tISFHHwIhRwwCIhccMCIXHUAiFx4RIhcfkSIX\n\t\t\t\t\tDAIhlxxQIZcdECGXHoEhlx8CIYccYCGHHTAh\n\t\t\t\t\thx6BIYcfAQ==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>15</integer>\n\t\t\t\t\t<key>WakeConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tIhcMAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>WakeVerbReinit</key>\n\t\t\t\t\t<true/>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>Mirone - Realtek ALC882</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283904130</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUccEAFHHUABRx4RAUcfAQGHHFABhx2QAYce\n\t\t\t\t\toAGHH5ABlxxgAZcdkAGXHoEBlx8CAacccAGn\n\t\t\t\t\tHTABpx6BAacfAQG3HIABtx1AAbceIQG3HwEB\n\t\t\t\t\t5xyQAecd4AHnHkUB5x8B\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>5</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>Mirone - Realtek ALC882</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283904130</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUccEAFHHUABRx4RAUcfAQFXHCABVx0QAVce\n\t\t\t\t\tAQFXHwEBZxwwAWcdYAFnHgEBZx8BAXccQAF3\n\t\t\t\t\tHSABdx4BAXcfAQGHHFABhx2QAYceoAGHH5AB\n\t\t\t\t\tlxxgAZcdkAGXHoEBlx8CAacccAGnHTABpx6B\n\t\t\t\t\tAacfAQG3HIABtx1AAbceIQG3HwIB5xyQAecd\n\t\t\t\t\tYAHnHkUB5x8B\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>7</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>ALC883</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283904131</integer>\n\t\t\t\t\t<key>Comment</key>\n\t\t\t\t\t<string>Mirone - Realtek ALC883 by Andrey1970</string>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUccEAFHHUABRx4RAUcfAQFXHCABVx0QAVce\n\t\t\t\t\tAQFXHwEBZxwwAWcdYAFnHgEBZx8BAXccQAF3\n\t\t\t\t\tHSABdx4BAXcfAQGHHFABhx2QAYceoAGHH5AB\n\t\t\t\t\tlxxgAZcdkAGXHoEBlx8CAacccAGnHTABpx6B\n\t\t\t\t\tAacfAQG3HIABtx1AAbceIQG3HwIB5xyQAecd\n\t\t\t\t\tYAHnHkUB5x8B\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>7</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283904133</integer>\n\t\t\t\t\t<key>Comment</key>\n\t\t\t\t\t<string>toleda ALC885</string>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tIUccECFHHUAhRx4RIUcfASFXHCAhVx0QIVce\n\t\t\t\t\tASFXHwEhZxwwIWcdYCFnHgEhZx8BIXcc8CF3\n\t\t\t\t\tHQAhdx4AIXcfQCGHHEAhhx2QIYceoCGHH5Ah\n\t\t\t\t\tlxxgIZcdkCGXHoEhlx8CIaccUCGnHTAhpx6B\n\t\t\t\t\tIacfASG3HHAhtx1AIbceISG3HwIh5xyQIecd\n\t\t\t\t\tYSHnHksh5x8BIfccoCH3HQEh9x7LIfcfASEX\n\t\t\t\t\tHPAhFx0AIRceACEXH0A=\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>ALC885</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283904133</integer>\n\t\t\t\t\t<key>Comment</key>\n\t\t\t\t\t<string>Custom ALC885 by alex1960</string>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tIUccECFHHUAhRx4RIUcfASFXHCAhVx0QIVce\n\t\t\t\t\tASFXHwEhZxwwIWcdYCFnHgEhZx8BIXcc8CF3\n\t\t\t\t\tHQAhdx4AIXcfQCGHHEAhhx2QIYceoCGHH5Ah\n\t\t\t\t\tlxxgIZcdkCGXHoEhlx8CIaccUCGnHTAhpx6B\n\t\t\t\t\tIacfASG3HHAhtx1AIbceISG3HwIh5xyQIecd\n\t\t\t\t\tYSHnHksh5x8BIfccoCH3HQEh9x7LIfcfASEX\n\t\t\t\t\tHPAhFx0AIRceACEXH0A=\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>12</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>ALC885</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283904133</integer>\n\t\t\t\t\t<key>Comment</key>\n\t\t\t\t\t<string>MacPeet - ALC885 for GA-G33M-DS2R</string>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tIUccECFHHUAhRx4RIUcfkSFXHCAhVx0QIVce\n\t\t\t\t\tASFXHwEhZxwwIWcdYCFnHgEhZx8BIYccQCGH\n\t\t\t\t\tHZAhhx6gIYcfkCGnHFAhpx0wIacegSGnHwEh\n\t\t\t\t\tlxxgIZcdkCGXHoEhlx8CIbcccCG3HUAhtx4h\n\t\t\t\t\tIbcfAiHnHJAh5x1hIeceSyHnHwEh9xygIfcd\n\t\t\t\t\tASH3Hssh9x8B\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>15</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283904135</integer>\n\t\t\t\t\t<key>Comment</key>\n\t\t\t\t\t<string>Toleda ALC887</string>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tIUccECFHHUAhRx4RIUcfkCFHDAIhVxwgIVcd\n\t\t\t\t\tECFXHgEhVx8BIWccMCFnHWAhZx4BIWcfASF3\n\t\t\t\t\tHPAhdx0AIXceACF3H0AhhxxAIYcdkCGHHqAh\n\t\t\t\t\thx+QIZccYCGXHZAhlx6BIZcfAiGnHFAhpx0w\n\t\t\t\t\tIacegSGnHwEhtxxwIbcdQCG3HiEhtx8CIbcM\n\t\t\t\t\tAiHnHJAh5x1hIeceSyHnHwEh9xzwIfcdACH3\n\t\t\t\t\tHgAh9x9AIRcc8CEXHQAhFx4AIRcfQA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>WakeConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUcMAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>WakeVerbReinit</key>\n\t\t\t\t\t<true/>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283904135</integer>\n\t\t\t\t\t<key>Comment</key>\n\t\t\t\t\t<string>Toleda ALC887</string>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tIUccECFHHUAhRx4RIUcfkCFHDAIhVxzwIVcd\n\t\t\t\t\tACFXHgAhVx9AIWcc8CFnHQAhZx4AIWcfQCF3\n\t\t\t\t\tHPAhdx0AIXceACF3H0AhhxxAIYcdYCGHHgEh\n\t\t\t\t\thx8BIZccYCGXHZAhlx6gIZcfkCGnHFAhpx0Q\n\t\t\t\t\tIaceASGnHwEhtxxwIbcdQCG3HiEhtx8CIbcM\n\t\t\t\t\tAiHnHJAh5x1hIeceSyHnHwEh9xzwIfcdACH3\n\t\t\t\t\tHgAh9x9AIRcc8CEXHQAhFx4AIRcfQA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>2</integer>\n\t\t\t\t\t<key>WakeConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUcMAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>WakeVerbReinit</key>\n\t\t\t\t\t<true/>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283904135</integer>\n\t\t\t\t\t<key>Comment</key>\n\t\t\t\t\t<string>Toleda ALC887</string>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tIUccECFHHUAhRx4RIUcfkCFHDAIhVxwgIVcd\n\t\t\t\t\tECFXHgEhVx9AIWcc8CFnHQAhZx4AIWcfQCF3\n\t\t\t\t\tHPAhdx0AIXceACF3H0AhhxxAIYcdkCGHHqAh\n\t\t\t\t\thx+QIZccYCGXHZAhlx6BIZcfAiGnHFAhpx0w\n\t\t\t\t\tIacegSGnHwEhtxxwIbcdQCG3HiEhtx8CIbcM\n\t\t\t\t\tAiHnHJAh5x1hIeceSyHnHwEh9xzwIfcdACH3\n\t\t\t\t\tHgAh9x9AIRcc8CEXHQAhFx4AIRcfQA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>3</integer>\n\t\t\t\t\t<key>WakeConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUcMAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>WakeVerbReinit</key>\n\t\t\t\t\t<true/>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>Mirone - Realtek ALC887-VD</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283904135</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUccEAFHHUABRx4RAUcfAQGHHFABhx2QAYce\n\t\t\t\t\toAGHH5ABlxxgAZcdkAGXHoEBlx8CAacccAGn\n\t\t\t\t\tHTABpx6BAacfAQG3HIABtx1AAbceIQG3HwIB\n\t\t\t\t\t5xyQAecdYAHnHkUB5x8BAUcMAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>5</integer>\n\t\t\t\t\t<key>WakeConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUcMAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>WakeVerbReinit</key>\n\t\t\t\t\t<true/>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>Mirone - Realtek ALC887-VD</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283904135</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUccEAFHHUABRx4RAUcfAQFXHCABVx0QAVce\n\t\t\t\t\tAQFXHwEBZxwwAWcdYAFnHgEBZx8BAXccQAF3\n\t\t\t\t\tHSABdx4BAXcfAQGHHFABhx2QAYceoAGHH5AB\n\t\t\t\t\tlxxgAZcdkAGXHoEBlx8CAacccAGnHTABpx6B\n\t\t\t\t\tAacfAQG3HIABtx1AAbceIQG3HwIB5xyQAecd\n\t\t\t\t\tYAHnHkUB5x8BAUcMAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>7</integer>\n\t\t\t\t\t<key>WakeConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUcMAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>WakeVerbReinit</key>\n\t\t\t\t\t<true/>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>InsanelyDeepak - Realtek ALC887-VD</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283904135</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUccEAFHHUABRx4RAUcfkQFHDAIBtxwgAbcd\n\t\t\t\t\tQAG3HiEBtx8CAbcMAgGHHDABhx2QAYceoQGH\n\t\t\t\t\tH5EBlxxAAZcdkQGXHoEBlx+SAUcMAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>11</integer>\n\t\t\t\t\t<key>WakeConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUcMAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>WakeVerbReinit</key>\n\t\t\t\t\t<true/>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>InsanelyDeepak - Realtek ALC887-VD</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283904135</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAbccAAG3HUABtx4hAbcfAQGHHBABhx2QAYce\n\t\t\t\t\toAGHH5EBlxwgAZcdkAGXHoEBlx8BAUccMAFH\n\t\t\t\t\tHUABRx4RAUcfkQGnHEABpx0wAacegQGnHwEB\n\t\t\t\t\t5xxQAecdYQHnHksB5x8BAUcMAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>13</integer>\n\t\t\t\t\t<key>WakeConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUcMAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>WakeVerbReinit</key>\n\t\t\t\t\t<true/>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>InsanelyDeepak - Realtek ALC887-VD</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283904135</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tIUccECFHHUAhRx4RIUcfkCFXHCAhVx0QIVce\n\t\t\t\t\tASFXHwEhhxxAIYcdkCGHHqAhhx+QIaccUCGn\n\t\t\t\t\tHTAhpx6BIacfASGXHGAhlx2QIZcegSGXHwIh\n\t\t\t\t\ttxxwIbcdQCG3HiEhtx8CIecckCHnHWEh5x5L\n\t\t\t\t\tIecfAQ==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>17</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>InsanelyDeepak - Realtek ALC887-VD</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283904135</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tIUccECFHHUAhRx4RIUcfkSFHDAIhhxxAIYcd\n\t\t\t\t\tYCGHHgEhhx8BIaccUCGnHRAhpx4BIacfASGX\n\t\t\t\t\tHGAhlx2QIZceoSGXH5EhtxxwIbcdQCG3HiEh\n\t\t\t\t\ttx8CIecckCHnHWEh5x5LIecfAQ==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>18</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>Realtek ALC887-VD AD0 for Asus Z97M-PLUS/BR by maiconjs</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283904135</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUccAAFHHUABRx4BAUcfAQFnHBABZx1gAWce\n\t\t\t\t\tAQFnHwEBVxwgAVcdEAFXHgEBVx8BAXccMAF3\n\t\t\t\t\tHSABdx4BAXcfAQG3HEABtx1AAbceIQG3HwIB\n\t\t\t\t\tFxxQARcdAQEXHkYBFx+ZAYccYAGHHZABhx6g\n\t\t\t\t\tAYcfkAGnHHABpx0wAacegQGnHwEBlxyAAZcd\n\t\t\t\t\tkAGXHoEBlx8CAUcMAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>20</integer>\n\t\t\t\t\t<key>WakeConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUcMAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>WakeVerbReinit</key>\n\t\t\t\t\t<true/>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283904135</integer>\n\t\t\t\t\t<key>Comment</key>\n\t\t\t\t\t<string>Custom by klblk ALC887 for GA-Q87TN</string>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tIRcc8CEXHQAhFx4AIRcfQCEnHPAhJx0AISce\n\t\t\t\t\tACEnH0AhRxzwIUcdACFHHgAhRx9AIVcc8CFX\n\t\t\t\t\tHQAhVx4AIVcfQCFnHPAhZx0AIWceACFnH0Ah\n\t\t\t\t\tdxzwIXcdACF3HgAhdx9AIYcccCGHHZAhhx6B\n\t\t\t\t\tIYcfASGXHPAhlx0AIZceACGXH0AhpxwgIacd\n\t\t\t\t\tQCGnHgEhpx8BIbcc8CG3HQAhtx4AIbcfQCHH\n\t\t\t\t\tHPAhxx0AIcceACHHH0Ah1xzwIdcdACHXHgAh\n\t\t\t\t\t1x9AIecc8CHnHQAh5x4AIecfQCH3HPAh9x0A\n\t\t\t\t\tIfceACH3H0A=\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>33</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>Realtek ALC887-VD for Asus B85-ME by maiconjs</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283904135</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUccAAFHHUABRx4BAUcfAQG3HBABtx1AAbce\n\t\t\t\t\tIQG3HwIBhxwgAYcdkAGHHqABhx+QAaccMAGn\n\t\t\t\t\tHTABpx6BAacfAQGXHEABlx2QAZcegQGXHwIB\n\t\t\t\t\tRwwC\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>40</integer>\n\t\t\t\t\t<key>WakeConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUcMAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>WakeVerbReinit</key>\n\t\t\t\t\t<true/>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283904135</integer>\n\t\t\t\t\t<key>Comment</key>\n\t\t\t\t\t<string>0th3r ALC887 for PRIME B250-PLUS</string>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUccEAFHHUABRx4BAUcfAQG3HCABtx1BAbce\n\t\t\t\t\tIQG3HwIBhxxAAYcdkAGHHoEBhx8BAZccUAGX\n\t\t\t\t\tHZEBlx6BAZcfAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>50</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283904135</integer>\n\t\t\t\t\t<key>Comment</key>\n\t\t\t\t\t<string>ALC887 for Asus PRIME Z270-P (full Rear and Front, non auto-switch) by ctich</string>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUccEAFHHUABRx4BAUcfAQFHDAIBtxwgAbcd\n\t\t\t\t\tQAG3HiEBtx8CAbcMAgEXHDABFx0BARceRgEX\n\t\t\t\t\tH5ABhxxAAYcdkAGHHqABhx+RAaccTwGnHTAB\n\t\t\t\t\tpx6BAacfAQGXHFABlx2RAZcegQGXHwI=\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>52</integer>\n\t\t\t\t\t<key>WakeConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUcMAgG3DAI=\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>WakeVerbReinit</key>\n\t\t\t\t\t<true/>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283904135</integer>\n\t\t\t\t\t<key>Comment</key>\n\t\t\t\t\t<string>ALC887 for Asus PRIME Z270-P (Rear LineOut1, Mic - LineOut2, LineIn - LineOut3 - 5.1 and Front, non auto-switch) by ctich</string>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUccEAFHHUABRx4BAUcfAQFHDAIBhxwQAYcd\n\t\t\t\t\tYAGHHgEBhx8BAaccEAGnHRABpx4BAacfAQG3\n\t\t\t\t\tHCABtx1AAbceIQG3HwIBtwwCARccMAEXHQEB\n\t\t\t\t\tFx5GARcfkAGXHFABlx2RAZcegQGXHwI=\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>53</integer>\n\t\t\t\t\t<key>WakeConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUcMAgG3DAI=\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>WakeVerbReinit</key>\n\t\t\t\t\t<true/>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>Realtek ALC887-VD GA-Z97 HD3 ver2.1 by varrtix</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283904135</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tIRccYCEXHQEhFx5DIRcfmSEnHPAhJx0AISce\n\t\t\t\t\tACEnH0AhRxyAIUcdQCFHHhEhRx8BIUcMAiFX\n\t\t\t\t\tHIIhVx0QIVceASFXHwEhZxyBIWcdYCFnHgEh\n\t\t\t\t\tZx8BIXccgiF3HSAhdx4BIXcfASGHHHAhhx2Q\n\t\t\t\t\tIYceoSGHHwEhlxxwIZcdkCGXHqEhlx8CIacc\n\t\t\t\t\tICGnHTAhpx6BIacfASG3HFAhtx1AIbceISG3\n\t\t\t\t\tHwIhtwwCIccc8CHHHQAhxx4AIccfQCHXHPAh\n\t\t\t\t\t1x0AIdceACHXH0Ah5xzwIecdACHnHgAh5x9A\n\t\t\t\t\tIfcc8CH3HQAh9x4AIfcfQA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>87</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>Custom Realtek ALC887-VD by Constanta</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283904135</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tIUccECFHHUAhRx4RIUcfASGHHFAhhx2QIYce\n\t\t\t\t\toCGHH5AhlxxgIZcdkCGXHoEhlx8CIacccCGn\n\t\t\t\t\tHTAhpx6BIacfASG3HIAhtx1AIbceISG3HwIh\n\t\t\t\t\t5xyQIecdYCHnHkUh5x8B\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>99</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283904136</integer>\n\t\t\t\t\t<key>Comment</key>\n\t\t\t\t\t<string>toleda ALC888</string>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tIUccECFHHUAhRx4RIUcfkCFXHCAhVx0QIVce\n\t\t\t\t\tASFXHwEhZxwwIWcdYCFnHgEhZx8BIXcc8CF3\n\t\t\t\t\tHQAhdx4AIXcfQCGHHEAhhx2QIYceoCGHH5Ah\n\t\t\t\t\tlxxgIZcdkCGXHoEhlx8CIaccUCGnHTAhpx6B\n\t\t\t\t\tIacfASG3HHAhtx1AIbceISG3HwIh5xyQIecd\n\t\t\t\t\tYSHnHksh5x8BIfcc8CH3HQAh9x4AIfcfQCEX\n\t\t\t\t\tHPAhFx0AIRceACEXH0A=\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283904136</integer>\n\t\t\t\t\t<key>Comment</key>\n\t\t\t\t\t<string>toleda ALC888</string>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tIUccECFHHUAhRx4RIUcfkCFXHPAhVx0AIVce\n\t\t\t\t\tACFXH0AhZxzwIWcdACFnHgAhZx9AIXcc8CF3\n\t\t\t\t\tHQAhdx4AIXcfQCGHHEAhhx1gIYceASGHHwEh\n\t\t\t\t\tlxxgIZcdkCGXHqAhlx+QIaccUCGnHRAhpx4B\n\t\t\t\t\tIacfASG3HHAhtx1AIbceISG3HwIh5xyQIecd\n\t\t\t\t\tYSHnHksh5x8BIfcc8CH3HQAh9x4AIfcfQCEX\n\t\t\t\t\tHPAhFx0AIRceACEXH0A=\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>2</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283904136</integer>\n\t\t\t\t\t<key>Comment</key>\n\t\t\t\t\t<string>toleda ALC888</string>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tIUccECFHHUAhRx4RIUcfkCFXHCAhVx0QIVce\n\t\t\t\t\tASFXHwEhZxzwIWcdACFnHgAhZx9AIXcc8CF3\n\t\t\t\t\tHQAhdx4AIXcfQCGHHEAhhx2QIYceoCGHH5Ah\n\t\t\t\t\tlxxgIZcdkCGXHoEhlx8CIaccUCGnHTAhpx6B\n\t\t\t\t\tIacfASG3HHAhtx1AIbceISG3HwIh5xyQIecd\n\t\t\t\t\tYSHnHksh5x8BIfcc8CH3HQAh9x4AIfcfQCEX\n\t\t\t\t\tHPAhFx0AIRceACEXH0A=\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>3</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>Mirone - Realtek ALC888 for Laptop</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283904136</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tASccEAEnHQABJx6gAScfmQFHHCABRx1AAUce\n\t\t\t\t\tIQFHHwEBtxwwAbcdAQG3HhMBtx+ZAXccQAF3\n\t\t\t\t\tHSABdx4BAXcfAQGHHFABhx2QAYcegQGHHwEB\n\t\t\t\t\tpxxgAacdMAGnHoEBpx8BAecccAHnHUAB5x5F\n\t\t\t\t\tAecfAQFHDAI=\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>4</integer>\n\t\t\t\t\t<key>WakeConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUcMAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>WakeVerbReinit</key>\n\t\t\t\t\t<true/>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>Mirone - Realtek ALC888 3 ports (Pink, Green, Blue)</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283904136</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUccEAFHHUABRx4RAUcfAQGHHFABhx2QAYce\n\t\t\t\t\toAGHH5ABlxxgAZcdkAGXHoEBlx8CAacccAGn\n\t\t\t\t\tHTABpx6BAacfAQG3HIABtx1AAbceIQG3HwEB\n\t\t\t\t\t5xyQAecd4AHnHkUB5x8B\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>5</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>Mirone - Realtek ALC888 5/6 ports (Gray, Black, Orange, Pink, Green, Blue)</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283904136</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUccEAFHHUABRx4RAUcfAQFXHCABVx0QAVce\n\t\t\t\t\tAQFXHwEBZxwwAWcdYAFnHgEBZx8BAXccQAF3\n\t\t\t\t\tHSABdx4BAXcfAQGHHFABhx2QAYceoAGHH5AB\n\t\t\t\t\tlxxgAZcdkAGXHoEBlx8CAacccAGnHTABpx6B\n\t\t\t\t\tAacfAQG3HIABtx1AAbceIQG3HwIB5xyQAecd\n\t\t\t\t\tYAHnHkUB5x8B\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>7</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>ALC888S-VD Version1 for MedionP9614 by MacPeet</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283904136</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUccEAFHHRABRx4hAUcfAQFHDAIBhxwwAYcd\n\t\t\t\t\tEAGHHqEBhx8BASccQAEnHQABJx6jAScfkAF3\n\t\t\t\t\tHFABdx0AAXceEwF3H5ABpxxgAacdEAGnHoEB\n\t\t\t\t\tpx8BAecccAHnHRAB5x5FAecfAQ==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>11</integer>\n\t\t\t\t\t<key>WakeConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUcMAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>WakeVerbReinit</key>\n\t\t\t\t\t<true/>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>ALC888 for Acer Aspire 7738G by MacPeet</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283904136</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUccEAFHHQABRx4TAUcfkAFHDAIBJxxAAScd\n\t\t\t\t\tAAEnHqMBJx+QAVccUAFXHRABVx4hAVcfAAFX\n\t\t\t\t\tDAIBpxxgAacdMAGnHoEBpx8AAecccAHnHRAB\n\t\t\t\t\t5x5FAecfAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>27</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>ALC888S-VD Version2 for MedionE7216 by MacPeet</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283904136</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUccEAFHHQABRx4TAUcfkAFHDAIBdxwgAXcd\n\t\t\t\t\tAAF3HhMBdx+QAeccMAHnHRAB5x5EAecfAAGH\n\t\t\t\t\tHEABhx0QAYceoQGHHwABJxxQAScdAAEnHqMB\n\t\t\t\t\tJx+QAaccYAGnHRABpx6BAacfAAG3HHABtx0Q\n\t\t\t\t\tAbceIQG3HwA=\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>28</integer>\n\t\t\t\t\t<key>WakeConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUcMAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>WakeVerbReinit</key>\n\t\t\t\t\t<true/>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>ALC888S-VD Version3 for MedionP8610 by MacPeet</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283904136</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUccEAFHHQABRx4TAUcfkAFHDAIBdxwgAXcd\n\t\t\t\t\tEAF3HhMBdx+QAeccMAHnHRAB5x5FAecfAAGX\n\t\t\t\t\tHEABlx0AAZceowGXH5ABhxxQAYcdEAGHHoEB\n\t\t\t\t\thx8AAVccYAFXHRABVx4hAVcfAAFXDAI=\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>29</integer>\n\t\t\t\t\t<key>WakeConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUcMAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>WakeVerbReinit</key>\n\t\t\t\t\t<true/>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283904137</integer>\n\t\t\t\t\t<key>Comment</key>\n\t\t\t\t\t<string>ALC889, Toleda</string>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tIUccECFHHUAhRx4RIUcfkCFXHCAhVx0QIVce\n\t\t\t\t\tASFXHwEhZxwwIWcdYCFnHgEhZx8BIXcc8CF3\n\t\t\t\t\tHQAhdx4AIXcfQCGHHEAhhx2QIYceoCGHH5Ah\n\t\t\t\t\tlxxgIZcdkCGXHoEhlx8CIaccUCGnHTAhpx6B\n\t\t\t\t\tIacfASG3HHAhtx1AIbceISG3HwIh5xyQIecd\n\t\t\t\t\tYSHnHksh5x8BIfcc8CH3HQAh9x4AIfcfQCEX\n\t\t\t\t\tHPAhFx0AIRceACEXH0A=\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283904137</integer>\n\t\t\t\t\t<key>Comment</key>\n\t\t\t\t\t<string>ALC889, Toleda</string>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tIUccECFHHUAhRx4RIUcfkCFXHCAhVx0QIVce\n\t\t\t\t\tASFXHwEhZxwwIWcdYCFnHgEhZx8BIXcc8CF3\n\t\t\t\t\tHQAhdx4AIXcfQCGHHEAhhx2QIYceoCGHH5Ah\n\t\t\t\t\tlxxgIZcdkCGXHoEhlx8CIaccUCGnHTAhpx6B\n\t\t\t\t\tIacfASG3HHAhtx1AIbceISG3HwIh5xyQIecd\n\t\t\t\t\tYSHnHksh5x8BIfcc8CH3HQAh9x4AIfcfQCEX\n\t\t\t\t\tHPAhFx0AIRceACEXH0A=\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>2</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283904137</integer>\n\t\t\t\t\t<key>Comment</key>\n\t\t\t\t\t<string>ALC889, Toleda</string>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tIUccECFHHUAhRx4RIUcfkCFXHCAhVx0QIVce\n\t\t\t\t\tASFXHwEhZxwwIWcdYCFnHgEhZx8BIXcc8CF3\n\t\t\t\t\tASFXHwEhZxzwIWcdACFnHgAhZx9AIXcc8CF3\n\t\t\t\t\tlxxgIZcdkCGXHoEhlx8CIaccUCGnHTAhpx6B\n\t\t\t\t\tIacfASG3HHAhtx1AIbceISG3HwIh5xyQIecd\n\t\t\t\t\tYSHnHksh5x8BIfcc8CH3HQAh9x4AIfcfQCEX\n\t\t\t\t\tHPAhFx0AIRceACEXH0A=\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>3</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283904137</integer>\n\t\t\t\t\t<key>Comment</key>\n\t\t\t\t\t<string>MacPeet ALC889 Medion P4020 D</string>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUccEAFHHUABRx4hAUcfAQFHDAIBtxwgAbcd\n\t\t\t\t\tAAG3HhMBtx+QAeccMAHnHWAB5x5EAecfAQGX\n\t\t\t\t\tHFABlx0AAZceowGXH5ABpxxgAacdMAGnHoEB\n\t\t\t\t\tpx8B\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>11</integer>\n\t\t\t\t\t<key>WakeConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUcMAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>WakeVerbReinit</key>\n\t\t\t\t\t<true/>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283904137</integer>\n\t\t\t\t\t<key>Comment</key>\n\t\t\t\t\t<string>alc889, Custom by Sergey_Galan</string>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tIRcc8CEXHQAhFx4AIRcfQCEnHPAhJx0AISce\n\t\t\t\t\tACEnH0AhRxwwIUcdQSFHHhEhRx8BIVcc8CFX\n\t\t\t\t\tHQAhVx4AIVcfQCFnHPAhZx0AIWceACFnH0Ah\n\t\t\t\t\tdxzwIXcdACF3HgAhdx9AIYccECGHHZEhhx6g\n\t\t\t\t\tIYcfkCGXHCAhlx2QIZcegSGXHwEhpxzwIacd\n\t\t\t\t\tACGnHgAhpx9AIbccgCG3HUAhtx4hIbcfASHH\n\t\t\t\t\tHPAhxx0AIcceACHHH0Ah1xzwIdcdACHXHgAh\n\t\t\t\t\t1x9AIecckCHnHSEh5x5LIecfASH3HPAh9x0A\n\t\t\t\t\tIfceACH3H0A=\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>12</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>MacPeet - ALC891 for HP Pavilion Power 580-030ng</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283904103</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAXccIAF3HRABdx4hAXcfAgGHHDABhx2QAYce\n\t\t\t\t\tgQGHHwEBtxxAAbcdMAG3HoEBtx8BAhccYAIX\n\t\t\t\t\tHQACFx4RAhcfAAIXDAI=\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>11</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>InsanelyDeepak - Realtek ALC891</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283904103</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAXccEAF3HUABdx4hAXcfAQFnHDABZx0wAWce\n\t\t\t\t\tgQFnHwEBhxxAAYcdkAGHHqEBhx+RAaccYAGn\n\t\t\t\t\tHZABpx6BAacfAgHnHHAB5x0AAeceRgHnH5AC\n\t\t\t\t\tFxyAAhcdQAIXHhECFx8B\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>13</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283904146</integer>\n\t\t\t\t\t<key>Comment</key>\n\t\t\t\t\t<string>ALC892, Toleda</string>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tIUccECFHHUAhRx4RIUcfkCFHDAIhVxwgIVcd\n\t\t\t\t\tECFXHgEhVx8BIWccMCFnHWAhZx4BIWcfASF3\n\t\t\t\t\tHPAhdx0AIXceACF3H0AhhxxAIYcdkCGHHqAh\n\t\t\t\t\thx+QIZccYCGXHZAhlx6BIZcfAiGnHFAhpx0w\n\t\t\t\t\tIacegSGnHwEhtxxwIbcdQCG3HiEhtx8CIbcM\n\t\t\t\t\tAiHnHJAh5x1hIeceSyHnHwEh9xzwIfcdACH3\n\t\t\t\t\tHgAh9x9AIRcc8CEXHQAhFx4AIRcfQA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>WakeConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUcMAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>WakeVerbReinit</key>\n\t\t\t\t\t<true/>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283904146</integer>\n\t\t\t\t\t<key>Comment</key>\n\t\t\t\t\t<string>ALC892, Toleda</string>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tIUccECFHHUAhRx4RIUcfkCFHDAIhVxzwIVcd\n\t\t\t\t\tACFXHgAhVx9AIWcc8CFnHQAhZx4AIWcfQCF3\n\t\t\t\t\tHPAhdx0AIXceACF3H0AhhxxAIYcdYCGHHgEh\n\t\t\t\t\thx8BIZccYCGXHZAhlx6gIZcfkCGnHFAhpx0Q\n\t\t\t\t\tIaceASGnHwEhtxxwIbcdQCG3HiEhtx8CIbcM\n\t\t\t\t\tAiHnHJAh5x1hIeceSyHnHwEh9xzwIfcdACH3\n\t\t\t\t\tHgAh9x9AIRcc8CEXHQAhFx4AIRcfQA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>2</integer>\n\t\t\t\t\t<key>WakeConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUcMAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>WakeVerbReinit</key>\n\t\t\t\t\t<true/>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283904146</integer>\n\t\t\t\t\t<key>Comment</key>\n\t\t\t\t\t<string>ALC892, Toleda</string>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tIUccECFHHUAhRx4RIUcfkCFHDAIhVxwgIVcd\n\t\t\t\t\tECFXHgEhVx9AIWcc8CFnHQAhZx4AIWcfQCF3\n\t\t\t\t\tHPAhdx0AIXceACF3H0AhhxxAIYcdkCGHHqAh\n\t\t\t\t\thx+QIZccYCGXHZAhlx6BIZcfAiGnHFAhpx0w\n\t\t\t\t\tIacegSGnHwEhtxxwIbcdQCG3HiEhtx8CIbcM\n\t\t\t\t\tAiHnHJAh5x1hIeceSyHnHwEh9xzwIfcdACH3\n\t\t\t\t\tHgAh9x9AIRcc8CEXHQAhFx4AIRcfQA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>3</integer>\n\t\t\t\t\t<key>WakeConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUcMAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>WakeVerbReinit</key>\n\t\t\t\t\t<true/>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>Mirone - Realtek ALC892 for Laptop</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283904146</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tASccEAEnHZABJx6gAScfmQFHHCABRx1AAUce\n\t\t\t\t\tIQFHHwEBdxwwAXcdEAF3HgEBdx8BAYccQAGH\n\t\t\t\t\tHZABhx6BAYcfAQGnHFABpx0wAacegQGnHwEB\n\t\t\t\t\ttxxgAbcdQAG3HhMBtx+ZAecccAHnHWAB5x5F\n\t\t\t\t\tAecfAQG3DAI=\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>4</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283904146</integer>\n\t\t\t\t\t<key>Comment</key>\n\t\t\t\t\t<string>ALC892, Mirone</string>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUccEAFHHUABRx4RAUcfAQGHHFABhx2QAYce\n\t\t\t\t\toAGHH5ABlxxgAZcdkAGXHoEBlx8CAacccAGn\n\t\t\t\t\tHTABpx6BAacfAQG3HIABtx1AAbceIQG3HwEB\n\t\t\t\t\t5xyQAecd4AHnHkUB5x8B\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>5</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283904146</integer>\n\t\t\t\t\t<key>Comment</key>\n\t\t\t\t\t<string>ALC892, Mirone</string>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUccEAFHHUABRx4RAUcfAQFXHCABVx0QAVce\n\t\t\t\t\tAQFXHwEBZxwwAWcdYAFnHgEBZx8BAXccQAF3\n\t\t\t\t\tHSABdx4BAXcfAQGHHFABhx2QAYceoAGHH5AB\n\t\t\t\t\tlxxgAZcdkAGXHoEBlx8CAacccAGnHTABpx6B\n\t\t\t\t\tAacfAQG3HIABtx1AAbceIQG3HwIB5xyQAecd\n\t\t\t\t\tYAHnHkUB5x8B\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>7</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283904146</integer>\n\t\t\t\t\t<key>Comment</key>\n\t\t\t\t\t<string>MSI GP70/CR70 by Slava77</string>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAbceEQGXHqABlx+RAYcegQFHDAI=\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>12</integer>\n\t\t\t\t\t<key>WakeConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUcMAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>WakeVerbReinit</key>\n\t\t\t\t\t<true/>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283904146</integer>\n\t\t\t\t\t<key>Comment</key>\n\t\t\t\t\t<string>MacPeet - alc892 for MSi Z97S SLI Krait Edition</string>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUccEAFHHUABRx4RAUcfkQG3HCABRwwCAbcd\n\t\t\t\t\tQAG3HiEBtx8CAbcMAgGHHDABhx2QAYceoQGH\n\t\t\t\t\tH5EBVxxQAVcdEAFXHgEBVx8BAWccYAFnHWAB\n\t\t\t\t\tZx4BAWcfAQF3HHABdx0gAXceAQF3HwEBlxyA\n\t\t\t\t\tAZcdkAGXHoEBlx8CAacckAGnHTABpx6BAacf\n\t\t\t\t\tAQ==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>15</integer>\n\t\t\t\t\t<key>WakeConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUcMAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>WakeVerbReinit</key>\n\t\t\t\t\t<true/>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283904146</integer>\n\t\t\t\t\t<key>Comment</key>\n\t\t\t\t\t<string>MacPeet - alc892 for MSI GL73-8RD</string>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUccIAFHHXABRx4hAUcfAAFHDAIBVxwwAVcd\n\t\t\t\t\tAAFXHhcBVx+QAeccQAHnHXAB5x5FAecfAAEn\n\t\t\t\t\tHFABJx0AAScepgEnH5ABhxxgAYcdcAGHHoEB\n\t\t\t\t\thx8AAXcccAF3HQABdx4XAXcfkA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>16</integer>\n\t\t\t\t\t<key>WakeConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUcMAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>WakeVerbReinit</key>\n\t\t\t\t\t<true/>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283904146</integer>\n\t\t\t\t\t<key>Comment</key>\n\t\t\t\t\t<string>MacPeet - alc892 for MSI B150M MORTAR - SwitchMode</string>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUccEAFHHUABRx4RAUcfkAFHDAIBtxwgAbcd\n\t\t\t\t\tQAG3HiEBtx8CAbcMAgFXHDABVx0QAVceAQFX\n\t\t\t\t\tHwEBlxxQAZcdkAGXHoEBlx8CAWcccAFnHWAB\n\t\t\t\t\tZx4BAWcfAQGHHIABhx2QAYceoAGHH5ABpxyQ\n\t\t\t\t\tAacdMAGnHoEBpx8BAeccsAHnHRAB5x5FAecf\n\t\t\t\t\tAQ==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>17</integer>\n\t\t\t\t\t<key>WakeConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUcMAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>WakeVerbReinit</key>\n\t\t\t\t\t<true/>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283904146</integer>\n\t\t\t\t\t<key>Comment</key>\n\t\t\t\t\t<string>MacPeet - alc892 for MSI B150M MORTAR - ManualMode</string>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUccEAFHHUABRx4BAUcfAQFHDAIBtxwgAbcd\n\t\t\t\t\tQAG3HiEBtx8CAbcMAgFXHDABVx0QAVceAQFX\n\t\t\t\t\tHwEBlxxQAZcdkAGXHoEBlx8CAWcccAFnHWAB\n\t\t\t\t\tZx4BAWcfAQGHHIABhx2QAYceoAGHH5ABpxyQ\n\t\t\t\t\tAacdMAGnHoEBpx8BAeccsAHnHRAB5x5FAecf\n\t\t\t\t\tAQ==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>18</integer>\n\t\t\t\t\t<key>WakeConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUcMAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>WakeVerbReinit</key>\n\t\t\t\t\t<true/>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283904146</integer>\n\t\t\t\t\t<key>Comment</key>\n\t\t\t\t\t<string>ALC892 for Clevo P751DMG by Cryse Hillmes</string>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tASccEAEnHQEBJx6mAScfkAFHHEABRx0BAUce\n\t\t\t\t\tFwFHH5ABdxxgAXcdEAF3HgEBdx8BAYccgAGH\n\t\t\t\t\tHRABhx6BAYcfAQGnHCABpx0QAacegQGnHwEB\n\t\t\t\t\ttxxQAbcdEAG3HiEBtx8BAecccAHnHRAB5x5F\n\t\t\t\t\tAecfAQFHDAI=\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>28</integer>\n\t\t\t\t\t<key>WakeConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUcMAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>WakeVerbReinit</key>\n\t\t\t\t\t<true/>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283904146</integer>\n\t\t\t\t\t<key>Comment</key>\n\t\t\t\t\t<string>ALC892 for Clevo P65xSE/SA by Derek Zhu</string>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tASccEAEnHZEBJx6mAScfkAGHHCABhx1gAYce\n\t\t\t\t\tgQGHHwEBRxwwAUcdAQFHHhcBRx+QAbccQAG3\n\t\t\t\t\tHTABtx4hAbcfAQF3HFABdx1AAXceAQF3HwEB\n\t\t\t\t\t5xxgAecdYQHnHkUB5x8BALcccAC3HREAtx4W\n\t\t\t\t\tALcfkAFXHPABVx0AAVceAAFXHwQBZxzwAWcd\n\t\t\t\t\tAAFnHgABZx8EAZcc8AGXHQABlx4AAZcfBAGn\n\t\t\t\t\tHPABpx0AAaceAAGnHwQBxxzwAccdAAHHHgAB\n\t\t\t\t\txx8EAdcc8AHXHQAB1x4AAdcfBAH3HPAB9x0A\n\t\t\t\t\tAfceAAH3HwQBRwwCAbcMAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>31</integer>\n\t\t\t\t\t<key>WakeConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUcMAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>WakeVerbReinit</key>\n\t\t\t\t\t<true/>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283904146</integer>\n\t\t\t\t\t<key>Comment</key>\n\t\t\t\t\t<string>Custom ALC892 for GA-Z87-HD3 by BIM167</string>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tIRccUCEXHXEhFx5EIRcfASEnHPAhJx0AISce\n\t\t\t\t\tACEnH0AhRxwQIUcdQCFHHhEhRx+QIVccICFX\n\t\t\t\t\tHRAhVx4BIVcfASFnHDAhZx1gIWceASFnHwEh\n\t\t\t\t\tdxzwIXcdACF3HgAhdx9AIYccYCGHHZAhhx6g\n\t\t\t\t\tIYcfkCGXHIAhlx2QIZcegSGXHwIhpxxwIacd\n\t\t\t\t\tMCGnHoEhpx8BIbccQCG3HUAhtx4hIbcfAiHH\n\t\t\t\t\tHPAhxx0AIcceACHHH0Ah5xzwIecdACHnHgAh\n\t\t\t\t\t5x9AIfcckCH3HXEh9x7EIfcfAQ==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>92</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283904146</integer>\n\t\t\t\t\t<key>Comment</key>\n\t\t\t\t\t<string>Custom ALC892 for HASEE K770e i7 D1 by gitawake</string>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tARcc8AEXHQABFx4AARcfQAEnHGABJx0BASce\n\t\t\t\t\tpgEnH5ABRxwQAUcdAQFHHhcBRx+QAUcMAgFX\n\t\t\t\t\tHPABVx0AAVceAAFXH0ABZxzwAWcdAAFnHgAB\n\t\t\t\t\tZx9AAXccIAF3HRABdx4BAXcfAQGHHFABhx0Q\n\t\t\t\t\tAYcegQGHHwEBlxzwAZcdAAGXHgABlx9AAacc\n\t\t\t\t\tUAGnHRABpx6BAacfAQG3HDABtx0QAbceIQG3\n\t\t\t\t\tHwEBtwwCAccc8AHHHQABxx4AAccfQAHXHPAB\n\t\t\t\t\t1x0AAdceAAHXH0AB5xxAAecdEQHnHkUB5x8B\n\t\t\t\t\tAfcc8AH3HQAB9x4AAfcfQA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>97</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283904146</integer>\n\t\t\t\t\t<key>Comment</key>\n\t\t\t\t\t<string>ALC892 with working SPDIF</string>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUccEAFHHUABRx4RAUcfAQGHHFABhx2QAYce\n\t\t\t\t\toAGHH5ABlxxgAZcdkAGXHoEBlx8CAacccAGn\n\t\t\t\t\tHTABpx6BAacfAQG3HIABtx1AAbceIQG3HwEB\n\t\t\t\t\t5xyQAecd4AHnHkUB5x8B\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>98</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283904146</integer>\n\t\t\t\t\t<key>Comment</key>\n\t\t\t\t\t<string>Custom ALC892 DNS P150EM by Constanta</string>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUccEAFHHUABRx4RAUcfAQGHHHABhx2QAYce\n\t\t\t\t\tgQGHHwEBlxxgAZcdAQGXHqABlx+QAaccgAGn\n\t\t\t\t\tHTABpx6BAacfAQG3HCABtx1AAbceIQG3HwEB\n\t\t\t\t\t5xyQAecd4AHnHkUB5x8B\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>99</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283904153</integer>\n\t\t\t\t\t<key>Comment</key>\n\t\t\t\t\t<string>ALC898, Toleda</string>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tIUccECFHHUAhRx4RIUcfkCFHDAIhVxwgIVcd\n\t\t\t\t\tECFXHgEhVx8BIWccMCFnHWAhZx4BIWcfASF3\n\t\t\t\t\tHPAhdx0AIXceACF3H0AhhxxAIYcdkCGHHqAh\n\t\t\t\t\thx+QIZccYCGXHZAhlx6BIZcfAiGnHFAhpx0w\n\t\t\t\t\tIacegSGnHwEhtxxwIbcdQCG3HiEhtx8CIbcM\n\t\t\t\t\tAiHnHJAh5x1hIeceSyHnHwEh9xzwIfcdACH3\n\t\t\t\t\tHgAh9x9AIRcc8CEXHQAhFx4AIRcfQA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283904153</integer>\n\t\t\t\t\t<key>Comment</key>\n\t\t\t\t\t<string>ALC898, Toleda</string>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tIUccECFHHUAhRx4RIUcfkCFHDAIhVxzwIVcd\n\t\t\t\t\tACFXHgAhVx9AIWcc8CFnHQAhZx4AIWcfQCF3\n\t\t\t\t\tHPAhdx0AIXceACF3H0AhhxxAIYcdYCGHHgEh\n\t\t\t\t\thx8BIZccYCGXHZAhlx6gIZcfkCGnHFAhpx0Q\n\t\t\t\t\tIaceASGnHwEhtxxwIbcdQCG3HiEhtx8CIbcM\n\t\t\t\t\tAiHnHJAh5x1hIeceSyHnHwEh9xzwIfcdACH3\n\t\t\t\t\tHgAh9x9AIRcc8CEXHQAhFx4AIRcfQA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>2</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283904153</integer>\n\t\t\t\t\t<key>Comment</key>\n\t\t\t\t\t<string>ALC898, Toleda</string>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tIUccECFHHUAhRx4RIUcfkCFXHCAhVx0QIVce\n\t\t\t\t\tASFXHwEhZxzwIWcdACFnHgAhZx9AIXcc8CF3\n\t\t\t\t\tHQAhdx4AIXcfQCGHHEAhhx2QIYceoCGHH5Ah\n\t\t\t\t\tlxxgIZcdkCGXHoEhlx8CIaccUCGnHTAhpx6B\n\t\t\t\t\tIacfASG3HHAhtx1AIbceISG3HwIh5xyQIecd\n\t\t\t\t\tYSHnHksh5x8BIfcc8CH3HQAh9x4AIfcfQCEX\n\t\t\t\t\tHPAhFx0AIRceACEXH0A=\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>3</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>Mirone - Realtek ALC898</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283904153</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUccEAFHHUABRx4RAUcfAQGHHFABhx2QAYce\n\t\t\t\t\toAGHH5ABlxxgAZcdkAGXHoEBlx8CAacccAGn\n\t\t\t\t\tHTABpx6BAacfAQG3HIABtx1AAbceIQG3HwEB\n\t\t\t\t\t5xyQAecd4AHnHkUB5x8BAUcMAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>5</integer>\n\t\t\t\t\t<key>WakeConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUcMAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>WakeVerbReinit</key>\n\t\t\t\t\t<true/>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>Mirone - Realtek ALC898</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283904153</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUccEAFHHUABRx4RAUcfAQFXHCABVx0QAVce\n\t\t\t\t\tAQFXHwEBZxwwAWcdYAFnHgEBZx8BAXccQAF3\n\t\t\t\t\tHSABdx4BAXcfAQGHHFABhx2QAYceoAGHH5AB\n\t\t\t\t\tlxxgAZcdkAGXHoEBlx8CAacccAGnHTABpx6B\n\t\t\t\t\tAacfAQG3HIABtx1AAbceIQG3HwIB5xyQAecd\n\t\t\t\t\tYAHnHkUB5x8BAUcMAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>7</integer>\n\t\t\t\t\t<key>WakeConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUcMAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>WakeVerbReinit</key>\n\t\t\t\t\t<true/>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283904153</integer>\n\t\t\t\t\t<key>Comment</key>\n\t\t\t\t\t<string>Custom ALC898 by Irving23 for MSI GT72S 6QF-065CN</string>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tARcc8AEXHQABFx4AARcfQAEnHBABJx0BASce\n\t\t\t\t\toAEnH5ABRxzwAUcdAAFHHgABRx9AAVcc8AFX\n\t\t\t\t\tHQABVx4AAVcfQAFnHPABZx0AAWceAAFnH0AB\n\t\t\t\t\tdxxgAXcdEAF3HgEBdx8BAYccEAGHHRABhx6h\n\t\t\t\t\tAYcfAQGXHEABlx0BAZceFwGXH5ABpxwgAacd\n\t\t\t\t\tEAGnHoEBpx8BAbccQAG3HQEBtx4XAbcfkAHH\n\t\t\t\t\tHPABxx0AAcceAAHHH0AB1xzwAdcdAAHXHgAB\n\t\t\t\t\t1x9AAecccAHnHREB5x5FAecfAQH3HPAB9x0A\n\t\t\t\t\tAfceAAH3H0ABRwwC\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>11</integer>\n\t\t\t\t\t<key>WakeConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUcMAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>WakeVerbReinit</key>\n\t\t\t\t\t<true/>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>InsanelyDeepak - Realtek ALC898 for MSI GS40</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283904153</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAaccEAGnHQABpx4XAacfkAHnHCAB5x0QAece\n\t\t\t\t\tRgHnHwEBhxwwAYcdEAGHHoEBhx8BASccQAEn\n\t\t\t\t\tHQABJx6gAScfkA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>13</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283904153</integer>\n\t\t\t\t\t<key>Comment</key>\n\t\t\t\t\t<string>ALC898, Toleda</string>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tIUccECFHHUAhRx4RIUcfkCFXHCAhVx0QIVce\n\t\t\t\t\tASFXHwEhZxzwIWcdACFnHgAhZx9AIXcc8CF3\n\t\t\t\t\tHQAhdx4AIXcfQCGHHEAhhx2QIYceoCGHH5Ah\n\t\t\t\t\tlxxgIZcdkCGXHoEhlx8CIaccUCGnHTAhpx6B\n\t\t\t\t\tIacfASG3HHAhtx1AIbceISG3HwIh5xyQIecd\n\t\t\t\t\tYSHnHksh5x8BIfcc8CH3HQAh9x4AIfcfQCEX\n\t\t\t\t\tHPAhFx0AIRceACEXH0A=\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>28</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>Realtek ALC898 for CLEVO P65xRS(-G) by datasone</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283904153</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tARcc8AEXHQABFx4AARcfQAEnHFABJx0BASce\n\t\t\t\t\tpgEnH5ABRxwQAUcdAQFHHhcBRx+QAXccIAF3\n\t\t\t\t\tHRABdx4BAXcfAQGHHEABhx0QAYcegQGHHwEB\n\t\t\t\t\t1xzwAdcdAAHXHgAB1x9AAeccMAHnHREB5x5E\n\t\t\t\t\tAecfAQFHDAI=\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>65</integer>\n\t\t\t\t\t<key>WakeConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUcMAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>WakeVerbReinit</key>\n\t\t\t\t\t<true/>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>Realtek ALC898 for Clevo P750DM2-G</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283904153</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tARcc8AEXHQABFx4AARcfQAEnHFABJx0BASce\n\t\t\t\t\tpgEnH5ABRxwQAUcdAQFHHhcBRx+QAXccIAF3\n\t\t\t\t\tHRABdx4BAXcfAQGHHEABhx0QAYcegQGHHwEB\n\t\t\t\t\tpxxgAacdEAGnHoEBpx8BAdcc8AHXHQAB1x4A\n\t\t\t\t\tAdcfQAHnHDAB5x0RAeceRAHnHwEBRwwC\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>66</integer>\n\t\t\t\t\t<key>WakeConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUcMAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>WakeVerbReinit</key>\n\t\t\t\t\t<true/>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>Realtek ALC898 for MSI GE62 7RE Apache Pro by spectra</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283904153</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tASccEAEnHQEBJx6gAScfmQGHHCABhx0QAYce\n\t\t\t\t\tgQGHHwIBVxwwAVcdAQFXHhMBVx+ZAaccMQGn\n\t\t\t\t\tHQEBpx4TAacfmQG3HDIBtx0BAbceEwG3H5kB\n\t\t\t\t\ttwwCAUccQAFHHRABRx4hAUcfAgFHDAIB5xxQ\n\t\t\t\t\tAecdEQHnHkUB5x8C\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>98</integer>\n\t\t\t\t\t<key>WakeConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUcMAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>WakeVerbReinit</key>\n\t\t\t\t\t<true/>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>Realtek ALC898 for MSI GP62-6QG Leopard Pro</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283904153</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tARcc8AEXHQABFx4AARcfQAEnHBABJx0BASce\n\t\t\t\t\toAEnH5ABRxxQAUcdQAFHHiEBRx8BAUcMAgFX\n\t\t\t\t\tHEABVx0BAVceEAFXH5ABZxzwAWcdAAFnHgAB\n\t\t\t\t\tZx9AAXcc8AF3HQABdx4AAXcfQAGHHCABhx2Q\n\t\t\t\t\tAYcegQGHHwEBlxzwAZcdAAGXHgABlx9AAacc\n\t\t\t\t\t8AGnHQABpx4AAacfQAG3HPABtx0AAbceAAG3\n\t\t\t\t\tH0ABxxzwAccdAAHHHgABxx9AAdcc8AHXHQAB\n\t\t\t\t\t1x4AAdcfQAHnHHAB5x1BAeceRQHnHwEB9xzw\n\t\t\t\t\tAfcdAAH3HgAB9x9A\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>99</integer>\n\t\t\t\t\t<key>WakeConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUcMAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>WakeVerbReinit</key>\n\t\t\t\t\t<true/>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283904153</integer>\n\t\t\t\t\t<key>Comment</key>\n\t\t\t\t\t<string>ALC898, 4 Line Out by Andrey1970</string>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUccAAFHHUABRx4RAUcfkAFXHBABVx0QAVce\n\t\t\t\t\tAQFXHwEBZxwgAWcdYAFnHgEBZx8BAYccMAGH\n\t\t\t\t\tHZABhx6gAYcfkAGnHEABpx0wAacegQGnHwEB\n\t\t\t\t\tlxxQAZcdkAGXHoEBlx8CAbccYAG3HUABtx4h\n\t\t\t\t\tAbcfAgHnHHAB5x1hAeceSwHnHwEBdxyAAXcd\n\t\t\t\t\tIAF3HgEBdx8BAfcc8AH3HQAB9x4AAfcfSQEX\n\t\t\t\t\tHPABFx0AARceAAEXH0k=\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>101</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283904256</integer>\n\t\t\t\t\t<key>Comment</key>\n\t\t\t\t\t<string>toleda - ALC1150 </string>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUccEAFHHUABRx4RAUcfkAFHDAIBVxwgAVcd\n\t\t\t\t\tEAFXHgEBVx8BAWccMAFnHWABZx4BAWcfAQF3\n\t\t\t\t\tHPABdx0AAXceAAF3H0ABhxxAAYcdkAGHHqAB\n\t\t\t\t\thx+QAZccYAGXHZABlx6BAZcfAgGnHFABpx0w\n\t\t\t\t\tAacegQGnHwEBtxxwAbcdQAG3HiEBtx8CAbcM\n\t\t\t\t\tAgHnHJAB5x1hAeceSwHnHwEB9xzwAfcdAAH3\n\t\t\t\t\tHgAB9x9AARcc8AEXHQABFx4AARcfQA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>WakeConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUcMAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>WakeVerbReinit</key>\n\t\t\t\t\t<true/>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283904256</integer>\n\t\t\t\t\t<key>Comment</key>\n\t\t\t\t\t<string>toleda - ALC1150 </string>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUccEAFHHUABRx4RAUcfkAFHDAIBVxzwAVcd\n\t\t\t\t\tAAFXHgABVx9AAWcc8AFnHQABZx4AAWcfQAF3\n\t\t\t\t\tHPABdx0AAXceAAF3H0ABhxxAAYcdYAGHHgEB\n\t\t\t\t\thx8BAZccYAGXHZABlx6gAZcfkAGnHFABpx0Q\n\t\t\t\t\tAaceAQGnHwEBtxxwAbcdQAG3HiEBtx8CAbcM\n\t\t\t\t\tAgHnHJAB5x1hAeceSwHnHwEB9xzwAfcdAAH3\n\t\t\t\t\tHgAB9x9AARcc8AEXHQABFx4AARcfQA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>2</integer>\n\t\t\t\t\t<key>WakeConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUcMAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>WakeVerbReinit</key>\n\t\t\t\t\t<true/>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283904256</integer>\n\t\t\t\t\t<key>Comment</key>\n\t\t\t\t\t<string>toleda - ALC1150 </string>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUccEAFHHUABRx4RAUcfkAFHDAIBVxzwAVcd\n\t\t\t\t\tAAFXHgABVx9AAWcc8AFnHQABZx4AAWcfQAF3\n\t\t\t\t\tHPABdx0AAXceAAF3H0ABhxxAAYcdkAGHHqAB\n\t\t\t\t\thx+QAZccYAGXHZABlx6BAZcfAgGnHFABpx0w\n\t\t\t\t\tAacegQGnHwEBtxxwAbcdQAG3HiEBtx8CAbcM\n\t\t\t\t\tAgHnHJAB5x1hAeceSwHnHwEB9xzwAfcdAAH3\n\t\t\t\t\tHgAB9x9AARcc8AEXHQABFx4AARcfQA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>3</integer>\n\t\t\t\t\t<key>WakeConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUcMAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>WakeVerbReinit</key>\n\t\t\t\t\t<true/>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>Mirone - Realtek ALC1150</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283904256</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUccEAFHHUABRx4RAUcfAQGHHFABhx2QAYce\n\t\t\t\t\toAGHH5ABlxxgAZcdkAGXHoEBlx8CAacccAGn\n\t\t\t\t\tHTABpx6BAacfAQG3HIABtx1AAbceIQG3HwEB\n\t\t\t\t\t5xyQAecd4AHnHkUB5x8BAUcMAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>5</integer>\n\t\t\t\t\t<key>WakeConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUcMAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>WakeVerbReinit</key>\n\t\t\t\t\t<true/>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>Mirone - Realtek ALC1150</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283904256</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUccEAFHHUABRx4RAUcfAQFXHCABVx0QAVce\n\t\t\t\t\tAQFXHwEBZxwwAWcdYAFnHgEBZx8BAXccQAF3\n\t\t\t\t\tHSABdx4BAXcfAQGHHFABhx2QAYceoAGHH5AB\n\t\t\t\t\tlxxgAZcdkAGXHoEBlx8CAacccAGnHTABpx6B\n\t\t\t\t\tAacfAQG3HIABtx1AAbceIQG3HwIB5xyQAecd\n\t\t\t\t\tYAHnHkUB5x8BAUcMAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>7</integer>\n\t\t\t\t\t<key>WakeConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUcMAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>WakeVerbReinit</key>\n\t\t\t\t\t<true/>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>Mirone - Realtek ALC1150 (mic boost)</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283904256</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUccEAFHHUABRx4RAUcfAQFXHCABVx0QAVce\n\t\t\t\t\tAQFXHwEBZxwwAWcdYAFnHgEBZx8BAXccQAF3\n\t\t\t\t\tHSABdx4BAXcfAQGHHFABhx2QAYceoAGHH5AB\n\t\t\t\t\tlxxgAZcdkAGXHoEBlx8CAacccAGnHTABpx6B\n\t\t\t\t\tAacfAQG3HIABtx1AAbceIQG3HwIB5xyQAecd\n\t\t\t\t\tYAHnHkUB5x8BAUcMAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>11</integer>\n\t\t\t\t\t<key>WakeConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUcMAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>WakeVerbReinit</key>\n\t\t\t\t\t<true/>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283906592</integer>\n\t\t\t\t\t<key>CodecName</key>\n\t\t\t\t\t<string>Toleda -  Realtek ALC1220</string>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUccEAFHHUABRx4RAUcfkAFHDAIBVxwgAVcd\n\t\t\t\t\tEAFXHgEBVx8BAWccMAFnHWABZx4BAWcfAQF3\n\t\t\t\t\tHPABdx0AAXceAAF3H0ABhxxAAYcdkAGHHqAB\n\t\t\t\t\thx+QAZccYAGXHZABlx6BAZcfAgGnHFABpx0w\n\t\t\t\t\tAacegQGnHwEBtxxwAbcdQAG3HiEBtx8CAbcM\n\t\t\t\t\tAgHnHJAB5x1hAeceSwHnHwE=\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>WakeConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUcMAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>WakeVerbReinit</key>\n\t\t\t\t\t<true/>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283906592</integer>\n\t\t\t\t\t<key>CodecName</key>\n\t\t\t\t\t<string>Toleda -  Realtek ALC1220</string>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUccEAFHHUABRx4RAUcfkAFHDAIBVxzwAVcd\n\t\t\t\t\tAAFXHgABVx9AAWcc8AFnHQABZx4AAWcfQAF3\n\t\t\t\t\tHPABdx0AAXceAAF3H0ABhxxAAYcdYAGHHgEB\n\t\t\t\t\thx8BAZccYAGXHZABlx6gAZcfkAGnHFABpx0Q\n\t\t\t\t\tAaceAQGnHwEBtxxwAbcdQAG3HiEBtx8CAbcM\n\t\t\t\t\tAgHnHJAB5x1hAeceSwHnHwE=\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>2</integer>\n\t\t\t\t\t<key>WakeConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUcMAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>WakeVerbReinit</key>\n\t\t\t\t\t<true/>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283906592</integer>\n\t\t\t\t\t<key>CodecName</key>\n\t\t\t\t\t<string>Toleda -  Realtek ALC1220</string>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUccEAFHHUABRx4RAUcfkAFHDAIBVxzwAVcd\n\t\t\t\t\tAAFXHgABVx9AAWcc8AFnHQABZx4AAWcfQAF3\n\t\t\t\t\tHPABdx0AAXceAAF3H0ABhxxAAYcdkAGHHqAB\n\t\t\t\t\thx+QAZccYAGXHZABlx6BAZcfAgGnHFABpx0w\n\t\t\t\t\tAacegQGnHwEBtxxwAbcdQAG3HiEBtx8CAbcM\n\t\t\t\t\tAgHnHJAB5x1hAeceSwHnHwEB9xzwAfcdAAH3\n\t\t\t\t\tHgAB9x9AARcc8AEXHQABFx4AARcfQA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>3</integer>\n\t\t\t\t\t<key>WakeConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUcMAgG3DAI=\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>WakeVerbReinit</key>\n\t\t\t\t\t<true/>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283906592</integer>\n\t\t\t\t\t<key>CodecName</key>\n\t\t\t\t\t<string>Mirone - Realtek ALC1220</string>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUccEAFHHUABRx4RAUcfAQGHHFABhx2QAYce\n\t\t\t\t\toAGHH5ABlxxgAZcdkAGXHoEBlx8CAacccAGn\n\t\t\t\t\tHTABpx6BAacfAQG3HIABtx1AAbceIQG3HwEB\n\t\t\t\t\t5xyQAecd4AHnHkUB5x8BAUcMAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>5</integer>\n\t\t\t\t\t<key>WakeConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUcMAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>WakeVerbReinit</key>\n\t\t\t\t\t<true/>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283906592</integer>\n\t\t\t\t\t<key>CodecName</key>\n\t\t\t\t\t<string>Mirone - Realtek ALC1220</string>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUccEAFHHUABRx4RAUcfAQFXHCABVx0QAVce\n\t\t\t\t\tAQFXHwEBZxwwAWcdYAFnHgEBZx8BAXccQAF3\n\t\t\t\t\tHSABdx4BAXcfAQGHHFABhx2QAYceoAGHH5AB\n\t\t\t\t\tlxxgAZcdkAGXHoEBlx8CAacccAGnHTABpx6B\n\t\t\t\t\tAacfAQG3HIABtx1AAbceIQG3HwIB5xyQAecd\n\t\t\t\t\tYAHnHkUB5x8BAUcMAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>7</integer>\n\t\t\t\t\t<key>WakeConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUcMAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>WakeVerbReinit</key>\n\t\t\t\t\t<true/>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283906592</integer>\n\t\t\t\t\t<key>CodecName</key>\n\t\t\t\t\t<string>Custom Realtek ALC1220 by truesoldier</string>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUccEAFHHUABRx4RAUcfkAG3HCABtx1AAbce\n\t\t\t\t\tIQG3HwIB5xwwAecdIAHnHksB5x8BAYccQAGH\n\t\t\t\t\tHZABhx6gAYcfkAGXHFABlx2QAZcegQGXHwIB\n\t\t\t\t\tVxxwAVcdEAFXHgEBVx8BAWccgAFnHWABZx4B\n\t\t\t\t\tAWcfAQGnHKABpx0wAacegQGnHwE=\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>11</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283906592</integer>\n\t\t\t\t\t<key>CodecName</key>\n\t\t\t\t\t<string>MacPeet - ALC1220 for Clevo P950HR</string>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUccEAFHHRABRx4hAUcfAQFHDAIBJxwwAScd\n\t\t\t\t\tAAEnHqYBJx+ZAYccQAGHHRABhx6BAYcfAQG3\n\t\t\t\t\tHGABtx0AAbceFwG3H5kBtwwCAecccAHnHRAB\n\t\t\t\t\t5x5EAecfAQ==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>13</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283906592</integer>\n\t\t\t\t\t<key>CodecName</key>\n\t\t\t\t\t<string>fleaplus - ALC1220 for MSI WT75</string>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAbccIAG3HQEBtx4XAbcfkAG3DAIBhxxAAYcd\n\t\t\t\t\tEAGHHqEBhx8BAZccQQGXHRQBlx6BAZcfAQGn\n\t\t\t\t\tHE8Bpx0QAacegQGnHwEBJxxQAScdAQEnHmAB\n\t\t\t\t\tJx+Q\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>15</integer>\n\t\t\t\t\t<key>WakeConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUcMAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>WakeVerbReinit</key>\n\t\t\t\t\t<true/>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283906592</integer>\n\t\t\t\t\t<key>CodecName</key>\n\t\t\t\t\t<string>MacPeet - ALC1220 for Gigabyte Z390</string>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAeccMAHnHSAB5x5FAecfAQGHHEABhx2QAYce\n\t\t\t\t\toQGHH5EBlxxQAZcdkAGXHoEBlx8CAUccYAFH\n\t\t\t\t\tHUABRx4hAUcfAgFHDAIBVxxwAVcdEAFXHgEB\n\t\t\t\t\tVx8BAWccgAFnHWABZx4BAWcfAQGnHJABpx0w\n\t\t\t\t\tAacegQGnHwEBtxygAbcdQAG3HhEBtx+RAbcM\n\t\t\t\t\tAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>16</integer>\n\t\t\t\t\t<key>WakeConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAbcMAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>WakeVerbReinit</key>\n\t\t\t\t\t<true/>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283906592</integer>\n\t\t\t\t\t<key>CodecName</key>\n\t\t\t\t\t<string>lostwolf - ALC1220 for Gigabyte Z370-HD3P</string>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAScc8AEnHQABJx4AAScfQAFHHBABRx1AAUce\n\t\t\t\t\tEQFHHwEBRwwCAVccIAFXHRABVx4BAVcfAQFn\n\t\t\t\t\tHDABZx1gAWceAQFnHwEBdxxAAXcdIAF3HgEB\n\t\t\t\t\tdx8BAYccUAGHHZABhx6gAYcfkQGXHGABlx2Q\n\t\t\t\t\tAZcegAGXHwIBpxxwAacdMAGnHoEBpx8BAbcc\n\t\t\t\t\tgAG3HUABtx4hAbcfAgG3DAIB1xzwAdcdAAHX\n\t\t\t\t\tHgAB1x9AAecckAHnHQAB5x5DAecfmQ==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>27</integer>\n\t\t\t\t\t<key>WakeConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUcMAgG3DAI=\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>WakeVerbReinit</key>\n\t\t\t\t\t<true/>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283906592</integer>\n\t\t\t\t\t<key>CodecName</key>\n\t\t\t\t\t<string>MacPeet- ALC1220 for Z390 Aorus Ultra - Output SP/HP Manualmode </string>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUccEAFHHUABRx4RAUcfkAFHDAIBVxwgAVcd\n\t\t\t\t\tEAFXHgEBVx8BAWccMAFnHWABZx4BAWcfAQF3\n\t\t\t\t\tHPABdx0AAXceAAF3H0ABhxxAAYcdkAGHHqAB\n\t\t\t\t\thx+QAZccYAGXHZABlx6BAZcfAgGnHFABpx0w\n\t\t\t\t\tAacegQGnHwEBtxxwAbcdQAG3HiEBtx8CAbcM\n\t\t\t\t\tAgHnHJAB5x1hAeceSwHnHwE=\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>28</integer>\n\t\t\t\t\t<key>WakeConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUcMAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>WakeVerbReinit</key>\n\t\t\t\t\t<true/>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283906592</integer>\n\t\t\t\t\t<key>CodecName</key>\n\t\t\t\t\t<string>Custom ALC1220 for MSI P65 Creator by CleverCoder</string>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUccEAFHHRABRx4RAUcfAAFHDAIBtxwgAbcd\n\t\t\t\t\tAAG3HhcBtx+QAbcMAgGXHDABlx0QAZcegQGX\n\t\t\t\t\tHwABJxxAAScdAAEnHqYBJx+Q\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>34</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283904768</integer>\n\t\t\t\t\t<key>CodecName</key>\n\t\t\t\t\t<string>toleda -  Realtek ALCS1200A</string>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUccEAFHHUABRx4RAUcfkAFXHCABVx0QAVce\n\t\t\t\t\tAQFXHwEBZxwwAWcdYAFnHgEBZx8BAXcc8AF3\n\t\t\t\t\tHQABdx4AAXcfQAGHHEABhx2QAYceoAGHH5AB\n\t\t\t\t\tlxxgAZcdkAGXHoEBlx8CAaccUAGnHTABpx6B\n\t\t\t\t\tAacfAQG3HHABtx1AAbceIQG3HwIB5xyQAecd\n\t\t\t\t\tYQHnHksB5x8BARcc8AEXHQABFx4AARcfQA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>WakeConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUcMAgG3DAI=\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>WakeVerbReinit</key>\n\t\t\t\t\t<true/>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283904768</integer>\n\t\t\t\t\t<key>CodecName</key>\n\t\t\t\t\t<string>toleda -  Realtek ALCS1200A</string>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUccEAFHHUABRx4RAUcfkAFXHPABVx0AAVce\n\t\t\t\t\tAAFXH0ABZxzwAWcdAAFnHgABZx9AAXcc8AF3\n\t\t\t\t\tHQABdx4AAXcfQAGHHEABhx1gAYceAQGHHwEB\n\t\t\t\t\tlxxgAZcdkAGXHqABlx+QAaccUAGnHRABpx4B\n\t\t\t\t\tAacfAQG3HHABtx1AAbceIQG3HwIB5xyQAecd\n\t\t\t\t\tYQHnHksB5x8BARcc8AEXHQABFx4AARcfQA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>2</integer>\n\t\t\t\t\t<key>WakeConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUcMAgG3DAI=\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>WakeVerbReinit</key>\n\t\t\t\t\t<true/>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283904768</integer>\n\t\t\t\t\t<key>CodecName</key>\n\t\t\t\t\t<string>toleda -  Realtek ALCS1200A</string>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUccEAFHHUABRx4RAUcfkAFXHPABVx0AAVce\n\t\t\t\t\tAAFXH0ABZxzwAWcdAAFnHgABZx9AAXcc8AF3\n\t\t\t\t\tHQABdx4AAXcfQAGHHEABhx2QAYceoAGHH5AB\n\t\t\t\t\tlxxgAZcdkAGXHoEBlx8CAaccUAGnHTABpx6B\n\t\t\t\t\tAacfAQG3HHABtx1AAbceIQG3HwIB5xyQAecd\n\t\t\t\t\tYQHnHksB5x8BARcc8AEXHQABFx4AARcfQA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>3</integer>\n\t\t\t\t\t<key>WakeConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUcMAgG3DAI=\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>WakeVerbReinit</key>\n\t\t\t\t\t<true/>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283906408</integer>\n\t\t\t\t\t<key>CodecName</key>\n\t\t\t\t\t<string>Toleda -  Realtek ALC S1220A</string>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUccEAFHHUABRx4RAUcfkAFHDAIBVxwgAVcd\n\t\t\t\t\tEAFXHgEBVx8BAWccMAFnHWABZx4BAWcfAQF3\n\t\t\t\t\tHPABdx0AAXceAAF3H0ABhxxAAYcdkAGHHqAB\n\t\t\t\t\thx+QAZccYAGXHZABlx6BAZcfAgGnHFABpx0w\n\t\t\t\t\tAacegQGnHwEBtxxwAbcdQAG3HiEBtx8CAbcM\n\t\t\t\t\tAgHnHJAB5x1hAeceSwHnHwEB9xzwAfcdAAH3\n\t\t\t\t\tHgAB9x9AARcc8AEXHQABFx4AARcfQA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>WakeConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUcMAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>WakeVerbReinit</key>\n\t\t\t\t\t<true/>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283906408</integer>\n\t\t\t\t\t<key>CodecName</key>\n\t\t\t\t\t<string>Toleda -  Realtek ALC S1220A</string>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUccEAFHHUABRx4RAUcfkAFHDAIBVxzwAVcd\n\t\t\t\t\tAAFXHgABVx9AAWcc8AFnHQABZx4AAWcfQAF3\n\t\t\t\t\tHPABdx0AAXceAAF3H0ABhxxAAYcdYAGHHgEB\n\t\t\t\t\thx8BAZccYAGXHZABlx6gAZcfkAGnHFABpx0Q\n\t\t\t\t\tAaceAQGnHwEBtxxwAbcdQAG3HiEBtx8CAbcM\n\t\t\t\t\tAgHnHJAB5x1hAeceSwHnHwEB9xzwAfcdAAH3\n\t\t\t\t\tHgAB9x9AARcc8AEXHQABFx4AARcfQA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>2</integer>\n\t\t\t\t\t<key>WakeConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUcMAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>WakeVerbReinit</key>\n\t\t\t\t\t<true/>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283906408</integer>\n\t\t\t\t\t<key>CodecName</key>\n\t\t\t\t\t<string>Toleda -  Realtek ALC S1220A</string>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUccEAFHHUABRx4RAUcfkAFHDAIBVxzwAVcd\n\t\t\t\t\tAAFXHgABVx9AAWcc8AFnHQABZx4AAWcfQAF3\n\t\t\t\t\tHPABdx0AAXceAAF3H0ABhxxAAYcdkAGHHqAB\n\t\t\t\t\thx+QAZccYAGXHZABlx6BAZcfAgGnHFABpx0w\n\t\t\t\t\tAacegQGnHwEBtxxwAbcdQAG3HiEBtx8CAbcM\n\t\t\t\t\tAgHnHJAB5x1hAeceSwHnHwEB9xzwAfcdAAH3\n\t\t\t\t\tHgAB9x9AARcc8AEXHQABFx4AARcfQA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>3</integer>\n\t\t\t\t\t<key>WakeConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUcMAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>WakeVerbReinit</key>\n\t\t\t\t\t<true/>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283906408</integer>\n\t\t\t\t\t<key>CodecName</key>\n\t\t\t\t\t<string>Mirone - Realtek ALC S1220A</string>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUccEAFHHUABRx4RAUcfAQGHHFABhx2QAYce\n\t\t\t\t\toAGHH5ABlxxgAZcdkAGXHoEBlx8CAacccAGn\n\t\t\t\t\tHTABpx6BAacfAQG3HIABtx1AAbceIQG3HwEB\n\t\t\t\t\t5xyQAecd4AHnHkUB5x8BAUcMAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>5</integer>\n\t\t\t\t\t<key>WakeConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUcMAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>WakeVerbReinit</key>\n\t\t\t\t\t<true/>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283906408</integer>\n\t\t\t\t\t<key>CodecName</key>\n\t\t\t\t\t<string>Mirone - Realtek ALC S1220A</string>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUccEAFHHUABRx4RAUcfAQFXHCABVx0QAVce\n\t\t\t\t\tAQFXHwEBZxwwAWcdYAFnHgEBZx8BAXccQAF3\n\t\t\t\t\tHSABdx4BAXcfAQGHHFABhx2QAYceoAGHH5AB\n\t\t\t\t\tlxxgAZcdkAGXHoEBlx8CAacccAGnHTABpx6B\n\t\t\t\t\tAacfAQG3HIABtx1AAbceIQG3HwIB5xyQAecd\n\t\t\t\t\tYAHnHkUB5x8BAUcMAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>7</integer>\n\t\t\t\t\t<key>WakeConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUcMAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>WakeVerbReinit</key>\n\t\t\t\t\t<true/>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283906408</integer>\n\t\t\t\t\t<key>CodecName</key>\n\t\t\t\t\t<string>Realtek ALC S1220A RodionS, Nacho 2.0 outputs(green), 2 inputs (blue)+front panel (mic fr.panel), mic (pink), headphones(lime), SPDIF/Optical </string>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUceEAGHHqABhx+RAZcegQFHDAI=\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>20</integer>\n\t\t\t\t\t<key>WakeConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUcMAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>WakeVerbReinit</key>\n\t\t\t\t\t<true/>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283906408</integer>\n\t\t\t\t\t<key>CodecName</key>\n\t\t\t\t\t<string>Realtek ALC S1220A RodionS, Nacho 5.1 outputs(green, black, orange), 2 inputs (blue)+front panel (mic fr.panel), mic (pink), headphones(lime), SPDIF/Optical </string>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUceEAGHHqABhx+RAZcegQFHDAI=\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>21</integer>\n\t\t\t\t\t<key>WakeConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUcMAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>WakeVerbReinit</key>\n\t\t\t\t\t<true/>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>Mirone - Conexant CX8050</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>351346546</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAXccEAF3HQABdx4XAXcfkAGnHCABpx0AAace\n\t\t\t\t\toAGnH5ABlxwwAZcdEAGXHosBlx8BAWccQAFn\n\t\t\t\t\tHRABZx4rAWcfAQF3DAIBZwwC\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>3</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>Asus VivoBook Pro 15 CX8150 by Andres ZeroCross</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>351346646</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAWccQAFnHRABZx4hAWcfBAGXHDABlx0QAZce\n\t\t\t\t\tgQGXHwQBpxwgAacdAQGnHqABpx+QAdccEAHX\n\t\t\t\t\tHQEB1x4XAdcfkAFnDAIB1wwC\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>21</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>Mirone - Conexant CX8200</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>351346696</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAXccEAF3HQABdx4XAXcfkAGnHCABpx0AAace\n\t\t\t\t\toAGnH5ABlxwwAZcdEAGXHosBlx8BAdccQAHX\n\t\t\t\t\tHRAB1x4rAdcfAQF3DAIB1wwC\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>3</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>Andres ZeroCross - HP Spectre 13-V130NG</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>351346696</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAXccIAF3HQEBdx4XAXcfkAGXHDABlx0QAZce\n\t\t\t\t\tgQGXHwEBpxxAAacdAQGnHqABpx+QAWccEAFn\n\t\t\t\t\tHRABZx4hAWcfAQFnDAIBdwwC\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>21</integer>\n\t\t\t\t\t<key>WakeConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAWcMAgF3DAI=\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>WakeVerbReinit</key>\n\t\t\t\t\t<true/>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>Conexant CX8400</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>351346896</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAWccEAFnHRABZx4hAWcfBAF3HPABdx0AAXce\n\t\t\t\t\tAAF3H0ABhxzwAYcdAAGHHgABhx9AAZccIAGX\n\t\t\t\t\tHRABlx6BAZcfBAGnHDABpx0BAacepgGnH5AB\n\t\t\t\t\t1xxAAdcdAQHXHhcB1x+ZAecc8AHnHQAB5x4A\n\t\t\t\t\tAecfQAH3HPAB9x0AAfceAAH3H0ACFxzwAhcd\n\t\t\t\t\tAAIXHgACFx9AAmcc8AJnHQACZx4AAmcfQAJ3\n\t\t\t\t\tHPACdx0AAnceAAJ3H0ABZwwCAdcMAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>12</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>Conexant CX20561</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>351359057</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAWccQAFnHUABZx4hAWcfAQF3HPABdx0AAXce\n\t\t\t\t\tAAF3H0ABhxwwAYcdMAGHHoEBhx8BAZcc8AGX\n\t\t\t\t\tHQABlx4AAZcfQAGnHBABpx0BAaceFwGnH5AB\n\t\t\t\t\ttxzwAbcdAAG3HgABtx9AAccc8AHHHQABxx4A\n\t\t\t\t\tAccfQAHXHCAB1x0BAdceoAHXH5A=\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>11</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>Mirone - Conexant CX20583</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>351359079</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAZcc8AGXHUABlx4hAZcfBAGnHPABpx2QAace\n\t\t\t\t\toQGnHwQBtxzwAbcdAQG3HgABtx9AAccc8AHH\n\t\t\t\t\tHQEBxx4AAccfQAHXHPAB1x0BAdceAAHXH0AB\n\t\t\t\t\t5xzwAecdAQHnHqcB5x+VAfcc8AH3HQEB9x4X\n\t\t\t\t\tAfcfkgIHHPACBx0RAgceRQIHHwQCJxzwAicd\n\t\t\t\t\tAQInHgACJx9AAjcc8AI3HQECNx4AAjcfQA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>3</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>Mirone - Conexant CX20585</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>351359081</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAZccEAGXHRABlx4gAZcfAAGnHCABpx0AAace\n\t\t\t\t\tAAGnH0ABtxwwAbcdEAG3HoABtx8AAcccUAHH\n\t\t\t\t\tHQABxx4AAccfQAHXHGAB1x0AAdceAAHXH0AB\n\t\t\t\t\t5xxgAecdAAHnHgAB5x9AAfcccAH3HQAB9x4Q\n\t\t\t\t\tAfcfkAIHHIACBx0AAgceAAIHH0ACJxyAAicd\n\t\t\t\t\tAAInHgACJx9AAjcckAI3HQACNx6gAjcfkA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>3</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>Constanta custom for Toshiba L755-16R - Conexant CX20585</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>351359081</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAZccEAGXHRABlx4gAZcfAAGnHCABpx0wAace\n\t\t\t\t\tgQGnHwEBtxwwAbcdAAG3HgABtx9AAcccUAHH\n\t\t\t\t\tHQABxx4AAccfQAHXHGAB1x0AAdceAAHXH0AB\n\t\t\t\t\t5xxgAecdAAHnHgAB5x9AAfcccAH3HQAB9x4Q\n\t\t\t\t\tAfcfkAIHHIACBx0AAgceAAIHH0ACJxyAAicd\n\t\t\t\t\tAAInHgACJx9AAjcckAI3HQECNx6gAjcfkA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>13</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>Mirone - Conexant CX20588</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>351359084</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAZccQAGXHRABlx4hAZcfAgG3HDABtx0QAbce\n\t\t\t\t\towG3H5kCNxxQAjcdAQI3HqECNx+SAfccEAH3\n\t\t\t\t\tHQEB9x4TAfcfmQ==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>3</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>Mirone - Conexant CX20590</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>351359086</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAZccQAGXHRABlx4hAZcfAAGnHDABpx0QAace\n\t\t\t\t\tgQGnHwABtxwgAbcdAAG3HqcBtx+QAfccEAH3\n\t\t\t\t\tHQAB9x4XAfcfkQ==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>3</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>351359086</integer>\n\t\t\t\t\t<key>Comment</key>\n\t\t\t\t\t<string>CX20590 Custom for Lenovo Yoga 13 by usr-sse2</string>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAZccMAGXHUABlx4rAZcfDgH3HCAB9x0BAfce\n\t\t\t\t\tEAH3H5ACNxwQAjcdAQI3HqACNx+QAaccQAGn\n\t\t\t\t\tHRABpx6BAacfAQG3HPABtx0AAbceAAG3H0AB\n\t\t\t\t\txxzwAccdAAHHHgABxx9AAdcc8AHXHQAB1x4A\n\t\t\t\t\tAdcfQAHnHPAB5x0AAeceAAHnH0ACBxzwAgcd\n\t\t\t\t\tAAIHHgACBx9AAicc8AInHQACJx4AAicfQA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>12</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>351359086</integer>\n\t\t\t\t\t<key>Comment</key>\n\t\t\t\t\t<string>CX20590 for Lenovo T420 by tluck (Additional ports for use with a Docking Station)</string>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAFccAABXHQAAVx5WAFcfGABnHBAAZx0AAGce\n\t\t\t\t\tVgBnHxgAdxwgAHcdAAB3HlYAdx8YAZccMAGX\n\t\t\t\t\tHRABlx4hAZcfBAGnHEABpx2QAaceoQGnH2EB\n\t\t\t\t\ttxxQAbcdEAG3HoEBtx8BAcccYAHHHUABxx4h\n\t\t\t\t\tAccfYQH3HHAB9x0BAfceFwH3H5kCNxyAAjcd\n\t\t\t\t\tAQI3HqYCNx+ZAbcMAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>13</integer>\n\t\t\t\t\t<key>WakeConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUcMAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>WakeVerbReinit</key>\n\t\t\t\t\t<true/>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>351359086</integer>\n\t\t\t\t\t<key>Comment</key>\n\t\t\t\t\t<string>CX20590 for Lenovo T420 by tluck (Standard Laptop)</string>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAFccAABXHQAAVx5WAFcfGABnHBAAZx0AAGce\n\t\t\t\t\tVgBnHxgAdxwgAHcdAAB3HlYAdx8YAZccMAGX\n\t\t\t\t\tHRABlx4hAZcfBAGnHEABpx2QAaceoQGnH2EB\n\t\t\t\t\ttxxQAbcdEAG3HoEBtx8BAcccYAHHHUABxx4h\n\t\t\t\t\tAccfYQH3HHAB9x0BAfceFwH3H5kCNxyAAjcd\n\t\t\t\t\tAQI3HqYCNx+ZAbcMAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>14</integer>\n\t\t\t\t\t<key>WakeConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAUcMAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>WakeVerbReinit</key>\n\t\t\t\t\t<true/>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>351359137</integer>\n\t\t\t\t\t<key>Comment</key>\n\t\t\t\t\t<string>CX20641 - MacPeet - Dell OptiPlex 3010 - ManualMode</string>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tIcccECHHHUAhxx4BIccfASGnHCAhpx2QIace\n\t\t\t\t\tgSGnHwIhtxwwIbcdMCG3HoEhtx8BIZccQCGX\n\t\t\t\t\tHUAhlx4hIZcfAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>11</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>351359137</integer>\n\t\t\t\t\t<key>Comment</key>\n\t\t\t\t\t<string>CX20641 - MacPeet - Dell OptiPlex 3010 - SwitchMode</string>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tIcccECHHHUAhxx4RIccfkCGnHCAhpx2QIace\n\t\t\t\t\tgSGnHwIhtxwwIbcdMCG3HoEhtx8BIZccQCGX\n\t\t\t\t\tHUAhlx4hIZcfAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>13</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>351359138</integer>\n\t\t\t\t\t<key>Comment</key>\n\t\t\t\t\t<string>CX20642 - MacPeet - Fujitsu ESPRIMO E910 E90+ Desktop - ManualMode</string>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tIcccECHHHUAhxx4BIccfASGnHCAhpx0QIace\n\t\t\t\t\tgSGnHwIhlxxAIZcdECGXHiEhlx8CIdccUCHX\n\t\t\t\t\tHTAh1x6BIdcfAQ==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>11</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>351359138</integer>\n\t\t\t\t\t<key>Comment</key>\n\t\t\t\t\t<string>CX20642 - MacPeet - Fujitsu ESPRIMO E910 E90+ Desktop - SwitchMode</string>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tIcccECHHHUAhxx4RIccfkCGnHCAhpx0QIace\n\t\t\t\t\toSGnH5IhlxxAIZcdECGXHiEhlx8CIdccUCHX\n\t\t\t\t\tHTAh1x6BIdcfAQ==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>13</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>351359086</integer>\n\t\t\t\t\t<key>Comment</key>\n\t\t\t\t\t<string>Custom for Dell Vostro 3x60 by vusun123</string>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAfccEAH3HQAB9x4XAfcfkQGnHDABpx0QAace\n\t\t\t\t\tgQGnHwkBlxxAAZcdEAGXHiEBlx8AAjccIAI3\n\t\t\t\t\tHQECNx6nAjcfkAG3DAIB1wwC\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>28</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>Mirone - Conexant CX20722</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>351359218</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAXccEAF3HQABdx4WAXcfkQGnHCABpx0AAace\n\t\t\t\t\tpgGnH5ABlxwwAZcdEAGXHoEBlx8CAWccQAFn\n\t\t\t\t\tHRABZx4hAWcfAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>3</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>Mirone - Conexant CX20724</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>351359220</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAWccEAFnHRABZx4hAWcfAgF3HCABdx0AAXce\n\t\t\t\t\tFwF3H5EBlxwwAZcdEAGXHoEBlx8CAaccQAGn\n\t\t\t\t\tHQABpx6mAacfkA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>3</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>InsanelyDeepak - Conexant CX20724</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>351359220</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAXccEAF3HQEBdx4XAXcfkQGnHCABpx0BAace\n\t\t\t\t\toAGnH5UBlxwwAZcdEAGXHosBlx8EAdccQAHX\n\t\t\t\t\tHRAB1x4rAdcfBA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>13</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>Mirone - Conexant CX20752</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>351359247</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAWccEAFnHUABZx4hAWcfAQF3HCABdx0AAXce\n\t\t\t\t\tFwF3H5ABhxwwAYcdkAGHHoEBhx8BAaccQAGn\n\t\t\t\t\tHQABpx6gAacfkA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>3</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>Andres ZeroCross - Asus A455LF - WX039D</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>351359247</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAZcHJAGnByQBZxxAAWcdEAFnHiEBZx8EAXcc\n\t\t\t\t\tEAF3HQEBdx4XAXcfkAGXHDABlx0QAZcegQGX\n\t\t\t\t\tHwQBpxwgAacdAQGnHqABpx+Q\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>21</integer>\n\t\t\t\t\t<key>WakeConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAZcHJAGnByQ=\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>WakeVerbReinit</key>\n\t\t\t\t\t<true/>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>Conexant - CX20751/2 by RehabMan</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>351359247</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAWccQAFnHRABZx4hAWcfBAF3HBABdx0BAXce\n\t\t\t\t\tFwF3H5ABlxwwAZcdEAGXHoEBlx8EAaccIAGn\n\t\t\t\t\tHQEBpx6gAacfkA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>28</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>Mirone - Conexant CX20753/4</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>351359249</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAWccEAFnHUABZx4hAWcfAgF3HCABdx0AAXce\n\t\t\t\t\tFwF3H5ABlxwwAZcdkAGXHoEBlx8CAaccQAGn\n\t\t\t\t\tHQABpx6gAacfkA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>3</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>InsanelyDeepak - Conexant CX20753/4</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>351359249</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAXccEAF3HQEBdx4XAXcfkAFnHBMBZx0QAWce\n\t\t\t\t\tIQFnHwMBlxwwAZcdEAGXHoEBlx8DAaccQAGn\n\t\t\t\t\tHQEBpx6gAacfkA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>14</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>MacPeet - CX20753/4 for Lenovo Thinkpad E580</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>351359249</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAXccEAF3HQABdx4XAXcfkAGnHCABpx0AAace\n\t\t\t\t\tpgGnH5ABlxwwAZcdEAGXHoEBlx8AAWccQAFn\n\t\t\t\t\tHRABZx4hAWcfAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>15</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>Andres ZeroCross - LG gram 15ZD960-GX5BK</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>351359249</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAXccIAF3HQEBdx4XAXcfkAGXHDABlx0QAZce\n\t\t\t\t\tgQGXHwMBpxxAAacdAQGnHqABpx+QAdccEAHX\n\t\t\t\t\tHRAB1x4hAdcfAw==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>21</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>Mirone - Conexant CX20755</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>351359251</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAXccEAF3HQABdx4XAXcfkAGnHCABpx0AAace\n\t\t\t\t\tpgGnH5UBhxwwAYcdkAGHHosBhx8CAWccQAFn\n\t\t\t\t\tHUABZx4rAWcfAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>3</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAQAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>Mirone - Conexant CX20756</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>351359252</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAWccEAFnHUABZx4hAWcfAQF3HCABdx0AAXce\n\t\t\t\t\tEwF3H5ABhxwwAYcdkAGHHqEBhx8CAaccQAGn\n\t\t\t\t\tHQABpx6mAacfkA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>3</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>InsanelyDeepak - Conexant CX20756</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>351359252</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAXccEAF3HQEBdx4XAXcfkAGnHCABpx0BAace\n\t\t\t\t\toAGnH5ABlxwwAZcdEAGXHosBlx8CAWccQAFn\n\t\t\t\t\tHRABZx4rAWcfAgGHHPABhx0AAYceAAGHH0A=\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>13</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAQAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>Mirone - Conexant CX20757</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>351359253</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAWccEAFnHQABZx4hAWcfAQF3HCABdx0AAXce\n\t\t\t\t\tEwF3H5ABhxwwAYcdAAGHHoEBhx8CAaccUAGn\n\t\t\t\t\tHQABpx6gAacfkA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>3</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>Custom IDT 92HD87B1/3 by RehabMan</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>287143633</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAMcegQDHHwM=\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>12</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>InsanelyDeepak - IDT92HD87B1/3</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>287143633</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tANccAADXHQAA1x4XANcfmQEXHCABFx0AARce\n\t\t\t\t\toAEXH5kAtxwwALcdQAC3HiEAtx8BAMccQADH\n\t\t\t\t\tHRAAxx6AAMcfAQ==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>13</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>Custom IDT92HD87B2/4 by RehabMan</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>287143641</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAMcegQDHHwMBFx6gARcfkA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>12</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>Custom IDT92HD95 by RehabMan</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>287143573</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAKccEACnHRAApx4hAKcfAgCnDAIAtxwgALcd\n\t\t\t\t\tEAC3HqEAtx8CALcMAgDXHDAA1x0BANceFwDX\n\t\t\t\t\tH5AA1wwCAOccQADnHQEA5x6gAOcfkA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>12</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>Mirone - IDT 92HD66C3/65</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>287143667</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAKccEACnHUAApx4hAKcfAgC3HCAAtx1AALce\n\t\t\t\t\tEwC3H5AAxxwwAMcdkADHHoEAxx8CAOccQADn\n\t\t\t\t\tHZAA5x6gAOcfkA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>3</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>Mirone - IDT 92HD71B7X</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>287143602</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAKccEACnHRAApx4hAKcfAAC3HCAAtx0QALce\n\t\t\t\t\tgQC3HwIAxxwwAMcdAADHHvAAxx9AANccQADX\n\t\t\t\t\tHQAA1x4XANcfkADnHFAA5x0QAOceoQDnHyAB\n\t\t\t\t\tRxxgAUcdAAFHHvABRx9AAYcccAGHHQABhx6g\n\t\t\t\t\tAYcfkAGXHIABlx0AAZce8AGXH0AB5xyQAecd\n\t\t\t\t\tEAHnHkYB5x8BAfccoAH3HQAB9x7wAfcfQAIH\n\t\t\t\t\tHLACBx0AAgce8AIHH0ACdxzAAncdAAJ3HvAC\n\t\t\t\t\tdx9A\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>3</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>Dell Studio 1535 - IDT 92HD73C1X5 by chunnann</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>287143541</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAKccEACnHRAApx4hAKcfAwDXHCAA1x0BANce\n\t\t\t\t\tFwDXH5AA5xwwAOcdEADnHoEA5x8DAPccQAD3\n\t\t\t\t\tHRAA9x4BAPcfAwE3HFABNx0BATceoAE3H5A=\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>19</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>Andres ZeroCross - IDT 92HD73C1X5 for Alienware M17X R2</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>287143541</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAKccEACnHRAApx4hAKcfBADHHCAAxx0QAMce\n\t\t\t\t\tgQDHHwQA5xwwAOcdAQDnHhcA5x+QATccQAE3\n\t\t\t\t\tHQEBNx6gATcfkA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>21</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>Mirone - IDT 92HD81B1C5</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>287143637</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAKccIACnHRAApx6BAKcfAgC3HDAAtx0QALce\n\t\t\t\t\tIQC3HwIA1xxAANcdAADXHhcA1x+QARccUAEX\n\t\t\t\t\tHQABFx6gARcfkA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>3</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>Goldfish64 - IDT 92HD81B1C5 for Dell Latitude E6410</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>287143637</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAKccIACnHRAApx6BAKcfBACnDAIAtxwwALcd\n\t\t\t\t\tEAC3HiEAtx8EALcMAgDHHPAAxx0AAMceAADH\n\t\t\t\t\tH0AA1xxAANcdAQDXHhcA1x+QANcMAgDnHPAA\n\t\t\t\t\t5x0AAOceAADnH0AA9xzwAPcdAAD3HgAA9x9A\n\t\t\t\t\tAQcc8AEHHQABBx4AAQcfQAEXHFABFx0BARce\n\t\t\t\t\toAEXH5AB9xzwAfcdAAH3HgAB9x9AAgcc8AIH\n\t\t\t\t\tHQACBx4AAgcfQA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>11</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>Mirone - IDT 92HD81B1X5</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>287143429</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAKccIACnHRAApx6hAKcfAQC3HBAAtx0QALce\n\t\t\t\t\tIQC3HwEA1xwwANcdAADXHhcA1x+QAOcc8ADn\n\t\t\t\t\tHQAA5x4AAOcfQAD3HEAA9x0AAPceAAD3H0AB\n\t\t\t\t\tBxxQAQcdAAEHHgABBx9AARccYAEXHQABFx6j\n\t\t\t\t\tARcf0AH3HHAB9x0AAfceAAH3H0ACBxyAAgcd\n\t\t\t\t\tAAIHHgACBx9A\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>3</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>Custom IDT 92HD81B1X5 by Andres ZeroCross</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>283902515</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tASccEAEnHRABJx6BAScfBAFHHCABRx0BAUce\n\t\t\t\t\tFwFHH5ABRwwCAXcc8AF3HQABdx4AAXcfQAGH\n\t\t\t\t\tHPABhx0AAYceAAGHH0ABlxzwAZcdAAGXHgAB\n\t\t\t\t\tlx9AAacc8AGnHQABpx4AAacfQAG3HDABtx0B\n\t\t\t\t\tAbceoAG3H5AB1xzwAdcdAAHXHgAB1x9AAecc\n\t\t\t\t\t8AHnHQAB5x4AAecfQAIXHEACFx0QAhceIQIX\n\t\t\t\t\tHwMCFwwC\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>11</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>RehabMan - IDT 92HD81B1X5</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>287143429</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAMcegQDHHwMBFx6gARcfkA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>12</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>Custom IDT 92HD81B1X5 by Sergey_Galan for HP ProBook 4520s</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>287143429</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAKccIACnHRAApx6BAKcfAQC3HFAAtx0QALce\n\t\t\t\t\tIQC3HwEA1xwwANcdAQDXHhAA1x+QAOcc8ADn\n\t\t\t\t\tHQAA5x4AAOcfQAD3HPAA9x0AAPceAAD3H0AB\n\t\t\t\t\tBxzwAQcdAAEHHgABBx9AARccEAEXHQEBFx6g\n\t\t\t\t\tARcfkAH3HPAB9x0AAfceAAH3H0ACBxzwAgcd\n\t\t\t\t\tAAIHHgACBx9AAMcc8ADHHQAAxx4AAMcfQA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>20</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>Custom IDT 92HD81B1X5 by Sergey_Galan for HP DV6-6169er</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>287143429</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAMccIADHHRAAxx6BAMcfAQC3HFAAtx0QALce\n\t\t\t\t\tIQC3HwEA9xwwAPcdAQD3HhAA9x+QAOcc8ADn\n\t\t\t\t\tHQAA5x4AAOcfQADXHPAA1x0AANceAADXH0AB\n\t\t\t\t\tBxzwAQcdAAEHHgABBx9AARccEAEXHQEBFx6g\n\t\t\t\t\tARcfkAH3HPAB9x0AAfceAAH3H0ACBxzwAgcd\n\t\t\t\t\tAAIHHgACBx9AAKcc8ACnHQAApx4AAKcfQA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>21</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>Custom IDT 92HD81B1X5 by Gujiangjiang for HP Pavilion g4 1000 series</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>287143429</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tARccAAEXHQEBFx6jARcfmQDHHBAAxx0QAMce\n\t\t\t\t\tgQDHHwEA1xwgANcdAQDXHhMA1x+ZALccMAC3\n\t\t\t\t\tHRAAtx4hALcfAQFHDAI=\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>28</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>Mirone - IDT 92HD75B2X5</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>287143432</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAKccEACnHRAApx4hAKcfAQC3HCAAtx0QALce\n\t\t\t\t\tgQC3HwEAxxwwAMcdEADHHqAAxx+QANccQADX\n\t\t\t\t\tHQAA1x4RANcfkADnHFAA5x0AAOce8ADnH0AB\n\t\t\t\t\tRxxgAUcdAAFHHvABRx9AAYcccAGHHQABhx7w\n\t\t\t\t\tAYcfQAHnHIAB5x0AAece8AHnH0AB9xyQAfcd\n\t\t\t\t\tAAH3HvAB9x9AAgccoAIHHQACBx7wAgcfQA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>3</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>Mirone - IDT 92HD75B3X5</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>287143427</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tALccEAC3HRAAtx6gALcfkADXHCAA1x0AANce\n\t\t\t\t\tFwDXH5AA9xwwAPcdQAD3HiEA9x8BAYccQAGH\n\t\t\t\t\tHZABhx6BAYcfAQ==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>3</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>Mirone - IDT 92HD75B3X5</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>287143427</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tALccAAC3HQAAtx6nALcfmQDXHBAA1x0AANce\n\t\t\t\t\tFwDXH5kA9xwgAPcdQAD3HiEA9x8B\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>11</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>Mirone - IDT 92HD90BXX</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>287143655</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tALccEAC3HRAAtx4hALcfAACnHCAApx0QAKce\n\t\t\t\t\tgQCnHwABFxwwARcdkAEXHqABFx+QANccQADX\n\t\t\t\t\tHQAA1x4XANcfkADnHFAA5x0QAOceAQDnHyAA\n\t\t\t\t\t9xxgAPcdEAD3HqEA9x8gAQcc8AEHHQABBx4A\n\t\t\t\t\tAQcfQA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>3</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>vusun123 - IDT 92HD90BXX</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>287143655</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAKccIACnHRAApx6BAKcfAAC3HBAAtx0QALce\n\t\t\t\t\tIQC3HwAA1xxAANcdAADXHhcA1x+QARccMAEX\n\t\t\t\t\tHQABFx6gARcf0A==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>12</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>Mirone - IDT 92HD91BXX </string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>287143648</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAKccAACnHRAApx6BAKcfAQC3HBAAtx0QALce\n\t\t\t\t\tIQC3HwMAxxwgAMcdAADHHgAAxx9JARccMAEX\n\t\t\t\t\tHQABFx6gARcfmQDXHEAA1x0BANceFwDXH5kA\n\t\t\t\t\t5xxQAOcdEADnHgEA5x8jAQccYAEHHQABBx4A\n\t\t\t\t\tAQcfSQH3HHAB9x0AAfceAAH3H0kCBxyAAgcd\n\t\t\t\t\tAAIHHgACBx9J\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>3</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>RehabMan - IDT 92HD91BXX for HP Envy</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>287143648</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAKccAACnHRAApx6BAKcfAQC3HBAAtx0QALce\n\t\t\t\t\tIQC3HwMAxxwgAMcdAADHHgAAxx9JARccMAEX\n\t\t\t\t\tHQABFx6gARcfmQD3HEAA9x0BAPceFwD3H5kA\n\t\t\t\t\t5xxQAOcdEADnHgEA5x8jAQccYAEHHQABBx4A\n\t\t\t\t\tAQcfSQH3HHAB9x0AAfceAAH3H0kCBxyAAgcd\n\t\t\t\t\tAAIHHgACBx9J\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>12</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>MacPeet - IDT92HD91BXX for HP Envy 6 1171-SG</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>287143648</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tALccEAC3HRAAtx4hALcfAAC3DAIAxxwgAMcd\n\t\t\t\t\tEADHHoEAxx8AARccMAEXHQABFx6jARcfmQDX\n\t\t\t\t\tHEAA1x0AANceEADXH5AA1wwC\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>13</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>jl4c - IDT 92HD91BXX for HP Envy</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>287143648</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tALccIAC3HRAAtx4hALcfAwD3HDIA9x0BAPce\n\t\t\t\t\tFwD3H5ABFxwQARcdAQEXHqYBFx+XANcc8ADX\n\t\t\t\t\tHQAA1x4AANcfQAEHHPABBx0AAQceAAEHH0AA\n\t\t\t\t\tpxzwAKcdAACnHgAApx9AAMcc8ADHHQAAxx4A\n\t\t\t\t\tAMcfQADnHPAA5x0AAOceAADnH0AB9xzwAfcd\n\t\t\t\t\tAAH3HgAB9x9AAgcc8AIHHQACBx4AAgcfQA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>33</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>macish - IDT 92HD91BXX for HP Elitebook G1</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>287143648</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAKccAACnHRAApx6BAKcfAQC3HBAAtx0QALce\n\t\t\t\t\tIQC3HwMAxxwgAMcdAADHHgAAxx9JARccMAEX\n\t\t\t\t\tHQABFx6gARcfmQD3HEAA9x0BAPceFwD3H5kA\n\t\t\t\t\t5xxQAOcdEADnHgEA5x8jAQccYAEHHQABBx4A\n\t\t\t\t\tAQcfSQH3HHAB9x0AAfceAAH3H0kCBxyAAgcd\n\t\t\t\t\tAAIHHgACBx9J\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>84</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>Custom - IDT 92HD93BXX Dell Latitude E6430</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>287143647</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAKccIACnHRAApx6BAKcfAACnDAIAtxwQALcd\n\t\t\t\t\tEAC3HiEAtx8AALcMAgDXHEAA1x0BANceFwDX\n\t\t\t\t\tH5AA1wwCAOccUADnHRAA5x4BAOcfIADnDAIA\n\t\t\t\t\t9xxgAPcdEAD3HoEA9x8gAQcc8AEHHQABBx4A\n\t\t\t\t\tAQcfQAEXHDABFx0BARceoAEXH5A=\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>12</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>Mirone - IDT 92HD99BXX </string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>287143653</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAKccEACnHZAApx6BAKcfAgC3HCAAtx1AALce\n\t\t\t\t\tIQC3HwIAxxwwAMcdAADHHvAAxx9AANccQADX\n\t\t\t\t\tHQAA1x4TANcf0AD3HFAA9x0AAPce8AD3H0AB\n\t\t\t\t\tFxxgARcdAAEXHqABFx+QANcMAg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>3</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>Mirone - IDT 92HD87B1</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>287143429</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAKccIACnHRAApx6hAKcfAQC3HBAAtx0QALce\n\t\t\t\t\tIQC3HwEA1xwwANcdAADXHhcA1x+QAOcc8ADn\n\t\t\t\t\tHQAA5x4AAOcfQAD3HEAA9x0AAPceAAD3H0AB\n\t\t\t\t\tBxxQAQcdAAEHHgABBx9AARccYAEXHQABFx6j\n\t\t\t\t\tARcf0AH3HHAB9x0AAfceAAH3H0ACBxyAAgcd\n\t\t\t\t\tAAIHHgACBx9A\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>3</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>Goldfish64 - STAC9200 for Dell Precision 390</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>2206496400</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAIcc8ACHHQAAhx4AAIcfQACXHPAAlx0AAJce\n\t\t\t\t\tAACXH0AA1xwQANcdEADXHiEA1x8CAOccIADn\n\t\t\t\t\tHQEA5x4QAOcfkAD3HDAA9x0BAPceoAD3H5AB\n\t\t\t\t\tBxxAAQcdEAEHHoEBBx8CARcc8AEXHQABFx4A\n\t\t\t\t\tARcfQAEnHPABJx0AASceAAEnH0A=\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>11</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>VIA VT1705 ECS H81H3-M4 (1.0A) by Andres ZeroCross</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>285624160</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAkccEAJHHQACRx4AAkcfAQKHHCAChx1AAoce\n\t\t\t\t\tIQKHHwICtxwwArcdkAK3HoECtx8BAwccQAMH\n\t\t\t\t\tHQADBx6gAwcfkAJHDAI=\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>21</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>Mirone - VIA VT1802</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>285639750</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAkccEAJHHQACRx4TAkcfkAJXHCACVx1AAlce\n\t\t\t\t\tIQJXHwEClxxAApcdAAKXHqAClx+QArccYAK3\n\t\t\t\t\tHZACtx6BArcfAgLXHHAC1x0QAtceRALXHwAC\n\t\t\t\t\tRwwCAlcMAw==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>3</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>VIA VT1802 for hasee k650d</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>285639750</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAkccEAJHHQACRx4TAkcfkAJXHCACVx1AAlce\n\t\t\t\t\tIQJXHwEClxxAApcdAAKXHqAClx+QArccYAK3\n\t\t\t\t\tHZACtx6BArcfAgLXHHAC1x0QAtceRALXHwAC\n\t\t\t\t\tRwwCAlcMAw==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>65</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>ChalesYu - VIA VT1802</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>285639750</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAkccQAJHHQACRx4XAkcfkAJHDAICVxxQAlcd\n\t\t\t\t\tEAJXHiECVx8CAlcMAgMHHBADBx0AAwceoAMH\n\t\t\t\t\tH5A=\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>33</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>Mirone - VIA VT2021</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>285606977</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tIkccECJHHUAiRx4BIkcfASKHHCAihx1AIoce\n\t\t\t\t\tISKHHwEilxwwIpcdkCKXHqEilx8CIqccQCKn\n\t\t\t\t\tHTAipx6BIqcfASK3HFAitx2QIrcegSK3HwEi\n\t\t\t\t\t5xxgIucdECLnHkUi5x8A\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>5</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>Mirone - VIA VT2021</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>285606977</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tIkccECJHHUAiRx4RIkcfASJXHCAiVx0QIlce\n\t\t\t\t\tASJXHwEiZxwwImcdYCJnHgEiZx8BInccQCJ3\n\t\t\t\t\tHSAidx4BIncfASKHHFAihx1AIoceISKHHwEi\n\t\t\t\t\tlxxgIpcdkCKXHqEilx8CIqcccCKnHTAipx6B\n\t\t\t\t\tIqcfASK3HIAitx2QIrcegSK3HwEi5xygIucd\n\t\t\t\t\tECLnHkUi5x8A\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>7</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAwAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>SonicBSV - VIA VT2020/2021</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>285606977</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tIhcc8CIXHQAiFx4AIhcfQCJHHBAiRx1AIkce\n\t\t\t\t\tESJHHwEiRwwCIlcc8CJXHQAiVx4AIlcfQCJn\n\t\t\t\t\tHPAiZx0AImceACJnH0AidxzwIncdACJ3HgAi\n\t\t\t\t\tdx9AIoccICKHHUAihx4hIocfASKXHEAilx2Q\n\t\t\t\t\tIpceoCKXH5AilwchIqccgCKnHTAipx6BIqcf\n\t\t\t\t\tASK3HPAitx0AIrceACK3H0AixxzwIscdACLH\n\t\t\t\t\tHgAixx9AItcc8CLXHQAi1x4AItcfQCLnHJAi\n\t\t\t\t\t5x1hIuceSyLnHwEi9xzwIvcdACL3HgAi9x9A\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>9</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>AFGLowPowerState</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAQAAAA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Codec</key>\n\t\t\t\t\t<string>Custom CX20757 Lenovo G510 by Z39</string>\n\t\t\t\t\t<key>CodecID</key>\n\t\t\t\t\t<integer>351359253</integer>\n\t\t\t\t\t<key>ConfigData</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAWccQAFnHRABZx4hAWcfAQF3HBABdx0BAXce\n\t\t\t\t\tFwF3H5ABhxzwAYcdAAGHHgABhx9AAZccMAGX\n\t\t\t\t\tHRABlx6BAZcfAQGnHCABpx0BAacepwGnH5A=\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>FuncGroup</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>LayoutID</key>\n\t\t\t\t\t<integer>28</integer>\n\t\t\t\t</dict>\n\t\t\t</array>\n\t\t\t<key>IOClass</key>\n\t\t\t<string>AppleHDAHardwareConfigDriver</string>\n\t\t\t<key>IOMatchCategory</key>\n\t\t\t<string>AppleHDAHardwareConfigDriver</string>\n\t\t\t<key>IOProviderClass</key>\n\t\t\t<string>AppleHDAHardwareConfigDriverLoader</string>\n\t\t</dict>\n\t\t<key>as.vit9696.AppleALC</key>\n\t\t<dict>\n\t\t\t<key>CFBundleIdentifier</key>\n\t\t\t<string>as.vit9696.AppleALC</string>\n\t\t\t<key>IOClass</key>\n\t\t\t<string>AppleALC</string>\n\t\t\t<key>IOMatchCategory</key>\n\t\t\t<string>AppleALC</string>\n\t\t\t<key>IOProviderClass</key>\n\t\t\t<string>IOResources</string>\n\t\t\t<key>IOResourceMatch</key>\n\t\t\t<string>IOKit</string>\n\t\t</dict>\n\t</dict>\n\t<key>NSHumanReadableCopyright</key>\n\t<string>Copyright © 2017 vit9696. All rights reserved.</string>\n\t<key>OSBundleCompatibleVersion</key>\n\t<string>1.0</string>\n\t<key>OSBundleLibraries</key>\n\t<dict>\n\t\t<key>as.vit9696.Lilu</key>\n\t\t<string>1.2.0</string>\n\t\t<key>com.apple.iokit.IOPCIFamily</key>\n\t\t<string>1.0.0b1</string>\n\t\t<key>com.apple.kpi.bsd</key>\n\t\t<string>12.0.0</string>\n\t\t<key>com.apple.kpi.dsep</key>\n\t\t<string>12.0.0</string>\n\t\t<key>com.apple.kpi.iokit</key>\n\t\t<string>12.0.0</string>\n\t\t<key>com.apple.kpi.libkern</key>\n\t\t<string>12.0.0</string>\n\t\t<key>com.apple.kpi.mach</key>\n\t\t<string>12.0.0</string>\n\t\t<key>com.apple.kpi.unsupported</key>\n\t\t<string>12.0.0</string>\n\t</dict>\n\t<key>OSBundleRequired</key>\n\t<string>Root</string>\n</dict>\n</plist>\n"
  },
  {
    "path": "EFI/CLOVER/kexts/Other/AppleBacklightInjector.kext/Contents/Info.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>CFBundleDevelopmentRegion</key>\n\t<string>English</string>\n\t<key>CFBundleGetInfoString</key>\n\t<string>0.9.0, Copyright 2013 RehabMan Inc. All rights reserved.</string>\n\t<key>CFBundleIdentifier</key>\n\t<string>org.rehabman.injector.AppleBacklightInjector</string>\n\t<key>CFBundleInfoDictionaryVersion</key>\n\t<string>6.0</string>\n\t<key>CFBundleName</key>\n\t<string>AppleBacklightInjector</string>\n\t<key>CFBundlePackageType</key>\n\t<string>KEXT</string>\n\t<key>CFBundleShortVersionString</key>\n\t<string>0.9.0</string>\n\t<key>CFBundleSignature</key>\n\t<string>????</string>\n\t<key>CFBundleSupportedPlatforms</key>\n\t<array>\n\t\t<string>MacOSX</string>\n\t</array>\n\t<key>CFBundleVersion</key>\n\t<string>0.9.0</string>\n\t<key>IOKitPersonalities</key>\n\t<dict>\n\t\t<key>AppleIntelPanelA</key>\n\t\t<dict>\n\t\t\t<key>ApplePanels</key>\n\t\t\t<dict>\n\t\t\t\t<key>F10Txxxx</key>\n\t\t\t\t<data>ABEAAAA0AFIAcwCUAL4A+gE2AXIBxQIvArkDYAQaBQoGDgcQ</data>\n\t\t\t\t<key>F11Txxxx</key>\n\t\t\t\t<data>ABEAAAA2AFQAfQCyAPUBSQGxAisCuANZBBME7AXzBzQIrwrZ</data>\n\t\t\t\t<key>F12Txxxx</key>\n\t\t\t\t<data>ABEAAAAYACcAOgBSAHEAlgDEAPwBQAGTAfYCbgL+A6oEeAVs</data>\n\t\t\t</dict>\n\t\t\t<key>CFBundleIdentifier</key>\n\t\t\t<string>com.apple.driver.AppleBacklight</string>\n\t\t\t<key>IOClass</key>\n\t\t\t<string>AppleIntelPanelA</string>\n\t\t\t<key>IODisplayParameters</key>\n\t\t\t<dict>\n\t\t\t\t<key>brightness</key>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>max</key>\n\t\t\t\t\t<integer>255</integer>\n\t\t\t\t\t<key>min</key>\n\t\t\t\t\t<integer>40</integer>\n\t\t\t\t</dict>\n\t\t\t\t<key>commit</key>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>reg</key>\n\t\t\t\t\t<integer>0</integer>\n\t\t\t\t</dict>\n\t\t\t</dict>\n\t\t\t<key>IOMatchCategory</key>\n\t\t\t<string>IODisplayParameters</string>\n\t\t\t<key>IONameMatch</key>\n\t\t\t<string>backlight</string>\n\t\t\t<key>IOProbeScore</key>\n\t\t\t<integer>2500</integer>\n\t\t\t<key>IOProviderClass</key>\n\t\t\t<string>IOACPIPlatformDevice</string>\n\t\t</dict>\n\t</dict>\n\t<key>OSBundleRequired</key>\n\t<string>Safe Boot</string>\n</dict>\n</plist>\n"
  },
  {
    "path": "EFI/CLOVER/kexts/Other/BrcmBluetoothInjector.kext/Contents/Info.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>BuildMachineOSBuild</key>\n\t<string>18G87</string>\n\t<key>CFBundleIdentifier</key>\n\t<string>org.rehabman.injector.BrcmBluetoothInjector</string>\n\t<key>CFBundleInfoDictionaryVersion</key>\n\t<string>6.0</string>\n\t<key>CFBundleName</key>\n\t<string>BrcmBluetoothInjector</string>\n\t<key>CFBundlePackageType</key>\n\t<string>KEXT</string>\n\t<key>CFBundleShortVersionString</key>\n\t<string>2.2.10</string>\n\t<key>CFBundleSignature</key>\n\t<string>????</string>\n\t<key>CFBundleSupportedPlatforms</key>\n\t<array>\n\t\t<string>MacOSX</string>\n\t</array>\n\t<key>CFBundleVersion</key>\n\t<string>2.2.10</string>\n\t<key>DTCompiler</key>\n\t<string>com.apple.compilers.llvm.clang.1_0</string>\n\t<key>DTPlatformBuild</key>\n\t<string>10G8</string>\n\t<key>DTPlatformVersion</key>\n\t<string>GM</string>\n\t<key>DTSDKBuild</key>\n\t<string>18G74</string>\n\t<key>DTSDKName</key>\n\t<string>macosx10.14</string>\n\t<key>DTXcode</key>\n\t<string>1030</string>\n\t<key>DTXcodeBuild</key>\n\t<string>10G8</string>\n\t<key>IOKitPersonalities</key>\n\t<dict>\n\t\t<key>03f0_231d no firmware</key>\n\t\t<dict>\n\t\t\t<key>CFBundleIdentifier</key>\n\t\t\t<string>com.apple.iokit.BroadcomBluetoothHostControllerUSBTransport</string>\n\t\t\t<key>IOClass</key>\n\t\t\t<string>BroadcomBluetoothHostControllerUSBTransport</string>\n\t\t\t<key>IOProbeScore</key>\n\t\t\t<integer>3000</integer>\n\t\t\t<key>IOProviderClass</key>\n\t\t\t<string>IOUSBHostDevice</string>\n\t\t\t<key>idProduct</key>\n\t\t\t<integer>8989</integer>\n\t\t\t<key>idVendor</key>\n\t\t\t<integer>1008</integer>\n\t\t</dict>\n\t\t<key>0489_e032</key>\n\t\t<dict>\n\t\t\t<key>CFBundleIdentifier</key>\n\t\t\t<string>com.apple.iokit.BroadcomBluetoothHostControllerUSBTransport</string>\n\t\t\t<key>IOClass</key>\n\t\t\t<string>BroadcomBluetoothHostControllerUSBTransport</string>\n\t\t\t<key>IOProbeScore</key>\n\t\t\t<integer>3000</integer>\n\t\t\t<key>IOProviderClass</key>\n\t\t\t<string>IOUSBHostDevice</string>\n\t\t\t<key>idProduct</key>\n\t\t\t<integer>57394</integer>\n\t\t\t<key>idVendor</key>\n\t\t\t<integer>1161</integer>\n\t\t</dict>\n\t\t<key>0489_e042</key>\n\t\t<dict>\n\t\t\t<key>CFBundleIdentifier</key>\n\t\t\t<string>com.apple.iokit.BroadcomBluetoothHostControllerUSBTransport</string>\n\t\t\t<key>IOClass</key>\n\t\t\t<string>BroadcomBluetoothHostControllerUSBTransport</string>\n\t\t\t<key>IOProbeScore</key>\n\t\t\t<integer>3000</integer>\n\t\t\t<key>IOProviderClass</key>\n\t\t\t<string>IOUSBHostDevice</string>\n\t\t\t<key>idProduct</key>\n\t\t\t<integer>57410</integer>\n\t\t\t<key>idVendor</key>\n\t\t\t<integer>1161</integer>\n\t\t</dict>\n\t\t<key>0489_e046</key>\n\t\t<dict>\n\t\t\t<key>CFBundleIdentifier</key>\n\t\t\t<string>com.apple.iokit.BroadcomBluetoothHostControllerUSBTransport</string>\n\t\t\t<key>IOClass</key>\n\t\t\t<string>BroadcomBluetoothHostControllerUSBTransport</string>\n\t\t\t<key>IOProbeScore</key>\n\t\t\t<integer>3000</integer>\n\t\t\t<key>IOProviderClass</key>\n\t\t\t<string>IOUSBHostDevice</string>\n\t\t\t<key>idProduct</key>\n\t\t\t<integer>57414</integer>\n\t\t\t<key>idVendor</key>\n\t\t\t<integer>1161</integer>\n\t\t</dict>\n\t\t<key>0489_e04f</key>\n\t\t<dict>\n\t\t\t<key>CFBundleIdentifier</key>\n\t\t\t<string>com.apple.iokit.BroadcomBluetoothHostControllerUSBTransport</string>\n\t\t\t<key>IOClass</key>\n\t\t\t<string>BroadcomBluetoothHostControllerUSBTransport</string>\n\t\t\t<key>IOProbeScore</key>\n\t\t\t<integer>3000</integer>\n\t\t\t<key>IOProviderClass</key>\n\t\t\t<string>IOUSBHostDevice</string>\n\t\t\t<key>idProduct</key>\n\t\t\t<integer>57423</integer>\n\t\t\t<key>idVendor</key>\n\t\t\t<integer>1161</integer>\n\t\t</dict>\n\t\t<key>0489_e052</key>\n\t\t<dict>\n\t\t\t<key>CFBundleIdentifier</key>\n\t\t\t<string>com.apple.iokit.BroadcomBluetoothHostControllerUSBTransport</string>\n\t\t\t<key>IOClass</key>\n\t\t\t<string>BroadcomBluetoothHostControllerUSBTransport</string>\n\t\t\t<key>IOProbeScore</key>\n\t\t\t<integer>3000</integer>\n\t\t\t<key>IOProviderClass</key>\n\t\t\t<string>IOUSBHostDevice</string>\n\t\t\t<key>idProduct</key>\n\t\t\t<integer>57426</integer>\n\t\t\t<key>idVendor</key>\n\t\t\t<integer>1161</integer>\n\t\t</dict>\n\t\t<key>0489_e055</key>\n\t\t<dict>\n\t\t\t<key>CFBundleIdentifier</key>\n\t\t\t<string>com.apple.iokit.BroadcomBluetoothHostControllerUSBTransport</string>\n\t\t\t<key>IOClass</key>\n\t\t\t<string>BroadcomBluetoothHostControllerUSBTransport</string>\n\t\t\t<key>IOProbeScore</key>\n\t\t\t<integer>3000</integer>\n\t\t\t<key>IOProviderClass</key>\n\t\t\t<string>IOUSBHostDevice</string>\n\t\t\t<key>idProduct</key>\n\t\t\t<integer>57429</integer>\n\t\t\t<key>idVendor</key>\n\t\t\t<integer>1161</integer>\n\t\t</dict>\n\t\t<key>0489_e059</key>\n\t\t<dict>\n\t\t\t<key>CFBundleIdentifier</key>\n\t\t\t<string>com.apple.iokit.BroadcomBluetoothHostControllerUSBTransport</string>\n\t\t\t<key>IOClass</key>\n\t\t\t<string>BroadcomBluetoothHostControllerUSBTransport</string>\n\t\t\t<key>IOProbeScore</key>\n\t\t\t<integer>3000</integer>\n\t\t\t<key>IOProviderClass</key>\n\t\t\t<string>IOUSBHostDevice</string>\n\t\t\t<key>idProduct</key>\n\t\t\t<integer>57433</integer>\n\t\t\t<key>idVendor</key>\n\t\t\t<integer>1161</integer>\n\t\t</dict>\n\t\t<key>0489_e079</key>\n\t\t<dict>\n\t\t\t<key>CFBundleIdentifier</key>\n\t\t\t<string>com.apple.iokit.BroadcomBluetoothHostControllerUSBTransport</string>\n\t\t\t<key>IOClass</key>\n\t\t\t<string>BroadcomBluetoothHostControllerUSBTransport</string>\n\t\t\t<key>IOProbeScore</key>\n\t\t\t<integer>3000</integer>\n\t\t\t<key>IOProviderClass</key>\n\t\t\t<string>IOUSBHostDevice</string>\n\t\t\t<key>idProduct</key>\n\t\t\t<integer>57465</integer>\n\t\t\t<key>idVendor</key>\n\t\t\t<integer>1161</integer>\n\t\t</dict>\n\t\t<key>0489_e07a</key>\n\t\t<dict>\n\t\t\t<key>CFBundleIdentifier</key>\n\t\t\t<string>com.apple.iokit.BroadcomBluetoothHostControllerUSBTransport</string>\n\t\t\t<key>IOClass</key>\n\t\t\t<string>BroadcomBluetoothHostControllerUSBTransport</string>\n\t\t\t<key>IOProbeScore</key>\n\t\t\t<integer>3000</integer>\n\t\t\t<key>IOProviderClass</key>\n\t\t\t<string>IOUSBHostDevice</string>\n\t\t\t<key>idProduct</key>\n\t\t\t<integer>57466</integer>\n\t\t\t<key>idVendor</key>\n\t\t\t<integer>1161</integer>\n\t\t</dict>\n\t\t<key>0489_e087</key>\n\t\t<dict>\n\t\t\t<key>CFBundleIdentifier</key>\n\t\t\t<string>com.apple.iokit.BroadcomBluetoothHostControllerUSBTransport</string>\n\t\t\t<key>IOClass</key>\n\t\t\t<string>BroadcomBluetoothHostControllerUSBTransport</string>\n\t\t\t<key>IOProbeScore</key>\n\t\t\t<integer>3000</integer>\n\t\t\t<key>IOProviderClass</key>\n\t\t\t<string>IOUSBHostDevice</string>\n\t\t\t<key>idProduct</key>\n\t\t\t<integer>57479</integer>\n\t\t\t<key>idVendor</key>\n\t\t\t<integer>1161</integer>\n\t\t</dict>\n\t\t<key>0489_e096</key>\n\t\t<dict>\n\t\t\t<key>CFBundleIdentifier</key>\n\t\t\t<string>com.apple.iokit.BroadcomBluetoothHostControllerUSBTransport</string>\n\t\t\t<key>IOClass</key>\n\t\t\t<string>BroadcomBluetoothHostControllerUSBTransport</string>\n\t\t\t<key>IOProbeScore</key>\n\t\t\t<integer>3000</integer>\n\t\t\t<key>IOProviderClass</key>\n\t\t\t<string>IOUSBHostDevice</string>\n\t\t\t<key>idProduct</key>\n\t\t\t<integer>57494</integer>\n\t\t\t<key>idVendor</key>\n\t\t\t<integer>1161</integer>\n\t\t</dict>\n\t\t<key>0489_e0a1</key>\n\t\t<dict>\n\t\t\t<key>CFBundleIdentifier</key>\n\t\t\t<string>com.apple.iokit.BroadcomBluetoothHostControllerUSBTransport</string>\n\t\t\t<key>IOClass</key>\n\t\t\t<string>BroadcomBluetoothHostControllerUSBTransport</string>\n\t\t\t<key>IOProbeScore</key>\n\t\t\t<integer>3000</integer>\n\t\t\t<key>IOProviderClass</key>\n\t\t\t<string>IOUSBHostDevice</string>\n\t\t\t<key>idProduct</key>\n\t\t\t<integer>57505</integer>\n\t\t\t<key>idVendor</key>\n\t\t\t<integer>1161</integer>\n\t\t</dict>\n\t\t<key>04ca_2003</key>\n\t\t<dict>\n\t\t\t<key>CFBundleIdentifier</key>\n\t\t\t<string>com.apple.iokit.BroadcomBluetoothHostControllerUSBTransport</string>\n\t\t\t<key>IOClass</key>\n\t\t\t<string>BroadcomBluetoothHostControllerUSBTransport</string>\n\t\t\t<key>IOProbeScore</key>\n\t\t\t<integer>3000</integer>\n\t\t\t<key>IOProviderClass</key>\n\t\t\t<string>IOUSBHostDevice</string>\n\t\t\t<key>idProduct</key>\n\t\t\t<integer>8195</integer>\n\t\t\t<key>idVendor</key>\n\t\t\t<integer>1226</integer>\n\t\t</dict>\n\t\t<key>04ca_2004</key>\n\t\t<dict>\n\t\t\t<key>CFBundleIdentifier</key>\n\t\t\t<string>com.apple.iokit.BroadcomBluetoothHostControllerUSBTransport</string>\n\t\t\t<key>IOClass</key>\n\t\t\t<string>BroadcomBluetoothHostControllerUSBTransport</string>\n\t\t\t<key>IOProbeScore</key>\n\t\t\t<integer>3000</integer>\n\t\t\t<key>IOProviderClass</key>\n\t\t\t<string>IOUSBHostDevice</string>\n\t\t\t<key>idProduct</key>\n\t\t\t<integer>8196</integer>\n\t\t\t<key>idVendor</key>\n\t\t\t<integer>1226</integer>\n\t\t</dict>\n\t\t<key>04ca_2005</key>\n\t\t<dict>\n\t\t\t<key>CFBundleIdentifier</key>\n\t\t\t<string>com.apple.iokit.BroadcomBluetoothHostControllerUSBTransport</string>\n\t\t\t<key>IOClass</key>\n\t\t\t<string>BroadcomBluetoothHostControllerUSBTransport</string>\n\t\t\t<key>IOProbeScore</key>\n\t\t\t<integer>3000</integer>\n\t\t\t<key>IOProviderClass</key>\n\t\t\t<string>IOUSBHostDevice</string>\n\t\t\t<key>idProduct</key>\n\t\t\t<integer>8197</integer>\n\t\t\t<key>idVendor</key>\n\t\t\t<integer>1226</integer>\n\t\t</dict>\n\t\t<key>04ca_2006</key>\n\t\t<dict>\n\t\t\t<key>CFBundleIdentifier</key>\n\t\t\t<string>com.apple.iokit.BroadcomBluetoothHostControllerUSBTransport</string>\n\t\t\t<key>IOClass</key>\n\t\t\t<string>BroadcomBluetoothHostControllerUSBTransport</string>\n\t\t\t<key>IOProbeScore</key>\n\t\t\t<integer>3000</integer>\n\t\t\t<key>IOProviderClass</key>\n\t\t\t<string>IOUSBHostDevice</string>\n\t\t\t<key>idProduct</key>\n\t\t\t<integer>8198</integer>\n\t\t\t<key>idVendor</key>\n\t\t\t<integer>1226</integer>\n\t\t</dict>\n\t\t<key>04ca_2009</key>\n\t\t<dict>\n\t\t\t<key>CFBundleIdentifier</key>\n\t\t\t<string>com.apple.iokit.BroadcomBluetoothHostControllerUSBTransport</string>\n\t\t\t<key>IOClass</key>\n\t\t\t<string>BroadcomBluetoothHostControllerUSBTransport</string>\n\t\t\t<key>IOProbeScore</key>\n\t\t\t<integer>3000</integer>\n\t\t\t<key>IOProviderClass</key>\n\t\t\t<string>IOUSBHostDevice</string>\n\t\t\t<key>idProduct</key>\n\t\t\t<integer>8201</integer>\n\t\t\t<key>idVendor</key>\n\t\t\t<integer>1226</integer>\n\t\t</dict>\n\t\t<key>04ca_200a</key>\n\t\t<dict>\n\t\t\t<key>CFBundleIdentifier</key>\n\t\t\t<string>com.apple.iokit.BroadcomBluetoothHostControllerUSBTransport</string>\n\t\t\t<key>IOClass</key>\n\t\t\t<string>BroadcomBluetoothHostControllerUSBTransport</string>\n\t\t\t<key>IOProbeScore</key>\n\t\t\t<integer>3000</integer>\n\t\t\t<key>IOProviderClass</key>\n\t\t\t<string>IOUSBHostDevice</string>\n\t\t\t<key>idProduct</key>\n\t\t\t<integer>8202</integer>\n\t\t\t<key>idVendor</key>\n\t\t\t<integer>1226</integer>\n\t\t</dict>\n\t\t<key>04ca_200b</key>\n\t\t<dict>\n\t\t\t<key>CFBundleIdentifier</key>\n\t\t\t<string>com.apple.iokit.BroadcomBluetoothHostControllerUSBTransport</string>\n\t\t\t<key>IOClass</key>\n\t\t\t<string>BroadcomBluetoothHostControllerUSBTransport</string>\n\t\t\t<key>IOProbeScore</key>\n\t\t\t<integer>3000</integer>\n\t\t\t<key>IOProviderClass</key>\n\t\t\t<string>IOUSBHostDevice</string>\n\t\t\t<key>idProduct</key>\n\t\t\t<integer>8203</integer>\n\t\t\t<key>idVendor</key>\n\t\t\t<integer>1226</integer>\n\t\t</dict>\n\t\t<key>04ca_200c</key>\n\t\t<dict>\n\t\t\t<key>CFBundleIdentifier</key>\n\t\t\t<string>com.apple.iokit.BroadcomBluetoothHostControllerUSBTransport</string>\n\t\t\t<key>IOClass</key>\n\t\t\t<string>BroadcomBluetoothHostControllerUSBTransport</string>\n\t\t\t<key>IOProbeScore</key>\n\t\t\t<integer>3000</integer>\n\t\t\t<key>IOProviderClass</key>\n\t\t\t<string>IOUSBHostDevice</string>\n\t\t\t<key>idProduct</key>\n\t\t\t<integer>8204</integer>\n\t\t\t<key>idVendor</key>\n\t\t\t<integer>1226</integer>\n\t\t</dict>\n\t\t<key>04ca_200e</key>\n\t\t<dict>\n\t\t\t<key>CFBundleIdentifier</key>\n\t\t\t<string>com.apple.iokit.BroadcomBluetoothHostControllerUSBTransport</string>\n\t\t\t<key>IOClass</key>\n\t\t\t<string>BroadcomBluetoothHostControllerUSBTransport</string>\n\t\t\t<key>IOProbeScore</key>\n\t\t\t<integer>3000</integer>\n\t\t\t<key>IOProviderClass</key>\n\t\t\t<string>IOUSBHostDevice</string>\n\t\t\t<key>idProduct</key>\n\t\t\t<integer>8206</integer>\n\t\t\t<key>idVendor</key>\n\t\t\t<integer>1226</integer>\n\t\t</dict>\n\t\t<key>04ca_200f</key>\n\t\t<dict>\n\t\t\t<key>CFBundleIdentifier</key>\n\t\t\t<string>com.apple.iokit.BroadcomBluetoothHostControllerUSBTransport</string>\n\t\t\t<key>IOClass</key>\n\t\t\t<string>BroadcomBluetoothHostControllerUSBTransport</string>\n\t\t\t<key>IOProbeScore</key>\n\t\t\t<integer>3000</integer>\n\t\t\t<key>IOProviderClass</key>\n\t\t\t<string>IOUSBHostDevice</string>\n\t\t\t<key>idProduct</key>\n\t\t\t<integer>8207</integer>\n\t\t\t<key>idVendor</key>\n\t\t\t<integer>1226</integer>\n\t\t</dict>\n\t\t<key>04ca_2012</key>\n\t\t<dict>\n\t\t\t<key>CFBundleIdentifier</key>\n\t\t\t<string>com.apple.iokit.BroadcomBluetoothHostControllerUSBTransport</string>\n\t\t\t<key>IOClass</key>\n\t\t\t<string>BroadcomBluetoothHostControllerUSBTransport</string>\n\t\t\t<key>IOProbeScore</key>\n\t\t\t<integer>3000</integer>\n\t\t\t<key>IOProviderClass</key>\n\t\t\t<string>IOUSBHostDevice</string>\n\t\t\t<key>idProduct</key>\n\t\t\t<integer>8210</integer>\n\t\t\t<key>idVendor</key>\n\t\t\t<integer>1226</integer>\n\t\t</dict>\n\t\t<key>04ca_2016</key>\n\t\t<dict>\n\t\t\t<key>CFBundleIdentifier</key>\n\t\t\t<string>com.apple.iokit.BroadcomBluetoothHostControllerUSBTransport</string>\n\t\t\t<key>IOClass</key>\n\t\t\t<string>BroadcomBluetoothHostControllerUSBTransport</string>\n\t\t\t<key>IOProbeScore</key>\n\t\t\t<integer>3000</integer>\n\t\t\t<key>IOProviderClass</key>\n\t\t\t<string>IOUSBHostDevice</string>\n\t\t\t<key>idProduct</key>\n\t\t\t<integer>8214</integer>\n\t\t\t<key>idVendor</key>\n\t\t\t<integer>1226</integer>\n\t\t</dict>\n\t\t<key>04f2_b4a1</key>\n\t\t<dict>\n\t\t\t<key>CFBundleIdentifier</key>\n\t\t\t<string>com.apple.iokit.BroadcomBluetoothHostControllerUSBTransport</string>\n\t\t\t<key>IOClass</key>\n\t\t\t<string>BroadcomBluetoothHostControllerUSBTransport</string>\n\t\t\t<key>IOProbeScore</key>\n\t\t\t<integer>3000</integer>\n\t\t\t<key>IOProviderClass</key>\n\t\t\t<string>IOUSBHostDevice</string>\n\t\t\t<key>idProduct</key>\n\t\t\t<integer>46241</integer>\n\t\t\t<key>idVendor</key>\n\t\t\t<integer>1266</integer>\n\t\t</dict>\n\t\t<key>050d_065a</key>\n\t\t<dict>\n\t\t\t<key>CFBundleIdentifier</key>\n\t\t\t<string>com.apple.iokit.BroadcomBluetoothHostControllerUSBTransport</string>\n\t\t\t<key>IOClass</key>\n\t\t\t<string>BroadcomBluetoothHostControllerUSBTransport</string>\n\t\t\t<key>IOProbeScore</key>\n\t\t\t<integer>3000</integer>\n\t\t\t<key>IOProviderClass</key>\n\t\t\t<string>IOUSBHostDevice</string>\n\t\t\t<key>idProduct</key>\n\t\t\t<integer>1626</integer>\n\t\t\t<key>idVendor</key>\n\t\t\t<integer>1293</integer>\n\t\t</dict>\n\t\t<key>0930_021e</key>\n\t\t<dict>\n\t\t\t<key>CFBundleIdentifier</key>\n\t\t\t<string>com.apple.iokit.BroadcomBluetoothHostControllerUSBTransport</string>\n\t\t\t<key>IOClass</key>\n\t\t\t<string>BroadcomBluetoothHostControllerUSBTransport</string>\n\t\t\t<key>IOProbeScore</key>\n\t\t\t<integer>3000</integer>\n\t\t\t<key>IOProviderClass</key>\n\t\t\t<string>IOUSBHostDevice</string>\n\t\t\t<key>idProduct</key>\n\t\t\t<integer>542</integer>\n\t\t\t<key>idVendor</key>\n\t\t\t<integer>2352</integer>\n\t\t</dict>\n\t\t<key>0930_021f</key>\n\t\t<dict>\n\t\t\t<key>CFBundleIdentifier</key>\n\t\t\t<string>com.apple.iokit.BroadcomBluetoothHostControllerUSBTransport</string>\n\t\t\t<key>IOClass</key>\n\t\t\t<string>BroadcomBluetoothHostControllerUSBTransport</string>\n\t\t\t<key>IOProbeScore</key>\n\t\t\t<integer>3000</integer>\n\t\t\t<key>IOProviderClass</key>\n\t\t\t<string>IOUSBHostDevice</string>\n\t\t\t<key>idProduct</key>\n\t\t\t<integer>543</integer>\n\t\t\t<key>idVendor</key>\n\t\t\t<integer>2352</integer>\n\t\t</dict>\n\t\t<key>0930_0221</key>\n\t\t<dict>\n\t\t\t<key>CFBundleIdentifier</key>\n\t\t\t<string>com.apple.iokit.BroadcomBluetoothHostControllerUSBTransport</string>\n\t\t\t<key>IOClass</key>\n\t\t\t<string>BroadcomBluetoothHostControllerUSBTransport</string>\n\t\t\t<key>IOProbeScore</key>\n\t\t\t<integer>3000</integer>\n\t\t\t<key>IOProviderClass</key>\n\t\t\t<string>IOUSBHostDevice</string>\n\t\t\t<key>idProduct</key>\n\t\t\t<integer>545</integer>\n\t\t\t<key>idVendor</key>\n\t\t\t<integer>2352</integer>\n\t\t</dict>\n\t\t<key>0930_0223</key>\n\t\t<dict>\n\t\t\t<key>CFBundleIdentifier</key>\n\t\t\t<string>com.apple.iokit.BroadcomBluetoothHostControllerUSBTransport</string>\n\t\t\t<key>IOClass</key>\n\t\t\t<string>BroadcomBluetoothHostControllerUSBTransport</string>\n\t\t\t<key>IOProbeScore</key>\n\t\t\t<integer>3000</integer>\n\t\t\t<key>IOProviderClass</key>\n\t\t\t<string>IOUSBHostDevice</string>\n\t\t\t<key>idProduct</key>\n\t\t\t<integer>547</integer>\n\t\t\t<key>idVendor</key>\n\t\t\t<integer>2352</integer>\n\t\t</dict>\n\t\t<key>0930_0225</key>\n\t\t<dict>\n\t\t\t<key>CFBundleIdentifier</key>\n\t\t\t<string>com.apple.iokit.BroadcomBluetoothHostControllerUSBTransport</string>\n\t\t\t<key>IOClass</key>\n\t\t\t<string>BroadcomBluetoothHostControllerUSBTransport</string>\n\t\t\t<key>IOProbeScore</key>\n\t\t\t<integer>3000</integer>\n\t\t\t<key>IOProviderClass</key>\n\t\t\t<string>IOUSBHostDevice</string>\n\t\t\t<key>idProduct</key>\n\t\t\t<integer>549</integer>\n\t\t\t<key>idVendor</key>\n\t\t\t<integer>2352</integer>\n\t\t</dict>\n\t\t<key>0930_0226</key>\n\t\t<dict>\n\t\t\t<key>CFBundleIdentifier</key>\n\t\t\t<string>com.apple.iokit.BroadcomBluetoothHostControllerUSBTransport</string>\n\t\t\t<key>IOClass</key>\n\t\t\t<string>BroadcomBluetoothHostControllerUSBTransport</string>\n\t\t\t<key>IOProbeScore</key>\n\t\t\t<integer>3000</integer>\n\t\t\t<key>IOProviderClass</key>\n\t\t\t<string>IOUSBHostDevice</string>\n\t\t\t<key>idProduct</key>\n\t\t\t<integer>550</integer>\n\t\t\t<key>idVendor</key>\n\t\t\t<integer>2352</integer>\n\t\t</dict>\n\t\t<key>0930_0229</key>\n\t\t<dict>\n\t\t\t<key>CFBundleIdentifier</key>\n\t\t\t<string>com.apple.iokit.BroadcomBluetoothHostControllerUSBTransport</string>\n\t\t\t<key>IOClass</key>\n\t\t\t<string>BroadcomBluetoothHostControllerUSBTransport</string>\n\t\t\t<key>IOProbeScore</key>\n\t\t\t<integer>3000</integer>\n\t\t\t<key>IOProviderClass</key>\n\t\t\t<string>IOUSBHostDevice</string>\n\t\t\t<key>idProduct</key>\n\t\t\t<integer>553</integer>\n\t\t\t<key>idVendor</key>\n\t\t\t<integer>2352</integer>\n\t\t</dict>\n\t\t<key>0a5c_2168</key>\n\t\t<dict>\n\t\t\t<key>CFBundleIdentifier</key>\n\t\t\t<string>com.apple.iokit.BroadcomBluetoothHostControllerUSBTransport</string>\n\t\t\t<key>IOClass</key>\n\t\t\t<string>BroadcomBluetoothHostControllerUSBTransport</string>\n\t\t\t<key>IOProbeScore</key>\n\t\t\t<integer>3000</integer>\n\t\t\t<key>IOProviderClass</key>\n\t\t\t<string>IOUSBHostDevice</string>\n\t\t\t<key>idProduct</key>\n\t\t\t<integer>8552</integer>\n\t\t\t<key>idVendor</key>\n\t\t\t<integer>2652</integer>\n\t\t</dict>\n\t\t<key>0a5c_2169</key>\n\t\t<dict>\n\t\t\t<key>CFBundleIdentifier</key>\n\t\t\t<string>com.apple.iokit.BroadcomBluetoothHostControllerUSBTransport</string>\n\t\t\t<key>IOClass</key>\n\t\t\t<string>BroadcomBluetoothHostControllerUSBTransport</string>\n\t\t\t<key>IOProbeScore</key>\n\t\t\t<integer>3000</integer>\n\t\t\t<key>IOProviderClass</key>\n\t\t\t<string>IOUSBHostDevice</string>\n\t\t\t<key>idProduct</key>\n\t\t\t<integer>8553</integer>\n\t\t\t<key>idVendor</key>\n\t\t\t<integer>2652</integer>\n\t\t</dict>\n\t\t<key>0a5c_216a</key>\n\t\t<dict>\n\t\t\t<key>CFBundleIdentifier</key>\n\t\t\t<string>com.apple.iokit.BroadcomBluetoothHostControllerUSBTransport</string>\n\t\t\t<key>IOClass</key>\n\t\t\t<string>BroadcomBluetoothHostControllerUSBTransport</string>\n\t\t\t<key>IOProbeScore</key>\n\t\t\t<integer>3000</integer>\n\t\t\t<key>IOProviderClass</key>\n\t\t\t<string>IOUSBHostDevice</string>\n\t\t\t<key>idProduct</key>\n\t\t\t<integer>8554</integer>\n\t\t\t<key>idVendor</key>\n\t\t\t<integer>2652</integer>\n\t\t</dict>\n\t\t<key>0a5c_216b</key>\n\t\t<dict>\n\t\t\t<key>CFBundleIdentifier</key>\n\t\t\t<string>com.apple.iokit.BroadcomBluetoothHostControllerUSBTransport</string>\n\t\t\t<key>IOClass</key>\n\t\t\t<string>BroadcomBluetoothHostControllerUSBTransport</string>\n\t\t\t<key>IOProbeScore</key>\n\t\t\t<integer>3000</integer>\n\t\t\t<key>IOProviderClass</key>\n\t\t\t<string>IOUSBHostDevice</string>\n\t\t\t<key>idProduct</key>\n\t\t\t<integer>8555</integer>\n\t\t\t<key>idVendor</key>\n\t\t\t<integer>2652</integer>\n\t\t</dict>\n\t\t<key>0a5c_216c</key>\n\t\t<dict>\n\t\t\t<key>CFBundleIdentifier</key>\n\t\t\t<string>com.apple.iokit.BroadcomBluetoothHostControllerUSBTransport</string>\n\t\t\t<key>IOClass</key>\n\t\t\t<string>BroadcomBluetoothHostControllerUSBTransport</string>\n\t\t\t<key>IOProbeScore</key>\n\t\t\t<integer>3000</integer>\n\t\t\t<key>IOProviderClass</key>\n\t\t\t<string>IOUSBHostDevice</string>\n\t\t\t<key>idProduct</key>\n\t\t\t<integer>8556</integer>\n\t\t\t<key>idVendor</key>\n\t\t\t<integer>2652</integer>\n\t\t</dict>\n\t\t<key>0a5c_216d</key>\n\t\t<dict>\n\t\t\t<key>CFBundleIdentifier</key>\n\t\t\t<string>com.apple.iokit.BroadcomBluetoothHostControllerUSBTransport</string>\n\t\t\t<key>IOClass</key>\n\t\t\t<string>BroadcomBluetoothHostControllerUSBTransport</string>\n\t\t\t<key>IOProbeScore</key>\n\t\t\t<integer>3000</integer>\n\t\t\t<key>IOProviderClass</key>\n\t\t\t<string>IOUSBHostDevice</string>\n\t\t\t<key>idProduct</key>\n\t\t\t<integer>8557</integer>\n\t\t\t<key>idVendor</key>\n\t\t\t<integer>2652</integer>\n\t\t</dict>\n\t\t<key>0a5c_216e</key>\n\t\t<dict>\n\t\t\t<key>CFBundleIdentifier</key>\n\t\t\t<string>com.apple.iokit.BroadcomBluetoothHostControllerUSBTransport</string>\n\t\t\t<key>IOClass</key>\n\t\t\t<string>BroadcomBluetoothHostControllerUSBTransport</string>\n\t\t\t<key>IOProbeScore</key>\n\t\t\t<integer>3000</integer>\n\t\t\t<key>IOProviderClass</key>\n\t\t\t<string>IOUSBHostDevice</string>\n\t\t\t<key>idProduct</key>\n\t\t\t<integer>8558</integer>\n\t\t\t<key>idVendor</key>\n\t\t\t<integer>2652</integer>\n\t\t</dict>\n\t\t<key>0a5c_216f</key>\n\t\t<dict>\n\t\t\t<key>CFBundleIdentifier</key>\n\t\t\t<string>com.apple.iokit.BroadcomBluetoothHostControllerUSBTransport</string>\n\t\t\t<key>IOClass</key>\n\t\t\t<string>BroadcomBluetoothHostControllerUSBTransport</string>\n\t\t\t<key>IOProbeScore</key>\n\t\t\t<integer>3000</integer>\n\t\t\t<key>IOProviderClass</key>\n\t\t\t<string>IOUSBHostDevice</string>\n\t\t\t<key>idProduct</key>\n\t\t\t<integer>8559</integer>\n\t\t\t<key>idVendor</key>\n\t\t\t<integer>2652</integer>\n\t\t</dict>\n\t\t<key>0a5c_21d7</key>\n\t\t<dict>\n\t\t\t<key>CFBundleIdentifier</key>\n\t\t\t<string>com.apple.iokit.BroadcomBluetoothHostControllerUSBTransport</string>\n\t\t\t<key>IOClass</key>\n\t\t\t<string>BroadcomBluetoothHostControllerUSBTransport</string>\n\t\t\t<key>IOProbeScore</key>\n\t\t\t<integer>3000</integer>\n\t\t\t<key>IOProviderClass</key>\n\t\t\t<string>IOUSBHostDevice</string>\n\t\t\t<key>idProduct</key>\n\t\t\t<integer>8663</integer>\n\t\t\t<key>idVendor</key>\n\t\t\t<integer>2652</integer>\n\t\t</dict>\n\t\t<key>0a5c_21de</key>\n\t\t<dict>\n\t\t\t<key>CFBundleIdentifier</key>\n\t\t\t<string>com.apple.iokit.BroadcomBluetoothHostControllerUSBTransport</string>\n\t\t\t<key>IOClass</key>\n\t\t\t<string>BroadcomBluetoothHostControllerUSBTransport</string>\n\t\t\t<key>IOProbeScore</key>\n\t\t\t<integer>3000</integer>\n\t\t\t<key>IOProviderClass</key>\n\t\t\t<string>IOUSBHostDevice</string>\n\t\t\t<key>idProduct</key>\n\t\t\t<integer>8670</integer>\n\t\t\t<key>idVendor</key>\n\t\t\t<integer>2652</integer>\n\t\t</dict>\n\t\t<key>0a5c_21e1</key>\n\t\t<dict>\n\t\t\t<key>CFBundleIdentifier</key>\n\t\t\t<string>com.apple.iokit.BroadcomBluetoothHostControllerUSBTransport</string>\n\t\t\t<key>IOClass</key>\n\t\t\t<string>BroadcomBluetoothHostControllerUSBTransport</string>\n\t\t\t<key>IOProbeScore</key>\n\t\t\t<integer>3000</integer>\n\t\t\t<key>IOProviderClass</key>\n\t\t\t<string>IOUSBHostDevice</string>\n\t\t\t<key>idProduct</key>\n\t\t\t<integer>8673</integer>\n\t\t\t<key>idVendor</key>\n\t\t\t<integer>2652</integer>\n\t\t</dict>\n\t\t<key>0a5c_21e3</key>\n\t\t<dict>\n\t\t\t<key>CFBundleIdentifier</key>\n\t\t\t<string>com.apple.iokit.BroadcomBluetoothHostControllerUSBTransport</string>\n\t\t\t<key>IOClass</key>\n\t\t\t<string>BroadcomBluetoothHostControllerUSBTransport</string>\n\t\t\t<key>IOProbeScore</key>\n\t\t\t<integer>3000</integer>\n\t\t\t<key>IOProviderClass</key>\n\t\t\t<string>IOUSBHostDevice</string>\n\t\t\t<key>idProduct</key>\n\t\t\t<integer>8675</integer>\n\t\t\t<key>idVendor</key>\n\t\t\t<integer>2652</integer>\n\t\t</dict>\n\t\t<key>0a5c_21e6</key>\n\t\t<dict>\n\t\t\t<key>CFBundleIdentifier</key>\n\t\t\t<string>com.apple.iokit.BroadcomBluetoothHostControllerUSBTransport</string>\n\t\t\t<key>IOClass</key>\n\t\t\t<string>BroadcomBluetoothHostControllerUSBTransport</string>\n\t\t\t<key>IOProbeScore</key>\n\t\t\t<integer>3000</integer>\n\t\t\t<key>IOProviderClass</key>\n\t\t\t<string>IOUSBHostDevice</string>\n\t\t\t<key>idProduct</key>\n\t\t\t<integer>8678</integer>\n\t\t\t<key>idVendor</key>\n\t\t\t<integer>2652</integer>\n\t\t</dict>\n\t\t<key>0a5c_21e8</key>\n\t\t<dict>\n\t\t\t<key>CFBundleIdentifier</key>\n\t\t\t<string>com.apple.iokit.BroadcomBluetoothHostControllerUSBTransport</string>\n\t\t\t<key>IOClass</key>\n\t\t\t<string>BroadcomBluetoothHostControllerUSBTransport</string>\n\t\t\t<key>IOProbeScore</key>\n\t\t\t<integer>3000</integer>\n\t\t\t<key>IOProviderClass</key>\n\t\t\t<string>IOUSBHostDevice</string>\n\t\t\t<key>idProduct</key>\n\t\t\t<integer>8680</integer>\n\t\t\t<key>idVendor</key>\n\t\t\t<integer>2652</integer>\n\t\t</dict>\n\t\t<key>0a5c_21ec</key>\n\t\t<dict>\n\t\t\t<key>CFBundleIdentifier</key>\n\t\t\t<string>com.apple.iokit.BroadcomBluetoothHostControllerUSBTransport</string>\n\t\t\t<key>IOClass</key>\n\t\t\t<string>BroadcomBluetoothHostControllerUSBTransport</string>\n\t\t\t<key>IOProbeScore</key>\n\t\t\t<integer>3000</integer>\n\t\t\t<key>IOProviderClass</key>\n\t\t\t<string>IOUSBHostDevice</string>\n\t\t\t<key>idProduct</key>\n\t\t\t<integer>8684</integer>\n\t\t\t<key>idVendor</key>\n\t\t\t<integer>2652</integer>\n\t\t</dict>\n\t\t<key>0a5c_21f1</key>\n\t\t<dict>\n\t\t\t<key>CFBundleIdentifier</key>\n\t\t\t<string>com.apple.iokit.BroadcomBluetoothHostControllerUSBTransport</string>\n\t\t\t<key>IOClass</key>\n\t\t\t<string>BroadcomBluetoothHostControllerUSBTransport</string>\n\t\t\t<key>IOProbeScore</key>\n\t\t\t<integer>3000</integer>\n\t\t\t<key>IOProviderClass</key>\n\t\t\t<string>IOUSBHostDevice</string>\n\t\t\t<key>idProduct</key>\n\t\t\t<integer>8689</integer>\n\t\t\t<key>idVendor</key>\n\t\t\t<integer>2652</integer>\n\t\t</dict>\n\t\t<key>0a5c_21f3</key>\n\t\t<dict>\n\t\t\t<key>CFBundleIdentifier</key>\n\t\t\t<string>com.apple.iokit.BroadcomBluetoothHostControllerUSBTransport</string>\n\t\t\t<key>IOClass</key>\n\t\t\t<string>BroadcomBluetoothHostControllerUSBTransport</string>\n\t\t\t<key>IOProbeScore</key>\n\t\t\t<integer>3000</integer>\n\t\t\t<key>IOProviderClass</key>\n\t\t\t<string>IOUSBHostDevice</string>\n\t\t\t<key>idProduct</key>\n\t\t\t<integer>8691</integer>\n\t\t\t<key>idVendor</key>\n\t\t\t<integer>2652</integer>\n\t\t</dict>\n\t\t<key>0a5c_21f4</key>\n\t\t<dict>\n\t\t\t<key>CFBundleIdentifier</key>\n\t\t\t<string>com.apple.iokit.BroadcomBluetoothHostControllerUSBTransport</string>\n\t\t\t<key>IOClass</key>\n\t\t\t<string>BroadcomBluetoothHostControllerUSBTransport</string>\n\t\t\t<key>IOProbeScore</key>\n\t\t\t<integer>3000</integer>\n\t\t\t<key>IOProviderClass</key>\n\t\t\t<string>IOUSBHostDevice</string>\n\t\t\t<key>idProduct</key>\n\t\t\t<integer>8692</integer>\n\t\t\t<key>idVendor</key>\n\t\t\t<integer>2652</integer>\n\t\t</dict>\n\t\t<key>0a5c_21fb</key>\n\t\t<dict>\n\t\t\t<key>CFBundleIdentifier</key>\n\t\t\t<string>com.apple.iokit.BroadcomBluetoothHostControllerUSBTransport</string>\n\t\t\t<key>IOClass</key>\n\t\t\t<string>BroadcomBluetoothHostControllerUSBTransport</string>\n\t\t\t<key>IOProbeScore</key>\n\t\t\t<integer>3000</integer>\n\t\t\t<key>IOProviderClass</key>\n\t\t\t<string>IOUSBHostDevice</string>\n\t\t\t<key>idProduct</key>\n\t\t\t<integer>8699</integer>\n\t\t\t<key>idVendor</key>\n\t\t\t<integer>2652</integer>\n\t\t</dict>\n\t\t<key>0a5c_21fd</key>\n\t\t<dict>\n\t\t\t<key>CFBundleIdentifier</key>\n\t\t\t<string>com.apple.iokit.BroadcomBluetoothHostControllerUSBTransport</string>\n\t\t\t<key>IOClass</key>\n\t\t\t<string>BroadcomBluetoothHostControllerUSBTransport</string>\n\t\t\t<key>IOProbeScore</key>\n\t\t\t<integer>3000</integer>\n\t\t\t<key>IOProviderClass</key>\n\t\t\t<string>IOUSBHostDevice</string>\n\t\t\t<key>idProduct</key>\n\t\t\t<integer>8701</integer>\n\t\t\t<key>idVendor</key>\n\t\t\t<integer>2652</integer>\n\t\t</dict>\n\t\t<key>0a5c_22be</key>\n\t\t<dict>\n\t\t\t<key>CFBundleIdentifier</key>\n\t\t\t<string>com.apple.iokit.BroadcomBluetoothHostControllerUSBTransport</string>\n\t\t\t<key>IOClass</key>\n\t\t\t<string>BroadcomBluetoothHostControllerUSBTransport</string>\n\t\t\t<key>IOProbeScore</key>\n\t\t\t<integer>3000</integer>\n\t\t\t<key>IOProviderClass</key>\n\t\t\t<string>IOUSBHostDevice</string>\n\t\t\t<key>idProduct</key>\n\t\t\t<integer>8894</integer>\n\t\t\t<key>idVendor</key>\n\t\t\t<integer>2652</integer>\n\t\t</dict>\n\t\t<key>0a5c_640b</key>\n\t\t<dict>\n\t\t\t<key>CFBundleIdentifier</key>\n\t\t\t<string>com.apple.iokit.BroadcomBluetoothHostControllerUSBTransport</string>\n\t\t\t<key>IOClass</key>\n\t\t\t<string>BroadcomBluetoothHostControllerUSBTransport</string>\n\t\t\t<key>IOProbeScore</key>\n\t\t\t<integer>3000</integer>\n\t\t\t<key>IOProviderClass</key>\n\t\t\t<string>IOUSBHostDevice</string>\n\t\t\t<key>idProduct</key>\n\t\t\t<integer>25611</integer>\n\t\t\t<key>idVendor</key>\n\t\t\t<integer>2652</integer>\n\t\t</dict>\n\t\t<key>0a5c_6410</key>\n\t\t<dict>\n\t\t\t<key>CFBundleIdentifier</key>\n\t\t\t<string>com.apple.iokit.BroadcomBluetoothHostControllerUSBTransport</string>\n\t\t\t<key>IOClass</key>\n\t\t\t<string>BroadcomBluetoothHostControllerUSBTransport</string>\n\t\t\t<key>IOProbeScore</key>\n\t\t\t<integer>3000</integer>\n\t\t\t<key>IOProviderClass</key>\n\t\t\t<string>IOUSBHostDevice</string>\n\t\t\t<key>idProduct</key>\n\t\t\t<integer>25616</integer>\n\t\t\t<key>idVendor</key>\n\t\t\t<integer>2652</integer>\n\t\t</dict>\n\t\t<key>0a5c_6412</key>\n\t\t<dict>\n\t\t\t<key>CFBundleIdentifier</key>\n\t\t\t<string>com.apple.iokit.BroadcomBluetoothHostControllerUSBTransport</string>\n\t\t\t<key>IOClass</key>\n\t\t\t<string>BroadcomBluetoothHostControllerUSBTransport</string>\n\t\t\t<key>IOProbeScore</key>\n\t\t\t<integer>3000</integer>\n\t\t\t<key>IOProviderClass</key>\n\t\t\t<string>IOUSBHostDevice</string>\n\t\t\t<key>idProduct</key>\n\t\t\t<integer>25618</integer>\n\t\t\t<key>idVendor</key>\n\t\t\t<integer>2652</integer>\n\t\t</dict>\n\t\t<key>0a5c_6413</key>\n\t\t<dict>\n\t\t\t<key>CFBundleIdentifier</key>\n\t\t\t<string>com.apple.iokit.BroadcomBluetoothHostControllerUSBTransport</string>\n\t\t\t<key>IOClass</key>\n\t\t\t<string>BroadcomBluetoothHostControllerUSBTransport</string>\n\t\t\t<key>IOProbeScore</key>\n\t\t\t<integer>3000</integer>\n\t\t\t<key>IOProviderClass</key>\n\t\t\t<string>IOUSBHostDevice</string>\n\t\t\t<key>idProduct</key>\n\t\t\t<integer>25619</integer>\n\t\t\t<key>idVendor</key>\n\t\t\t<integer>2652</integer>\n\t\t</dict>\n\t\t<key>0a5c_6414</key>\n\t\t<dict>\n\t\t\t<key>CFBundleIdentifier</key>\n\t\t\t<string>com.apple.iokit.BroadcomBluetoothHostControllerUSBTransport</string>\n\t\t\t<key>IOClass</key>\n\t\t\t<string>BroadcomBluetoothHostControllerUSBTransport</string>\n\t\t\t<key>IOProbeScore</key>\n\t\t\t<integer>3000</integer>\n\t\t\t<key>IOProviderClass</key>\n\t\t\t<string>IOUSBHostDevice</string>\n\t\t\t<key>idProduct</key>\n\t\t\t<integer>25620</integer>\n\t\t\t<key>idVendor</key>\n\t\t\t<integer>2652</integer>\n\t\t</dict>\n\t\t<key>0a5c_6417</key>\n\t\t<dict>\n\t\t\t<key>CFBundleIdentifier</key>\n\t\t\t<string>com.apple.iokit.BroadcomBluetoothHostControllerUSBTransport</string>\n\t\t\t<key>IOClass</key>\n\t\t\t<string>BroadcomBluetoothHostControllerUSBTransport</string>\n\t\t\t<key>IOProbeScore</key>\n\t\t\t<integer>3000</integer>\n\t\t\t<key>IOProviderClass</key>\n\t\t\t<string>IOUSBHostDevice</string>\n\t\t\t<key>idProduct</key>\n\t\t\t<integer>25623</integer>\n\t\t\t<key>idVendor</key>\n\t\t\t<integer>2652</integer>\n\t\t</dict>\n\t\t<key>0a5c_6418</key>\n\t\t<dict>\n\t\t\t<key>CFBundleIdentifier</key>\n\t\t\t<string>com.apple.iokit.BroadcomBluetoothHostControllerUSBTransport</string>\n\t\t\t<key>IOClass</key>\n\t\t\t<string>BroadcomBluetoothHostControllerUSBTransport</string>\n\t\t\t<key>IOProbeScore</key>\n\t\t\t<integer>3000</integer>\n\t\t\t<key>IOProviderClass</key>\n\t\t\t<string>IOUSBHostDevice</string>\n\t\t\t<key>idProduct</key>\n\t\t\t<integer>25624</integer>\n\t\t\t<key>idVendor</key>\n\t\t\t<integer>2652</integer>\n\t\t</dict>\n\t\t<key>0a5c_7460</key>\n\t\t<dict>\n\t\t\t<key>CFBundleIdentifier</key>\n\t\t\t<string>com.apple.iokit.BroadcomBluetoothHostControllerUSBTransport</string>\n\t\t\t<key>IOClass</key>\n\t\t\t<string>BroadcomBluetoothHostControllerUSBTransport</string>\n\t\t\t<key>IOProbeScore</key>\n\t\t\t<integer>3000</integer>\n\t\t\t<key>IOProviderClass</key>\n\t\t\t<string>IOUSBHostDevice</string>\n\t\t\t<key>idProduct</key>\n\t\t\t<integer>29792</integer>\n\t\t\t<key>idVendor</key>\n\t\t\t<integer>2652</integer>\n\t\t</dict>\n\t\t<key>0b05_17b5</key>\n\t\t<dict>\n\t\t\t<key>CFBundleIdentifier</key>\n\t\t\t<string>com.apple.iokit.BroadcomBluetoothHostControllerUSBTransport</string>\n\t\t\t<key>IOClass</key>\n\t\t\t<string>BroadcomBluetoothHostControllerUSBTransport</string>\n\t\t\t<key>IOProbeScore</key>\n\t\t\t<integer>3000</integer>\n\t\t\t<key>IOProviderClass</key>\n\t\t\t<string>IOUSBHostDevice</string>\n\t\t\t<key>idProduct</key>\n\t\t\t<integer>6069</integer>\n\t\t\t<key>idVendor</key>\n\t\t\t<integer>2821</integer>\n\t\t</dict>\n\t\t<key>0b05_17cb</key>\n\t\t<dict>\n\t\t\t<key>CFBundleIdentifier</key>\n\t\t\t<string>com.apple.iokit.BroadcomBluetoothHostControllerUSBTransport</string>\n\t\t\t<key>IOClass</key>\n\t\t\t<string>BroadcomBluetoothHostControllerUSBTransport</string>\n\t\t\t<key>IOProbeScore</key>\n\t\t\t<integer>3000</integer>\n\t\t\t<key>IOProviderClass</key>\n\t\t\t<string>IOUSBHostDevice</string>\n\t\t\t<key>idProduct</key>\n\t\t\t<integer>6091</integer>\n\t\t\t<key>idVendor</key>\n\t\t\t<integer>2821</integer>\n\t\t</dict>\n\t\t<key>0b05_17cf</key>\n\t\t<dict>\n\t\t\t<key>CFBundleIdentifier</key>\n\t\t\t<string>com.apple.iokit.BroadcomBluetoothHostControllerUSBTransport</string>\n\t\t\t<key>IOClass</key>\n\t\t\t<string>BroadcomBluetoothHostControllerUSBTransport</string>\n\t\t\t<key>IOProbeScore</key>\n\t\t\t<integer>3000</integer>\n\t\t\t<key>IOProviderClass</key>\n\t\t\t<string>IOUSBHostDevice</string>\n\t\t\t<key>idProduct</key>\n\t\t\t<integer>6095</integer>\n\t\t\t<key>idVendor</key>\n\t\t\t<integer>2821</integer>\n\t\t</dict>\n\t\t<key>0b05_180a</key>\n\t\t<dict>\n\t\t\t<key>CFBundleIdentifier</key>\n\t\t\t<string>com.apple.iokit.BroadcomBluetoothHostControllerUSBTransport</string>\n\t\t\t<key>IOClass</key>\n\t\t\t<string>BroadcomBluetoothHostControllerUSBTransport</string>\n\t\t\t<key>IOProbeScore</key>\n\t\t\t<integer>3000</integer>\n\t\t\t<key>IOProviderClass</key>\n\t\t\t<string>IOUSBHostDevice</string>\n\t\t\t<key>idProduct</key>\n\t\t\t<integer>6154</integer>\n\t\t\t<key>idVendor</key>\n\t\t\t<integer>2821</integer>\n\t\t</dict>\n\t\t<key>0bb4_0306</key>\n\t\t<dict>\n\t\t\t<key>CFBundleIdentifier</key>\n\t\t\t<string>com.apple.iokit.BroadcomBluetoothHostControllerUSBTransport</string>\n\t\t\t<key>IOClass</key>\n\t\t\t<string>BroadcomBluetoothHostControllerUSBTransport</string>\n\t\t\t<key>IOProbeScore</key>\n\t\t\t<integer>3000</integer>\n\t\t\t<key>IOProviderClass</key>\n\t\t\t<string>IOUSBHostDevice</string>\n\t\t\t<key>idProduct</key>\n\t\t\t<integer>774</integer>\n\t\t\t<key>idVendor</key>\n\t\t\t<integer>2996</integer>\n\t\t</dict>\n\t\t<key>105b_e065</key>\n\t\t<dict>\n\t\t\t<key>CFBundleIdentifier</key>\n\t\t\t<string>com.apple.iokit.BroadcomBluetoothHostControllerUSBTransport</string>\n\t\t\t<key>IOClass</key>\n\t\t\t<string>BroadcomBluetoothHostControllerUSBTransport</string>\n\t\t\t<key>IOProbeScore</key>\n\t\t\t<integer>3000</integer>\n\t\t\t<key>IOProviderClass</key>\n\t\t\t<string>IOUSBHostDevice</string>\n\t\t\t<key>idProduct</key>\n\t\t\t<integer>57445</integer>\n\t\t\t<key>idVendor</key>\n\t\t\t<integer>4187</integer>\n\t\t</dict>\n\t\t<key>105b_e066</key>\n\t\t<dict>\n\t\t\t<key>CFBundleIdentifier</key>\n\t\t\t<string>com.apple.iokit.BroadcomBluetoothHostControllerUSBTransport</string>\n\t\t\t<key>IOClass</key>\n\t\t\t<string>BroadcomBluetoothHostControllerUSBTransport</string>\n\t\t\t<key>IOProbeScore</key>\n\t\t\t<integer>3000</integer>\n\t\t\t<key>IOProviderClass</key>\n\t\t\t<string>IOUSBHostDevice</string>\n\t\t\t<key>idProduct</key>\n\t\t\t<integer>57446</integer>\n\t\t\t<key>idVendor</key>\n\t\t\t<integer>4187</integer>\n\t\t</dict>\n\t\t<key>13d3_3295 no firmware</key>\n\t\t<dict>\n\t\t\t<key>CFBundleIdentifier</key>\n\t\t\t<string>com.apple.iokit.BroadcomBluetoothHostControllerUSBTransport</string>\n\t\t\t<key>IOClass</key>\n\t\t\t<string>BroadcomBluetoothHostControllerUSBTransport</string>\n\t\t\t<key>IOProbeScore</key>\n\t\t\t<integer>3000</integer>\n\t\t\t<key>IOProviderClass</key>\n\t\t\t<string>IOUSBHostDevice</string>\n\t\t\t<key>idProduct</key>\n\t\t\t<integer>12949</integer>\n\t\t\t<key>idVendor</key>\n\t\t\t<integer>5075</integer>\n\t\t</dict>\n\t\t<key>13d3_3384</key>\n\t\t<dict>\n\t\t\t<key>CFBundleIdentifier</key>\n\t\t\t<string>com.apple.iokit.BroadcomBluetoothHostControllerUSBTransport</string>\n\t\t\t<key>IOClass</key>\n\t\t\t<string>BroadcomBluetoothHostControllerUSBTransport</string>\n\t\t\t<key>IOProbeScore</key>\n\t\t\t<integer>3000</integer>\n\t\t\t<key>IOProviderClass</key>\n\t\t\t<string>IOUSBHostDevice</string>\n\t\t\t<key>idProduct</key>\n\t\t\t<integer>13188</integer>\n\t\t\t<key>idVendor</key>\n\t\t\t<integer>5075</integer>\n\t\t</dict>\n\t\t<key>13d3_3388</key>\n\t\t<dict>\n\t\t\t<key>CFBundleIdentifier</key>\n\t\t\t<string>com.apple.iokit.BroadcomBluetoothHostControllerUSBTransport</string>\n\t\t\t<key>IOClass</key>\n\t\t\t<string>BroadcomBluetoothHostControllerUSBTransport</string>\n\t\t\t<key>IOProbeScore</key>\n\t\t\t<integer>3000</integer>\n\t\t\t<key>IOProviderClass</key>\n\t\t\t<string>IOUSBHostDevice</string>\n\t\t\t<key>idProduct</key>\n\t\t\t<integer>13192</integer>\n\t\t\t<key>idVendor</key>\n\t\t\t<integer>5075</integer>\n\t\t</dict>\n\t\t<key>13d3_3389</key>\n\t\t<dict>\n\t\t\t<key>CFBundleIdentifier</key>\n\t\t\t<string>com.apple.iokit.BroadcomBluetoothHostControllerUSBTransport</string>\n\t\t\t<key>IOClass</key>\n\t\t\t<string>BroadcomBluetoothHostControllerUSBTransport</string>\n\t\t\t<key>IOProbeScore</key>\n\t\t\t<integer>3000</integer>\n\t\t\t<key>IOProviderClass</key>\n\t\t\t<string>IOUSBHostDevice</string>\n\t\t\t<key>idProduct</key>\n\t\t\t<integer>13193</integer>\n\t\t\t<key>idVendor</key>\n\t\t\t<integer>5075</integer>\n\t\t</dict>\n\t\t<key>13d3_3392</key>\n\t\t<dict>\n\t\t\t<key>CFBundleIdentifier</key>\n\t\t\t<string>com.apple.iokit.BroadcomBluetoothHostControllerUSBTransport</string>\n\t\t\t<key>IOClass</key>\n\t\t\t<string>BroadcomBluetoothHostControllerUSBTransport</string>\n\t\t\t<key>IOProbeScore</key>\n\t\t\t<integer>3000</integer>\n\t\t\t<key>IOProviderClass</key>\n\t\t\t<string>IOUSBHostDevice</string>\n\t\t\t<key>idProduct</key>\n\t\t\t<integer>13202</integer>\n\t\t\t<key>idVendor</key>\n\t\t\t<integer>5075</integer>\n\t\t</dict>\n\t\t<key>13d3_3404</key>\n\t\t<dict>\n\t\t\t<key>CFBundleIdentifier</key>\n\t\t\t<string>com.apple.iokit.BroadcomBluetoothHostControllerUSBTransport</string>\n\t\t\t<key>IOClass</key>\n\t\t\t<string>BroadcomBluetoothHostControllerUSBTransport</string>\n\t\t\t<key>IOProbeScore</key>\n\t\t\t<integer>3000</integer>\n\t\t\t<key>IOProviderClass</key>\n\t\t\t<string>IOUSBHostDevice</string>\n\t\t\t<key>idProduct</key>\n\t\t\t<integer>13316</integer>\n\t\t\t<key>idVendor</key>\n\t\t\t<integer>5075</integer>\n\t\t</dict>\n\t\t<key>13d3_3411</key>\n\t\t<dict>\n\t\t\t<key>CFBundleIdentifier</key>\n\t\t\t<string>com.apple.iokit.BroadcomBluetoothHostControllerUSBTransport</string>\n\t\t\t<key>IOClass</key>\n\t\t\t<string>BroadcomBluetoothHostControllerUSBTransport</string>\n\t\t\t<key>IOProbeScore</key>\n\t\t\t<integer>3000</integer>\n\t\t\t<key>IOProviderClass</key>\n\t\t\t<string>IOUSBHostDevice</string>\n\t\t\t<key>idProduct</key>\n\t\t\t<integer>13329</integer>\n\t\t\t<key>idVendor</key>\n\t\t\t<integer>5075</integer>\n\t\t</dict>\n\t\t<key>13d3_3413</key>\n\t\t<dict>\n\t\t\t<key>CFBundleIdentifier</key>\n\t\t\t<string>com.apple.iokit.BroadcomBluetoothHostControllerUSBTransport</string>\n\t\t\t<key>IOClass</key>\n\t\t\t<string>BroadcomBluetoothHostControllerUSBTransport</string>\n\t\t\t<key>IOProbeScore</key>\n\t\t\t<integer>3000</integer>\n\t\t\t<key>IOProviderClass</key>\n\t\t\t<string>IOUSBHostDevice</string>\n\t\t\t<key>idProduct</key>\n\t\t\t<integer>13331</integer>\n\t\t\t<key>idVendor</key>\n\t\t\t<integer>5075</integer>\n\t\t</dict>\n\t\t<key>13d3_3418</key>\n\t\t<dict>\n\t\t\t<key>CFBundleIdentifier</key>\n\t\t\t<string>com.apple.iokit.BroadcomBluetoothHostControllerUSBTransport</string>\n\t\t\t<key>IOClass</key>\n\t\t\t<string>BroadcomBluetoothHostControllerUSBTransport</string>\n\t\t\t<key>IOProbeScore</key>\n\t\t\t<integer>3000</integer>\n\t\t\t<key>IOProviderClass</key>\n\t\t\t<string>IOUSBHostDevice</string>\n\t\t\t<key>idProduct</key>\n\t\t\t<integer>13336</integer>\n\t\t\t<key>idVendor</key>\n\t\t\t<integer>5075</integer>\n\t\t</dict>\n\t\t<key>13d3_3427</key>\n\t\t<dict>\n\t\t\t<key>CFBundleIdentifier</key>\n\t\t\t<string>com.apple.iokit.BroadcomBluetoothHostControllerUSBTransport</string>\n\t\t\t<key>IOClass</key>\n\t\t\t<string>BroadcomBluetoothHostControllerUSBTransport</string>\n\t\t\t<key>IOProbeScore</key>\n\t\t\t<integer>3000</integer>\n\t\t\t<key>IOProviderClass</key>\n\t\t\t<string>IOUSBHostDevice</string>\n\t\t\t<key>idProduct</key>\n\t\t\t<integer>13351</integer>\n\t\t\t<key>idVendor</key>\n\t\t\t<integer>5075</integer>\n\t\t</dict>\n\t\t<key>13d3_3435</key>\n\t\t<dict>\n\t\t\t<key>CFBundleIdentifier</key>\n\t\t\t<string>com.apple.iokit.BroadcomBluetoothHostControllerUSBTransport</string>\n\t\t\t<key>IOClass</key>\n\t\t\t<string>BroadcomBluetoothHostControllerUSBTransport</string>\n\t\t\t<key>IOProbeScore</key>\n\t\t\t<integer>3000</integer>\n\t\t\t<key>IOProviderClass</key>\n\t\t\t<string>IOUSBHostDevice</string>\n\t\t\t<key>idProduct</key>\n\t\t\t<integer>13365</integer>\n\t\t\t<key>idVendor</key>\n\t\t\t<integer>5075</integer>\n\t\t</dict>\n\t\t<key>13d3_3456</key>\n\t\t<dict>\n\t\t\t<key>CFBundleIdentifier</key>\n\t\t\t<string>com.apple.iokit.BroadcomBluetoothHostControllerUSBTransport</string>\n\t\t\t<key>IOClass</key>\n\t\t\t<string>BroadcomBluetoothHostControllerUSBTransport</string>\n\t\t\t<key>IOProbeScore</key>\n\t\t\t<integer>3000</integer>\n\t\t\t<key>IOProviderClass</key>\n\t\t\t<string>IOUSBHostDevice</string>\n\t\t\t<key>idProduct</key>\n\t\t\t<integer>13398</integer>\n\t\t\t<key>idVendor</key>\n\t\t\t<integer>5075</integer>\n\t\t</dict>\n\t\t<key>13d3_3482</key>\n\t\t<dict>\n\t\t\t<key>CFBundleIdentifier</key>\n\t\t\t<string>com.apple.iokit.BroadcomBluetoothHostControllerUSBTransport</string>\n\t\t\t<key>IOClass</key>\n\t\t\t<string>BroadcomBluetoothHostControllerUSBTransport</string>\n\t\t\t<key>IOProbeScore</key>\n\t\t\t<integer>3000</integer>\n\t\t\t<key>IOProviderClass</key>\n\t\t\t<string>IOUSBHostDevice</string>\n\t\t\t<key>idProduct</key>\n\t\t\t<integer>13442</integer>\n\t\t\t<key>idVendor</key>\n\t\t\t<integer>5075</integer>\n\t\t</dict>\n\t\t<key>13d3_3484</key>\n\t\t<dict>\n\t\t\t<key>CFBundleIdentifier</key>\n\t\t\t<string>com.apple.iokit.BroadcomBluetoothHostControllerUSBTransport</string>\n\t\t\t<key>IOClass</key>\n\t\t\t<string>BroadcomBluetoothHostControllerUSBTransport</string>\n\t\t\t<key>IOProbeScore</key>\n\t\t\t<integer>3000</integer>\n\t\t\t<key>IOProviderClass</key>\n\t\t\t<string>IOUSBHostDevice</string>\n\t\t\t<key>idProduct</key>\n\t\t\t<integer>13444</integer>\n\t\t\t<key>idVendor</key>\n\t\t\t<integer>5075</integer>\n\t\t</dict>\n\t\t<key>13d3_3504</key>\n\t\t<dict>\n\t\t\t<key>CFBundleIdentifier</key>\n\t\t\t<string>com.apple.iokit.BroadcomBluetoothHostControllerUSBTransport</string>\n\t\t\t<key>IOClass</key>\n\t\t\t<string>BroadcomBluetoothHostControllerUSBTransport</string>\n\t\t\t<key>IOProbeScore</key>\n\t\t\t<integer>3000</integer>\n\t\t\t<key>IOProviderClass</key>\n\t\t\t<string>IOUSBHostDevice</string>\n\t\t\t<key>idProduct</key>\n\t\t\t<integer>13572</integer>\n\t\t\t<key>idVendor</key>\n\t\t\t<integer>5075</integer>\n\t\t</dict>\n\t\t<key>13d3_3508</key>\n\t\t<dict>\n\t\t\t<key>CFBundleIdentifier</key>\n\t\t\t<string>com.apple.iokit.BroadcomBluetoothHostControllerUSBTransport</string>\n\t\t\t<key>IOClass</key>\n\t\t\t<string>BroadcomBluetoothHostControllerUSBTransport</string>\n\t\t\t<key>IOProbeScore</key>\n\t\t\t<integer>3000</integer>\n\t\t\t<key>IOProviderClass</key>\n\t\t\t<string>IOUSBHostDevice</string>\n\t\t\t<key>idProduct</key>\n\t\t\t<integer>13576</integer>\n\t\t\t<key>idVendor</key>\n\t\t\t<integer>5075</integer>\n\t\t</dict>\n\t\t<key>13d3_3517</key>\n\t\t<dict>\n\t\t\t<key>CFBundleIdentifier</key>\n\t\t\t<string>com.apple.iokit.BroadcomBluetoothHostControllerUSBTransport</string>\n\t\t\t<key>IOClass</key>\n\t\t\t<string>BroadcomBluetoothHostControllerUSBTransport</string>\n\t\t\t<key>IOProbeScore</key>\n\t\t\t<integer>3000</integer>\n\t\t\t<key>IOProviderClass</key>\n\t\t\t<string>IOUSBHostDevice</string>\n\t\t\t<key>idProduct</key>\n\t\t\t<integer>13591</integer>\n\t\t\t<key>idVendor</key>\n\t\t\t<integer>5075</integer>\n\t\t</dict>\n\t\t<key>145f_01a3</key>\n\t\t<dict>\n\t\t\t<key>CFBundleIdentifier</key>\n\t\t\t<string>com.apple.iokit.BroadcomBluetoothHostControllerUSBTransport</string>\n\t\t\t<key>IOClass</key>\n\t\t\t<string>BroadcomBluetoothHostControllerUSBTransport</string>\n\t\t\t<key>IOProbeScore</key>\n\t\t\t<integer>3000</integer>\n\t\t\t<key>IOProviderClass</key>\n\t\t\t<string>IOUSBHostDevice</string>\n\t\t\t<key>idProduct</key>\n\t\t\t<integer>419</integer>\n\t\t\t<key>idVendor</key>\n\t\t\t<integer>5215</integer>\n\t\t</dict>\n\t\t<key>19ff_0239</key>\n\t\t<dict>\n\t\t\t<key>CFBundleIdentifier</key>\n\t\t\t<string>com.apple.iokit.BroadcomBluetoothHostControllerUSBTransport</string>\n\t\t\t<key>IOClass</key>\n\t\t\t<string>BroadcomBluetoothHostControllerUSBTransport</string>\n\t\t\t<key>IOProbeScore</key>\n\t\t\t<integer>3000</integer>\n\t\t\t<key>IOProviderClass</key>\n\t\t\t<string>IOUSBHostDevice</string>\n\t\t\t<key>idProduct</key>\n\t\t\t<integer>569</integer>\n\t\t\t<key>idVendor</key>\n\t\t\t<integer>6655</integer>\n\t\t</dict>\n\t\t<key>413c_8143</key>\n\t\t<dict>\n\t\t\t<key>CFBundleIdentifier</key>\n\t\t\t<string>com.apple.iokit.BroadcomBluetoothHostControllerUSBTransport</string>\n\t\t\t<key>IOClass</key>\n\t\t\t<string>BroadcomBluetoothHostControllerUSBTransport</string>\n\t\t\t<key>IOProbeScore</key>\n\t\t\t<integer>3000</integer>\n\t\t\t<key>IOProviderClass</key>\n\t\t\t<string>IOUSBHostDevice</string>\n\t\t\t<key>idProduct</key>\n\t\t\t<integer>33091</integer>\n\t\t\t<key>idVendor</key>\n\t\t\t<integer>16700</integer>\n\t\t</dict>\n\t\t<key>413c_8197</key>\n\t\t<dict>\n\t\t\t<key>CFBundleIdentifier</key>\n\t\t\t<string>com.apple.iokit.BroadcomBluetoothHostControllerUSBTransport</string>\n\t\t\t<key>IOClass</key>\n\t\t\t<string>BroadcomBluetoothHostControllerUSBTransport</string>\n\t\t\t<key>IOProbeScore</key>\n\t\t\t<integer>3000</integer>\n\t\t\t<key>IOProviderClass</key>\n\t\t\t<string>IOUSBHostDevice</string>\n\t\t\t<key>idProduct</key>\n\t\t\t<integer>33175</integer>\n\t\t\t<key>idVendor</key>\n\t\t\t<integer>16700</integer>\n\t\t</dict>\n\t</dict>\n\t<key>OSBundleRequired</key>\n\t<string>Root</string>\n\t<key>Source Code</key>\n\t<string>https://github.com/RehabMan/BrcmPatchRAM.git</string>\n</dict>\n</plist>\n"
  },
  {
    "path": "EFI/CLOVER/kexts/Other/BrcmFirmwareData.kext/Contents/Info.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>BuildMachineOSBuild</key>\n\t<string>18G87</string>\n\t<key>CFBundleExecutable</key>\n\t<string>BrcmFirmwareData</string>\n\t<key>CFBundleIdentifier</key>\n\t<string>com.no-one.BrcmFirmwareStore</string>\n\t<key>CFBundleInfoDictionaryVersion</key>\n\t<string>6.0</string>\n\t<key>CFBundleName</key>\n\t<string>BrcmFirmwareData</string>\n\t<key>CFBundlePackageType</key>\n\t<string>KEXT</string>\n\t<key>CFBundleShortVersionString</key>\n\t<string>2.2.10</string>\n\t<key>CFBundleSignature</key>\n\t<string>????</string>\n\t<key>CFBundleSupportedPlatforms</key>\n\t<array>\n\t\t<string>MacOSX</string>\n\t</array>\n\t<key>CFBundleVersion</key>\n\t<string>2.2.10</string>\n\t<key>DTCompiler</key>\n\t<string>com.apple.compilers.llvm.clang.1_0</string>\n\t<key>DTPlatformBuild</key>\n\t<string>10G8</string>\n\t<key>DTPlatformVersion</key>\n\t<string>GM</string>\n\t<key>DTSDKBuild</key>\n\t<string>18G74</string>\n\t<key>DTSDKName</key>\n\t<string>macosx10.14</string>\n\t<key>DTXcode</key>\n\t<string>1030</string>\n\t<key>DTXcodeBuild</key>\n\t<string>10G8</string>\n\t<key>IOKitPersonalities</key>\n\t<dict>\n\t\t<key>BrcmFirmwareStore</key>\n\t\t<dict>\n\t\t\t<key>CFBundleIdentifier</key>\n\t\t\t<string>com.no-one.BrcmFirmwareStore</string>\n\t\t\t<key>IOClass</key>\n\t\t\t<string>BrcmFirmwareStore</string>\n\t\t\t<key>IOMatchCategory</key>\n\t\t\t<string>BrcmFirmwareStore</string>\n\t\t\t<key>IOProviderClass</key>\n\t\t\t<string>IOResources</string>\n\t\t</dict>\n\t</dict>\n\t<key>OSBundleCompatibleVersion</key>\n\t<string>2.2.10</string>\n\t<key>OSBundleLibraries</key>\n\t<dict>\n\t\t<key>com.apple.kpi.iokit</key>\n\t\t<string>9.0</string>\n\t\t<key>com.apple.kpi.libkern</key>\n\t\t<string>9.0</string>\n\t\t<key>com.apple.kpi.mach</key>\n\t\t<string>9.0</string>\n\t</dict>\n\t<key>Source Code</key>\n\t<string>https://github.com/RehabMan/BrcmPatchRAM.git</string>\n</dict>\n</plist>\n"
  },
  {
    "path": "EFI/CLOVER/kexts/Other/BrcmPatchRAM2.kext/Contents/Info.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>BuildMachineOSBuild</key>\n\t<string>18G87</string>\n\t<key>CFBundleExecutable</key>\n\t<string>BrcmPatchRAM2</string>\n\t<key>CFBundleIdentifier</key>\n\t<string>com.no-one.BrcmPatchRAM2</string>\n\t<key>CFBundleInfoDictionaryVersion</key>\n\t<string>6.0</string>\n\t<key>CFBundleName</key>\n\t<string>BrcmPatchRAM2</string>\n\t<key>CFBundlePackageType</key>\n\t<string>KEXT</string>\n\t<key>CFBundleShortVersionString</key>\n\t<string>2.2.10</string>\n\t<key>CFBundleSignature</key>\n\t<string>????</string>\n\t<key>CFBundleSupportedPlatforms</key>\n\t<array>\n\t\t<string>MacOSX</string>\n\t</array>\n\t<key>CFBundleVersion</key>\n\t<string>2.2.10</string>\n\t<key>DTCompiler</key>\n\t<string>com.apple.compilers.llvm.clang.1_0</string>\n\t<key>DTPlatformBuild</key>\n\t<string>10G8</string>\n\t<key>DTPlatformVersion</key>\n\t<string>GM</string>\n\t<key>DTSDKBuild</key>\n\t<string>18G74</string>\n\t<key>DTSDKName</key>\n\t<string>macosx10.14</string>\n\t<key>DTXcode</key>\n\t<string>1030</string>\n\t<key>DTXcodeBuild</key>\n\t<string>10G8</string>\n\t<key>IOKitPersonalities</key>\n\t<dict>\n\t\t<key>0a5c_6412</key>\n\t\t<dict>\n\t\t\t<key>CFBundleIdentifier</key>\n\t\t\t<string>com.no-one.BrcmPatchRAM2</string>\n\t\t\t<key>DisplayName</key>\n\t\t\t<string>Dell Wireless 1820A Bluetooth 4.1 LE</string>\n\t\t\t<key>FirmwareKey</key>\n\t\t\t<string>BCM4350C5_003.006.007.0222.4689_v8785</string>\n\t\t\t<key>IOClass</key>\n\t\t\t<string>BrcmPatchRAM2</string>\n\t\t\t<key>IOMatchCategory</key>\n\t\t\t<string>BrcmPatchRAM2</string>\n\t\t\t<key>IOProbeScore</key>\n\t\t\t<integer>4000</integer>\n\t\t\t<key>IOProviderClass</key>\n\t\t\t<string>IOUSBHostDevice</string>\n\t\t\t<key>InitialDelay</key>\n\t\t\t<integer>200</integer>\n\t\t\t<key>PostResetDelay</key>\n\t\t\t<integer>250</integer>\n\t\t\t<key>PreResetDelay</key>\n\t\t\t<integer>250</integer>\n\t\t\t<key>UpgradeDelay</key>\n\t\t\t<integer>200</integer>\n\t\t\t<key>idProduct</key>\n\t\t\t<integer>25618</integer>\n\t\t\t<key>idVendor</key>\n\t\t\t<integer>2652</integer>\n\t\t</dict>\n\t\t<key>BrcmPatchRAMResidency</key>\n\t\t<dict>\n\t\t\t<key>CFBundleIdentifier</key>\n\t\t\t<string>com.no-one.BrcmPatchRAM2</string>\n\t\t\t<key>IOClass</key>\n\t\t\t<string>BrcmPatchRAMResidency</string>\n\t\t\t<key>IOMatchCategory</key>\n\t\t\t<string>BrcmPatchRAMResidency</string>\n\t\t\t<key>IOProviderClass</key>\n\t\t\t<string>disabled_IOResources</string>\n\t\t</dict>\n\t</dict>\n\t<key>OSBundleLibraries</key>\n\t<dict>\n\t\t<key>com.apple.iokit.IOUSBHostFamily</key>\n\t\t<string>1.0.1</string>\n\t\t<key>com.apple.kpi.bsd</key>\n\t\t<string>8.0</string>\n\t\t<key>com.apple.kpi.iokit</key>\n\t\t<string>8.0</string>\n\t\t<key>com.apple.kpi.libkern</key>\n\t\t<string>8.0</string>\n\t\t<key>com.apple.kpi.mach</key>\n\t\t<string>8.0</string>\n\t\t<key>com.no-one.BrcmFirmwareStore</key>\n\t\t<string>2.2.10</string>\n\t</dict>\n\t<key>Source Code</key>\n\t<string>https://github.com/RehabMan/BrcmPatchRAM.git</string>\n</dict>\n</plist>\n"
  },
  {
    "path": "EFI/CLOVER/kexts/Other/CPUFriend.kext/Contents/Info.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>BuildMachineOSBuild</key>\n\t<string>17D102</string>\n\t<key>CFBundleDevelopmentRegion</key>\n\t<string>en</string>\n\t<key>CFBundleExecutable</key>\n\t<string>CPUFriend</string>\n\t<key>CFBundleIdentifier</key>\n\t<string>org.vanilla.driver.CPUFriend</string>\n\t<key>CFBundleInfoDictionaryVersion</key>\n\t<string>6.0</string>\n\t<key>CFBundleName</key>\n\t<string>CPUFriend</string>\n\t<key>CFBundlePackageType</key>\n\t<string>KEXT</string>\n\t<key>CFBundleShortVersionString</key>\n\t<string>1.1.6</string>\n\t<key>CFBundleSignature</key>\n\t<string>????</string>\n\t<key>CFBundleSupportedPlatforms</key>\n\t<array>\n\t\t<string>MacOSX</string>\n\t</array>\n\t<key>CFBundleVersion</key>\n\t<string>1.1.6</string>\n\t<key>DTCompiler</key>\n\t<string>com.apple.compilers.llvm.clang.1_0</string>\n\t<key>DTPlatformBuild</key>\n\t<string>9F2000</string>\n\t<key>DTPlatformVersion</key>\n\t<string>GM</string>\n\t<key>DTSDKBuild</key>\n\t<string>17E189</string>\n\t<key>DTSDKName</key>\n\t<string>macosx10.13</string>\n\t<key>DTXcode</key>\n\t<string>0941</string>\n\t<key>DTXcodeBuild</key>\n\t<string>9F2000</string>\n\t<key>IOKitPersonalities</key>\n\t<dict>\n\t\t<key>CPUFriend</key>\n\t\t<dict>\n\t\t\t<key>CFBundleIdentifier</key>\n\t\t\t<string>org.vanilla.driver.CPUFriend</string>\n\t\t\t<key>IOClass</key>\n\t\t\t<string>CPUFriend</string>\n\t\t\t<key>IOMatchCategory</key>\n\t\t\t<string>CPUFriend</string>\n\t\t\t<key>IOProviderClass</key>\n\t\t\t<string>IOResources</string>\n\t\t\t<key>IOResourceMatch</key>\n\t\t\t<string>IOKit</string>\n\t\t</dict>\n\t\t<key>CPUFriendPlatform</key>\n\t\t<dict>\n\t\t\t<key>CFBundleIdentifier</key>\n\t\t\t<string>org.vanilla.driver.CPUFriend</string>\n\t\t\t<key>IOClass</key>\n\t\t\t<string>CPUFriendData</string>\n\t\t\t<key>IOProbeScore</key>\n\t\t\t<integer>6000</integer>\n\t\t\t<key>IOPropertyMatch</key>\n\t\t\t<dict>\n\t\t\t\t<key>IOCPUNumber</key>\n\t\t\t\t<integer>0</integer>\n\t\t\t</dict>\n\t\t\t<key>IOProviderClass</key>\n\t\t\t<string>AppleACPICPU</string>\n\t\t\t<key>IOResourceMatch</key>\n\t\t\t<string>ACPI</string>\n\t\t</dict>\n\t</dict>\n\t<key>NSHumanReadableCopyright</key>\n\t<string>Copyright © 2017 Vanilla. All rights reserved.</string>\n\t<key>OSBundleCompatibleVersion</key>\n\t<string>1.0</string>\n\t<key>OSBundleLibraries</key>\n\t<dict>\n\t\t<key>as.vit9696.Lilu</key>\n\t\t<string>1.2.0</string>\n\t\t<key>com.apple.iokit.IOACPIFamily</key>\n\t\t<string>1.0.0d1</string>\n\t\t<key>com.apple.kpi.bsd</key>\n\t\t<string>12.0.0</string>\n\t\t<key>com.apple.kpi.dsep</key>\n\t\t<string>12.0.0</string>\n\t\t<key>com.apple.kpi.iokit</key>\n\t\t<string>12.0.0</string>\n\t\t<key>com.apple.kpi.libkern</key>\n\t\t<string>12.0.0</string>\n\t\t<key>com.apple.kpi.mach</key>\n\t\t<string>12.0.0</string>\n\t\t<key>com.apple.kpi.unsupported</key>\n\t\t<string>12.0.0</string>\n\t</dict>\n\t<key>OSBundleRequired</key>\n\t<string>Root</string>\n</dict>\n</plist>\n"
  },
  {
    "path": "EFI/CLOVER/kexts/Other/CPUFriendDataProvider.kext/Contents/Info.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>CFBundleIdentifier</key>\n\t<string>org.vanilla.driver.CPUFriendDataProvider</string>\n\t<key>CFBundleInfoDictionaryVersion</key>\n\t<string>6.0</string>\n\t<key>CFBundleName</key>\n\t<string>CPUFriendDataProvider</string>\n\t<key>CFBundlePackageType</key>\n\t<string>KEXT</string>\n\t<key>CFBundleShortVersionString</key>\n\t<string>1.0.0</string>\n\t<key>CFBundleVersion</key>\n\t<string>1.0.0</string>\n\t<key>IOKitPersonalities</key>\n\t<dict>\n\t\t<key>CPUFriendDataProvider</key>\n\t\t<dict>\n\t\t\t<key>CFBundleIdentifier</key>\n\t\t\t<string>com.apple.driver.AppleACPIPlatform</string>\n\t\t\t<key>IOClass</key>\n\t\t\t<string>AppleACPICPU</string>\n\t\t\t<key>IONameMatch</key>\n\t\t\t<string>processor</string>\n\t\t\t<key>IOProbeScore</key>\n\t\t\t<integer>1100</integer>\n\t\t\t<key>IOProviderClass</key>\n\t\t\t<string>IOACPIPlatformDevice</string>\n\t\t\t<key>cf-frequency-data</key>\n\t\t\t<data>PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPCFET0NUWVBFIHBsaXN0IFBVQkxJQyAiLS8vQXBwbGUgQ29tcHV0ZXIvL0RURCBQTElTVCAxLjAvL0VOIiAiaHR0cDovL3d3dy5hcHBsZS5jb20vRFREcy9Qcm9wZXJ0eUxpc3QtMS4wLmR0ZCI+CjxwbGlzdCB2ZXJzaW9uPSIxLjAiPgogIDxkaWN0PgogICAgPGtleT5wbXNwRmlsZTwva2V5PgogICAgPGludGVnZXI+NzwvaW50ZWdlcj4KICAgIDxrZXk+SU9QbGF0Zm9ybVBvd2VyUHJvZmlsZTwva2V5PgogICAgPGRpY3Q+CiAgICAgIDxrZXk+UHVibGlzaExpZ2h0c2hvdzwva2V5PgogICAgICA8dHJ1ZS8+CiAgICAgIDxrZXk+TmV0d29ya1RpbWVyRGVsYXk8L2tleT4KICAgICAgPGludGVnZXI+OTAwPC9pbnRlZ2VyPgogICAgICA8a2V5PlN0YW5kYnlEZWxheTwva2V5PgogICAgICA8aW50ZWdlcj4xMDgwMDwvaW50ZWdlcj4KICAgICAgPGtleT5FclBEZWxheTwva2V5PgogICAgICA8aW50ZWdlcj4yODgwMDwvaW50ZWdlcj4KICAgICAgPGtleT5BdXRvUG93ZXJPZmY8L2tleT4KICAgICAgPHRydWUvPgogICAgICA8a2V5PklPUGxhdGZvcm1TeXN0ZW1TbGVlcFBvbGljeTwva2V5PgogICAgICA8ZGF0YT5VMHhRVkFJQUhnQUFHaElBQUFBQUFBQVZBQUFBQlFBQUJnQUFBQUFBQUFBQUpRQUFBQUFBQUNBQUFBQWdBQUFBQUFBQUFBQUFBQUFGCkFBQUFBQUFBQUFBbEFBQUFBQUFBQUFBRUFBQUFCQUFBQUFBQUFBQUFBQVlBQUFBQUFBQUFBQ1VBQUFBQUFBQUFBQUVBQUFBQkFBQUEKQUFBQUFBQUFCQUFBQUFBQUFBQUFBUUFBQUFBQUFFQWFFZ0FBQUFBQUdCRUVBQmdCQkFBRkFBQUFBZ0FBQUFBdEFBQUlBQUFBUUJvUwpBQUFBQUFBWUVRQUFHQUVBQUFVQUFBQUNBQUFBQUMwQUFBQUFBQUJBQWhBQUFBQVFBQ0JBQUFBZ1FBQUFBZ0FBQUFnQUFBQUFLUUFBCkFBQUFBRUFDQUFBQUFBQUFHQUVFQUJnQkJBQUZBQUFBQUFBQUFBQWxBQUFJQUFBQVFBSUFBQUFBQUFBWUFBQUFHQUFBQUFVQUFBQUEKQUFBQUFDVUFBQUFBQUFCQUdoSUFBQUFBQUNnUkJBQWdBUVFBQlFBQUFBSUFBQUFBTFFBQUNBQUFBRUFhRWdBQUFBQUFLQkVBQUNBQgpBQUFGQUFBQUFnQUFBQUF0QUFBQUFBQUFRQUlBQUFBQUFBQW9BUVFBSUFFRUFBVUFBQUFBQUFBQUFDVUFBQWdBQUFCQUFnQUFBQUFBCkFDZ0FBQUFnQUFBQUJRQUFBQUFBQUFBQUpRQUFBQUFBQUZBYUVnQVFBQUFBQUJFRUFBQUJCQUFGQUFBQUFnQUFBQUF0QUFBSUFBQUEKVUJvU0FCQUFBQUFBRVFBQUFBRUFBQVVBQUFBQ0FBQUFBQzBBQUFBQUFBQlFBZ0FBRUFBQUFBQUJCQUFBQVFRQUJRQUFBQUFBQUFBQQpKUUFBQ0FBQUFGQUNBQUFRQUFBQUFBQUFBQUFBQUFBRkFBQUFBQUFBQUFBbEFBQUFBQUFBQUJvU0FBQUFBQUFBR1FBQUFBa0FBQVlBCkFBQUFBQUFBQUNVQUFBQUFBQUFBR2hJQUFBRUFBQWdSQUFBSUFRQUFCZ0FBQUFBQUFBQUFKUUFBQUFBQUFBQWFFZ0FBQUFBQVFCRUEKQUVBQkFBQUdBQUFBQUFBQUFBQWxBQUFBQUFBQVFCb1NBRUFBQUFBR0VRQUFCZ0VBQUFNQUFBQUNBQUFBQUNrQUFBQUFBQUJBR2hJQQpRQUFBQUFBUkRBQUFBUXdBQWdBQUFBSUFBQUFBS1FBQUNBQUFBRUFhRWdCQUFBQUFBQkVBQUFBQkFBQUNBQUFBQWdBQUFBQXBBQUFBCkFBQUFRQUlBQUFBQUFBQUF3QUFBQU1BQUFBSUFBQUFJQUFBQUFDa0FBQUFBQUFCQUFnQUFBQUFBQUFpQUFBQUlnQUFBQlFBQUFBQUEKQUFBQUpRQUFBQUFBQUVBQ0FBQUFBQUFBQUFFTUFBQUJEQUFDQUFBQUFRQUFBQUFwQUFBSUFBQUFRQUlBQUFBQUFBQUFBQUFBQUFBQQpBQUlBQUFBQkFBQUFBQ2tBQUFBQUFBQkFBQUFBUUFBQUFBWUFBQUFHQUFBQUF3QUFBQUFBQUFBQUlRQUFBQUFBQUFBQUFBQUFBQUFBCkFBRU1BQUFCREFBQ0FBQUFBQUFBQUFBaEFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUlBQUFBQUFBQUFBQ0VBQUFBQUFBQT08L2RhdGE+CiAgICAgIDxrZXk+U3RlcENvbnRleHREaWN0PC9rZXk+CiAgICAgIDxkaWN0PgogICAgICAgIDxrZXk+Tm9ybWFsPC9rZXk+CiAgICAgICAgPGRhdGE+ClhBUUFBQUFBQVFJRUFBQUNBZ0FBVlFCdUFITUFjQUJsQUdNQWFRQm1BR2tBWlFCa0RBQUgvd2NBQUEwQUFBQUNBQUFCLy84QS93RC8KQVA4QS93RC9BQVlBQVA4QkFBUC9BQXNQQUFEL0FRQUQvd0FMRHdBQS93RUFBLzhBQ3c4QUFQOEJBQVAvQUFzUEFBRC9BUUFEL3dBTApEd0FBL3dFQUEvOEFDdzhBQVA4QkFBUC9BQXNQQUFEL0FRQUQvd0FMRHdBQS93RUFBLzhBQ3c4QUFQOEJBQVAvQUFzUEFBRC9BUUFECi93QUxEd0FBL3dFQUEvOEFDdzhBQVA4QkFBUC9BQXNQQUFEL0FRQUQvd0FMRHdBQS93RUFBLzhBQ3c4QUFQOEJBQVAvQUFzUEFBRC8KQVFBRC93QUxEd0FBL3dFQUEvOEFDdzhBQVA4QkFBUC9BQXNQQUFEL0FRQUQvd0FMRHdBQS93RUFBLzhBQ3c4QUFQOEJBQVAvQUFzUApBQUQvQVFBRC93QUxEd0FBL3dFQUEvOEFDdzhBQVA4QkFBUC9BQXNQQUFEL0FRQUQvd0FMRHdBQS93RUFBLzhBQ3c4QUFQOEJBQVAvCkFBc1BBQUQvQVFBRC93QUxEd0FBL3dFQUEvOEFDdzhBQVA4QkFBUC9BQXNQQUFEL0FRQUQvd0FMRHdBQS93RUFBLzhBQ3c4QUFQOEIKQUFQL0FBc1BBQUQvQVFBRC93QUxEd0FBL3dFQUEvOEFDdzhBQVA4QkFBUC9BQXNQQUFEL0FRQUQvd0FMRHdBQS93RUFBLzhBQ3c4QQpBUDhCQUFQL0FBc1BBQUQvQVFBRC93QUxEd0FBL3dFQUEvOEFDdzhBQVA4QkFBUC9BQXNQQUFEL0FRQUQvd0FMRHdBQS93RUFBLzhBCkN3OEFBUDhCQUFQL0FBc1BBQUQvQVFBRC93QUxEd0FBL3dFQUEvOEFDdzhBQVA4QkFBUC9BQXNQQUFEL0FRQUQvd0FMRHdBQS93RUEKQS84QUN3OEFBUDhCQUFQL0FBc1BBQUQvQVFBRC93QUxEd0FBL3dFQUEvOEFDdzhBQVA4QkFBUC9BQXNQQUFEL0FRQUQvd0FMRHdBQQovd0VBQS84QUN3OEFBUDhCQUFQL0FBc1BBQUQvQVFBRC93QUxEd0FBL3dFQUEvOEFDdzhBQVA4QkFBUC9BQXNQQUFEL0FRQUQvd0FMCkR3QUEvd0VBQS84QUN3OEFBUDhCQUFQL0FBc0tBQUFCQ2dBQUFRQUFBQUVBQUFEMUFBRUZBQUFCQUFBRi93QUJBQUFBQVFBQUFBRUcKQUFBQ0FBQUFCQUVBQUlBQXd3QzNBQzRBTkFBTEFBQUFBZ0FBQUFFQUFBQUJBQUFBQWdBQUFBSUNBQUFDQmdBQUFRQUFBQUVBQUFEMQpBQUVGQUFBREFBQUYvd0FEQWdBQUF3WUFBQWtBQUFBRUFBQUFaQVlBQUFRQUFBWC9BQU1BQUFBQkFBQUFCQVFBQUlBQUFBQUtDZ0FBCkNBQUFBQVVBQUFBSUFBQUFCUUFBQUFNQUFBQUNBQUFBQlFZQUFBY0FBQUFCQUFBQTlRQUJCUUFBQmdBQUJmOEFBd0FBQUFNQUFBQUcKQmdBQUFnQUFBQVFBQUFDZ0FBOEZBQUFIQkFBQUJ3QUFBQU1BQUFBRUFBQUFCd1lBQUFnS0FBQURBQUFGL3dBRUFnQUFDQVlBQUFFQQpBQUFCQUFBQTlBQUJCUUFBQ1FBQUJmOEFCUUlBQUFrR0FBQUNBQUFBQkFFQUFJQUF3d0MzQUM0QU5BQUxBQUFBQ1FBQUFBb0FBQUFKCkFBQUFDZ0FBQUFVQUFBQUJBQUFBQ2dZQUFBY0FBQUFCQUFBQTlRQUJCUUFBQ3dBQUJmOEFCUUFBQUFJQUFBQUxCZ0FBQWdBQUFBUUEKQUFDZ0FBOEZBQUFNQkFBQURBQUFBQVVBQUFBREFBQUFEQVlBQUFnS0FBQUpBQUFGL3c9PQo8L2RhdGE+CiAgICAgICAgPGtleT5CYWNrZ3JvdW5kPC9rZXk+CiAgICAgICAgPGRhdGE+ClhBUUFBQUFBQVFJRUFBQUNBZ0FBVlFCdUFITUFjQUJsQUdNQWFRQm1BR2tBWlFCa0RBQUgvd2NBQUEwQUFBQUNBQUFCLy84QS93RC8KQVA4QS93RC9BQVlBQVA4QkFBUC9BQXNQQUFEL0FRQUQvd0FMRHdBQS93RUFBLzhBQ3c4QUFQOEJBQVAvQUFzUEFBRC9BUUFEL3dBTApEd0FBL3dFQUEvOEFDdzhBQVA4QkFBUC9BQXNQQUFEL0FRQUQvd0FMRHdBQS93RUFBLzhBQ3c4QUFQOEJBQVAvQUFzUEFBRC9BUUFECi93QUxEd0FBL3dFQUEvOEFDdzhBQVA4QkFBUC9BQXNQQUFEL0FRQUQvd0FMRHdBQS93RUFBLzhBQ3c4QUFQOEJBQVAvQUFzUEFBRC8KQVFBRC93QUxEd0FBL3dFQUEvOEFDdzhBQVA4QkFBUC9BQXNQQUFEL0FRQUQvd0FMRHdBQS93RUFBLzhBQ3c4QUFQOEJBQVAvQUFzUApBQUQvQVFBRC93QUxEd0FBL3dFQUEvOEFDdzhBQVA4QkFBUC9BQXNQQUFEL0FRQUQvd0FMRHdBQS93RUFBLzhBQ3c4QUFQOEJBQVAvCkFBc1BBQUQvQVFBRC93QUxEd0FBL3dFQUEvOEFDdzhBQVA4QkFBUC9BQXNQQUFEL0FRQUQvd0FMRHdBQS93RUFBLzhBQ3c4QUFQOEIKQUFQL0FBc1BBQUQvQVFBRC93QUxEd0FBL3dFQUEvOEFDdzhBQVA4QkFBUC9BQXNQQUFEL0FRQUQvd0FMRHdBQS93RUFBLzhBQ3c4QQpBUDhCQUFQL0FBc1BBQUQvQVFBRC93QUxEd0FBL3dFQUEvOEFDdzhBQVA4QkFBUC9BQXNQQUFEL0FRQUQvd0FMRHdBQS93RUFBLzhBCkN3OEFBUDhCQUFQL0FBc1BBQUQvQVFBRC93QUxEd0FBL3dFQUEvOEFDdzhBQVA4QkFBUC9BQXNQQUFEL0FRQUQvd0FMRHdBQS93RUEKQS84QUN3OEFBUDhCQUFQL0FBc1BBQUQvQVFBRC93QUxEd0FBL3dFQUEvOEFDdzhBQVA4QkFBUC9BQXNQQUFEL0FRQUQvd0FMRHdBQQovd0VBQS84QUN3OEFBUDhCQUFQL0FBc1BBQUQvQVFBRC93QUxEd0FBL3dFQUEvOEFDdzhBQVA4QkFBUC9BQXNQQUFEL0FRQUQvd0FMCkR3QUEvd0VBQS84QUN3OEFBUDhCQUFQL0FBc0tBQUFCQ2dBQUFRQUFBQUVBQUFEMUFBRUZBQUFCQUFBRi93QUJBQUFBQVFBQUFBRUcKQUFBQ0FBQUFCQUVBQUlBQXd3QzNBQzRBTkFBTEFBQUFBZ0FBQUFFQUFBQUJBQUFBQWdBQUFBSUNBQUFDQmdBQUFRQUFBQUVBQUFEMQpBQUVGQUFBREFBQUYvd0FEQWdBQUF3WUFBQWtBQUFBRUFBQUFaQVlBQUFRQUFBWC9BQU1BQUFBQkFBQUFCQVFBQUlBQUFBQUtDZ0FBCkNBQUFBQVVBQUFBSUFBQUFCUUFBQUFNQUFBQUNBQUFBQlFZQUFBY0FBQUFCQUFBQTlRQUJCUUFBQmdBQUJmOEFBd0FBQUFNQUFBQUcKQmdBQUFnQUFBQVFBQUFDZ0FBOEZBQUFIQkFBQUJ3QUFBQU1BQUFBRUFBQUFCd1lBQUFnS0FBQURBQUFGL3dBRUFnQUFDQVlBQUFFQQpBQUFCQUFBQTlBQUJCUUFBQ1FBQUJmOEFCUUlBQUFrR0FBQUNBQUFBQkFFQUFJQUF3d0MzQUM0QU5BQUxBQUFBQ1FBQUFBb0FBQUFKCkFBQUFDZ0FBQUFVQUFBQUJBQUFBQ2dZQUFBY0FBQUFCQUFBQTlRQUJCUUFBQ3dBQUJmOEFCUUFBQUFJQUFBQUxCZ0FBQWdBQUFBUUEKQUFDZ0FBOEZBQUFNQkFBQURBQUFBQVVBQUFBREFBQUFEQVlBQUFnS0FBQUpBQUFGL3c9PQo8L2RhdGE+CiAgICAgICAgPGtleT5SZWFsVGltZTwva2V5PgogICAgICAgIDxkYXRhPgpYQVFBQUFBQUFRSUVBQUFDQWdBQVZRQnVBSE1BY0FCbEFHTUFhUUJtQUdrQVpRQmtEQUFIL3djQUFBMEFBQUFDQUFBQi8vOEEvd0QvCkFQOEEvd0QvQUFZQUFQOEJBQVAvQUFzUEFBRC9BUUFEL3dBTER3QUEvd0VBQS84QUN3OEFBUDhCQUFQL0FBc1BBQUQvQVFBRC93QUwKRHdBQS93RUFBLzhBQ3c4QUFQOEJBQVAvQUFzUEFBRC9BUUFEL3dBTER3QUEvd0VBQS84QUN3OEFBUDhCQUFQL0FBc1BBQUQvQVFBRAovd0FMRHdBQS93RUFBLzhBQ3c4QUFQOEJBQVAvQUFzUEFBRC9BUUFEL3dBTER3QUEvd0VBQS84QUN3OEFBUDhCQUFQL0FBc1BBQUQvCkFRQUQvd0FMRHdBQS93RUFBLzhBQ3c4QUFQOEJBQVAvQUFzUEFBRC9BUUFEL3dBTER3QUEvd0VBQS84QUN3OEFBUDhCQUFQL0FBc1AKQUFEL0FRQUQvd0FMRHdBQS93RUFBLzhBQ3c4QUFQOEJBQVAvQUFzUEFBRC9BUUFEL3dBTER3QUEvd0VBQS84QUN3OEFBUDhCQUFQLwpBQXNQQUFEL0FRQUQvd0FMRHdBQS93RUFBLzhBQ3c4QUFQOEJBQVAvQUFzUEFBRC9BUUFEL3dBTER3QUEvd0VBQS84QUN3OEFBUDhCCkFBUC9BQXNQQUFEL0FRQUQvd0FMRHdBQS93RUFBLzhBQ3c4QUFQOEJBQVAvQUFzUEFBRC9BUUFEL3dBTER3QUEvd0VBQS84QUN3OEEKQVA4QkFBUC9BQXNQQUFEL0FRQUQvd0FMRHdBQS93RUFBLzhBQ3c4QUFQOEJBQVAvQUFzUEFBRC9BUUFEL3dBTER3QUEvd0VBQS84QQpDdzhBQVA4QkFBUC9BQXNQQUFEL0FRQUQvd0FMRHdBQS93RUFBLzhBQ3c4QUFQOEJBQVAvQUFzUEFBRC9BUUFEL3dBTER3QUEvd0VBCkEvOEFDdzhBQVA4QkFBUC9BQXNQQUFEL0FRQUQvd0FMRHdBQS93RUFBLzhBQ3c4QUFQOEJBQVAvQUFzUEFBRC9BUUFEL3dBTER3QUEKL3dFQUEvOEFDdzhBQVA4QkFBUC9BQXNQQUFEL0FRQUQvd0FMRHdBQS93RUFBLzhBQ3c4QUFQOEJBQVAvQUFzUEFBRC9BUUFEL3dBTApEd0FBL3dFQUEvOEFDdzhBQVA4QkFBUC9BQXNLQUFBQkNnQUFBUUFBQUFFQUFBRDFBQUVGQUFBQkFBQUYvd0FCQUFBQUFRQUFBQUVHCkFBQUNBQUFBQkFFQUFJQUF3d0MzQUM0QU5BQUxBQUFBQWdBQUFBRUFBQUFCQUFBQUFnQUFBQUlDQUFBQ0JnQUFBUUFBQUFFQUFBRDEKQUFFRkFBQURBQUFGL3dBREFnQUFBd1lBQUFrQUFBQUVBQUFBWkFZQUFBUUFBQVgvQUFNQUFBQUJBQUFBQkFRQUFJQUFBQUFLQ2dBQQpDQUFBQUFVQUFBQUlBQUFBQlFBQUFBTUFBQUFDQUFBQUJRWUFBQWNBQUFBQkFBQUE5UUFCQlFBQUJnQUFCZjhBQXdBQUFBTUFBQUFHCkJnQUFBZ0FBQUFRQUFBQ2dBQThGQUFBSEJBQUFCd0FBQUFNQUFBQUVBQUFBQndZQUFBZ0tBQUFEQUFBRi93QUVBZ0FBQ0FZQUFBRUEKQUFBQkFBQUE5QUFCQlFBQUNRQUFCZjhBQlFJQUFBa0dBQUFDQUFBQUJBRUFBSUFBd3dDM0FDNEFOQUFMQUFBQUNRQUFBQW9BQUFBSgpBQUFBQ2dBQUFBVUFBQUFCQUFBQUNnWUFBQWNBQUFBQkFBQUE5UUFCQlFBQUN3QUFCZjhBQlFBQUFBSUFBQUFMQmdBQUFnQUFBQVFBCkFBQ2dBQThGQUFBTUJBQUFEQUFBQUFVQUFBQURBQUFBREFZQUFBZ0tBQUFKQUFBRi93PT0KPC9kYXRhPgogICAgICA8L2RpY3Q+CiAgICAgIDxrZXk+VW5pZmllZFNsZWVwU2xpZGVyUHJlZjwva2V5PgogICAgICA8dHJ1ZS8+CiAgICAgIDxrZXk+RGFya1dha2VTZXJ2aWNlczwva2V5PgogICAgICA8ZGljdD4KICAgICAgICA8a2V5PkRhcmtXYWtlQmFja2dyb3VuZFRhc2tzPC9rZXk+CiAgICAgICAgPGludGVnZXI+MTwvaW50ZWdlcj4KICAgICAgICA8a2V5PlNsZWVwU2VydmljZXM8L2tleT4KICAgICAgICA8aW50ZWdlcj43PC9pbnRlZ2VyPgogICAgICAgIDxrZXk+U2xlZXBTZXJ2aWNlc01vZGVzPC9rZXk+CiAgICAgICAgPGRpY3Q+CiAgICAgICAgICA8a2V5Pk1vZGVBPC9rZXk+CiAgICAgICAgICA8ZGljdD4KICAgICAgICAgICAgPGtleT5FeHBpcmF0aW9uPC9rZXk+CiAgICAgICAgICAgIDxpbnRlZ2VyPjA8L2ludGVnZXI+CiAgICAgICAgICAgIDxrZXk+QmF0dGVyeUZsb29yPC9rZXk+CiAgICAgICAgICAgIDxpbnRlZ2VyPjA8L2ludGVnZXI+CiAgICAgICAgICAgIDxrZXk+QmFzZUludGVydmFsczwva2V5PgogICAgICAgICAgICA8ZGljdD4KICAgICAgICAgICAgICA8a2V5PkFDPC9rZXk+CiAgICAgICAgICAgICAgPGRpY3Q+CiAgICAgICAgICAgICAgICA8a2V5PkJhc2VTbGVlcEludGVydmFsPC9rZXk+CiAgICAgICAgICAgICAgICA8aW50ZWdlcj4zNjAwPC9pbnRlZ2VyPgogICAgICAgICAgICAgICAgPGtleT5CYXNlV2FrZUNhcEludGVydmFsPC9rZXk+CiAgICAgICAgICAgICAgICA8aW50ZWdlcj44NjQwMDwvaW50ZWdlcj4KICAgICAgICAgICAgICA8L2RpY3Q+CiAgICAgICAgICAgICAgPGtleT5CYXR0ZXJ5PC9rZXk+CiAgICAgICAgICAgICAgPGRpY3Q+CiAgICAgICAgICAgICAgICA8a2V5PkJhc2VTbGVlcEludGVydmFsPC9rZXk+CiAgICAgICAgICAgICAgICA8aW50ZWdlcj4zNjAwPC9pbnRlZ2VyPgogICAgICAgICAgICAgICAgPGtleT5CYXNlV2FrZUNhcEludGVydmFsPC9rZXk+CiAgICAgICAgICAgICAgICA8aW50ZWdlcj4xODA8L2ludGVnZXI+CiAgICAgICAgICAgICAgPC9kaWN0PgogICAgICAgICAgICA8L2RpY3Q+CiAgICAgICAgICA8L2RpY3Q+CiAgICAgICAgPC9kaWN0PgogICAgICA8L2RpY3Q+CiAgICA8L2RpY3Q+CiAgPC9kaWN0Pgo8L3BsaXN0Pgo=</data>\n\t\t</dict>\n\t</dict>\n\t<key>NSHumanReadableCopyright</key>\n\t<string>Copyright © 2017 Vanilla. All rights reserved.</string>\n\t<key>OSBundleRequired</key>\n\t<string>Root</string>\n</dict>\n</plist>\n"
  },
  {
    "path": "EFI/CLOVER/kexts/Other/CodecCommander.kext/Contents/Info.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>BuildMachineOSBuild</key>\n\t<string>16E195</string>\n\t<key>CFBundleDevelopmentRegion</key>\n\t<string>English</string>\n\t<key>CFBundleExecutable</key>\n\t<string>CodecCommander</string>\n\t<key>CFBundleGetInfoString</key>\n\t<string>2.6.3, Copyright © 2013-2014 TimeWalker. All rights reserved.</string>\n\t<key>CFBundleIdentifier</key>\n\t<string>org.tw.CodecCommander</string>\n\t<key>CFBundleInfoDictionaryVersion</key>\n\t<string>6.0</string>\n\t<key>CFBundleName</key>\n\t<string>CodecCommander</string>\n\t<key>CFBundlePackageType</key>\n\t<string>KEXT</string>\n\t<key>CFBundleShortVersionString</key>\n\t<string>2.6.3</string>\n\t<key>CFBundleSignature</key>\n\t<string>????</string>\n\t<key>CFBundleSupportedPlatforms</key>\n\t<array>\n\t\t<string>MacOSX</string>\n\t</array>\n\t<key>CFBundleVersion</key>\n\t<string>2.6.3</string>\n\t<key>DTCompiler</key>\n\t<string>com.apple.compilers.llvm.clang.1_0</string>\n\t<key>DTPlatformBuild</key>\n\t<string>8E2002</string>\n\t<key>DTPlatformVersion</key>\n\t<string>GM</string>\n\t<key>DTSDKBuild</key>\n\t<string>10M2518</string>\n\t<key>DTSDKName</key>\n\t<string>macosx10.6</string>\n\t<key>DTXcode</key>\n\t<string>0832</string>\n\t<key>DTXcodeBuild</key>\n\t<string>8E2002</string>\n\t<key>IOKitPersonalities</key>\n\t<dict>\n\t\t<key>CodecCommander</key>\n\t\t<dict>\n\t\t\t<key>CFBundleIdentifier</key>\n\t\t\t<string>org.tw.CodecCommander</string>\n\t\t\t<key>Codec Profile</key>\n\t\t\t<dict>\n\t\t\t\t<key>1002</key>\n\t\t\t\t<string>Disabled HDMI</string>\n\t\t\t\t<key>10de</key>\n\t\t\t\t<string>Disabled HDMI</string>\n\t\t\t\t<key>10ec_0233</key>\n\t\t\t\t<string>Realtek ALC283,etc</string>\n\t\t\t\t<key>10ec_0235</key>\n\t\t\t\t<string>Realtek ALC283,etc</string>\n\t\t\t\t<key>10ec_0236</key>\n\t\t\t\t<string>Realtek ALC283,etc</string>\n\t\t\t\t<key>10ec_0255</key>\n\t\t\t\t<string>Realtek ALC283,etc</string>\n\t\t\t\t<key>10ec_0269</key>\n\t\t\t\t<string>Realtek ALC269</string>\n\t\t\t\t<key>10ec_0269_HDA_1028_04d9</key>\n\t\t\t\t<string>Realtek ALC269VB</string>\n\t\t\t\t<key>10ec_0269_HDA_1458_fa50</key>\n\t\t\t\t<string>Realtek ALC269 BRIX</string>\n\t\t\t\t<key>10ec_0282</key>\n\t\t\t\t<string>Realtek ALC283,etc</string>\n\t\t\t\t<key>10ec_0283</key>\n\t\t\t\t<string>Realtek ALC283,etc</string>\n\t\t\t\t<key>10ec_0292</key>\n\t\t\t\t<string>Realtek ALC292</string>\n\t\t\t\t<key>10ec_0668</key>\n\t\t\t\t<string>Realtek ALC668</string>\n\t\t\t\t<key>10ec_0892_HDA_1458</key>\n\t\t\t\t<string>Realtek ALC892 desktop</string>\n\t\t\t\t<key>10ec_0892_HDA_8086</key>\n\t\t\t\t<string>Realtek ALC892 desktop</string>\n\t\t\t\t<key>10ec_0900</key>\n\t\t\t\t<string>Realtek ALC1150</string>\n\t\t\t\t<key>8086</key>\n\t\t\t\t<string>Disabled HDMI</string>\n\t\t\t\t<key>Default</key>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>Check Infinitely</key>\n\t\t\t\t\t<false/>\n\t\t\t\t\t<key>Check Interval</key>\n\t\t\t\t\t<integer>3000</integer>\n\t\t\t\t\t<key>Custom Commands</key>\n\t\t\t\t\t<array/>\n\t\t\t\t\t<key>Perform Reset</key>\n\t\t\t\t\t<true/>\n\t\t\t\t\t<key>Perform Reset on EAPD Fail</key>\n\t\t\t\t\t<false/>\n\t\t\t\t\t<key>Perform Reset on External Wake</key>\n\t\t\t\t\t<true/>\n\t\t\t\t\t<key>Send Delay</key>\n\t\t\t\t\t<integer>300</integer>\n\t\t\t\t\t<key>Sleep Nodes</key>\n\t\t\t\t\t<true/>\n\t\t\t\t\t<key>Update Nodes</key>\n\t\t\t\t\t<true/>\n\t\t\t\t</dict>\n\t\t\t\t<key>Disabled HDMI</key>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>Check Infinitely</key>\n\t\t\t\t\t<false/>\n\t\t\t\t\t<key>Disable</key>\n\t\t\t\t\t<true/>\n\t\t\t\t\t<key>Sleep Nodes</key>\n\t\t\t\t\t<false/>\n\t\t\t\t\t<key>Update Nodes</key>\n\t\t\t\t\t<false/>\n\t\t\t\t</dict>\n\t\t\t\t<key>Realtek ALC1150</key>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>Custom Commands</key>\n\t\t\t\t\t<array>\n\t\t\t\t\t\t<dict>\n\t\t\t\t\t\t\t<key>Command</key>\n\t\t\t\t\t\t\t<data>\n\t\t\t\t\t\t\tAgUABw==\n\t\t\t\t\t\t\t</data>\n\t\t\t\t\t\t\t<key>Comment</key>\n\t\t\t\t\t\t\t<string>0x20 SET_COEF_INDEX 0x07</string>\n\t\t\t\t\t\t\t<key>On Init</key>\n\t\t\t\t\t\t\t<true/>\n\t\t\t\t\t\t\t<key>On Sleep</key>\n\t\t\t\t\t\t\t<true/>\n\t\t\t\t\t\t\t<key>On Wake</key>\n\t\t\t\t\t\t\t<true/>\n\t\t\t\t\t\t</dict>\n\t\t\t\t\t\t<dict>\n\t\t\t\t\t\t\t<key>Command</key>\n\t\t\t\t\t\t\t<data>\n\t\t\t\t\t\t\tAgR8sA==\n\t\t\t\t\t\t\t</data>\n\t\t\t\t\t\t\t<key>Comment</key>\n\t\t\t\t\t\t\t<string>0x20 SET_PROC_COEF 0x7CB0</string>\n\t\t\t\t\t\t\t<key>On Init</key>\n\t\t\t\t\t\t\t<true/>\n\t\t\t\t\t\t\t<key>On Sleep</key>\n\t\t\t\t\t\t\t<false/>\n\t\t\t\t\t\t\t<key>On Wake</key>\n\t\t\t\t\t\t\t<true/>\n\t\t\t\t\t\t</dict>\n\t\t\t\t\t</array>\n\t\t\t\t\t<key>Send Delay</key>\n\t\t\t\t\t<integer>100</integer>\n\t\t\t\t\t<key>Sleep Nodes</key>\n\t\t\t\t\t<false/>\n\t\t\t\t\t<key>Update Nodes</key>\n\t\t\t\t\t<false/>\n\t\t\t\t</dict>\n\t\t\t\t<key>Realtek ALC269</key>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>Custom Commands</key>\n\t\t\t\t\t<array>\n\t\t\t\t\t\t<dict>\n\t\t\t\t\t\t\t<key>Command</key>\n\t\t\t\t\t\t\t<data>\n\t\t\t\t\t\t\tAVcIgw==\n\t\t\t\t\t\t\t</data>\n\t\t\t\t\t\t\t<key>Comment</key>\n\t\t\t\t\t\t\t<string>0x15 SET_UNSOLICITED_ENABLE 0x83</string>\n\t\t\t\t\t\t\t<key>On Init</key>\n\t\t\t\t\t\t\t<true/>\n\t\t\t\t\t\t\t<key>On Sleep</key>\n\t\t\t\t\t\t\t<false/>\n\t\t\t\t\t\t\t<key>On Wake</key>\n\t\t\t\t\t\t\t<true/>\n\t\t\t\t\t\t</dict>\n\t\t\t\t\t</array>\n\t\t\t\t</dict>\n\t\t\t\t<key>Realtek ALC269 BRIX</key>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>Custom Commands</key>\n\t\t\t\t\t<array>\n\t\t\t\t\t\t<dict>\n\t\t\t\t\t\t\t<key>Command</key>\n\t\t\t\t\t\t\t<data>\n\t\t\t\t\t\t\tAVcIgw==\n\t\t\t\t\t\t\t</data>\n\t\t\t\t\t\t\t<key>Comment</key>\n\t\t\t\t\t\t\t<string>0x15 SET_UNSOLICITED_ENABLE 0x83</string>\n\t\t\t\t\t\t\t<key>On Init</key>\n\t\t\t\t\t\t\t<false/>\n\t\t\t\t\t\t\t<key>On Sleep</key>\n\t\t\t\t\t\t\t<false/>\n\t\t\t\t\t\t\t<key>On Wake</key>\n\t\t\t\t\t\t\t<false/>\n\t\t\t\t\t\t</dict>\n\t\t\t\t\t</array>\n\t\t\t\t</dict>\n\t\t\t\t<key>Realtek ALC269VB</key>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>Custom Commands</key>\n\t\t\t\t\t<array>\n\t\t\t\t\t\t<dict>\n\t\t\t\t\t\t\t<key>Command</key>\n\t\t\t\t\t\t\t<data>\n\t\t\t\t\t\t\tAhcIgw==\n\t\t\t\t\t\t\t</data>\n\t\t\t\t\t\t\t<key>Comment</key>\n\t\t\t\t\t\t\t<string>0x21 SET_UNSOLICITED_ENABLE 0x83</string>\n\t\t\t\t\t\t\t<key>On Init</key>\n\t\t\t\t\t\t\t<true/>\n\t\t\t\t\t\t\t<key>On Sleep</key>\n\t\t\t\t\t\t\t<false/>\n\t\t\t\t\t\t\t<key>On Wake</key>\n\t\t\t\t\t\t\t<true/>\n\t\t\t\t\t\t</dict>\n\t\t\t\t\t</array>\n\t\t\t\t\t<key>Send Delay</key>\n\t\t\t\t\t<integer>20</integer>\n\t\t\t\t\t<key>Sleep Nodes</key>\n\t\t\t\t\t<false/>\n\t\t\t\t</dict>\n\t\t\t\t<key>Realtek ALC283,etc</key>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>Custom Commands</key>\n\t\t\t\t\t<array>\n\t\t\t\t\t\t<dict>\n\t\t\t\t\t\t\t<key>Command</key>\n\t\t\t\t\t\t\t<data>\n\t\t\t\t\t\t\tAZcHJQ==\n\t\t\t\t\t\t\t</data>\n\t\t\t\t\t\t\t<key>Comment</key>\n\t\t\t\t\t\t\t<string>0x19 SET_PIN_WIDGET_CONTROL 0x25</string>\n\t\t\t\t\t\t\t<key>On Init</key>\n\t\t\t\t\t\t\t<true/>\n\t\t\t\t\t\t\t<key>On Sleep</key>\n\t\t\t\t\t\t\t<false/>\n\t\t\t\t\t\t\t<key>On Wake</key>\n\t\t\t\t\t\t\t<true/>\n\t\t\t\t\t\t</dict>\n\t\t\t\t\t\t<dict>\n\t\t\t\t\t\t\t<key>Command</key>\n\t\t\t\t\t\t\t<data>\n\t\t\t\t\t\t\tAhcIgw==\n\t\t\t\t\t\t\t</data>\n\t\t\t\t\t\t\t<key>Comment</key>\n\t\t\t\t\t\t\t<string>0x21 SET_UNSOLICITED_ENABLE 0x83</string>\n\t\t\t\t\t\t\t<key>On Init</key>\n\t\t\t\t\t\t\t<true/>\n\t\t\t\t\t\t\t<key>On Sleep</key>\n\t\t\t\t\t\t\t<false/>\n\t\t\t\t\t\t\t<key>On Wake</key>\n\t\t\t\t\t\t\t<true/>\n\t\t\t\t\t\t</dict>\n\t\t\t\t\t</array>\n\t\t\t\t\t<key>Perform Reset</key>\n\t\t\t\t\t<false/>\n\t\t\t\t\t<key>Send Delay</key>\n\t\t\t\t\t<integer>10</integer>\n\t\t\t\t\t<key>Sleep Nodes</key>\n\t\t\t\t\t<false/>\n\t\t\t\t</dict>\n\t\t\t\t<key>Realtek ALC292</key>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>Custom Commands</key>\n\t\t\t\t\t<array>\n\t\t\t\t\t\t<dict>\n\t\t\t\t\t\t\t<key>Command</key>\n\t\t\t\t\t\t\t<string>0x01a70724</string>\n\t\t\t\t\t\t\t<key>Comment</key>\n\t\t\t\t\t\t\t<string>Node 0x1a - Pin Control (In Enable / VRefEn)</string>\n\t\t\t\t\t\t\t<key>On Init</key>\n\t\t\t\t\t\t\t<true/>\n\t\t\t\t\t\t\t<key>On Sleep</key>\n\t\t\t\t\t\t\t<false/>\n\t\t\t\t\t\t\t<key>On Wake</key>\n\t\t\t\t\t\t\t<true/>\n\t\t\t\t\t\t</dict>\n\t\t\t\t\t\t<dict>\n\t\t\t\t\t\t\t<key>Command</key>\n\t\t\t\t\t\t\t<data>\n\t\t\t\t\t\t\tAVcIgw==\n\t\t\t\t\t\t\t</data>\n\t\t\t\t\t\t\t<key>Comment</key>\n\t\t\t\t\t\t\t<string>0x15 SET_UNSOLICITED_ENABLE 0x83</string>\n\t\t\t\t\t\t\t<key>On Init</key>\n\t\t\t\t\t\t\t<true/>\n\t\t\t\t\t\t\t<key>On Sleep</key>\n\t\t\t\t\t\t\t<false/>\n\t\t\t\t\t\t\t<key>On Wake</key>\n\t\t\t\t\t\t\t<true/>\n\t\t\t\t\t\t</dict>\n\t\t\t\t\t</array>\n\t\t\t\t\t<key>Perform Reset</key>\n\t\t\t\t\t<false/>\n\t\t\t\t</dict>\n\t\t\t\t<key>Realtek ALC668</key>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>Custom Commands</key>\n\t\t\t\t\t<array>\n\t\t\t\t\t\t<dict>\n\t\t\t\t\t\t\t<key>Command</key>\n\t\t\t\t\t\t\t<data>\n\t\t\t\t\t\t\tAVcIgw==\n\t\t\t\t\t\t\t</data>\n\t\t\t\t\t\t\t<key>Comment</key>\n\t\t\t\t\t\t\t<string>0x15 SET_UNSOLICITED_ENABLE 0x83</string>\n\t\t\t\t\t\t\t<key>On Init</key>\n\t\t\t\t\t\t\t<true/>\n\t\t\t\t\t\t\t<key>On Sleep</key>\n\t\t\t\t\t\t\t<false/>\n\t\t\t\t\t\t\t<key>On Wake</key>\n\t\t\t\t\t\t\t<true/>\n\t\t\t\t\t\t</dict>\n\t\t\t\t\t\t<dict>\n\t\t\t\t\t\t\t<key>Command</key>\n\t\t\t\t\t\t\t<data>\n\t\t\t\t\t\t\tAbcHIA==\n\t\t\t\t\t\t\t</data>\n\t\t\t\t\t\t\t<key>Comment</key>\n\t\t\t\t\t\t\t<string>Node 0x1b - Pin Control (In Enable)</string>\n\t\t\t\t\t\t\t<key>On Init</key>\n\t\t\t\t\t\t\t<false/>\n\t\t\t\t\t\t\t<key>On Sleep</key>\n\t\t\t\t\t\t\t<false/>\n\t\t\t\t\t\t\t<key>On Wake</key>\n\t\t\t\t\t\t\t<true/>\n\t\t\t\t\t\t</dict>\n\t\t\t\t\t</array>\n\t\t\t\t\t<key>Perform Reset</key>\n\t\t\t\t\t<false/>\n\t\t\t\t</dict>\n\t\t\t\t<key>Realtek ALC892 desktop</key>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>Sleep Nodes</key>\n\t\t\t\t\t<false/>\n\t\t\t\t\t<key>Update Nodes</key>\n\t\t\t\t\t<false/>\n\t\t\t\t</dict>\n\t\t\t</dict>\n\t\t\t<key>IOClass</key>\n\t\t\t<string>CodecCommander</string>\n\t\t\t<key>IOMatchCategory</key>\n\t\t\t<string>CodecCommander</string>\n\t\t\t<key>IOProviderClass</key>\n\t\t\t<string>IOHDACodecFunction</string>\n\t\t\t<key>IOUserClientClass</key>\n\t\t\t<string>CodecCommanderClient</string>\n\t\t</dict>\n\t\t<key>CodecCommanderPowerHook</key>\n\t\t<dict>\n\t\t\t<key>CFBundleIdentifier</key>\n\t\t\t<string>org.tw.CodecCommander</string>\n\t\t\t<key>Codec Profile</key>\n\t\t\t<dict>\n\t\t\t\t<key>1002</key>\n\t\t\t\t<string>Disabled HDMI</string>\n\t\t\t\t<key>10de</key>\n\t\t\t\t<string>Disabled HDMI</string>\n\t\t\t\t<key>8086</key>\n\t\t\t\t<string>Disabled HDMI</string>\n\t\t\t\t<key>Disabled HDMI</key>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>Disable</key>\n\t\t\t\t\t<true/>\n\t\t\t\t</dict>\n\t\t\t</dict>\n\t\t\t<key>IOClass</key>\n\t\t\t<string>CodecCommanderPowerHook</string>\n\t\t\t<key>IOMatchCategory</key>\n\t\t\t<string>CodecCommanderPowerHook</string>\n\t\t\t<key>IOProviderClass</key>\n\t\t\t<string>AppleHDADriver</string>\n\t\t</dict>\n\t\t<key>CodecCommanderProbeInit</key>\n\t\t<dict>\n\t\t\t<key>CFBundleIdentifier</key>\n\t\t\t<string>org.tw.CodecCommander</string>\n\t\t\t<key>Codec Profile</key>\n\t\t\t<dict>\n\t\t\t\t<key>Default</key>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>Custom Commands</key>\n\t\t\t\t\t<array/>\n\t\t\t\t</dict>\n\t\t\t</dict>\n\t\t\t<key>IOClass</key>\n\t\t\t<string>CodecCommanderProbeInit</string>\n\t\t\t<key>IOProbeScore</key>\n\t\t\t<integer>5000</integer>\n\t\t\t<key>IOProviderClass</key>\n\t\t\t<string>IOHDACodecDevice</string>\n\t\t</dict>\n\t\t<key>CodecCommanderResidency</key>\n\t\t<dict>\n\t\t\t<key>CFBundleIdentifier</key>\n\t\t\t<string>org.tw.CodecCommander</string>\n\t\t\t<key>IOClass</key>\n\t\t\t<string>CodecCommanderResidency</string>\n\t\t\t<key>IOMatchCategory</key>\n\t\t\t<string>CodecCommanderResidency</string>\n\t\t\t<key>IOProviderClass</key>\n\t\t\t<string>IOResources</string>\n\t\t</dict>\n\t\t<key>CodecCommanderVoodooHDA</key>\n\t\t<dict>\n\t\t\t<key>CFBundleIdentifier</key>\n\t\t\t<string>org.tw.CodecCommander</string>\n\t\t\t<key>Codec Profile</key>\n\t\t\t<dict>\n\t\t\t\t<key>1002</key>\n\t\t\t\t<string>Disabled HDMI</string>\n\t\t\t\t<key>10de</key>\n\t\t\t\t<string>Disabled HDMI</string>\n\t\t\t\t<key>8086</key>\n\t\t\t\t<string>Disabled HDMI</string>\n\t\t\t\t<key>Default</key>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>Check Infinitely</key>\n\t\t\t\t\t<false/>\n\t\t\t\t\t<key>Perform Reset</key>\n\t\t\t\t\t<false/>\n\t\t\t\t\t<key>Perform Reset on EAPD Fail</key>\n\t\t\t\t\t<false/>\n\t\t\t\t\t<key>Perform Reset on External Wake</key>\n\t\t\t\t\t<false/>\n\t\t\t\t\t<key>Sleep Nodes</key>\n\t\t\t\t\t<false/>\n\t\t\t\t\t<key>Update Nodes</key>\n\t\t\t\t\t<false/>\n\t\t\t\t</dict>\n\t\t\t\t<key>Disabled HDMI</key>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>Check Infinitely</key>\n\t\t\t\t\t<false/>\n\t\t\t\t\t<key>Disable</key>\n\t\t\t\t\t<true/>\n\t\t\t\t\t<key>Sleep Nodes</key>\n\t\t\t\t\t<false/>\n\t\t\t\t\t<key>Update Nodes</key>\n\t\t\t\t\t<false/>\n\t\t\t\t</dict>\n\t\t\t</dict>\n\t\t\t<key>IOClass</key>\n\t\t\t<string>CodecCommander</string>\n\t\t\t<key>IOMatchCategory</key>\n\t\t\t<string>CodecCommander</string>\n\t\t\t<key>IOProviderClass</key>\n\t\t\t<string>VoodooHDADevice</string>\n\t\t\t<key>IOUserClientClass</key>\n\t\t\t<string>CodecCommanderClient</string>\n\t\t</dict>\n\t</dict>\n\t<key>NSHumanReadableCopyright</key>\n\t<string>Copyright © 2013-2014 TimeWalker/RehabMan. All rights reserved.</string>\n\t<key>OSBundleLibraries</key>\n\t<dict>\n\t\t<key>com.apple.iokit.IOACPIFamily</key>\n\t\t<string>1.0d1</string>\n\t\t<key>com.apple.iokit.IOAudioFamily</key>\n\t\t<string>1.1</string>\n\t\t<key>com.apple.iokit.IOPCIFamily</key>\n\t\t<string>1.0.0b1</string>\n\t\t<key>com.apple.kpi.bsd</key>\n\t\t<string>9.0.0</string>\n\t\t<key>com.apple.kpi.iokit</key>\n\t\t<string>9.0.0</string>\n\t\t<key>com.apple.kpi.libkern</key>\n\t\t<string>9.0.0</string>\n\t</dict>\n\t<key>Source Code</key>\n\t<string>https://github.com/RehabMan/EAPD-Codec-Commander</string>\n</dict>\n</plist>\n"
  },
  {
    "path": "EFI/CLOVER/kexts/Other/HWPEnabler.kext/Contents/Info.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>BuildMachineOSBuild</key>\n\t<string>17C205</string>\n\t<key>CFBundleDevelopmentRegion</key>\n\t<string>English</string>\n\t<key>CFBundleExecutable</key>\n\t<string>HWPEnabler</string>\n\t<key>CFBundleGetInfoString</key>\n\t<string>HWPEnabler 1.1, copyright © 2016 GoodWin. All rights reserved.</string>\n\t<key>CFBundleIdentifier</key>\n\t<string>good.win.HWPEnabler</string>\n\t<key>CFBundleInfoDictionaryVersion</key>\n\t<string>6.0</string>\n\t<key>CFBundleName</key>\n\t<string>HWPEnabler</string>\n\t<key>CFBundlePackageType</key>\n\t<string>KEXT</string>\n\t<key>CFBundleShortVersionString</key>\n\t<string>1.1</string>\n\t<key>CFBundleSignature</key>\n\t<string>????</string>\n\t<key>CFBundleSupportedPlatforms</key>\n\t<array>\n\t\t<string>MacOSX</string>\n\t</array>\n\t<key>CFBundleVersion</key>\n\t<string>1.1</string>\n\t<key>DTCompiler</key>\n\t<string>com.apple.compilers.llvm.clang.1_0</string>\n\t<key>DTPlatformBuild</key>\n\t<string>9C40b</string>\n\t<key>DTPlatformVersion</key>\n\t<string>GM</string>\n\t<key>DTSDKBuild</key>\n\t<string>17C76</string>\n\t<key>DTSDKName</key>\n\t<string>macosx10.13</string>\n\t<key>DTXcode</key>\n\t<string>0920</string>\n\t<key>DTXcodeBuild</key>\n\t<string>9C40b</string>\n\t<key>IOKitPersonalities</key>\n\t<dict>\n\t\t<key>HWPEnabler</key>\n\t\t<dict>\n\t\t\t<key>HWPDeaultVal</key>\n\t\t\t<string>80002301</string>\n\t\t\t<key>HWPSetDeaults</key>\n\t\t\t<true/>\n\t\t\t<key>HWPenable</key>\n\t\t\t<true/>\n\t\t\t<key>IOClass</key>\n\t\t\t<string>HWPEnabler</string>\n\t\t\t<key>IOMatchCategory</key>\n\t\t\t<string>HWPEnabler</string>\n\t\t\t<key>IOProviderClass</key>\n\t\t\t<string>IOResources</string>\n\t\t\t<key>IOResourceMatch</key>\n\t\t\t<string>IOKit</string>\n\t\t\t<key>IOUserClientClass</key>\n\t\t\t<string>HWPEnablerClient</string>\n\t\t</dict>\n\t</dict>\n\t<key>NSHumanReadableCopyright</key>\n\t<string>Copyright © 2016 GoodWin. All rights reserved.</string>\n\t<key>OSBundleLibraries</key>\n\t<dict>\n\t\t<key>com.apple.kpi.bsd</key>\n\t\t<string>10.4</string>\n\t\t<key>com.apple.kpi.iokit</key>\n\t\t<string>10.4</string>\n\t\t<key>com.apple.kpi.libkern</key>\n\t\t<string>10.4</string>\n\t\t<key>com.apple.kpi.mach</key>\n\t\t<string>10.4</string>\n\t\t<key>com.apple.kpi.unsupported</key>\n\t\t<string>10.5</string>\n\t</dict>\n\t<key>OSBundleRequired</key>\n\t<string>Root</string>\n</dict>\n</plist>\n"
  },
  {
    "path": "EFI/CLOVER/kexts/Other/HoRNDIS.kext/Contents/Info.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>BuildMachineOSBuild</key>\n\t<string>15G31</string>\n\t<key>CFBundleDevelopmentRegion</key>\n\t<string>English</string>\n\t<key>CFBundleExecutable</key>\n\t<string>HoRNDIS</string>\n\t<key>CFBundleGetInfoString</key>\n\t<string>Android/RNDIS tethering driver</string>\n\t<key>CFBundleIdentifier</key>\n\t<string>com.joshuawise.kexts.HoRNDIS</string>\n\t<key>CFBundleInfoDictionaryVersion</key>\n\t<string>6.0</string>\n\t<key>CFBundleName</key>\n\t<string>HoRNDIS</string>\n\t<key>CFBundlePackageType</key>\n\t<string>KEXT</string>\n\t<key>CFBundleShortVersionString</key>\n\t<string>8.0</string>\n\t<key>CFBundleSignature</key>\n\t<string>????</string>\n\t<key>CFBundleSupportedPlatforms</key>\n\t<array>\n\t\t<string>MacOSX</string>\n\t</array>\n\t<key>CFBundleVersion</key>\n\t<string>6</string>\n\t<key>DTCompiler</key>\n\t<string>com.apple.compilers.llvm.clang.1_0</string>\n\t<key>DTPlatformBuild</key>\n\t<string>7D1014</string>\n\t<key>DTPlatformVersion</key>\n\t<string>GM</string>\n\t<key>DTSDKBuild</key>\n\t<string>10K549</string>\n\t<key>DTSDKName</key>\n\t<string>macosx10.6</string>\n\t<key>DTXcode</key>\n\t<string>0731</string>\n\t<key>DTXcodeBuild</key>\n\t<string>7D1014</string>\n\t<key>IOKitPersonalities</key>\n\t<dict>\n\t\t<key>HoRNDISDevice</key>\n\t\t<dict>\n\t\t\t<key>CFBundleIdentifier</key>\n\t\t\t<string>com.joshuawise.kexts.HoRNDIS</string>\n\t\t\t<key>IOClass</key>\n\t\t\t<string>HoRNDISUSBDevice</string>\n\t\t\t<key>IOProviderClass</key>\n\t\t\t<string>IOUSBDevice</string>\n\t\t\t<key>bDeviceClass</key>\n\t\t\t<integer>224</integer>\n\t\t\t<key>bDeviceProtocol</key>\n\t\t\t<integer>0</integer>\n\t\t\t<key>bDeviceSubClass</key>\n\t\t\t<integer>0</integer>\n\t\t</dict>\n\t\t<key>HoRNDISDevice2</key>\n\t\t<dict>\n\t\t\t<key>CFBundleIdentifier</key>\n\t\t\t<string>com.joshuawise.kexts.HoRNDIS</string>\n\t\t\t<key>IOClass</key>\n\t\t\t<string>HoRNDISUSBDevice</string>\n\t\t\t<key>IOProviderClass</key>\n\t\t\t<string>IOUSBDevice</string>\n\t\t\t<key>bDeviceClass</key>\n\t\t\t<integer>239</integer>\n\t\t\t<key>bDeviceProtocol</key>\n\t\t\t<integer>1</integer>\n\t\t\t<key>bDeviceSubClass</key>\n\t\t\t<integer>2</integer>\n\t\t</dict>\n\t\t<key>HoRNDISDeviceComposite</key>\n\t\t<dict>\n\t\t\t<key>CFBundleIdentifier</key>\n\t\t\t<string>com.joshuawise.kexts.HoRNDIS</string>\n\t\t\t<key>IOClass</key>\n\t\t\t<string>HoRNDISUSBDevice</string>\n\t\t\t<key>IOProviderClass</key>\n\t\t\t<string>IOUSBDevice</string>\n\t\t\t<key>bDeviceClass</key>\n\t\t\t<integer>0</integer>\n\t\t\t<key>bDeviceProtocol</key>\n\t\t\t<integer>0</integer>\n\t\t\t<key>bDeviceSubClass</key>\n\t\t\t<integer>0</integer>\n\t\t</dict>\n\t\t<key>MicroDriverDevice3</key>\n\t\t<dict>\n\t\t\t<key>CFBundleIdentifier</key>\n\t\t\t<string>com.joshuawise.kexts.HoRNDIS</string>\n\t\t\t<key>IOClass</key>\n\t\t\t<string>HoRNDISUSBDevice</string>\n\t\t\t<key>IOProviderClass</key>\n\t\t\t<string>IOUSBDevice</string>\n\t\t\t<key>bDeviceClass</key>\n\t\t\t<integer>2</integer>\n\t\t\t<key>bDeviceProtocol</key>\n\t\t\t<integer>0</integer>\n\t\t\t<key>bDeviceSubClass</key>\n\t\t\t<integer>0</integer>\n\t\t</dict>\n\t</dict>\n\t<key>OSBundleLibraries</key>\n\t<dict>\n\t\t<key>com.apple.iokit.IONetworkingFamily</key>\n\t\t<string>1.1</string>\n\t\t<key>com.apple.iokit.IOUSBFamily</key>\n\t\t<string>1.8</string>\n\t\t<key>com.apple.kpi.bsd</key>\n\t\t<string>8.0</string>\n\t\t<key>com.apple.kpi.iokit</key>\n\t\t<string>8.0</string>\n\t\t<key>com.apple.kpi.libkern</key>\n\t\t<string>8.0</string>\n\t\t<key>com.apple.kpi.mach</key>\n\t\t<string>8.0</string>\n\t</dict>\n</dict>\n</plist>\n"
  },
  {
    "path": "EFI/CLOVER/kexts/Other/HoRNDIS.kext/Contents/_CodeSignature/CodeResources",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>files</key>\n\t<dict>\n\t\t<key>Resources/en.lproj/InfoPlist.strings</key>\n\t\t<dict>\n\t\t\t<key>hash</key>\n\t\t\t<data>\n\t\t\tMiLKDDnrUKr4EmuvhS5VQwxHGK8=\n\t\t\t</data>\n\t\t\t<key>optional</key>\n\t\t\t<true/>\n\t\t</dict>\n\t</dict>\n\t<key>files2</key>\n\t<dict>\n\t\t<key>Resources/en.lproj/InfoPlist.strings</key>\n\t\t<dict>\n\t\t\t<key>hash</key>\n\t\t\t<data>\n\t\t\tMiLKDDnrUKr4EmuvhS5VQwxHGK8=\n\t\t\t</data>\n\t\t\t<key>hash2</key>\n\t\t\t<data>\n\t\t\tOc8u4Ht7Mz58F50L9NeYpbcq9qTlhPUeZCcDu/pPyCg=\n\t\t\t</data>\n\t\t\t<key>optional</key>\n\t\t\t<true/>\n\t\t</dict>\n\t</dict>\n\t<key>rules</key>\n\t<dict>\n\t\t<key>^Resources/</key>\n\t\t<true/>\n\t\t<key>^Resources/.*\\.lproj/</key>\n\t\t<dict>\n\t\t\t<key>optional</key>\n\t\t\t<true/>\n\t\t\t<key>weight</key>\n\t\t\t<real>1000</real>\n\t\t</dict>\n\t\t<key>^Resources/.*\\.lproj/locversion.plist$</key>\n\t\t<dict>\n\t\t\t<key>omit</key>\n\t\t\t<true/>\n\t\t\t<key>weight</key>\n\t\t\t<real>1100</real>\n\t\t</dict>\n\t\t<key>^version.plist$</key>\n\t\t<true/>\n\t</dict>\n\t<key>rules2</key>\n\t<dict>\n\t\t<key>.*\\.dSYM($|/)</key>\n\t\t<dict>\n\t\t\t<key>weight</key>\n\t\t\t<real>11</real>\n\t\t</dict>\n\t\t<key>^(.*/)?\\.DS_Store$</key>\n\t\t<dict>\n\t\t\t<key>omit</key>\n\t\t\t<true/>\n\t\t\t<key>weight</key>\n\t\t\t<real>2000</real>\n\t\t</dict>\n\t\t<key>^(Frameworks|SharedFrameworks|PlugIns|Plug-ins|XPCServices|Helpers|MacOS|Library/(Automator|Spotlight|LoginItems))/</key>\n\t\t<dict>\n\t\t\t<key>nested</key>\n\t\t\t<true/>\n\t\t\t<key>weight</key>\n\t\t\t<real>10</real>\n\t\t</dict>\n\t\t<key>^.*</key>\n\t\t<true/>\n\t\t<key>^Info\\.plist$</key>\n\t\t<dict>\n\t\t\t<key>omit</key>\n\t\t\t<true/>\n\t\t\t<key>weight</key>\n\t\t\t<real>20</real>\n\t\t</dict>\n\t\t<key>^PkgInfo$</key>\n\t\t<dict>\n\t\t\t<key>omit</key>\n\t\t\t<true/>\n\t\t\t<key>weight</key>\n\t\t\t<real>20</real>\n\t\t</dict>\n\t\t<key>^Resources/</key>\n\t\t<dict>\n\t\t\t<key>weight</key>\n\t\t\t<real>20</real>\n\t\t</dict>\n\t\t<key>^Resources/.*\\.lproj/</key>\n\t\t<dict>\n\t\t\t<key>optional</key>\n\t\t\t<true/>\n\t\t\t<key>weight</key>\n\t\t\t<real>1000</real>\n\t\t</dict>\n\t\t<key>^Resources/.*\\.lproj/locversion.plist$</key>\n\t\t<dict>\n\t\t\t<key>omit</key>\n\t\t\t<true/>\n\t\t\t<key>weight</key>\n\t\t\t<real>1100</real>\n\t\t</dict>\n\t\t<key>^[^/]+$</key>\n\t\t<dict>\n\t\t\t<key>nested</key>\n\t\t\t<true/>\n\t\t\t<key>weight</key>\n\t\t\t<real>10</real>\n\t\t</dict>\n\t\t<key>^embedded\\.provisionprofile$</key>\n\t\t<dict>\n\t\t\t<key>weight</key>\n\t\t\t<real>20</real>\n\t\t</dict>\n\t\t<key>^version\\.plist$</key>\n\t\t<dict>\n\t\t\t<key>weight</key>\n\t\t\t<real>20</real>\n\t\t</dict>\n\t</dict>\n</dict>\n</plist>\n"
  },
  {
    "path": "EFI/CLOVER/kexts/Other/Lilu_v1.3.7.kext/Contents/Info.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>BuildMachineOSBuild</key>\n\t<string>18G29g</string>\n\t<key>CFBundleDevelopmentRegion</key>\n\t<string>en</string>\n\t<key>CFBundleExecutable</key>\n\t<string>Lilu</string>\n\t<key>CFBundleIdentifier</key>\n\t<string>as.vit9696.Lilu</string>\n\t<key>CFBundleInfoDictionaryVersion</key>\n\t<string>6.0</string>\n\t<key>CFBundleName</key>\n\t<string>Lilu</string>\n\t<key>CFBundlePackageType</key>\n\t<string>KEXT</string>\n\t<key>CFBundleShortVersionString</key>\n\t<string>1.3.7</string>\n\t<key>CFBundleSignature</key>\n\t<string>????</string>\n\t<key>CFBundleSupportedPlatforms</key>\n\t<array>\n\t\t<string>MacOSX</string>\n\t</array>\n\t<key>CFBundleVersion</key>\n\t<string>1.3.7</string>\n\t<key>DTCompiler</key>\n\t<string>com.apple.compilers.llvm.clang.1_0</string>\n\t<key>DTPlatformBuild</key>\n\t<string>10E1001</string>\n\t<key>DTPlatformVersion</key>\n\t<string>GM</string>\n\t<key>DTSDKBuild</key>\n\t<string>18E219</string>\n\t<key>DTSDKName</key>\n\t<string>macosx10.14</string>\n\t<key>DTXcode</key>\n\t<string>1020</string>\n\t<key>DTXcodeBuild</key>\n\t<string>10E1001</string>\n\t<key>IOKitPersonalities</key>\n\t<dict>\n\t\t<key>as.vit9696.Lilu</key>\n\t\t<dict>\n\t\t\t<key>CFBundleIdentifier</key>\n\t\t\t<string>as.vit9696.Lilu</string>\n\t\t\t<key>IOClass</key>\n\t\t\t<string>Lilu</string>\n\t\t\t<key>IOMatchCategory</key>\n\t\t\t<string>Lilu</string>\n\t\t\t<key>IOProviderClass</key>\n\t\t\t<string>IOResources</string>\n\t\t\t<key>IOResourceMatch</key>\n\t\t\t<string>IOKit</string>\n\t\t</dict>\n\t</dict>\n\t<key>NSHumanReadableCopyright</key>\n\t<string>Copyright © 2016-2018 vit9696. All rights reserved.</string>\n\t<key>OSBundleCompatibleVersion</key>\n\t<string>1.2.0</string>\n\t<key>OSBundleLibraries</key>\n\t<dict>\n\t\t<key>com.apple.kpi.bsd</key>\n\t\t<string>12.0.0</string>\n\t\t<key>com.apple.kpi.dsep</key>\n\t\t<string>12.0.0</string>\n\t\t<key>com.apple.kpi.iokit</key>\n\t\t<string>12.0.0</string>\n\t\t<key>com.apple.kpi.libkern</key>\n\t\t<string>12.0.0</string>\n\t\t<key>com.apple.kpi.mach</key>\n\t\t<string>12.0.0</string>\n\t\t<key>com.apple.kpi.unsupported</key>\n\t\t<string>12.0.0</string>\n\t</dict>\n\t<key>OSBundleRequired</key>\n\t<string>Root</string>\n</dict>\n</plist>\n"
  },
  {
    "path": "EFI/CLOVER/kexts/Other/Lilu_v1.3.7.kext/Contents/Resources/Headers/capstone/arm.h",
    "content": "#ifndef CAPSTONE_ARM_H\n#define CAPSTONE_ARM_H\n\n/* Capstone Disassembly Engine */\n/* By Nguyen Anh Quynh <aquynh@gmail.com>, 2013-2014 */\n\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n#if !defined(_MSC_VER) || !defined(_KERNEL_MODE)\n#include <stdint.h>\n#endif\n\n#include \"platform.h\"\n\n#ifdef _MSC_VER\n#pragma warning(disable:4201)\n#endif\n\n//> ARM shift type\ntypedef enum arm_shifter {\n\tARM_SFT_INVALID = 0,\n\tARM_SFT_ASR,\t// shift with immediate const\n\tARM_SFT_LSL,\t// shift with immediate const\n\tARM_SFT_LSR,\t// shift with immediate const\n\tARM_SFT_ROR,\t// shift with immediate const\n\tARM_SFT_RRX,\t// shift with immediate const\n\tARM_SFT_ASR_REG,\t// shift with register\n\tARM_SFT_LSL_REG,\t// shift with register\n\tARM_SFT_LSR_REG,\t// shift with register\n\tARM_SFT_ROR_REG,\t// shift with register\n\tARM_SFT_RRX_REG,\t// shift with register\n} arm_shifter;\n\n//> ARM condition code\ntypedef enum arm_cc {\n\tARM_CC_INVALID = 0,\n\tARM_CC_EQ,            // Equal                      Equal\n\tARM_CC_NE,            // Not equal                  Not equal, or unordered\n\tARM_CC_HS,            // Carry set                  >, ==, or unordered\n\tARM_CC_LO,            // Carry clear                Less than\n\tARM_CC_MI,            // Minus, negative            Less than\n\tARM_CC_PL,            // Plus, positive or zero     >, ==, or unordered\n\tARM_CC_VS,            // Overflow                   Unordered\n\tARM_CC_VC,            // No overflow                Not unordered\n\tARM_CC_HI,            // Unsigned higher            Greater than, or unordered\n\tARM_CC_LS,            // Unsigned lower or same     Less than or equal\n\tARM_CC_GE,            // Greater than or equal      Greater than or equal\n\tARM_CC_LT,            // Less than                  Less than, or unordered\n\tARM_CC_GT,            // Greater than               Greater than\n\tARM_CC_LE,            // Less than or equal         <, ==, or unordered\n\tARM_CC_AL             // Always (unconditional)     Always (unconditional)\n} arm_cc;\n\ntypedef enum arm_sysreg {\n\t//> Special registers for MSR\n\tARM_SYSREG_INVALID = 0,\n\n\t// SPSR* registers can be OR combined\n\tARM_SYSREG_SPSR_C = 1,\n\tARM_SYSREG_SPSR_X = 2,\n\tARM_SYSREG_SPSR_S = 4,\n\tARM_SYSREG_SPSR_F = 8,\n\n\t// CPSR* registers can be OR combined\n\tARM_SYSREG_CPSR_C = 16,\n\tARM_SYSREG_CPSR_X = 32,\n\tARM_SYSREG_CPSR_S = 64,\n\tARM_SYSREG_CPSR_F = 128,\n\n\t// independent registers\n\tARM_SYSREG_APSR = 256,\n\tARM_SYSREG_APSR_G,\n\tARM_SYSREG_APSR_NZCVQ,\n\tARM_SYSREG_APSR_NZCVQG,\n\n\tARM_SYSREG_IAPSR,\n\tARM_SYSREG_IAPSR_G,\n\tARM_SYSREG_IAPSR_NZCVQG,\n\n\tARM_SYSREG_EAPSR,\n\tARM_SYSREG_EAPSR_G,\n\tARM_SYSREG_EAPSR_NZCVQG,\n\n\tARM_SYSREG_XPSR,\n\tARM_SYSREG_XPSR_G,\n\tARM_SYSREG_XPSR_NZCVQG,\n\n\tARM_SYSREG_IPSR,\n\tARM_SYSREG_EPSR,\n\tARM_SYSREG_IEPSR,\n\n\tARM_SYSREG_MSP,\n\tARM_SYSREG_PSP,\n\tARM_SYSREG_PRIMASK,\n\tARM_SYSREG_BASEPRI,\n\tARM_SYSREG_BASEPRI_MAX,\n\tARM_SYSREG_FAULTMASK,\n\tARM_SYSREG_CONTROL,\n} arm_sysreg;\n\n//> The memory barrier constants map directly to the 4-bit encoding of\n//> the option field for Memory Barrier operations.\ntypedef enum arm_mem_barrier {\n\tARM_MB_INVALID = 0,\n\tARM_MB_RESERVED_0,\n\tARM_MB_OSHLD,\n\tARM_MB_OSHST,\n\tARM_MB_OSH,\n\tARM_MB_RESERVED_4,\n\tARM_MB_NSHLD,\n\tARM_MB_NSHST,\n\tARM_MB_NSH,\n\tARM_MB_RESERVED_8,\n\tARM_MB_ISHLD,\n\tARM_MB_ISHST,\n\tARM_MB_ISH,\n\tARM_MB_RESERVED_12,\n\tARM_MB_LD,\n\tARM_MB_ST,\n\tARM_MB_SY,\n} arm_mem_barrier;\n\n//> Operand type for instruction's operands\ntypedef enum arm_op_type {\n\tARM_OP_INVALID = 0, // = CS_OP_INVALID (Uninitialized).\n\tARM_OP_REG, // = CS_OP_REG (Register operand).\n\tARM_OP_IMM, // = CS_OP_IMM (Immediate operand).\n\tARM_OP_MEM, // = CS_OP_MEM (Memory operand).\n\tARM_OP_FP,  // = CS_OP_FP (Floating-Point operand).\n\tARM_OP_CIMM = 64, // C-Immediate (coprocessor registers)\n\tARM_OP_PIMM, // P-Immediate (coprocessor registers)\n\tARM_OP_SETEND,\t// operand for SETEND instruction\n\tARM_OP_SYSREG,\t// MSR/MRS special register operand\n} arm_op_type;\n\n//> Operand type for SETEND instruction\ntypedef enum arm_setend_type {\n\tARM_SETEND_INVALID = 0,\t// Uninitialized.\n\tARM_SETEND_BE,\t// BE operand.\n\tARM_SETEND_LE, // LE operand\n} arm_setend_type;\n\ntypedef enum arm_cpsmode_type {\n\tARM_CPSMODE_INVALID = 0,\n\tARM_CPSMODE_IE = 2,\n\tARM_CPSMODE_ID = 3\n} arm_cpsmode_type;\n\n//> Operand type for SETEND instruction\ntypedef enum arm_cpsflag_type {\n\tARM_CPSFLAG_INVALID = 0,\n\tARM_CPSFLAG_F = 1,\n\tARM_CPSFLAG_I = 2,\n\tARM_CPSFLAG_A = 4,\n\tARM_CPSFLAG_NONE = 16,\t// no flag\n} arm_cpsflag_type;\n\n//> Data type for elements of vector instructions.\ntypedef enum arm_vectordata_type {\n\tARM_VECTORDATA_INVALID = 0,\n\n\t// Integer type\n\tARM_VECTORDATA_I8,\n\tARM_VECTORDATA_I16,\n\tARM_VECTORDATA_I32,\n\tARM_VECTORDATA_I64,\n\n\t// Signed integer type\n\tARM_VECTORDATA_S8,\n\tARM_VECTORDATA_S16,\n\tARM_VECTORDATA_S32,\n\tARM_VECTORDATA_S64,\n\n\t// Unsigned integer type\n\tARM_VECTORDATA_U8,\n\tARM_VECTORDATA_U16,\n\tARM_VECTORDATA_U32,\n\tARM_VECTORDATA_U64,\n\n\t// Data type for VMUL/VMULL\n\tARM_VECTORDATA_P8,\n\n\t// Floating type\n\tARM_VECTORDATA_F32,\n\tARM_VECTORDATA_F64,\n\n\t// Convert float <-> float\n\tARM_VECTORDATA_F16F64,\t// f16.f64\n\tARM_VECTORDATA_F64F16,\t// f64.f16\n\tARM_VECTORDATA_F32F16,\t// f32.f16\n\tARM_VECTORDATA_F16F32,\t// f32.f16\n\tARM_VECTORDATA_F64F32,\t// f64.f32\n\tARM_VECTORDATA_F32F64,\t// f32.f64\n\n\t// Convert integer <-> float\n\tARM_VECTORDATA_S32F32,\t// s32.f32\n\tARM_VECTORDATA_U32F32,\t// u32.f32\n\tARM_VECTORDATA_F32S32,\t// f32.s32\n\tARM_VECTORDATA_F32U32,\t// f32.u32\n\tARM_VECTORDATA_F64S16,\t// f64.s16\n\tARM_VECTORDATA_F32S16,\t// f32.s16\n\tARM_VECTORDATA_F64S32,\t// f64.s32\n\tARM_VECTORDATA_S16F64,\t// s16.f64\n\tARM_VECTORDATA_S16F32,\t// s16.f64\n\tARM_VECTORDATA_S32F64,\t// s32.f64\n\tARM_VECTORDATA_U16F64,\t// u16.f64\n\tARM_VECTORDATA_U16F32,\t// u16.f32\n\tARM_VECTORDATA_U32F64,\t// u32.f64\n\tARM_VECTORDATA_F64U16,\t// f64.u16\n\tARM_VECTORDATA_F32U16,\t// f32.u16\n\tARM_VECTORDATA_F64U32,\t// f64.u32\n} arm_vectordata_type;\n\n// Instruction's operand referring to memory\n// This is associated with ARM_OP_MEM operand type above\ntypedef struct arm_op_mem {\n\tunsigned int base;\t// base register\n\tunsigned int index;\t// index register\n\tint scale;\t// scale for index register (can be 1, or -1)\n\tint disp;\t// displacement/offset value\n} arm_op_mem;\n\n// Instruction operand\ntypedef struct cs_arm_op {\n\tint vector_index;\t// Vector Index for some vector operands (or -1 if irrelevant)\n\tstruct {\n\t\tarm_shifter type;\n\t\tunsigned int value;\n\t} shift;\n\tarm_op_type type;\t// operand type\n\tunion {\n\t\tunsigned int reg;\t// register value for REG/SYSREG operand\n\t\tint32_t imm;\t\t\t// immediate value for C-IMM, P-IMM or IMM operand\n\t\tdouble fp;\t\t\t// floating point value for FP operand\n\t\tarm_op_mem mem;\t\t// base/index/scale/disp value for MEM operand\n\t\tarm_setend_type setend; // SETEND instruction's operand type\n\t};\n\t// in some instructions, an operand can be subtracted or added to\n\t// the base register,\n\tbool subtracted; // if TRUE, this operand is subtracted. otherwise, it is added.\n} cs_arm_op;\n\n// Instruction structure\ntypedef struct cs_arm {\n\tbool usermode;\t// User-mode registers to be loaded (for LDM/STM instructions)\n\tint vector_size; \t// Scalar size for vector instructions\n\tarm_vectordata_type vector_data; // Data type for elements of vector instructions\n\tarm_cpsmode_type cps_mode;\t// CPS mode for CPS instruction\n\tarm_cpsflag_type cps_flag;\t// CPS mode for CPS instruction\n\tarm_cc cc;\t\t\t// conditional code for this insn\n\tbool update_flags;\t// does this insn update flags?\n\tbool writeback;\t\t// does this insn write-back?\n\tarm_mem_barrier mem_barrier;\t// Option for some memory barrier instructions\n\n\t// Number of operands of this instruction, \n\t// or 0 when instruction has no operand.\n\tuint8_t op_count;\n\n\tcs_arm_op operands[36];\t// operands for this instruction.\n} cs_arm;\n\n//> ARM registers\ntypedef enum arm_reg {\n\tARM_REG_INVALID = 0,\n\tARM_REG_APSR,\n\tARM_REG_APSR_NZCV,\n\tARM_REG_CPSR,\n\tARM_REG_FPEXC,\n\tARM_REG_FPINST,\n\tARM_REG_FPSCR,\n\tARM_REG_FPSCR_NZCV,\n\tARM_REG_FPSID,\n\tARM_REG_ITSTATE,\n\tARM_REG_LR,\n\tARM_REG_PC,\n\tARM_REG_SP,\n\tARM_REG_SPSR,\n\tARM_REG_D0,\n\tARM_REG_D1,\n\tARM_REG_D2,\n\tARM_REG_D3,\n\tARM_REG_D4,\n\tARM_REG_D5,\n\tARM_REG_D6,\n\tARM_REG_D7,\n\tARM_REG_D8,\n\tARM_REG_D9,\n\tARM_REG_D10,\n\tARM_REG_D11,\n\tARM_REG_D12,\n\tARM_REG_D13,\n\tARM_REG_D14,\n\tARM_REG_D15,\n\tARM_REG_D16,\n\tARM_REG_D17,\n\tARM_REG_D18,\n\tARM_REG_D19,\n\tARM_REG_D20,\n\tARM_REG_D21,\n\tARM_REG_D22,\n\tARM_REG_D23,\n\tARM_REG_D24,\n\tARM_REG_D25,\n\tARM_REG_D26,\n\tARM_REG_D27,\n\tARM_REG_D28,\n\tARM_REG_D29,\n\tARM_REG_D30,\n\tARM_REG_D31,\n\tARM_REG_FPINST2,\n\tARM_REG_MVFR0,\n\tARM_REG_MVFR1,\n\tARM_REG_MVFR2,\n\tARM_REG_Q0,\n\tARM_REG_Q1,\n\tARM_REG_Q2,\n\tARM_REG_Q3,\n\tARM_REG_Q4,\n\tARM_REG_Q5,\n\tARM_REG_Q6,\n\tARM_REG_Q7,\n\tARM_REG_Q8,\n\tARM_REG_Q9,\n\tARM_REG_Q10,\n\tARM_REG_Q11,\n\tARM_REG_Q12,\n\tARM_REG_Q13,\n\tARM_REG_Q14,\n\tARM_REG_Q15,\n\tARM_REG_R0,\n\tARM_REG_R1,\n\tARM_REG_R2,\n\tARM_REG_R3,\n\tARM_REG_R4,\n\tARM_REG_R5,\n\tARM_REG_R6,\n\tARM_REG_R7,\n\tARM_REG_R8,\n\tARM_REG_R9,\n\tARM_REG_R10,\n\tARM_REG_R11,\n\tARM_REG_R12,\n\tARM_REG_S0,\n\tARM_REG_S1,\n\tARM_REG_S2,\n\tARM_REG_S3,\n\tARM_REG_S4,\n\tARM_REG_S5,\n\tARM_REG_S6,\n\tARM_REG_S7,\n\tARM_REG_S8,\n\tARM_REG_S9,\n\tARM_REG_S10,\n\tARM_REG_S11,\n\tARM_REG_S12,\n\tARM_REG_S13,\n\tARM_REG_S14,\n\tARM_REG_S15,\n\tARM_REG_S16,\n\tARM_REG_S17,\n\tARM_REG_S18,\n\tARM_REG_S19,\n\tARM_REG_S20,\n\tARM_REG_S21,\n\tARM_REG_S22,\n\tARM_REG_S23,\n\tARM_REG_S24,\n\tARM_REG_S25,\n\tARM_REG_S26,\n\tARM_REG_S27,\n\tARM_REG_S28,\n\tARM_REG_S29,\n\tARM_REG_S30,\n\tARM_REG_S31,\n\n\tARM_REG_ENDING,\t\t// <-- mark the end of the list or registers\n\n\t//> alias registers\n\tARM_REG_R13 = ARM_REG_SP,\n\tARM_REG_R14 = ARM_REG_LR,\n\tARM_REG_R15 = ARM_REG_PC,\n\n\tARM_REG_SB = ARM_REG_R9,\n\tARM_REG_SL = ARM_REG_R10,\n\tARM_REG_FP = ARM_REG_R11,\n\tARM_REG_IP = ARM_REG_R12,\n} arm_reg;\n\n//> ARM instruction\ntypedef enum arm_insn {\n\tARM_INS_INVALID = 0,\n\n\tARM_INS_ADC,\n\tARM_INS_ADD,\n\tARM_INS_ADR,\n\tARM_INS_AESD,\n\tARM_INS_AESE,\n\tARM_INS_AESIMC,\n\tARM_INS_AESMC,\n\tARM_INS_AND,\n\tARM_INS_BFC,\n\tARM_INS_BFI,\n\tARM_INS_BIC,\n\tARM_INS_BKPT,\n\tARM_INS_BL,\n\tARM_INS_BLX,\n\tARM_INS_BX,\n\tARM_INS_BXJ,\n\tARM_INS_B,\n\tARM_INS_CDP,\n\tARM_INS_CDP2,\n\tARM_INS_CLREX,\n\tARM_INS_CLZ,\n\tARM_INS_CMN,\n\tARM_INS_CMP,\n\tARM_INS_CPS,\n\tARM_INS_CRC32B,\n\tARM_INS_CRC32CB,\n\tARM_INS_CRC32CH,\n\tARM_INS_CRC32CW,\n\tARM_INS_CRC32H,\n\tARM_INS_CRC32W,\n\tARM_INS_DBG,\n\tARM_INS_DMB,\n\tARM_INS_DSB,\n\tARM_INS_EOR,\n\tARM_INS_VMOV,\n\tARM_INS_FLDMDBX,\n\tARM_INS_FLDMIAX,\n\tARM_INS_VMRS,\n\tARM_INS_FSTMDBX,\n\tARM_INS_FSTMIAX,\n\tARM_INS_HINT,\n\tARM_INS_HLT,\n\tARM_INS_ISB,\n\tARM_INS_LDA,\n\tARM_INS_LDAB,\n\tARM_INS_LDAEX,\n\tARM_INS_LDAEXB,\n\tARM_INS_LDAEXD,\n\tARM_INS_LDAEXH,\n\tARM_INS_LDAH,\n\tARM_INS_LDC2L,\n\tARM_INS_LDC2,\n\tARM_INS_LDCL,\n\tARM_INS_LDC,\n\tARM_INS_LDMDA,\n\tARM_INS_LDMDB,\n\tARM_INS_LDM,\n\tARM_INS_LDMIB,\n\tARM_INS_LDRBT,\n\tARM_INS_LDRB,\n\tARM_INS_LDRD,\n\tARM_INS_LDREX,\n\tARM_INS_LDREXB,\n\tARM_INS_LDREXD,\n\tARM_INS_LDREXH,\n\tARM_INS_LDRH,\n\tARM_INS_LDRHT,\n\tARM_INS_LDRSB,\n\tARM_INS_LDRSBT,\n\tARM_INS_LDRSH,\n\tARM_INS_LDRSHT,\n\tARM_INS_LDRT,\n\tARM_INS_LDR,\n\tARM_INS_MCR,\n\tARM_INS_MCR2,\n\tARM_INS_MCRR,\n\tARM_INS_MCRR2,\n\tARM_INS_MLA,\n\tARM_INS_MLS,\n\tARM_INS_MOV,\n\tARM_INS_MOVT,\n\tARM_INS_MOVW,\n\tARM_INS_MRC,\n\tARM_INS_MRC2,\n\tARM_INS_MRRC,\n\tARM_INS_MRRC2,\n\tARM_INS_MRS,\n\tARM_INS_MSR,\n\tARM_INS_MUL,\n\tARM_INS_MVN,\n\tARM_INS_ORR,\n\tARM_INS_PKHBT,\n\tARM_INS_PKHTB,\n\tARM_INS_PLDW,\n\tARM_INS_PLD,\n\tARM_INS_PLI,\n\tARM_INS_QADD,\n\tARM_INS_QADD16,\n\tARM_INS_QADD8,\n\tARM_INS_QASX,\n\tARM_INS_QDADD,\n\tARM_INS_QDSUB,\n\tARM_INS_QSAX,\n\tARM_INS_QSUB,\n\tARM_INS_QSUB16,\n\tARM_INS_QSUB8,\n\tARM_INS_RBIT,\n\tARM_INS_REV,\n\tARM_INS_REV16,\n\tARM_INS_REVSH,\n\tARM_INS_RFEDA,\n\tARM_INS_RFEDB,\n\tARM_INS_RFEIA,\n\tARM_INS_RFEIB,\n\tARM_INS_RSB,\n\tARM_INS_RSC,\n\tARM_INS_SADD16,\n\tARM_INS_SADD8,\n\tARM_INS_SASX,\n\tARM_INS_SBC,\n\tARM_INS_SBFX,\n\tARM_INS_SDIV,\n\tARM_INS_SEL,\n\tARM_INS_SETEND,\n\tARM_INS_SHA1C,\n\tARM_INS_SHA1H,\n\tARM_INS_SHA1M,\n\tARM_INS_SHA1P,\n\tARM_INS_SHA1SU0,\n\tARM_INS_SHA1SU1,\n\tARM_INS_SHA256H,\n\tARM_INS_SHA256H2,\n\tARM_INS_SHA256SU0,\n\tARM_INS_SHA256SU1,\n\tARM_INS_SHADD16,\n\tARM_INS_SHADD8,\n\tARM_INS_SHASX,\n\tARM_INS_SHSAX,\n\tARM_INS_SHSUB16,\n\tARM_INS_SHSUB8,\n\tARM_INS_SMC,\n\tARM_INS_SMLABB,\n\tARM_INS_SMLABT,\n\tARM_INS_SMLAD,\n\tARM_INS_SMLADX,\n\tARM_INS_SMLAL,\n\tARM_INS_SMLALBB,\n\tARM_INS_SMLALBT,\n\tARM_INS_SMLALD,\n\tARM_INS_SMLALDX,\n\tARM_INS_SMLALTB,\n\tARM_INS_SMLALTT,\n\tARM_INS_SMLATB,\n\tARM_INS_SMLATT,\n\tARM_INS_SMLAWB,\n\tARM_INS_SMLAWT,\n\tARM_INS_SMLSD,\n\tARM_INS_SMLSDX,\n\tARM_INS_SMLSLD,\n\tARM_INS_SMLSLDX,\n\tARM_INS_SMMLA,\n\tARM_INS_SMMLAR,\n\tARM_INS_SMMLS,\n\tARM_INS_SMMLSR,\n\tARM_INS_SMMUL,\n\tARM_INS_SMMULR,\n\tARM_INS_SMUAD,\n\tARM_INS_SMUADX,\n\tARM_INS_SMULBB,\n\tARM_INS_SMULBT,\n\tARM_INS_SMULL,\n\tARM_INS_SMULTB,\n\tARM_INS_SMULTT,\n\tARM_INS_SMULWB,\n\tARM_INS_SMULWT,\n\tARM_INS_SMUSD,\n\tARM_INS_SMUSDX,\n\tARM_INS_SRSDA,\n\tARM_INS_SRSDB,\n\tARM_INS_SRSIA,\n\tARM_INS_SRSIB,\n\tARM_INS_SSAT,\n\tARM_INS_SSAT16,\n\tARM_INS_SSAX,\n\tARM_INS_SSUB16,\n\tARM_INS_SSUB8,\n\tARM_INS_STC2L,\n\tARM_INS_STC2,\n\tARM_INS_STCL,\n\tARM_INS_STC,\n\tARM_INS_STL,\n\tARM_INS_STLB,\n\tARM_INS_STLEX,\n\tARM_INS_STLEXB,\n\tARM_INS_STLEXD,\n\tARM_INS_STLEXH,\n\tARM_INS_STLH,\n\tARM_INS_STMDA,\n\tARM_INS_STMDB,\n\tARM_INS_STM,\n\tARM_INS_STMIB,\n\tARM_INS_STRBT,\n\tARM_INS_STRB,\n\tARM_INS_STRD,\n\tARM_INS_STREX,\n\tARM_INS_STREXB,\n\tARM_INS_STREXD,\n\tARM_INS_STREXH,\n\tARM_INS_STRH,\n\tARM_INS_STRHT,\n\tARM_INS_STRT,\n\tARM_INS_STR,\n\tARM_INS_SUB,\n\tARM_INS_SVC,\n\tARM_INS_SWP,\n\tARM_INS_SWPB,\n\tARM_INS_SXTAB,\n\tARM_INS_SXTAB16,\n\tARM_INS_SXTAH,\n\tARM_INS_SXTB,\n\tARM_INS_SXTB16,\n\tARM_INS_SXTH,\n\tARM_INS_TEQ,\n\tARM_INS_TRAP,\n\tARM_INS_TST,\n\tARM_INS_UADD16,\n\tARM_INS_UADD8,\n\tARM_INS_UASX,\n\tARM_INS_UBFX,\n\tARM_INS_UDF,\n\tARM_INS_UDIV,\n\tARM_INS_UHADD16,\n\tARM_INS_UHADD8,\n\tARM_INS_UHASX,\n\tARM_INS_UHSAX,\n\tARM_INS_UHSUB16,\n\tARM_INS_UHSUB8,\n\tARM_INS_UMAAL,\n\tARM_INS_UMLAL,\n\tARM_INS_UMULL,\n\tARM_INS_UQADD16,\n\tARM_INS_UQADD8,\n\tARM_INS_UQASX,\n\tARM_INS_UQSAX,\n\tARM_INS_UQSUB16,\n\tARM_INS_UQSUB8,\n\tARM_INS_USAD8,\n\tARM_INS_USADA8,\n\tARM_INS_USAT,\n\tARM_INS_USAT16,\n\tARM_INS_USAX,\n\tARM_INS_USUB16,\n\tARM_INS_USUB8,\n\tARM_INS_UXTAB,\n\tARM_INS_UXTAB16,\n\tARM_INS_UXTAH,\n\tARM_INS_UXTB,\n\tARM_INS_UXTB16,\n\tARM_INS_UXTH,\n\tARM_INS_VABAL,\n\tARM_INS_VABA,\n\tARM_INS_VABDL,\n\tARM_INS_VABD,\n\tARM_INS_VABS,\n\tARM_INS_VACGE,\n\tARM_INS_VACGT,\n\tARM_INS_VADD,\n\tARM_INS_VADDHN,\n\tARM_INS_VADDL,\n\tARM_INS_VADDW,\n\tARM_INS_VAND,\n\tARM_INS_VBIC,\n\tARM_INS_VBIF,\n\tARM_INS_VBIT,\n\tARM_INS_VBSL,\n\tARM_INS_VCEQ,\n\tARM_INS_VCGE,\n\tARM_INS_VCGT,\n\tARM_INS_VCLE,\n\tARM_INS_VCLS,\n\tARM_INS_VCLT,\n\tARM_INS_VCLZ,\n\tARM_INS_VCMP,\n\tARM_INS_VCMPE,\n\tARM_INS_VCNT,\n\tARM_INS_VCVTA,\n\tARM_INS_VCVTB,\n\tARM_INS_VCVT,\n\tARM_INS_VCVTM,\n\tARM_INS_VCVTN,\n\tARM_INS_VCVTP,\n\tARM_INS_VCVTT,\n\tARM_INS_VDIV,\n\tARM_INS_VDUP,\n\tARM_INS_VEOR,\n\tARM_INS_VEXT,\n\tARM_INS_VFMA,\n\tARM_INS_VFMS,\n\tARM_INS_VFNMA,\n\tARM_INS_VFNMS,\n\tARM_INS_VHADD,\n\tARM_INS_VHSUB,\n\tARM_INS_VLD1,\n\tARM_INS_VLD2,\n\tARM_INS_VLD3,\n\tARM_INS_VLD4,\n\tARM_INS_VLDMDB,\n\tARM_INS_VLDMIA,\n\tARM_INS_VLDR,\n\tARM_INS_VMAXNM,\n\tARM_INS_VMAX,\n\tARM_INS_VMINNM,\n\tARM_INS_VMIN,\n\tARM_INS_VMLA,\n\tARM_INS_VMLAL,\n\tARM_INS_VMLS,\n\tARM_INS_VMLSL,\n\tARM_INS_VMOVL,\n\tARM_INS_VMOVN,\n\tARM_INS_VMSR,\n\tARM_INS_VMUL,\n\tARM_INS_VMULL,\n\tARM_INS_VMVN,\n\tARM_INS_VNEG,\n\tARM_INS_VNMLA,\n\tARM_INS_VNMLS,\n\tARM_INS_VNMUL,\n\tARM_INS_VORN,\n\tARM_INS_VORR,\n\tARM_INS_VPADAL,\n\tARM_INS_VPADDL,\n\tARM_INS_VPADD,\n\tARM_INS_VPMAX,\n\tARM_INS_VPMIN,\n\tARM_INS_VQABS,\n\tARM_INS_VQADD,\n\tARM_INS_VQDMLAL,\n\tARM_INS_VQDMLSL,\n\tARM_INS_VQDMULH,\n\tARM_INS_VQDMULL,\n\tARM_INS_VQMOVUN,\n\tARM_INS_VQMOVN,\n\tARM_INS_VQNEG,\n\tARM_INS_VQRDMULH,\n\tARM_INS_VQRSHL,\n\tARM_INS_VQRSHRN,\n\tARM_INS_VQRSHRUN,\n\tARM_INS_VQSHL,\n\tARM_INS_VQSHLU,\n\tARM_INS_VQSHRN,\n\tARM_INS_VQSHRUN,\n\tARM_INS_VQSUB,\n\tARM_INS_VRADDHN,\n\tARM_INS_VRECPE,\n\tARM_INS_VRECPS,\n\tARM_INS_VREV16,\n\tARM_INS_VREV32,\n\tARM_INS_VREV64,\n\tARM_INS_VRHADD,\n\tARM_INS_VRINTA,\n\tARM_INS_VRINTM,\n\tARM_INS_VRINTN,\n\tARM_INS_VRINTP,\n\tARM_INS_VRINTR,\n\tARM_INS_VRINTX,\n\tARM_INS_VRINTZ,\n\tARM_INS_VRSHL,\n\tARM_INS_VRSHRN,\n\tARM_INS_VRSHR,\n\tARM_INS_VRSQRTE,\n\tARM_INS_VRSQRTS,\n\tARM_INS_VRSRA,\n\tARM_INS_VRSUBHN,\n\tARM_INS_VSELEQ,\n\tARM_INS_VSELGE,\n\tARM_INS_VSELGT,\n\tARM_INS_VSELVS,\n\tARM_INS_VSHLL,\n\tARM_INS_VSHL,\n\tARM_INS_VSHRN,\n\tARM_INS_VSHR,\n\tARM_INS_VSLI,\n\tARM_INS_VSQRT,\n\tARM_INS_VSRA,\n\tARM_INS_VSRI,\n\tARM_INS_VST1,\n\tARM_INS_VST2,\n\tARM_INS_VST3,\n\tARM_INS_VST4,\n\tARM_INS_VSTMDB,\n\tARM_INS_VSTMIA,\n\tARM_INS_VSTR,\n\tARM_INS_VSUB,\n\tARM_INS_VSUBHN,\n\tARM_INS_VSUBL,\n\tARM_INS_VSUBW,\n\tARM_INS_VSWP,\n\tARM_INS_VTBL,\n\tARM_INS_VTBX,\n\tARM_INS_VCVTR,\n\tARM_INS_VTRN,\n\tARM_INS_VTST,\n\tARM_INS_VUZP,\n\tARM_INS_VZIP,\n\tARM_INS_ADDW,\n\tARM_INS_ASR,\n\tARM_INS_DCPS1,\n\tARM_INS_DCPS2,\n\tARM_INS_DCPS3,\n\tARM_INS_IT,\n\tARM_INS_LSL,\n\tARM_INS_LSR,\n\tARM_INS_ASRS,\n\tARM_INS_LSRS,\n\tARM_INS_ORN,\n\tARM_INS_ROR,\n\tARM_INS_RRX,\n\tARM_INS_SUBS,\n\tARM_INS_SUBW,\n\tARM_INS_TBB,\n\tARM_INS_TBH,\n\tARM_INS_CBNZ,\n\tARM_INS_CBZ,\n\tARM_INS_MOVS,\n\tARM_INS_POP,\n\tARM_INS_PUSH,\n\n\t// special instructions\n\tARM_INS_NOP,\n\tARM_INS_YIELD,\n\tARM_INS_WFE,\n\tARM_INS_WFI,\n\tARM_INS_SEV,\n\tARM_INS_SEVL,\n\tARM_INS_VPUSH,\n\tARM_INS_VPOP,\n\n\tARM_INS_ENDING,\t// <-- mark the end of the list of instructions\n} arm_insn;\n\n//> Group of ARM instructions\ntypedef enum arm_insn_group {\n\tARM_GRP_INVALID = 0, // = CS_GRP_INVALID\n\n\t//> Generic groups\n\t// all jump instructions (conditional+direct+indirect jumps)\n\tARM_GRP_JUMP,\t// = CS_GRP_JUMP\n\n\t//> Architecture-specific groups\n\tARM_GRP_CRYPTO = 128,\n\tARM_GRP_DATABARRIER,\n\tARM_GRP_DIVIDE,\n\tARM_GRP_FPARMV8,\n\tARM_GRP_MULTPRO,\n\tARM_GRP_NEON,\n\tARM_GRP_T2EXTRACTPACK,\n\tARM_GRP_THUMB2DSP,\n\tARM_GRP_TRUSTZONE,\n\tARM_GRP_V4T,\n\tARM_GRP_V5T,\n\tARM_GRP_V5TE,\n\tARM_GRP_V6,\n\tARM_GRP_V6T2,\n\tARM_GRP_V7,\n\tARM_GRP_V8,\n\tARM_GRP_VFP2,\n\tARM_GRP_VFP3,\n\tARM_GRP_VFP4,\n\tARM_GRP_ARM,\n\tARM_GRP_MCLASS,\n\tARM_GRP_NOTMCLASS,\n\tARM_GRP_THUMB,\n\tARM_GRP_THUMB1ONLY,\n\tARM_GRP_THUMB2,\n\tARM_GRP_PREV8,\n\tARM_GRP_FPVMLX,\n\tARM_GRP_MULOPS,\n\tARM_GRP_CRC,\n\tARM_GRP_DPVFP,\n\tARM_GRP_V6M,\n\n\tARM_GRP_ENDING,\n} arm_insn_group;\n\n#ifdef __cplusplus\n}\n#endif\n\n#endif\n"
  },
  {
    "path": "EFI/CLOVER/kexts/Other/Lilu_v1.3.7.kext/Contents/Resources/Headers/capstone/arm64.h",
    "content": "#ifndef CAPSTONE_ARM64_H\n#define CAPSTONE_ARM64_H\n\n/* Capstone Disassembly Engine */\n/* By Nguyen Anh Quynh <aquynh@gmail.com>, 2013-2014 */\n\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n#if !defined(_MSC_VER) || !defined(_KERNEL_MODE)\n#include <stdint.h>\n#endif\n\n#include \"platform.h\"\n\n#ifdef _MSC_VER\n#pragma warning(disable:4201)\n#endif\n\n//> ARM64 shift type\ntypedef enum arm64_shifter {\n\tARM64_SFT_INVALID = 0,\n\tARM64_SFT_LSL = 1,\n\tARM64_SFT_MSL = 2,\n\tARM64_SFT_LSR = 3,\n\tARM64_SFT_ASR = 4,\n\tARM64_SFT_ROR = 5,\n} arm64_shifter;\n\n//> ARM64 extender type\ntypedef enum arm64_extender {\n\tARM64_EXT_INVALID = 0,\n\tARM64_EXT_UXTB = 1,\n\tARM64_EXT_UXTH = 2,\n\tARM64_EXT_UXTW = 3,\n\tARM64_EXT_UXTX = 4,\n\tARM64_EXT_SXTB = 5,\n\tARM64_EXT_SXTH = 6,\n\tARM64_EXT_SXTW = 7,\n\tARM64_EXT_SXTX = 8,\n} arm64_extender;\n\n//> ARM64 condition code\ntypedef enum arm64_cc {\n\tARM64_CC_INVALID = 0,\n\tARM64_CC_EQ = 1,     // Equal\n\tARM64_CC_NE = 2,     // Not equal:                 Not equal, or unordered\n\tARM64_CC_HS = 3,     // Unsigned higher or same:   >, ==, or unordered\n\tARM64_CC_LO = 4,     // Unsigned lower or same:    Less than\n\tARM64_CC_MI = 5,     // Minus, negative:           Less than\n\tARM64_CC_PL = 6,     // Plus, positive or zero:    >, ==, or unordered\n\tARM64_CC_VS = 7,     // Overflow:                  Unordered\n\tARM64_CC_VC = 8,     // No overflow:               Ordered\n\tARM64_CC_HI = 9,     // Unsigned higher:           Greater than, or unordered\n\tARM64_CC_LS = 10,     // Unsigned lower or same:    Less than or equal\n\tARM64_CC_GE = 11,     // Greater than or equal:     Greater than or equal\n\tARM64_CC_LT = 12,     // Less than:                 Less than, or unordered\n\tARM64_CC_GT = 13,     // Signed greater than:       Greater than\n\tARM64_CC_LE = 14,     // Signed less than or equal: <, ==, or unordered\n\tARM64_CC_AL = 15,     // Always (unconditional):    Always (unconditional)\n\tARM64_CC_NV = 16,     // Always (unconditional):   Always (unconditional)\n\t// Note the NV exists purely to disassemble 0b1111. Execution\n\t// is \"always\".\n} arm64_cc;\n\n//> System registers\ntypedef enum arm64_sysreg {\n\t//> System registers for MRS\n\tARM64_SYSREG_INVALID           = 0,\n\tARM64_SYSREG_MDCCSR_EL0        = 0x9808, // 10  011  0000  0001  000\n\tARM64_SYSREG_DBGDTRRX_EL0      = 0x9828, // 10  011  0000  0101  000\n\tARM64_SYSREG_MDRAR_EL1         = 0x8080, // 10  000  0001  0000  000\n\tARM64_SYSREG_OSLSR_EL1         = 0x808c, // 10  000  0001  0001  100\n\tARM64_SYSREG_DBGAUTHSTATUS_EL1 = 0x83f6, // 10  000  0111  1110  110\n\tARM64_SYSREG_PMCEID0_EL0       = 0xdce6, // 11  011  1001  1100  110\n\tARM64_SYSREG_PMCEID1_EL0       = 0xdce7, // 11  011  1001  1100  111\n\tARM64_SYSREG_MIDR_EL1          = 0xc000, // 11  000  0000  0000  000\n\tARM64_SYSREG_CCSIDR_EL1        = 0xc800, // 11  001  0000  0000  000\n\tARM64_SYSREG_CLIDR_EL1         = 0xc801, // 11  001  0000  0000  001\n\tARM64_SYSREG_CTR_EL0           = 0xd801, // 11  011  0000  0000  001\n\tARM64_SYSREG_MPIDR_EL1         = 0xc005, // 11  000  0000  0000  101\n\tARM64_SYSREG_REVIDR_EL1        = 0xc006, // 11  000  0000  0000  110\n\tARM64_SYSREG_AIDR_EL1          = 0xc807, // 11  001  0000  0000  111\n\tARM64_SYSREG_DCZID_EL0         = 0xd807, // 11  011  0000  0000  111\n\tARM64_SYSREG_ID_PFR0_EL1       = 0xc008, // 11  000  0000  0001  000\n\tARM64_SYSREG_ID_PFR1_EL1       = 0xc009, // 11  000  0000  0001  001\n\tARM64_SYSREG_ID_DFR0_EL1       = 0xc00a, // 11  000  0000  0001  010\n\tARM64_SYSREG_ID_AFR0_EL1       = 0xc00b, // 11  000  0000  0001  011\n\tARM64_SYSREG_ID_MMFR0_EL1      = 0xc00c, // 11  000  0000  0001  100\n\tARM64_SYSREG_ID_MMFR1_EL1      = 0xc00d, // 11  000  0000  0001  101\n\tARM64_SYSREG_ID_MMFR2_EL1      = 0xc00e, // 11  000  0000  0001  110\n\tARM64_SYSREG_ID_MMFR3_EL1      = 0xc00f, // 11  000  0000  0001  111\n\tARM64_SYSREG_ID_ISAR0_EL1      = 0xc010, // 11  000  0000  0010  000\n\tARM64_SYSREG_ID_ISAR1_EL1      = 0xc011, // 11  000  0000  0010  001\n\tARM64_SYSREG_ID_ISAR2_EL1      = 0xc012, // 11  000  0000  0010  010\n\tARM64_SYSREG_ID_ISAR3_EL1      = 0xc013, // 11  000  0000  0010  011\n\tARM64_SYSREG_ID_ISAR4_EL1      = 0xc014, // 11  000  0000  0010  100\n\tARM64_SYSREG_ID_ISAR5_EL1      = 0xc015, // 11  000  0000  0010  101\n\tARM64_SYSREG_ID_A64PFR0_EL1   = 0xc020, // 11  000  0000  0100  000\n\tARM64_SYSREG_ID_A64PFR1_EL1   = 0xc021, // 11  000  0000  0100  001\n\tARM64_SYSREG_ID_A64DFR0_EL1   = 0xc028, // 11  000  0000  0101  000\n\tARM64_SYSREG_ID_A64DFR1_EL1   = 0xc029, // 11  000  0000  0101  001\n\tARM64_SYSREG_ID_A64AFR0_EL1   = 0xc02c, // 11  000  0000  0101  100\n\tARM64_SYSREG_ID_A64AFR1_EL1   = 0xc02d, // 11  000  0000  0101  101\n\tARM64_SYSREG_ID_A64ISAR0_EL1  = 0xc030, // 11  000  0000  0110  000\n\tARM64_SYSREG_ID_A64ISAR1_EL1  = 0xc031, // 11  000  0000  0110  001\n\tARM64_SYSREG_ID_A64MMFR0_EL1  = 0xc038, // 11  000  0000  0111  000\n\tARM64_SYSREG_ID_A64MMFR1_EL1  = 0xc039, // 11  000  0000  0111  001\n\tARM64_SYSREG_MVFR0_EL1         = 0xc018, // 11  000  0000  0011  000\n\tARM64_SYSREG_MVFR1_EL1         = 0xc019, // 11  000  0000  0011  001\n\tARM64_SYSREG_MVFR2_EL1         = 0xc01a, // 11  000  0000  0011  010\n\tARM64_SYSREG_RVBAR_EL1         = 0xc601, // 11  000  1100  0000  001\n\tARM64_SYSREG_RVBAR_EL2         = 0xe601, // 11  100  1100  0000  001\n\tARM64_SYSREG_RVBAR_EL3         = 0xf601, // 11  110  1100  0000  001\n\tARM64_SYSREG_ISR_EL1           = 0xc608, // 11  000  1100  0001  000\n\tARM64_SYSREG_CNTPCT_EL0        = 0xdf01, // 11  011  1110  0000  001\n\tARM64_SYSREG_CNTVCT_EL0        = 0xdf02,  // 11  011  1110  0000  010\n\n\t// Trace registers\n\tARM64_SYSREG_TRCSTATR          = 0x8818, // 10  001  0000  0011  000\n\tARM64_SYSREG_TRCIDR8           = 0x8806, // 10  001  0000  0000  110\n\tARM64_SYSREG_TRCIDR9           = 0x880e, // 10  001  0000  0001  110\n\tARM64_SYSREG_TRCIDR10          = 0x8816, // 10  001  0000  0010  110\n\tARM64_SYSREG_TRCIDR11          = 0x881e, // 10  001  0000  0011  110\n\tARM64_SYSREG_TRCIDR12          = 0x8826, // 10  001  0000  0100  110\n\tARM64_SYSREG_TRCIDR13          = 0x882e, // 10  001  0000  0101  110\n\tARM64_SYSREG_TRCIDR0           = 0x8847, // 10  001  0000  1000  111\n\tARM64_SYSREG_TRCIDR1           = 0x884f, // 10  001  0000  1001  111\n\tARM64_SYSREG_TRCIDR2           = 0x8857, // 10  001  0000  1010  111\n\tARM64_SYSREG_TRCIDR3           = 0x885f, // 10  001  0000  1011  111\n\tARM64_SYSREG_TRCIDR4           = 0x8867, // 10  001  0000  1100  111\n\tARM64_SYSREG_TRCIDR5           = 0x886f, // 10  001  0000  1101  111\n\tARM64_SYSREG_TRCIDR6           = 0x8877, // 10  001  0000  1110  111\n\tARM64_SYSREG_TRCIDR7           = 0x887f, // 10  001  0000  1111  111\n\tARM64_SYSREG_TRCOSLSR          = 0x888c, // 10  001  0001  0001  100\n\tARM64_SYSREG_TRCPDSR           = 0x88ac, // 10  001  0001  0101  100\n\tARM64_SYSREG_TRCDEVAFF0        = 0x8bd6, // 10  001  0111  1010  110\n\tARM64_SYSREG_TRCDEVAFF1        = 0x8bde, // 10  001  0111  1011  110\n\tARM64_SYSREG_TRCLSR            = 0x8bee, // 10  001  0111  1101  110\n\tARM64_SYSREG_TRCAUTHSTATUS     = 0x8bf6, // 10  001  0111  1110  110\n\tARM64_SYSREG_TRCDEVARCH        = 0x8bfe, // 10  001  0111  1111  110\n\tARM64_SYSREG_TRCDEVID          = 0x8b97, // 10  001  0111  0010  111\n\tARM64_SYSREG_TRCDEVTYPE        = 0x8b9f, // 10  001  0111  0011  111\n\tARM64_SYSREG_TRCPIDR4          = 0x8ba7, // 10  001  0111  0100  111\n\tARM64_SYSREG_TRCPIDR5          = 0x8baf, // 10  001  0111  0101  111\n\tARM64_SYSREG_TRCPIDR6          = 0x8bb7, // 10  001  0111  0110  111\n\tARM64_SYSREG_TRCPIDR7          = 0x8bbf, // 10  001  0111  0111  111\n\tARM64_SYSREG_TRCPIDR0          = 0x8bc7, // 10  001  0111  1000  111\n\tARM64_SYSREG_TRCPIDR1          = 0x8bcf, // 10  001  0111  1001  111\n\tARM64_SYSREG_TRCPIDR2          = 0x8bd7, // 10  001  0111  1010  111\n\tARM64_SYSREG_TRCPIDR3          = 0x8bdf, // 10  001  0111  1011  111\n\tARM64_SYSREG_TRCCIDR0          = 0x8be7, // 10  001  0111  1100  111\n\tARM64_SYSREG_TRCCIDR1          = 0x8bef, // 10  001  0111  1101  111\n\tARM64_SYSREG_TRCCIDR2          = 0x8bf7, // 10  001  0111  1110  111\n\tARM64_SYSREG_TRCCIDR3          = 0x8bff, // 10  001  0111  1111  111\n\n\t// GICv3 registers\n\tARM64_SYSREG_ICC_IAR1_EL1      = 0xc660, // 11  000  1100  1100  000\n\tARM64_SYSREG_ICC_IAR0_EL1      = 0xc640, // 11  000  1100  1000  000\n\tARM64_SYSREG_ICC_HPPIR1_EL1    = 0xc662, // 11  000  1100  1100  010\n\tARM64_SYSREG_ICC_HPPIR0_EL1    = 0xc642, // 11  000  1100  1000  010\n\tARM64_SYSREG_ICC_RPR_EL1       = 0xc65b, // 11  000  1100  1011  011\n\tARM64_SYSREG_ICH_VTR_EL2       = 0xe659, // 11  100  1100  1011  001\n\tARM64_SYSREG_ICH_EISR_EL2      = 0xe65b, // 11  100  1100  1011  011\n\tARM64_SYSREG_ICH_ELSR_EL2      = 0xe65d, // 11  100  1100  1011  101\n} arm64_sysreg;\n\ntypedef enum arm64_msr_reg {\n\t//> System registers for MSR\n\tARM64_SYSREG_DBGDTRTX_EL0      = 0x9828, // 10  011  0000  0101  000\n\tARM64_SYSREG_OSLAR_EL1         = 0x8084, // 10  000  0001  0000  100\n\tARM64_SYSREG_PMSWINC_EL0       = 0xdce4,  // 11  011  1001  1100  100\n\n\t// Trace Registers\n\tARM64_SYSREG_TRCOSLAR          = 0x8884, // 10  001  0001  0000  100\n\tARM64_SYSREG_TRCLAR            = 0x8be6, // 10  001  0111  1100  110\n\n\t// GICv3 registers\n\tARM64_SYSREG_ICC_EOIR1_EL1     = 0xc661, // 11  000  1100  1100  001\n\tARM64_SYSREG_ICC_EOIR0_EL1     = 0xc641, // 11  000  1100  1000  001\n\tARM64_SYSREG_ICC_DIR_EL1       = 0xc659, // 11  000  1100  1011  001\n\tARM64_SYSREG_ICC_SGI1R_EL1     = 0xc65d, // 11  000  1100  1011  101\n\tARM64_SYSREG_ICC_ASGI1R_EL1    = 0xc65e, // 11  000  1100  1011  110\n\tARM64_SYSREG_ICC_SGI0R_EL1     = 0xc65f, // 11  000  1100  1011  111\n} arm64_msr_reg;\n\n//> System PState Field (MSR instruction)\ntypedef enum arm64_pstate {\n\tARM64_PSTATE_INVALID = 0,\n\tARM64_PSTATE_SPSEL = 0x05,\n\tARM64_PSTATE_DAIFSET = 0x1e,\n\tARM64_PSTATE_DAIFCLR = 0x1f\n} arm64_pstate;\n\n//> Vector arrangement specifier (for FloatingPoint/Advanced SIMD insn)\ntypedef enum arm64_vas {\n\tARM64_VAS_INVALID = 0,\n\tARM64_VAS_8B,\n\tARM64_VAS_16B,\n\tARM64_VAS_4H,\n\tARM64_VAS_8H,\n\tARM64_VAS_2S,\n\tARM64_VAS_4S,\n\tARM64_VAS_1D,\n\tARM64_VAS_2D,\n\tARM64_VAS_1Q,\n} arm64_vas;\n\n//> Vector element size specifier\ntypedef enum arm64_vess {\n\tARM64_VESS_INVALID = 0,\n\tARM64_VESS_B,\n\tARM64_VESS_H,\n\tARM64_VESS_S,\n\tARM64_VESS_D,\n} arm64_vess;\n\n//> Memory barrier operands\ntypedef enum arm64_barrier_op {\n\tARM64_BARRIER_INVALID = 0,\n\tARM64_BARRIER_OSHLD = 0x1,\n\tARM64_BARRIER_OSHST = 0x2,\n\tARM64_BARRIER_OSH =   0x3,\n\tARM64_BARRIER_NSHLD = 0x5,\n\tARM64_BARRIER_NSHST = 0x6,\n\tARM64_BARRIER_NSH =   0x7,\n\tARM64_BARRIER_ISHLD = 0x9,\n\tARM64_BARRIER_ISHST = 0xa,\n\tARM64_BARRIER_ISH =   0xb,\n\tARM64_BARRIER_LD =    0xd,\n\tARM64_BARRIER_ST =    0xe,\n\tARM64_BARRIER_SY =    0xf\n} arm64_barrier_op;\n\n//> Operand type for instruction's operands\ntypedef enum arm64_op_type {\n\tARM64_OP_INVALID = 0, // = CS_OP_INVALID (Uninitialized).\n\tARM64_OP_REG, // = CS_OP_REG (Register operand).\n\tARM64_OP_IMM, // = CS_OP_IMM (Immediate operand).\n\tARM64_OP_MEM, // = CS_OP_MEM (Memory operand).\n\tARM64_OP_FP,  // = CS_OP_FP (Floating-Point operand).\n\tARM64_OP_CIMM = 64, // C-Immediate\n\tARM64_OP_REG_MRS, // MRS register operand.\n\tARM64_OP_REG_MSR, // MSR register operand.\n\tARM64_OP_PSTATE, // PState operand.\n\tARM64_OP_SYS, // SYS operand for IC/DC/AT/TLBI instructions.\n\tARM64_OP_PREFETCH, // Prefetch operand (PRFM).\n\tARM64_OP_BARRIER, // Memory barrier operand (ISB/DMB/DSB instructions).\n} arm64_op_type;\n\n//> TLBI operations\ntypedef enum arm64_tlbi_op {\n\tARM64_TLBI_INVALID = 0,\n\tARM64_TLBI_VMALLE1IS,\n\tARM64_TLBI_VAE1IS,\n\tARM64_TLBI_ASIDE1IS,\n\tARM64_TLBI_VAAE1IS,\n\tARM64_TLBI_VALE1IS,\n\tARM64_TLBI_VAALE1IS,\n\tARM64_TLBI_ALLE2IS,\n\tARM64_TLBI_VAE2IS,\n\tARM64_TLBI_ALLE1IS,\n\tARM64_TLBI_VALE2IS,\n\tARM64_TLBI_VMALLS12E1IS,\n\tARM64_TLBI_ALLE3IS,\n\tARM64_TLBI_VAE3IS,\n\tARM64_TLBI_VALE3IS,\n\tARM64_TLBI_IPAS2E1IS,\n\tARM64_TLBI_IPAS2LE1IS,\n\tARM64_TLBI_IPAS2E1,\n\tARM64_TLBI_IPAS2LE1,\n\tARM64_TLBI_VMALLE1,\n\tARM64_TLBI_VAE1,\n\tARM64_TLBI_ASIDE1,\n\tARM64_TLBI_VAAE1,\n\tARM64_TLBI_VALE1,\n\tARM64_TLBI_VAALE1,\n\tARM64_TLBI_ALLE2,\n\tARM64_TLBI_VAE2,\n\tARM64_TLBI_ALLE1,\n\tARM64_TLBI_VALE2,\n\tARM64_TLBI_VMALLS12E1,\n\tARM64_TLBI_ALLE3,\n\tARM64_TLBI_VAE3,\n\tARM64_TLBI_VALE3,\n} arm64_tlbi_op;\n\n//> AT operations\ntypedef enum arm64_at_op {\n\tARM64_AT_S1E1R,\n\tARM64_AT_S1E1W,\n\tARM64_AT_S1E0R,\n\tARM64_AT_S1E0W,\n\tARM64_AT_S1E2R,\n\tARM64_AT_S1E2W,\n\tARM64_AT_S12E1R,\n\tARM64_AT_S12E1W,\n\tARM64_AT_S12E0R,\n\tARM64_AT_S12E0W,\n\tARM64_AT_S1E3R,\n\tARM64_AT_S1E3W,\n} arm64_at_op;\n\n//> DC operations\ntypedef enum arm64_dc_op {\n\tARM64_DC_INVALID = 0,\n\tARM64_DC_ZVA,\n\tARM64_DC_IVAC,\n\tARM64_DC_ISW,\n\tARM64_DC_CVAC,\n\tARM64_DC_CSW,\n\tARM64_DC_CVAU,\n\tARM64_DC_CIVAC,\n\tARM64_DC_CISW,\n} arm64_dc_op;\n\n//> IC operations\ntypedef enum arm64_ic_op {\n\tARM64_IC_INVALID = 0,\n\tARM64_IC_IALLUIS,\n\tARM64_IC_IALLU,\n\tARM64_IC_IVAU,\n} arm64_ic_op;\n\n//> Prefetch operations (PRFM)\ntypedef enum arm64_prefetch_op {\n\tARM64_PRFM_INVALID = 0,\n\tARM64_PRFM_PLDL1KEEP = 0x00 + 1,\n\tARM64_PRFM_PLDL1STRM = 0x01 + 1,\n\tARM64_PRFM_PLDL2KEEP = 0x02 + 1,\n\tARM64_PRFM_PLDL2STRM = 0x03 + 1,\n\tARM64_PRFM_PLDL3KEEP = 0x04 + 1,\n\tARM64_PRFM_PLDL3STRM = 0x05 + 1,\n\tARM64_PRFM_PLIL1KEEP = 0x08 + 1,\n\tARM64_PRFM_PLIL1STRM = 0x09 + 1,\n\tARM64_PRFM_PLIL2KEEP = 0x0a + 1,\n\tARM64_PRFM_PLIL2STRM = 0x0b + 1,\n\tARM64_PRFM_PLIL3KEEP = 0x0c + 1,\n\tARM64_PRFM_PLIL3STRM = 0x0d + 1,\n\tARM64_PRFM_PSTL1KEEP = 0x10 + 1,\n\tARM64_PRFM_PSTL1STRM = 0x11 + 1,\n\tARM64_PRFM_PSTL2KEEP = 0x12 + 1,\n\tARM64_PRFM_PSTL2STRM = 0x13 + 1,\n\tARM64_PRFM_PSTL3KEEP = 0x14 + 1,\n\tARM64_PRFM_PSTL3STRM = 0x15 + 1,\n} arm64_prefetch_op;\n\n// Instruction's operand referring to memory\n// This is associated with ARM64_OP_MEM operand type above\ntypedef struct arm64_op_mem {\n\tunsigned int base;\t// base register\n\tunsigned int index;\t// index register\n\tint32_t disp;\t// displacement/offset value\n} arm64_op_mem;\n\n// Instruction operand\ntypedef struct cs_arm64_op {\n\tint vector_index;\t// Vector Index for some vector operands (or -1 if irrelevant)\n\tarm64_vas vas;\t\t// Vector Arrangement Specifier\n\tarm64_vess vess;\t// Vector Element Size Specifier\n\tstruct {\n\t\tarm64_shifter type;\t// shifter type of this operand\n\t\tunsigned int value;\t// shifter value of this operand\n\t} shift;\n\tarm64_extender ext;\t\t// extender type of this operand\n\tarm64_op_type type;\t// operand type\n\tunion {\n\t\tunsigned int reg;\t// register value for REG operand\n\t\tint64_t imm;\t\t// immediate value, or index for C-IMM or IMM operand\n\t\tdouble fp;\t\t\t// floating point value for FP operand\n\t\tarm64_op_mem mem;\t\t// base/index/scale/disp value for MEM operand\n\t\tarm64_pstate pstate;\t\t// PState field of MSR instruction.\n\t\tunsigned int sys;  // IC/DC/AT/TLBI operation (see arm64_ic_op, arm64_dc_op, arm64_at_op, arm64_tlbi_op)\n\t\tarm64_prefetch_op prefetch;  // PRFM operation.\n\t\tarm64_barrier_op barrier;  // Memory barrier operation (ISB/DMB/DSB instructions).\n\t};\n} cs_arm64_op;\n\n// Instruction structure\ntypedef struct cs_arm64 {\n\tarm64_cc cc;\t// conditional code for this insn\n\tbool update_flags;\t// does this insn update flags?\n\tbool writeback;\t// does this insn request writeback? 'True' means 'yes'\n\n\t// Number of operands of this instruction, \n\t// or 0 when instruction has no operand.\n\tuint8_t op_count;\n\n\tcs_arm64_op operands[8]; // operands for this instruction.\n} cs_arm64;\n\n//> ARM64 registers\ntypedef enum arm64_reg {\n\tARM64_REG_INVALID = 0,\n\n\tARM64_REG_X29,\n\tARM64_REG_X30,\n\tARM64_REG_NZCV,\n\tARM64_REG_SP,\n\tARM64_REG_WSP,\n\tARM64_REG_WZR,\n\tARM64_REG_XZR,\n\tARM64_REG_B0,\n\tARM64_REG_B1,\n\tARM64_REG_B2,\n\tARM64_REG_B3,\n\tARM64_REG_B4,\n\tARM64_REG_B5,\n\tARM64_REG_B6,\n\tARM64_REG_B7,\n\tARM64_REG_B8,\n\tARM64_REG_B9,\n\tARM64_REG_B10,\n\tARM64_REG_B11,\n\tARM64_REG_B12,\n\tARM64_REG_B13,\n\tARM64_REG_B14,\n\tARM64_REG_B15,\n\tARM64_REG_B16,\n\tARM64_REG_B17,\n\tARM64_REG_B18,\n\tARM64_REG_B19,\n\tARM64_REG_B20,\n\tARM64_REG_B21,\n\tARM64_REG_B22,\n\tARM64_REG_B23,\n\tARM64_REG_B24,\n\tARM64_REG_B25,\n\tARM64_REG_B26,\n\tARM64_REG_B27,\n\tARM64_REG_B28,\n\tARM64_REG_B29,\n\tARM64_REG_B30,\n\tARM64_REG_B31,\n\tARM64_REG_D0,\n\tARM64_REG_D1,\n\tARM64_REG_D2,\n\tARM64_REG_D3,\n\tARM64_REG_D4,\n\tARM64_REG_D5,\n\tARM64_REG_D6,\n\tARM64_REG_D7,\n\tARM64_REG_D8,\n\tARM64_REG_D9,\n\tARM64_REG_D10,\n\tARM64_REG_D11,\n\tARM64_REG_D12,\n\tARM64_REG_D13,\n\tARM64_REG_D14,\n\tARM64_REG_D15,\n\tARM64_REG_D16,\n\tARM64_REG_D17,\n\tARM64_REG_D18,\n\tARM64_REG_D19,\n\tARM64_REG_D20,\n\tARM64_REG_D21,\n\tARM64_REG_D22,\n\tARM64_REG_D23,\n\tARM64_REG_D24,\n\tARM64_REG_D25,\n\tARM64_REG_D26,\n\tARM64_REG_D27,\n\tARM64_REG_D28,\n\tARM64_REG_D29,\n\tARM64_REG_D30,\n\tARM64_REG_D31,\n\tARM64_REG_H0,\n\tARM64_REG_H1,\n\tARM64_REG_H2,\n\tARM64_REG_H3,\n\tARM64_REG_H4,\n\tARM64_REG_H5,\n\tARM64_REG_H6,\n\tARM64_REG_H7,\n\tARM64_REG_H8,\n\tARM64_REG_H9,\n\tARM64_REG_H10,\n\tARM64_REG_H11,\n\tARM64_REG_H12,\n\tARM64_REG_H13,\n\tARM64_REG_H14,\n\tARM64_REG_H15,\n\tARM64_REG_H16,\n\tARM64_REG_H17,\n\tARM64_REG_H18,\n\tARM64_REG_H19,\n\tARM64_REG_H20,\n\tARM64_REG_H21,\n\tARM64_REG_H22,\n\tARM64_REG_H23,\n\tARM64_REG_H24,\n\tARM64_REG_H25,\n\tARM64_REG_H26,\n\tARM64_REG_H27,\n\tARM64_REG_H28,\n\tARM64_REG_H29,\n\tARM64_REG_H30,\n\tARM64_REG_H31,\n\tARM64_REG_Q0,\n\tARM64_REG_Q1,\n\tARM64_REG_Q2,\n\tARM64_REG_Q3,\n\tARM64_REG_Q4,\n\tARM64_REG_Q5,\n\tARM64_REG_Q6,\n\tARM64_REG_Q7,\n\tARM64_REG_Q8,\n\tARM64_REG_Q9,\n\tARM64_REG_Q10,\n\tARM64_REG_Q11,\n\tARM64_REG_Q12,\n\tARM64_REG_Q13,\n\tARM64_REG_Q14,\n\tARM64_REG_Q15,\n\tARM64_REG_Q16,\n\tARM64_REG_Q17,\n\tARM64_REG_Q18,\n\tARM64_REG_Q19,\n\tARM64_REG_Q20,\n\tARM64_REG_Q21,\n\tARM64_REG_Q22,\n\tARM64_REG_Q23,\n\tARM64_REG_Q24,\n\tARM64_REG_Q25,\n\tARM64_REG_Q26,\n\tARM64_REG_Q27,\n\tARM64_REG_Q28,\n\tARM64_REG_Q29,\n\tARM64_REG_Q30,\n\tARM64_REG_Q31,\n\tARM64_REG_S0,\n\tARM64_REG_S1,\n\tARM64_REG_S2,\n\tARM64_REG_S3,\n\tARM64_REG_S4,\n\tARM64_REG_S5,\n\tARM64_REG_S6,\n\tARM64_REG_S7,\n\tARM64_REG_S8,\n\tARM64_REG_S9,\n\tARM64_REG_S10,\n\tARM64_REG_S11,\n\tARM64_REG_S12,\n\tARM64_REG_S13,\n\tARM64_REG_S14,\n\tARM64_REG_S15,\n\tARM64_REG_S16,\n\tARM64_REG_S17,\n\tARM64_REG_S18,\n\tARM64_REG_S19,\n\tARM64_REG_S20,\n\tARM64_REG_S21,\n\tARM64_REG_S22,\n\tARM64_REG_S23,\n\tARM64_REG_S24,\n\tARM64_REG_S25,\n\tARM64_REG_S26,\n\tARM64_REG_S27,\n\tARM64_REG_S28,\n\tARM64_REG_S29,\n\tARM64_REG_S30,\n\tARM64_REG_S31,\n\tARM64_REG_W0,\n\tARM64_REG_W1,\n\tARM64_REG_W2,\n\tARM64_REG_W3,\n\tARM64_REG_W4,\n\tARM64_REG_W5,\n\tARM64_REG_W6,\n\tARM64_REG_W7,\n\tARM64_REG_W8,\n\tARM64_REG_W9,\n\tARM64_REG_W10,\n\tARM64_REG_W11,\n\tARM64_REG_W12,\n\tARM64_REG_W13,\n\tARM64_REG_W14,\n\tARM64_REG_W15,\n\tARM64_REG_W16,\n\tARM64_REG_W17,\n\tARM64_REG_W18,\n\tARM64_REG_W19,\n\tARM64_REG_W20,\n\tARM64_REG_W21,\n\tARM64_REG_W22,\n\tARM64_REG_W23,\n\tARM64_REG_W24,\n\tARM64_REG_W25,\n\tARM64_REG_W26,\n\tARM64_REG_W27,\n\tARM64_REG_W28,\n\tARM64_REG_W29,\n\tARM64_REG_W30,\n\tARM64_REG_X0,\n\tARM64_REG_X1,\n\tARM64_REG_X2,\n\tARM64_REG_X3,\n\tARM64_REG_X4,\n\tARM64_REG_X5,\n\tARM64_REG_X6,\n\tARM64_REG_X7,\n\tARM64_REG_X8,\n\tARM64_REG_X9,\n\tARM64_REG_X10,\n\tARM64_REG_X11,\n\tARM64_REG_X12,\n\tARM64_REG_X13,\n\tARM64_REG_X14,\n\tARM64_REG_X15,\n\tARM64_REG_X16,\n\tARM64_REG_X17,\n\tARM64_REG_X18,\n\tARM64_REG_X19,\n\tARM64_REG_X20,\n\tARM64_REG_X21,\n\tARM64_REG_X22,\n\tARM64_REG_X23,\n\tARM64_REG_X24,\n\tARM64_REG_X25,\n\tARM64_REG_X26,\n\tARM64_REG_X27,\n\tARM64_REG_X28,\n\n\tARM64_REG_V0,\n\tARM64_REG_V1,\n\tARM64_REG_V2,\n\tARM64_REG_V3,\n\tARM64_REG_V4,\n\tARM64_REG_V5,\n\tARM64_REG_V6,\n\tARM64_REG_V7,\n\tARM64_REG_V8,\n\tARM64_REG_V9,\n\tARM64_REG_V10,\n\tARM64_REG_V11,\n\tARM64_REG_V12,\n\tARM64_REG_V13,\n\tARM64_REG_V14,\n\tARM64_REG_V15,\n\tARM64_REG_V16,\n\tARM64_REG_V17,\n\tARM64_REG_V18,\n\tARM64_REG_V19,\n\tARM64_REG_V20,\n\tARM64_REG_V21,\n\tARM64_REG_V22,\n\tARM64_REG_V23,\n\tARM64_REG_V24,\n\tARM64_REG_V25,\n\tARM64_REG_V26,\n\tARM64_REG_V27,\n\tARM64_REG_V28,\n\tARM64_REG_V29,\n\tARM64_REG_V30,\n\tARM64_REG_V31,\n\n\tARM64_REG_ENDING,\t\t// <-- mark the end of the list of registers\n\n\t//> alias registers\n\n\tARM64_REG_IP0 = ARM64_REG_X16,\n\tARM64_REG_IP1 = ARM64_REG_X17,\n\tARM64_REG_FP = ARM64_REG_X29,\n\tARM64_REG_LR = ARM64_REG_X30,\n} arm64_reg;\n\n//> ARM64 instruction\ntypedef enum arm64_insn {\n\tARM64_INS_INVALID = 0,\n\n\tARM64_INS_ABS,\n\tARM64_INS_ADC,\n\tARM64_INS_ADDHN,\n\tARM64_INS_ADDHN2,\n\tARM64_INS_ADDP,\n\tARM64_INS_ADD,\n\tARM64_INS_ADDV,\n\tARM64_INS_ADR,\n\tARM64_INS_ADRP,\n\tARM64_INS_AESD,\n\tARM64_INS_AESE,\n\tARM64_INS_AESIMC,\n\tARM64_INS_AESMC,\n\tARM64_INS_AND,\n\tARM64_INS_ASR,\n\tARM64_INS_B,\n\tARM64_INS_BFM,\n\tARM64_INS_BIC,\n\tARM64_INS_BIF,\n\tARM64_INS_BIT,\n\tARM64_INS_BL,\n\tARM64_INS_BLR,\n\tARM64_INS_BR,\n\tARM64_INS_BRK,\n\tARM64_INS_BSL,\n\tARM64_INS_CBNZ,\n\tARM64_INS_CBZ,\n\tARM64_INS_CCMN,\n\tARM64_INS_CCMP,\n\tARM64_INS_CLREX,\n\tARM64_INS_CLS,\n\tARM64_INS_CLZ,\n\tARM64_INS_CMEQ,\n\tARM64_INS_CMGE,\n\tARM64_INS_CMGT,\n\tARM64_INS_CMHI,\n\tARM64_INS_CMHS,\n\tARM64_INS_CMLE,\n\tARM64_INS_CMLT,\n\tARM64_INS_CMTST,\n\tARM64_INS_CNT,\n\tARM64_INS_MOV,\n\tARM64_INS_CRC32B,\n\tARM64_INS_CRC32CB,\n\tARM64_INS_CRC32CH,\n\tARM64_INS_CRC32CW,\n\tARM64_INS_CRC32CX,\n\tARM64_INS_CRC32H,\n\tARM64_INS_CRC32W,\n\tARM64_INS_CRC32X,\n\tARM64_INS_CSEL,\n\tARM64_INS_CSINC,\n\tARM64_INS_CSINV,\n\tARM64_INS_CSNEG,\n\tARM64_INS_DCPS1,\n\tARM64_INS_DCPS2,\n\tARM64_INS_DCPS3,\n\tARM64_INS_DMB,\n\tARM64_INS_DRPS,\n\tARM64_INS_DSB,\n\tARM64_INS_DUP,\n\tARM64_INS_EON,\n\tARM64_INS_EOR,\n\tARM64_INS_ERET,\n\tARM64_INS_EXTR,\n\tARM64_INS_EXT,\n\tARM64_INS_FABD,\n\tARM64_INS_FABS,\n\tARM64_INS_FACGE,\n\tARM64_INS_FACGT,\n\tARM64_INS_FADD,\n\tARM64_INS_FADDP,\n\tARM64_INS_FCCMP,\n\tARM64_INS_FCCMPE,\n\tARM64_INS_FCMEQ,\n\tARM64_INS_FCMGE,\n\tARM64_INS_FCMGT,\n\tARM64_INS_FCMLE,\n\tARM64_INS_FCMLT,\n\tARM64_INS_FCMP,\n\tARM64_INS_FCMPE,\n\tARM64_INS_FCSEL,\n\tARM64_INS_FCVTAS,\n\tARM64_INS_FCVTAU,\n\tARM64_INS_FCVT,\n\tARM64_INS_FCVTL,\n\tARM64_INS_FCVTL2,\n\tARM64_INS_FCVTMS,\n\tARM64_INS_FCVTMU,\n\tARM64_INS_FCVTNS,\n\tARM64_INS_FCVTNU,\n\tARM64_INS_FCVTN,\n\tARM64_INS_FCVTN2,\n\tARM64_INS_FCVTPS,\n\tARM64_INS_FCVTPU,\n\tARM64_INS_FCVTXN,\n\tARM64_INS_FCVTXN2,\n\tARM64_INS_FCVTZS,\n\tARM64_INS_FCVTZU,\n\tARM64_INS_FDIV,\n\tARM64_INS_FMADD,\n\tARM64_INS_FMAX,\n\tARM64_INS_FMAXNM,\n\tARM64_INS_FMAXNMP,\n\tARM64_INS_FMAXNMV,\n\tARM64_INS_FMAXP,\n\tARM64_INS_FMAXV,\n\tARM64_INS_FMIN,\n\tARM64_INS_FMINNM,\n\tARM64_INS_FMINNMP,\n\tARM64_INS_FMINNMV,\n\tARM64_INS_FMINP,\n\tARM64_INS_FMINV,\n\tARM64_INS_FMLA,\n\tARM64_INS_FMLS,\n\tARM64_INS_FMOV,\n\tARM64_INS_FMSUB,\n\tARM64_INS_FMUL,\n\tARM64_INS_FMULX,\n\tARM64_INS_FNEG,\n\tARM64_INS_FNMADD,\n\tARM64_INS_FNMSUB,\n\tARM64_INS_FNMUL,\n\tARM64_INS_FRECPE,\n\tARM64_INS_FRECPS,\n\tARM64_INS_FRECPX,\n\tARM64_INS_FRINTA,\n\tARM64_INS_FRINTI,\n\tARM64_INS_FRINTM,\n\tARM64_INS_FRINTN,\n\tARM64_INS_FRINTP,\n\tARM64_INS_FRINTX,\n\tARM64_INS_FRINTZ,\n\tARM64_INS_FRSQRTE,\n\tARM64_INS_FRSQRTS,\n\tARM64_INS_FSQRT,\n\tARM64_INS_FSUB,\n\tARM64_INS_HINT,\n\tARM64_INS_HLT,\n\tARM64_INS_HVC,\n\tARM64_INS_INS,\n\n\tARM64_INS_ISB,\n\tARM64_INS_LD1,\n\tARM64_INS_LD1R,\n\tARM64_INS_LD2R,\n\tARM64_INS_LD2,\n\tARM64_INS_LD3R,\n\tARM64_INS_LD3,\n\tARM64_INS_LD4,\n\tARM64_INS_LD4R,\n\n\tARM64_INS_LDARB,\n\tARM64_INS_LDARH,\n\tARM64_INS_LDAR,\n\tARM64_INS_LDAXP,\n\tARM64_INS_LDAXRB,\n\tARM64_INS_LDAXRH,\n\tARM64_INS_LDAXR,\n\tARM64_INS_LDNP,\n\tARM64_INS_LDP,\n\tARM64_INS_LDPSW,\n\tARM64_INS_LDRB,\n\tARM64_INS_LDR,\n\tARM64_INS_LDRH,\n\tARM64_INS_LDRSB,\n\tARM64_INS_LDRSH,\n\tARM64_INS_LDRSW,\n\tARM64_INS_LDTRB,\n\tARM64_INS_LDTRH,\n\tARM64_INS_LDTRSB,\n\n\tARM64_INS_LDTRSH,\n\tARM64_INS_LDTRSW,\n\tARM64_INS_LDTR,\n\tARM64_INS_LDURB,\n\tARM64_INS_LDUR,\n\tARM64_INS_LDURH,\n\tARM64_INS_LDURSB,\n\tARM64_INS_LDURSH,\n\tARM64_INS_LDURSW,\n\tARM64_INS_LDXP,\n\tARM64_INS_LDXRB,\n\tARM64_INS_LDXRH,\n\tARM64_INS_LDXR,\n\tARM64_INS_LSL,\n\tARM64_INS_LSR,\n\tARM64_INS_MADD,\n\tARM64_INS_MLA,\n\tARM64_INS_MLS,\n\tARM64_INS_MOVI,\n\tARM64_INS_MOVK,\n\tARM64_INS_MOVN,\n\tARM64_INS_MOVZ,\n\tARM64_INS_MRS,\n\tARM64_INS_MSR,\n\tARM64_INS_MSUB,\n\tARM64_INS_MUL,\n\tARM64_INS_MVNI,\n\tARM64_INS_NEG,\n\tARM64_INS_NOT,\n\tARM64_INS_ORN,\n\tARM64_INS_ORR,\n\tARM64_INS_PMULL2,\n\tARM64_INS_PMULL,\n\tARM64_INS_PMUL,\n\tARM64_INS_PRFM,\n\tARM64_INS_PRFUM,\n\tARM64_INS_RADDHN,\n\tARM64_INS_RADDHN2,\n\tARM64_INS_RBIT,\n\tARM64_INS_RET,\n\tARM64_INS_REV16,\n\tARM64_INS_REV32,\n\tARM64_INS_REV64,\n\tARM64_INS_REV,\n\tARM64_INS_ROR,\n\tARM64_INS_RSHRN2,\n\tARM64_INS_RSHRN,\n\tARM64_INS_RSUBHN,\n\tARM64_INS_RSUBHN2,\n\tARM64_INS_SABAL2,\n\tARM64_INS_SABAL,\n\n\tARM64_INS_SABA,\n\tARM64_INS_SABDL2,\n\tARM64_INS_SABDL,\n\tARM64_INS_SABD,\n\tARM64_INS_SADALP,\n\tARM64_INS_SADDLP,\n\tARM64_INS_SADDLV,\n\tARM64_INS_SADDL2,\n\tARM64_INS_SADDL,\n\tARM64_INS_SADDW2,\n\tARM64_INS_SADDW,\n\tARM64_INS_SBC,\n\tARM64_INS_SBFM,\n\tARM64_INS_SCVTF,\n\tARM64_INS_SDIV,\n\tARM64_INS_SHA1C,\n\tARM64_INS_SHA1H,\n\tARM64_INS_SHA1M,\n\tARM64_INS_SHA1P,\n\tARM64_INS_SHA1SU0,\n\tARM64_INS_SHA1SU1,\n\tARM64_INS_SHA256H2,\n\tARM64_INS_SHA256H,\n\tARM64_INS_SHA256SU0,\n\tARM64_INS_SHA256SU1,\n\tARM64_INS_SHADD,\n\tARM64_INS_SHLL2,\n\tARM64_INS_SHLL,\n\tARM64_INS_SHL,\n\tARM64_INS_SHRN2,\n\tARM64_INS_SHRN,\n\tARM64_INS_SHSUB,\n\tARM64_INS_SLI,\n\tARM64_INS_SMADDL,\n\tARM64_INS_SMAXP,\n\tARM64_INS_SMAXV,\n\tARM64_INS_SMAX,\n\tARM64_INS_SMC,\n\tARM64_INS_SMINP,\n\tARM64_INS_SMINV,\n\tARM64_INS_SMIN,\n\tARM64_INS_SMLAL2,\n\tARM64_INS_SMLAL,\n\tARM64_INS_SMLSL2,\n\tARM64_INS_SMLSL,\n\tARM64_INS_SMOV,\n\tARM64_INS_SMSUBL,\n\tARM64_INS_SMULH,\n\tARM64_INS_SMULL2,\n\tARM64_INS_SMULL,\n\tARM64_INS_SQABS,\n\tARM64_INS_SQADD,\n\tARM64_INS_SQDMLAL,\n\tARM64_INS_SQDMLAL2,\n\tARM64_INS_SQDMLSL,\n\tARM64_INS_SQDMLSL2,\n\tARM64_INS_SQDMULH,\n\tARM64_INS_SQDMULL,\n\tARM64_INS_SQDMULL2,\n\tARM64_INS_SQNEG,\n\tARM64_INS_SQRDMULH,\n\tARM64_INS_SQRSHL,\n\tARM64_INS_SQRSHRN,\n\tARM64_INS_SQRSHRN2,\n\tARM64_INS_SQRSHRUN,\n\tARM64_INS_SQRSHRUN2,\n\tARM64_INS_SQSHLU,\n\tARM64_INS_SQSHL,\n\tARM64_INS_SQSHRN,\n\tARM64_INS_SQSHRN2,\n\tARM64_INS_SQSHRUN,\n\tARM64_INS_SQSHRUN2,\n\tARM64_INS_SQSUB,\n\tARM64_INS_SQXTN2,\n\tARM64_INS_SQXTN,\n\tARM64_INS_SQXTUN2,\n\tARM64_INS_SQXTUN,\n\tARM64_INS_SRHADD,\n\tARM64_INS_SRI,\n\tARM64_INS_SRSHL,\n\tARM64_INS_SRSHR,\n\tARM64_INS_SRSRA,\n\tARM64_INS_SSHLL2,\n\tARM64_INS_SSHLL,\n\tARM64_INS_SSHL,\n\tARM64_INS_SSHR,\n\tARM64_INS_SSRA,\n\tARM64_INS_SSUBL2,\n\tARM64_INS_SSUBL,\n\tARM64_INS_SSUBW2,\n\tARM64_INS_SSUBW,\n\tARM64_INS_ST1,\n\tARM64_INS_ST2,\n\tARM64_INS_ST3,\n\tARM64_INS_ST4,\n\tARM64_INS_STLRB,\n\tARM64_INS_STLRH,\n\tARM64_INS_STLR,\n\tARM64_INS_STLXP,\n\tARM64_INS_STLXRB,\n\tARM64_INS_STLXRH,\n\tARM64_INS_STLXR,\n\tARM64_INS_STNP,\n\tARM64_INS_STP,\n\tARM64_INS_STRB,\n\tARM64_INS_STR,\n\tARM64_INS_STRH,\n\tARM64_INS_STTRB,\n\tARM64_INS_STTRH,\n\tARM64_INS_STTR,\n\tARM64_INS_STURB,\n\tARM64_INS_STUR,\n\tARM64_INS_STURH,\n\tARM64_INS_STXP,\n\tARM64_INS_STXRB,\n\tARM64_INS_STXRH,\n\tARM64_INS_STXR,\n\tARM64_INS_SUBHN,\n\tARM64_INS_SUBHN2,\n\tARM64_INS_SUB,\n\tARM64_INS_SUQADD,\n\tARM64_INS_SVC,\n\tARM64_INS_SYSL,\n\tARM64_INS_SYS,\n\tARM64_INS_TBL,\n\tARM64_INS_TBNZ,\n\tARM64_INS_TBX,\n\tARM64_INS_TBZ,\n\tARM64_INS_TRN1,\n\tARM64_INS_TRN2,\n\tARM64_INS_UABAL2,\n\tARM64_INS_UABAL,\n\tARM64_INS_UABA,\n\tARM64_INS_UABDL2,\n\tARM64_INS_UABDL,\n\tARM64_INS_UABD,\n\tARM64_INS_UADALP,\n\tARM64_INS_UADDLP,\n\tARM64_INS_UADDLV,\n\tARM64_INS_UADDL2,\n\tARM64_INS_UADDL,\n\tARM64_INS_UADDW2,\n\tARM64_INS_UADDW,\n\tARM64_INS_UBFM,\n\tARM64_INS_UCVTF,\n\tARM64_INS_UDIV,\n\tARM64_INS_UHADD,\n\tARM64_INS_UHSUB,\n\tARM64_INS_UMADDL,\n\tARM64_INS_UMAXP,\n\tARM64_INS_UMAXV,\n\tARM64_INS_UMAX,\n\tARM64_INS_UMINP,\n\tARM64_INS_UMINV,\n\tARM64_INS_UMIN,\n\tARM64_INS_UMLAL2,\n\tARM64_INS_UMLAL,\n\tARM64_INS_UMLSL2,\n\tARM64_INS_UMLSL,\n\tARM64_INS_UMOV,\n\tARM64_INS_UMSUBL,\n\tARM64_INS_UMULH,\n\tARM64_INS_UMULL2,\n\tARM64_INS_UMULL,\n\tARM64_INS_UQADD,\n\tARM64_INS_UQRSHL,\n\tARM64_INS_UQRSHRN,\n\tARM64_INS_UQRSHRN2,\n\tARM64_INS_UQSHL,\n\tARM64_INS_UQSHRN,\n\tARM64_INS_UQSHRN2,\n\tARM64_INS_UQSUB,\n\tARM64_INS_UQXTN2,\n\tARM64_INS_UQXTN,\n\tARM64_INS_URECPE,\n\tARM64_INS_URHADD,\n\tARM64_INS_URSHL,\n\tARM64_INS_URSHR,\n\tARM64_INS_URSQRTE,\n\tARM64_INS_URSRA,\n\tARM64_INS_USHLL2,\n\tARM64_INS_USHLL,\n\tARM64_INS_USHL,\n\tARM64_INS_USHR,\n\tARM64_INS_USQADD,\n\tARM64_INS_USRA,\n\tARM64_INS_USUBL2,\n\tARM64_INS_USUBL,\n\tARM64_INS_USUBW2,\n\tARM64_INS_USUBW,\n\tARM64_INS_UZP1,\n\tARM64_INS_UZP2,\n\tARM64_INS_XTN2,\n\tARM64_INS_XTN,\n\tARM64_INS_ZIP1,\n\tARM64_INS_ZIP2,\n\n\t// alias insn\n\tARM64_INS_MNEG,\n\tARM64_INS_UMNEGL,\n\tARM64_INS_SMNEGL,\n\tARM64_INS_NOP,\n\tARM64_INS_YIELD,\n\tARM64_INS_WFE,\n\tARM64_INS_WFI,\n\tARM64_INS_SEV,\n\tARM64_INS_SEVL,\n\tARM64_INS_NGC,\n\tARM64_INS_SBFIZ,\n\tARM64_INS_UBFIZ,\n\tARM64_INS_SBFX,\n\tARM64_INS_UBFX,\n\tARM64_INS_BFI,\n\tARM64_INS_BFXIL,\n\tARM64_INS_CMN,\n\tARM64_INS_MVN,\n\tARM64_INS_TST,\n\tARM64_INS_CSET,\n\tARM64_INS_CINC,\n\tARM64_INS_CSETM,\n\tARM64_INS_CINV,\n\tARM64_INS_CNEG,\n\tARM64_INS_SXTB,\n\tARM64_INS_SXTH,\n\tARM64_INS_SXTW,\n\tARM64_INS_CMP,\n\tARM64_INS_UXTB,\n\tARM64_INS_UXTH,\n\tARM64_INS_UXTW,\n\tARM64_INS_IC,\n\tARM64_INS_DC,\n\tARM64_INS_AT,\n\tARM64_INS_TLBI,\n\n\tARM64_INS_ENDING,  // <-- mark the end of the list of insn\n} arm64_insn;\n\n//> Group of ARM64 instructions\ntypedef enum arm64_insn_group {\n\tARM64_GRP_INVALID = 0, // = CS_GRP_INVALID\n\n\t//> Generic groups\n\t// all jump instructions (conditional+direct+indirect jumps)\n\tARM64_GRP_JUMP,\t// = CS_GRP_JUMP\n\n\t//> Architecture-specific groups\n\tARM64_GRP_CRYPTO = 128,\n\tARM64_GRP_FPARMV8,\n\tARM64_GRP_NEON,\n\tARM64_GRP_CRC,\n\n\tARM64_GRP_ENDING,  // <-- mark the end of the list of groups\n} arm64_insn_group;\n\n#ifdef __cplusplus\n}\n#endif\n\n#endif\n"
  },
  {
    "path": "EFI/CLOVER/kexts/Other/Lilu_v1.3.7.kext/Contents/Resources/Headers/capstone/capstone.h",
    "content": "#ifndef CAPSTONE_ENGINE_H\n#define CAPSTONE_ENGINE_H\n\n/* Capstone Disassembly Engine */\n/* By Nguyen Anh Quynh <aquynh@gmail.com>, 2013-2016 */\n\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n#if !defined(_MSC_VER) || !defined(_KERNEL_MODE)\n#include <stdint.h>\n#endif\n\n#include <stdarg.h>\n\n#if defined(CAPSTONE_HAS_OSXKERNEL)\n#include <libkern/libkern.h>\n#else\n#include <stdlib.h>\n#include <stdio.h>\n#endif\n\n#include \"platform.h\"\n\n#ifdef _MSC_VER\n#pragma warning(disable:4201)\n#pragma warning(disable:4100)\n#define CAPSTONE_API __cdecl\n#ifdef CAPSTONE_SHARED\n#define CAPSTONE_EXPORT __declspec(dllexport)\n#else    // defined(CAPSTONE_STATIC)\n#define CAPSTONE_EXPORT\n#endif\n#else\n#define CAPSTONE_API\n#if defined(__GNUC__) && !defined(CAPSTONE_STATIC)\n#define CAPSTONE_EXPORT __attribute__((visibility(\"default\")))\n#else    // defined(CAPSTONE_STATIC)\n#define CAPSTONE_EXPORT\n#endif\n#endif\n\n#ifdef __GNUC__\n#define CAPSTONE_DEPRECATED __attribute__((deprecated))\n#elif defined(_MSC_VER)\n#define CAPSTONE_DEPRECATED __declspec(deprecated)\n#else\n#pragma message(\"WARNING: You need to implement CAPSTONE_DEPRECATED for this compiler\")\n#define CAPSTONE_DEPRECATED\n#endif\n\n// Capstone API version\n#define CS_API_MAJOR 3\n#define CS_API_MINOR 0\n\n// Capstone package version\n#define CS_VERSION_MAJOR CS_API_MAJOR\n#define CS_VERSION_MINOR CS_API_MINOR\n#define CS_VERSION_EXTRA 5\n\n// Macro to create combined version which can be compared to\n// result of cs_version() API.\n#define CS_MAKE_VERSION(major, minor) ((major << 8) + minor)\n\n// Handle using with all API\ntypedef size_t csh;\n\n// Architecture type\ntypedef enum cs_arch {\n\tCS_ARCH_ARM = 0,\t// ARM architecture (including Thumb, Thumb-2)\n\tCS_ARCH_ARM64,\t\t// ARM-64, also called AArch64\n\tCS_ARCH_MIPS,\t\t// Mips architecture\n\tCS_ARCH_X86,\t\t// X86 architecture (including x86 & x86-64)\n\tCS_ARCH_PPC,\t\t// PowerPC architecture\n\tCS_ARCH_SPARC,\t\t// Sparc architecture\n\tCS_ARCH_SYSZ,\t\t// SystemZ architecture\n\tCS_ARCH_XCORE,\t\t// XCore architecture\n\tCS_ARCH_MAX,\n\tCS_ARCH_ALL = 0xFFFF, // All architectures - for cs_support()\n} cs_arch;\n\n// Support value to verify diet mode of the engine.\n// If cs_support(CS_SUPPORT_DIET) return True, the engine was compiled\n// in diet mode.\n#define CS_SUPPORT_DIET (CS_ARCH_ALL + 1)\n\n// Support value to verify X86 reduce mode of the engine.\n// If cs_support(CS_SUPPORT_X86_REDUCE) return True, the engine was compiled\n// in X86 reduce mode.\n#define CS_SUPPORT_X86_REDUCE (CS_ARCH_ALL + 2)\n\n// Mode type\ntypedef enum cs_mode {\n\tCS_MODE_LITTLE_ENDIAN = 0,\t// little-endian mode (default mode)\n\tCS_MODE_ARM = 0,\t// 32-bit ARM\n\tCS_MODE_16 = 1 << 1,\t// 16-bit mode (X86)\n\tCS_MODE_32 = 1 << 2,\t// 32-bit mode (X86)\n\tCS_MODE_64 = 1 << 3,\t// 64-bit mode (X86, PPC)\n\tCS_MODE_THUMB = 1 << 4,\t// ARM's Thumb mode, including Thumb-2\n\tCS_MODE_MCLASS = 1 << 5,\t// ARM's Cortex-M series\n\tCS_MODE_V8 = 1 << 6,\t// ARMv8 A32 encodings for ARM\n\tCS_MODE_MICRO = 1 << 4, // MicroMips mode (MIPS)\n\tCS_MODE_MIPS3 = 1 << 5, // Mips III ISA\n\tCS_MODE_MIPS32R6 = 1 << 6, // Mips32r6 ISA\n\tCS_MODE_MIPSGP64 = 1 << 7, // General Purpose Registers are 64-bit wide (MIPS)\n\tCS_MODE_V9 = 1 << 4, // SparcV9 mode (Sparc)\n\tCS_MODE_BIG_ENDIAN = 1 << 31,\t// big-endian mode\n\tCS_MODE_MIPS32 = CS_MODE_32,\t// Mips32 ISA (Mips)\n\tCS_MODE_MIPS64 = CS_MODE_64,\t// Mips64 ISA (Mips)\n} cs_mode;\n\ntypedef void* (CAPSTONE_API *cs_malloc_t)(size_t size);\ntypedef void* (CAPSTONE_API *cs_calloc_t)(size_t nmemb, size_t size);\ntypedef void* (CAPSTONE_API *cs_realloc_t)(void *ptr, size_t size);\ntypedef void (CAPSTONE_API *cs_free_t)(void *ptr);\ntypedef int (CAPSTONE_API *cs_vsnprintf_t)(char *str, size_t size, const char *format, va_list ap);\n\n\n// User-defined dynamic memory related functions: malloc/calloc/realloc/free/vsnprintf()\n// By default, Capstone uses system's malloc(), calloc(), realloc(), free() & vsnprintf().\ntypedef struct cs_opt_mem {\n\tcs_malloc_t malloc;\n\tcs_calloc_t calloc;\n\tcs_realloc_t realloc;\n\tcs_free_t free;\n\tcs_vsnprintf_t vsnprintf;\n} cs_opt_mem;\n\n// Runtime option for the disassembled engine\ntypedef enum cs_opt_type {\n\tCS_OPT_INVALID = 0,\t// No option specified\n\tCS_OPT_SYNTAX,\t// Assembly output syntax\n\tCS_OPT_DETAIL,\t// Break down instruction structure into details\n\tCS_OPT_MODE,\t// Change engine's mode at run-time\n\tCS_OPT_MEM,\t// User-defined dynamic memory related functions\n\tCS_OPT_SKIPDATA, // Skip data when disassembling. Then engine is in SKIPDATA mode.\n\tCS_OPT_SKIPDATA_SETUP, // Setup user-defined function for SKIPDATA option\n} cs_opt_type;\n\n// Runtime option value (associated with option type above)\ntypedef enum cs_opt_value {\n\tCS_OPT_OFF = 0,  // Turn OFF an option - default option of CS_OPT_DETAIL, CS_OPT_SKIPDATA.\n\tCS_OPT_ON = 3, // Turn ON an option (CS_OPT_DETAIL, CS_OPT_SKIPDATA).\n\tCS_OPT_SYNTAX_DEFAULT = 0, // Default asm syntax (CS_OPT_SYNTAX).\n\tCS_OPT_SYNTAX_INTEL, // X86 Intel asm syntax - default on X86 (CS_OPT_SYNTAX).\n\tCS_OPT_SYNTAX_ATT,   // X86 ATT asm syntax (CS_OPT_SYNTAX).\n\tCS_OPT_SYNTAX_NOREGNAME, // Prints register name with only number (CS_OPT_SYNTAX)\n} cs_opt_value;\n\n//> Common instruction operand types - to be consistent across all architectures.\ntypedef enum cs_op_type {\n\tCS_OP_INVALID = 0,  // uninitialized/invalid operand.\n\tCS_OP_REG,          // Register operand.\n\tCS_OP_IMM,          // Immediate operand.\n\tCS_OP_MEM,          // Memory operand.\n\tCS_OP_FP,           // Floating-Point operand.\n} cs_op_type;\n\n//> Common instruction groups - to be consistent across all architectures.\ntypedef enum cs_group_type {\n\tCS_GRP_INVALID = 0,  // uninitialized/invalid group.\n\tCS_GRP_JUMP,    // all jump instructions (conditional+direct+indirect jumps)\n\tCS_GRP_CALL,    // all call instructions\n\tCS_GRP_RET,     // all return instructions\n\tCS_GRP_INT,     // all interrupt instructions (int+syscall)\n\tCS_GRP_IRET,    // all interrupt return instructions\n} cs_group_type;\n\n/*\n User-defined callback function for SKIPDATA option.\n See tests/test_skipdata.c for sample code demonstrating this API.\n\n @code: the input buffer containing code to be disassembled.\n        This is the same buffer passed to cs_disasm().\n @code_size: size (in bytes) of the above @code buffer.\n @offset: the position of the currently-examining byte in the input\n      buffer @code mentioned above.\n @user_data: user-data passed to cs_option() via @user_data field in\n      cs_opt_skipdata struct below.\n\n @return: return number of bytes to skip, or 0 to immediately stop disassembling.\n*/\ntypedef size_t (CAPSTONE_API *cs_skipdata_cb_t)(const uint8_t *code, size_t code_size, size_t offset, void *user_data);\n\n// User-customized setup for SKIPDATA option\ntypedef struct cs_opt_skipdata {\n\t// Capstone considers data to skip as special \"instructions\".\n\t// User can specify the string for this instruction's \"mnemonic\" here.\n\t// By default (if @mnemonic is NULL), Capstone use \".byte\".\n\tconst char *mnemonic;\n\n\t// User-defined callback function to be called when Capstone hits data.\n\t// If the returned value from this callback is positive (>0), Capstone\n\t// will skip exactly that number of bytes & continue. Otherwise, if\n\t// the callback returns 0, Capstone stops disassembling and returns\n\t// immediately from cs_disasm()\n\t// NOTE: if this callback pointer is NULL, Capstone would skip a number\n\t// of bytes depending on architectures, as following:\n\t// Arm:     2 bytes (Thumb mode) or 4 bytes.\n\t// Arm64:   4 bytes.\n\t// Mips:    4 bytes.\n\t// PowerPC: 4 bytes.\n\t// Sparc:   4 bytes.\n\t// SystemZ: 2 bytes.\n\t// X86:     1 bytes.\n\t// XCore:   2 bytes.\n\tcs_skipdata_cb_t callback; \t// default value is NULL\n\n\t// User-defined data to be passed to @callback function pointer.\n\tvoid *user_data;\n} cs_opt_skipdata;\n\n\n#include \"arm.h\"\n#include \"arm64.h\"\n#include \"mips.h\"\n#include \"ppc.h\"\n#include \"sparc.h\"\n#include \"systemz.h\"\n#include \"x86.h\"\n#include \"xcore.h\"\n\n// NOTE: All information in cs_detail is only available when CS_OPT_DETAIL = CS_OPT_ON\ntypedef struct cs_detail {\n\tuint8_t regs_read[12]; // list of implicit registers read by this insn\n\tuint8_t regs_read_count; // number of implicit registers read by this insn\n\n\tuint8_t regs_write[20]; // list of implicit registers modified by this insn\n\tuint8_t regs_write_count; // number of implicit registers modified by this insn\n\n\tuint8_t groups[8]; // list of group this instruction belong to\n\tuint8_t groups_count; // number of groups this insn belongs to\n\n\t// Architecture-specific instruction info\n\tunion {\n\t\tcs_x86 x86;\t// X86 architecture, including 16-bit, 32-bit & 64-bit mode\n\t\tcs_arm64 arm64;\t// ARM64 architecture (aka AArch64)\n\t\tcs_arm arm;\t\t// ARM architecture (including Thumb/Thumb2)\n\t\tcs_mips mips;\t// MIPS architecture\n\t\tcs_ppc ppc;\t// PowerPC architecture\n\t\tcs_sparc sparc;\t// Sparc architecture\n\t\tcs_sysz sysz;\t// SystemZ architecture\n\t\tcs_xcore xcore;\t// XCore architecture\n\t};\n} cs_detail;\n\n// Detail information of disassembled instruction\ntypedef struct cs_insn {\n\t// Instruction ID (basically a numeric ID for the instruction mnemonic)\n\t// Find the instruction id in the '[ARCH]_insn' enum in the header file \n\t// of corresponding architecture, such as 'arm_insn' in arm.h for ARM,\n\t// 'x86_insn' in x86.h for X86, etc...\n\t// This information is available even when CS_OPT_DETAIL = CS_OPT_OFF\n\t// NOTE: in Skipdata mode, \"data\" instruction has 0 for this id field.\n\tunsigned int id;\n\n\t// Address (EIP) of this instruction\n\t// This information is available even when CS_OPT_DETAIL = CS_OPT_OFF\n\tuint64_t address;\n\n\t// Size of this instruction\n\t// This information is available even when CS_OPT_DETAIL = CS_OPT_OFF\n\tuint16_t size;\n\t// Machine bytes of this instruction, with number of bytes indicated by @size above\n\t// This information is available even when CS_OPT_DETAIL = CS_OPT_OFF\n\tuint8_t bytes[16];\n\n\t// Ascii text of instruction mnemonic\n\t// This information is available even when CS_OPT_DETAIL = CS_OPT_OFF\n\tchar mnemonic[32];\n\n\t// Ascii text of instruction operands\n\t// This information is available even when CS_OPT_DETAIL = CS_OPT_OFF\n\tchar op_str[160];\n\n\t// Pointer to cs_detail.\n\t// NOTE: detail pointer is only valid when both requirements below are met:\n\t// (1) CS_OP_DETAIL = CS_OPT_ON\n\t// (2) Engine is not in Skipdata mode (CS_OP_SKIPDATA option set to CS_OPT_ON)\n\t//\n\t// NOTE 2: when in Skipdata mode, or when detail mode is OFF, even if this pointer\n\t//     is not NULL, its content is still irrelevant.\n\tcs_detail *detail;\n} cs_insn;\n\n\n// Calculate the offset of a disassembled instruction in its buffer, given its position\n// in its array of disassembled insn\n// NOTE: this macro works with position (>=1), not index\n#define CS_INSN_OFFSET(insns, post) (insns[post - 1].address - insns[0].address)\n\n\n// All type of errors encountered by Capstone API.\n// These are values returned by cs_errno()\ntypedef enum cs_err {\n\tCS_ERR_OK = 0,   // No error: everything was fine\n\tCS_ERR_MEM,      // Out-Of-Memory error: cs_open(), cs_disasm(), cs_disasm_iter()\n\tCS_ERR_ARCH,     // Unsupported architecture: cs_open()\n\tCS_ERR_HANDLE,   // Invalid handle: cs_op_count(), cs_op_index()\n\tCS_ERR_CSH,\t     // Invalid csh argument: cs_close(), cs_errno(), cs_option()\n\tCS_ERR_MODE,     // Invalid/unsupported mode: cs_open()\n\tCS_ERR_OPTION,   // Invalid/unsupported option: cs_option()\n\tCS_ERR_DETAIL,   // Information is unavailable because detail option is OFF\n\tCS_ERR_MEMSETUP, // Dynamic memory management uninitialized (see CS_OPT_MEM)\n\tCS_ERR_VERSION,  // Unsupported version (bindings)\n\tCS_ERR_DIET,     // Access irrelevant data in \"diet\" engine\n\tCS_ERR_SKIPDATA, // Access irrelevant data for \"data\" instruction in SKIPDATA mode\n\tCS_ERR_X86_ATT,  // X86 AT&T syntax is unsupported (opt-out at compile time)\n\tCS_ERR_X86_INTEL, // X86 Intel syntax is unsupported (opt-out at compile time)\n} cs_err;\n\n/*\n Return combined API version & major and minor version numbers.\n\n @major: major number of API version\n @minor: minor number of API version\n\n @return hexical number as (major << 8 | minor), which encodes both\n\t major & minor versions.\n\t NOTE: This returned value can be compared with version number made\n\t with macro CS_MAKE_VERSION\n\n For example, second API version would return 1 in @major, and 1 in @minor\n The return value would be 0x0101\n\n NOTE: if you only care about returned value, but not major and minor values,\n set both @major & @minor arguments to NULL.\n*/\nCAPSTONE_EXPORT\nunsigned int CAPSTONE_API cs_version(int *major, int *minor);\n\n\n/*\n This API can be used to either ask for archs supported by this library,\n or check to see if the library was compile with 'diet' option (or called\n in 'diet' mode).\n\n To check if a particular arch is supported by this library, set @query to\n arch mode (CS_ARCH_* value).\n To verify if this library supports all the archs, use CS_ARCH_ALL.\n\n To check if this library is in 'diet' mode, set @query to CS_SUPPORT_DIET.\n\n @return True if this library supports the given arch, or in 'diet' mode.\n*/\nCAPSTONE_EXPORT\nbool CAPSTONE_API cs_support(int query);\n\n/*\n Initialize CS handle: this must be done before any usage of CS.\n\n @arch: architecture type (CS_ARCH_*)\n @mode: hardware mode. This is combined of CS_MODE_*\n @handle: pointer to handle, which will be updated at return time\n\n @return CS_ERR_OK on success, or other value on failure (refer to cs_err enum\n for detailed error).\n*/\nCAPSTONE_EXPORT\ncs_err CAPSTONE_API cs_open(cs_arch arch, cs_mode mode, csh *handle);\n\n/*\n Close CS handle: MUST do to release the handle when it is not used anymore.\n NOTE: this must be only called when there is no longer usage of Capstone,\n not even access to cs_insn array. The reason is the this API releases some\n cached memory, thus access to any Capstone API after cs_close() might crash\n your application.\n\n In fact,this API invalidate @handle by ZERO out its value (i.e *handle = 0).\n\n @handle: pointer to a handle returned by cs_open()\n\n @return CS_ERR_OK on success, or other value on failure (refer to cs_err enum\n for detailed error).\n*/\nCAPSTONE_EXPORT\ncs_err CAPSTONE_API cs_close(csh *handle);\n\n/*\n Set option for disassembling engine at runtime\n\n @handle: handle returned by cs_open()\n @type: type of option to be set\n @value: option value corresponding with @type\n\n @return: CS_ERR_OK on success, or other value on failure.\n Refer to cs_err enum for detailed error.\n\n NOTE: in the case of CS_OPT_MEM, handle's value can be anything,\n so that cs_option(handle, CS_OPT_MEM, value) can (i.e must) be called\n even before cs_open()\n*/\nCAPSTONE_EXPORT\ncs_err CAPSTONE_API cs_option(csh handle, cs_opt_type type, size_t value);\n\n/*\n Report the last error number when some API function fail.\n Like glibc's errno, cs_errno might not retain its old value once accessed.\n\n @handle: handle returned by cs_open()\n\n @return: error code of cs_err enum type (CS_ERR_*, see above)\n*/\nCAPSTONE_EXPORT\ncs_err CAPSTONE_API cs_errno(csh handle);\n\n\n/*\n Return a string describing given error code.\n\n @code: error code (see CS_ERR_* above)\n\n @return: returns a pointer to a string that describes the error code\n\tpassed in the argument @code\n*/\nCAPSTONE_EXPORT\nconst char * CAPSTONE_API cs_strerror(cs_err code);\n\n/*\n Disassemble binary code, given the code buffer, size, address and number\n of instructions to be decoded.\n This API dynamically allocate memory to contain disassembled instruction.\n Resulted instructions will be put into @*insn\n\n NOTE 1: this API will automatically determine memory needed to contain\n output disassembled instructions in @insn.\n\n NOTE 2: caller must free the allocated memory itself to avoid memory leaking.\n\n NOTE 3: for system with scarce memory to be dynamically allocated such as\n OS kernel or firmware, the API cs_disasm_iter() might be a better choice than\n cs_disasm(). The reason is that with cs_disasm(), based on limited available\n memory, we have to calculate in advance how many instructions to be disassembled,\n which complicates things. This is especially troublesome for the case @count=0,\n when cs_disasm() runs uncontrollably (until either end of input buffer, or\n when it encounters an invalid instruction).\n \n @handle: handle returned by cs_open()\n @code: buffer containing raw binary code to be disassembled.\n @code_size: size of the above code buffer.\n @address: address of the first instruction in given raw code buffer.\n @insn: array of instructions filled in by this API.\n\t   NOTE: @insn will be allocated by this function, and should be freed\n\t   with cs_free() API.\n @count: number of instructions to be disassembled, or 0 to get all of them\n\n @return: the number of successfully disassembled instructions,\n or 0 if this function failed to disassemble the given code\n\n On failure, call cs_errno() for error code.\n*/\nCAPSTONE_EXPORT\nsize_t CAPSTONE_API cs_disasm(csh handle,\n\t\tconst uint8_t *code, size_t code_size,\n\t\tuint64_t address,\n\t\tsize_t count,\n\t\tcs_insn **insn);\n\n/*\n  Deprecated function - to be retired in the next version!\n  Use cs_disasm() instead of cs_disasm_ex()\n*/\nCAPSTONE_EXPORT\nCAPSTONE_DEPRECATED\nsize_t CAPSTONE_API cs_disasm_ex(csh handle,\n\t\tconst uint8_t *code, size_t code_size,\n\t\tuint64_t address,\n\t\tsize_t count,\n\t\tcs_insn **insn);\n\n/*\n Free memory allocated by cs_malloc() or cs_disasm() (argument @insn)\n\n @insn: pointer returned by @insn argument in cs_disasm() or cs_malloc()\n @count: number of cs_insn structures returned by cs_disasm(), or 1\n     to free memory allocated by cs_malloc().\n*/\nCAPSTONE_EXPORT\nvoid CAPSTONE_API cs_free(cs_insn *insn, size_t count);\n\n\n/*\n Allocate memory for 1 instruction to be used by cs_disasm_iter().\n\n @handle: handle returned by cs_open()\n\n NOTE: when no longer in use, you can reclaim the memory allocated for\n this instruction with cs_free(insn, 1)\n*/\nCAPSTONE_EXPORT\ncs_insn * CAPSTONE_API cs_malloc(csh handle);\n\n/*\n Fast API to disassemble binary code, given the code buffer, size, address\n and number of instructions to be decoded.\n This API put the resulted instruction into a given cache in @insn.\n See tests/test_iter.c for sample code demonstrating this API.\n\n NOTE 1: this API will update @code, @size & @address to point to the next\n instruction in the input buffer. Therefore, it is convenient to use\n cs_disasm_iter() inside a loop to quickly iterate all the instructions.\n While decoding one instruction at a time can also be achieved with\n cs_disasm(count=1), some benchmarks shown that cs_disasm_iter() can be 30%\n faster on random input.\n\n NOTE 2: the cache in @insn can be created with cs_malloc() API.\n\n NOTE 3: for system with scarce memory to be dynamically allocated such as\n OS kernel or firmware, this API is recommended over cs_disasm(), which\n allocates memory based on the number of instructions to be disassembled.\n The reason is that with cs_disasm(), based on limited available memory,\n we have to calculate in advance how many instructions to be disassembled,\n which complicates things. This is especially troublesome for the case\n @count=0, when cs_disasm() runs uncontrollably (until either end of input\n buffer, or when it encounters an invalid instruction).\n \n @handle: handle returned by cs_open()\n @code: buffer containing raw binary code to be disassembled\n @size: size of above code\n @address: address of the first insn in given raw code buffer\n @insn: pointer to instruction to be filled in by this API.\n\n @return: true if this API successfully decode 1 instruction,\n or false otherwise.\n\n On failure, call cs_errno() for error code.\n*/\nCAPSTONE_EXPORT\nbool CAPSTONE_API cs_disasm_iter(csh handle,\n\tconst uint8_t **code, size_t *size,\n\tuint64_t *address, cs_insn *insn);\n\n/*\n Return friendly name of register in a string.\n Find the instruction id from header file of corresponding architecture (arm.h for ARM,\n x86.h for X86, ...)\n\n WARN: when in 'diet' mode, this API is irrelevant because engine does not\n store register name.\n\n @handle: handle returned by cs_open()\n @reg_id: register id\n\n @return: string name of the register, or NULL if @reg_id is invalid.\n*/\nCAPSTONE_EXPORT\nconst char * CAPSTONE_API cs_reg_name(csh handle, unsigned int reg_id);\n\n/*\n Return friendly name of an instruction in a string.\n Find the instruction id from header file of corresponding architecture (arm.h for ARM, x86.h for X86, ...)\n\n WARN: when in 'diet' mode, this API is irrelevant because the engine does not\n store instruction name.\n\n @handle: handle returned by cs_open()\n @insn_id: instruction id\n\n @return: string name of the instruction, or NULL if @insn_id is invalid.\n*/\nCAPSTONE_EXPORT\nconst char * CAPSTONE_API cs_insn_name(csh handle, unsigned int insn_id);\n\n/*\n Return friendly name of a group id (that an instruction can belong to)\n Find the group id from header file of corresponding architecture (arm.h for ARM, x86.h for X86, ...)\n\n WARN: when in 'diet' mode, this API is irrelevant because the engine does not\n store group name.\n\n @handle: handle returned by cs_open()\n @group_id: group id\n\n @return: string name of the group, or NULL if @group_id is invalid.\n*/\nCAPSTONE_EXPORT\nconst char * CAPSTONE_API cs_group_name(csh handle, unsigned int group_id);\n\n/*\n Check if a disassembled instruction belong to a particular group.\n Find the group id from header file of corresponding architecture (arm.h for ARM, x86.h for X86, ...)\n Internally, this simply verifies if @group_id matches any member of insn->groups array.\n\n NOTE: this API is only valid when detail option is ON (which is OFF by default).\n\n WARN: when in 'diet' mode, this API is irrelevant because the engine does not\n update @groups array.\n\n @handle: handle returned by cs_open()\n @insn: disassembled instruction structure received from cs_disasm() or cs_disasm_iter()\n @group_id: group that you want to check if this instruction belong to.\n\n @return: true if this instruction indeed belongs to aboved group, or false otherwise.\n*/\nCAPSTONE_EXPORT\nbool CAPSTONE_API cs_insn_group(csh handle, const cs_insn *insn, unsigned int group_id);\n\n/*\n Check if a disassembled instruction IMPLICITLY used a particular register.\n Find the register id from header file of corresponding architecture (arm.h for ARM, x86.h for X86, ...)\n Internally, this simply verifies if @reg_id matches any member of insn->regs_read array.\n\n NOTE: this API is only valid when detail option is ON (which is OFF by default)\n\n WARN: when in 'diet' mode, this API is irrelevant because the engine does not\n update @regs_read array.\n\n @insn: disassembled instruction structure received from cs_disasm() or cs_disasm_iter()\n @reg_id: register that you want to check if this instruction used it.\n\n @return: true if this instruction indeed implicitly used aboved register, or false otherwise.\n*/\nCAPSTONE_EXPORT\nbool CAPSTONE_API cs_reg_read(csh handle, const cs_insn *insn, unsigned int reg_id);\n\n/*\n Check if a disassembled instruction IMPLICITLY modified a particular register.\n Find the register id from header file of corresponding architecture (arm.h for ARM, x86.h for X86, ...)\n Internally, this simply verifies if @reg_id matches any member of insn->regs_write array.\n\n NOTE: this API is only valid when detail option is ON (which is OFF by default)\n\n WARN: when in 'diet' mode, this API is irrelevant because the engine does not\n update @regs_write array.\n\n @insn: disassembled instruction structure received from cs_disasm() or cs_disasm_iter()\n @reg_id: register that you want to check if this instruction modified it.\n\n @return: true if this instruction indeed implicitly modified aboved register, or false otherwise.\n*/\nCAPSTONE_EXPORT\nbool CAPSTONE_API cs_reg_write(csh handle, const cs_insn *insn, unsigned int reg_id);\n\n/*\n Count the number of operands of a given type.\n Find the operand type in header file of corresponding architecture (arm.h for ARM, x86.h for X86, ...)\n\n NOTE: this API is only valid when detail option is ON (which is OFF by default)\n\n @handle: handle returned by cs_open()\n @insn: disassembled instruction structure received from cs_disasm() or cs_disasm_iter()\n @op_type: Operand type to be found.\n\n @return: number of operands of given type @op_type in instruction @insn,\n or -1 on failure.\n*/\nCAPSTONE_EXPORT\nint CAPSTONE_API cs_op_count(csh handle, const cs_insn *insn, unsigned int op_type);\n\n/*\n Retrieve the position of operand of given type in <arch>.operands[] array.\n Later, the operand can be accessed using the returned position.\n Find the operand type in header file of corresponding architecture (arm.h for ARM, x86.h for X86, ...)\n\n NOTE: this API is only valid when detail option is ON (which is OFF by default)\n\n @handle: handle returned by cs_open()\n @insn: disassembled instruction structure received from cs_disasm() or cs_disasm_iter()\n @op_type: Operand type to be found.\n @position: position of the operand to be found. This must be in the range\n\t\t\t[1, cs_op_count(handle, insn, op_type)]\n\n @return: index of operand of given type @op_type in <arch>.operands[] array\n in instruction @insn, or -1 on failure.\n*/\nCAPSTONE_EXPORT\nint CAPSTONE_API cs_op_index(csh handle, const cs_insn *insn, unsigned int op_type,\n\t\tunsigned int position);\n\n#ifdef __cplusplus\n}\n#endif\n\n#endif\n"
  },
  {
    "path": "EFI/CLOVER/kexts/Other/Lilu_v1.3.7.kext/Contents/Resources/Headers/capstone/mips.h",
    "content": "#ifndef CAPSTONE_MIPS_H\n#define CAPSTONE_MIPS_H\n\n/* Capstone Disassembly Engine */\n/* By Nguyen Anh Quynh <aquynh@gmail.com>, 2013-2014 */\n\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n#if !defined(_MSC_VER) || !defined(_KERNEL_MODE)\n#include <stdint.h>\n#endif\n\n#include \"platform.h\"\n\n// GCC MIPS toolchain has a default macro called \"mips\" which breaks\n// compilation\n#undef mips\n\n#ifdef _MSC_VER\n#pragma warning(disable:4201)\n#endif\n\n//> Operand type for instruction's operands\ntypedef enum mips_op_type {\n\tMIPS_OP_INVALID = 0, // = CS_OP_INVALID (Uninitialized).\n\tMIPS_OP_REG, // = CS_OP_REG (Register operand).\n\tMIPS_OP_IMM, // = CS_OP_IMM (Immediate operand).\n\tMIPS_OP_MEM, // = CS_OP_MEM (Memory operand).\n} mips_op_type;\n\n// Instruction's operand referring to memory\n// This is associated with MIPS_OP_MEM operand type above\ntypedef struct mips_op_mem {\n\tunsigned int base;\t// base register\n\tint64_t disp;\t// displacement/offset value\n} mips_op_mem;\n\n// Instruction operand\ntypedef struct cs_mips_op {\n\tmips_op_type type;\t// operand type\n\tunion {\n\t\tunsigned int reg;\t// register value for REG operand\n\t\tint64_t imm;\t\t// immediate value for IMM operand\n\t\tmips_op_mem mem;\t// base/index/scale/disp value for MEM operand\n\t};\n} cs_mips_op;\n\n// Instruction structure\ntypedef struct cs_mips {\n\t// Number of operands of this instruction, \n\t// or 0 when instruction has no operand.\n\tuint8_t op_count;\n\tcs_mips_op operands[8]; // operands for this instruction.\n} cs_mips;\n\n//> MIPS registers\ntypedef enum mips_reg {\n\tMIPS_REG_INVALID = 0,\n\t//> General purpose registers\n\tMIPS_REG_0,\n\tMIPS_REG_1,\n\tMIPS_REG_2,\n\tMIPS_REG_3,\n\tMIPS_REG_4,\n\tMIPS_REG_5,\n\tMIPS_REG_6,\n\tMIPS_REG_7,\n\tMIPS_REG_8,\n\tMIPS_REG_9,\n\tMIPS_REG_10,\n\tMIPS_REG_11,\n\tMIPS_REG_12,\n\tMIPS_REG_13,\n\tMIPS_REG_14,\n\tMIPS_REG_15,\n\tMIPS_REG_16,\n\tMIPS_REG_17,\n\tMIPS_REG_18,\n\tMIPS_REG_19,\n\tMIPS_REG_20,\n\tMIPS_REG_21,\n\tMIPS_REG_22,\n\tMIPS_REG_23,\n\tMIPS_REG_24,\n\tMIPS_REG_25,\n\tMIPS_REG_26,\n\tMIPS_REG_27,\n\tMIPS_REG_28,\n\tMIPS_REG_29,\n\tMIPS_REG_30,\n\tMIPS_REG_31,\n\n\t//> DSP registers\n\tMIPS_REG_DSPCCOND,\n\tMIPS_REG_DSPCARRY,\n\tMIPS_REG_DSPEFI,\n\tMIPS_REG_DSPOUTFLAG,\n\tMIPS_REG_DSPOUTFLAG16_19,\n\tMIPS_REG_DSPOUTFLAG20,\n\tMIPS_REG_DSPOUTFLAG21,\n\tMIPS_REG_DSPOUTFLAG22,\n\tMIPS_REG_DSPOUTFLAG23,\n\tMIPS_REG_DSPPOS,\n\tMIPS_REG_DSPSCOUNT,\n\n\t//> ACC registers\n\tMIPS_REG_AC0,\n\tMIPS_REG_AC1,\n\tMIPS_REG_AC2,\n\tMIPS_REG_AC3,\n\n\t//> COP registers\n\tMIPS_REG_CC0,\n\tMIPS_REG_CC1,\n\tMIPS_REG_CC2,\n\tMIPS_REG_CC3,\n\tMIPS_REG_CC4,\n\tMIPS_REG_CC5,\n\tMIPS_REG_CC6,\n\tMIPS_REG_CC7,\n\n\t//> FPU registers\n\tMIPS_REG_F0,\n\tMIPS_REG_F1,\n\tMIPS_REG_F2,\n\tMIPS_REG_F3,\n\tMIPS_REG_F4,\n\tMIPS_REG_F5,\n\tMIPS_REG_F6,\n\tMIPS_REG_F7,\n\tMIPS_REG_F8,\n\tMIPS_REG_F9,\n\tMIPS_REG_F10,\n\tMIPS_REG_F11,\n\tMIPS_REG_F12,\n\tMIPS_REG_F13,\n\tMIPS_REG_F14,\n\tMIPS_REG_F15,\n\tMIPS_REG_F16,\n\tMIPS_REG_F17,\n\tMIPS_REG_F18,\n\tMIPS_REG_F19,\n\tMIPS_REG_F20,\n\tMIPS_REG_F21,\n\tMIPS_REG_F22,\n\tMIPS_REG_F23,\n\tMIPS_REG_F24,\n\tMIPS_REG_F25,\n\tMIPS_REG_F26,\n\tMIPS_REG_F27,\n\tMIPS_REG_F28,\n\tMIPS_REG_F29,\n\tMIPS_REG_F30,\n\tMIPS_REG_F31,\n\n\tMIPS_REG_FCC0,\n\tMIPS_REG_FCC1,\n\tMIPS_REG_FCC2,\n\tMIPS_REG_FCC3,\n\tMIPS_REG_FCC4,\n\tMIPS_REG_FCC5,\n\tMIPS_REG_FCC6,\n\tMIPS_REG_FCC7,\n\n\t//> AFPR128\n\tMIPS_REG_W0,\n\tMIPS_REG_W1,\n\tMIPS_REG_W2,\n\tMIPS_REG_W3,\n\tMIPS_REG_W4,\n\tMIPS_REG_W5,\n\tMIPS_REG_W6,\n\tMIPS_REG_W7,\n\tMIPS_REG_W8,\n\tMIPS_REG_W9,\n\tMIPS_REG_W10,\n\tMIPS_REG_W11,\n\tMIPS_REG_W12,\n\tMIPS_REG_W13,\n\tMIPS_REG_W14,\n\tMIPS_REG_W15,\n\tMIPS_REG_W16,\n\tMIPS_REG_W17,\n\tMIPS_REG_W18,\n\tMIPS_REG_W19,\n\tMIPS_REG_W20,\n\tMIPS_REG_W21,\n\tMIPS_REG_W22,\n\tMIPS_REG_W23,\n\tMIPS_REG_W24,\n\tMIPS_REG_W25,\n\tMIPS_REG_W26,\n\tMIPS_REG_W27,\n\tMIPS_REG_W28,\n\tMIPS_REG_W29,\n\tMIPS_REG_W30,\n\tMIPS_REG_W31,\n\n\tMIPS_REG_HI,\n\tMIPS_REG_LO,\n\n\tMIPS_REG_P0,\n\tMIPS_REG_P1,\n\tMIPS_REG_P2,\n\n\tMIPS_REG_MPL0,\n\tMIPS_REG_MPL1,\n\tMIPS_REG_MPL2,\n\n\tMIPS_REG_ENDING,\t// <-- mark the end of the list or registers\n\n\t// alias registers\n\tMIPS_REG_ZERO = MIPS_REG_0,\n\tMIPS_REG_AT = MIPS_REG_1,\n\tMIPS_REG_V0 = MIPS_REG_2,\n\tMIPS_REG_V1 = MIPS_REG_3,\n\tMIPS_REG_A0 = MIPS_REG_4,\n\tMIPS_REG_A1 = MIPS_REG_5,\n\tMIPS_REG_A2 = MIPS_REG_6,\n\tMIPS_REG_A3 = MIPS_REG_7,\n\tMIPS_REG_T0 = MIPS_REG_8,\n\tMIPS_REG_T1 = MIPS_REG_9,\n\tMIPS_REG_T2 = MIPS_REG_10,\n\tMIPS_REG_T3 = MIPS_REG_11,\n\tMIPS_REG_T4 = MIPS_REG_12,\n\tMIPS_REG_T5 = MIPS_REG_13,\n\tMIPS_REG_T6 = MIPS_REG_14,\n\tMIPS_REG_T7 = MIPS_REG_15,\n\tMIPS_REG_S0 = MIPS_REG_16,\n\tMIPS_REG_S1 = MIPS_REG_17,\n\tMIPS_REG_S2 = MIPS_REG_18,\n\tMIPS_REG_S3 = MIPS_REG_19,\n\tMIPS_REG_S4 = MIPS_REG_20,\n\tMIPS_REG_S5 = MIPS_REG_21,\n\tMIPS_REG_S6 = MIPS_REG_22,\n\tMIPS_REG_S7 = MIPS_REG_23,\n\tMIPS_REG_T8 = MIPS_REG_24,\n\tMIPS_REG_T9 = MIPS_REG_25,\n\tMIPS_REG_K0 = MIPS_REG_26,\n\tMIPS_REG_K1 = MIPS_REG_27,\n\tMIPS_REG_GP = MIPS_REG_28,\n\tMIPS_REG_SP = MIPS_REG_29,\n\tMIPS_REG_FP = MIPS_REG_30, MIPS_REG_S8 = MIPS_REG_30,\n\tMIPS_REG_RA = MIPS_REG_31,\n\n\tMIPS_REG_HI0 = MIPS_REG_AC0,\n\tMIPS_REG_HI1 = MIPS_REG_AC1,\n\tMIPS_REG_HI2 = MIPS_REG_AC2,\n\tMIPS_REG_HI3 = MIPS_REG_AC3,\n\n\tMIPS_REG_LO0 = MIPS_REG_HI0,\n\tMIPS_REG_LO1 = MIPS_REG_HI1,\n\tMIPS_REG_LO2 = MIPS_REG_HI2,\n\tMIPS_REG_LO3 = MIPS_REG_HI3,\n} mips_reg;\n\n//> MIPS instruction\ntypedef enum mips_insn {\n\tMIPS_INS_INVALID = 0,\n\n\tMIPS_INS_ABSQ_S,\n\tMIPS_INS_ADD,\n\tMIPS_INS_ADDIUPC,\n\tMIPS_INS_ADDQH,\n\tMIPS_INS_ADDQH_R,\n\tMIPS_INS_ADDQ,\n\tMIPS_INS_ADDQ_S,\n\tMIPS_INS_ADDSC,\n\tMIPS_INS_ADDS_A,\n\tMIPS_INS_ADDS_S,\n\tMIPS_INS_ADDS_U,\n\tMIPS_INS_ADDUH,\n\tMIPS_INS_ADDUH_R,\n\tMIPS_INS_ADDU,\n\tMIPS_INS_ADDU_S,\n\tMIPS_INS_ADDVI,\n\tMIPS_INS_ADDV,\n\tMIPS_INS_ADDWC,\n\tMIPS_INS_ADD_A,\n\tMIPS_INS_ADDI,\n\tMIPS_INS_ADDIU,\n\tMIPS_INS_ALIGN,\n\tMIPS_INS_ALUIPC,\n\tMIPS_INS_AND,\n\tMIPS_INS_ANDI,\n\tMIPS_INS_APPEND,\n\tMIPS_INS_ASUB_S,\n\tMIPS_INS_ASUB_U,\n\tMIPS_INS_AUI,\n\tMIPS_INS_AUIPC,\n\tMIPS_INS_AVER_S,\n\tMIPS_INS_AVER_U,\n\tMIPS_INS_AVE_S,\n\tMIPS_INS_AVE_U,\n\tMIPS_INS_BADDU,\n\tMIPS_INS_BAL,\n\tMIPS_INS_BALC,\n\tMIPS_INS_BALIGN,\n\tMIPS_INS_BC,\n\tMIPS_INS_BC0F,\n\tMIPS_INS_BC0FL,\n\tMIPS_INS_BC0T,\n\tMIPS_INS_BC0TL,\n\tMIPS_INS_BC1EQZ,\n\tMIPS_INS_BC1F,\n\tMIPS_INS_BC1FL,\n\tMIPS_INS_BC1NEZ,\n\tMIPS_INS_BC1T,\n\tMIPS_INS_BC1TL,\n\tMIPS_INS_BC2EQZ,\n\tMIPS_INS_BC2F,\n\tMIPS_INS_BC2FL,\n\tMIPS_INS_BC2NEZ,\n\tMIPS_INS_BC2T,\n\tMIPS_INS_BC2TL,\n\tMIPS_INS_BC3F,\n\tMIPS_INS_BC3FL,\n\tMIPS_INS_BC3T,\n\tMIPS_INS_BC3TL,\n\tMIPS_INS_BCLRI,\n\tMIPS_INS_BCLR,\n\tMIPS_INS_BEQ,\n\tMIPS_INS_BEQC,\n\tMIPS_INS_BEQL,\n\tMIPS_INS_BEQZALC,\n\tMIPS_INS_BEQZC,\n\tMIPS_INS_BGEC,\n\tMIPS_INS_BGEUC,\n\tMIPS_INS_BGEZ,\n\tMIPS_INS_BGEZAL,\n\tMIPS_INS_BGEZALC,\n\tMIPS_INS_BGEZALL,\n\tMIPS_INS_BGEZALS,\n\tMIPS_INS_BGEZC,\n\tMIPS_INS_BGEZL,\n\tMIPS_INS_BGTZ,\n\tMIPS_INS_BGTZALC,\n\tMIPS_INS_BGTZC,\n\tMIPS_INS_BGTZL,\n\tMIPS_INS_BINSLI,\n\tMIPS_INS_BINSL,\n\tMIPS_INS_BINSRI,\n\tMIPS_INS_BINSR,\n\tMIPS_INS_BITREV,\n\tMIPS_INS_BITSWAP,\n\tMIPS_INS_BLEZ,\n\tMIPS_INS_BLEZALC,\n\tMIPS_INS_BLEZC,\n\tMIPS_INS_BLEZL,\n\tMIPS_INS_BLTC,\n\tMIPS_INS_BLTUC,\n\tMIPS_INS_BLTZ,\n\tMIPS_INS_BLTZAL,\n\tMIPS_INS_BLTZALC,\n\tMIPS_INS_BLTZALL,\n\tMIPS_INS_BLTZALS,\n\tMIPS_INS_BLTZC,\n\tMIPS_INS_BLTZL,\n\tMIPS_INS_BMNZI,\n\tMIPS_INS_BMNZ,\n\tMIPS_INS_BMZI,\n\tMIPS_INS_BMZ,\n\tMIPS_INS_BNE,\n\tMIPS_INS_BNEC,\n\tMIPS_INS_BNEGI,\n\tMIPS_INS_BNEG,\n\tMIPS_INS_BNEL,\n\tMIPS_INS_BNEZALC,\n\tMIPS_INS_BNEZC,\n\tMIPS_INS_BNVC,\n\tMIPS_INS_BNZ,\n\tMIPS_INS_BOVC,\n\tMIPS_INS_BPOSGE32,\n\tMIPS_INS_BREAK,\n\tMIPS_INS_BSELI,\n\tMIPS_INS_BSEL,\n\tMIPS_INS_BSETI,\n\tMIPS_INS_BSET,\n\tMIPS_INS_BZ,\n\tMIPS_INS_BEQZ,\n\tMIPS_INS_B,\n\tMIPS_INS_BNEZ,\n\tMIPS_INS_BTEQZ,\n\tMIPS_INS_BTNEZ,\n\tMIPS_INS_CACHE,\n\tMIPS_INS_CEIL,\n\tMIPS_INS_CEQI,\n\tMIPS_INS_CEQ,\n\tMIPS_INS_CFC1,\n\tMIPS_INS_CFCMSA,\n\tMIPS_INS_CINS,\n\tMIPS_INS_CINS32,\n\tMIPS_INS_CLASS,\n\tMIPS_INS_CLEI_S,\n\tMIPS_INS_CLEI_U,\n\tMIPS_INS_CLE_S,\n\tMIPS_INS_CLE_U,\n\tMIPS_INS_CLO,\n\tMIPS_INS_CLTI_S,\n\tMIPS_INS_CLTI_U,\n\tMIPS_INS_CLT_S,\n\tMIPS_INS_CLT_U,\n\tMIPS_INS_CLZ,\n\tMIPS_INS_CMPGDU,\n\tMIPS_INS_CMPGU,\n\tMIPS_INS_CMPU,\n\tMIPS_INS_CMP,\n\tMIPS_INS_COPY_S,\n\tMIPS_INS_COPY_U,\n\tMIPS_INS_CTC1,\n\tMIPS_INS_CTCMSA,\n\tMIPS_INS_CVT,\n\tMIPS_INS_C,\n\tMIPS_INS_CMPI,\n\tMIPS_INS_DADD,\n\tMIPS_INS_DADDI,\n\tMIPS_INS_DADDIU,\n\tMIPS_INS_DADDU,\n\tMIPS_INS_DAHI,\n\tMIPS_INS_DALIGN,\n\tMIPS_INS_DATI,\n\tMIPS_INS_DAUI,\n\tMIPS_INS_DBITSWAP,\n\tMIPS_INS_DCLO,\n\tMIPS_INS_DCLZ,\n\tMIPS_INS_DDIV,\n\tMIPS_INS_DDIVU,\n\tMIPS_INS_DERET,\n\tMIPS_INS_DEXT,\n\tMIPS_INS_DEXTM,\n\tMIPS_INS_DEXTU,\n\tMIPS_INS_DI,\n\tMIPS_INS_DINS,\n\tMIPS_INS_DINSM,\n\tMIPS_INS_DINSU,\n\tMIPS_INS_DIV,\n\tMIPS_INS_DIVU,\n\tMIPS_INS_DIV_S,\n\tMIPS_INS_DIV_U,\n\tMIPS_INS_DLSA,\n\tMIPS_INS_DMFC0,\n\tMIPS_INS_DMFC1,\n\tMIPS_INS_DMFC2,\n\tMIPS_INS_DMOD,\n\tMIPS_INS_DMODU,\n\tMIPS_INS_DMTC0,\n\tMIPS_INS_DMTC1,\n\tMIPS_INS_DMTC2,\n\tMIPS_INS_DMUH,\n\tMIPS_INS_DMUHU,\n\tMIPS_INS_DMUL,\n\tMIPS_INS_DMULT,\n\tMIPS_INS_DMULTU,\n\tMIPS_INS_DMULU,\n\tMIPS_INS_DOTP_S,\n\tMIPS_INS_DOTP_U,\n\tMIPS_INS_DPADD_S,\n\tMIPS_INS_DPADD_U,\n\tMIPS_INS_DPAQX_SA,\n\tMIPS_INS_DPAQX_S,\n\tMIPS_INS_DPAQ_SA,\n\tMIPS_INS_DPAQ_S,\n\tMIPS_INS_DPAU,\n\tMIPS_INS_DPAX,\n\tMIPS_INS_DPA,\n\tMIPS_INS_DPOP,\n\tMIPS_INS_DPSQX_SA,\n\tMIPS_INS_DPSQX_S,\n\tMIPS_INS_DPSQ_SA,\n\tMIPS_INS_DPSQ_S,\n\tMIPS_INS_DPSUB_S,\n\tMIPS_INS_DPSUB_U,\n\tMIPS_INS_DPSU,\n\tMIPS_INS_DPSX,\n\tMIPS_INS_DPS,\n\tMIPS_INS_DROTR,\n\tMIPS_INS_DROTR32,\n\tMIPS_INS_DROTRV,\n\tMIPS_INS_DSBH,\n\tMIPS_INS_DSHD,\n\tMIPS_INS_DSLL,\n\tMIPS_INS_DSLL32,\n\tMIPS_INS_DSLLV,\n\tMIPS_INS_DSRA,\n\tMIPS_INS_DSRA32,\n\tMIPS_INS_DSRAV,\n\tMIPS_INS_DSRL,\n\tMIPS_INS_DSRL32,\n\tMIPS_INS_DSRLV,\n\tMIPS_INS_DSUB,\n\tMIPS_INS_DSUBU,\n\tMIPS_INS_EHB,\n\tMIPS_INS_EI,\n\tMIPS_INS_ERET,\n\tMIPS_INS_EXT,\n\tMIPS_INS_EXTP,\n\tMIPS_INS_EXTPDP,\n\tMIPS_INS_EXTPDPV,\n\tMIPS_INS_EXTPV,\n\tMIPS_INS_EXTRV_RS,\n\tMIPS_INS_EXTRV_R,\n\tMIPS_INS_EXTRV_S,\n\tMIPS_INS_EXTRV,\n\tMIPS_INS_EXTR_RS,\n\tMIPS_INS_EXTR_R,\n\tMIPS_INS_EXTR_S,\n\tMIPS_INS_EXTR,\n\tMIPS_INS_EXTS,\n\tMIPS_INS_EXTS32,\n\tMIPS_INS_ABS,\n\tMIPS_INS_FADD,\n\tMIPS_INS_FCAF,\n\tMIPS_INS_FCEQ,\n\tMIPS_INS_FCLASS,\n\tMIPS_INS_FCLE,\n\tMIPS_INS_FCLT,\n\tMIPS_INS_FCNE,\n\tMIPS_INS_FCOR,\n\tMIPS_INS_FCUEQ,\n\tMIPS_INS_FCULE,\n\tMIPS_INS_FCULT,\n\tMIPS_INS_FCUNE,\n\tMIPS_INS_FCUN,\n\tMIPS_INS_FDIV,\n\tMIPS_INS_FEXDO,\n\tMIPS_INS_FEXP2,\n\tMIPS_INS_FEXUPL,\n\tMIPS_INS_FEXUPR,\n\tMIPS_INS_FFINT_S,\n\tMIPS_INS_FFINT_U,\n\tMIPS_INS_FFQL,\n\tMIPS_INS_FFQR,\n\tMIPS_INS_FILL,\n\tMIPS_INS_FLOG2,\n\tMIPS_INS_FLOOR,\n\tMIPS_INS_FMADD,\n\tMIPS_INS_FMAX_A,\n\tMIPS_INS_FMAX,\n\tMIPS_INS_FMIN_A,\n\tMIPS_INS_FMIN,\n\tMIPS_INS_MOV,\n\tMIPS_INS_FMSUB,\n\tMIPS_INS_FMUL,\n\tMIPS_INS_MUL,\n\tMIPS_INS_NEG,\n\tMIPS_INS_FRCP,\n\tMIPS_INS_FRINT,\n\tMIPS_INS_FRSQRT,\n\tMIPS_INS_FSAF,\n\tMIPS_INS_FSEQ,\n\tMIPS_INS_FSLE,\n\tMIPS_INS_FSLT,\n\tMIPS_INS_FSNE,\n\tMIPS_INS_FSOR,\n\tMIPS_INS_FSQRT,\n\tMIPS_INS_SQRT,\n\tMIPS_INS_FSUB,\n\tMIPS_INS_SUB,\n\tMIPS_INS_FSUEQ,\n\tMIPS_INS_FSULE,\n\tMIPS_INS_FSULT,\n\tMIPS_INS_FSUNE,\n\tMIPS_INS_FSUN,\n\tMIPS_INS_FTINT_S,\n\tMIPS_INS_FTINT_U,\n\tMIPS_INS_FTQ,\n\tMIPS_INS_FTRUNC_S,\n\tMIPS_INS_FTRUNC_U,\n\tMIPS_INS_HADD_S,\n\tMIPS_INS_HADD_U,\n\tMIPS_INS_HSUB_S,\n\tMIPS_INS_HSUB_U,\n\tMIPS_INS_ILVEV,\n\tMIPS_INS_ILVL,\n\tMIPS_INS_ILVOD,\n\tMIPS_INS_ILVR,\n\tMIPS_INS_INS,\n\tMIPS_INS_INSERT,\n\tMIPS_INS_INSV,\n\tMIPS_INS_INSVE,\n\tMIPS_INS_J,\n\tMIPS_INS_JAL,\n\tMIPS_INS_JALR,\n\tMIPS_INS_JALRS,\n\tMIPS_INS_JALS,\n\tMIPS_INS_JALX,\n\tMIPS_INS_JIALC,\n\tMIPS_INS_JIC,\n\tMIPS_INS_JR,\n\tMIPS_INS_JRADDIUSP,\n\tMIPS_INS_JRC,\n\tMIPS_INS_JALRC,\n\tMIPS_INS_LB,\n\tMIPS_INS_LBUX,\n\tMIPS_INS_LBU,\n\tMIPS_INS_LD,\n\tMIPS_INS_LDC1,\n\tMIPS_INS_LDC2,\n\tMIPS_INS_LDC3,\n\tMIPS_INS_LDI,\n\tMIPS_INS_LDL,\n\tMIPS_INS_LDPC,\n\tMIPS_INS_LDR,\n\tMIPS_INS_LDXC1,\n\tMIPS_INS_LH,\n\tMIPS_INS_LHX,\n\tMIPS_INS_LHU,\n\tMIPS_INS_LL,\n\tMIPS_INS_LLD,\n\tMIPS_INS_LSA,\n\tMIPS_INS_LUXC1,\n\tMIPS_INS_LUI,\n\tMIPS_INS_LW,\n\tMIPS_INS_LWC1,\n\tMIPS_INS_LWC2,\n\tMIPS_INS_LWC3,\n\tMIPS_INS_LWL,\n\tMIPS_INS_LWPC,\n\tMIPS_INS_LWR,\n\tMIPS_INS_LWUPC,\n\tMIPS_INS_LWU,\n\tMIPS_INS_LWX,\n\tMIPS_INS_LWXC1,\n\tMIPS_INS_LI,\n\tMIPS_INS_MADD,\n\tMIPS_INS_MADDF,\n\tMIPS_INS_MADDR_Q,\n\tMIPS_INS_MADDU,\n\tMIPS_INS_MADDV,\n\tMIPS_INS_MADD_Q,\n\tMIPS_INS_MAQ_SA,\n\tMIPS_INS_MAQ_S,\n\tMIPS_INS_MAXA,\n\tMIPS_INS_MAXI_S,\n\tMIPS_INS_MAXI_U,\n\tMIPS_INS_MAX_A,\n\tMIPS_INS_MAX,\n\tMIPS_INS_MAX_S,\n\tMIPS_INS_MAX_U,\n\tMIPS_INS_MFC0,\n\tMIPS_INS_MFC1,\n\tMIPS_INS_MFC2,\n\tMIPS_INS_MFHC1,\n\tMIPS_INS_MFHI,\n\tMIPS_INS_MFLO,\n\tMIPS_INS_MINA,\n\tMIPS_INS_MINI_S,\n\tMIPS_INS_MINI_U,\n\tMIPS_INS_MIN_A,\n\tMIPS_INS_MIN,\n\tMIPS_INS_MIN_S,\n\tMIPS_INS_MIN_U,\n\tMIPS_INS_MOD,\n\tMIPS_INS_MODSUB,\n\tMIPS_INS_MODU,\n\tMIPS_INS_MOD_S,\n\tMIPS_INS_MOD_U,\n\tMIPS_INS_MOVE,\n\tMIPS_INS_MOVF,\n\tMIPS_INS_MOVN,\n\tMIPS_INS_MOVT,\n\tMIPS_INS_MOVZ,\n\tMIPS_INS_MSUB,\n\tMIPS_INS_MSUBF,\n\tMIPS_INS_MSUBR_Q,\n\tMIPS_INS_MSUBU,\n\tMIPS_INS_MSUBV,\n\tMIPS_INS_MSUB_Q,\n\tMIPS_INS_MTC0,\n\tMIPS_INS_MTC1,\n\tMIPS_INS_MTC2,\n\tMIPS_INS_MTHC1,\n\tMIPS_INS_MTHI,\n\tMIPS_INS_MTHLIP,\n\tMIPS_INS_MTLO,\n\tMIPS_INS_MTM0,\n\tMIPS_INS_MTM1,\n\tMIPS_INS_MTM2,\n\tMIPS_INS_MTP0,\n\tMIPS_INS_MTP1,\n\tMIPS_INS_MTP2,\n\tMIPS_INS_MUH,\n\tMIPS_INS_MUHU,\n\tMIPS_INS_MULEQ_S,\n\tMIPS_INS_MULEU_S,\n\tMIPS_INS_MULQ_RS,\n\tMIPS_INS_MULQ_S,\n\tMIPS_INS_MULR_Q,\n\tMIPS_INS_MULSAQ_S,\n\tMIPS_INS_MULSA,\n\tMIPS_INS_MULT,\n\tMIPS_INS_MULTU,\n\tMIPS_INS_MULU,\n\tMIPS_INS_MULV,\n\tMIPS_INS_MUL_Q,\n\tMIPS_INS_MUL_S,\n\tMIPS_INS_NLOC,\n\tMIPS_INS_NLZC,\n\tMIPS_INS_NMADD,\n\tMIPS_INS_NMSUB,\n\tMIPS_INS_NOR,\n\tMIPS_INS_NORI,\n\tMIPS_INS_NOT,\n\tMIPS_INS_OR,\n\tMIPS_INS_ORI,\n\tMIPS_INS_PACKRL,\n\tMIPS_INS_PAUSE,\n\tMIPS_INS_PCKEV,\n\tMIPS_INS_PCKOD,\n\tMIPS_INS_PCNT,\n\tMIPS_INS_PICK,\n\tMIPS_INS_POP,\n\tMIPS_INS_PRECEQU,\n\tMIPS_INS_PRECEQ,\n\tMIPS_INS_PRECEU,\n\tMIPS_INS_PRECRQU_S,\n\tMIPS_INS_PRECRQ,\n\tMIPS_INS_PRECRQ_RS,\n\tMIPS_INS_PRECR,\n\tMIPS_INS_PRECR_SRA,\n\tMIPS_INS_PRECR_SRA_R,\n\tMIPS_INS_PREF,\n\tMIPS_INS_PREPEND,\n\tMIPS_INS_RADDU,\n\tMIPS_INS_RDDSP,\n\tMIPS_INS_RDHWR,\n\tMIPS_INS_REPLV,\n\tMIPS_INS_REPL,\n\tMIPS_INS_RINT,\n\tMIPS_INS_ROTR,\n\tMIPS_INS_ROTRV,\n\tMIPS_INS_ROUND,\n\tMIPS_INS_SAT_S,\n\tMIPS_INS_SAT_U,\n\tMIPS_INS_SB,\n\tMIPS_INS_SC,\n\tMIPS_INS_SCD,\n\tMIPS_INS_SD,\n\tMIPS_INS_SDBBP,\n\tMIPS_INS_SDC1,\n\tMIPS_INS_SDC2,\n\tMIPS_INS_SDC3,\n\tMIPS_INS_SDL,\n\tMIPS_INS_SDR,\n\tMIPS_INS_SDXC1,\n\tMIPS_INS_SEB,\n\tMIPS_INS_SEH,\n\tMIPS_INS_SELEQZ,\n\tMIPS_INS_SELNEZ,\n\tMIPS_INS_SEL,\n\tMIPS_INS_SEQ,\n\tMIPS_INS_SEQI,\n\tMIPS_INS_SH,\n\tMIPS_INS_SHF,\n\tMIPS_INS_SHILO,\n\tMIPS_INS_SHILOV,\n\tMIPS_INS_SHLLV,\n\tMIPS_INS_SHLLV_S,\n\tMIPS_INS_SHLL,\n\tMIPS_INS_SHLL_S,\n\tMIPS_INS_SHRAV,\n\tMIPS_INS_SHRAV_R,\n\tMIPS_INS_SHRA,\n\tMIPS_INS_SHRA_R,\n\tMIPS_INS_SHRLV,\n\tMIPS_INS_SHRL,\n\tMIPS_INS_SLDI,\n\tMIPS_INS_SLD,\n\tMIPS_INS_SLL,\n\tMIPS_INS_SLLI,\n\tMIPS_INS_SLLV,\n\tMIPS_INS_SLT,\n\tMIPS_INS_SLTI,\n\tMIPS_INS_SLTIU,\n\tMIPS_INS_SLTU,\n\tMIPS_INS_SNE,\n\tMIPS_INS_SNEI,\n\tMIPS_INS_SPLATI,\n\tMIPS_INS_SPLAT,\n\tMIPS_INS_SRA,\n\tMIPS_INS_SRAI,\n\tMIPS_INS_SRARI,\n\tMIPS_INS_SRAR,\n\tMIPS_INS_SRAV,\n\tMIPS_INS_SRL,\n\tMIPS_INS_SRLI,\n\tMIPS_INS_SRLRI,\n\tMIPS_INS_SRLR,\n\tMIPS_INS_SRLV,\n\tMIPS_INS_SSNOP,\n\tMIPS_INS_ST,\n\tMIPS_INS_SUBQH,\n\tMIPS_INS_SUBQH_R,\n\tMIPS_INS_SUBQ,\n\tMIPS_INS_SUBQ_S,\n\tMIPS_INS_SUBSUS_U,\n\tMIPS_INS_SUBSUU_S,\n\tMIPS_INS_SUBS_S,\n\tMIPS_INS_SUBS_U,\n\tMIPS_INS_SUBUH,\n\tMIPS_INS_SUBUH_R,\n\tMIPS_INS_SUBU,\n\tMIPS_INS_SUBU_S,\n\tMIPS_INS_SUBVI,\n\tMIPS_INS_SUBV,\n\tMIPS_INS_SUXC1,\n\tMIPS_INS_SW,\n\tMIPS_INS_SWC1,\n\tMIPS_INS_SWC2,\n\tMIPS_INS_SWC3,\n\tMIPS_INS_SWL,\n\tMIPS_INS_SWR,\n\tMIPS_INS_SWXC1,\n\tMIPS_INS_SYNC,\n\tMIPS_INS_SYSCALL,\n\tMIPS_INS_TEQ,\n\tMIPS_INS_TEQI,\n\tMIPS_INS_TGE,\n\tMIPS_INS_TGEI,\n\tMIPS_INS_TGEIU,\n\tMIPS_INS_TGEU,\n\tMIPS_INS_TLBP,\n\tMIPS_INS_TLBR,\n\tMIPS_INS_TLBWI,\n\tMIPS_INS_TLBWR,\n\tMIPS_INS_TLT,\n\tMIPS_INS_TLTI,\n\tMIPS_INS_TLTIU,\n\tMIPS_INS_TLTU,\n\tMIPS_INS_TNE,\n\tMIPS_INS_TNEI,\n\tMIPS_INS_TRUNC,\n\tMIPS_INS_V3MULU,\n\tMIPS_INS_VMM0,\n\tMIPS_INS_VMULU,\n\tMIPS_INS_VSHF,\n\tMIPS_INS_WAIT,\n\tMIPS_INS_WRDSP,\n\tMIPS_INS_WSBH,\n\tMIPS_INS_XOR,\n\tMIPS_INS_XORI,\n\n\t//> some alias instructions\n\tMIPS_INS_NOP,\n\tMIPS_INS_NEGU,\n\n\t//> special instructions\n\tMIPS_INS_JALR_HB,\t// jump and link with Hazard Barrier\n\tMIPS_INS_JR_HB,\t\t// jump register with Hazard Barrier\n\n\tMIPS_INS_ENDING,\n} mips_insn;\n\n//> Group of MIPS instructions\ntypedef enum mips_insn_group {\n\tMIPS_GRP_INVALID = 0, // = CS_GRP_INVALID\n\n\t//> Generic groups\n\t// all jump instructions (conditional+direct+indirect jumps)\n\tMIPS_GRP_JUMP,\t// = CS_GRP_JUMP\n\n\t//> Architecture-specific groups\n\tMIPS_GRP_BITCOUNT = 128,\n\tMIPS_GRP_DSP,\n\tMIPS_GRP_DSPR2,\n\tMIPS_GRP_FPIDX,\n\tMIPS_GRP_MSA,\n\tMIPS_GRP_MIPS32R2,\n\tMIPS_GRP_MIPS64,\n\tMIPS_GRP_MIPS64R2,\n\tMIPS_GRP_SEINREG,\n\tMIPS_GRP_STDENC,\n\tMIPS_GRP_SWAP,\n\tMIPS_GRP_MICROMIPS,\n\tMIPS_GRP_MIPS16MODE,\n\tMIPS_GRP_FP64BIT,\n\tMIPS_GRP_NONANSFPMATH,\n\tMIPS_GRP_NOTFP64BIT,\n\tMIPS_GRP_NOTINMICROMIPS,\n\tMIPS_GRP_NOTNACL,\n\tMIPS_GRP_NOTMIPS32R6,\n\tMIPS_GRP_NOTMIPS64R6,\n\tMIPS_GRP_CNMIPS,\n\tMIPS_GRP_MIPS32,\n\tMIPS_GRP_MIPS32R6,\n\tMIPS_GRP_MIPS64R6,\n\tMIPS_GRP_MIPS2,\n\tMIPS_GRP_MIPS3,\n\tMIPS_GRP_MIPS3_32,\n\tMIPS_GRP_MIPS3_32R2,\n\tMIPS_GRP_MIPS4_32,\n\tMIPS_GRP_MIPS4_32R2,\n\tMIPS_GRP_MIPS5_32R2,\n\tMIPS_GRP_GP32BIT,\n\tMIPS_GRP_GP64BIT,\n\n\tMIPS_GRP_ENDING,\n} mips_insn_group;\n\n#ifdef __cplusplus\n}\n#endif\n\n#endif\n"
  },
  {
    "path": "EFI/CLOVER/kexts/Other/Lilu_v1.3.7.kext/Contents/Resources/Headers/capstone/platform.h",
    "content": "/* Capstone Disassembly Engine */\n/* By Axel Souchet & Nguyen Anh Quynh, 2014 */\n\n#ifndef CAPSTONE_PLATFORM_H\n#define CAPSTONE_PLATFORM_H\n\n// handle C99 issue (for pre-2013 VisualStudio)\n#if !defined(__CYGWIN__) && !defined(__MINGW32__) && !defined(__MINGW64__) && (defined (WIN32) || defined (WIN64) || defined (_WIN32) || defined (_WIN64))\n// MSVC\n\n// stdbool.h\n#if (_MSC_VER < 1800) || defined(_KERNEL_MODE)\n// this system does not have stdbool.h\n#ifndef __cplusplus\ntypedef unsigned char bool;\n#define false 0\n#define true 1\n#endif\n\n#else\n// VisualStudio 2013+ -> C99 is supported\n#include <stdbool.h>\n#endif\n\n#else\n// not MSVC -> C99 is supported\n#include <stdbool.h>\n#endif\n\n\n// handle C99 issue (for pre-2013 VisualStudio)\n#if defined(CAPSTONE_HAS_OSXKERNEL) || (defined(_MSC_VER) && (_MSC_VER <= 1700 || defined(_KERNEL_MODE)))\n// this system does not have inttypes.h\n\n#if defined(_MSC_VER) && (_MSC_VER < 1600 || defined(_KERNEL_MODE))\n// this system does not have stdint.h\ntypedef signed char  int8_t;\ntypedef signed short int16_t;\ntypedef signed int   int32_t;\ntypedef unsigned char  uint8_t;\ntypedef unsigned short uint16_t;\ntypedef unsigned int   uint32_t;\ntypedef signed long long   int64_t;\ntypedef unsigned long long uint64_t;\n\n#define INT8_MIN         (-127i8 - 1)\n#define INT16_MIN        (-32767i16 - 1)\n#define INT32_MIN        (-2147483647i32 - 1)\n#define INT64_MIN        (-9223372036854775807i64 - 1)\n#define INT8_MAX         127i8\n#define INT16_MAX        32767i16\n#define INT32_MAX        2147483647i32\n#define INT64_MAX        9223372036854775807i64\n#define UINT8_MAX        0xffui8\n#define UINT16_MAX       0xffffui16\n#define UINT32_MAX       0xffffffffui32\n#define UINT64_MAX       0xffffffffffffffffui64\n#endif\n\n#define __PRI_8_LENGTH_MODIFIER__ \"hh\"\n#define __PRI_64_LENGTH_MODIFIER__ \"ll\"\n\n#define PRId8         __PRI_8_LENGTH_MODIFIER__ \"d\"\n#define PRIi8         __PRI_8_LENGTH_MODIFIER__ \"i\"\n#define PRIo8         __PRI_8_LENGTH_MODIFIER__ \"o\"\n#define PRIu8         __PRI_8_LENGTH_MODIFIER__ \"u\"\n#define PRIx8         __PRI_8_LENGTH_MODIFIER__ \"x\"\n#define PRIX8         __PRI_8_LENGTH_MODIFIER__ \"X\"\n\n#define PRId16        \"hd\"\n#define PRIi16        \"hi\"\n#define PRIo16        \"ho\"\n#define PRIu16        \"hu\"\n#define PRIx16        \"hx\"\n#define PRIX16        \"hX\"\n\n#if defined(_MSC_VER) && _MSC_VER <= 1700\n#define PRId32        \"ld\"\n#define PRIi32        \"li\"\n#define PRIo32        \"lo\"\n#define PRIu32        \"lu\"\n#define PRIx32        \"lx\"\n#define PRIX32        \"lX\"\n#else\t// OSX\n#define PRId32        \"d\"\n#define PRIi32        \"i\"\n#define PRIo32        \"o\"\n#define PRIu32        \"u\"\n#define PRIx32        \"x\"\n#define PRIX32        \"X\"\n#endif\n\n#if defined(_MSC_VER) && _MSC_VER <= 1700\n// redefine functions from inttypes.h used in cstool\n#define strtoull _strtoui64\n#endif\n\n#define PRId64        __PRI_64_LENGTH_MODIFIER__ \"d\"\n#define PRIi64        __PRI_64_LENGTH_MODIFIER__ \"i\"\n#define PRIo64        __PRI_64_LENGTH_MODIFIER__ \"o\"\n#define PRIu64        __PRI_64_LENGTH_MODIFIER__ \"u\"\n#define PRIx64        __PRI_64_LENGTH_MODIFIER__ \"x\"\n#define PRIX64        __PRI_64_LENGTH_MODIFIER__ \"X\"\n\n#else\n// this system has inttypes.h by default\n#include <inttypes.h>\n#endif\n\n#endif\n"
  },
  {
    "path": "EFI/CLOVER/kexts/Other/Lilu_v1.3.7.kext/Contents/Resources/Headers/capstone/ppc.h",
    "content": "#ifndef CAPSTONE_PPC_H\n#define CAPSTONE_PPC_H\n\n/* Capstone Disassembly Engine */\n/* By Nguyen Anh Quynh <aquynh@gmail.com>, 2013-2014 */\n\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n#if !defined(_MSC_VER) || !defined(_KERNEL_MODE)\n#include <stdint.h>\n#endif\n\n#include \"platform.h\"\n\n#ifdef _MSC_VER\n#pragma warning(disable:4201)\n#endif\n\n//> PPC branch codes for some branch instructions\ntypedef enum ppc_bc {\n\tPPC_BC_INVALID  = 0,\n\tPPC_BC_LT       = (0 << 5) | 12,\n\tPPC_BC_LE       = (1 << 5) |  4,\n\tPPC_BC_EQ       = (2 << 5) | 12,\n\tPPC_BC_GE       = (0 << 5) |  4,\n\tPPC_BC_GT       = (1 << 5) | 12,\n\tPPC_BC_NE       = (2 << 5) |  4,\n\tPPC_BC_UN       = (3 << 5) | 12,\n\tPPC_BC_NU       = (3 << 5) |  4,\n\n\t// extra conditions\n\tPPC_BC_SO = (4 << 5) | 12,\t// summary overflow\n\tPPC_BC_NS = (4 << 5) | 4,\t// not summary overflow\n} ppc_bc;\n\n//> PPC branch hint for some branch instructions\ntypedef enum ppc_bh {\n\tPPC_BH_INVALID = 0,\t// no hint\n\tPPC_BH_PLUS,\t// PLUS hint\n\tPPC_BH_MINUS,\t// MINUS hint\n} ppc_bh;\n\n//> PPC registers\ntypedef enum ppc_reg {\n\tPPC_REG_INVALID = 0,\n\n\tPPC_REG_CARRY,\n\tPPC_REG_CC,\n\tPPC_REG_CR0,\n\tPPC_REG_CR1,\n\tPPC_REG_CR2,\n\tPPC_REG_CR3,\n\tPPC_REG_CR4,\n\tPPC_REG_CR5,\n\tPPC_REG_CR6,\n\tPPC_REG_CR7,\n\tPPC_REG_CTR,\n\tPPC_REG_F0,\n\tPPC_REG_F1,\n\tPPC_REG_F2,\n\tPPC_REG_F3,\n\tPPC_REG_F4,\n\tPPC_REG_F5,\n\tPPC_REG_F6,\n\tPPC_REG_F7,\n\tPPC_REG_F8,\n\tPPC_REG_F9,\n\tPPC_REG_F10,\n\tPPC_REG_F11,\n\tPPC_REG_F12,\n\tPPC_REG_F13,\n\tPPC_REG_F14,\n\tPPC_REG_F15,\n\tPPC_REG_F16,\n\tPPC_REG_F17,\n\tPPC_REG_F18,\n\tPPC_REG_F19,\n\tPPC_REG_F20,\n\tPPC_REG_F21,\n\tPPC_REG_F22,\n\tPPC_REG_F23,\n\tPPC_REG_F24,\n\tPPC_REG_F25,\n\tPPC_REG_F26,\n\tPPC_REG_F27,\n\tPPC_REG_F28,\n\tPPC_REG_F29,\n\tPPC_REG_F30,\n\tPPC_REG_F31,\n\tPPC_REG_LR,\n\tPPC_REG_R0,\n\tPPC_REG_R1,\n\tPPC_REG_R2,\n\tPPC_REG_R3,\n\tPPC_REG_R4,\n\tPPC_REG_R5,\n\tPPC_REG_R6,\n\tPPC_REG_R7,\n\tPPC_REG_R8,\n\tPPC_REG_R9,\n\tPPC_REG_R10,\n\tPPC_REG_R11,\n\tPPC_REG_R12,\n\tPPC_REG_R13,\n\tPPC_REG_R14,\n\tPPC_REG_R15,\n\tPPC_REG_R16,\n\tPPC_REG_R17,\n\tPPC_REG_R18,\n\tPPC_REG_R19,\n\tPPC_REG_R20,\n\tPPC_REG_R21,\n\tPPC_REG_R22,\n\tPPC_REG_R23,\n\tPPC_REG_R24,\n\tPPC_REG_R25,\n\tPPC_REG_R26,\n\tPPC_REG_R27,\n\tPPC_REG_R28,\n\tPPC_REG_R29,\n\tPPC_REG_R30,\n\tPPC_REG_R31,\n\tPPC_REG_V0,\n\tPPC_REG_V1,\n\tPPC_REG_V2,\n\tPPC_REG_V3,\n\tPPC_REG_V4,\n\tPPC_REG_V5,\n\tPPC_REG_V6,\n\tPPC_REG_V7,\n\tPPC_REG_V8,\n\tPPC_REG_V9,\n\tPPC_REG_V10,\n\tPPC_REG_V11,\n\tPPC_REG_V12,\n\tPPC_REG_V13,\n\tPPC_REG_V14,\n\tPPC_REG_V15,\n\tPPC_REG_V16,\n\tPPC_REG_V17,\n\tPPC_REG_V18,\n\tPPC_REG_V19,\n\tPPC_REG_V20,\n\tPPC_REG_V21,\n\tPPC_REG_V22,\n\tPPC_REG_V23,\n\tPPC_REG_V24,\n\tPPC_REG_V25,\n\tPPC_REG_V26,\n\tPPC_REG_V27,\n\tPPC_REG_V28,\n\tPPC_REG_V29,\n\tPPC_REG_V30,\n\tPPC_REG_V31,\n\tPPC_REG_VRSAVE,\n\tPPC_REG_VS0,\n\tPPC_REG_VS1,\n\tPPC_REG_VS2,\n\tPPC_REG_VS3,\n\tPPC_REG_VS4,\n\tPPC_REG_VS5,\n\tPPC_REG_VS6,\n\tPPC_REG_VS7,\n\tPPC_REG_VS8,\n\tPPC_REG_VS9,\n\tPPC_REG_VS10,\n\tPPC_REG_VS11,\n\tPPC_REG_VS12,\n\tPPC_REG_VS13,\n\tPPC_REG_VS14,\n\tPPC_REG_VS15,\n\tPPC_REG_VS16,\n\tPPC_REG_VS17,\n\tPPC_REG_VS18,\n\tPPC_REG_VS19,\n\tPPC_REG_VS20,\n\tPPC_REG_VS21,\n\tPPC_REG_VS22,\n\tPPC_REG_VS23,\n\tPPC_REG_VS24,\n\tPPC_REG_VS25,\n\tPPC_REG_VS26,\n\tPPC_REG_VS27,\n\tPPC_REG_VS28,\n\tPPC_REG_VS29,\n\tPPC_REG_VS30,\n\tPPC_REG_VS31,\n\tPPC_REG_VS32,\n\tPPC_REG_VS33,\n\tPPC_REG_VS34,\n\tPPC_REG_VS35,\n\tPPC_REG_VS36,\n\tPPC_REG_VS37,\n\tPPC_REG_VS38,\n\tPPC_REG_VS39,\n\tPPC_REG_VS40,\n\tPPC_REG_VS41,\n\tPPC_REG_VS42,\n\tPPC_REG_VS43,\n\tPPC_REG_VS44,\n\tPPC_REG_VS45,\n\tPPC_REG_VS46,\n\tPPC_REG_VS47,\n\tPPC_REG_VS48,\n\tPPC_REG_VS49,\n\tPPC_REG_VS50,\n\tPPC_REG_VS51,\n\tPPC_REG_VS52,\n\tPPC_REG_VS53,\n\tPPC_REG_VS54,\n\tPPC_REG_VS55,\n\tPPC_REG_VS56,\n\tPPC_REG_VS57,\n\tPPC_REG_VS58,\n\tPPC_REG_VS59,\n\tPPC_REG_VS60,\n\tPPC_REG_VS61,\n\tPPC_REG_VS62,\n\tPPC_REG_VS63,\n\n\t// extra registers for PPCMapping.c\n\tPPC_REG_RM,\n\tPPC_REG_CTR8,\n\tPPC_REG_LR8,\n\tPPC_REG_CR1EQ,\n\n\tPPC_REG_ENDING,   // <-- mark the end of the list of registers\n} ppc_reg;\n\n//> Operand type for instruction's operands\ntypedef enum ppc_op_type {\n\tPPC_OP_INVALID = 0, // = CS_OP_INVALID (Uninitialized).\n\tPPC_OP_REG, // = CS_OP_REG (Register operand).\n\tPPC_OP_IMM, // = CS_OP_IMM (Immediate operand).\n\tPPC_OP_MEM, // = CS_OP_MEM (Memory operand).\n\tPPC_OP_CRX = 64,\t// Condition Register field\n} ppc_op_type;\n\n// Instruction's operand referring to memory\n// This is associated with PPC_OP_MEM operand type above\ntypedef struct ppc_op_mem {\n\tppc_reg base;\t// base register\n\tint32_t disp;\t// displacement/offset value\n} ppc_op_mem;\n\ntypedef struct ppc_op_crx {\n\tunsigned int scale;\n\tppc_reg reg;\n\tppc_bc cond;\n} ppc_op_crx;\n\n// Instruction operand\ntypedef struct cs_ppc_op {\n\tppc_op_type type;\t// operand type\n\tunion {\n\t\tppc_reg reg;\t// register value for REG operand\n\t\tint32_t imm;\t\t// immediate value for IMM operand\n\t\tppc_op_mem mem;\t\t// base/disp value for MEM operand\n\t\tppc_op_crx crx;\t\t// operand with condition register\n\t};\n} cs_ppc_op;\n\n// Instruction structure\ntypedef struct cs_ppc {\n\t// branch code for branch instructions\n\tppc_bc bc;\n\n\t// branch hint for branch instructions\n\tppc_bh bh;\n\n\t// if update_cr0 = True, then this 'dot' insn updates CR0\n\tbool update_cr0;\n\n\t// Number of operands of this instruction, \n\t// or 0 when instruction has no operand.\n\tuint8_t op_count;\n\tcs_ppc_op operands[8]; // operands for this instruction.\n} cs_ppc;\n\n\n//> PPC instruction\ntypedef enum ppc_insn {\n\tPPC_INS_INVALID = 0,\n\n\tPPC_INS_ADD,\n\tPPC_INS_ADDC,\n\tPPC_INS_ADDE,\n\tPPC_INS_ADDI,\n\tPPC_INS_ADDIC,\n\tPPC_INS_ADDIS,\n\tPPC_INS_ADDME,\n\tPPC_INS_ADDZE,\n\tPPC_INS_AND,\n\tPPC_INS_ANDC,\n\tPPC_INS_ANDIS,\n\tPPC_INS_ANDI,\n\tPPC_INS_B,\n\tPPC_INS_BA,\n\tPPC_INS_BC,\n\tPPC_INS_BCCTR,\n\tPPC_INS_BCCTRL,\n\tPPC_INS_BCL,\n\tPPC_INS_BCLR,\n\tPPC_INS_BCLRL,\n\tPPC_INS_BCTR,\n\tPPC_INS_BCTRL,\n\tPPC_INS_BDNZ,\n\tPPC_INS_BDNZA,\n\tPPC_INS_BDNZL,\n\tPPC_INS_BDNZLA,\n\tPPC_INS_BDNZLR,\n\tPPC_INS_BDNZLRL,\n\tPPC_INS_BDZ,\n\tPPC_INS_BDZA,\n\tPPC_INS_BDZL,\n\tPPC_INS_BDZLA,\n\tPPC_INS_BDZLR,\n\tPPC_INS_BDZLRL,\n\tPPC_INS_BL,\n\tPPC_INS_BLA,\n\tPPC_INS_BLR,\n\tPPC_INS_BLRL,\n\tPPC_INS_BRINC,\n\tPPC_INS_CMPD,\n\tPPC_INS_CMPDI,\n\tPPC_INS_CMPLD,\n\tPPC_INS_CMPLDI,\n\tPPC_INS_CMPLW,\n\tPPC_INS_CMPLWI,\n\tPPC_INS_CMPW,\n\tPPC_INS_CMPWI,\n\tPPC_INS_CNTLZD,\n\tPPC_INS_CNTLZW,\n\tPPC_INS_CREQV,\n\tPPC_INS_CRXOR,\n\tPPC_INS_CRAND,\n\tPPC_INS_CRANDC,\n\tPPC_INS_CRNAND,\n\tPPC_INS_CRNOR,\n\tPPC_INS_CROR,\n\tPPC_INS_CRORC,\n\tPPC_INS_DCBA,\n\tPPC_INS_DCBF,\n\tPPC_INS_DCBI,\n\tPPC_INS_DCBST,\n\tPPC_INS_DCBT,\n\tPPC_INS_DCBTST,\n\tPPC_INS_DCBZ,\n\tPPC_INS_DCBZL,\n\tPPC_INS_DCCCI,\n\tPPC_INS_DIVD,\n\tPPC_INS_DIVDU,\n\tPPC_INS_DIVW,\n\tPPC_INS_DIVWU,\n\tPPC_INS_DSS,\n\tPPC_INS_DSSALL,\n\tPPC_INS_DST,\n\tPPC_INS_DSTST,\n\tPPC_INS_DSTSTT,\n\tPPC_INS_DSTT,\n\tPPC_INS_EIEIO,\n\tPPC_INS_EQV,\n\tPPC_INS_EVABS,\n\tPPC_INS_EVADDIW,\n\tPPC_INS_EVADDSMIAAW,\n\tPPC_INS_EVADDSSIAAW,\n\tPPC_INS_EVADDUMIAAW,\n\tPPC_INS_EVADDUSIAAW,\n\tPPC_INS_EVADDW,\n\tPPC_INS_EVAND,\n\tPPC_INS_EVANDC,\n\tPPC_INS_EVCMPEQ,\n\tPPC_INS_EVCMPGTS,\n\tPPC_INS_EVCMPGTU,\n\tPPC_INS_EVCMPLTS,\n\tPPC_INS_EVCMPLTU,\n\tPPC_INS_EVCNTLSW,\n\tPPC_INS_EVCNTLZW,\n\tPPC_INS_EVDIVWS,\n\tPPC_INS_EVDIVWU,\n\tPPC_INS_EVEQV,\n\tPPC_INS_EVEXTSB,\n\tPPC_INS_EVEXTSH,\n\tPPC_INS_EVLDD,\n\tPPC_INS_EVLDDX,\n\tPPC_INS_EVLDH,\n\tPPC_INS_EVLDHX,\n\tPPC_INS_EVLDW,\n\tPPC_INS_EVLDWX,\n\tPPC_INS_EVLHHESPLAT,\n\tPPC_INS_EVLHHESPLATX,\n\tPPC_INS_EVLHHOSSPLAT,\n\tPPC_INS_EVLHHOSSPLATX,\n\tPPC_INS_EVLHHOUSPLAT,\n\tPPC_INS_EVLHHOUSPLATX,\n\tPPC_INS_EVLWHE,\n\tPPC_INS_EVLWHEX,\n\tPPC_INS_EVLWHOS,\n\tPPC_INS_EVLWHOSX,\n\tPPC_INS_EVLWHOU,\n\tPPC_INS_EVLWHOUX,\n\tPPC_INS_EVLWHSPLAT,\n\tPPC_INS_EVLWHSPLATX,\n\tPPC_INS_EVLWWSPLAT,\n\tPPC_INS_EVLWWSPLATX,\n\tPPC_INS_EVMERGEHI,\n\tPPC_INS_EVMERGEHILO,\n\tPPC_INS_EVMERGELO,\n\tPPC_INS_EVMERGELOHI,\n\tPPC_INS_EVMHEGSMFAA,\n\tPPC_INS_EVMHEGSMFAN,\n\tPPC_INS_EVMHEGSMIAA,\n\tPPC_INS_EVMHEGSMIAN,\n\tPPC_INS_EVMHEGUMIAA,\n\tPPC_INS_EVMHEGUMIAN,\n\tPPC_INS_EVMHESMF,\n\tPPC_INS_EVMHESMFA,\n\tPPC_INS_EVMHESMFAAW,\n\tPPC_INS_EVMHESMFANW,\n\tPPC_INS_EVMHESMI,\n\tPPC_INS_EVMHESMIA,\n\tPPC_INS_EVMHESMIAAW,\n\tPPC_INS_EVMHESMIANW,\n\tPPC_INS_EVMHESSF,\n\tPPC_INS_EVMHESSFA,\n\tPPC_INS_EVMHESSFAAW,\n\tPPC_INS_EVMHESSFANW,\n\tPPC_INS_EVMHESSIAAW,\n\tPPC_INS_EVMHESSIANW,\n\tPPC_INS_EVMHEUMI,\n\tPPC_INS_EVMHEUMIA,\n\tPPC_INS_EVMHEUMIAAW,\n\tPPC_INS_EVMHEUMIANW,\n\tPPC_INS_EVMHEUSIAAW,\n\tPPC_INS_EVMHEUSIANW,\n\tPPC_INS_EVMHOGSMFAA,\n\tPPC_INS_EVMHOGSMFAN,\n\tPPC_INS_EVMHOGSMIAA,\n\tPPC_INS_EVMHOGSMIAN,\n\tPPC_INS_EVMHOGUMIAA,\n\tPPC_INS_EVMHOGUMIAN,\n\tPPC_INS_EVMHOSMF,\n\tPPC_INS_EVMHOSMFA,\n\tPPC_INS_EVMHOSMFAAW,\n\tPPC_INS_EVMHOSMFANW,\n\tPPC_INS_EVMHOSMI,\n\tPPC_INS_EVMHOSMIA,\n\tPPC_INS_EVMHOSMIAAW,\n\tPPC_INS_EVMHOSMIANW,\n\tPPC_INS_EVMHOSSF,\n\tPPC_INS_EVMHOSSFA,\n\tPPC_INS_EVMHOSSFAAW,\n\tPPC_INS_EVMHOSSFANW,\n\tPPC_INS_EVMHOSSIAAW,\n\tPPC_INS_EVMHOSSIANW,\n\tPPC_INS_EVMHOUMI,\n\tPPC_INS_EVMHOUMIA,\n\tPPC_INS_EVMHOUMIAAW,\n\tPPC_INS_EVMHOUMIANW,\n\tPPC_INS_EVMHOUSIAAW,\n\tPPC_INS_EVMHOUSIANW,\n\tPPC_INS_EVMRA,\n\tPPC_INS_EVMWHSMF,\n\tPPC_INS_EVMWHSMFA,\n\tPPC_INS_EVMWHSMI,\n\tPPC_INS_EVMWHSMIA,\n\tPPC_INS_EVMWHSSF,\n\tPPC_INS_EVMWHSSFA,\n\tPPC_INS_EVMWHUMI,\n\tPPC_INS_EVMWHUMIA,\n\tPPC_INS_EVMWLSMIAAW,\n\tPPC_INS_EVMWLSMIANW,\n\tPPC_INS_EVMWLSSIAAW,\n\tPPC_INS_EVMWLSSIANW,\n\tPPC_INS_EVMWLUMI,\n\tPPC_INS_EVMWLUMIA,\n\tPPC_INS_EVMWLUMIAAW,\n\tPPC_INS_EVMWLUMIANW,\n\tPPC_INS_EVMWLUSIAAW,\n\tPPC_INS_EVMWLUSIANW,\n\tPPC_INS_EVMWSMF,\n\tPPC_INS_EVMWSMFA,\n\tPPC_INS_EVMWSMFAA,\n\tPPC_INS_EVMWSMFAN,\n\tPPC_INS_EVMWSMI,\n\tPPC_INS_EVMWSMIA,\n\tPPC_INS_EVMWSMIAA,\n\tPPC_INS_EVMWSMIAN,\n\tPPC_INS_EVMWSSF,\n\tPPC_INS_EVMWSSFA,\n\tPPC_INS_EVMWSSFAA,\n\tPPC_INS_EVMWSSFAN,\n\tPPC_INS_EVMWUMI,\n\tPPC_INS_EVMWUMIA,\n\tPPC_INS_EVMWUMIAA,\n\tPPC_INS_EVMWUMIAN,\n\tPPC_INS_EVNAND,\n\tPPC_INS_EVNEG,\n\tPPC_INS_EVNOR,\n\tPPC_INS_EVOR,\n\tPPC_INS_EVORC,\n\tPPC_INS_EVRLW,\n\tPPC_INS_EVRLWI,\n\tPPC_INS_EVRNDW,\n\tPPC_INS_EVSLW,\n\tPPC_INS_EVSLWI,\n\tPPC_INS_EVSPLATFI,\n\tPPC_INS_EVSPLATI,\n\tPPC_INS_EVSRWIS,\n\tPPC_INS_EVSRWIU,\n\tPPC_INS_EVSRWS,\n\tPPC_INS_EVSRWU,\n\tPPC_INS_EVSTDD,\n\tPPC_INS_EVSTDDX,\n\tPPC_INS_EVSTDH,\n\tPPC_INS_EVSTDHX,\n\tPPC_INS_EVSTDW,\n\tPPC_INS_EVSTDWX,\n\tPPC_INS_EVSTWHE,\n\tPPC_INS_EVSTWHEX,\n\tPPC_INS_EVSTWHO,\n\tPPC_INS_EVSTWHOX,\n\tPPC_INS_EVSTWWE,\n\tPPC_INS_EVSTWWEX,\n\tPPC_INS_EVSTWWO,\n\tPPC_INS_EVSTWWOX,\n\tPPC_INS_EVSUBFSMIAAW,\n\tPPC_INS_EVSUBFSSIAAW,\n\tPPC_INS_EVSUBFUMIAAW,\n\tPPC_INS_EVSUBFUSIAAW,\n\tPPC_INS_EVSUBFW,\n\tPPC_INS_EVSUBIFW,\n\tPPC_INS_EVXOR,\n\tPPC_INS_EXTSB,\n\tPPC_INS_EXTSH,\n\tPPC_INS_EXTSW,\n\tPPC_INS_FABS,\n\tPPC_INS_FADD,\n\tPPC_INS_FADDS,\n\tPPC_INS_FCFID,\n\tPPC_INS_FCFIDS,\n\tPPC_INS_FCFIDU,\n\tPPC_INS_FCFIDUS,\n\tPPC_INS_FCMPU,\n\tPPC_INS_FCPSGN,\n\tPPC_INS_FCTID,\n\tPPC_INS_FCTIDUZ,\n\tPPC_INS_FCTIDZ,\n\tPPC_INS_FCTIW,\n\tPPC_INS_FCTIWUZ,\n\tPPC_INS_FCTIWZ,\n\tPPC_INS_FDIV,\n\tPPC_INS_FDIVS,\n\tPPC_INS_FMADD,\n\tPPC_INS_FMADDS,\n\tPPC_INS_FMR,\n\tPPC_INS_FMSUB,\n\tPPC_INS_FMSUBS,\n\tPPC_INS_FMUL,\n\tPPC_INS_FMULS,\n\tPPC_INS_FNABS,\n\tPPC_INS_FNEG,\n\tPPC_INS_FNMADD,\n\tPPC_INS_FNMADDS,\n\tPPC_INS_FNMSUB,\n\tPPC_INS_FNMSUBS,\n\tPPC_INS_FRE,\n\tPPC_INS_FRES,\n\tPPC_INS_FRIM,\n\tPPC_INS_FRIN,\n\tPPC_INS_FRIP,\n\tPPC_INS_FRIZ,\n\tPPC_INS_FRSP,\n\tPPC_INS_FRSQRTE,\n\tPPC_INS_FRSQRTES,\n\tPPC_INS_FSEL,\n\tPPC_INS_FSQRT,\n\tPPC_INS_FSQRTS,\n\tPPC_INS_FSUB,\n\tPPC_INS_FSUBS,\n\tPPC_INS_ICBI,\n\tPPC_INS_ICCCI,\n\tPPC_INS_ISEL,\n\tPPC_INS_ISYNC,\n\tPPC_INS_LA,\n\tPPC_INS_LBZ,\n\tPPC_INS_LBZU,\n\tPPC_INS_LBZUX,\n\tPPC_INS_LBZX,\n\tPPC_INS_LD,\n\tPPC_INS_LDARX,\n\tPPC_INS_LDBRX,\n\tPPC_INS_LDU,\n\tPPC_INS_LDUX,\n\tPPC_INS_LDX,\n\tPPC_INS_LFD,\n\tPPC_INS_LFDU,\n\tPPC_INS_LFDUX,\n\tPPC_INS_LFDX,\n\tPPC_INS_LFIWAX,\n\tPPC_INS_LFIWZX,\n\tPPC_INS_LFS,\n\tPPC_INS_LFSU,\n\tPPC_INS_LFSUX,\n\tPPC_INS_LFSX,\n\tPPC_INS_LHA,\n\tPPC_INS_LHAU,\n\tPPC_INS_LHAUX,\n\tPPC_INS_LHAX,\n\tPPC_INS_LHBRX,\n\tPPC_INS_LHZ,\n\tPPC_INS_LHZU,\n\tPPC_INS_LHZUX,\n\tPPC_INS_LHZX,\n\tPPC_INS_LI,\n\tPPC_INS_LIS,\n\tPPC_INS_LMW,\n\tPPC_INS_LSWI,\n\tPPC_INS_LVEBX,\n\tPPC_INS_LVEHX,\n\tPPC_INS_LVEWX,\n\tPPC_INS_LVSL,\n\tPPC_INS_LVSR,\n\tPPC_INS_LVX,\n\tPPC_INS_LVXL,\n\tPPC_INS_LWA,\n\tPPC_INS_LWARX,\n\tPPC_INS_LWAUX,\n\tPPC_INS_LWAX,\n\tPPC_INS_LWBRX,\n\tPPC_INS_LWZ,\n\tPPC_INS_LWZU,\n\tPPC_INS_LWZUX,\n\tPPC_INS_LWZX,\n\tPPC_INS_LXSDX,\n\tPPC_INS_LXVD2X,\n\tPPC_INS_LXVDSX,\n\tPPC_INS_LXVW4X,\n\tPPC_INS_MBAR,\n\tPPC_INS_MCRF,\n\tPPC_INS_MFCR,\n\tPPC_INS_MFCTR,\n\tPPC_INS_MFDCR,\n\tPPC_INS_MFFS,\n\tPPC_INS_MFLR,\n\tPPC_INS_MFMSR,\n\tPPC_INS_MFOCRF,\n\tPPC_INS_MFSPR,\n\tPPC_INS_MFSR,\n\tPPC_INS_MFSRIN,\n\tPPC_INS_MFTB,\n\tPPC_INS_MFVSCR,\n\tPPC_INS_MSYNC,\n\tPPC_INS_MTCRF,\n\tPPC_INS_MTCTR,\n\tPPC_INS_MTDCR,\n\tPPC_INS_MTFSB0,\n\tPPC_INS_MTFSB1,\n\tPPC_INS_MTFSF,\n\tPPC_INS_MTLR,\n\tPPC_INS_MTMSR,\n\tPPC_INS_MTMSRD,\n\tPPC_INS_MTOCRF,\n\tPPC_INS_MTSPR,\n\tPPC_INS_MTSR,\n\tPPC_INS_MTSRIN,\n\tPPC_INS_MTVSCR,\n\tPPC_INS_MULHD,\n\tPPC_INS_MULHDU,\n\tPPC_INS_MULHW,\n\tPPC_INS_MULHWU,\n\tPPC_INS_MULLD,\n\tPPC_INS_MULLI,\n\tPPC_INS_MULLW,\n\tPPC_INS_NAND,\n\tPPC_INS_NEG,\n\tPPC_INS_NOP,\n\tPPC_INS_ORI,\n\tPPC_INS_NOR,\n\tPPC_INS_OR,\n\tPPC_INS_ORC,\n\tPPC_INS_ORIS,\n\tPPC_INS_POPCNTD,\n\tPPC_INS_POPCNTW,\n\tPPC_INS_RFCI,\n\tPPC_INS_RFDI,\n\tPPC_INS_RFI,\n\tPPC_INS_RFID,\n\tPPC_INS_RFMCI,\n\tPPC_INS_RLDCL,\n\tPPC_INS_RLDCR,\n\tPPC_INS_RLDIC,\n\tPPC_INS_RLDICL,\n\tPPC_INS_RLDICR,\n\tPPC_INS_RLDIMI,\n\tPPC_INS_RLWIMI,\n\tPPC_INS_RLWINM,\n\tPPC_INS_RLWNM,\n\tPPC_INS_SC,\n\tPPC_INS_SLBIA,\n\tPPC_INS_SLBIE,\n\tPPC_INS_SLBMFEE,\n\tPPC_INS_SLBMTE,\n\tPPC_INS_SLD,\n\tPPC_INS_SLW,\n\tPPC_INS_SRAD,\n\tPPC_INS_SRADI,\n\tPPC_INS_SRAW,\n\tPPC_INS_SRAWI,\n\tPPC_INS_SRD,\n\tPPC_INS_SRW,\n\tPPC_INS_STB,\n\tPPC_INS_STBU,\n\tPPC_INS_STBUX,\n\tPPC_INS_STBX,\n\tPPC_INS_STD,\n\tPPC_INS_STDBRX,\n\tPPC_INS_STDCX,\n\tPPC_INS_STDU,\n\tPPC_INS_STDUX,\n\tPPC_INS_STDX,\n\tPPC_INS_STFD,\n\tPPC_INS_STFDU,\n\tPPC_INS_STFDUX,\n\tPPC_INS_STFDX,\n\tPPC_INS_STFIWX,\n\tPPC_INS_STFS,\n\tPPC_INS_STFSU,\n\tPPC_INS_STFSUX,\n\tPPC_INS_STFSX,\n\tPPC_INS_STH,\n\tPPC_INS_STHBRX,\n\tPPC_INS_STHU,\n\tPPC_INS_STHUX,\n\tPPC_INS_STHX,\n\tPPC_INS_STMW,\n\tPPC_INS_STSWI,\n\tPPC_INS_STVEBX,\n\tPPC_INS_STVEHX,\n\tPPC_INS_STVEWX,\n\tPPC_INS_STVX,\n\tPPC_INS_STVXL,\n\tPPC_INS_STW,\n\tPPC_INS_STWBRX,\n\tPPC_INS_STWCX,\n\tPPC_INS_STWU,\n\tPPC_INS_STWUX,\n\tPPC_INS_STWX,\n\tPPC_INS_STXSDX,\n\tPPC_INS_STXVD2X,\n\tPPC_INS_STXVW4X,\n\tPPC_INS_SUBF,\n\tPPC_INS_SUBFC,\n\tPPC_INS_SUBFE,\n\tPPC_INS_SUBFIC,\n\tPPC_INS_SUBFME,\n\tPPC_INS_SUBFZE,\n\tPPC_INS_SYNC,\n\tPPC_INS_TD,\n\tPPC_INS_TDI,\n\tPPC_INS_TLBIA,\n\tPPC_INS_TLBIE,\n\tPPC_INS_TLBIEL,\n\tPPC_INS_TLBIVAX,\n\tPPC_INS_TLBLD,\n\tPPC_INS_TLBLI,\n\tPPC_INS_TLBRE,\n\tPPC_INS_TLBSX,\n\tPPC_INS_TLBSYNC,\n\tPPC_INS_TLBWE,\n\tPPC_INS_TRAP,\n\tPPC_INS_TW,\n\tPPC_INS_TWI,\n\tPPC_INS_VADDCUW,\n\tPPC_INS_VADDFP,\n\tPPC_INS_VADDSBS,\n\tPPC_INS_VADDSHS,\n\tPPC_INS_VADDSWS,\n\tPPC_INS_VADDUBM,\n\tPPC_INS_VADDUBS,\n\tPPC_INS_VADDUHM,\n\tPPC_INS_VADDUHS,\n\tPPC_INS_VADDUWM,\n\tPPC_INS_VADDUWS,\n\tPPC_INS_VAND,\n\tPPC_INS_VANDC,\n\tPPC_INS_VAVGSB,\n\tPPC_INS_VAVGSH,\n\tPPC_INS_VAVGSW,\n\tPPC_INS_VAVGUB,\n\tPPC_INS_VAVGUH,\n\tPPC_INS_VAVGUW,\n\tPPC_INS_VCFSX,\n\tPPC_INS_VCFUX,\n\tPPC_INS_VCMPBFP,\n\tPPC_INS_VCMPEQFP,\n\tPPC_INS_VCMPEQUB,\n\tPPC_INS_VCMPEQUH,\n\tPPC_INS_VCMPEQUW,\n\tPPC_INS_VCMPGEFP,\n\tPPC_INS_VCMPGTFP,\n\tPPC_INS_VCMPGTSB,\n\tPPC_INS_VCMPGTSH,\n\tPPC_INS_VCMPGTSW,\n\tPPC_INS_VCMPGTUB,\n\tPPC_INS_VCMPGTUH,\n\tPPC_INS_VCMPGTUW,\n\tPPC_INS_VCTSXS,\n\tPPC_INS_VCTUXS,\n\tPPC_INS_VEXPTEFP,\n\tPPC_INS_VLOGEFP,\n\tPPC_INS_VMADDFP,\n\tPPC_INS_VMAXFP,\n\tPPC_INS_VMAXSB,\n\tPPC_INS_VMAXSH,\n\tPPC_INS_VMAXSW,\n\tPPC_INS_VMAXUB,\n\tPPC_INS_VMAXUH,\n\tPPC_INS_VMAXUW,\n\tPPC_INS_VMHADDSHS,\n\tPPC_INS_VMHRADDSHS,\n\tPPC_INS_VMINFP,\n\tPPC_INS_VMINSB,\n\tPPC_INS_VMINSH,\n\tPPC_INS_VMINSW,\n\tPPC_INS_VMINUB,\n\tPPC_INS_VMINUH,\n\tPPC_INS_VMINUW,\n\tPPC_INS_VMLADDUHM,\n\tPPC_INS_VMRGHB,\n\tPPC_INS_VMRGHH,\n\tPPC_INS_VMRGHW,\n\tPPC_INS_VMRGLB,\n\tPPC_INS_VMRGLH,\n\tPPC_INS_VMRGLW,\n\tPPC_INS_VMSUMMBM,\n\tPPC_INS_VMSUMSHM,\n\tPPC_INS_VMSUMSHS,\n\tPPC_INS_VMSUMUBM,\n\tPPC_INS_VMSUMUHM,\n\tPPC_INS_VMSUMUHS,\n\tPPC_INS_VMULESB,\n\tPPC_INS_VMULESH,\n\tPPC_INS_VMULEUB,\n\tPPC_INS_VMULEUH,\n\tPPC_INS_VMULOSB,\n\tPPC_INS_VMULOSH,\n\tPPC_INS_VMULOUB,\n\tPPC_INS_VMULOUH,\n\tPPC_INS_VNMSUBFP,\n\tPPC_INS_VNOR,\n\tPPC_INS_VOR,\n\tPPC_INS_VPERM,\n\tPPC_INS_VPKPX,\n\tPPC_INS_VPKSHSS,\n\tPPC_INS_VPKSHUS,\n\tPPC_INS_VPKSWSS,\n\tPPC_INS_VPKSWUS,\n\tPPC_INS_VPKUHUM,\n\tPPC_INS_VPKUHUS,\n\tPPC_INS_VPKUWUM,\n\tPPC_INS_VPKUWUS,\n\tPPC_INS_VREFP,\n\tPPC_INS_VRFIM,\n\tPPC_INS_VRFIN,\n\tPPC_INS_VRFIP,\n\tPPC_INS_VRFIZ,\n\tPPC_INS_VRLB,\n\tPPC_INS_VRLH,\n\tPPC_INS_VRLW,\n\tPPC_INS_VRSQRTEFP,\n\tPPC_INS_VSEL,\n\tPPC_INS_VSL,\n\tPPC_INS_VSLB,\n\tPPC_INS_VSLDOI,\n\tPPC_INS_VSLH,\n\tPPC_INS_VSLO,\n\tPPC_INS_VSLW,\n\tPPC_INS_VSPLTB,\n\tPPC_INS_VSPLTH,\n\tPPC_INS_VSPLTISB,\n\tPPC_INS_VSPLTISH,\n\tPPC_INS_VSPLTISW,\n\tPPC_INS_VSPLTW,\n\tPPC_INS_VSR,\n\tPPC_INS_VSRAB,\n\tPPC_INS_VSRAH,\n\tPPC_INS_VSRAW,\n\tPPC_INS_VSRB,\n\tPPC_INS_VSRH,\n\tPPC_INS_VSRO,\n\tPPC_INS_VSRW,\n\tPPC_INS_VSUBCUW,\n\tPPC_INS_VSUBFP,\n\tPPC_INS_VSUBSBS,\n\tPPC_INS_VSUBSHS,\n\tPPC_INS_VSUBSWS,\n\tPPC_INS_VSUBUBM,\n\tPPC_INS_VSUBUBS,\n\tPPC_INS_VSUBUHM,\n\tPPC_INS_VSUBUHS,\n\tPPC_INS_VSUBUWM,\n\tPPC_INS_VSUBUWS,\n\tPPC_INS_VSUM2SWS,\n\tPPC_INS_VSUM4SBS,\n\tPPC_INS_VSUM4SHS,\n\tPPC_INS_VSUM4UBS,\n\tPPC_INS_VSUMSWS,\n\tPPC_INS_VUPKHPX,\n\tPPC_INS_VUPKHSB,\n\tPPC_INS_VUPKHSH,\n\tPPC_INS_VUPKLPX,\n\tPPC_INS_VUPKLSB,\n\tPPC_INS_VUPKLSH,\n\tPPC_INS_VXOR,\n\tPPC_INS_WAIT,\n\tPPC_INS_WRTEE,\n\tPPC_INS_WRTEEI,\n\tPPC_INS_XOR,\n\tPPC_INS_XORI,\n\tPPC_INS_XORIS,\n\tPPC_INS_XSABSDP,\n\tPPC_INS_XSADDDP,\n\tPPC_INS_XSCMPODP,\n\tPPC_INS_XSCMPUDP,\n\tPPC_INS_XSCPSGNDP,\n\tPPC_INS_XSCVDPSP,\n\tPPC_INS_XSCVDPSXDS,\n\tPPC_INS_XSCVDPSXWS,\n\tPPC_INS_XSCVDPUXDS,\n\tPPC_INS_XSCVDPUXWS,\n\tPPC_INS_XSCVSPDP,\n\tPPC_INS_XSCVSXDDP,\n\tPPC_INS_XSCVUXDDP,\n\tPPC_INS_XSDIVDP,\n\tPPC_INS_XSMADDADP,\n\tPPC_INS_XSMADDMDP,\n\tPPC_INS_XSMAXDP,\n\tPPC_INS_XSMINDP,\n\tPPC_INS_XSMSUBADP,\n\tPPC_INS_XSMSUBMDP,\n\tPPC_INS_XSMULDP,\n\tPPC_INS_XSNABSDP,\n\tPPC_INS_XSNEGDP,\n\tPPC_INS_XSNMADDADP,\n\tPPC_INS_XSNMADDMDP,\n\tPPC_INS_XSNMSUBADP,\n\tPPC_INS_XSNMSUBMDP,\n\tPPC_INS_XSRDPI,\n\tPPC_INS_XSRDPIC,\n\tPPC_INS_XSRDPIM,\n\tPPC_INS_XSRDPIP,\n\tPPC_INS_XSRDPIZ,\n\tPPC_INS_XSREDP,\n\tPPC_INS_XSRSQRTEDP,\n\tPPC_INS_XSSQRTDP,\n\tPPC_INS_XSSUBDP,\n\tPPC_INS_XSTDIVDP,\n\tPPC_INS_XSTSQRTDP,\n\tPPC_INS_XVABSDP,\n\tPPC_INS_XVABSSP,\n\tPPC_INS_XVADDDP,\n\tPPC_INS_XVADDSP,\n\tPPC_INS_XVCMPEQDP,\n\tPPC_INS_XVCMPEQSP,\n\tPPC_INS_XVCMPGEDP,\n\tPPC_INS_XVCMPGESP,\n\tPPC_INS_XVCMPGTDP,\n\tPPC_INS_XVCMPGTSP,\n\tPPC_INS_XVCPSGNDP,\n\tPPC_INS_XVCPSGNSP,\n\tPPC_INS_XVCVDPSP,\n\tPPC_INS_XVCVDPSXDS,\n\tPPC_INS_XVCVDPSXWS,\n\tPPC_INS_XVCVDPUXDS,\n\tPPC_INS_XVCVDPUXWS,\n\tPPC_INS_XVCVSPDP,\n\tPPC_INS_XVCVSPSXDS,\n\tPPC_INS_XVCVSPSXWS,\n\tPPC_INS_XVCVSPUXDS,\n\tPPC_INS_XVCVSPUXWS,\n\tPPC_INS_XVCVSXDDP,\n\tPPC_INS_XVCVSXDSP,\n\tPPC_INS_XVCVSXWDP,\n\tPPC_INS_XVCVSXWSP,\n\tPPC_INS_XVCVUXDDP,\n\tPPC_INS_XVCVUXDSP,\n\tPPC_INS_XVCVUXWDP,\n\tPPC_INS_XVCVUXWSP,\n\tPPC_INS_XVDIVDP,\n\tPPC_INS_XVDIVSP,\n\tPPC_INS_XVMADDADP,\n\tPPC_INS_XVMADDASP,\n\tPPC_INS_XVMADDMDP,\n\tPPC_INS_XVMADDMSP,\n\tPPC_INS_XVMAXDP,\n\tPPC_INS_XVMAXSP,\n\tPPC_INS_XVMINDP,\n\tPPC_INS_XVMINSP,\n\tPPC_INS_XVMSUBADP,\n\tPPC_INS_XVMSUBASP,\n\tPPC_INS_XVMSUBMDP,\n\tPPC_INS_XVMSUBMSP,\n\tPPC_INS_XVMULDP,\n\tPPC_INS_XVMULSP,\n\tPPC_INS_XVNABSDP,\n\tPPC_INS_XVNABSSP,\n\tPPC_INS_XVNEGDP,\n\tPPC_INS_XVNEGSP,\n\tPPC_INS_XVNMADDADP,\n\tPPC_INS_XVNMADDASP,\n\tPPC_INS_XVNMADDMDP,\n\tPPC_INS_XVNMADDMSP,\n\tPPC_INS_XVNMSUBADP,\n\tPPC_INS_XVNMSUBASP,\n\tPPC_INS_XVNMSUBMDP,\n\tPPC_INS_XVNMSUBMSP,\n\tPPC_INS_XVRDPI,\n\tPPC_INS_XVRDPIC,\n\tPPC_INS_XVRDPIM,\n\tPPC_INS_XVRDPIP,\n\tPPC_INS_XVRDPIZ,\n\tPPC_INS_XVREDP,\n\tPPC_INS_XVRESP,\n\tPPC_INS_XVRSPI,\n\tPPC_INS_XVRSPIC,\n\tPPC_INS_XVRSPIM,\n\tPPC_INS_XVRSPIP,\n\tPPC_INS_XVRSPIZ,\n\tPPC_INS_XVRSQRTEDP,\n\tPPC_INS_XVRSQRTESP,\n\tPPC_INS_XVSQRTDP,\n\tPPC_INS_XVSQRTSP,\n\tPPC_INS_XVSUBDP,\n\tPPC_INS_XVSUBSP,\n\tPPC_INS_XVTDIVDP,\n\tPPC_INS_XVTDIVSP,\n\tPPC_INS_XVTSQRTDP,\n\tPPC_INS_XVTSQRTSP,\n\tPPC_INS_XXLAND,\n\tPPC_INS_XXLANDC,\n\tPPC_INS_XXLNOR,\n\tPPC_INS_XXLOR,\n\tPPC_INS_XXLXOR,\n\tPPC_INS_XXMRGHW,\n\tPPC_INS_XXMRGLW,\n\tPPC_INS_XXPERMDI,\n\tPPC_INS_XXSEL,\n\tPPC_INS_XXSLDWI,\n\tPPC_INS_XXSPLTW,\n\tPPC_INS_BCA,\n\tPPC_INS_BCLA,\n\n\t// extra & alias instructions\n\tPPC_INS_SLWI,\n\tPPC_INS_SRWI,\n\tPPC_INS_SLDI,\n\n\tPPC_INS_BTA,\n\tPPC_INS_CRSET,\n\tPPC_INS_CRNOT,\n\tPPC_INS_CRMOVE,\n\tPPC_INS_CRCLR,\n\tPPC_INS_MFBR0,\n\tPPC_INS_MFBR1,\n\tPPC_INS_MFBR2,\n\tPPC_INS_MFBR3,\n\tPPC_INS_MFBR4,\n\tPPC_INS_MFBR5,\n\tPPC_INS_MFBR6,\n\tPPC_INS_MFBR7,\n\tPPC_INS_MFXER,\n\tPPC_INS_MFRTCU,\n\tPPC_INS_MFRTCL,\n\tPPC_INS_MFDSCR,\n\tPPC_INS_MFDSISR,\n\tPPC_INS_MFDAR,\n\tPPC_INS_MFSRR2,\n\tPPC_INS_MFSRR3,\n\tPPC_INS_MFCFAR,\n\tPPC_INS_MFAMR,\n\tPPC_INS_MFPID,\n\tPPC_INS_MFTBLO,\n\tPPC_INS_MFTBHI,\n\tPPC_INS_MFDBATU,\n\tPPC_INS_MFDBATL,\n\tPPC_INS_MFIBATU,\n\tPPC_INS_MFIBATL,\n\tPPC_INS_MFDCCR,\n\tPPC_INS_MFICCR,\n\tPPC_INS_MFDEAR,\n\tPPC_INS_MFESR,\n\tPPC_INS_MFSPEFSCR,\n\tPPC_INS_MFTCR,\n\tPPC_INS_MFASR,\n\tPPC_INS_MFPVR,\n\tPPC_INS_MFTBU,\n\tPPC_INS_MTCR,\n\tPPC_INS_MTBR0,\n\tPPC_INS_MTBR1,\n\tPPC_INS_MTBR2,\n\tPPC_INS_MTBR3,\n\tPPC_INS_MTBR4,\n\tPPC_INS_MTBR5,\n\tPPC_INS_MTBR6,\n\tPPC_INS_MTBR7,\n\tPPC_INS_MTXER,\n\tPPC_INS_MTDSCR,\n\tPPC_INS_MTDSISR,\n\tPPC_INS_MTDAR,\n\tPPC_INS_MTSRR2,\n\tPPC_INS_MTSRR3,\n\tPPC_INS_MTCFAR,\n\tPPC_INS_MTAMR,\n\tPPC_INS_MTPID,\n\tPPC_INS_MTTBL,\n\tPPC_INS_MTTBU,\n\tPPC_INS_MTTBLO,\n\tPPC_INS_MTTBHI,\n\tPPC_INS_MTDBATU,\n\tPPC_INS_MTDBATL,\n\tPPC_INS_MTIBATU,\n\tPPC_INS_MTIBATL,\n\tPPC_INS_MTDCCR,\n\tPPC_INS_MTICCR,\n\tPPC_INS_MTDEAR,\n\tPPC_INS_MTESR,\n\tPPC_INS_MTSPEFSCR,\n\tPPC_INS_MTTCR,\n\tPPC_INS_NOT,\n\tPPC_INS_MR,\n\tPPC_INS_ROTLD,\n\tPPC_INS_ROTLDI,\n\tPPC_INS_CLRLDI,\n\tPPC_INS_ROTLWI,\n\tPPC_INS_CLRLWI,\n\tPPC_INS_ROTLW,\n\tPPC_INS_SUB,\n\tPPC_INS_SUBC,\n\tPPC_INS_LWSYNC,\n\tPPC_INS_PTESYNC,\n\tPPC_INS_TDLT,\n\tPPC_INS_TDEQ,\n\tPPC_INS_TDGT,\n\tPPC_INS_TDNE,\n\tPPC_INS_TDLLT,\n\tPPC_INS_TDLGT,\n\tPPC_INS_TDU,\n\tPPC_INS_TDLTI,\n\tPPC_INS_TDEQI,\n\tPPC_INS_TDGTI,\n\tPPC_INS_TDNEI,\n\tPPC_INS_TDLLTI,\n\tPPC_INS_TDLGTI,\n\tPPC_INS_TDUI,\n\tPPC_INS_TLBREHI,\n\tPPC_INS_TLBRELO,\n\tPPC_INS_TLBWEHI,\n\tPPC_INS_TLBWELO,\n\tPPC_INS_TWLT,\n\tPPC_INS_TWEQ,\n\tPPC_INS_TWGT,\n\tPPC_INS_TWNE,\n\tPPC_INS_TWLLT,\n\tPPC_INS_TWLGT,\n\tPPC_INS_TWU,\n\tPPC_INS_TWLTI,\n\tPPC_INS_TWEQI,\n\tPPC_INS_TWGTI,\n\tPPC_INS_TWNEI,\n\tPPC_INS_TWLLTI,\n\tPPC_INS_TWLGTI,\n\tPPC_INS_TWUI,\n\tPPC_INS_WAITRSV,\n\tPPC_INS_WAITIMPL,\n\tPPC_INS_XNOP,\n\tPPC_INS_XVMOVDP,\n\tPPC_INS_XVMOVSP,\n\tPPC_INS_XXSPLTD,\n\tPPC_INS_XXMRGHD,\n\tPPC_INS_XXMRGLD,\n\tPPC_INS_XXSWAPD,\n\tPPC_INS_BT,\n\tPPC_INS_BF,\n\tPPC_INS_BDNZT,\n\tPPC_INS_BDNZF,\n\tPPC_INS_BDZF,\n\tPPC_INS_BDZT,\n\tPPC_INS_BFA,\n\tPPC_INS_BDNZTA,\n\tPPC_INS_BDNZFA,\n\tPPC_INS_BDZTA,\n\tPPC_INS_BDZFA,\n\tPPC_INS_BTCTR,\n\tPPC_INS_BFCTR,\n\tPPC_INS_BTCTRL,\n\tPPC_INS_BFCTRL,\n\tPPC_INS_BTL,\n\tPPC_INS_BFL,\n\tPPC_INS_BDNZTL,\n\tPPC_INS_BDNZFL,\n\tPPC_INS_BDZTL,\n\tPPC_INS_BDZFL,\n\tPPC_INS_BTLA,\n\tPPC_INS_BFLA,\n\tPPC_INS_BDNZTLA,\n\tPPC_INS_BDNZFLA,\n\tPPC_INS_BDZTLA,\n\tPPC_INS_BDZFLA,\n\tPPC_INS_BTLR,\n\tPPC_INS_BFLR,\n\tPPC_INS_BDNZTLR,\n\tPPC_INS_BDZTLR,\n\tPPC_INS_BDZFLR,\n\tPPC_INS_BTLRL,\n\tPPC_INS_BFLRL,\n\tPPC_INS_BDNZTLRL,\n\tPPC_INS_BDNZFLRL,\n\tPPC_INS_BDZTLRL,\n\tPPC_INS_BDZFLRL,\n\n\tPPC_INS_ENDING,   // <-- mark the end of the list of instructions\n} ppc_insn;\n\n//> Group of PPC instructions\ntypedef enum ppc_insn_group {\n\tPPC_GRP_INVALID = 0, // = CS_GRP_INVALID\n\n\t//> Generic groups\n\t// all jump instructions (conditional+direct+indirect jumps)\n\tPPC_GRP_JUMP,\t// = CS_GRP_JUMP\n\n\t//> Architecture-specific groups\n\tPPC_GRP_ALTIVEC = 128,\n\tPPC_GRP_MODE32,\n\tPPC_GRP_MODE64,\n\tPPC_GRP_BOOKE,\n\tPPC_GRP_NOTBOOKE,\n\tPPC_GRP_SPE,\n\tPPC_GRP_VSX,\n\tPPC_GRP_E500,\n\tPPC_GRP_PPC4XX,\n\tPPC_GRP_PPC6XX,\n\n\tPPC_GRP_ENDING,   // <-- mark the end of the list of groups\n} ppc_insn_group;\n\n#ifdef __cplusplus\n}\n#endif\n\n#endif\n"
  },
  {
    "path": "EFI/CLOVER/kexts/Other/Lilu_v1.3.7.kext/Contents/Resources/Headers/capstone/sparc.h",
    "content": "#ifndef CAPSTONE_SPARC_H\n#define CAPSTONE_SPARC_H\n\n/* Capstone Disassembly Engine */\n/* By Nguyen Anh Quynh <aquynh@gmail.com>, 2014 */\n\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n#if !defined(_MSC_VER) || !defined(_KERNEL_MODE)\n#include <stdint.h>\n#endif\n\n#include \"platform.h\"\n\n// GCC SPARC toolchain has a default macro called \"sparc\" which breaks\n// compilation\n#undef sparc\n\n#ifdef _MSC_VER\n#pragma warning(disable:4201)\n#endif\n\n//> Enums corresponding to Sparc condition codes, both icc's and fcc's.\ntypedef enum sparc_cc {\n\tSPARC_CC_INVALID = 0,\t// invalid CC (default)\n\t//> Integer condition codes\n\tSPARC_CC_ICC_A   =  8+256,  // Always\n\tSPARC_CC_ICC_N   =  0+256,  // Never\n\tSPARC_CC_ICC_NE  =  9+256,  // Not Equal\n\tSPARC_CC_ICC_E   =  1+256,  // Equal\n\tSPARC_CC_ICC_G   = 10+256,  // Greater\n\tSPARC_CC_ICC_LE  =  2+256,  // Less or Equal\n\tSPARC_CC_ICC_GE  = 11+256,  // Greater or Equal\n\tSPARC_CC_ICC_L   =  3+256,  // Less\n\tSPARC_CC_ICC_GU  = 12+256,  // Greater Unsigned\n\tSPARC_CC_ICC_LEU =  4+256,  // Less or Equal Unsigned\n\tSPARC_CC_ICC_CC  = 13+256,  // Carry Clear/Great or Equal Unsigned\n\tSPARC_CC_ICC_CS  =  5+256,  // Carry Set/Less Unsigned\n\tSPARC_CC_ICC_POS = 14+256,  // Positive\n\tSPARC_CC_ICC_NEG =  6+256,  // Negative\n\tSPARC_CC_ICC_VC  = 15+256,  // Overflow Clear\n\tSPARC_CC_ICC_VS  =  7+256,  // Overflow Set\n\n\t//> Floating condition codes\n\tSPARC_CC_FCC_A   =  8+16+256,  // Always\n\tSPARC_CC_FCC_N   =  0+16+256,  // Never\n\tSPARC_CC_FCC_U   =  7+16+256,  // Unordered\n\tSPARC_CC_FCC_G   =  6+16+256,  // Greater\n\tSPARC_CC_FCC_UG  =  5+16+256,  // Unordered or Greater\n\tSPARC_CC_FCC_L   =  4+16+256,  // Less\n\tSPARC_CC_FCC_UL  =  3+16+256,  // Unordered or Less\n\tSPARC_CC_FCC_LG  =  2+16+256,  // Less or Greater\n\tSPARC_CC_FCC_NE  =  1+16+256,  // Not Equal\n\tSPARC_CC_FCC_E   =  9+16+256,  // Equal\n\tSPARC_CC_FCC_UE  = 10+16+256,  // Unordered or Equal\n\tSPARC_CC_FCC_GE  = 11+16+256,  // Greater or Equal\n\tSPARC_CC_FCC_UGE = 12+16+256,  // Unordered or Greater or Equal\n\tSPARC_CC_FCC_LE  = 13+16+256,  // Less or Equal\n\tSPARC_CC_FCC_ULE = 14+16+256,  // Unordered or Less or Equal\n\tSPARC_CC_FCC_O   = 15+16+256,  // Ordered\n} sparc_cc;\n\n//> Branch hint\ntypedef enum sparc_hint {\n\tSPARC_HINT_INVALID = 0,\t// no hint\n\tSPARC_HINT_A\t= 1 << 0,\t// annul delay slot instruction\n\tSPARC_HINT_PT\t= 1 << 1,\t// branch taken\n\tSPARC_HINT_PN\t= 1 << 2,\t// branch NOT taken\n} sparc_hint;\n\n//> Operand type for instruction's operands\ntypedef enum sparc_op_type {\n\tSPARC_OP_INVALID = 0, // = CS_OP_INVALID (Uninitialized).\n\tSPARC_OP_REG, // = CS_OP_REG (Register operand).\n\tSPARC_OP_IMM, // = CS_OP_IMM (Immediate operand).\n\tSPARC_OP_MEM, // = CS_OP_MEM (Memory operand).\n} sparc_op_type;\n\n// Instruction's operand referring to memory\n// This is associated with SPARC_OP_MEM operand type above\ntypedef struct sparc_op_mem {\n\tuint8_t base;\t// base register\n\tuint8_t index;\t// index register\n\tint32_t disp;\t// displacement/offset value\n} sparc_op_mem;\n\n// Instruction operand\ntypedef struct cs_sparc_op {\n\tsparc_op_type type;\t// operand type\n\tunion {\n\t\tunsigned int reg;\t// register value for REG operand\n\t\tint32_t imm;\t\t// immediate value for IMM operand\n\t\tsparc_op_mem mem;\t\t// base/disp value for MEM operand\n\t};\n} cs_sparc_op;\n\n// Instruction structure\ntypedef struct cs_sparc {\n\tsparc_cc cc;\t// code condition for this insn\n\tsparc_hint hint;\t// branch hint: encoding as bitwise OR of sparc_hint.\n\t// Number of operands of this instruction, \n\t// or 0 when instruction has no operand.\n\tuint8_t op_count;\n\tcs_sparc_op operands[4]; // operands for this instruction.\n} cs_sparc;\n\n//> SPARC registers\ntypedef enum sparc_reg {\n\tSPARC_REG_INVALID = 0,\n\n\tSPARC_REG_F0,\n\tSPARC_REG_F1,\n\tSPARC_REG_F2,\n\tSPARC_REG_F3,\n\tSPARC_REG_F4,\n\tSPARC_REG_F5,\n\tSPARC_REG_F6,\n\tSPARC_REG_F7,\n\tSPARC_REG_F8,\n\tSPARC_REG_F9,\n\tSPARC_REG_F10,\n\tSPARC_REG_F11,\n\tSPARC_REG_F12,\n\tSPARC_REG_F13,\n\tSPARC_REG_F14,\n\tSPARC_REG_F15,\n\tSPARC_REG_F16,\n\tSPARC_REG_F17,\n\tSPARC_REG_F18,\n\tSPARC_REG_F19,\n\tSPARC_REG_F20,\n\tSPARC_REG_F21,\n\tSPARC_REG_F22,\n\tSPARC_REG_F23,\n\tSPARC_REG_F24,\n\tSPARC_REG_F25,\n\tSPARC_REG_F26,\n\tSPARC_REG_F27,\n\tSPARC_REG_F28,\n\tSPARC_REG_F29,\n\tSPARC_REG_F30,\n\tSPARC_REG_F31,\n\tSPARC_REG_F32,\n\tSPARC_REG_F34,\n\tSPARC_REG_F36,\n\tSPARC_REG_F38,\n\tSPARC_REG_F40,\n\tSPARC_REG_F42,\n\tSPARC_REG_F44,\n\tSPARC_REG_F46,\n\tSPARC_REG_F48,\n\tSPARC_REG_F50,\n\tSPARC_REG_F52,\n\tSPARC_REG_F54,\n\tSPARC_REG_F56,\n\tSPARC_REG_F58,\n\tSPARC_REG_F60,\n\tSPARC_REG_F62,\n\tSPARC_REG_FCC0,\t// Floating condition codes\n\tSPARC_REG_FCC1,\n\tSPARC_REG_FCC2,\n\tSPARC_REG_FCC3,\n\tSPARC_REG_FP,\n\tSPARC_REG_G0,\n\tSPARC_REG_G1,\n\tSPARC_REG_G2,\n\tSPARC_REG_G3,\n\tSPARC_REG_G4,\n\tSPARC_REG_G5,\n\tSPARC_REG_G6,\n\tSPARC_REG_G7,\n\tSPARC_REG_I0,\n\tSPARC_REG_I1,\n\tSPARC_REG_I2,\n\tSPARC_REG_I3,\n\tSPARC_REG_I4,\n\tSPARC_REG_I5,\n\tSPARC_REG_I7,\n\tSPARC_REG_ICC,\t// Integer condition codes\n\tSPARC_REG_L0,\n\tSPARC_REG_L1,\n\tSPARC_REG_L2,\n\tSPARC_REG_L3,\n\tSPARC_REG_L4,\n\tSPARC_REG_L5,\n\tSPARC_REG_L6,\n\tSPARC_REG_L7,\n\tSPARC_REG_O0,\n\tSPARC_REG_O1,\n\tSPARC_REG_O2,\n\tSPARC_REG_O3,\n\tSPARC_REG_O4,\n\tSPARC_REG_O5,\n\tSPARC_REG_O7,\n\tSPARC_REG_SP,\n\tSPARC_REG_Y,\n\n\t// special register\n\tSPARC_REG_XCC,\n\n\tSPARC_REG_ENDING,   // <-- mark the end of the list of registers\n\n\t// extras\n\tSPARC_REG_O6 = SPARC_REG_SP,\n\tSPARC_REG_I6 = SPARC_REG_FP,\n} sparc_reg;\n\n//> SPARC instruction\ntypedef enum sparc_insn {\n\tSPARC_INS_INVALID = 0,\n\n\tSPARC_INS_ADDCC,\n\tSPARC_INS_ADDX,\n\tSPARC_INS_ADDXCC,\n\tSPARC_INS_ADDXC,\n\tSPARC_INS_ADDXCCC,\n\tSPARC_INS_ADD,\n\tSPARC_INS_ALIGNADDR,\n\tSPARC_INS_ALIGNADDRL,\n\tSPARC_INS_ANDCC,\n\tSPARC_INS_ANDNCC,\n\tSPARC_INS_ANDN,\n\tSPARC_INS_AND,\n\tSPARC_INS_ARRAY16,\n\tSPARC_INS_ARRAY32,\n\tSPARC_INS_ARRAY8,\n\tSPARC_INS_B,\n\tSPARC_INS_JMP,\n\tSPARC_INS_BMASK,\n\tSPARC_INS_FB,\n\tSPARC_INS_BRGEZ,\n\tSPARC_INS_BRGZ,\n\tSPARC_INS_BRLEZ,\n\tSPARC_INS_BRLZ,\n\tSPARC_INS_BRNZ,\n\tSPARC_INS_BRZ,\n\tSPARC_INS_BSHUFFLE,\n\tSPARC_INS_CALL,\n\tSPARC_INS_CASX,\n\tSPARC_INS_CAS,\n\tSPARC_INS_CMASK16,\n\tSPARC_INS_CMASK32,\n\tSPARC_INS_CMASK8,\n\tSPARC_INS_CMP,\n\tSPARC_INS_EDGE16,\n\tSPARC_INS_EDGE16L,\n\tSPARC_INS_EDGE16LN,\n\tSPARC_INS_EDGE16N,\n\tSPARC_INS_EDGE32,\n\tSPARC_INS_EDGE32L,\n\tSPARC_INS_EDGE32LN,\n\tSPARC_INS_EDGE32N,\n\tSPARC_INS_EDGE8,\n\tSPARC_INS_EDGE8L,\n\tSPARC_INS_EDGE8LN,\n\tSPARC_INS_EDGE8N,\n\tSPARC_INS_FABSD,\n\tSPARC_INS_FABSQ,\n\tSPARC_INS_FABSS,\n\tSPARC_INS_FADDD,\n\tSPARC_INS_FADDQ,\n\tSPARC_INS_FADDS,\n\tSPARC_INS_FALIGNDATA,\n\tSPARC_INS_FAND,\n\tSPARC_INS_FANDNOT1,\n\tSPARC_INS_FANDNOT1S,\n\tSPARC_INS_FANDNOT2,\n\tSPARC_INS_FANDNOT2S,\n\tSPARC_INS_FANDS,\n\tSPARC_INS_FCHKSM16,\n\tSPARC_INS_FCMPD,\n\tSPARC_INS_FCMPEQ16,\n\tSPARC_INS_FCMPEQ32,\n\tSPARC_INS_FCMPGT16,\n\tSPARC_INS_FCMPGT32,\n\tSPARC_INS_FCMPLE16,\n\tSPARC_INS_FCMPLE32,\n\tSPARC_INS_FCMPNE16,\n\tSPARC_INS_FCMPNE32,\n\tSPARC_INS_FCMPQ,\n\tSPARC_INS_FCMPS,\n\tSPARC_INS_FDIVD,\n\tSPARC_INS_FDIVQ,\n\tSPARC_INS_FDIVS,\n\tSPARC_INS_FDMULQ,\n\tSPARC_INS_FDTOI,\n\tSPARC_INS_FDTOQ,\n\tSPARC_INS_FDTOS,\n\tSPARC_INS_FDTOX,\n\tSPARC_INS_FEXPAND,\n\tSPARC_INS_FHADDD,\n\tSPARC_INS_FHADDS,\n\tSPARC_INS_FHSUBD,\n\tSPARC_INS_FHSUBS,\n\tSPARC_INS_FITOD,\n\tSPARC_INS_FITOQ,\n\tSPARC_INS_FITOS,\n\tSPARC_INS_FLCMPD,\n\tSPARC_INS_FLCMPS,\n\tSPARC_INS_FLUSHW,\n\tSPARC_INS_FMEAN16,\n\tSPARC_INS_FMOVD,\n\tSPARC_INS_FMOVQ,\n\tSPARC_INS_FMOVRDGEZ,\n\tSPARC_INS_FMOVRQGEZ,\n\tSPARC_INS_FMOVRSGEZ,\n\tSPARC_INS_FMOVRDGZ,\n\tSPARC_INS_FMOVRQGZ,\n\tSPARC_INS_FMOVRSGZ,\n\tSPARC_INS_FMOVRDLEZ,\n\tSPARC_INS_FMOVRQLEZ,\n\tSPARC_INS_FMOVRSLEZ,\n\tSPARC_INS_FMOVRDLZ,\n\tSPARC_INS_FMOVRQLZ,\n\tSPARC_INS_FMOVRSLZ,\n\tSPARC_INS_FMOVRDNZ,\n\tSPARC_INS_FMOVRQNZ,\n\tSPARC_INS_FMOVRSNZ,\n\tSPARC_INS_FMOVRDZ,\n\tSPARC_INS_FMOVRQZ,\n\tSPARC_INS_FMOVRSZ,\n\tSPARC_INS_FMOVS,\n\tSPARC_INS_FMUL8SUX16,\n\tSPARC_INS_FMUL8ULX16,\n\tSPARC_INS_FMUL8X16,\n\tSPARC_INS_FMUL8X16AL,\n\tSPARC_INS_FMUL8X16AU,\n\tSPARC_INS_FMULD,\n\tSPARC_INS_FMULD8SUX16,\n\tSPARC_INS_FMULD8ULX16,\n\tSPARC_INS_FMULQ,\n\tSPARC_INS_FMULS,\n\tSPARC_INS_FNADDD,\n\tSPARC_INS_FNADDS,\n\tSPARC_INS_FNAND,\n\tSPARC_INS_FNANDS,\n\tSPARC_INS_FNEGD,\n\tSPARC_INS_FNEGQ,\n\tSPARC_INS_FNEGS,\n\tSPARC_INS_FNHADDD,\n\tSPARC_INS_FNHADDS,\n\tSPARC_INS_FNOR,\n\tSPARC_INS_FNORS,\n\tSPARC_INS_FNOT1,\n\tSPARC_INS_FNOT1S,\n\tSPARC_INS_FNOT2,\n\tSPARC_INS_FNOT2S,\n\tSPARC_INS_FONE,\n\tSPARC_INS_FONES,\n\tSPARC_INS_FOR,\n\tSPARC_INS_FORNOT1,\n\tSPARC_INS_FORNOT1S,\n\tSPARC_INS_FORNOT2,\n\tSPARC_INS_FORNOT2S,\n\tSPARC_INS_FORS,\n\tSPARC_INS_FPACK16,\n\tSPARC_INS_FPACK32,\n\tSPARC_INS_FPACKFIX,\n\tSPARC_INS_FPADD16,\n\tSPARC_INS_FPADD16S,\n\tSPARC_INS_FPADD32,\n\tSPARC_INS_FPADD32S,\n\tSPARC_INS_FPADD64,\n\tSPARC_INS_FPMERGE,\n\tSPARC_INS_FPSUB16,\n\tSPARC_INS_FPSUB16S,\n\tSPARC_INS_FPSUB32,\n\tSPARC_INS_FPSUB32S,\n\tSPARC_INS_FQTOD,\n\tSPARC_INS_FQTOI,\n\tSPARC_INS_FQTOS,\n\tSPARC_INS_FQTOX,\n\tSPARC_INS_FSLAS16,\n\tSPARC_INS_FSLAS32,\n\tSPARC_INS_FSLL16,\n\tSPARC_INS_FSLL32,\n\tSPARC_INS_FSMULD,\n\tSPARC_INS_FSQRTD,\n\tSPARC_INS_FSQRTQ,\n\tSPARC_INS_FSQRTS,\n\tSPARC_INS_FSRA16,\n\tSPARC_INS_FSRA32,\n\tSPARC_INS_FSRC1,\n\tSPARC_INS_FSRC1S,\n\tSPARC_INS_FSRC2,\n\tSPARC_INS_FSRC2S,\n\tSPARC_INS_FSRL16,\n\tSPARC_INS_FSRL32,\n\tSPARC_INS_FSTOD,\n\tSPARC_INS_FSTOI,\n\tSPARC_INS_FSTOQ,\n\tSPARC_INS_FSTOX,\n\tSPARC_INS_FSUBD,\n\tSPARC_INS_FSUBQ,\n\tSPARC_INS_FSUBS,\n\tSPARC_INS_FXNOR,\n\tSPARC_INS_FXNORS,\n\tSPARC_INS_FXOR,\n\tSPARC_INS_FXORS,\n\tSPARC_INS_FXTOD,\n\tSPARC_INS_FXTOQ,\n\tSPARC_INS_FXTOS,\n\tSPARC_INS_FZERO,\n\tSPARC_INS_FZEROS,\n\tSPARC_INS_JMPL,\n\tSPARC_INS_LDD,\n\tSPARC_INS_LD,\n\tSPARC_INS_LDQ,\n\tSPARC_INS_LDSB,\n\tSPARC_INS_LDSH,\n\tSPARC_INS_LDSW,\n\tSPARC_INS_LDUB,\n\tSPARC_INS_LDUH,\n\tSPARC_INS_LDX,\n\tSPARC_INS_LZCNT,\n\tSPARC_INS_MEMBAR,\n\tSPARC_INS_MOVDTOX,\n\tSPARC_INS_MOV,\n\tSPARC_INS_MOVRGEZ,\n\tSPARC_INS_MOVRGZ,\n\tSPARC_INS_MOVRLEZ,\n\tSPARC_INS_MOVRLZ,\n\tSPARC_INS_MOVRNZ,\n\tSPARC_INS_MOVRZ,\n\tSPARC_INS_MOVSTOSW,\n\tSPARC_INS_MOVSTOUW,\n\tSPARC_INS_MULX,\n\tSPARC_INS_NOP,\n\tSPARC_INS_ORCC,\n\tSPARC_INS_ORNCC,\n\tSPARC_INS_ORN,\n\tSPARC_INS_OR,\n\tSPARC_INS_PDIST,\n\tSPARC_INS_PDISTN,\n\tSPARC_INS_POPC,\n\tSPARC_INS_RD,\n\tSPARC_INS_RESTORE,\n\tSPARC_INS_RETT,\n\tSPARC_INS_SAVE,\n\tSPARC_INS_SDIVCC,\n\tSPARC_INS_SDIVX,\n\tSPARC_INS_SDIV,\n\tSPARC_INS_SETHI,\n\tSPARC_INS_SHUTDOWN,\n\tSPARC_INS_SIAM,\n\tSPARC_INS_SLLX,\n\tSPARC_INS_SLL,\n\tSPARC_INS_SMULCC,\n\tSPARC_INS_SMUL,\n\tSPARC_INS_SRAX,\n\tSPARC_INS_SRA,\n\tSPARC_INS_SRLX,\n\tSPARC_INS_SRL,\n\tSPARC_INS_STBAR,\n\tSPARC_INS_STB,\n\tSPARC_INS_STD,\n\tSPARC_INS_ST,\n\tSPARC_INS_STH,\n\tSPARC_INS_STQ,\n\tSPARC_INS_STX,\n\tSPARC_INS_SUBCC,\n\tSPARC_INS_SUBX,\n\tSPARC_INS_SUBXCC,\n\tSPARC_INS_SUB,\n\tSPARC_INS_SWAP,\n\tSPARC_INS_TADDCCTV,\n\tSPARC_INS_TADDCC,\n\tSPARC_INS_T,\n\tSPARC_INS_TSUBCCTV,\n\tSPARC_INS_TSUBCC,\n\tSPARC_INS_UDIVCC,\n\tSPARC_INS_UDIVX,\n\tSPARC_INS_UDIV,\n\tSPARC_INS_UMULCC,\n\tSPARC_INS_UMULXHI,\n\tSPARC_INS_UMUL,\n\tSPARC_INS_UNIMP,\n\tSPARC_INS_FCMPED,\n\tSPARC_INS_FCMPEQ,\n\tSPARC_INS_FCMPES,\n\tSPARC_INS_WR,\n\tSPARC_INS_XMULX,\n\tSPARC_INS_XMULXHI,\n\tSPARC_INS_XNORCC,\n\tSPARC_INS_XNOR,\n\tSPARC_INS_XORCC,\n\tSPARC_INS_XOR,\n\n\t// alias instructions\n\tSPARC_INS_RET,\n\tSPARC_INS_RETL,\n\n\tSPARC_INS_ENDING,   // <-- mark the end of the list of instructions\n} sparc_insn;\n\n//> Group of SPARC instructions\ntypedef enum sparc_insn_group {\n\tSPARC_GRP_INVALID = 0, // = CS_GRP_INVALID\n\n\t//> Generic groups\n\t// all jump instructions (conditional+direct+indirect jumps)\n\tSPARC_GRP_JUMP,\t// = CS_GRP_JUMP\n\n\t//> Architecture-specific groups\n\tSPARC_GRP_HARDQUAD = 128,\n\tSPARC_GRP_V9,\n\tSPARC_GRP_VIS,\n\tSPARC_GRP_VIS2,\n\tSPARC_GRP_VIS3, \n\tSPARC_GRP_32BIT,\n\tSPARC_GRP_64BIT,\n\n\tSPARC_GRP_ENDING,   // <-- mark the end of the list of groups\n} sparc_insn_group;\n\n#ifdef __cplusplus\n}\n#endif\n\n#endif\n"
  },
  {
    "path": "EFI/CLOVER/kexts/Other/Lilu_v1.3.7.kext/Contents/Resources/Headers/capstone/systemz.h",
    "content": "#ifndef CAPSTONE_SYSTEMZ_H\n#define CAPSTONE_SYSTEMZ_H\n\n/* Capstone Disassembly Engine */\n/* By Nguyen Anh Quynh <aquynh@gmail.com>, 2014 */\n\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n#if !defined(_MSC_VER) || !defined(_KERNEL_MODE)\n#include <stdint.h>\n#endif\n\n#include \"platform.h\"\n\n#ifdef _MSC_VER\n#pragma warning(disable:4201)\n#endif\n\n//> Enums corresponding to SystemZ condition codes\ntypedef enum sysz_cc {\n\tSYSZ_CC_INVALID = 0,\t// invalid CC (default)\n\n\tSYSZ_CC_O,\n\tSYSZ_CC_H,\n\tSYSZ_CC_NLE,\n\tSYSZ_CC_L,\n\tSYSZ_CC_NHE,\n\tSYSZ_CC_LH,\n\tSYSZ_CC_NE,\n\tSYSZ_CC_E,\n\tSYSZ_CC_NLH,\n\tSYSZ_CC_HE,\n\tSYSZ_CC_NL,\n\tSYSZ_CC_LE,\n\tSYSZ_CC_NH,\n\tSYSZ_CC_NO,\n} sysz_cc;\n\n//> Operand type for instruction's operands\ntypedef enum sysz_op_type {\n\tSYSZ_OP_INVALID = 0, // = CS_OP_INVALID (Uninitialized).\n\tSYSZ_OP_REG, // = CS_OP_REG (Register operand).\n\tSYSZ_OP_IMM, // = CS_OP_IMM (Immediate operand).\n\tSYSZ_OP_MEM, // = CS_OP_MEM (Memory operand).\n\tSYSZ_OP_ACREG = 64,\t// Access register operand.\n} sysz_op_type;\n\n// Instruction's operand referring to memory\n// This is associated with SYSZ_OP_MEM operand type above\ntypedef struct sysz_op_mem {\n\tuint8_t base;\t// base register\n\tuint8_t index;\t// index register\n\tuint64_t length;\t// BDLAddr operand\n\tint64_t disp;\t// displacement/offset value\n} sysz_op_mem;\n\n// Instruction operand\ntypedef struct cs_sysz_op {\n\tsysz_op_type type;\t// operand type\n\tunion {\n\t\tunsigned int reg;\t// register value for REG operand\n\t\tint64_t imm;\t\t// immediate value for IMM operand\n\t\tsysz_op_mem mem;\t\t// base/disp value for MEM operand\n\t};\n} cs_sysz_op;\n\n// Instruction structure\ntypedef struct cs_sysz {\n\tsysz_cc cc;\t\t// Code condition\n\t// Number of operands of this instruction, \n\t// or 0 when instruction has no operand.\n\tuint8_t op_count;\n\tcs_sysz_op operands[6]; // operands for this instruction.\n} cs_sysz;\n\n//> SystemZ registers\ntypedef enum sysz_reg {\n\tSYSZ_REG_INVALID = 0,\n\n\tSYSZ_REG_0, \n\tSYSZ_REG_1, \n\tSYSZ_REG_2, \n\tSYSZ_REG_3, \n\tSYSZ_REG_4, \n\tSYSZ_REG_5, \n\tSYSZ_REG_6, \n\tSYSZ_REG_7, \n\tSYSZ_REG_8, \n\tSYSZ_REG_9, \n\tSYSZ_REG_10,\n\tSYSZ_REG_11,\n\tSYSZ_REG_12,\n\tSYSZ_REG_13,\n\tSYSZ_REG_14,\n\tSYSZ_REG_15,\n\tSYSZ_REG_CC,\n\tSYSZ_REG_F0,\n\tSYSZ_REG_F1,\n\tSYSZ_REG_F2,\n\tSYSZ_REG_F3,\n\tSYSZ_REG_F4,\n\tSYSZ_REG_F5,\n\tSYSZ_REG_F6,\n\tSYSZ_REG_F7,\n\tSYSZ_REG_F8,\n\tSYSZ_REG_F9,\n\tSYSZ_REG_F10,\n\tSYSZ_REG_F11,\n\tSYSZ_REG_F12,\n\tSYSZ_REG_F13,\n\tSYSZ_REG_F14,\n\tSYSZ_REG_F15,\n\n\tSYSZ_REG_R0L,\n\n\tSYSZ_REG_ENDING,\n} sysz_reg;\n\n//> SystemZ instruction\ntypedef enum sysz_insn {\n\tSYSZ_INS_INVALID = 0,\n\n\tSYSZ_INS_A,\n\tSYSZ_INS_ADB,\n\tSYSZ_INS_ADBR,\n\tSYSZ_INS_AEB,\n\tSYSZ_INS_AEBR,\n\tSYSZ_INS_AFI,\n\tSYSZ_INS_AG,\n\tSYSZ_INS_AGF,\n\tSYSZ_INS_AGFI,\n\tSYSZ_INS_AGFR,\n\tSYSZ_INS_AGHI,\n\tSYSZ_INS_AGHIK,\n\tSYSZ_INS_AGR,\n\tSYSZ_INS_AGRK,\n\tSYSZ_INS_AGSI,\n\tSYSZ_INS_AH,\n\tSYSZ_INS_AHI,\n\tSYSZ_INS_AHIK,\n\tSYSZ_INS_AHY,\n\tSYSZ_INS_AIH,\n\tSYSZ_INS_AL,\n\tSYSZ_INS_ALC,\n\tSYSZ_INS_ALCG,\n\tSYSZ_INS_ALCGR,\n\tSYSZ_INS_ALCR,\n\tSYSZ_INS_ALFI,\n\tSYSZ_INS_ALG,\n\tSYSZ_INS_ALGF,\n\tSYSZ_INS_ALGFI,\n\tSYSZ_INS_ALGFR,\n\tSYSZ_INS_ALGHSIK,\n\tSYSZ_INS_ALGR,\n\tSYSZ_INS_ALGRK,\n\tSYSZ_INS_ALHSIK,\n\tSYSZ_INS_ALR,\n\tSYSZ_INS_ALRK,\n\tSYSZ_INS_ALY,\n\tSYSZ_INS_AR,\n\tSYSZ_INS_ARK,\n\tSYSZ_INS_ASI,\n\tSYSZ_INS_AXBR,\n\tSYSZ_INS_AY,\n\tSYSZ_INS_BCR,\n\tSYSZ_INS_BRC,\n\tSYSZ_INS_BRCL,\n\tSYSZ_INS_CGIJ,\n\tSYSZ_INS_CGRJ,\n\tSYSZ_INS_CIJ,\n\tSYSZ_INS_CLGIJ,\n\tSYSZ_INS_CLGRJ,\n\tSYSZ_INS_CLIJ,\n\tSYSZ_INS_CLRJ,\n\tSYSZ_INS_CRJ,\n\tSYSZ_INS_BER,\n\tSYSZ_INS_JE,\n\tSYSZ_INS_JGE,\n\tSYSZ_INS_LOCE,\n\tSYSZ_INS_LOCGE,\n\tSYSZ_INS_LOCGRE,\n\tSYSZ_INS_LOCRE,\n\tSYSZ_INS_STOCE,\n\tSYSZ_INS_STOCGE,\n\tSYSZ_INS_BHR,\n\tSYSZ_INS_BHER,\n\tSYSZ_INS_JHE,\n\tSYSZ_INS_JGHE,\n\tSYSZ_INS_LOCHE,\n\tSYSZ_INS_LOCGHE,\n\tSYSZ_INS_LOCGRHE,\n\tSYSZ_INS_LOCRHE,\n\tSYSZ_INS_STOCHE,\n\tSYSZ_INS_STOCGHE,\n\tSYSZ_INS_JH,\n\tSYSZ_INS_JGH,\n\tSYSZ_INS_LOCH,\n\tSYSZ_INS_LOCGH,\n\tSYSZ_INS_LOCGRH,\n\tSYSZ_INS_LOCRH,\n\tSYSZ_INS_STOCH,\n\tSYSZ_INS_STOCGH,\n\tSYSZ_INS_CGIJNLH,\n\tSYSZ_INS_CGRJNLH,\n\tSYSZ_INS_CIJNLH,\n\tSYSZ_INS_CLGIJNLH,\n\tSYSZ_INS_CLGRJNLH,\n\tSYSZ_INS_CLIJNLH,\n\tSYSZ_INS_CLRJNLH,\n\tSYSZ_INS_CRJNLH,\n\tSYSZ_INS_CGIJE,\n\tSYSZ_INS_CGRJE,\n\tSYSZ_INS_CIJE,\n\tSYSZ_INS_CLGIJE,\n\tSYSZ_INS_CLGRJE,\n\tSYSZ_INS_CLIJE,\n\tSYSZ_INS_CLRJE,\n\tSYSZ_INS_CRJE,\n\tSYSZ_INS_CGIJNLE,\n\tSYSZ_INS_CGRJNLE,\n\tSYSZ_INS_CIJNLE,\n\tSYSZ_INS_CLGIJNLE,\n\tSYSZ_INS_CLGRJNLE,\n\tSYSZ_INS_CLIJNLE,\n\tSYSZ_INS_CLRJNLE,\n\tSYSZ_INS_CRJNLE,\n\tSYSZ_INS_CGIJH,\n\tSYSZ_INS_CGRJH,\n\tSYSZ_INS_CIJH,\n\tSYSZ_INS_CLGIJH,\n\tSYSZ_INS_CLGRJH,\n\tSYSZ_INS_CLIJH,\n\tSYSZ_INS_CLRJH,\n\tSYSZ_INS_CRJH,\n\tSYSZ_INS_CGIJNL,\n\tSYSZ_INS_CGRJNL,\n\tSYSZ_INS_CIJNL,\n\tSYSZ_INS_CLGIJNL,\n\tSYSZ_INS_CLGRJNL,\n\tSYSZ_INS_CLIJNL,\n\tSYSZ_INS_CLRJNL,\n\tSYSZ_INS_CRJNL,\n\tSYSZ_INS_CGIJHE,\n\tSYSZ_INS_CGRJHE,\n\tSYSZ_INS_CIJHE,\n\tSYSZ_INS_CLGIJHE,\n\tSYSZ_INS_CLGRJHE,\n\tSYSZ_INS_CLIJHE,\n\tSYSZ_INS_CLRJHE,\n\tSYSZ_INS_CRJHE,\n\tSYSZ_INS_CGIJNHE,\n\tSYSZ_INS_CGRJNHE,\n\tSYSZ_INS_CIJNHE,\n\tSYSZ_INS_CLGIJNHE,\n\tSYSZ_INS_CLGRJNHE,\n\tSYSZ_INS_CLIJNHE,\n\tSYSZ_INS_CLRJNHE,\n\tSYSZ_INS_CRJNHE,\n\tSYSZ_INS_CGIJL,\n\tSYSZ_INS_CGRJL,\n\tSYSZ_INS_CIJL,\n\tSYSZ_INS_CLGIJL,\n\tSYSZ_INS_CLGRJL,\n\tSYSZ_INS_CLIJL,\n\tSYSZ_INS_CLRJL,\n\tSYSZ_INS_CRJL,\n\tSYSZ_INS_CGIJNH,\n\tSYSZ_INS_CGRJNH,\n\tSYSZ_INS_CIJNH,\n\tSYSZ_INS_CLGIJNH,\n\tSYSZ_INS_CLGRJNH,\n\tSYSZ_INS_CLIJNH,\n\tSYSZ_INS_CLRJNH,\n\tSYSZ_INS_CRJNH,\n\tSYSZ_INS_CGIJLE,\n\tSYSZ_INS_CGRJLE,\n\tSYSZ_INS_CIJLE,\n\tSYSZ_INS_CLGIJLE,\n\tSYSZ_INS_CLGRJLE,\n\tSYSZ_INS_CLIJLE,\n\tSYSZ_INS_CLRJLE,\n\tSYSZ_INS_CRJLE,\n\tSYSZ_INS_CGIJNE,\n\tSYSZ_INS_CGRJNE,\n\tSYSZ_INS_CIJNE,\n\tSYSZ_INS_CLGIJNE,\n\tSYSZ_INS_CLGRJNE,\n\tSYSZ_INS_CLIJNE,\n\tSYSZ_INS_CLRJNE,\n\tSYSZ_INS_CRJNE,\n\tSYSZ_INS_CGIJLH,\n\tSYSZ_INS_CGRJLH,\n\tSYSZ_INS_CIJLH,\n\tSYSZ_INS_CLGIJLH,\n\tSYSZ_INS_CLGRJLH,\n\tSYSZ_INS_CLIJLH,\n\tSYSZ_INS_CLRJLH,\n\tSYSZ_INS_CRJLH,\n\tSYSZ_INS_BLR,\n\tSYSZ_INS_BLER,\n\tSYSZ_INS_JLE,\n\tSYSZ_INS_JGLE,\n\tSYSZ_INS_LOCLE,\n\tSYSZ_INS_LOCGLE,\n\tSYSZ_INS_LOCGRLE,\n\tSYSZ_INS_LOCRLE,\n\tSYSZ_INS_STOCLE,\n\tSYSZ_INS_STOCGLE,\n\tSYSZ_INS_BLHR,\n\tSYSZ_INS_JLH,\n\tSYSZ_INS_JGLH,\n\tSYSZ_INS_LOCLH,\n\tSYSZ_INS_LOCGLH,\n\tSYSZ_INS_LOCGRLH,\n\tSYSZ_INS_LOCRLH,\n\tSYSZ_INS_STOCLH,\n\tSYSZ_INS_STOCGLH,\n\tSYSZ_INS_JL,\n\tSYSZ_INS_JGL,\n\tSYSZ_INS_LOCL,\n\tSYSZ_INS_LOCGL,\n\tSYSZ_INS_LOCGRL,\n\tSYSZ_INS_LOCRL,\n\tSYSZ_INS_LOC,\n\tSYSZ_INS_LOCG,\n\tSYSZ_INS_LOCGR,\n\tSYSZ_INS_LOCR,\n\tSYSZ_INS_STOCL,\n\tSYSZ_INS_STOCGL,\n\tSYSZ_INS_BNER,\n\tSYSZ_INS_JNE,\n\tSYSZ_INS_JGNE,\n\tSYSZ_INS_LOCNE,\n\tSYSZ_INS_LOCGNE,\n\tSYSZ_INS_LOCGRNE,\n\tSYSZ_INS_LOCRNE,\n\tSYSZ_INS_STOCNE,\n\tSYSZ_INS_STOCGNE,\n\tSYSZ_INS_BNHR,\n\tSYSZ_INS_BNHER,\n\tSYSZ_INS_JNHE,\n\tSYSZ_INS_JGNHE,\n\tSYSZ_INS_LOCNHE,\n\tSYSZ_INS_LOCGNHE,\n\tSYSZ_INS_LOCGRNHE,\n\tSYSZ_INS_LOCRNHE,\n\tSYSZ_INS_STOCNHE,\n\tSYSZ_INS_STOCGNHE,\n\tSYSZ_INS_JNH,\n\tSYSZ_INS_JGNH,\n\tSYSZ_INS_LOCNH,\n\tSYSZ_INS_LOCGNH,\n\tSYSZ_INS_LOCGRNH,\n\tSYSZ_INS_LOCRNH,\n\tSYSZ_INS_STOCNH,\n\tSYSZ_INS_STOCGNH,\n\tSYSZ_INS_BNLR,\n\tSYSZ_INS_BNLER,\n\tSYSZ_INS_JNLE,\n\tSYSZ_INS_JGNLE,\n\tSYSZ_INS_LOCNLE,\n\tSYSZ_INS_LOCGNLE,\n\tSYSZ_INS_LOCGRNLE,\n\tSYSZ_INS_LOCRNLE,\n\tSYSZ_INS_STOCNLE,\n\tSYSZ_INS_STOCGNLE,\n\tSYSZ_INS_BNLHR,\n\tSYSZ_INS_JNLH,\n\tSYSZ_INS_JGNLH,\n\tSYSZ_INS_LOCNLH,\n\tSYSZ_INS_LOCGNLH,\n\tSYSZ_INS_LOCGRNLH,\n\tSYSZ_INS_LOCRNLH,\n\tSYSZ_INS_STOCNLH,\n\tSYSZ_INS_STOCGNLH,\n\tSYSZ_INS_JNL,\n\tSYSZ_INS_JGNL,\n\tSYSZ_INS_LOCNL,\n\tSYSZ_INS_LOCGNL,\n\tSYSZ_INS_LOCGRNL,\n\tSYSZ_INS_LOCRNL,\n\tSYSZ_INS_STOCNL,\n\tSYSZ_INS_STOCGNL,\n\tSYSZ_INS_BNOR,\n\tSYSZ_INS_JNO,\n\tSYSZ_INS_JGNO,\n\tSYSZ_INS_LOCNO,\n\tSYSZ_INS_LOCGNO,\n\tSYSZ_INS_LOCGRNO,\n\tSYSZ_INS_LOCRNO,\n\tSYSZ_INS_STOCNO,\n\tSYSZ_INS_STOCGNO,\n\tSYSZ_INS_BOR,\n\tSYSZ_INS_JO,\n\tSYSZ_INS_JGO,\n\tSYSZ_INS_LOCO,\n\tSYSZ_INS_LOCGO,\n\tSYSZ_INS_LOCGRO,\n\tSYSZ_INS_LOCRO,\n\tSYSZ_INS_STOCO,\n\tSYSZ_INS_STOCGO,\n\tSYSZ_INS_STOC,\n\tSYSZ_INS_STOCG,\n\tSYSZ_INS_BASR,\n\tSYSZ_INS_BR,\n\tSYSZ_INS_BRAS,\n\tSYSZ_INS_BRASL,\n\tSYSZ_INS_J,\n\tSYSZ_INS_JG,\n\tSYSZ_INS_BRCT,\n\tSYSZ_INS_BRCTG,\n\tSYSZ_INS_C,\n\tSYSZ_INS_CDB,\n\tSYSZ_INS_CDBR,\n\tSYSZ_INS_CDFBR,\n\tSYSZ_INS_CDGBR,\n\tSYSZ_INS_CDLFBR,\n\tSYSZ_INS_CDLGBR,\n\tSYSZ_INS_CEB,\n\tSYSZ_INS_CEBR,\n\tSYSZ_INS_CEFBR,\n\tSYSZ_INS_CEGBR,\n\tSYSZ_INS_CELFBR,\n\tSYSZ_INS_CELGBR,\n\tSYSZ_INS_CFDBR,\n\tSYSZ_INS_CFEBR,\n\tSYSZ_INS_CFI,\n\tSYSZ_INS_CFXBR,\n\tSYSZ_INS_CG,\n\tSYSZ_INS_CGDBR,\n\tSYSZ_INS_CGEBR,\n\tSYSZ_INS_CGF,\n\tSYSZ_INS_CGFI,\n\tSYSZ_INS_CGFR,\n\tSYSZ_INS_CGFRL,\n\tSYSZ_INS_CGH,\n\tSYSZ_INS_CGHI,\n\tSYSZ_INS_CGHRL,\n\tSYSZ_INS_CGHSI,\n\tSYSZ_INS_CGR,\n\tSYSZ_INS_CGRL,\n\tSYSZ_INS_CGXBR,\n\tSYSZ_INS_CH,\n\tSYSZ_INS_CHF,\n\tSYSZ_INS_CHHSI,\n\tSYSZ_INS_CHI,\n\tSYSZ_INS_CHRL,\n\tSYSZ_INS_CHSI,\n\tSYSZ_INS_CHY,\n\tSYSZ_INS_CIH,\n\tSYSZ_INS_CL,\n\tSYSZ_INS_CLC,\n\tSYSZ_INS_CLFDBR,\n\tSYSZ_INS_CLFEBR,\n\tSYSZ_INS_CLFHSI,\n\tSYSZ_INS_CLFI,\n\tSYSZ_INS_CLFXBR,\n\tSYSZ_INS_CLG,\n\tSYSZ_INS_CLGDBR,\n\tSYSZ_INS_CLGEBR,\n\tSYSZ_INS_CLGF,\n\tSYSZ_INS_CLGFI,\n\tSYSZ_INS_CLGFR,\n\tSYSZ_INS_CLGFRL,\n\tSYSZ_INS_CLGHRL,\n\tSYSZ_INS_CLGHSI,\n\tSYSZ_INS_CLGR,\n\tSYSZ_INS_CLGRL,\n\tSYSZ_INS_CLGXBR,\n\tSYSZ_INS_CLHF,\n\tSYSZ_INS_CLHHSI,\n\tSYSZ_INS_CLHRL,\n\tSYSZ_INS_CLI,\n\tSYSZ_INS_CLIH,\n\tSYSZ_INS_CLIY,\n\tSYSZ_INS_CLR,\n\tSYSZ_INS_CLRL,\n\tSYSZ_INS_CLST,\n\tSYSZ_INS_CLY,\n\tSYSZ_INS_CPSDR,\n\tSYSZ_INS_CR,\n\tSYSZ_INS_CRL,\n\tSYSZ_INS_CS,\n\tSYSZ_INS_CSG,\n\tSYSZ_INS_CSY,\n\tSYSZ_INS_CXBR,\n\tSYSZ_INS_CXFBR,\n\tSYSZ_INS_CXGBR,\n\tSYSZ_INS_CXLFBR,\n\tSYSZ_INS_CXLGBR,\n\tSYSZ_INS_CY,\n\tSYSZ_INS_DDB,\n\tSYSZ_INS_DDBR,\n\tSYSZ_INS_DEB,\n\tSYSZ_INS_DEBR,\n\tSYSZ_INS_DL,\n\tSYSZ_INS_DLG,\n\tSYSZ_INS_DLGR,\n\tSYSZ_INS_DLR,\n\tSYSZ_INS_DSG,\n\tSYSZ_INS_DSGF,\n\tSYSZ_INS_DSGFR,\n\tSYSZ_INS_DSGR,\n\tSYSZ_INS_DXBR,\n\tSYSZ_INS_EAR,\n\tSYSZ_INS_FIDBR,\n\tSYSZ_INS_FIDBRA,\n\tSYSZ_INS_FIEBR,\n\tSYSZ_INS_FIEBRA,\n\tSYSZ_INS_FIXBR,\n\tSYSZ_INS_FIXBRA,\n\tSYSZ_INS_FLOGR,\n\tSYSZ_INS_IC,\n\tSYSZ_INS_ICY,\n\tSYSZ_INS_IIHF,\n\tSYSZ_INS_IIHH,\n\tSYSZ_INS_IIHL,\n\tSYSZ_INS_IILF,\n\tSYSZ_INS_IILH,\n\tSYSZ_INS_IILL,\n\tSYSZ_INS_IPM,\n\tSYSZ_INS_L,\n\tSYSZ_INS_LA,\n\tSYSZ_INS_LAA,\n\tSYSZ_INS_LAAG,\n\tSYSZ_INS_LAAL,\n\tSYSZ_INS_LAALG,\n\tSYSZ_INS_LAN,\n\tSYSZ_INS_LANG,\n\tSYSZ_INS_LAO,\n\tSYSZ_INS_LAOG,\n\tSYSZ_INS_LARL,\n\tSYSZ_INS_LAX,\n\tSYSZ_INS_LAXG,\n\tSYSZ_INS_LAY,\n\tSYSZ_INS_LB,\n\tSYSZ_INS_LBH,\n\tSYSZ_INS_LBR,\n\tSYSZ_INS_LCDBR,\n\tSYSZ_INS_LCEBR,\n\tSYSZ_INS_LCGFR,\n\tSYSZ_INS_LCGR,\n\tSYSZ_INS_LCR,\n\tSYSZ_INS_LCXBR,\n\tSYSZ_INS_LD,\n\tSYSZ_INS_LDEB,\n\tSYSZ_INS_LDEBR,\n\tSYSZ_INS_LDGR,\n\tSYSZ_INS_LDR,\n\tSYSZ_INS_LDXBR,\n\tSYSZ_INS_LDXBRA,\n\tSYSZ_INS_LDY,\n\tSYSZ_INS_LE,\n\tSYSZ_INS_LEDBR,\n\tSYSZ_INS_LEDBRA,\n\tSYSZ_INS_LER,\n\tSYSZ_INS_LEXBR,\n\tSYSZ_INS_LEXBRA,\n\tSYSZ_INS_LEY,\n\tSYSZ_INS_LFH,\n\tSYSZ_INS_LG,\n\tSYSZ_INS_LGB,\n\tSYSZ_INS_LGBR,\n\tSYSZ_INS_LGDR,\n\tSYSZ_INS_LGF,\n\tSYSZ_INS_LGFI,\n\tSYSZ_INS_LGFR,\n\tSYSZ_INS_LGFRL,\n\tSYSZ_INS_LGH,\n\tSYSZ_INS_LGHI,\n\tSYSZ_INS_LGHR,\n\tSYSZ_INS_LGHRL,\n\tSYSZ_INS_LGR,\n\tSYSZ_INS_LGRL,\n\tSYSZ_INS_LH,\n\tSYSZ_INS_LHH,\n\tSYSZ_INS_LHI,\n\tSYSZ_INS_LHR,\n\tSYSZ_INS_LHRL,\n\tSYSZ_INS_LHY,\n\tSYSZ_INS_LLC,\n\tSYSZ_INS_LLCH,\n\tSYSZ_INS_LLCR,\n\tSYSZ_INS_LLGC,\n\tSYSZ_INS_LLGCR,\n\tSYSZ_INS_LLGF,\n\tSYSZ_INS_LLGFR,\n\tSYSZ_INS_LLGFRL,\n\tSYSZ_INS_LLGH,\n\tSYSZ_INS_LLGHR,\n\tSYSZ_INS_LLGHRL,\n\tSYSZ_INS_LLH,\n\tSYSZ_INS_LLHH,\n\tSYSZ_INS_LLHR,\n\tSYSZ_INS_LLHRL,\n\tSYSZ_INS_LLIHF,\n\tSYSZ_INS_LLIHH,\n\tSYSZ_INS_LLIHL,\n\tSYSZ_INS_LLILF,\n\tSYSZ_INS_LLILH,\n\tSYSZ_INS_LLILL,\n\tSYSZ_INS_LMG,\n\tSYSZ_INS_LNDBR,\n\tSYSZ_INS_LNEBR,\n\tSYSZ_INS_LNGFR,\n\tSYSZ_INS_LNGR,\n\tSYSZ_INS_LNR,\n\tSYSZ_INS_LNXBR,\n\tSYSZ_INS_LPDBR,\n\tSYSZ_INS_LPEBR,\n\tSYSZ_INS_LPGFR,\n\tSYSZ_INS_LPGR,\n\tSYSZ_INS_LPR,\n\tSYSZ_INS_LPXBR,\n\tSYSZ_INS_LR,\n\tSYSZ_INS_LRL,\n\tSYSZ_INS_LRV,\n\tSYSZ_INS_LRVG,\n\tSYSZ_INS_LRVGR,\n\tSYSZ_INS_LRVR,\n\tSYSZ_INS_LT,\n\tSYSZ_INS_LTDBR,\n\tSYSZ_INS_LTEBR,\n\tSYSZ_INS_LTG,\n\tSYSZ_INS_LTGF,\n\tSYSZ_INS_LTGFR,\n\tSYSZ_INS_LTGR,\n\tSYSZ_INS_LTR,\n\tSYSZ_INS_LTXBR,\n\tSYSZ_INS_LXDB,\n\tSYSZ_INS_LXDBR,\n\tSYSZ_INS_LXEB,\n\tSYSZ_INS_LXEBR,\n\tSYSZ_INS_LXR,\n\tSYSZ_INS_LY,\n\tSYSZ_INS_LZDR,\n\tSYSZ_INS_LZER,\n\tSYSZ_INS_LZXR,\n\tSYSZ_INS_MADB,\n\tSYSZ_INS_MADBR,\n\tSYSZ_INS_MAEB,\n\tSYSZ_INS_MAEBR,\n\tSYSZ_INS_MDB,\n\tSYSZ_INS_MDBR,\n\tSYSZ_INS_MDEB,\n\tSYSZ_INS_MDEBR,\n\tSYSZ_INS_MEEB,\n\tSYSZ_INS_MEEBR,\n\tSYSZ_INS_MGHI,\n\tSYSZ_INS_MH,\n\tSYSZ_INS_MHI,\n\tSYSZ_INS_MHY,\n\tSYSZ_INS_MLG,\n\tSYSZ_INS_MLGR,\n\tSYSZ_INS_MS,\n\tSYSZ_INS_MSDB,\n\tSYSZ_INS_MSDBR,\n\tSYSZ_INS_MSEB,\n\tSYSZ_INS_MSEBR,\n\tSYSZ_INS_MSFI,\n\tSYSZ_INS_MSG,\n\tSYSZ_INS_MSGF,\n\tSYSZ_INS_MSGFI,\n\tSYSZ_INS_MSGFR,\n\tSYSZ_INS_MSGR,\n\tSYSZ_INS_MSR,\n\tSYSZ_INS_MSY,\n\tSYSZ_INS_MVC,\n\tSYSZ_INS_MVGHI,\n\tSYSZ_INS_MVHHI,\n\tSYSZ_INS_MVHI,\n\tSYSZ_INS_MVI,\n\tSYSZ_INS_MVIY,\n\tSYSZ_INS_MVST,\n\tSYSZ_INS_MXBR,\n\tSYSZ_INS_MXDB,\n\tSYSZ_INS_MXDBR,\n\tSYSZ_INS_N,\n\tSYSZ_INS_NC,\n\tSYSZ_INS_NG,\n\tSYSZ_INS_NGR,\n\tSYSZ_INS_NGRK,\n\tSYSZ_INS_NI,\n\tSYSZ_INS_NIHF,\n\tSYSZ_INS_NIHH,\n\tSYSZ_INS_NIHL,\n\tSYSZ_INS_NILF,\n\tSYSZ_INS_NILH,\n\tSYSZ_INS_NILL,\n\tSYSZ_INS_NIY,\n\tSYSZ_INS_NR,\n\tSYSZ_INS_NRK,\n\tSYSZ_INS_NY,\n\tSYSZ_INS_O,\n\tSYSZ_INS_OC,\n\tSYSZ_INS_OG,\n\tSYSZ_INS_OGR,\n\tSYSZ_INS_OGRK,\n\tSYSZ_INS_OI,\n\tSYSZ_INS_OIHF,\n\tSYSZ_INS_OIHH,\n\tSYSZ_INS_OIHL,\n\tSYSZ_INS_OILF,\n\tSYSZ_INS_OILH,\n\tSYSZ_INS_OILL,\n\tSYSZ_INS_OIY,\n\tSYSZ_INS_OR,\n\tSYSZ_INS_ORK,\n\tSYSZ_INS_OY,\n\tSYSZ_INS_PFD,\n\tSYSZ_INS_PFDRL,\n\tSYSZ_INS_RISBG,\n\tSYSZ_INS_RISBHG,\n\tSYSZ_INS_RISBLG,\n\tSYSZ_INS_RLL,\n\tSYSZ_INS_RLLG,\n\tSYSZ_INS_RNSBG,\n\tSYSZ_INS_ROSBG,\n\tSYSZ_INS_RXSBG,\n\tSYSZ_INS_S,\n\tSYSZ_INS_SDB,\n\tSYSZ_INS_SDBR,\n\tSYSZ_INS_SEB,\n\tSYSZ_INS_SEBR,\n\tSYSZ_INS_SG,\n\tSYSZ_INS_SGF,\n\tSYSZ_INS_SGFR,\n\tSYSZ_INS_SGR,\n\tSYSZ_INS_SGRK,\n\tSYSZ_INS_SH,\n\tSYSZ_INS_SHY,\n\tSYSZ_INS_SL,\n\tSYSZ_INS_SLB,\n\tSYSZ_INS_SLBG,\n\tSYSZ_INS_SLBR,\n\tSYSZ_INS_SLFI,\n\tSYSZ_INS_SLG,\n\tSYSZ_INS_SLBGR,\n\tSYSZ_INS_SLGF,\n\tSYSZ_INS_SLGFI,\n\tSYSZ_INS_SLGFR,\n\tSYSZ_INS_SLGR,\n\tSYSZ_INS_SLGRK,\n\tSYSZ_INS_SLL,\n\tSYSZ_INS_SLLG,\n\tSYSZ_INS_SLLK,\n\tSYSZ_INS_SLR,\n\tSYSZ_INS_SLRK,\n\tSYSZ_INS_SLY,\n\tSYSZ_INS_SQDB,\n\tSYSZ_INS_SQDBR,\n\tSYSZ_INS_SQEB,\n\tSYSZ_INS_SQEBR,\n\tSYSZ_INS_SQXBR,\n\tSYSZ_INS_SR,\n\tSYSZ_INS_SRA,\n\tSYSZ_INS_SRAG,\n\tSYSZ_INS_SRAK,\n\tSYSZ_INS_SRK,\n\tSYSZ_INS_SRL,\n\tSYSZ_INS_SRLG,\n\tSYSZ_INS_SRLK,\n\tSYSZ_INS_SRST,\n\tSYSZ_INS_ST,\n\tSYSZ_INS_STC,\n\tSYSZ_INS_STCH,\n\tSYSZ_INS_STCY,\n\tSYSZ_INS_STD,\n\tSYSZ_INS_STDY,\n\tSYSZ_INS_STE,\n\tSYSZ_INS_STEY,\n\tSYSZ_INS_STFH,\n\tSYSZ_INS_STG,\n\tSYSZ_INS_STGRL,\n\tSYSZ_INS_STH,\n\tSYSZ_INS_STHH,\n\tSYSZ_INS_STHRL,\n\tSYSZ_INS_STHY,\n\tSYSZ_INS_STMG,\n\tSYSZ_INS_STRL,\n\tSYSZ_INS_STRV,\n\tSYSZ_INS_STRVG,\n\tSYSZ_INS_STY,\n\tSYSZ_INS_SXBR,\n\tSYSZ_INS_SY,\n\tSYSZ_INS_TM,\n\tSYSZ_INS_TMHH,\n\tSYSZ_INS_TMHL,\n\tSYSZ_INS_TMLH,\n\tSYSZ_INS_TMLL,\n\tSYSZ_INS_TMY,\n\tSYSZ_INS_X,\n\tSYSZ_INS_XC,\n\tSYSZ_INS_XG,\n\tSYSZ_INS_XGR,\n\tSYSZ_INS_XGRK,\n\tSYSZ_INS_XI,\n\tSYSZ_INS_XIHF,\n\tSYSZ_INS_XILF,\n\tSYSZ_INS_XIY,\n\tSYSZ_INS_XR,\n\tSYSZ_INS_XRK,\n\tSYSZ_INS_XY,\n\n\tSYSZ_INS_ENDING,   // <-- mark the end of the list of instructions\n} sysz_insn;\n\n//> Group of SystemZ instructions\ntypedef enum sysz_insn_group {\n\tSYSZ_GRP_INVALID = 0, // = CS_GRP_INVALID\n\n\t//> Generic groups\n\t// all jump instructions (conditional+direct+indirect jumps)\n\tSYSZ_GRP_JUMP,\t// = CS_GRP_JUMP\n\n\t//> Architecture-specific groups\n\tSYSZ_GRP_DISTINCTOPS = 128,\n\tSYSZ_GRP_FPEXTENSION,\n\tSYSZ_GRP_HIGHWORD,\n\tSYSZ_GRP_INTERLOCKEDACCESS1,\n\tSYSZ_GRP_LOADSTOREONCOND,\n\n\tSYSZ_GRP_ENDING,   // <-- mark the end of the list of groups\n} sysz_insn_group;\n\n#ifdef __cplusplus\n}\n#endif\n\n#endif\n"
  },
  {
    "path": "EFI/CLOVER/kexts/Other/Lilu_v1.3.7.kext/Contents/Resources/Headers/capstone/x86.h",
    "content": "#ifndef CAPSTONE_X86_H\n#define CAPSTONE_X86_H\n\n/* Capstone Disassembly Engine */\n/* By Nguyen Anh Quynh <aquynh@gmail.com>, 2013-2014 */\n\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n#if !defined(_MSC_VER) || !defined(_KERNEL_MODE)\n#include <stdint.h>\n#endif\n\n// Calculate relative address for X86-64, given cs_insn structure\n#define X86_REL_ADDR(insn) (((insn).detail->x86.operands[0].type == X86_OP_IMM) \\\n\t? (uint64_t)((insn).detail->x86.operands[0].imm) \\\n\t: (((insn).address + (insn).size) + (uint64_t)(insn).detail->x86.disp))\n\n//> X86 registers\ntypedef enum x86_reg {\n\tX86_REG_INVALID = 0,\n\tX86_REG_AH, X86_REG_AL, X86_REG_AX, X86_REG_BH, X86_REG_BL,\n\tX86_REG_BP, X86_REG_BPL, X86_REG_BX, X86_REG_CH, X86_REG_CL,\n\tX86_REG_CS, X86_REG_CX, X86_REG_DH, X86_REG_DI, X86_REG_DIL,\n\tX86_REG_DL, X86_REG_DS, X86_REG_DX, X86_REG_EAX, X86_REG_EBP,\n\tX86_REG_EBX, X86_REG_ECX, X86_REG_EDI, X86_REG_EDX, X86_REG_EFLAGS,\n\tX86_REG_EIP, X86_REG_EIZ, X86_REG_ES, X86_REG_ESI, X86_REG_ESP,\n\tX86_REG_FPSW, X86_REG_FS, X86_REG_GS, X86_REG_IP, X86_REG_RAX,\n\tX86_REG_RBP, X86_REG_RBX, X86_REG_RCX, X86_REG_RDI, X86_REG_RDX,\n\tX86_REG_RIP, X86_REG_RIZ, X86_REG_RSI, X86_REG_RSP, X86_REG_SI,\n\tX86_REG_SIL, X86_REG_SP, X86_REG_SPL, X86_REG_SS, X86_REG_CR0,\n\tX86_REG_CR1, X86_REG_CR2, X86_REG_CR3, X86_REG_CR4, X86_REG_CR5,\n\tX86_REG_CR6, X86_REG_CR7, X86_REG_CR8, X86_REG_CR9, X86_REG_CR10,\n\tX86_REG_CR11, X86_REG_CR12, X86_REG_CR13, X86_REG_CR14, X86_REG_CR15,\n\tX86_REG_DR0, X86_REG_DR1, X86_REG_DR2, X86_REG_DR3, X86_REG_DR4,\n\tX86_REG_DR5, X86_REG_DR6, X86_REG_DR7, X86_REG_FP0, X86_REG_FP1,\n\tX86_REG_FP2, X86_REG_FP3, X86_REG_FP4, X86_REG_FP5, X86_REG_FP6, X86_REG_FP7,\n\tX86_REG_K0, X86_REG_K1, X86_REG_K2, X86_REG_K3, X86_REG_K4,\n\tX86_REG_K5, X86_REG_K6, X86_REG_K7, X86_REG_MM0, X86_REG_MM1,\n\tX86_REG_MM2, X86_REG_MM3, X86_REG_MM4, X86_REG_MM5, X86_REG_MM6,\n\tX86_REG_MM7, X86_REG_R8, X86_REG_R9, X86_REG_R10, X86_REG_R11,\n\tX86_REG_R12, X86_REG_R13, X86_REG_R14, X86_REG_R15,\n\tX86_REG_ST0, X86_REG_ST1, X86_REG_ST2, X86_REG_ST3,\n\tX86_REG_ST4, X86_REG_ST5, X86_REG_ST6, X86_REG_ST7,\n\tX86_REG_XMM0, X86_REG_XMM1, X86_REG_XMM2, X86_REG_XMM3, X86_REG_XMM4,\n\tX86_REG_XMM5, X86_REG_XMM6, X86_REG_XMM7, X86_REG_XMM8, X86_REG_XMM9,\n\tX86_REG_XMM10, X86_REG_XMM11, X86_REG_XMM12, X86_REG_XMM13, X86_REG_XMM14,\n\tX86_REG_XMM15, X86_REG_XMM16, X86_REG_XMM17, X86_REG_XMM18, X86_REG_XMM19,\n\tX86_REG_XMM20, X86_REG_XMM21, X86_REG_XMM22, X86_REG_XMM23, X86_REG_XMM24,\n\tX86_REG_XMM25, X86_REG_XMM26, X86_REG_XMM27, X86_REG_XMM28, X86_REG_XMM29,\n\tX86_REG_XMM30, X86_REG_XMM31, X86_REG_YMM0, X86_REG_YMM1, X86_REG_YMM2,\n\tX86_REG_YMM3, X86_REG_YMM4, X86_REG_YMM5, X86_REG_YMM6, X86_REG_YMM7,\n\tX86_REG_YMM8, X86_REG_YMM9, X86_REG_YMM10, X86_REG_YMM11, X86_REG_YMM12,\n\tX86_REG_YMM13, X86_REG_YMM14, X86_REG_YMM15, X86_REG_YMM16, X86_REG_YMM17,\n\tX86_REG_YMM18, X86_REG_YMM19, X86_REG_YMM20, X86_REG_YMM21, X86_REG_YMM22,\n\tX86_REG_YMM23, X86_REG_YMM24, X86_REG_YMM25, X86_REG_YMM26, X86_REG_YMM27,\n\tX86_REG_YMM28, X86_REG_YMM29, X86_REG_YMM30, X86_REG_YMM31, X86_REG_ZMM0,\n\tX86_REG_ZMM1, X86_REG_ZMM2, X86_REG_ZMM3, X86_REG_ZMM4, X86_REG_ZMM5,\n\tX86_REG_ZMM6, X86_REG_ZMM7, X86_REG_ZMM8, X86_REG_ZMM9, X86_REG_ZMM10,\n\tX86_REG_ZMM11, X86_REG_ZMM12, X86_REG_ZMM13, X86_REG_ZMM14, X86_REG_ZMM15,\n\tX86_REG_ZMM16, X86_REG_ZMM17, X86_REG_ZMM18, X86_REG_ZMM19, X86_REG_ZMM20,\n\tX86_REG_ZMM21, X86_REG_ZMM22, X86_REG_ZMM23, X86_REG_ZMM24, X86_REG_ZMM25,\n\tX86_REG_ZMM26, X86_REG_ZMM27, X86_REG_ZMM28, X86_REG_ZMM29, X86_REG_ZMM30,\n\tX86_REG_ZMM31, X86_REG_R8B, X86_REG_R9B, X86_REG_R10B, X86_REG_R11B,\n\tX86_REG_R12B, X86_REG_R13B, X86_REG_R14B, X86_REG_R15B, X86_REG_R8D,\n\tX86_REG_R9D, X86_REG_R10D, X86_REG_R11D, X86_REG_R12D, X86_REG_R13D,\n\tX86_REG_R14D, X86_REG_R15D, X86_REG_R8W, X86_REG_R9W, X86_REG_R10W,\n\tX86_REG_R11W, X86_REG_R12W, X86_REG_R13W, X86_REG_R14W, X86_REG_R15W,\n\n\tX86_REG_ENDING\t\t// <-- mark the end of the list of registers\n} x86_reg;\n\n//> Operand type for instruction's operands\ntypedef enum x86_op_type {\n\tX86_OP_INVALID = 0, // = CS_OP_INVALID (Uninitialized).\n\tX86_OP_REG, // = CS_OP_REG (Register operand).\n\tX86_OP_IMM, // = CS_OP_IMM (Immediate operand).\n\tX86_OP_MEM, // = CS_OP_MEM (Memory operand).\n\tX86_OP_FP,  //  = CS_OP_FP  (Floating-Point operand).\n} x86_op_type;\n\n//> AVX broadcast type\ntypedef enum x86_avx_bcast {\n\tX86_AVX_BCAST_INVALID = 0,\t// Uninitialized.\n\tX86_AVX_BCAST_2,\t// AVX512 broadcast type {1to2}\n\tX86_AVX_BCAST_4,\t// AVX512 broadcast type {1to4}\n\tX86_AVX_BCAST_8,\t// AVX512 broadcast type {1to8}\n\tX86_AVX_BCAST_16,\t// AVX512 broadcast type {1to16}\n} x86_avx_bcast;\n\n//> SSE Code Condition type\ntypedef enum x86_sse_cc {\n\tX86_SSE_CC_INVALID = 0,\t// Uninitialized.\n\tX86_SSE_CC_EQ,\n\tX86_SSE_CC_LT,\n\tX86_SSE_CC_LE,\n\tX86_SSE_CC_UNORD,\n\tX86_SSE_CC_NEQ,\n\tX86_SSE_CC_NLT,\n\tX86_SSE_CC_NLE,\n\tX86_SSE_CC_ORD,\n\tX86_SSE_CC_EQ_UQ,\n\tX86_SSE_CC_NGE,\n\tX86_SSE_CC_NGT,\n\tX86_SSE_CC_FALSE,\n\tX86_SSE_CC_NEQ_OQ,\n\tX86_SSE_CC_GE,\n\tX86_SSE_CC_GT,\n\tX86_SSE_CC_TRUE,\n} x86_sse_cc;\n\n//> AVX Code Condition type\ntypedef enum x86_avx_cc {\n\tX86_AVX_CC_INVALID = 0,\t// Uninitialized.\n\tX86_AVX_CC_EQ,\n\tX86_AVX_CC_LT,\n\tX86_AVX_CC_LE,\n\tX86_AVX_CC_UNORD,\n\tX86_AVX_CC_NEQ,\n\tX86_AVX_CC_NLT,\n\tX86_AVX_CC_NLE,\n\tX86_AVX_CC_ORD,\n\tX86_AVX_CC_EQ_UQ,\n\tX86_AVX_CC_NGE,\n\tX86_AVX_CC_NGT,\n\tX86_AVX_CC_FALSE,\n\tX86_AVX_CC_NEQ_OQ,\n\tX86_AVX_CC_GE,\n\tX86_AVX_CC_GT,\n\tX86_AVX_CC_TRUE,\n\tX86_AVX_CC_EQ_OS,\n\tX86_AVX_CC_LT_OQ,\n\tX86_AVX_CC_LE_OQ,\n\tX86_AVX_CC_UNORD_S,\n\tX86_AVX_CC_NEQ_US,\n\tX86_AVX_CC_NLT_UQ,\n\tX86_AVX_CC_NLE_UQ,\n\tX86_AVX_CC_ORD_S,\n\tX86_AVX_CC_EQ_US,\n\tX86_AVX_CC_NGE_UQ,\n\tX86_AVX_CC_NGT_UQ,\n\tX86_AVX_CC_FALSE_OS,\n\tX86_AVX_CC_NEQ_OS,\n\tX86_AVX_CC_GE_OQ,\n\tX86_AVX_CC_GT_OQ,\n\tX86_AVX_CC_TRUE_US,\n} x86_avx_cc;\n\n//> AVX static rounding mode type\ntypedef enum x86_avx_rm {\n\tX86_AVX_RM_INVALID = 0,\t// Uninitialized.\n\tX86_AVX_RM_RN,\t// Round to nearest\n\tX86_AVX_RM_RD,\t// Round down\n\tX86_AVX_RM_RU,\t// Round up\n\tX86_AVX_RM_RZ,\t// Round toward zero\n} x86_avx_rm;\n\n//> Instruction prefixes - to be used in cs_x86.prefix[]\ntypedef enum x86_prefix {\n\tX86_PREFIX_LOCK\t\t= \t0xf0,\t// lock (cs_x86.prefix[0]\n\tX86_PREFIX_REP\t\t= \t0xf3,\t// rep (cs_x86.prefix[0]\n\tX86_PREFIX_REPNE\t= \t0xf2,\t// repne (cs_x86.prefix[0]\n\n\tX86_PREFIX_CS\t\t= \t0x2e,\t// segment override CS (cs_x86.prefix[1]\n\tX86_PREFIX_SS\t\t= \t0x36,\t// segment override SS (cs_x86.prefix[1]\n\tX86_PREFIX_DS\t\t= \t0x3e,\t// segment override DS (cs_x86.prefix[1]\n\tX86_PREFIX_ES\t\t= \t0x26,\t// segment override ES (cs_x86.prefix[1]\n\tX86_PREFIX_FS\t\t= \t0x64,\t// segment override FS (cs_x86.prefix[1]\n\tX86_PREFIX_GS\t\t= \t0x65,\t// segment override GS (cs_x86.prefix[1]\n\n\tX86_PREFIX_OPSIZE\t=\t0x66,\t// operand-size override (cs_x86.prefix[2]\n\tX86_PREFIX_ADDRSIZE\t=\t0x67,\t// address-size override (cs_x86.prefix[3]\n} x86_prefix;\n\n// Instruction's operand referring to memory\n// This is associated with X86_OP_MEM operand type above\ntypedef struct x86_op_mem {\n\tunsigned int segment; // segment register (or X86_REG_INVALID if irrelevant)\n\tunsigned int base;\t// base register (or X86_REG_INVALID if irrelevant)\n\tunsigned int index;\t// index register (or X86_REG_INVALID if irrelevant)\n\tint scale;\t// scale for index register\n\tint64_t disp;\t// displacement value\n} x86_op_mem;\n\n// Instruction operand\ntypedef struct cs_x86_op {\n\t\tx86_op_type type;\t// operand type\n\t\tunion {\n\t\t\tx86_reg reg;\t// register value for REG operand\n\t\t\tint64_t imm;\t\t// immediate value for IMM operand\n\t\t\tdouble fp;\t\t// floating point value for FP operand\n\t\t\tx86_op_mem mem;\t\t// base/index/scale/disp value for MEM operand\n\t\t};\n\n\t\t// size of this operand (in bytes).\n\t\tuint8_t size;\n\n\t\t// AVX broadcast type, or 0 if irrelevant\n\t\tx86_avx_bcast avx_bcast;\n\n\t\t// AVX zero opmask {z}\n\t\tbool avx_zero_opmask;\n} cs_x86_op;\n\n// Instruction structure\ntypedef struct cs_x86 {\n\t// Instruction prefix, which can be up to 4 bytes.\n\t// A prefix byte gets value 0 when irrelevant.\n\t// prefix[0] indicates REP/REPNE/LOCK prefix (See X86_PREFIX_REP/REPNE/LOCK above)\n\t// prefix[1] indicates segment override (irrelevant for x86_64):\n\t// See X86_PREFIX_CS/SS/DS/ES/FS/GS above.\n\t// prefix[2] indicates operand-size override (X86_PREFIX_OPSIZE)\n\t// prefix[3] indicates address-size override (X86_PREFIX_ADDRSIZE)\n\tuint8_t prefix[4];\n\n\t// Instruction opcode, which can be from 1 to 4 bytes in size.\n\t// This contains VEX opcode as well.\n\t// An trailing opcode byte gets value 0 when irrelevant.\n\tuint8_t opcode[4];\n\n\t// REX prefix: only a non-zero value is relevant for x86_64\n\tuint8_t rex;\n\n\t// Address size, which can be overridden with above prefix[5].\n\tuint8_t addr_size;\n\n\t// ModR/M byte\n\tuint8_t modrm;\n\n\t// SIB value, or 0 when irrelevant.\n\tuint8_t sib;\n\n\t// Displacement value, or 0 when irrelevant.\n\tint32_t disp;\n\n\t/* SIB state */\n\t// SIB index register, or X86_REG_INVALID when irrelevant.\n\tx86_reg sib_index;\n\t// SIB scale. only applicable if sib_index is relevant.\n\tint8_t sib_scale;\n\t// SIB base register, or X86_REG_INVALID when irrelevant.\n\tx86_reg sib_base;\n\n\t// SSE Code Condition\n\tx86_sse_cc sse_cc;\n\n\t// AVX Code Condition\n\tx86_avx_cc avx_cc;\n\n\t// AVX Suppress all Exception\n\tbool avx_sae;\n\n\t// AVX static rounding mode\n\tx86_avx_rm avx_rm;\n\n\t// Number of operands of this instruction,\n\t// or 0 when instruction has no operand.\n\tuint8_t op_count;\n\n\tcs_x86_op operands[8];\t// operands for this instruction.\n} cs_x86;\n\n//> X86 instructions\ntypedef enum x86_insn {\n\tX86_INS_INVALID = 0,\n\n\tX86_INS_AAA,\n\tX86_INS_AAD,\n\tX86_INS_AAM,\n\tX86_INS_AAS,\n\tX86_INS_FABS,\n\tX86_INS_ADC,\n\tX86_INS_ADCX,\n\tX86_INS_ADD,\n\tX86_INS_ADDPD,\n\tX86_INS_ADDPS,\n\tX86_INS_ADDSD,\n\tX86_INS_ADDSS,\n\tX86_INS_ADDSUBPD,\n\tX86_INS_ADDSUBPS,\n\tX86_INS_FADD,\n\tX86_INS_FIADD,\n\tX86_INS_FADDP,\n\tX86_INS_ADOX,\n\tX86_INS_AESDECLAST,\n\tX86_INS_AESDEC,\n\tX86_INS_AESENCLAST,\n\tX86_INS_AESENC,\n\tX86_INS_AESIMC,\n\tX86_INS_AESKEYGENASSIST,\n\tX86_INS_AND,\n\tX86_INS_ANDN,\n\tX86_INS_ANDNPD,\n\tX86_INS_ANDNPS,\n\tX86_INS_ANDPD,\n\tX86_INS_ANDPS,\n\tX86_INS_ARPL,\n\tX86_INS_BEXTR,\n\tX86_INS_BLCFILL,\n\tX86_INS_BLCI,\n\tX86_INS_BLCIC,\n\tX86_INS_BLCMSK,\n\tX86_INS_BLCS,\n\tX86_INS_BLENDPD,\n\tX86_INS_BLENDPS,\n\tX86_INS_BLENDVPD,\n\tX86_INS_BLENDVPS,\n\tX86_INS_BLSFILL,\n\tX86_INS_BLSI,\n\tX86_INS_BLSIC,\n\tX86_INS_BLSMSK,\n\tX86_INS_BLSR,\n\tX86_INS_BOUND,\n\tX86_INS_BSF,\n\tX86_INS_BSR,\n\tX86_INS_BSWAP,\n\tX86_INS_BT,\n\tX86_INS_BTC,\n\tX86_INS_BTR,\n\tX86_INS_BTS,\n\tX86_INS_BZHI,\n\tX86_INS_CALL,\n\tX86_INS_CBW,\n\tX86_INS_CDQ,\n\tX86_INS_CDQE,\n\tX86_INS_FCHS,\n\tX86_INS_CLAC,\n\tX86_INS_CLC,\n\tX86_INS_CLD,\n\tX86_INS_CLFLUSH,\n\tX86_INS_CLGI,\n\tX86_INS_CLI,\n\tX86_INS_CLTS,\n\tX86_INS_CMC,\n\tX86_INS_CMOVA,\n\tX86_INS_CMOVAE,\n\tX86_INS_CMOVB,\n\tX86_INS_CMOVBE,\n\tX86_INS_FCMOVBE,\n\tX86_INS_FCMOVB,\n\tX86_INS_CMOVE,\n\tX86_INS_FCMOVE,\n\tX86_INS_CMOVG,\n\tX86_INS_CMOVGE,\n\tX86_INS_CMOVL,\n\tX86_INS_CMOVLE,\n\tX86_INS_FCMOVNBE,\n\tX86_INS_FCMOVNB,\n\tX86_INS_CMOVNE,\n\tX86_INS_FCMOVNE,\n\tX86_INS_CMOVNO,\n\tX86_INS_CMOVNP,\n\tX86_INS_FCMOVNU,\n\tX86_INS_CMOVNS,\n\tX86_INS_CMOVO,\n\tX86_INS_CMOVP,\n\tX86_INS_FCMOVU,\n\tX86_INS_CMOVS,\n\tX86_INS_CMP,\n\tX86_INS_CMPPD,\n\tX86_INS_CMPPS,\n\tX86_INS_CMPSB,\n\tX86_INS_CMPSD,\n\tX86_INS_CMPSQ,\n\tX86_INS_CMPSS,\n\tX86_INS_CMPSW,\n\tX86_INS_CMPXCHG16B,\n\tX86_INS_CMPXCHG,\n\tX86_INS_CMPXCHG8B,\n\tX86_INS_COMISD,\n\tX86_INS_COMISS,\n\tX86_INS_FCOMP,\n\tX86_INS_FCOMPI,\n\tX86_INS_FCOMI,\n\tX86_INS_FCOM,\n\tX86_INS_FCOS,\n\tX86_INS_CPUID,\n\tX86_INS_CQO,\n\tX86_INS_CRC32,\n\tX86_INS_CVTDQ2PD,\n\tX86_INS_CVTDQ2PS,\n\tX86_INS_CVTPD2DQ,\n\tX86_INS_CVTPD2PS,\n\tX86_INS_CVTPS2DQ,\n\tX86_INS_CVTPS2PD,\n\tX86_INS_CVTSD2SI,\n\tX86_INS_CVTSD2SS,\n\tX86_INS_CVTSI2SD,\n\tX86_INS_CVTSI2SS,\n\tX86_INS_CVTSS2SD,\n\tX86_INS_CVTSS2SI,\n\tX86_INS_CVTTPD2DQ,\n\tX86_INS_CVTTPS2DQ,\n\tX86_INS_CVTTSD2SI,\n\tX86_INS_CVTTSS2SI,\n\tX86_INS_CWD,\n\tX86_INS_CWDE,\n\tX86_INS_DAA,\n\tX86_INS_DAS,\n\tX86_INS_DATA16,\n\tX86_INS_DEC,\n\tX86_INS_DIV,\n\tX86_INS_DIVPD,\n\tX86_INS_DIVPS,\n\tX86_INS_FDIVR,\n\tX86_INS_FIDIVR,\n\tX86_INS_FDIVRP,\n\tX86_INS_DIVSD,\n\tX86_INS_DIVSS,\n\tX86_INS_FDIV,\n\tX86_INS_FIDIV,\n\tX86_INS_FDIVP,\n\tX86_INS_DPPD,\n\tX86_INS_DPPS,\n\tX86_INS_RET,\n\tX86_INS_ENCLS,\n\tX86_INS_ENCLU,\n\tX86_INS_ENTER,\n\tX86_INS_EXTRACTPS,\n\tX86_INS_EXTRQ,\n\tX86_INS_F2XM1,\n\tX86_INS_LCALL,\n\tX86_INS_LJMP,\n\tX86_INS_FBLD,\n\tX86_INS_FBSTP,\n\tX86_INS_FCOMPP,\n\tX86_INS_FDECSTP,\n\tX86_INS_FEMMS,\n\tX86_INS_FFREE,\n\tX86_INS_FICOM,\n\tX86_INS_FICOMP,\n\tX86_INS_FINCSTP,\n\tX86_INS_FLDCW,\n\tX86_INS_FLDENV,\n\tX86_INS_FLDL2E,\n\tX86_INS_FLDL2T,\n\tX86_INS_FLDLG2,\n\tX86_INS_FLDLN2,\n\tX86_INS_FLDPI,\n\tX86_INS_FNCLEX,\n\tX86_INS_FNINIT,\n\tX86_INS_FNOP,\n\tX86_INS_FNSTCW,\n\tX86_INS_FNSTSW,\n\tX86_INS_FPATAN,\n\tX86_INS_FPREM,\n\tX86_INS_FPREM1,\n\tX86_INS_FPTAN,\n\tX86_INS_FRNDINT,\n\tX86_INS_FRSTOR,\n\tX86_INS_FNSAVE,\n\tX86_INS_FSCALE,\n\tX86_INS_FSETPM,\n\tX86_INS_FSINCOS,\n\tX86_INS_FNSTENV,\n\tX86_INS_FXAM,\n\tX86_INS_FXRSTOR,\n\tX86_INS_FXRSTOR64,\n\tX86_INS_FXSAVE,\n\tX86_INS_FXSAVE64,\n\tX86_INS_FXTRACT,\n\tX86_INS_FYL2X,\n\tX86_INS_FYL2XP1,\n\tX86_INS_MOVAPD,\n\tX86_INS_MOVAPS,\n\tX86_INS_ORPD,\n\tX86_INS_ORPS,\n\tX86_INS_VMOVAPD,\n\tX86_INS_VMOVAPS,\n\tX86_INS_XORPD,\n\tX86_INS_XORPS,\n\tX86_INS_GETSEC,\n\tX86_INS_HADDPD,\n\tX86_INS_HADDPS,\n\tX86_INS_HLT,\n\tX86_INS_HSUBPD,\n\tX86_INS_HSUBPS,\n\tX86_INS_IDIV,\n\tX86_INS_FILD,\n\tX86_INS_IMUL,\n\tX86_INS_IN,\n\tX86_INS_INC,\n\tX86_INS_INSB,\n\tX86_INS_INSERTPS,\n\tX86_INS_INSERTQ,\n\tX86_INS_INSD,\n\tX86_INS_INSW,\n\tX86_INS_INT,\n\tX86_INS_INT1,\n\tX86_INS_INT3,\n\tX86_INS_INTO,\n\tX86_INS_INVD,\n\tX86_INS_INVEPT,\n\tX86_INS_INVLPG,\n\tX86_INS_INVLPGA,\n\tX86_INS_INVPCID,\n\tX86_INS_INVVPID,\n\tX86_INS_IRET,\n\tX86_INS_IRETD,\n\tX86_INS_IRETQ,\n\tX86_INS_FISTTP,\n\tX86_INS_FIST,\n\tX86_INS_FISTP,\n\tX86_INS_UCOMISD,\n\tX86_INS_UCOMISS,\n\tX86_INS_VCMP,\n\tX86_INS_VCOMISD,\n\tX86_INS_VCOMISS,\n\tX86_INS_VCVTSD2SS,\n\tX86_INS_VCVTSI2SD,\n\tX86_INS_VCVTSI2SS,\n\tX86_INS_VCVTSS2SD,\n\tX86_INS_VCVTTSD2SI,\n\tX86_INS_VCVTTSD2USI,\n\tX86_INS_VCVTTSS2SI,\n\tX86_INS_VCVTTSS2USI,\n\tX86_INS_VCVTUSI2SD,\n\tX86_INS_VCVTUSI2SS,\n\tX86_INS_VUCOMISD,\n\tX86_INS_VUCOMISS,\n\tX86_INS_JAE,\n\tX86_INS_JA,\n\tX86_INS_JBE,\n\tX86_INS_JB,\n\tX86_INS_JCXZ,\n\tX86_INS_JECXZ,\n\tX86_INS_JE,\n\tX86_INS_JGE,\n\tX86_INS_JG,\n\tX86_INS_JLE,\n\tX86_INS_JL,\n\tX86_INS_JMP,\n\tX86_INS_JNE,\n\tX86_INS_JNO,\n\tX86_INS_JNP,\n\tX86_INS_JNS,\n\tX86_INS_JO,\n\tX86_INS_JP,\n\tX86_INS_JRCXZ,\n\tX86_INS_JS,\n\tX86_INS_KANDB,\n\tX86_INS_KANDD,\n\tX86_INS_KANDNB,\n\tX86_INS_KANDND,\n\tX86_INS_KANDNQ,\n\tX86_INS_KANDNW,\n\tX86_INS_KANDQ,\n\tX86_INS_KANDW,\n\tX86_INS_KMOVB,\n\tX86_INS_KMOVD,\n\tX86_INS_KMOVQ,\n\tX86_INS_KMOVW,\n\tX86_INS_KNOTB,\n\tX86_INS_KNOTD,\n\tX86_INS_KNOTQ,\n\tX86_INS_KNOTW,\n\tX86_INS_KORB,\n\tX86_INS_KORD,\n\tX86_INS_KORQ,\n\tX86_INS_KORTESTW,\n\tX86_INS_KORW,\n\tX86_INS_KSHIFTLW,\n\tX86_INS_KSHIFTRW,\n\tX86_INS_KUNPCKBW,\n\tX86_INS_KXNORB,\n\tX86_INS_KXNORD,\n\tX86_INS_KXNORQ,\n\tX86_INS_KXNORW,\n\tX86_INS_KXORB,\n\tX86_INS_KXORD,\n\tX86_INS_KXORQ,\n\tX86_INS_KXORW,\n\tX86_INS_LAHF,\n\tX86_INS_LAR,\n\tX86_INS_LDDQU,\n\tX86_INS_LDMXCSR,\n\tX86_INS_LDS,\n\tX86_INS_FLDZ,\n\tX86_INS_FLD1,\n\tX86_INS_FLD,\n\tX86_INS_LEA,\n\tX86_INS_LEAVE,\n\tX86_INS_LES,\n\tX86_INS_LFENCE,\n\tX86_INS_LFS,\n\tX86_INS_LGDT,\n\tX86_INS_LGS,\n\tX86_INS_LIDT,\n\tX86_INS_LLDT,\n\tX86_INS_LMSW,\n\tX86_INS_OR,\n\tX86_INS_SUB,\n\tX86_INS_XOR,\n\tX86_INS_LODSB,\n\tX86_INS_LODSD,\n\tX86_INS_LODSQ,\n\tX86_INS_LODSW,\n\tX86_INS_LOOP,\n\tX86_INS_LOOPE,\n\tX86_INS_LOOPNE,\n\tX86_INS_RETF,\n\tX86_INS_RETFQ,\n\tX86_INS_LSL,\n\tX86_INS_LSS,\n\tX86_INS_LTR,\n\tX86_INS_XADD,\n\tX86_INS_LZCNT,\n\tX86_INS_MASKMOVDQU,\n\tX86_INS_MAXPD,\n\tX86_INS_MAXPS,\n\tX86_INS_MAXSD,\n\tX86_INS_MAXSS,\n\tX86_INS_MFENCE,\n\tX86_INS_MINPD,\n\tX86_INS_MINPS,\n\tX86_INS_MINSD,\n\tX86_INS_MINSS,\n\tX86_INS_CVTPD2PI,\n\tX86_INS_CVTPI2PD,\n\tX86_INS_CVTPI2PS,\n\tX86_INS_CVTPS2PI,\n\tX86_INS_CVTTPD2PI,\n\tX86_INS_CVTTPS2PI,\n\tX86_INS_EMMS,\n\tX86_INS_MASKMOVQ,\n\tX86_INS_MOVD,\n\tX86_INS_MOVDQ2Q,\n\tX86_INS_MOVNTQ,\n\tX86_INS_MOVQ2DQ,\n\tX86_INS_MOVQ,\n\tX86_INS_PABSB,\n\tX86_INS_PABSD,\n\tX86_INS_PABSW,\n\tX86_INS_PACKSSDW,\n\tX86_INS_PACKSSWB,\n\tX86_INS_PACKUSWB,\n\tX86_INS_PADDB,\n\tX86_INS_PADDD,\n\tX86_INS_PADDQ,\n\tX86_INS_PADDSB,\n\tX86_INS_PADDSW,\n\tX86_INS_PADDUSB,\n\tX86_INS_PADDUSW,\n\tX86_INS_PADDW,\n\tX86_INS_PALIGNR,\n\tX86_INS_PANDN,\n\tX86_INS_PAND,\n\tX86_INS_PAVGB,\n\tX86_INS_PAVGW,\n\tX86_INS_PCMPEQB,\n\tX86_INS_PCMPEQD,\n\tX86_INS_PCMPEQW,\n\tX86_INS_PCMPGTB,\n\tX86_INS_PCMPGTD,\n\tX86_INS_PCMPGTW,\n\tX86_INS_PEXTRW,\n\tX86_INS_PHADDSW,\n\tX86_INS_PHADDW,\n\tX86_INS_PHADDD,\n\tX86_INS_PHSUBD,\n\tX86_INS_PHSUBSW,\n\tX86_INS_PHSUBW,\n\tX86_INS_PINSRW,\n\tX86_INS_PMADDUBSW,\n\tX86_INS_PMADDWD,\n\tX86_INS_PMAXSW,\n\tX86_INS_PMAXUB,\n\tX86_INS_PMINSW,\n\tX86_INS_PMINUB,\n\tX86_INS_PMOVMSKB,\n\tX86_INS_PMULHRSW,\n\tX86_INS_PMULHUW,\n\tX86_INS_PMULHW,\n\tX86_INS_PMULLW,\n\tX86_INS_PMULUDQ,\n\tX86_INS_POR,\n\tX86_INS_PSADBW,\n\tX86_INS_PSHUFB,\n\tX86_INS_PSHUFW,\n\tX86_INS_PSIGNB,\n\tX86_INS_PSIGND,\n\tX86_INS_PSIGNW,\n\tX86_INS_PSLLD,\n\tX86_INS_PSLLQ,\n\tX86_INS_PSLLW,\n\tX86_INS_PSRAD,\n\tX86_INS_PSRAW,\n\tX86_INS_PSRLD,\n\tX86_INS_PSRLQ,\n\tX86_INS_PSRLW,\n\tX86_INS_PSUBB,\n\tX86_INS_PSUBD,\n\tX86_INS_PSUBQ,\n\tX86_INS_PSUBSB,\n\tX86_INS_PSUBSW,\n\tX86_INS_PSUBUSB,\n\tX86_INS_PSUBUSW,\n\tX86_INS_PSUBW,\n\tX86_INS_PUNPCKHBW,\n\tX86_INS_PUNPCKHDQ,\n\tX86_INS_PUNPCKHWD,\n\tX86_INS_PUNPCKLBW,\n\tX86_INS_PUNPCKLDQ,\n\tX86_INS_PUNPCKLWD,\n\tX86_INS_PXOR,\n\tX86_INS_MONITOR,\n\tX86_INS_MONTMUL,\n\tX86_INS_MOV,\n\tX86_INS_MOVABS,\n\tX86_INS_MOVBE,\n\tX86_INS_MOVDDUP,\n\tX86_INS_MOVDQA,\n\tX86_INS_MOVDQU,\n\tX86_INS_MOVHLPS,\n\tX86_INS_MOVHPD,\n\tX86_INS_MOVHPS,\n\tX86_INS_MOVLHPS,\n\tX86_INS_MOVLPD,\n\tX86_INS_MOVLPS,\n\tX86_INS_MOVMSKPD,\n\tX86_INS_MOVMSKPS,\n\tX86_INS_MOVNTDQA,\n\tX86_INS_MOVNTDQ,\n\tX86_INS_MOVNTI,\n\tX86_INS_MOVNTPD,\n\tX86_INS_MOVNTPS,\n\tX86_INS_MOVNTSD,\n\tX86_INS_MOVNTSS,\n\tX86_INS_MOVSB,\n\tX86_INS_MOVSD,\n\tX86_INS_MOVSHDUP,\n\tX86_INS_MOVSLDUP,\n\tX86_INS_MOVSQ,\n\tX86_INS_MOVSS,\n\tX86_INS_MOVSW,\n\tX86_INS_MOVSX,\n\tX86_INS_MOVSXD,\n\tX86_INS_MOVUPD,\n\tX86_INS_MOVUPS,\n\tX86_INS_MOVZX,\n\tX86_INS_MPSADBW,\n\tX86_INS_MUL,\n\tX86_INS_MULPD,\n\tX86_INS_MULPS,\n\tX86_INS_MULSD,\n\tX86_INS_MULSS,\n\tX86_INS_MULX,\n\tX86_INS_FMUL,\n\tX86_INS_FIMUL,\n\tX86_INS_FMULP,\n\tX86_INS_MWAIT,\n\tX86_INS_NEG,\n\tX86_INS_NOP,\n\tX86_INS_NOT,\n\tX86_INS_OUT,\n\tX86_INS_OUTSB,\n\tX86_INS_OUTSD,\n\tX86_INS_OUTSW,\n\tX86_INS_PACKUSDW,\n\tX86_INS_PAUSE,\n\tX86_INS_PAVGUSB,\n\tX86_INS_PBLENDVB,\n\tX86_INS_PBLENDW,\n\tX86_INS_PCLMULQDQ,\n\tX86_INS_PCMPEQQ,\n\tX86_INS_PCMPESTRI,\n\tX86_INS_PCMPESTRM,\n\tX86_INS_PCMPGTQ,\n\tX86_INS_PCMPISTRI,\n\tX86_INS_PCMPISTRM,\n\tX86_INS_PDEP,\n\tX86_INS_PEXT,\n\tX86_INS_PEXTRB,\n\tX86_INS_PEXTRD,\n\tX86_INS_PEXTRQ,\n\tX86_INS_PF2ID,\n\tX86_INS_PF2IW,\n\tX86_INS_PFACC,\n\tX86_INS_PFADD,\n\tX86_INS_PFCMPEQ,\n\tX86_INS_PFCMPGE,\n\tX86_INS_PFCMPGT,\n\tX86_INS_PFMAX,\n\tX86_INS_PFMIN,\n\tX86_INS_PFMUL,\n\tX86_INS_PFNACC,\n\tX86_INS_PFPNACC,\n\tX86_INS_PFRCPIT1,\n\tX86_INS_PFRCPIT2,\n\tX86_INS_PFRCP,\n\tX86_INS_PFRSQIT1,\n\tX86_INS_PFRSQRT,\n\tX86_INS_PFSUBR,\n\tX86_INS_PFSUB,\n\tX86_INS_PHMINPOSUW,\n\tX86_INS_PI2FD,\n\tX86_INS_PI2FW,\n\tX86_INS_PINSRB,\n\tX86_INS_PINSRD,\n\tX86_INS_PINSRQ,\n\tX86_INS_PMAXSB,\n\tX86_INS_PMAXSD,\n\tX86_INS_PMAXUD,\n\tX86_INS_PMAXUW,\n\tX86_INS_PMINSB,\n\tX86_INS_PMINSD,\n\tX86_INS_PMINUD,\n\tX86_INS_PMINUW,\n\tX86_INS_PMOVSXBD,\n\tX86_INS_PMOVSXBQ,\n\tX86_INS_PMOVSXBW,\n\tX86_INS_PMOVSXDQ,\n\tX86_INS_PMOVSXWD,\n\tX86_INS_PMOVSXWQ,\n\tX86_INS_PMOVZXBD,\n\tX86_INS_PMOVZXBQ,\n\tX86_INS_PMOVZXBW,\n\tX86_INS_PMOVZXDQ,\n\tX86_INS_PMOVZXWD,\n\tX86_INS_PMOVZXWQ,\n\tX86_INS_PMULDQ,\n\tX86_INS_PMULHRW,\n\tX86_INS_PMULLD,\n\tX86_INS_POP,\n\tX86_INS_POPAW,\n\tX86_INS_POPAL,\n\tX86_INS_POPCNT,\n\tX86_INS_POPF,\n\tX86_INS_POPFD,\n\tX86_INS_POPFQ,\n\tX86_INS_PREFETCH,\n\tX86_INS_PREFETCHNTA,\n\tX86_INS_PREFETCHT0,\n\tX86_INS_PREFETCHT1,\n\tX86_INS_PREFETCHT2,\n\tX86_INS_PREFETCHW,\n\tX86_INS_PSHUFD,\n\tX86_INS_PSHUFHW,\n\tX86_INS_PSHUFLW,\n\tX86_INS_PSLLDQ,\n\tX86_INS_PSRLDQ,\n\tX86_INS_PSWAPD,\n\tX86_INS_PTEST,\n\tX86_INS_PUNPCKHQDQ,\n\tX86_INS_PUNPCKLQDQ,\n\tX86_INS_PUSH,\n\tX86_INS_PUSHAW,\n\tX86_INS_PUSHAL,\n\tX86_INS_PUSHF,\n\tX86_INS_PUSHFD,\n\tX86_INS_PUSHFQ,\n\tX86_INS_RCL,\n\tX86_INS_RCPPS,\n\tX86_INS_RCPSS,\n\tX86_INS_RCR,\n\tX86_INS_RDFSBASE,\n\tX86_INS_RDGSBASE,\n\tX86_INS_RDMSR,\n\tX86_INS_RDPMC,\n\tX86_INS_RDRAND,\n\tX86_INS_RDSEED,\n\tX86_INS_RDTSC,\n\tX86_INS_RDTSCP,\n\tX86_INS_ROL,\n\tX86_INS_ROR,\n\tX86_INS_RORX,\n\tX86_INS_ROUNDPD,\n\tX86_INS_ROUNDPS,\n\tX86_INS_ROUNDSD,\n\tX86_INS_ROUNDSS,\n\tX86_INS_RSM,\n\tX86_INS_RSQRTPS,\n\tX86_INS_RSQRTSS,\n\tX86_INS_SAHF,\n\tX86_INS_SAL,\n\tX86_INS_SALC,\n\tX86_INS_SAR,\n\tX86_INS_SARX,\n\tX86_INS_SBB,\n\tX86_INS_SCASB,\n\tX86_INS_SCASD,\n\tX86_INS_SCASQ,\n\tX86_INS_SCASW,\n\tX86_INS_SETAE,\n\tX86_INS_SETA,\n\tX86_INS_SETBE,\n\tX86_INS_SETB,\n\tX86_INS_SETE,\n\tX86_INS_SETGE,\n\tX86_INS_SETG,\n\tX86_INS_SETLE,\n\tX86_INS_SETL,\n\tX86_INS_SETNE,\n\tX86_INS_SETNO,\n\tX86_INS_SETNP,\n\tX86_INS_SETNS,\n\tX86_INS_SETO,\n\tX86_INS_SETP,\n\tX86_INS_SETS,\n\tX86_INS_SFENCE,\n\tX86_INS_SGDT,\n\tX86_INS_SHA1MSG1,\n\tX86_INS_SHA1MSG2,\n\tX86_INS_SHA1NEXTE,\n\tX86_INS_SHA1RNDS4,\n\tX86_INS_SHA256MSG1,\n\tX86_INS_SHA256MSG2,\n\tX86_INS_SHA256RNDS2,\n\tX86_INS_SHL,\n\tX86_INS_SHLD,\n\tX86_INS_SHLX,\n\tX86_INS_SHR,\n\tX86_INS_SHRD,\n\tX86_INS_SHRX,\n\tX86_INS_SHUFPD,\n\tX86_INS_SHUFPS,\n\tX86_INS_SIDT,\n\tX86_INS_FSIN,\n\tX86_INS_SKINIT,\n\tX86_INS_SLDT,\n\tX86_INS_SMSW,\n\tX86_INS_SQRTPD,\n\tX86_INS_SQRTPS,\n\tX86_INS_SQRTSD,\n\tX86_INS_SQRTSS,\n\tX86_INS_FSQRT,\n\tX86_INS_STAC,\n\tX86_INS_STC,\n\tX86_INS_STD,\n\tX86_INS_STGI,\n\tX86_INS_STI,\n\tX86_INS_STMXCSR,\n\tX86_INS_STOSB,\n\tX86_INS_STOSD,\n\tX86_INS_STOSQ,\n\tX86_INS_STOSW,\n\tX86_INS_STR,\n\tX86_INS_FST,\n\tX86_INS_FSTP,\n\tX86_INS_FSTPNCE,\n\tX86_INS_SUBPD,\n\tX86_INS_SUBPS,\n\tX86_INS_FSUBR,\n\tX86_INS_FISUBR,\n\tX86_INS_FSUBRP,\n\tX86_INS_SUBSD,\n\tX86_INS_SUBSS,\n\tX86_INS_FSUB,\n\tX86_INS_FISUB,\n\tX86_INS_FSUBP,\n\tX86_INS_SWAPGS,\n\tX86_INS_SYSCALL,\n\tX86_INS_SYSENTER,\n\tX86_INS_SYSEXIT,\n\tX86_INS_SYSRET,\n\tX86_INS_T1MSKC,\n\tX86_INS_TEST,\n\tX86_INS_UD2,\n\tX86_INS_FTST,\n\tX86_INS_TZCNT,\n\tX86_INS_TZMSK,\n\tX86_INS_FUCOMPI,\n\tX86_INS_FUCOMI,\n\tX86_INS_FUCOMPP,\n\tX86_INS_FUCOMP,\n\tX86_INS_FUCOM,\n\tX86_INS_UD2B,\n\tX86_INS_UNPCKHPD,\n\tX86_INS_UNPCKHPS,\n\tX86_INS_UNPCKLPD,\n\tX86_INS_UNPCKLPS,\n\tX86_INS_VADDPD,\n\tX86_INS_VADDPS,\n\tX86_INS_VADDSD,\n\tX86_INS_VADDSS,\n\tX86_INS_VADDSUBPD,\n\tX86_INS_VADDSUBPS,\n\tX86_INS_VAESDECLAST,\n\tX86_INS_VAESDEC,\n\tX86_INS_VAESENCLAST,\n\tX86_INS_VAESENC,\n\tX86_INS_VAESIMC,\n\tX86_INS_VAESKEYGENASSIST,\n\tX86_INS_VALIGND,\n\tX86_INS_VALIGNQ,\n\tX86_INS_VANDNPD,\n\tX86_INS_VANDNPS,\n\tX86_INS_VANDPD,\n\tX86_INS_VANDPS,\n\tX86_INS_VBLENDMPD,\n\tX86_INS_VBLENDMPS,\n\tX86_INS_VBLENDPD,\n\tX86_INS_VBLENDPS,\n\tX86_INS_VBLENDVPD,\n\tX86_INS_VBLENDVPS,\n\tX86_INS_VBROADCASTF128,\n\tX86_INS_VBROADCASTI128,\n\tX86_INS_VBROADCASTI32X4,\n\tX86_INS_VBROADCASTI64X4,\n\tX86_INS_VBROADCASTSD,\n\tX86_INS_VBROADCASTSS,\n\tX86_INS_VCMPPD,\n\tX86_INS_VCMPPS,\n\tX86_INS_VCMPSD,\n\tX86_INS_VCMPSS,\n\tX86_INS_VCVTDQ2PD,\n\tX86_INS_VCVTDQ2PS,\n\tX86_INS_VCVTPD2DQX,\n\tX86_INS_VCVTPD2DQ,\n\tX86_INS_VCVTPD2PSX,\n\tX86_INS_VCVTPD2PS,\n\tX86_INS_VCVTPD2UDQ,\n\tX86_INS_VCVTPH2PS,\n\tX86_INS_VCVTPS2DQ,\n\tX86_INS_VCVTPS2PD,\n\tX86_INS_VCVTPS2PH,\n\tX86_INS_VCVTPS2UDQ,\n\tX86_INS_VCVTSD2SI,\n\tX86_INS_VCVTSD2USI,\n\tX86_INS_VCVTSS2SI,\n\tX86_INS_VCVTSS2USI,\n\tX86_INS_VCVTTPD2DQX,\n\tX86_INS_VCVTTPD2DQ,\n\tX86_INS_VCVTTPD2UDQ,\n\tX86_INS_VCVTTPS2DQ,\n\tX86_INS_VCVTTPS2UDQ,\n\tX86_INS_VCVTUDQ2PD,\n\tX86_INS_VCVTUDQ2PS,\n\tX86_INS_VDIVPD,\n\tX86_INS_VDIVPS,\n\tX86_INS_VDIVSD,\n\tX86_INS_VDIVSS,\n\tX86_INS_VDPPD,\n\tX86_INS_VDPPS,\n\tX86_INS_VERR,\n\tX86_INS_VERW,\n\tX86_INS_VEXTRACTF128,\n\tX86_INS_VEXTRACTF32X4,\n\tX86_INS_VEXTRACTF64X4,\n\tX86_INS_VEXTRACTI128,\n\tX86_INS_VEXTRACTI32X4,\n\tX86_INS_VEXTRACTI64X4,\n\tX86_INS_VEXTRACTPS,\n\tX86_INS_VFMADD132PD,\n\tX86_INS_VFMADD132PS,\n\tX86_INS_VFMADD213PD,\n\tX86_INS_VFMADD213PS,\n\tX86_INS_VFMADDPD,\n\tX86_INS_VFMADD231PD,\n\tX86_INS_VFMADDPS,\n\tX86_INS_VFMADD231PS,\n\tX86_INS_VFMADDSD,\n\tX86_INS_VFMADD213SD,\n\tX86_INS_VFMADD132SD,\n\tX86_INS_VFMADD231SD,\n\tX86_INS_VFMADDSS,\n\tX86_INS_VFMADD213SS,\n\tX86_INS_VFMADD132SS,\n\tX86_INS_VFMADD231SS,\n\tX86_INS_VFMADDSUB132PD,\n\tX86_INS_VFMADDSUB132PS,\n\tX86_INS_VFMADDSUB213PD,\n\tX86_INS_VFMADDSUB213PS,\n\tX86_INS_VFMADDSUBPD,\n\tX86_INS_VFMADDSUB231PD,\n\tX86_INS_VFMADDSUBPS,\n\tX86_INS_VFMADDSUB231PS,\n\tX86_INS_VFMSUB132PD,\n\tX86_INS_VFMSUB132PS,\n\tX86_INS_VFMSUB213PD,\n\tX86_INS_VFMSUB213PS,\n\tX86_INS_VFMSUBADD132PD,\n\tX86_INS_VFMSUBADD132PS,\n\tX86_INS_VFMSUBADD213PD,\n\tX86_INS_VFMSUBADD213PS,\n\tX86_INS_VFMSUBADDPD,\n\tX86_INS_VFMSUBADD231PD,\n\tX86_INS_VFMSUBADDPS,\n\tX86_INS_VFMSUBADD231PS,\n\tX86_INS_VFMSUBPD,\n\tX86_INS_VFMSUB231PD,\n\tX86_INS_VFMSUBPS,\n\tX86_INS_VFMSUB231PS,\n\tX86_INS_VFMSUBSD,\n\tX86_INS_VFMSUB213SD,\n\tX86_INS_VFMSUB132SD,\n\tX86_INS_VFMSUB231SD,\n\tX86_INS_VFMSUBSS,\n\tX86_INS_VFMSUB213SS,\n\tX86_INS_VFMSUB132SS,\n\tX86_INS_VFMSUB231SS,\n\tX86_INS_VFNMADD132PD,\n\tX86_INS_VFNMADD132PS,\n\tX86_INS_VFNMADD213PD,\n\tX86_INS_VFNMADD213PS,\n\tX86_INS_VFNMADDPD,\n\tX86_INS_VFNMADD231PD,\n\tX86_INS_VFNMADDPS,\n\tX86_INS_VFNMADD231PS,\n\tX86_INS_VFNMADDSD,\n\tX86_INS_VFNMADD213SD,\n\tX86_INS_VFNMADD132SD,\n\tX86_INS_VFNMADD231SD,\n\tX86_INS_VFNMADDSS,\n\tX86_INS_VFNMADD213SS,\n\tX86_INS_VFNMADD132SS,\n\tX86_INS_VFNMADD231SS,\n\tX86_INS_VFNMSUB132PD,\n\tX86_INS_VFNMSUB132PS,\n\tX86_INS_VFNMSUB213PD,\n\tX86_INS_VFNMSUB213PS,\n\tX86_INS_VFNMSUBPD,\n\tX86_INS_VFNMSUB231PD,\n\tX86_INS_VFNMSUBPS,\n\tX86_INS_VFNMSUB231PS,\n\tX86_INS_VFNMSUBSD,\n\tX86_INS_VFNMSUB213SD,\n\tX86_INS_VFNMSUB132SD,\n\tX86_INS_VFNMSUB231SD,\n\tX86_INS_VFNMSUBSS,\n\tX86_INS_VFNMSUB213SS,\n\tX86_INS_VFNMSUB132SS,\n\tX86_INS_VFNMSUB231SS,\n\tX86_INS_VFRCZPD,\n\tX86_INS_VFRCZPS,\n\tX86_INS_VFRCZSD,\n\tX86_INS_VFRCZSS,\n\tX86_INS_VORPD,\n\tX86_INS_VORPS,\n\tX86_INS_VXORPD,\n\tX86_INS_VXORPS,\n\tX86_INS_VGATHERDPD,\n\tX86_INS_VGATHERDPS,\n\tX86_INS_VGATHERPF0DPD,\n\tX86_INS_VGATHERPF0DPS,\n\tX86_INS_VGATHERPF0QPD,\n\tX86_INS_VGATHERPF0QPS,\n\tX86_INS_VGATHERPF1DPD,\n\tX86_INS_VGATHERPF1DPS,\n\tX86_INS_VGATHERPF1QPD,\n\tX86_INS_VGATHERPF1QPS,\n\tX86_INS_VGATHERQPD,\n\tX86_INS_VGATHERQPS,\n\tX86_INS_VHADDPD,\n\tX86_INS_VHADDPS,\n\tX86_INS_VHSUBPD,\n\tX86_INS_VHSUBPS,\n\tX86_INS_VINSERTF128,\n\tX86_INS_VINSERTF32X4,\n\tX86_INS_VINSERTF64X4,\n\tX86_INS_VINSERTI128,\n\tX86_INS_VINSERTI32X4,\n\tX86_INS_VINSERTI64X4,\n\tX86_INS_VINSERTPS,\n\tX86_INS_VLDDQU,\n\tX86_INS_VLDMXCSR,\n\tX86_INS_VMASKMOVDQU,\n\tX86_INS_VMASKMOVPD,\n\tX86_INS_VMASKMOVPS,\n\tX86_INS_VMAXPD,\n\tX86_INS_VMAXPS,\n\tX86_INS_VMAXSD,\n\tX86_INS_VMAXSS,\n\tX86_INS_VMCALL,\n\tX86_INS_VMCLEAR,\n\tX86_INS_VMFUNC,\n\tX86_INS_VMINPD,\n\tX86_INS_VMINPS,\n\tX86_INS_VMINSD,\n\tX86_INS_VMINSS,\n\tX86_INS_VMLAUNCH,\n\tX86_INS_VMLOAD,\n\tX86_INS_VMMCALL,\n\tX86_INS_VMOVQ,\n\tX86_INS_VMOVDDUP,\n\tX86_INS_VMOVD,\n\tX86_INS_VMOVDQA32,\n\tX86_INS_VMOVDQA64,\n\tX86_INS_VMOVDQA,\n\tX86_INS_VMOVDQU16,\n\tX86_INS_VMOVDQU32,\n\tX86_INS_VMOVDQU64,\n\tX86_INS_VMOVDQU8,\n\tX86_INS_VMOVDQU,\n\tX86_INS_VMOVHLPS,\n\tX86_INS_VMOVHPD,\n\tX86_INS_VMOVHPS,\n\tX86_INS_VMOVLHPS,\n\tX86_INS_VMOVLPD,\n\tX86_INS_VMOVLPS,\n\tX86_INS_VMOVMSKPD,\n\tX86_INS_VMOVMSKPS,\n\tX86_INS_VMOVNTDQA,\n\tX86_INS_VMOVNTDQ,\n\tX86_INS_VMOVNTPD,\n\tX86_INS_VMOVNTPS,\n\tX86_INS_VMOVSD,\n\tX86_INS_VMOVSHDUP,\n\tX86_INS_VMOVSLDUP,\n\tX86_INS_VMOVSS,\n\tX86_INS_VMOVUPD,\n\tX86_INS_VMOVUPS,\n\tX86_INS_VMPSADBW,\n\tX86_INS_VMPTRLD,\n\tX86_INS_VMPTRST,\n\tX86_INS_VMREAD,\n\tX86_INS_VMRESUME,\n\tX86_INS_VMRUN,\n\tX86_INS_VMSAVE,\n\tX86_INS_VMULPD,\n\tX86_INS_VMULPS,\n\tX86_INS_VMULSD,\n\tX86_INS_VMULSS,\n\tX86_INS_VMWRITE,\n\tX86_INS_VMXOFF,\n\tX86_INS_VMXON,\n\tX86_INS_VPABSB,\n\tX86_INS_VPABSD,\n\tX86_INS_VPABSQ,\n\tX86_INS_VPABSW,\n\tX86_INS_VPACKSSDW,\n\tX86_INS_VPACKSSWB,\n\tX86_INS_VPACKUSDW,\n\tX86_INS_VPACKUSWB,\n\tX86_INS_VPADDB,\n\tX86_INS_VPADDD,\n\tX86_INS_VPADDQ,\n\tX86_INS_VPADDSB,\n\tX86_INS_VPADDSW,\n\tX86_INS_VPADDUSB,\n\tX86_INS_VPADDUSW,\n\tX86_INS_VPADDW,\n\tX86_INS_VPALIGNR,\n\tX86_INS_VPANDD,\n\tX86_INS_VPANDND,\n\tX86_INS_VPANDNQ,\n\tX86_INS_VPANDN,\n\tX86_INS_VPANDQ,\n\tX86_INS_VPAND,\n\tX86_INS_VPAVGB,\n\tX86_INS_VPAVGW,\n\tX86_INS_VPBLENDD,\n\tX86_INS_VPBLENDMD,\n\tX86_INS_VPBLENDMQ,\n\tX86_INS_VPBLENDVB,\n\tX86_INS_VPBLENDW,\n\tX86_INS_VPBROADCASTB,\n\tX86_INS_VPBROADCASTD,\n\tX86_INS_VPBROADCASTMB2Q,\n\tX86_INS_VPBROADCASTMW2D,\n\tX86_INS_VPBROADCASTQ,\n\tX86_INS_VPBROADCASTW,\n\tX86_INS_VPCLMULQDQ,\n\tX86_INS_VPCMOV,\n\tX86_INS_VPCMP,\n\tX86_INS_VPCMPD,\n\tX86_INS_VPCMPEQB,\n\tX86_INS_VPCMPEQD,\n\tX86_INS_VPCMPEQQ,\n\tX86_INS_VPCMPEQW,\n\tX86_INS_VPCMPESTRI,\n\tX86_INS_VPCMPESTRM,\n\tX86_INS_VPCMPGTB,\n\tX86_INS_VPCMPGTD,\n\tX86_INS_VPCMPGTQ,\n\tX86_INS_VPCMPGTW,\n\tX86_INS_VPCMPISTRI,\n\tX86_INS_VPCMPISTRM,\n\tX86_INS_VPCMPQ,\n\tX86_INS_VPCMPUD,\n\tX86_INS_VPCMPUQ,\n\tX86_INS_VPCOMB,\n\tX86_INS_VPCOMD,\n\tX86_INS_VPCOMQ,\n\tX86_INS_VPCOMUB,\n\tX86_INS_VPCOMUD,\n\tX86_INS_VPCOMUQ,\n\tX86_INS_VPCOMUW,\n\tX86_INS_VPCOMW,\n\tX86_INS_VPCONFLICTD,\n\tX86_INS_VPCONFLICTQ,\n\tX86_INS_VPERM2F128,\n\tX86_INS_VPERM2I128,\n\tX86_INS_VPERMD,\n\tX86_INS_VPERMI2D,\n\tX86_INS_VPERMI2PD,\n\tX86_INS_VPERMI2PS,\n\tX86_INS_VPERMI2Q,\n\tX86_INS_VPERMIL2PD,\n\tX86_INS_VPERMIL2PS,\n\tX86_INS_VPERMILPD,\n\tX86_INS_VPERMILPS,\n\tX86_INS_VPERMPD,\n\tX86_INS_VPERMPS,\n\tX86_INS_VPERMQ,\n\tX86_INS_VPERMT2D,\n\tX86_INS_VPERMT2PD,\n\tX86_INS_VPERMT2PS,\n\tX86_INS_VPERMT2Q,\n\tX86_INS_VPEXTRB,\n\tX86_INS_VPEXTRD,\n\tX86_INS_VPEXTRQ,\n\tX86_INS_VPEXTRW,\n\tX86_INS_VPGATHERDD,\n\tX86_INS_VPGATHERDQ,\n\tX86_INS_VPGATHERQD,\n\tX86_INS_VPGATHERQQ,\n\tX86_INS_VPHADDBD,\n\tX86_INS_VPHADDBQ,\n\tX86_INS_VPHADDBW,\n\tX86_INS_VPHADDDQ,\n\tX86_INS_VPHADDD,\n\tX86_INS_VPHADDSW,\n\tX86_INS_VPHADDUBD,\n\tX86_INS_VPHADDUBQ,\n\tX86_INS_VPHADDUBW,\n\tX86_INS_VPHADDUDQ,\n\tX86_INS_VPHADDUWD,\n\tX86_INS_VPHADDUWQ,\n\tX86_INS_VPHADDWD,\n\tX86_INS_VPHADDWQ,\n\tX86_INS_VPHADDW,\n\tX86_INS_VPHMINPOSUW,\n\tX86_INS_VPHSUBBW,\n\tX86_INS_VPHSUBDQ,\n\tX86_INS_VPHSUBD,\n\tX86_INS_VPHSUBSW,\n\tX86_INS_VPHSUBWD,\n\tX86_INS_VPHSUBW,\n\tX86_INS_VPINSRB,\n\tX86_INS_VPINSRD,\n\tX86_INS_VPINSRQ,\n\tX86_INS_VPINSRW,\n\tX86_INS_VPLZCNTD,\n\tX86_INS_VPLZCNTQ,\n\tX86_INS_VPMACSDD,\n\tX86_INS_VPMACSDQH,\n\tX86_INS_VPMACSDQL,\n\tX86_INS_VPMACSSDD,\n\tX86_INS_VPMACSSDQH,\n\tX86_INS_VPMACSSDQL,\n\tX86_INS_VPMACSSWD,\n\tX86_INS_VPMACSSWW,\n\tX86_INS_VPMACSWD,\n\tX86_INS_VPMACSWW,\n\tX86_INS_VPMADCSSWD,\n\tX86_INS_VPMADCSWD,\n\tX86_INS_VPMADDUBSW,\n\tX86_INS_VPMADDWD,\n\tX86_INS_VPMASKMOVD,\n\tX86_INS_VPMASKMOVQ,\n\tX86_INS_VPMAXSB,\n\tX86_INS_VPMAXSD,\n\tX86_INS_VPMAXSQ,\n\tX86_INS_VPMAXSW,\n\tX86_INS_VPMAXUB,\n\tX86_INS_VPMAXUD,\n\tX86_INS_VPMAXUQ,\n\tX86_INS_VPMAXUW,\n\tX86_INS_VPMINSB,\n\tX86_INS_VPMINSD,\n\tX86_INS_VPMINSQ,\n\tX86_INS_VPMINSW,\n\tX86_INS_VPMINUB,\n\tX86_INS_VPMINUD,\n\tX86_INS_VPMINUQ,\n\tX86_INS_VPMINUW,\n\tX86_INS_VPMOVDB,\n\tX86_INS_VPMOVDW,\n\tX86_INS_VPMOVMSKB,\n\tX86_INS_VPMOVQB,\n\tX86_INS_VPMOVQD,\n\tX86_INS_VPMOVQW,\n\tX86_INS_VPMOVSDB,\n\tX86_INS_VPMOVSDW,\n\tX86_INS_VPMOVSQB,\n\tX86_INS_VPMOVSQD,\n\tX86_INS_VPMOVSQW,\n\tX86_INS_VPMOVSXBD,\n\tX86_INS_VPMOVSXBQ,\n\tX86_INS_VPMOVSXBW,\n\tX86_INS_VPMOVSXDQ,\n\tX86_INS_VPMOVSXWD,\n\tX86_INS_VPMOVSXWQ,\n\tX86_INS_VPMOVUSDB,\n\tX86_INS_VPMOVUSDW,\n\tX86_INS_VPMOVUSQB,\n\tX86_INS_VPMOVUSQD,\n\tX86_INS_VPMOVUSQW,\n\tX86_INS_VPMOVZXBD,\n\tX86_INS_VPMOVZXBQ,\n\tX86_INS_VPMOVZXBW,\n\tX86_INS_VPMOVZXDQ,\n\tX86_INS_VPMOVZXWD,\n\tX86_INS_VPMOVZXWQ,\n\tX86_INS_VPMULDQ,\n\tX86_INS_VPMULHRSW,\n\tX86_INS_VPMULHUW,\n\tX86_INS_VPMULHW,\n\tX86_INS_VPMULLD,\n\tX86_INS_VPMULLW,\n\tX86_INS_VPMULUDQ,\n\tX86_INS_VPORD,\n\tX86_INS_VPORQ,\n\tX86_INS_VPOR,\n\tX86_INS_VPPERM,\n\tX86_INS_VPROTB,\n\tX86_INS_VPROTD,\n\tX86_INS_VPROTQ,\n\tX86_INS_VPROTW,\n\tX86_INS_VPSADBW,\n\tX86_INS_VPSCATTERDD,\n\tX86_INS_VPSCATTERDQ,\n\tX86_INS_VPSCATTERQD,\n\tX86_INS_VPSCATTERQQ,\n\tX86_INS_VPSHAB,\n\tX86_INS_VPSHAD,\n\tX86_INS_VPSHAQ,\n\tX86_INS_VPSHAW,\n\tX86_INS_VPSHLB,\n\tX86_INS_VPSHLD,\n\tX86_INS_VPSHLQ,\n\tX86_INS_VPSHLW,\n\tX86_INS_VPSHUFB,\n\tX86_INS_VPSHUFD,\n\tX86_INS_VPSHUFHW,\n\tX86_INS_VPSHUFLW,\n\tX86_INS_VPSIGNB,\n\tX86_INS_VPSIGND,\n\tX86_INS_VPSIGNW,\n\tX86_INS_VPSLLDQ,\n\tX86_INS_VPSLLD,\n\tX86_INS_VPSLLQ,\n\tX86_INS_VPSLLVD,\n\tX86_INS_VPSLLVQ,\n\tX86_INS_VPSLLW,\n\tX86_INS_VPSRAD,\n\tX86_INS_VPSRAQ,\n\tX86_INS_VPSRAVD,\n\tX86_INS_VPSRAVQ,\n\tX86_INS_VPSRAW,\n\tX86_INS_VPSRLDQ,\n\tX86_INS_VPSRLD,\n\tX86_INS_VPSRLQ,\n\tX86_INS_VPSRLVD,\n\tX86_INS_VPSRLVQ,\n\tX86_INS_VPSRLW,\n\tX86_INS_VPSUBB,\n\tX86_INS_VPSUBD,\n\tX86_INS_VPSUBQ,\n\tX86_INS_VPSUBSB,\n\tX86_INS_VPSUBSW,\n\tX86_INS_VPSUBUSB,\n\tX86_INS_VPSUBUSW,\n\tX86_INS_VPSUBW,\n\tX86_INS_VPTESTMD,\n\tX86_INS_VPTESTMQ,\n\tX86_INS_VPTESTNMD,\n\tX86_INS_VPTESTNMQ,\n\tX86_INS_VPTEST,\n\tX86_INS_VPUNPCKHBW,\n\tX86_INS_VPUNPCKHDQ,\n\tX86_INS_VPUNPCKHQDQ,\n\tX86_INS_VPUNPCKHWD,\n\tX86_INS_VPUNPCKLBW,\n\tX86_INS_VPUNPCKLDQ,\n\tX86_INS_VPUNPCKLQDQ,\n\tX86_INS_VPUNPCKLWD,\n\tX86_INS_VPXORD,\n\tX86_INS_VPXORQ,\n\tX86_INS_VPXOR,\n\tX86_INS_VRCP14PD,\n\tX86_INS_VRCP14PS,\n\tX86_INS_VRCP14SD,\n\tX86_INS_VRCP14SS,\n\tX86_INS_VRCP28PD,\n\tX86_INS_VRCP28PS,\n\tX86_INS_VRCP28SD,\n\tX86_INS_VRCP28SS,\n\tX86_INS_VRCPPS,\n\tX86_INS_VRCPSS,\n\tX86_INS_VRNDSCALEPD,\n\tX86_INS_VRNDSCALEPS,\n\tX86_INS_VRNDSCALESD,\n\tX86_INS_VRNDSCALESS,\n\tX86_INS_VROUNDPD,\n\tX86_INS_VROUNDPS,\n\tX86_INS_VROUNDSD,\n\tX86_INS_VROUNDSS,\n\tX86_INS_VRSQRT14PD,\n\tX86_INS_VRSQRT14PS,\n\tX86_INS_VRSQRT14SD,\n\tX86_INS_VRSQRT14SS,\n\tX86_INS_VRSQRT28PD,\n\tX86_INS_VRSQRT28PS,\n\tX86_INS_VRSQRT28SD,\n\tX86_INS_VRSQRT28SS,\n\tX86_INS_VRSQRTPS,\n\tX86_INS_VRSQRTSS,\n\tX86_INS_VSCATTERDPD,\n\tX86_INS_VSCATTERDPS,\n\tX86_INS_VSCATTERPF0DPD,\n\tX86_INS_VSCATTERPF0DPS,\n\tX86_INS_VSCATTERPF0QPD,\n\tX86_INS_VSCATTERPF0QPS,\n\tX86_INS_VSCATTERPF1DPD,\n\tX86_INS_VSCATTERPF1DPS,\n\tX86_INS_VSCATTERPF1QPD,\n\tX86_INS_VSCATTERPF1QPS,\n\tX86_INS_VSCATTERQPD,\n\tX86_INS_VSCATTERQPS,\n\tX86_INS_VSHUFPD,\n\tX86_INS_VSHUFPS,\n\tX86_INS_VSQRTPD,\n\tX86_INS_VSQRTPS,\n\tX86_INS_VSQRTSD,\n\tX86_INS_VSQRTSS,\n\tX86_INS_VSTMXCSR,\n\tX86_INS_VSUBPD,\n\tX86_INS_VSUBPS,\n\tX86_INS_VSUBSD,\n\tX86_INS_VSUBSS,\n\tX86_INS_VTESTPD,\n\tX86_INS_VTESTPS,\n\tX86_INS_VUNPCKHPD,\n\tX86_INS_VUNPCKHPS,\n\tX86_INS_VUNPCKLPD,\n\tX86_INS_VUNPCKLPS,\n\tX86_INS_VZEROALL,\n\tX86_INS_VZEROUPPER,\n\tX86_INS_WAIT,\n\tX86_INS_WBINVD,\n\tX86_INS_WRFSBASE,\n\tX86_INS_WRGSBASE,\n\tX86_INS_WRMSR,\n\tX86_INS_XABORT,\n\tX86_INS_XACQUIRE,\n\tX86_INS_XBEGIN,\n\tX86_INS_XCHG,\n\tX86_INS_FXCH,\n\tX86_INS_XCRYPTCBC,\n\tX86_INS_XCRYPTCFB,\n\tX86_INS_XCRYPTCTR,\n\tX86_INS_XCRYPTECB,\n\tX86_INS_XCRYPTOFB,\n\tX86_INS_XEND,\n\tX86_INS_XGETBV,\n\tX86_INS_XLATB,\n\tX86_INS_XRELEASE,\n\tX86_INS_XRSTOR,\n\tX86_INS_XRSTOR64,\n\tX86_INS_XSAVE,\n\tX86_INS_XSAVE64,\n\tX86_INS_XSAVEOPT,\n\tX86_INS_XSAVEOPT64,\n\tX86_INS_XSETBV,\n\tX86_INS_XSHA1,\n\tX86_INS_XSHA256,\n\tX86_INS_XSTORE,\n\tX86_INS_XTEST,\n\n\tX86_INS_ENDING,\t// mark the end of the list of insn\n} x86_insn;\n\n//> Group of X86 instructions\ntypedef enum  x86_insn_group {\n\tX86_GRP_INVALID = 0, // = CS_GRP_INVALID\n\n\t//> Generic groups\n\t// all jump instructions (conditional+direct+indirect jumps)\n\tX86_GRP_JUMP,\t// = CS_GRP_JUMP\n\t// all call instructions\n\tX86_GRP_CALL,\t// = CS_GRP_CALL\n\t// all return instructions\n\tX86_GRP_RET,\t// = CS_GRP_RET\n\t// all interrupt instructions (int+syscall)\n\tX86_GRP_INT,\t// = CS_GRP_INT\n\t// all interrupt return instructions\n\tX86_GRP_IRET,\t// = CS_GRP_IRET\n\n\t//> Architecture-specific groups\n\tX86_GRP_VM = 128,\t// all virtualization instructions (VT-x + AMD-V)\n\tX86_GRP_3DNOW,\n\tX86_GRP_AES,\n\tX86_GRP_ADX,\n\tX86_GRP_AVX,\n\tX86_GRP_AVX2,\n\tX86_GRP_AVX512,\n\tX86_GRP_BMI,\n\tX86_GRP_BMI2,\n\tX86_GRP_CMOV,\n\tX86_GRP_F16C,\n\tX86_GRP_FMA,\n\tX86_GRP_FMA4,\n\tX86_GRP_FSGSBASE,\n\tX86_GRP_HLE,\n\tX86_GRP_MMX,\n\tX86_GRP_MODE32,\n\tX86_GRP_MODE64,\n\tX86_GRP_RTM,\n\tX86_GRP_SHA,\n\tX86_GRP_SSE1,\n\tX86_GRP_SSE2,\n\tX86_GRP_SSE3,\n\tX86_GRP_SSE41,\n\tX86_GRP_SSE42,\n\tX86_GRP_SSE4A,\n\tX86_GRP_SSSE3,\n\tX86_GRP_PCLMUL,\n\tX86_GRP_XOP,\n\tX86_GRP_CDI,\n\tX86_GRP_ERI,\n\tX86_GRP_TBM,\n\tX86_GRP_16BITMODE,\n\tX86_GRP_NOT64BITMODE,\n\tX86_GRP_SGX,\n\tX86_GRP_DQI,\n\tX86_GRP_BWI,\n\tX86_GRP_PFI,\n\tX86_GRP_VLX,\n\tX86_GRP_SMAP,\n\tX86_GRP_NOVLX,\n\n\tX86_GRP_ENDING\n} x86_insn_group;\n\n#ifdef __cplusplus\n}\n#endif\n\n#endif\n"
  },
  {
    "path": "EFI/CLOVER/kexts/Other/Lilu_v1.3.7.kext/Contents/Resources/Headers/capstone/xcore.h",
    "content": "#ifndef CAPSTONE_XCORE_H\n#define CAPSTONE_XCORE_H\n\n/* Capstone Disassembly Engine */\n/* By Nguyen Anh Quynh <aquynh@gmail.com>, 2014 */\n\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n#if !defined(_MSC_VER) || !defined(_KERNEL_MODE)\n#include <stdint.h>\n#endif\n\n#include \"platform.h\"\n\n#ifdef _MSC_VER\n#pragma warning(disable:4201)\n#endif\n\n//> Operand type for instruction's operands\ntypedef enum xcore_op_type {\n\tXCORE_OP_INVALID = 0, // = CS_OP_INVALID (Uninitialized).\n\tXCORE_OP_REG, // = CS_OP_REG (Register operand).\n\tXCORE_OP_IMM, // = CS_OP_IMM (Immediate operand).\n\tXCORE_OP_MEM, // = CS_OP_MEM (Memory operand).\n} xcore_op_type;\n\n// Instruction's operand referring to memory\n// This is associated with XCORE_OP_MEM operand type above\ntypedef struct xcore_op_mem {\n\tuint8_t base;\t// base register\n\tuint8_t index;\t// index register\n\tint32_t disp;\t// displacement/offset value\n\tint     direct;\t// +1: forward, -1: backward\n} xcore_op_mem;\n\n// Instruction operand\ntypedef struct cs_xcore_op {\n\txcore_op_type type;\t// operand type\n\tunion {\n\t\tunsigned int reg;\t// register value for REG operand\n\t\tint32_t imm;\t\t// immediate value for IMM operand\n\t\txcore_op_mem mem;\t\t// base/disp value for MEM operand\n\t};\n} cs_xcore_op;\n\n// Instruction structure\ntypedef struct cs_xcore {\n\t// Number of operands of this instruction, \n\t// or 0 when instruction has no operand.\n\tuint8_t op_count;\n\tcs_xcore_op operands[8]; // operands for this instruction.\n} cs_xcore;\n\n//> XCore registers\ntypedef enum xcore_reg {\n\tXCORE_REG_INVALID = 0,\n\n\tXCORE_REG_CP,\n\tXCORE_REG_DP,\n\tXCORE_REG_LR,\n\tXCORE_REG_SP,\n\tXCORE_REG_R0,\n\tXCORE_REG_R1,\n\tXCORE_REG_R2,\n\tXCORE_REG_R3,\n\tXCORE_REG_R4,\n\tXCORE_REG_R5,\n\tXCORE_REG_R6,\n\tXCORE_REG_R7,\n\tXCORE_REG_R8,\n\tXCORE_REG_R9,\n\tXCORE_REG_R10,\n\tXCORE_REG_R11,\n\n\t//> pseudo registers\n\tXCORE_REG_PC,\t// pc\n\n\t// internal thread registers\n\t// see The-XMOS-XS1-Architecture(X7879A).pdf\n\tXCORE_REG_SCP,\t// save pc\n\tXCORE_REG_SSR,\t// save status\n\tXCORE_REG_ET,\t// exception type\n\tXCORE_REG_ED,\t// exception data\n\tXCORE_REG_SED,\t// save exception data\n\tXCORE_REG_KEP,\t// kernel entry pointer\n\tXCORE_REG_KSP,\t// kernel stack pointer\n\tXCORE_REG_ID,\t// thread ID\n\n\tXCORE_REG_ENDING,\t// <-- mark the end of the list of registers\n} xcore_reg;\n\n//> XCore instruction\ntypedef enum xcore_insn {\n\tXCORE_INS_INVALID = 0,\n\n\tXCORE_INS_ADD,\n\tXCORE_INS_ANDNOT,\n\tXCORE_INS_AND,\n\tXCORE_INS_ASHR,\n\tXCORE_INS_BAU,\n\tXCORE_INS_BITREV,\n\tXCORE_INS_BLA,\n\tXCORE_INS_BLAT,\n\tXCORE_INS_BL,\n\tXCORE_INS_BF,\n\tXCORE_INS_BT,\n\tXCORE_INS_BU,\n\tXCORE_INS_BRU,\n\tXCORE_INS_BYTEREV,\n\tXCORE_INS_CHKCT,\n\tXCORE_INS_CLRE,\n\tXCORE_INS_CLRPT,\n\tXCORE_INS_CLRSR,\n\tXCORE_INS_CLZ,\n\tXCORE_INS_CRC8,\n\tXCORE_INS_CRC32,\n\tXCORE_INS_DCALL,\n\tXCORE_INS_DENTSP,\n\tXCORE_INS_DGETREG,\n\tXCORE_INS_DIVS,\n\tXCORE_INS_DIVU,\n\tXCORE_INS_DRESTSP,\n\tXCORE_INS_DRET,\n\tXCORE_INS_ECALLF,\n\tXCORE_INS_ECALLT,\n\tXCORE_INS_EDU,\n\tXCORE_INS_EEF,\n\tXCORE_INS_EET,\n\tXCORE_INS_EEU,\n\tXCORE_INS_ENDIN,\n\tXCORE_INS_ENTSP,\n\tXCORE_INS_EQ,\n\tXCORE_INS_EXTDP,\n\tXCORE_INS_EXTSP,\n\tXCORE_INS_FREER,\n\tXCORE_INS_FREET,\n\tXCORE_INS_GETD,\n\tXCORE_INS_GET,\n\tXCORE_INS_GETN,\n\tXCORE_INS_GETR,\n\tXCORE_INS_GETSR,\n\tXCORE_INS_GETST,\n\tXCORE_INS_GETTS,\n\tXCORE_INS_INCT,\n\tXCORE_INS_INIT,\n\tXCORE_INS_INPW,\n\tXCORE_INS_INSHR,\n\tXCORE_INS_INT,\n\tXCORE_INS_IN,\n\tXCORE_INS_KCALL,\n\tXCORE_INS_KENTSP,\n\tXCORE_INS_KRESTSP,\n\tXCORE_INS_KRET,\n\tXCORE_INS_LADD,\n\tXCORE_INS_LD16S,\n\tXCORE_INS_LD8U,\n\tXCORE_INS_LDA16,\n\tXCORE_INS_LDAP,\n\tXCORE_INS_LDAW,\n\tXCORE_INS_LDC,\n\tXCORE_INS_LDW,\n\tXCORE_INS_LDIVU,\n\tXCORE_INS_LMUL,\n\tXCORE_INS_LSS,\n\tXCORE_INS_LSUB,\n\tXCORE_INS_LSU,\n\tXCORE_INS_MACCS,\n\tXCORE_INS_MACCU,\n\tXCORE_INS_MJOIN,\n\tXCORE_INS_MKMSK,\n\tXCORE_INS_MSYNC,\n\tXCORE_INS_MUL,\n\tXCORE_INS_NEG,\n\tXCORE_INS_NOT,\n\tXCORE_INS_OR,\n\tXCORE_INS_OUTCT,\n\tXCORE_INS_OUTPW,\n\tXCORE_INS_OUTSHR,\n\tXCORE_INS_OUTT,\n\tXCORE_INS_OUT,\n\tXCORE_INS_PEEK,\n\tXCORE_INS_REMS,\n\tXCORE_INS_REMU,\n\tXCORE_INS_RETSP,\n\tXCORE_INS_SETCLK,\n\tXCORE_INS_SET,\n\tXCORE_INS_SETC,\n\tXCORE_INS_SETD,\n\tXCORE_INS_SETEV,\n\tXCORE_INS_SETN,\n\tXCORE_INS_SETPSC,\n\tXCORE_INS_SETPT,\n\tXCORE_INS_SETRDY,\n\tXCORE_INS_SETSR,\n\tXCORE_INS_SETTW,\n\tXCORE_INS_SETV,\n\tXCORE_INS_SEXT,\n\tXCORE_INS_SHL,\n\tXCORE_INS_SHR,\n\tXCORE_INS_SSYNC,\n\tXCORE_INS_ST16,\n\tXCORE_INS_ST8,\n\tXCORE_INS_STW,\n\tXCORE_INS_SUB,\n\tXCORE_INS_SYNCR,\n\tXCORE_INS_TESTCT,\n\tXCORE_INS_TESTLCL,\n\tXCORE_INS_TESTWCT,\n\tXCORE_INS_TSETMR,\n\tXCORE_INS_START,\n\tXCORE_INS_WAITEF,\n\tXCORE_INS_WAITET,\n\tXCORE_INS_WAITEU,\n\tXCORE_INS_XOR,\n\tXCORE_INS_ZEXT,\n\n\tXCORE_INS_ENDING,   // <-- mark the end of the list of instructions\n} xcore_insn;\n\n//> Group of XCore instructions\ntypedef enum xcore_insn_group {\n\tXCORE_GRP_INVALID = 0, // = CS_GRP_INVALID\n\n\t//> Generic groups\n\t// all jump instructions (conditional+direct+indirect jumps)\n\tXCORE_GRP_JUMP,\t// = CS_GRP_JUMP\n\n\tXCORE_GRP_ENDING,   // <-- mark the end of the list of groups\n} xcore_insn_group;\n\n#ifdef __cplusplus\n}\n#endif\n\n#endif\n"
  },
  {
    "path": "EFI/CLOVER/kexts/Other/Lilu_v1.3.7.kext/Contents/Resources/Headers/kern_api.hpp",
    "content": "//\n//  kern_api.hpp\n//  Lilu\n//\n//  Copyright © 2016-2017 vit9696. All rights reserved.\n//\n\n#ifndef kern_api_h\n#define kern_api_h\n\n#include <Headers/kern_config.hpp>\n#include <Headers/kern_patcher.hpp>\n#include <Headers/kern_user.hpp>\n#include <Headers/kern_util.hpp>\n\n#include <stdint.h>\n#include <sys/types.h>\n#include <libkern/OSAtomic.h>\n\nclass LiluAPI {\npublic:\n\t/**\n\t *  Initialise lilu api\n \t */\n\tvoid init();\n\n\t/**\n\t *  Deinitialise lilu api\n\t */\n\tvoid deinit();\n\n\t/**\n\t *  Errors returned by functions\n\t */\n\tenum class Error {\n\t\tNoError,\n\t\tLockError,\n\t\tMemoryError,\n\t\tUnsupportedFeature,\n\t\tIncompatibleOS,\n\t\tDisabled,\n\t\tTooLate,\n\t\tOffline\n\t};\n\n\t/**\n\t *  Minimal API version that guarantees forward ABI compatibility\n\t *  Present due to lack of OSBundleCompatibleVersion at kext injection\n\t */\n\tstatic constexpr size_t CompatibilityVersion {parseModuleVersion(\"1.2.0\")};\n\n\t/**\n\t *  Obtains api access by holding a lock, which is required when accessing out of the main context\n\t *\n\t *  @param version  api compatibility version\n\t *  @param check    do not wait on the lock but return Error::LockError on failure\n\t *\n\t *  @return Error::NoError on success\n\t */\n\tEXPORT Error requestAccess(size_t version=CompatibilityVersion, bool check=false);\n\n\t/**\n\t *  Releases api lock\n\t *\n\t *  @return Error::NoError on success\n\t */\n\tEXPORT Error releaseAccess();\n\n\t/**\n\t *  You are supposed declare that your plugins work in at least one of these modes\n\t *  It is assumed that single user mode is equal to normal, because it is generally\n\t *  used to continue the load of a complete OS, and by default Lilu itself ignores it.\n\t */\n\tenum RunningMode : uint32_t {\n\t\tRunningNormal            = 1,\n\t\tAllowNormal              = RunningNormal,\n\t\tRunningInstallerRecovery = 2,\n\t\tAllowInstallerRecovery   = RunningInstallerRecovery,\n\t\tRunningSafeMode          = 4,\n\t\tAllowSafeMode            = RunningSafeMode\n\t};\n\n\t/**\n\t *  Obtain current run mode similarly to requirements\n\t *\n\t *  @return run mode mask (RunningMode)\n\t */\n\tinline uint32_t getRunMode() {\n\t\treturn currentRunMode;\n\t}\n\n\t/**\n\t *  Decides whether you are eligible to continue\n\t *\n\t *  @param product       product name\n\t *  @param version       product version\n\t *  @param runmode       bitmask of allowed enviornments\n\t *  @param disableArg    pointer to disabling boot arguments array\n\t *  @param disableArgNum number of disabling boot arguments\n\t *  @param debugArg      pointer to debug boot arguments array\n\t *  @param debugArgNum   number of debug boot arguments\n\t *  @param betaArg       pointer to beta boot arguments array\n\t *  @param betaArgNum    number of beta boot arguments\n\t *  @param min           minimal required kernel version\n\t *  @param max           maximum supported kernel version\n\t *  @param printDebug    returns debug printing status (based on debugArg)\n\t *\n\t *  @return Error::NoError on success\n\t */\n\tEXPORT Error shouldLoad(const char *product, size_t version, uint32_t runmode, const char **disableArg, size_t disableArgNum, const char **debugArg, size_t debugArgNum, const char **betaArg, size_t betaArgNum, KernelVersion min, KernelVersion max, bool &printDebug);\n\n\t/**\n\t *  Kernel patcher loaded callback\n\t *\n\t *  @param user    user provided pointer at registering\n\t *  @param patcher kernel patcher instance\n\t */\n\tusing t_patcherLoaded = void (*)(void *user, KernelPatcher &patcher);\n\n\t/**\n\t *  Registers custom provided callbacks for later invocation on kernel patcher initialisation\n\t *\n\t *  @param callback your callback function\n\t *  @param user     your pointer that will be passed to the callback function\n\t *\n\t *  @return Error::NoError on success\n\t */\n\tEXPORT Error onPatcherLoad(t_patcherLoaded callback, void *user=nullptr);\n\n\t/**\n\t *  Registers custom provided callbacks for later invocation on kernel patcher initialisation\n\t *  Enforced version, which panics on registration failure (assuming your code cannot continue otherwise)\n\t *\n\t *  @param callback your callback function\n\t *  @param user     your pointer that will be passed to the callback function\n\t *\n\t *  @return Error::NoError on success\n\t */\n\tinline void onPatcherLoadForce(t_patcherLoaded callback, void *user=nullptr) {\n\t\tauto err = onPatcherLoad(callback, user);\n\t\tif (err != Error::NoError)\n\t\t\tPANIC(\"api\", \"onPatcherLoad failed with code %d\", err);\n\t}\n\n\t/**\n\t *  Kext loaded callback\n\t *  Note that you will get notified of all the requested kexts for speed reasons\n\t *\n\t *  @param user    user provided pointer at registering\n\t *  @param patcher kernel patcher instance\n\t *  @param id      loaded kinfo id\n\t *  @param slide   loaded slide\n\t *  @param size    loaded memory size\n\t */\n\tusing t_kextLoaded = void (*)(void *user, KernelPatcher &patcher, size_t id, mach_vm_address_t slide, size_t size);\n\n\t/**\n\t *  Registers custom provided callbacks for later invocation on kext load\n\t *\n\t *  @param infos    your kext list (make sure to point to const memory)\n\t *  @param num      number of provided kext entries\n\t *  @param callback your callback function (optional)\n\t *  @param user     your pointer that will be passed to the callback function (optional)\n\t *\n\t *  @return Error::NoError on success\n\t */\n\tEXPORT Error onKextLoad(KernelPatcher::KextInfo *infos, size_t num=1, t_kextLoaded callback=nullptr, void *user=nullptr);\n\n\t/**\n\t *  Registers custom provided callbacks for later invocation on kext load\n\t *  Enforced version, which panics on registration failure (assuming your code cannot continue otherwise)\n\t *\n\t *  @param infos    your kext list (make sure to point to const memory)\n\t *  @param num      number of provided kext entries\n\t *  @param callback your callback function (optional)\n\t *  @param user     your pointer that will be passed to the callback function (optional)\n\t *\n\t *  @return Error::NoError on success\n\t */\n\tinline void onKextLoadForce(KernelPatcher::KextInfo *infos, size_t num=1, t_kextLoaded callback=nullptr, void *user=nullptr) {\n\t\tauto err = onKextLoad(infos, num, callback, user);\n\t\tif (err != Error::NoError)\n\t\t\tPANIC(\"api\", \"onKextLoad failed with code %d\", err);\n\t}\n\n\t/**\n\t *  Registers custom provided callbacks for later invocation on binary load\n\t *\n\t *  @param infos    your binary list (make sure to point to const memory)\n\t *  @param num      number of provided binary entries\n\t *  @param callback your callback function (could be null)\n\t *  @param user     your pointer that will be passed to the callback function\n\t *  @param mods     optional mod list (make sure to point to const memory)\n\t *  @param modnum   number of provided mod entries\n\t *\n\t *  @return Error::NoError on success\n\t */\n\tEXPORT Error onProcLoad(UserPatcher::ProcInfo *infos, size_t num=1, UserPatcher::t_BinaryLoaded callback=nullptr, void *user=nullptr, UserPatcher::BinaryModInfo *mods=nullptr, size_t modnum=0);\n\n\t/**\n\t *  Registers custom provided callbacks for later invocation on binary load\n\t *  Enforced version, which panics on registration failure (assuming your code cannot continue otherwise)\n\t *\n\t *  @param infos    your binary list (make sure to point to const memory)\n\t *  @param num      number of provided binary entries\n\t *  @param callback your callback function (could be null)\n\t *  @param user     your pointer that will be passed to the callback function\n\t *  @param mods     optional mod list (make sure to point to const memory)\n\t *  @param modnum   number of provided mod entries\n\t *\n\t *  @return Error::NoError on success\n\t */\n\tinline void onProcLoadForce(UserPatcher::ProcInfo *infos, size_t num=1, UserPatcher::t_BinaryLoaded callback=nullptr, void *user=nullptr, UserPatcher::BinaryModInfo *mods=nullptr, size_t modnum=0) {\n\t\tauto err = onProcLoad(infos, num, callback, user, mods, modnum);\n\t\tif (err != Error::NoError)\n\t\t\tPANIC(\"api\", \"onProcLoad failed with code %d\", err);\n\t}\n\n\t/**\n\t *  Kext loaded callback\n\t *  Note that you will get notified of all the requested kexts for speed reasons\n\t *\n\t *  @param user          user provided pointer at registering\n\t *  @param task          task\n\t *  @param entitlement   loaded kinfo id\n\t *  @param original      original entitlement value\n\t */\n\tusing t_entitlementRequested = void (*)(void *user, task_t task, const char *entitlement, OSObject *&original);\n\n\t/**\n\t *  Registers custom provided callbacks for later invocation on entitlement registration\n\t *\n\t *  @param callback your callback function\n\t *  @param user     your pointer that will be passed to the callback function\n\t *\n\t *  @return Error::NoError on success\n\t */\n\tEXPORT Error onEntitlementRequest(t_entitlementRequested callback, void *user=nullptr);\n\n\t/**\n\t *  Registers custom provided callbacks for later invocation on entitlement registration\n\t *  Enforced version, which panics on registration failure (assuming your code cannot continue otherwise)\n\t *\n\t *  @param callback your callback function\n\t *  @param user     your pointer that will be passed to the callback function\n\t *\n\t *  @return Error::NoError on success\n\t */\n\tinline void onEntitlementRequestForce(t_entitlementRequested callback, void *user=nullptr) {\n\t\tauto err = onEntitlementRequest(callback, user);\n\t\tif (err != Error::NoError)\n\t\t\tPANIC(\"api\", \"onEntitlementRequest failed with code %d\", err);\n\t}\n\n\t/**\n\t *  Processes all the registered patcher load callbacks\n\t *\n\t *  @param patcher kernel patcher instance\n\t */\n\tvoid processPatcherLoadCallbacks(KernelPatcher &patcher);\n\n\t/**\n\t *  Processes all the registered kext load callbacks\n\t *\n\t *  @param patcher    kernel patcher instance\n\t *  @param id         loaded kinfo id\n\t *  @param slide      loaded slide\n\t *  @param size       loaded memory size\n\t *  @param reloadable kinfo could be unloaded\n\t */\n\tvoid processKextLoadCallbacks(KernelPatcher &patcher, size_t id, mach_vm_address_t slide, size_t size, bool reloadable);\n\n\t/**\n\t *  Processes all the registered user patcher load callbacks\n\t *\n\t *  @param patcher user patcher instance\n\t */\n\tvoid processUserLoadCallbacks(UserPatcher &patcher);\n\n\t/**\n\t *  Processes all the registered binary load callbacks\n\t *\n\t *  @param patcher kernel patcher instance\n\t *  @param map     process image vm_map\n\t *  @param path    path to the binary absolute or relative\n\t *  @param len     path length excluding null terminator\n\t */\n\tvoid processBinaryLoadCallbacks(UserPatcher &patcher, vm_map_t map, const char *path, size_t len);\n\n\t/**\n\t *  Activates patchers\n\t *\n\t *  @param kpatcher  kernel patcher instance\n\t *  @param upatcher  user patcher instance\n\t */\n\tvoid activate(KernelPatcher &kpatcher, UserPatcher &upatcher);\n\nprivate:\n\n\t/**\n\t *  Api lock\n\t */\n\tIOLock *access {nullptr};\n\n\t/**\n\t *  Defines current running modes\n\t */\n\tuint32_t currentRunMode {};\n\n\t/**\n\t *  No longer accept any requests\n\t */\n\tbool apiRequestsOver {false};\n\n\t/**\n\t *  Stores call function and user pointer\n\t */\n\ttemplate <typename T, typename Y=void *>\n\tusing stored_pair = ppair<T, Y>;\n\n\t/**\n\t *  Stores multiple callbacks\n\t */\n\ttemplate <typename T, typename Y=void *>\n\tusing stored_vector = evector<stored_pair<T, Y> *, stored_pair<T, Y>::deleter>;\n\n\t/**\n\t *  List of patcher callbacks\n\t */\n\tstored_vector<t_patcherLoaded> patcherLoadedCallbacks;\n\n\t/**\n\t *  List of kext callbacks\n\t */\n\tstored_vector<t_kextLoaded> kextLoadedCallbacks;\n\n\t/**\n\t *  List of binary callbacks\n\t */\n\tstored_vector<UserPatcher::t_BinaryLoaded> binaryLoadedCallbacks;\n\n\t/**\n\t *  List of entitlement callbacks\n\t */\n\tstored_vector<t_entitlementRequested> entitlementRequestedCallbacks;\n\n\t/**\n\t *  List of processed kexts\n\t */\n\tstored_vector<KernelPatcher::KextInfo *, size_t> storedKexts;\n\n\t/**\n\t *  List of processed procs\n\t */\n\tevector<UserPatcher::ProcInfo *> storedProcs;\n\n\t/**\n\t *  List of processed binary mods\n\t */\n\tevector<UserPatcher::BinaryModInfo *> storedBinaryMods;\n\n\t/**\n\t *  Copy client entitlement type (see IOUserClient)\n\t */\n\tusing t_copyClientEntitlement = OSObject *(*)(task_t, const char *);\n\n\t/**\n\t *  Hooked entitlement copying method\n\t */\n\tstatic OSObject *copyClientEntitlement(task_t task, const char *entitlement);\n\n\t/**\n\t *  Trampoline for original entitlement copying method\n\t */\n\tt_copyClientEntitlement orgCopyClientEntitlement {nullptr};\n};\n\nEXPORT extern LiluAPI lilu;\n\n#endif /* kern_api_h */\n"
  },
  {
    "path": "EFI/CLOVER/kexts/Other/Lilu_v1.3.7.kext/Contents/Resources/Headers/kern_atomic.hpp",
    "content": "//\n//  kern_atomic.hpp\n//  Lilu\n//\n//  Copyright © 2018 vit9696. All rights reserved.\n//\n\n#ifndef kern_atomic_h\n#define kern_atomic_h\n\n#if defined(__has_include)\n#if __has_include(<stdatomic.h>)\n#include <stdatomic.h>\n#else\n\n// Provide basic atomic support for legacy compilers\n\ntypedef enum memory_order {\n\tmemory_order_relaxed = __ATOMIC_RELAXED,\n\tmemory_order_consume = __ATOMIC_CONSUME,\n\tmemory_order_acquire = __ATOMIC_ACQUIRE,\n\tmemory_order_release = __ATOMIC_RELEASE,\n\tmemory_order_acq_rel = __ATOMIC_ACQ_REL,\n\tmemory_order_seq_cst = __ATOMIC_SEQ_CST\n} memory_order;\n\n#define atomic_init __c11_atomic_init\n#define atomic_store_explicit __c11_atomic_store\n#define atomic_load_explicit __c11_atomic_load\n#define atomic_compare_exchange_strong_explicit __c11_atomic_compare_exchange_strong\n\n#endif\n#else\n// Assume <stdatomic.h> to be available when there is no __has_include.\n#include <stdatomic.h>\n#endif\n\n#endif /* kern_atomic_h */\n"
  },
  {
    "path": "EFI/CLOVER/kexts/Other/Lilu_v1.3.7.kext/Contents/Resources/Headers/kern_compat.hpp",
    "content": "//\n//  kern_compat.hpp\n//  Lilu\n//\n//  Copyright © 2016-2017 vit9696. All rights reserved.\n//\n\n#ifndef kern_compat_hpp\n#define kern_compat_hpp\n\n#include <Headers/kern_config.hpp>\n//Actually do not include to catch real errors\n//#include <Availability.h>\n#include <string.h>\n\n// Please do not use memcpy and similar functions, since they compile\n// to macros unsupported by any other system with 10.13 SDK unless\n// Availability.h header is included.\n#define lilu_os_memcpy(...)  (memcpy)(__VA_ARGS__)\n#define lilu_os_memmove(...) (memmove)(__VA_ARGS__)\n#define lilu_os_strncpy(...) (strncpy)(__VA_ARGS__)\n#define lilu_os_strncat(...) (strncat)(__VA_ARGS__)\n#define lilu_os_strlcat(...) (strlcat)(__VA_ARGS__)\n#define lilu_os_strlcpy(...) (strlcpy)(__VA_ARGS__)\n#define lilu_os_strcat(...)  (strcat)(__VA_ARGS__)\n#define lilu_os_bcopy(...)   (bcopy)(__VA_ARGS__)\n\n// Additionally disallow the use of the original functions\n#ifndef LILU_DISABLE_MEMFUNC_REDEFINE\n\n#ifdef memcpy\n#undef memcpy\n#define memcpy(...) _Pragma(\"GCC error \\\"Avoid memcpy due to 10.13 SDK bugs!\\\"\")\n#endif\n\n#ifdef memmove\n#undef memmove\n#define memmove(...) _Pragma(\"GCC error \\\"Avoid memmove due to 10.13 SDK bugs!\\\"\")\n#endif\n\n#ifdef strncpy\n#undef strncpy\n#define strncpy(...) _Pragma(\"GCC error \\\"Avoid strncpy due to 10.13 SDK bugs!\\\"\")\n#endif\n\n#ifdef strncat\n#undef strncat\n#define strncat(...) _Pragma(\"GCC error \\\"Avoid strncat due to 10.13 SDK bugs!\\\"\")\n#endif\n\n#ifdef strlcat\n#undef strlcat\n#define strlcat(...) _Pragma(\"GCC error \\\"Avoid strlcat due to 10.13 SDK bugs!\\\"\")\n#endif\n\n#ifdef strlcpy\n#undef strlcpy\n#define strlcpy(...) _Pragma(\"GCC error \\\"Avoid strlcpy due to 10.13 SDK bugs!\\\"\")\n#endif\n\n#ifdef strcat\n#undef strcat\n#define strcat(...) _Pragma(\"GCC error \\\"Avoid strcat due to 10.13 SDK bugs!\\\"\")\n#endif\n\n#ifdef bcopy\n#undef bcopy\n#define bcopy(...) _Pragma(\"GCC error \\\"Avoid bcopy due to 10.13 SDK bugs!\\\"\")\n#endif\n\n#endif /* LILU_DISABLE_MEMFUNC_REDEFINE */\n\n// This may not be nice but will protect users from changes in KernInfo strcture.\n#ifndef LILU_DISABLE_BRACE_WARNINGS\n#pragma clang diagnostic error \"-Wmissing-braces\"\n#endif\n\n#endif /* kern_compat_hpp */\n"
  },
  {
    "path": "EFI/CLOVER/kexts/Other/Lilu_v1.3.7.kext/Contents/Resources/Headers/kern_compression.hpp",
    "content": "//\n//  kern_compression.hpp\n//  Lilu\n//\n//  Copyright © 2016-2017 vit9696. All rights reserved.\n//\n\n#ifndef kern_compression_hpp\n#define kern_compression_hpp\n\n#include <Headers/kern_config.hpp>\n\n#ifdef LILU_COMPRESSION_SUPPORT\n\n#include <Headers/kern_util.hpp>\n#include <stdint.h>\n\nnamespace Compression {\n\n\t/**\n\t *  Compression constants and modes\n\t */\n\tstatic constexpr uint32_t Magic {0x706D6F63}; //comp\n\tstatic constexpr uint32_t ModeLZVN {0x6E767A6C}; //lzvn\n\tstatic constexpr uint32_t ModeLZSS {0x73737A6C}; //lzss\n\t\n\t/**\n\t *  Compressed header structure\n\t */\n\tstruct Header {\n\t\tuint32_t magic;\n\t\tuint32_t compression;\n\t\tuint32_t hash; // adler32\n\t\tuint32_t decompressed;\n\t\tuint32_t compressed;\n\t\tuint32_t version;\n\t\tuint32_t padding[90];\n\t};\n\t\n\t/**\n\t *  Typed decompressing function (currently for lzvn and lzss)\n\t *\n\t *  @param compression compression type\n\t *  @param dstlen      decompression buffer size\n\t *  @param src         compressed data\n\t *  @param srclen      compressed data size\n\t *  @param buffer      preallocated buffer to use\n\t *\n\t *  @return decompressed buffer (must be freeded by Buffer::deleter if not preallocated)\n\t */\n\tEXPORT uint8_t *decompress(uint32_t compression, uint32_t dstlen, const uint8_t *src, uint32_t srclen, uint8_t *buffer=nullptr);\n\t\n\t/**\n\t *  Typed compressing function (currently for lzss)\n\t *\n\t *  @param compression compression type\n\t *  @param dstlen      maximum compression buffer size\n\t *  @param src         uncompressed data\n\t *  @param srclen      uncompressed data size\n\t *  @param buffer      preallocated buffer to use\n\t *\n\t *  @return compressed buffer with its actual size in dstlen (must be freeded by Buffer::deleter if not preallocated)\n\t */\n\tEXPORT uint8_t *compress(uint32_t compression, uint32_t &dstlen, const uint8_t *src, uint32_t srclen, uint8_t *buffer=nullptr);\n\n}\n\t\n#endif /* LILU_COMPRESSION_SUPPORT */\n\n#endif /* kern_compression_hpp */\n"
  },
  {
    "path": "EFI/CLOVER/kexts/Other/Lilu_v1.3.7.kext/Contents/Resources/Headers/kern_config.hpp",
    "content": "//\n//  kern_config.hpp\n//  Lilu\n//\n//  Copyright © 2016-2017 vit9696. All rights reserved.\n//\n\n#ifndef kern_config_hpp\n#define kern_config_hpp\n\n/**\n *  Enable kext patching support\n */\n#define LILU_KEXTPATCH_SUPPORT 1\n\n/**\n *  Enable compression and decompression support\n */\n#define LILU_COMPRESSION_SUPPORT 1\n\n/**\n *  Enable advanced disassembly API based on capstone\n */\n// #define LILU_ADVANCED_DISASSEMBLY 1\n\n/**\n *  Specify custom initialisation code\n *  Use these in plugins in Xcode Project Preprocessor Macros section.\n */\n// #define LILU_CUSTOM_IOKIT_INIT 1\n// #define LILU_CUSTOM_KMOD_INIT 1\n\n#endif /* kern_config_hpp */\n"
  },
  {
    "path": "EFI/CLOVER/kexts/Other/Lilu_v1.3.7.kext/Contents/Resources/Headers/kern_cpu.hpp",
    "content": "//\n//  kern_cpu.hpp\n//  Lilu\n//\n//  Copyright © 2018 vit9696. All rights reserved.\n//\n\n#ifndef kern_cpu_h\n#define kern_cpu_h\n\n#include <Headers/kern_config.hpp>\n#include <Headers/kern_iokit.hpp>\n#include <Headers/kern_util.hpp>\n\n#include <Library/LegacyIOService.h>\n\n/**\n *  XNU CPU-related exports missing from headers\n */\nextern \"C\" {\n\tint cpu_number(void);\n\tvoid mp_rendezvous_no_intrs(void (*action_func)(void *), void *arg);\n};\n\nnamespace CPUInfo {\n\t/**\n\t *  Keep this in sync to XNU MAX_CPUS from osfmk/i386/mp.h\n\t */\n\tstatic constexpr size_t MaxCpus {64};\n\n\t/**\n\t *  Contents of CPUID(1) eax register contents describing model version\n\t */\n\tstruct CpuVersion {\n\t\tuint32_t stepping       : 4;\n\t\tuint32_t model          : 4;\n\t\tuint32_t family         : 4;\n\t\tuint32_t type           : 2;\n\t\tuint32_t reserved1      : 2;\n\t\tuint32_t extendedModel  : 4;\n\t\tuint32_t extendedFamily : 8;\n\t\tuint32_t reserved2      : 4;\n\t};\n\n\tstatic_assert(sizeof(CpuVersion) == sizeof(uint32_t), \"CpuVersion size mismatch!\");\n\n\t/**\n\t *  Intel CPU models as returned by CPUID\n\t *  The list is synchronised and updated with XNU source code (osfmk/i386/cpuid.h).\n\t *  Names are altered to avoid conflicts just in case.\n\t *  Last update: xnu-4903.221.2\n\t *  Some details could be found on http://instlatx64.atw.hu and https://en.wikichip.org/wiki/64-bit_architecture#x86\n\t *  Also: https://www.intel.com/content/dam/www/public/us/en/documents/sa00115-microcode-update-guidance.pdf\n\t */\n\tenum CpuModel {\n\t\tCPU_MODEL_UNKNOWN        =  0x00,\n\t\tCPU_MODEL_PENRYN         =  0x17,\n\t\tCPU_MODEL_NEHALEM        =  0x1A,\n\t\tCPU_MODEL_FIELDS         =  0x1E, /* Lynnfield, Clarksfield */\n\t\tCPU_MODEL_DALES          =  0x1F, /* Havendale, Auburndale */\n\t\tCPU_MODEL_NEHALEM_EX     =  0x2E,\n\t\tCPU_MODEL_DALES_32NM     =  0x25, /* Clarkdale, Arrandale */\n\t\tCPU_MODEL_WESTMERE       =  0x2C, /* Gulftown, Westmere-EP/-WS */\n\t\tCPU_MODEL_WESTMERE_EX    =  0x2F,\n\t\tCPU_MODEL_SANDYBRIDGE    =  0x2A,\n\t\tCPU_MODEL_JAKETOWN       =  0x2D,\n\t\tCPU_MODEL_IVYBRIDGE      =  0x3A,\n\t\tCPU_MODEL_IVYBRIDGE_EP   =  0x3E,\n\t\tCPU_MODEL_CRYSTALWELL    =  0x46,\n\t\tCPU_MODEL_HASWELL        =  0x3C,\n\t\tCPU_MODEL_HASWELL_EP     =  0x3F,\n\t\tCPU_MODEL_HASWELL_ULT    =  0x45,\n\t\tCPU_MODEL_BROADWELL      =  0x3D,\n\t\tCPU_MODEL_BROADWELL_ULX  =  0x3D,\n\t\tCPU_MODEL_BROADWELL_ULT  =  0x3D,\n\t\tCPU_MODEL_BRYSTALWELL    =  0x47,\n\t\tCPU_MODEL_SKYLAKE        =  0x4E,\n\t\tCPU_MODEL_SKYLAKE_ULT    =  0x4E,\n\t\tCPU_MODEL_SKYLAKE_ULX    =  0x4E,\n\t\tCPU_MODEL_SKYLAKE_DT     =  0x5E,\n\t\tCPU_MODEL_SKYLAKE_W      =  0x55,\n\t\tCPU_MODEL_KABYLAKE       =  0x8E,\n\t\tCPU_MODEL_KABYLAKE_ULT   =  0x8E,\n\t\tCPU_MODEL_KABYLAKE_ULX   =  0x8E,\n\t\tCPU_MODEL_KABYLAKE_DT    =  0x9E,\n\t\tCPU_MODEL_COFFEELAKE     =  0x9E,\n\t\tCPU_MODEL_COFFEELAKE_ULT =  0x9E,\n\t\tCPU_MODEL_COFFEELAKE_ULX =  0x9E,\n\t\tCPU_MODEL_COFFEELAKE_DT  =  0x9E,\n\t\tCPU_MODEL_CANNONLAKE     =  0x66,\n\t\tCPU_MODEL_ICELAKE        =  0x7E\n\t};\n\n\t/**\n\t *  Known CPU vendors\n\t */\n\tenum class CpuVendor {\n\t\tUnknown,\n\t\tAMD,\n\t\tIntel\n\t\t/* Add more processors here if needed */\n\t};\n\n\t/**\n\t *  Intel CPU generations (starting from 0)\n\t */\n\tenum class CpuGeneration {\n\t\tUnknown,\n\t\tPenryn,\n\t\tNehalem,\n\t\tWestmere,\n\t\tSandyBridge,\n\t\tIvyBridge,\n\t\tHaswell,\n\t\tBroadwell,\n\t\tSkylake,\n\t\tKabyLake,\n\t\tCoffeeLake,\n\t\tCannonLake,\n\t\tIceLake,\n\t\tMaxGeneration\n\t};\n\n\t/* Responses identification request with %eax 0 */\n\t/* AMD:     \"AuthenticAMD\" */\n\tstatic constexpr uint32_t signature_AMD_ebx = 0x68747541;\n\tstatic constexpr uint32_t signature_AMD_edx = 0x69746e65;\n\tstatic constexpr uint32_t signature_AMD_ecx = 0x444d4163;\n\t/* CENTAUR: \"CentaurHauls\" */\n\tstatic constexpr uint32_t signature_CENTAUR_ebx = 0x746e6543;\n\tstatic constexpr uint32_t signature_CENTAUR_edx = 0x48727561;\n\tstatic constexpr uint32_t signature_CENTAUR_ecx = 0x736c7561;\n\t/* CYRIX:   \"CyrixInstead\" */\n\tstatic constexpr uint32_t signature_CYRIX_ebx = 0x69727943;\n\tstatic constexpr uint32_t signature_CYRIX_edx = 0x736e4978;\n\tstatic constexpr uint32_t signature_CYRIX_ecx = 0x64616574;\n\t/* INTEL:   \"GenuineIntel\" */\n\tstatic constexpr uint32_t signature_INTEL_ebx = 0x756e6547;\n\tstatic constexpr uint32_t signature_INTEL_edx = 0x49656e69;\n\tstatic constexpr uint32_t signature_INTEL_ecx = 0x6c65746e;\n\t/* TM1:     \"TransmetaCPU\" */\n\tstatic constexpr uint32_t signature_TM1_ebx = 0x6e617254;\n\tstatic constexpr uint32_t signature_TM1_edx = 0x74656d73;\n\tstatic constexpr uint32_t signature_TM1_ecx = 0x55504361;\n\t/* TM2:     \"GenuineTMx86\" */\n\tstatic constexpr uint32_t signature_TM2_ebx = 0x756e6547;\n\tstatic constexpr uint32_t signature_TM2_edx = 0x54656e69;\n\tstatic constexpr uint32_t signature_TM2_ecx = 0x3638784d;\n\t/* NSC:     \"Geode by NSC\" */\n\tstatic constexpr uint32_t signature_NSC_ebx = 0x646f6547;\n\tstatic constexpr uint32_t signature_NSC_edx = 0x43534e20;\n\tstatic constexpr uint32_t signature_NSC_ecx = 0x79622065;\n\t/* NEXGEN:  \"NexGenDriven\" */\n\tstatic constexpr uint32_t signature_NEXGEN_ebx = 0x4778654e;\n\tstatic constexpr uint32_t signature_NEXGEN_edx = 0x72446e65;\n\tstatic constexpr uint32_t signature_NEXGEN_ecx = 0x6e657669;\n\t/* RISE:    \"RiseRiseRise\" */\n\tstatic constexpr uint32_t signature_RISE_ebx = 0x65736952;\n\tstatic constexpr uint32_t signature_RISE_edx = 0x65736952;\n\tstatic constexpr uint32_t signature_RISE_ecx = 0x65736952;\n\t/* SIS:     \"SiS SiS SiS \" */\n\tstatic constexpr uint32_t signature_SIS_ebx = 0x20536953;\n\tstatic constexpr uint32_t signature_SIS_edx = 0x20536953;\n\tstatic constexpr uint32_t signature_SIS_ecx = 0x20536953;\n\t/* UMC:     \"UMC UMC UMC \" */\n\tstatic constexpr uint32_t signature_UMC_ebx = 0x20434d55;\n\tstatic constexpr uint32_t signature_UMC_edx = 0x20434d55;\n\tstatic constexpr uint32_t signature_UMC_ecx = 0x20434d55;\n\t/* VIA:     \"VIA VIA VIA \" */\n\tstatic constexpr uint32_t signature_VIA_ebx = 0x20414956;\n\tstatic constexpr uint32_t signature_VIA_edx = 0x20414956;\n\tstatic constexpr uint32_t signature_VIA_ecx = 0x20414956;\n\t/* VORTEX:  \"Vortex86 SoC\" */\n\tstatic constexpr uint32_t signature_VORTEX_ebx = 0x74726f56;\n\tstatic constexpr uint32_t signature_VORTEX_edx = 0x36387865;\n\tstatic constexpr uint32_t signature_VORTEX_ecx = 0x436f5320;\n\n\t/* Features in %ecx for leaf 1 */\n\tstatic constexpr uint32_t bit_SSE3        = 0x00000001;\n\tstatic constexpr uint32_t bit_PCLMULQDQ   = 0x00000002;\n\tstatic constexpr uint32_t bit_DTES64      = 0x00000004;\n\tstatic constexpr uint32_t bit_MONITOR     = 0x00000008;\n\tstatic constexpr uint32_t bit_DSCPL       = 0x00000010;\n\tstatic constexpr uint32_t bit_VMX         = 0x00000020;\n\tstatic constexpr uint32_t bit_SMX         = 0x00000040;\n\tstatic constexpr uint32_t bit_EIST        = 0x00000080;\n\tstatic constexpr uint32_t bit_TM2         = 0x00000100;\n\tstatic constexpr uint32_t bit_SSSE3       = 0x00000200;\n\tstatic constexpr uint32_t bit_CNXTID      = 0x00000400;\n\tstatic constexpr uint32_t bit_FMA         = 0x00001000;\n\tstatic constexpr uint32_t bit_CMPXCHG16B  = 0x00002000;\n\tstatic constexpr uint32_t bit_xTPR        = 0x00004000;\n\tstatic constexpr uint32_t bit_PDCM        = 0x00008000;\n\tstatic constexpr uint32_t bit_PCID        = 0x00020000;\n\tstatic constexpr uint32_t bit_DCA         = 0x00040000;\n\tstatic constexpr uint32_t bit_SSE41       = 0x00080000;\n\tstatic constexpr uint32_t bit_SSE42       = 0x00100000;\n\tstatic constexpr uint32_t bit_x2APIC      = 0x00200000;\n\tstatic constexpr uint32_t bit_MOVBE       = 0x00400000;\n\tstatic constexpr uint32_t bit_POPCNT      = 0x00800000;\n\tstatic constexpr uint32_t bit_TSCDeadline = 0x01000000;\n\tstatic constexpr uint32_t bit_AESNI       = 0x02000000;\n\tstatic constexpr uint32_t bit_XSAVE       = 0x04000000;\n\tstatic constexpr uint32_t bit_OSXSAVE     = 0x08000000;\n\tstatic constexpr uint32_t bit_AVX         = 0x10000000;\n\tstatic constexpr uint32_t bit_F16C        = 0x20000000;\n\tstatic constexpr uint32_t bit_RDRND       = 0x40000000;\n\n\t/* Features in %edx for leaf 1 */\n\tstatic constexpr uint32_t bit_FPU         = 0x00000001;\n\tstatic constexpr uint32_t bit_VME         = 0x00000002;\n\tstatic constexpr uint32_t bit_DE          = 0x00000004;\n\tstatic constexpr uint32_t bit_PSE         = 0x00000008;\n\tstatic constexpr uint32_t bit_TSC         = 0x00000010;\n\tstatic constexpr uint32_t bit_MSR         = 0x00000020;\n\tstatic constexpr uint32_t bit_PAE         = 0x00000040;\n\tstatic constexpr uint32_t bit_MCE         = 0x00000080;\n\tstatic constexpr uint32_t bit_CX8         = 0x00000100;\n\tstatic constexpr uint32_t bit_APIC        = 0x00000200;\n\tstatic constexpr uint32_t bit_SEP         = 0x00000800;\n\tstatic constexpr uint32_t bit_MTRR        = 0x00001000;\n\tstatic constexpr uint32_t bit_PGE         = 0x00002000;\n\tstatic constexpr uint32_t bit_MCA         = 0x00004000;\n\tstatic constexpr uint32_t bit_CMOV        = 0x00008000;\n\tstatic constexpr uint32_t bit_PAT         = 0x00010000;\n\tstatic constexpr uint32_t bit_PSE36       = 0x00020000;\n\tstatic constexpr uint32_t bit_PSN         = 0x00040000;\n\tstatic constexpr uint32_t bit_CLFSH       = 0x00080000;\n\tstatic constexpr uint32_t bit_DS          = 0x00200000;\n\tstatic constexpr uint32_t bit_ACPI        = 0x00400000;\n\tstatic constexpr uint32_t bit_MMX         = 0x00800000;\n\tstatic constexpr uint32_t bit_FXSR        = 0x01000000;\n\tstatic constexpr uint32_t bit_SSE         = 0x02000000;\n\tstatic constexpr uint32_t bit_SSE2        = 0x04000000;\n\tstatic constexpr uint32_t bit_SS          = 0x08000000;\n\tstatic constexpr uint32_t bit_HTT         = 0x10000000;\n\tstatic constexpr uint32_t bit_TM          = 0x20000000;\n\tstatic constexpr uint32_t bit_PBE         = 0x80000000;\n\n\t/* Features in %ebx for leaf 7 sub-leaf 0 */\n\tstatic constexpr uint32_t bit_FSGSBASE    = 0x00000001;\n\tstatic constexpr uint32_t bit_SGX         = 0x00000004;\n\tstatic constexpr uint32_t bit_BMI         = 0x00000008;\n\tstatic constexpr uint32_t bit_HLE         = 0x00000010;\n\tstatic constexpr uint32_t bit_AVX2        = 0x00000020;\n\tstatic constexpr uint32_t bit_SMEP        = 0x00000080;\n\tstatic constexpr uint32_t bit_BMI2        = 0x00000100;\n\tstatic constexpr uint32_t bit_ENH_MOVSB   = 0x00000200;\n\tstatic constexpr uint32_t bit_RTM         = 0x00000800;\n\tstatic constexpr uint32_t bit_MPX         = 0x00004000;\n\tstatic constexpr uint32_t bit_AVX512F     = 0x00010000;\n\tstatic constexpr uint32_t bit_AVX512DQ    = 0x00020000;\n\tstatic constexpr uint32_t bit_RDSEED      = 0x00040000;\n\tstatic constexpr uint32_t bit_ADX         = 0x00080000;\n\tstatic constexpr uint32_t bit_AVX512IFMA  = 0x00200000;\n\tstatic constexpr uint32_t bit_CLFLUSHOPT  = 0x00800000;\n\tstatic constexpr uint32_t bit_CLWB        = 0x01000000;\n\tstatic constexpr uint32_t bit_AVX512PF    = 0x04000000;\n\tstatic constexpr uint32_t bit_AVX51SER    = 0x08000000;\n\tstatic constexpr uint32_t bit_AVX512CD    = 0x10000000;\n\tstatic constexpr uint32_t bit_SHA         = 0x20000000;\n\tstatic constexpr uint32_t bit_AVX512BW    = 0x40000000;\n\tstatic constexpr uint32_t bit_AVX512VL    = 0x80000000;\n\n\t/* Features in %ecx for leaf 7 sub-leaf 0 */\n\tstatic constexpr uint32_t bit_PREFTCHWT1  = 0x00000001;\n\tstatic constexpr uint32_t bit_AVX512VBMI  = 0x00000002;\n\tstatic constexpr uint32_t bit_PKU         = 0x00000004;\n\tstatic constexpr uint32_t bit_OSPKE       = 0x00000010;\n\tstatic constexpr uint32_t bit_AVX512VPOPCNTDQ  = 0x00004000;\n\tstatic constexpr uint32_t bit_RDPID       = 0x00400000;\n\n\t/* Features in %edx for leaf 7 sub-leaf 0 */\n\tstatic constexpr uint32_t bit_AVX5124VNNIW  = 0x00000004;\n\tstatic constexpr uint32_t bit_AVX5124FMAPS  = 0x00000008;\n\n\t/* Features in %eax for leaf 13 sub-leaf 1 */\n\tstatic constexpr uint32_t bit_XSAVEOPT    = 0x00000001;\n\tstatic constexpr uint32_t bit_XSAVEC      = 0x00000002;\n\tstatic constexpr uint32_t bit_XSAVES      = 0x00000008;\n\n\t/* Features in %ecx for leaf = 0x80000001 */;\n\tstatic constexpr uint32_t bit_LAHF_LM     = 0x00000001;\n\tstatic constexpr uint32_t bit_ABM         = 0x00000020;\n\tstatic constexpr uint32_t bit_SSE4a       = 0x00000040;\n\tstatic constexpr uint32_t bit_PRFCHW      = 0x00000100;\n\tstatic constexpr uint32_t bit_XOP         = 0x00000800;\n\tstatic constexpr uint32_t bit_LWP         = 0x00008000;\n\tstatic constexpr uint32_t bit_FMA4        = 0x00010000;\n\tstatic constexpr uint32_t bit_TBM         = 0x00200000;\n\tstatic constexpr uint32_t bit_MWAITX      = 0x20000000;\n\n\t/* Features in %edx for leaf = 0x80000001 */;\n\tstatic constexpr uint32_t bit_MMXEXT      = 0x00400000;\n\tstatic constexpr uint32_t bit_LM          = 0x20000000;\n\tstatic constexpr uint32_t bit_3DNOWP      = 0x40000000;\n\tstatic constexpr uint32_t bit_3DNOW       = 0x80000000;\n\n\t/* Features in %ebx for leaf = 0x80000001 */;\n\tstatic constexpr uint32_t bit_CLZERO      = 0x00000001;\n\n\t/**\n\t *  Reads CPU information and other data.\n\t */\n\tvoid loadCpuInformation();\n\n\t/**\n\t *  Installed CPU information mapping\n\t */\n\tstruct CpuTopology {\n\t\t/**\n\t\t *  Number of physical processors installed\n\t\t */\n\t\tuint8_t packageCount {0};\n\n\t\t/**\n\t\t *  Number of physical cores per package\n\t\t */\n\t\tuint8_t physicalCount[MaxCpus] {};\n\n\t\t/**\n\t\t *  Number of logical cores per package\n\t\t */\n\t\tuint8_t logicalCount[MaxCpus] {};\n\n\t\t/**\n\t\t *  Total number of physical cores\n\t\t */\n\t\tinline uint8_t totalPhysical() {\n\t\t\tuint8_t count = physicalCount[0];\n\t\t\tfor (uint8_t i = 1; i < packageCount; i++)\n\t\t\t\tcount += physicalCount[i];\n\t\t\treturn count;\n\t\t}\n\n\t\t/**\n\t\t *  Total number of logical cores\n\t\t */\n\t\tinline uint8_t totalLogical() {\n\t\t\tuint8_t count = logicalCount[0];\n\t\t\tfor (uint8_t i = 1; i < packageCount; i++)\n\t\t\t\tcount += logicalCount[i];\n\t\t\treturn count;\n\t\t}\n\n\t\t/**\n\t\t *  Mapping of cpu_number() to CPU package from 0 to packageCount\n\t\t */\n\t\tuint8_t numberToPackage[MaxCpus] {};\n\n\t\t/**\n\t\t *  Mapping of cpu_number() to physical core from 0 to physicalCount in package\n\t\t */\n\t\tuint8_t numberToPhysical[MaxCpus] {};\n\n\t\t/**\n\t\t *  Mapping of cpu_number() to physical cores from 0 to totalPhysical.\n\t\t */\n\t\tinline uint8_t numberToPhysicalUnique(uint8_t i) {\n\t\t\tuint8_t num = 0;\n\t\t\tuint8_t package = numberToPackage[i];\n\t\t\tfor (uint8_t i = 0; i < package; i++)\n\t\t\t\tnum += physicalCount[i];\n\t\t\treturn num + numberToPhysical[i];\n\t\t}\n\n\t\t/**\n\t\t *  Mapping of cpu_number() to logical thread from 0 to logicalCount in package\n\t\t *  Note, that the list is sorted, and the first physicalCount logical threads\n\t\t *  correspond to their corresponding physical cores.\n\t\t */\n\t\tuint8_t numberToLogical[MaxCpus] {};\n\t};\n\n\t/**\n\t *  Get running CPU generation.\n\t *\n\t *  @param ofamily    a pointer to store CPU family in\n\t *  @param omodel     a pointer to store CPU model in\n\t *  @param ostepping  a pointer to store CPU stepping in\n\t *\n\t *  @return detected Intel CPU generation\n\t */\n\tEXPORT CpuGeneration getGeneration(uint32_t *ofamily=nullptr, uint32_t *omodel=nullptr, uint32_t *ostepping=nullptr);\n\n\t/**\n\t *  Obtain CPU topology.\n\t *\n\t *  @param topology  parsed cpu topology, must be passed zeroed.\n\t *\n\t *  @return true on success\n\t */\n\tEXPORT bool getCpuTopology(CpuTopology &topology);\n\n\t/**\n\t *  Obtain cpuid registers\n\t *\n\t *  @param no     cpuid number\n\t *  @param count  cpuid count\n\t *  @param a      eax output pointer (optional)\n\t *  @param b      ebx output pointer (optional)\n\t *  @param c      ecx output pointer (optional)\n\t *  @param d      edx output pointer (optional)\n\t *\n\t *  @return true if supported\n\t */\n\tEXPORT bool getCpuid(uint32_t no, uint32_t count, uint32_t *a, uint32_t *b=nullptr, uint32_t *c=nullptr, uint32_t *d=nullptr);\n}\n\n#endif /* kern_cpu_h */\n"
  },
  {
    "path": "EFI/CLOVER/kexts/Other/Lilu_v1.3.7.kext/Contents/Resources/Headers/kern_crypto.hpp",
    "content": "//\n//  kern_crypto.hpp\n//  Lilu\n//\n//  Copyright © 2017 vit9696. All rights reserved.\n//\n\n#ifndef kern_crypto_h\n#define kern_crypto_h\n\n#include <Headers/kern_config.hpp>\n#include <Headers/kern_util.hpp>\n#include <stdint.h>\n\nnamespace Crypto {\n\t/**\n\t *  Currently this is equal to both key size and block size\n\t */\n\tstatic constexpr uint32_t BlockSize = 16;\n\t\n\t/**\n\t *  Currently this is guaranteed hash size\n\t */\n\tstatic constexpr uint32_t MinDigestSize = 32;\n\t\n\t/**\n\t *  Encrypted data format\n\t */\n\tstruct PACKED Encrypted {\n\t\tuint8_t iv[BlockSize];                         // Initialisation vector\n\t\tstruct PACKED Data {\n\t\t\tuint32_t size;\t\t\t\t               // Actual encrypted buffer size\n\t\t\tuint8_t buf[BlockSize - sizeof(uint32_t)]; // Encrypted buffer >= BlockSize\n\t\t};\n\t\t\n\t\tunion {\n\t\t\tData enc;\n\t\t\tuint8_t buf[BlockSize];\n\t\t};\n\t};\n\t\n\t/**\n\t *  Securely erase memory buffer\n\t *  Based off cc_clear from corecrypto (src/cc_clear.c)\n\t *\n\t *  @param len buffer length\n\t *  @param dst buffer pointer\n\t */\n\tinline void zeroMemory(size_t len, void *dst) {\n\t\tauto vptr = reinterpret_cast<volatile char *>(dst);\n\t\twhile (len--)\n\t\t\t*vptr++ = '\\0';\n\t}\n\n\t/**\n\t *  Generates cryptographically secure encryption key (from /dev/random)\n\t *\n\t *  @return generated key of at least BlockSize bits long (must be freeded by Buffer::deleter) or nullptr\n\t */\n\tEXPORT uint8_t *genUniqueKey(uint32_t size=BlockSize);\n\t\n\t/**\n\t *  Encrypts data of specified size and stores in Encrypted format\n\t *\n\t *  @param key  encryption key returned by genUniqueKey\n\t *  @param src  source data\n\t *  @param size data size, encrypted size is returned on success\n\t *\n\t *  @param encrypted data in Encrypted format (must be freeded by Buffer::deleter) or nullptr\n\t */\n\tEXPORT uint8_t *encrypt(const uint8_t *key, const uint8_t *src, uint32_t &size);\n\t\n\t/**\n\t *  Decrypts data of specified size stored in Encrypted format\n\t *\n\t *  @param key  encryption key returned by genUniqueKey\n\t *  @param src  source data\n\t *  @param size data size, decrypted size is returned on success\n\t *\n\t *  @param decrypted data (must be freeded by Buffer::deleter) or nullptr\n\t */\n\tEXPORT uint8_t *decrypt(const uint8_t *key, const uint8_t *src, uint32_t &size);\n\n\t/**\n\t *  Calculate digest of given size\n\t *\n\t *  @param src  source data\n\t *  @param size data size\n\t *\n\t *  @return digest hash of at least MinDigestSize bytes (must be freeded by Buffer::deleter) or nullptr\n\t */\n\tEXPORT uint8_t *hash(const uint8_t *src, uint32_t size);\n}\n\n#endif /* kern_crypto_h */\n"
  },
  {
    "path": "EFI/CLOVER/kexts/Other/Lilu_v1.3.7.kext/Contents/Resources/Headers/kern_devinfo.hpp",
    "content": "//\n//  kern_devinfo.hpp\n//  Lilu\n//\n//  Copyright © 2018 vit9696. All rights reserved.\n//\n\n#ifndef kern_devinfo_h\n#define kern_devinfo_h\n\n#include <Headers/kern_config.hpp>\n#include <Headers/kern_util.hpp>\n#include <Library/LegacyIOService.h>\n\n/**\n *  Obtain installed devices split into categories.\n *  Should be used from onPatcherLoad and onwards.\n */\nclass DeviceInfo {\n\t/**\n\t *  Updates reportedLayoutId\n\t */\n\tvoid updateLayoutId();\n\n\t/**\n\t *  Updates reportedFramebufferId\n\t */\n\tvoid updateFramebufferId();\n\n\t/**\n\t *  Updates firmwareVendor\n\t */\n\tvoid updateFirmwareVendor();\n\n\t/**\n\t *  Obtains devices from PCI root\n\t *\n\t *  @param pciRoot  PCI root instance (commonly PCI0@0 device)\n\t */\n\tvoid grabDevicesFromPciRoot(IORegistryEntry *pciRoot);\n\npublic:\n\t/**\n\t *  Obtains autodetected legacy framebuffer if applicable\n\t *\n\t *  @return framebuffer or 0xFFFFFFFF\n\t */\n\tstatic uint32_t getLegacyFramebufferId();\n\n\t/**\n\t *  Checks whether the framebuffer has connectors or not.\n\t *\n\t *  @return true if the framebuffer has no connectors\n\t */\n\tstatic bool isConnectorLessPlatformId(uint32_t id);\n\n\t/**\n\t *  Common external GPU parameter list\n\t */\n\tstruct ExternalVideo {\n\t\t/**\n\t\t *  Aka GFX0 device\n\t\t */\n\t\tIORegistryEntry *video {nullptr};\n\n\t\t/**\n\t\t *  Aka HDAU device\n\t\t */\n\t\tIORegistryEntry *audio {nullptr};\n\n\t\t/**\n\t\t *  External GPU vendor\n\t\t */\n\t\tuint32_t vendor {0};\n\t};\n\n\t/**\n\t *  Aka HDEF device\n\t */\n\tIORegistryEntry *audioBuiltinAnalog {nullptr};\n\n\t/**\n\t *  Aka HDAU device for builtin GPU\n\t */\n\tIORegistryEntry *audioBuiltinDigital {nullptr};\n\n\t/**\n\t *  Aka IGPU device\n\t */\n\tIORegistryEntry *videoBuiltin {nullptr};\n\n\t/**\n\t *  Aka IMEI device\n\t */\n\tIORegistryEntry *managementEngine {nullptr};\n\n\t/**\n\t *  Aka GFX0 devices (kept in sync with audioExternal)\n\t */\n\tevector<ExternalVideo> videoExternal;\n\nprivate:\n\t/**\n\t *  This is the default reported layout-id passed to reportedLayoutId.\n\t *  The reason for choosing 7 is its presence in 10.14 and the fact\n\t *  Apple frameworks still communicate to the files present on disk.\n\t *  For information purposes only! Use reportedLayoutId!\n\t */\n\tstatic constexpr uint32_t DefaultReportedLayoutId = 7;\n\n\t/**\n\t *  The boot-arg to override the reported layout-id to AppleHDA.\n\t *  For user configuration only! Use reportedLayoutId!\n\t */\n\tstatic constexpr const char *ReportedLayoutIdArg = \"alcapplid\";\n\n\t/**\n\t *  The property to override the reported layout-id to AppleHDA.\n\t *  For user configuration only! Use reportedLayoutId!\n\t */\n\tstatic constexpr const char *ReportedLayoutIdName = \"apple-layout-id\";\n\npublic:\n\t/**\n\t *  Layout id to be reported by all audio devices (you must update it yourself).\n\t *  This follows the standard convention initially found in AppleALC:\n\t *\talcapplid=X boot-arg has highest priority and overrides any other value.\n\t *  apple-layout-id HDEF prop has normal priority, you may use it if you need.\n\t *  DefaultReportedLayoutId will be used if both of the above are not set.\n\t */\n\tuint32_t reportedLayoutId {0};\n\nprivate:\n\t/**\n\t *  The boot-arg to override the reported AAPL,ig-platform-id to Intel drivers.\n\t *  For user configuration only! Use reportedFramebufferId!\n\t */\n\tstatic constexpr const char *ReportedFrameIdArg = \"igfxframe\";\n\n\t/**\n\t *  The boot-arg to override the reported AAPL,ig-platform-id to Intel drivers.\n\t *  Sets VESA framebuffer id (0xFFFFFFFF).\n\t *  For user configuration only! Use reportedFramebufferId!\n\t */\n\tstatic constexpr const char *ReportedVesaIdArg = \"-igfxvesa\";\n\n\t/**\n\t *  The boot-arg to force-disable any external GPU if found.\n\t *  For user configuration only! Use requestedExternalSwitchOff!\n\t */\n\tstatic constexpr const char *RequestedExternalSwitchOffArg {\"-wegnoegpu\"};\n\n\t/**\n\t *  The property to set your platform id for Intel drivers (Ivy and newer).\n\t *  For user configuration only! Use reportedFramebufferName!\n\t */\n\tstatic constexpr const char *ReportedFrameIdName = \"AAPL,ig-platform-id\";\n\n\t/**\n\t *  The property to set your platform id for Intel drivers (Sandy).\n\t *  For user configuration only! Use reportedFramebufferName!\n\t */\n\tstatic constexpr const char *ReportedFrameIdLegacyName = \"AAPL,snb-platform-id\";\n\n\t/**\n\t *  The IGPU property to force-disable any external GPU if found.\n\t *  For user configuration only! Use requestedExternalSwitchOff!\n\t */\n\tstatic constexpr const char *RequestedExternalSwitchOffName {\"disable-external-gpu\"};\n\n\t/**\n\t *  Known platform ids used by Intel GPU kexts\n\t *  For user configuration only!\n\t */\n\tstatic constexpr uint32_t DefaultAppleSkylakePlatformId {0x19120000};\n\tstatic constexpr uint32_t DefaultAppleKabyLakePlatformId {0x59160000};\n\tstatic constexpr uint32_t DefaultAppleCoffeeLakePlatformId {0x3EA50000};\n\tstatic constexpr uint32_t DefaultAppleCannonLakePlatformId {0x5A520000};\n\tstatic constexpr uint32_t DefaultAppleIceLakeRealPlatformId {0x8A520000};\n\tstatic constexpr uint32_t DefaultAppleIceLakeSimulatorPlatformId {0xFF050000};\n\n\t/**\n\t *  Framebuffers without any ports used for hardware acceleration only\n\t *  Note 1: Broadwell framebuffers all have connectors added.\n\t *  Note 2: Coffee Lake framebuffers without connectors are only present in 10.14.\n\t *  Note 3: prerelease Cannon Lake and Ice Lake framebuffers are without connectors.\n\t *  For user configuration only!\n\t */\n\tstatic constexpr uint32_t ConnectorLessSandyBridgePlatformId1 {0x00030030};\n\tstatic constexpr uint32_t ConnectorLessSandyBridgePlatformId2 {0x00050000};\n\tstatic constexpr uint32_t ConnectorLessIvyBridgePlatformId1 {0x01620006};\n\tstatic constexpr uint32_t ConnectorLessIvyBridgePlatformId2 {0x01620007};\n\tstatic constexpr uint32_t ConnectorLessHaswellPlatformId1 {0x04120004};\n\tstatic constexpr uint32_t ConnectorLessHaswellPlatformId2 {0x0412000B};\n\tstatic constexpr uint32_t ConnectorLessSkylakePlatformId1 {0x19020001};\n\tstatic constexpr uint32_t ConnectorLessSkylakePlatformId2 {0x19170001};\n\tstatic constexpr uint32_t ConnectorLessSkylakePlatformId3 {0x19120001};\n\tstatic constexpr uint32_t ConnectorLessSkylakePlatformId4 {0x19320001};\n\tstatic constexpr uint32_t ConnectorLessKabyLakePlatformId1 {0x59180002};\n\tstatic constexpr uint32_t ConnectorLessKabyLakePlatformId2 {0x59120003};\n\tstatic constexpr uint32_t ConnectorLessCoffeeLakePlatformId1 {0x3E920003};\n\tstatic constexpr uint32_t ConnectorLessCoffeeLakePlatformId2 {0x3E910003};\n\tstatic constexpr uint32_t ConnectorLessCoffeeLakePlatformId3 {0x3E980003};\n\npublic:\n\t/**\n\t *  Vesa framebuffer identifier\n\t */\n\tstatic constexpr uint32_t DefaultVesaPlatformId {0xFFFFFFFF};\n\n\t/**\n\t *  Framebuffer id to be reported to IGPU.\n\t *  This follows the standard convention initially found in IntelGraphicsFixup:\n\t *  igfxframe=X boot-arg has highest priority and overrides any other value.\n\t *  -igfxvesa forces 0xFFFFFFFF frame to get into VESA mode.\n\t *  Manually specified AAPL,ig-platform-id or AAPL,snb-platform-id go next.\n\t *  On Sandy Bridge processors a default AAPL,snb-platform-id will be tried afterwards.\n\t *  On Skylake and Kaby Lake processors some default id will be tried afterwards.\n\t */\n\tuint32_t reportedFramebufferId {0};\n\n\t/**\n\t *  Compatible platform id property name for this IGPU\n\t */\n\tconst char *reportedFramebufferName {nullptr};\n\n\t/**\n\t *  Set to true if the framebuffer has no connectors\n\t */\n\tbool reportedFramebufferIsConnectorLess {false};\n\n\t/**\n\t *  Known variants of firmware vendors\n\t *  Please note, that it may not be possible to always detect the right vendor\n\t */\n\tenum class FirmwareVendor {\n\t\tUnknown,\n\t\tApple,\n\t\tVMware,\n\t\tEDKII,\n\t\tParallels,\n\t\tAMI,\n\t\tInsyde,\n\t\tPhoenix,\n\t\tHP\n\t};\n\n\t/**\n\t *  Firmware vendor manufacturer\n\t */\n\tFirmwareVendor firmwareVendor {FirmwareVendor::Unknown};\n\n\t/**\n\t *  Requested external GPU switchoff\n\t */\n\tbool requestedExternalSwitchOff {false};\n\n\t/**\n\t *  Allocate and initialise the device list.\n\t *\n\t *  @return device list or nullptr\n\t */\n\tEXPORT static DeviceInfo *create();\n\n\t/**\n\t *  Release initialised device list.\n\t *\n\t *  @param d  device list\n\t */\n\tEXPORT static void deleter(DeviceInfo *d);\n};\n\n#endif /* kern_devinfo_h */\n"
  },
  {
    "path": "EFI/CLOVER/kexts/Other/Lilu_v1.3.7.kext/Contents/Resources/Headers/kern_disasm.hpp",
    "content": "//\n//  kern_disasm.hpp\n//  Lilu\n//\n//  Copyright © 2016-2017 vit9696. All rights reserved.\n//\n\n#ifndef kern_disasm_hpp\n#define kern_disasm_hpp\n\n#include <Headers/kern_config.hpp>\n#include <Headers/kern_util.hpp>\n\n#ifdef LILU_ADVANCED_DISASSEMBLY\n#ifndef CAPSTONE_HAS_OSXKERNEL\n#define CAPSTONE_HAS_OSXKERNEL 1\n#endif\n#include <Headers/capstone/capstone.h>\n#endif /* LILU_ADVANCED_DISASSEMBLY */\n\n#include <sys/types.h>\n#include <mach/vm_types.h>\n\nclass Disassembler {\n#ifdef LILU_ADVANCED_DISASSEMBLY\n\t/**\n\t *  Because captsone handle can be 0\n\t */\n\tbool initialised {false};\n\t\n\t/**\n\t *  Internal capstone handle\n\t */\n\tsize_t handle {};\n#endif\n\n\t/**\n\t *  Max instruction size\n\t */\n\tstatic constexpr size_t MaxInstruction {15};\npublic:\n\n\t/**\n\t *  Return the real instruction size contained within min bytes\n\t *  Unlike instructionSize this uses HDE engine and at the cost of reduced compatibility it is much faster\n\t *  Note: instruction pointer should point to at least min + 32 valid bytes.\n\t *\n\t *  @param ptr instruction pointer\n\t *  @param min minimal possible size\n\t *\n\t *  @return instruction size >= min on success or 0\n\t */\n\tEXPORT static size_t quickInstructionSize(mach_vm_address_t ptr, size_t min);\n\n#ifdef LILU_ADVANCED_DISASSEMBLY\n\t\n\t/**\n\t *  Initialise advanced dissassembling framework\n\t *\n\t *  @param detailed  debugging output necessity\n\t *\n\t *  @return true on success\n\t */\n\tEXPORT bool init(bool detailed=false);\n\t\n\t/**\n\t *  Deinitialise advanced dissassembling framework, must be called regardless of the init error\n\t */\n\tEXPORT void deinit();\n\n\t/**\n\t *  Reads size bytes from addr and disassembles them.\n\t *\n\t *  @param addr        Address to read from\n\t *  @param size        Size of buffer to read\n\t *  @param result      Disassembled instructions array. You must free it\n\t *\n\t *  @return size of result\n\t */\n\tEXPORT size_t disasmBuf(mach_vm_address_t addr, size_t size, cs_insn **result);\n\t\n\t/**\n\t *  Return the real instruction size contained within min bytes\n\t *\n\t *  @param ptr instruction pointer\n\t *  @param min minimal possible size\n\t *\n\t *  @return instruction size >= min on success or 0\n\t */\n\tEXPORT size_t instructionSize(mach_vm_address_t ptr, size_t min);\n\t\n\t/**\n\t *  Reads lookup_size bytes from addr and disassembles them.\n\t *  After disassembling, tries to find num-th entry with call instruction, which argument is an immediate value (some address).\n\t *\n\t *  @param addr        Address to read from\n\t *  @param num         Number of call instruction to search for\n\t *  @param lookup_size Number of bytes to read\n\t *\n\t *  @note It is assumed that the operand contains a positive relative address.\n\t *\n\t *  @return direct address of num-th call instruction on success, else 0\n\t */\n\tEXPORT mach_vm_address_t disasmNthSub(mach_vm_address_t addr, size_t num, size_t lookup_size);\n\t\n\t/**\n\t *  @brief  Reads lookup_size bytes from addr and disassembles them.\n\t *\n\t *  After disassembling, tries to find num-th entry with jmp instruction, which argument is an immediate value (some address).\n\t *\n\t *  @param addr        Address to read from\n\t *  @param num         Number of jmp instruction to search for\n\t *  @param lookup_size Number of bytes to read\n\t *\n\t *  @note It is assumed that the operand contains a positive relative address.\n\t *\n\t *  @return direct address of num-th jmp instruction on success, else 0\n\t */\n\tEXPORT mach_vm_address_t disasmNthJmp(mach_vm_address_t addr, size_t num, size_t lookup_size);\n\t\n\t/**\n\t *  Reads lookup_size bytes from addr and disassembles them.\n\t *  After disassembling, tries to find num-th entry of inst instruction.\n\t *\n\t *  @param addr        Addres to read from\n\t *  @param ins         Instruction code\n\t *  @param num         Number of ins instruction to search for\n\t *  @param lookup_size Number of bytes to read\n\t *\n\t *  @return address of found instruction on success, else 0\n\t */\n\tEXPORT mach_vm_address_t disasmNthIns(mach_vm_address_t addr, x86_insn ins, size_t num, size_t lookup_size);\n\t\n\t/**\n\t *  Disassembly matching structure\n\t */\n\tstruct DisasmSig {\n\t\tx86_insn ins;       // instruction\n\t\tbool sub;           // relevant only for X86_INS_CALL, if its arg is X86_OP_IMM\n\t\tbool addr;          // if you want to return the address of exact inst in sig\n\t\t\n\t\tstatic DisasmSig *create() { return new DisasmSig; }\n\t\tstatic void deleter(DisasmSig *sig) { delete sig; }\n\t};\n\t\n\t/**\n\t *  Reads lookup_size bytes from addr and disassembles them.\n\t *  After disassembling, tries to find num-th entry of sig instruction pattern.\n\t *\n\t *  @param addr        Address to read from\n\t *  @param sig         Instruction pattern\n\t *  @param num         Order of pattern to search for\n\t *  @param lookup_size Number of bytes to read\n\t *\n\t *  @return direct address of pattern start on success, else 0\n\t */\n\tEXPORT mach_vm_address_t disasmSig(mach_vm_address_t addr, evector<DisasmSig *, DisasmSig::deleter> &sig, size_t num, size_t lookup_size);\n\t\n#endif /* LILU_ADVANCED_DISASSEMBLY */\n};\n\n#endif /* kern_disasm_hpp */\n"
  },
  {
    "path": "EFI/CLOVER/kexts/Other/Lilu_v1.3.7.kext/Contents/Resources/Headers/kern_efi.hpp",
    "content": "//\n//  kern_efi.hpp\n//  Lilu\n//\n//  Copyright © 2018 vit9696. All rights reserved.\n//\n\n#ifndef kern_efi_h\n#define kern_efi_h\n\n#include <Headers/kern_util.hpp>\n\n#include <pexpert/i386/efi.h>\n\n/**\n *  Convert 32-bit EFI errors provided by Apple to 64-bit EFI errors\n */\n#define EFI_ERROR64(x) (((x) & ~(1ULL << 31)) | (1ULL << 63))\nstatic_assert(EFI_LOAD_ERROR == 0x80000001 && EFI_ERROR64(EFI_LOAD_ERROR) == 0x8000000000000001,\n\t\"Apple has finally upgraded EFI headers!\");\n\nclass EfiRuntimeServices {\n\tIOLock *accessLock {nullptr};\n\tstatic EfiRuntimeServices *instance;\npublic:\n\t/**\n\t *  Activates EFI Runtime Services\n\t */\n\tstatic void activate();\n\n\t/**\n\t *  Lilu custom GUIDs exports, see OcSupportPkg/Include/Guid/OcVariables.h\n\t */\n\tEXPORT static const EFI_GUID LiluVendorGuid;\n\tEXPORT static const EFI_GUID LiluReadOnlyGuid;\n\tEXPORT static const EFI_GUID LiluWriteOnlyGuid;\n\n\t/**\n\t *  Get EFI Runtime Services wrapper if supported\n\t *\n\t *  @param lock  lock instance during the run, must be put back\n\t *\n\t *  @return wrapper instance\n\t */\n\tEXPORT static EfiRuntimeServices *get(bool lock=false);\n\n\t/**\n\t *  Put EFI Runtime Services wrapper to unlock\n\t */\n\tEXPORT void put();\n\n\t/**\n\t *  Perform system reset (does not return on success)\n\t *\n\t *  @param type reset type\n\t */\n\tEXPORT void resetSystem(EFI_RESET_TYPE type);\n\n\t/**\n\t *  Obtain EFI variable, invokes EFI_RUNTIME_SERVICES::GetVariable.\n\t *\n\t *  @param name  variable name\n\t *  @param guid  vendor guid\n\t *  @param attr  variable attributes\n\t *  @param size  data buffer size updated on read\n\t *  @param data  read data\n\t *\n\t *  @return EFI_STATUS code\n\t */\n\tEXPORT uint64_t getVariable(const char16_t *name, const EFI_GUID *guid, uint32_t *attr, uint64_t *size, void *data);\n\n\t/**\n\t *  Set EFI variable, invokes EFI_RUNTIME_SERVICES::SetVariable.\n\t *\n\t *  @param name  variable name\n\t *  @param guid  vendor guid\n\t *  @param attr  variable attributes\n\t *  @param size  data buffer size\n\t *  @param data  data to write\n\t *\n\t *  @return EFI_STATUS code\n\t */\n\tEXPORT uint64_t setVariable(const char16_t *name, const EFI_GUID *guid, uint32_t attr, uint64_t size, void *data);\n};\n\n#endif /* kern_efi_h */\n"
  },
  {
    "path": "EFI/CLOVER/kexts/Other/Lilu_v1.3.7.kext/Contents/Resources/Headers/kern_file.hpp",
    "content": "//\n//  kern_file.hpp\n//  Lilu\n//\n//  Copyright © 2016-2017 vit9696. All rights reserved.\n//\n\n#ifndef kern_file_hpp\n#define kern_file_hpp\n\n#include <Headers/kern_config.hpp>\n#include <Headers/kern_util.hpp>\n\n#include <sys/kernel_types.h>\n#include <sys/fcntl.h>\n\nnamespace FileIO {\n\t/**\n\t *  Reads file data at path\n\t *\n\t *  @param path full file path\n\t *  @param size bytes read\n\t *\n\t *  @return allocated buffer on success or nullptr on error\n\t */\n\tEXPORT uint8_t *readFileToBuffer(const char *path, size_t &size);\n\t\n\t/**\n\t *  Read file data from a vnode\n\t *\n\t *  @param buffer output buffer\n\t *  @param off    file offset\n\t *  @param sz     bytes to read\n\t *  @param vnode  file node\n\t *  @param ctxt   filesystem context\n\t *\n\t *  @return 0 on success\n\t */\n\tEXPORT int readFileData(void *buffer, off_t off, size_t sz, vnode_t vnode, vfs_context_t ctxt);\n\t\n\t/**\n\t *  Read file size from a vnode\n\t *\n\t *  @param vnode file node\n\t *  @param ctxt  filesystem context\n\t *\n\t *  @return file size or 0\n\t */\n\tEXPORT size_t readFileSize(vnode_t vnode, vfs_context_t ctxt);\n\t\n\t/**\n\t *  Writes buffer to a file at path\n\t *\n\t *  @param path   full file path\n\t *  @param buffer input buffer\n\t *  @param size   bytes write\n\t *  @param fmode  file opening mode\n\t *  @param cmode  file permissions\n\t *\n\t *  @return 0 on success\n\t */\n\tEXPORT int writeBufferToFile(const char *path, void *buffer, size_t size, int fmode=O_TRUNC | O_CREAT | FWRITE | O_NOFOLLOW, int cmode=S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH | S_IWOTH);\n\t\n\t/**\n\t *  Write file data to a vnode\n\t *\n\t *  @param buffer input buffer\n\t *  @param off    file offset\n\t *  @param size   bytes to write\n\t *  @param vnode  file node\n\t *  @param ctxt   filesystem context\n\t *\n\t *  @return 0 on success\n\t */\n\tEXPORT int writeFileData(void *buffer, off_t off, size_t size, vnode_t vnode, vfs_context_t ctxt);\n\t\n\t/**\n\t *  Perform file i/o through a vnode\n\t *\n\t *  @param buffer input buffer\n\t *  @param off    file offset\n\t *  @param size   bytes to write\n\t *  @param vnode  file node\n\t *  @param ctxt   filesystem context\n\t *  @param write  write to buffer otherwise read\n\t *\n\t *  @return 0 on success\n\t */\n\tint performFileIO(void *buffer, off_t off, size_t size, vnode_t vnode, vfs_context_t ctxt, bool write);\n}\n\n#endif /* kern_file_hpp */\n"
  },
  {
    "path": "EFI/CLOVER/kexts/Other/Lilu_v1.3.7.kext/Contents/Resources/Headers/kern_iokit.hpp",
    "content": "//\n//  kern_iokit.hpp\n//  Lilu\n//\n//  Copyright © 2016-2017 vit9696. All rights reserved.\n//\n\n#ifndef kern_iokit_hpp\n#define kern_iokit_hpp\n\n#include <Headers/kern_config.hpp>\n#include <Headers/kern_util.hpp>\n#include <Headers/kern_patcher.hpp>\n\n#include <libkern/c++/OSSerialize.h>\n#include <IOKit/IORegistryEntry.h>\n\nnamespace WIOKit {\n\n\t/**\n\t *  AppleHDAEngine::getLocation teaches us to use loop infinitely when talking to IOReg\n\t *  This feels mad and insane, since it may prevent the system from booting.\n\t *  Although this had never happened, we will use a far bigger fail-safe stop value.\n\t */\n\tstatic constexpr size_t bruteMax {0x10000000};\n\n\t/**\n\t *  Read typed OSData\n\t *\n\t *  @param obj    read object\n\t *  @param value  read value\n\t *  @param name   propert name\n\t *\n\t *  @return true on success\n\t */\n\ttemplate <typename T>\n\tinline bool getOSDataValue(const OSObject *obj, const char *name, T &value) {\n\t\tif (obj) {\n\t\t\tauto data = OSDynamicCast(OSData, obj);\n\t\t\tif (data && data->getLength() == sizeof(T)) {\n\t\t\t\tvalue = *static_cast<const T *>(data->getBytesNoCopy());\n\t\t\t\tDBGLOG(\"iokit\", \"getOSData %s has %llX value\", name, static_cast<uint64_t>(value));\n\t\t\t\treturn true;\n\t\t\t} else {\n\t\t\t\tSYSLOG(\"iokit\", \"getOSData %s has unexpected format\", name);\n\t\t\t}\n\t\t} else {\n\t\t\tDBGLOG(\"iokit\", \"getOSData %s was not found\", name);\n\t\t}\n\t\treturn false;\n\t}\n\n\t/**\n\t *  Read typed OSData through a temp type\n\t *\n\t *  @param obj    read object\n\t *  @param value  read value\n\t *  @param name   propert name\n\t *\n\t *  @return true on success\n\t */\n\ttemplate <typename AS, typename T>\n\tinline bool getOSDataValue(const OSObject *obj, const char *name, T &value) {\n\t\tAS tmp;\n\t\tif (getOSDataValue(obj, name, tmp)) {\n\t\t\tvalue = static_cast<T>(tmp);\n\t\t\treturn true;\n\t\t}\n\n\t\treturn false;\n\t}\n\n\t/**\n\t *  Read typed OSData from IORegistryEntry\n\t *\n\t *  @see getOSDataValue\n\t */\n\ttemplate <typename T>\n\tinline bool getOSDataValue(const IORegistryEntry *sect, const char *name, T &value) {\n\t\treturn getOSDataValue(sect->getProperty(name), name, value);\n\t}\n\n\t/**\n\t *  Read typed OSData from IORegistryEntry\n\t *\n\t *  @see getOSDataValue\n\t */\n\ttemplate <typename AS, typename T>\n\tinline bool getOSDataValue(const IORegistryEntry *sect, const char *name, T &value) {\n\t\treturn getOSDataValue<AS>(sect->getProperty(name), name, value);\n\t}\n\n\t/**\n\t *  Read typed OSData from IORegistryEntry\n\t *\n\t *  @see getOSDataValue\n\t */\n\ttemplate <typename T>\n\tinline bool getOSDataValue(const OSDictionary *dict, const char *name, T &value) {\n\t\treturn getOSDataValue(dict->getObject(name), name, value);\n\t}\n\n\t/**\n\t *  Read typed OSData from IORegistryEntry\n\t *\n\t *  @see getOSDataValue\n\t */\n\ttemplate <typename AS, typename T>\n\tinline bool getOSDataValue(const OSDictionary *dict, const char *name, T &value) {\n\t\treturn getOSDataValue<AS>(dict->getObject(name), name, value);\n\t}\n\n\t/**\n\t *  Retrieve property object\n\t *\n\t *  @param entry    IORegistry entry\n\t *  @param property property name\n\t *\n\t *  @return property object (must be released) or nullptr\n\t */\n\tEXPORT OSSerialize *getProperty(IORegistryEntry *entry, const char *property);\n\n\t/**\n\t *  Model variants\n\t */\n\tstruct ComputerModel {\n\t\tenum {\n\t\t\tComputerInvalid = 0x0,\n\t\t\tComputerLaptop  = 0x1,\n\t\t\tComputerDesktop = 0x2,\n\t\t\tComputerAny = ComputerLaptop | ComputerDesktop\n\t\t};\n\t};\n\n\t/**\n\t *  PCI GPU Vendor identifiers\n\t */\n\tstruct VendorID {\n\t\tenum : uint16_t {\n\t\t\tATIAMD = 0x1002,\n\t\t\tAMDZEN = 0x1022,\n\t\t\tNVIDIA = 0x10DE,\n\t\t\tIntel  = 0x8086,\n\t\t\tVMware = 0x15AD\n\t\t};\n\t};\n\n\t/**\n\t *  PCI class codes\n\t */\n\tstruct ClassCode {\n\t\tenum : uint32_t {\n\t\t\tVGAController     = 0x030000,\n\t\t\t// I have never seen this one, but laptops are evil.\n\t\t\tXGAController     = 0x030100,\n\t\t\t// Some laptops use this for Optimus GPUs.\n\t\t\tEx3DController    = 0x030200,\n\t\t\tDisplayController = 0x038000,\n\t\t\tPCIBridge         = 0x060400,\n\t\t\t// HDA device on some laptops like Acer Aspire VN7-592G (INSYDE).\n\t\t\tHDAMmDevice       = 0x040100,\n\t\t\t// Watch out for PCISubclassMask, 0x040380 is common on laptops.\n\t\t\tHDADevice         = 0x040300,\n\t\t\t// This does not seem to be documented. It works on Haswell at least.\n\t\t\tIMEI              = 0x078000,\n\t\t\t// To ignore device subclasses.\n\t\t\tPCISubclassMask   = 0xFFFF00,\n\t\t};\n\t};\n\n\t/**\n\t *  Definitions of PCI Config Registers\n\t */\n\tenum PCIRegister : uint8_t {\n\t\tkIOPCIConfigVendorID                = 0x00,\n\t\tkIOPCIConfigDeviceID                = 0x02,\n\t\tkIOPCIConfigCommand                 = 0x04,\n\t\tkIOPCIConfigStatus                  = 0x06,\n\t\tkIOPCIConfigRevisionID              = 0x08,\n\t\tkIOPCIConfigClassCode               = 0x09,\n\t\tkIOPCIConfigCacheLineSize           = 0x0C,\n\t\tkIOPCIConfigLatencyTimer            = 0x0D,\n\t\tkIOPCIConfigHeaderType              = 0x0E,\n\t\tkIOPCIConfigBIST                    = 0x0F,\n\t\tkIOPCIConfigBaseAddress0            = 0x10,\n\t\tkIOPCIConfigBaseAddress1            = 0x14,\n\t\tkIOPCIConfigBaseAddress2            = 0x18,\n\t\tkIOPCIConfigBaseAddress3            = 0x1C,\n\t\tkIOPCIConfigBaseAddress4            = 0x20,\n\t\tkIOPCIConfigBaseAddress5            = 0x24,\n\t\tkIOPCIConfigCardBusCISPtr           = 0x28,\n\t\tkIOPCIConfigSubSystemVendorID       = 0x2C,\n\t\tkIOPCIConfigSubSystemID             = 0x2E,\n\t\tkIOPCIConfigExpansionROMBase        = 0x30,\n\t\tkIOPCIConfigCapabilitiesPtr         = 0x34,\n\t\tkIOPCIConfigInterruptLine           = 0x3C,\n\t\tkIOPCIConfigInterruptPin            = 0x3D,\n\t\tkIOPCIConfigMinimumGrant            = 0x3E,\n\t\tkIOPCIConfigMaximumLatency          = 0x3F\n\t};\n\n\t/**\n\t *  Fixed offsets for PCI Config I/O virtual methods\n\t */\n\tstruct PCIConfigOffset {\n\t\tenum : size_t {\n\t\t\tConfigRead32      = 0x10A,\n\t\t\tConfigWrite32     = 0x10B,\n\t\t\tConfigRead16      = 0x10C,\n\t\t\tConfigWrite16     = 0x10D,\n\t\t\tConfigRead8       = 0x10E,\n\t\t\tConfigWrite8      = 0x10F,\n\t\t\tGetBusNumber      = 0x11D,\n\t\t\tGetDeviceNumber   = 0x11E,\n\t\t\tGetFunctionNumber = 0x11F\n\t\t};\n\t};\n\n\t/**\n\t *  PCI Config I/O method prototypes\n\t */\n\tusing t_PCIConfigRead32 = uint32_t (*)(IORegistryEntry *service, uint32_t space, uint8_t offset);\n\tusing t_PCIConfigRead16 = uint16_t (*)(IORegistryEntry *service, uint32_t space, uint8_t offset);\n\tusing t_PCIConfigRead8  = uint8_t  (*)(IORegistryEntry *service, uint32_t space, uint8_t offset);\n\tusing t_PCIConfigWrite32 = void (*)(IORegistryEntry *service, uint32_t space, uint8_t offset, uint32_t data);\n\tusing t_PCIConfigWrite16 = void (*)(IORegistryEntry *service, uint32_t space, uint8_t offset, uint16_t data);\n\tusing t_PCIConfigWrite8  = void (*)(IORegistryEntry *service, uint32_t space, uint8_t offset, uint8_t data);\n\tusing t_PCIGetBusNumber = uint8_t (*)(IORegistryEntry *service);\n\tusing t_PCIGetDeviceNumber = uint8_t (*)(IORegistryEntry *service);\n\tusing t_PCIGetFunctionNumber = uint8_t (*)(IORegistryEntry *service);\n\n\t/**\n\t *  Read PCI Config register\n\t *\n\t *  @param service  IOPCIDevice-compatible service.\n\t *  @param reg      PCI config register\n\t *  @param space    adress space\n\t *  @param size     read size for reading custom registers\n\t */\n    EXPORT uint32_t readPCIConfigValue(IORegistryEntry *service, uint32_t reg, uint32_t space = 0, uint32_t size = 0);\n\n\t/**\n\t *  Retrieve PCI device address\n\t *\n\t *  @param service   IOPCIDevice-compatible service.\n\t *  @param bus       bus address\n\t *  @param device    device address\n\t *  @param function  function address\n\t */\n    EXPORT void getDeviceAddress(IORegistryEntry *service, uint8_t &bus, uint8_t &device, uint8_t &function);\n\n\t/**\n\t *  Retrieve the computer type\n\t *\n\t *  @return valid computer type or ComputerAny\n\t */\n\tEXPORT int getComputerModel();\n\n\t/**\n\t *  Retrieve computer model and/or board-id properties\n\t *\n\t *  @param model    model name output buffer or null\n\t *  @param modelsz  model name output buffer size\n\t *  @param board    board identifier output buffer or null\n\t *  @param boardsz  board identifier output buffer size\n\t *\n\t *  @return true if relevant properties already are available, otherwise buffers are unchanged\n\t */\n\tEXPORT bool getComputerInfo(char *model, size_t modelsz, char *board, size_t boardsz);\n\n\t/**\n\t *  Retrieve an ioreg entry by path/prefix\n\t *\n\t *  @param path    an exact lookup path\n\t *  @param prefix  entry prefix at path\n\t *  @param plane   plane to lookup in\n\t *  @param proc    process every found entry with the method\n\t *  @param brute   kick ioreg until a value is found\n\t *  @param user    pass some value to the callback function\n\t *\n\t *  @return entry pointer (must NOT be released) or nullptr (on failure or in proc mode)\n\t */\n\tEXPORT IORegistryEntry *findEntryByPrefix(const char *path, const char *prefix, const IORegistryPlane *plane, bool (*proc)(void *, IORegistryEntry *)=nullptr, bool brute=false, void *user=nullptr);\n\n\t/**\n\t *  Retrieve an ioreg entry by path/prefix\n\t *\n\t *  @param entry   an ioreg entry to look in\n\t *  @param prefix  entry prefix at path\n\t *  @param plane   plane to lookup in\n\t *  @param proc    process every found entry with the method\n\t *  @param brute   kick ioreg until a value is found\n\t *  @param user    pass some value to the callback function\n\t *\n\t *  @return entry pointer (must NOT be released) or nullptr (on failure or in proc mode)\n\t */\n\tEXPORT IORegistryEntry *findEntryByPrefix(IORegistryEntry *entry, const char *prefix, const IORegistryPlane *plane, bool (*proc)(void *, IORegistryEntry *)=nullptr, bool brute=false, void *user=nullptr);\n\n\t/**\n\t *  Check if we are using prelinked kernel/kexts or not\n\t *\n\t *  @return true when confirmed that we definitely are\n\t */\n\tEXPORT bool usingPrelinkedCache();\n\n\t/**\n\t *  Properly rename the device\n\t *\n\t *  @param  entry   device to rename\n\t *  @param  name    new name\n\t *  @param  compat  correct compatible\n\t *\n\t *  @return true on success\n\t */\n    EXPORT bool renameDevice(IORegistryEntry *entry, const char *name, bool compat=true);\n}\n\n#endif /* kern_iokit_hpp */\n"
  },
  {
    "path": "EFI/CLOVER/kexts/Other/Lilu_v1.3.7.kext/Contents/Resources/Headers/kern_mach.hpp",
    "content": "//\n//  kern_mach.hpp\n//  Lilu\n//\n//  Certain parts of code are the subject of\n//   copyright © 2011, 2012, 2013, 2014 fG!, reverser@put.as - http://reverse.put.as\n//  Copyright © 2016-2017 vit9696. All rights reserved.\n//\n\n#ifndef kern_mach_hpp\n#define kern_mach_hpp\n\n#include <Headers/kern_config.hpp>\n#include <Headers/kern_util.hpp>\n\n#include <sys/time.h>\n#include <sys/types.h>\n#include <sys/vnode.h>\n#include <mach-o/loader.h>\n#include <mach/vm_param.h>\n#include <libkern/c++/OSDictionary.h>\n\nclass MachInfo {\n\tmach_vm_address_t running_text_addr {0}; // the address of running __TEXT segment\n\tmach_vm_address_t disk_text_addr {0};    // the same address at from a file\n\tmach_vm_address_t kaslr_slide {0};       // the kernel aslr slide, computed as the difference between above's addresses\n\tuint8_t *file_buf {nullptr};             // read file data\n\tOSDictionary *prelink_dict {nullptr};    // read prealinked kext dictionary\n\tuint8_t *prelink_addr {nullptr};         // prelink text base address\n\tmach_vm_address_t prelink_vmaddr {0};    // prelink text base vm address (for kexts this is their actual slide)\n\tuint32_t file_buf_size {0};              // read file data size\n\tuint8_t *linkedit_buf {nullptr};         // pointer to __LINKEDIT buffer containing symbols to solve\n\tuint64_t linkedit_fileoff {0};           // __LINKEDIT file offset so we can read\n\tuint64_t linkedit_size {0};\n\tuint32_t symboltable_fileoff {0};        // file offset to symbol table - used to position inside the __LINKEDIT buffer\n\tuint32_t symboltable_nr_symbols {0};\n\tuint32_t stringtable_fileoff {0};        // file offset to string table\n\tmach_header_64 *running_mh {nullptr};    // pointer to mach-o header of running kernel item\n\toff_t fat_offset {0};                    // additional fat offset\n\tsize_t memory_size {HeaderSize};         // memory size\n\tbool kaslr_slide_set {false};            // kaslr can be null, used for disambiguation\n\tbool allow_decompress {true};            // allows mach decompression\n\tbool prelink_slid {false};               // assume kaslr-slid kext addresses\n\tuint64_t self_uuid[2] {};                // saved uuid of the loaded kext or kernel\n\n\t/**\n\t *  Kernel slide is aligned by 20 bits\n\t */\n\tstatic constexpr size_t KASLRAlignment {0x100000};\n\n\t/**\n\t *  Retrieve LC_UUID command value from a mach header\n\t *\n\t *  @param header mach header pointer\n\t *\n\t *  @return UUID or nullptr\n\t */\n\tuint64_t *getUUID(void *header);\n\n\t/**\n\t *  Retrieve and preserve LC_UUID command value from a mach header\n\t *\n\t *  @param header mach header pointer\n\t *\n\t *  @return true on success\n\t */\n\tbool loadUUID(void *header);\n\t\n\t/**\n\t *  Enable/disable the Write Protection bit in CR0 register\n\t *\n\t *  @param enable the desired value\n\t *\n\t *  @return KERN_SUCCESS if succeeded\n\t */\n\tstatic kern_return_t setWPBit(bool enable);\n\t\n\t/**\n\t *  Retrieve the first pages of a binary at disk into a buffer\n\t *  Version that uses KPI VFS functions and a ripped uio_createwithbuffer() from XNU\n\t *\n\t *  @param buffer     allocated buffer sized no less than HeaderSize\n\t *  @param vnode      file node\n\t *  @param ctxt       filesystem context\n\t *  @param decompress enable decompression\n\t *  @param off        fat offset or 0\n\t *\n\t *  @return KERN_SUCCESS if the read data contains 64-bit mach header\n\t */\n\tkern_return_t readMachHeader(uint8_t *buffer, vnode_t vnode, vfs_context_t ctxt, off_t off=0);\n\n\t/**\n\t *  Retrieve the whole linkedit segment into target buffer from kernel binary at disk\n\t *\n\t *  @param vnode file node\n\t *  @param ctxt  filesystem context\n\t *\n\t *  @return KERN_SUCCESS on success\n\t */\n\tkern_return_t readLinkedit(vnode_t vnode, vfs_context_t ctxt);\n\t\n\t/**\n\t *  Retrieve necessary mach-o header information from the mach header\n\t *\n\t *  @param header read header sized no less than HeaderSize\n\t */\n\tvoid processMachHeader(void *header);\n\n\t/**\n\t *  Load kext info dictionary and addresses if they were not loaded previously\n\t */\n\tvoid updatePrelinkInfo();\n\n\t/**\n\t *  Lookup mach image in prelinked image\n\t *\n\t *  @param identifier  identifier\n\t *  @param imageSize   size of the returned buffer\n\t *  @param slide       actual slide for symbols (normally kaslr or 0)\n\t *  @param missing     set to true on successful prelink parsing when image is not needed\n\t *\n\t *  @return pointer to const buffer on success or nullptr\n\t */\n\tuint8_t *findImage(const char *identifier, uint32_t &imageSize, mach_vm_address_t &slide, bool &missing);\n\t\n\tMachInfo(bool asKernel, const char *id) : isKernel(asKernel), objectId(id) {\n\t\tDBGLOG(\"mach\", \"MachInfo asKernel %d object constructed\", asKernel);\n\t}\n\tMachInfo(const MachInfo &) = delete;\n\tMachInfo &operator =(const MachInfo &) = delete;\n\n\t/**\n\t *  Resolve mach data in the kernel via prelinked cache\n\t *\n\t *  @param prelink    prelink information source (i.e. Kernel MachInfo)\n\t *\n\t *  @return KERN_SUCCESS if loaded\n\t */\n\tkern_return_t initFromPrelinked(MachInfo *prelink);\n\n\t/**\n\t *  Resolve mach data in the kernel via filesystem access\n\t *\n\t *  @param paths      filesystem paths for lookup\n\t *  @param num        the number of paths passed\n\t *\n\t *  @return KERN_SUCCESS if loaded\n\t */\n\tkern_return_t initFromFileSystem(const char * const paths[], size_t num);\n\npublic:\n\n\t/**\n\t *  Each header is assumed to fit two pages\n\t */\n\tstatic constexpr size_t HeaderSize {PAGE_SIZE_64*2};\n\t\n\t/**\n\t *  Representation mode (kernel/kext)\n\t */\n\tEXPORT const bool isKernel;\n\t\n\t/**\n\t *  Specified file identifier\n\t */\n\tEXPORT const char *objectId {nullptr};\n\n\t/**\n\t *  MachInfo object generator\n\t *\n\t *  @param asKernel this MachInfo represents a kernel\n\t *  @param id       kinfo identifier (e.g. CFBundleIdentifier)\n\t *\n\t *  @return MachInfo object or nullptr\n\t */\n\tstatic MachInfo *create(bool asKernel=false, const char *id=nullptr) { return new MachInfo(asKernel, id); }\n\tstatic void deleter(MachInfo *i) { delete i; }\n\n\t/**\n\t *  Resolve mach data in the kernel\n\t *\n\t *  @param paths      filesystem paths for lookup\n\t *  @param num        the number of paths passed\n\t *  @param prelink    prelink information source (i.e. Kernel MachInfo)\n\t *  @param fsfallback fallback to reading from filesystem if prelink failed\n\t *\n\t *  @return KERN_SUCCESS if loaded\n\t */\n\tEXPORT kern_return_t init(const char * const paths[], size_t num = 1, MachInfo *prelink=nullptr, bool fsfallback=false);\n\t\n\t/**\n\t *  Release the allocated memory, must be called regardless of the init error\n\t */\n\tEXPORT void deinit();\n\n\t/**\n\t *  Retrieve the mach header and __TEXT addresses\n\t *\n\t *  @param slide load slide if calculating for kexts\n\t *  @param size  memory size\n\t *  @param force force address recalculation\n\t *\n\t *  @return KERN_SUCCESS on success\n\t */\n\tEXPORT kern_return_t getRunningAddresses(mach_vm_address_t slide=0, size_t size=0, bool force=false);\n\t\n\t/**\n\t *  Set the mach header address\n\t *\n\t *  @param slide load address\n\t *  @param size  memory size\n\t *\n\t *  @return KERN_SUCCESS on success\n\t */\n\tEXPORT kern_return_t setRunningAddresses(mach_vm_address_t slide=0, size_t size=0);\n\n\t/**\n\t *  Retrieve running mach positions\n\t *\n\t *  @param header pointer to header\n\t *  @param size   file size\n\t */\n\tEXPORT void getRunningPosition(uint8_t * &header, size_t &size);\n\n\t/**\n\t *  Solve a mach symbol (running addresses must be calculated)\n\t *\n\t *  @param symbol symbol to solve\n\t *\n\t *  @return running symbol address or 0\n\t */\n\tEXPORT mach_vm_address_t solveSymbol(const char *symbol);\n\n\t/**\n\t *  Find the kernel base address (mach-o header)\n\t *\n\t *  @return kernel base address or 0\n\t */\n\tEXPORT mach_vm_address_t findKernelBase();\n\n\t/**\n\t *  Compare the loaded kernel with the current UUID (see loadUUID)\n\t *\n\t *  @param base  image base, pass 0 to use kernel base\n\t *\n\t *  @return true if image uuids match\n\t */\n\tEXPORT bool isCurrentBinary(mach_vm_address_t base=0);\n\n\t/**\n\t *  Enable/disable interrupt handling\n\t *  this is similar to ml_set_interrupts_enabled except the return value\n\t *\n\t *  @param enable the desired value\n\t *\n\t *  @return true if changed the value and false if it is unchanged\n\t */\n\tEXPORT static bool setInterrupts(bool enable);\n\t\n\t/**\n\t *  Enable/disable kernel memory write protection\n\t *\n\t *  @param enable  the desired value\n\t *  @param lock    use spinlock to disable cpu preemption (see KernelPatcher::kernelWriteLock)\n\t *\n\t *  @return KERN_SUCCESS if succeeded\n\t */\n\tEXPORT static kern_return_t setKernelWriting(bool enable, IOSimpleLock *lock);\n\t\n\t/**\n\t *  Find section bounds in a passed binary for provided cpu\n\t *\n\t *  @param ptr         pointer to a complete mach-o binary\n\t *  @param sourceSize  size of the mach-o binary\n\t *  @param vmsegment   returned vm segment pointer\n\t *  @param vmsection   returned vm section pointer\n\t *  @param sectionptr  returned section pointer\n\t *  @param sectionSize returned section size or 0 on failure\n\t *  @param segmentName segment name\n\t *  @param sectionName section name\n\t *  @param cpu         cpu to look for in case of fat binaries\n\t */\n\tEXPORT static void findSectionBounds(void *ptr, size_t sourceSize, vm_address_t &vmsegment, vm_address_t &vmsection, void *&sectionptr, size_t &sectionSize, const char *segmentName=\"__TEXT\", const char *sectionName=\"__text\", cpu_type_t cpu=CPU_TYPE_X86_64);\n\n\t/**\n\t *  Request to free file buffer resources (not including linkedit symtable)\n\t */\n\tvoid freeFileBufferResources();\n};\n\n#endif /* kern_mach_hpp */\n"
  },
  {
    "path": "EFI/CLOVER/kexts/Other/Lilu_v1.3.7.kext/Contents/Resources/Headers/kern_nvram.hpp",
    "content": "//\n//  kern_nvram.hpp\n//  Lilu\n//\n//  Copyright © 2017 vit9696. All rights reserved.\n//\n\n#ifndef kern_nvram_hpp\n#define kern_nvram_hpp\n\n#include <Headers/kern_util.hpp>\n#include <Library/LegacyIOService.h>\n#include <libkern/c++/OSSymbol.h>\n#include <libkern/libkern.h>\n#include <stdint.h>\n\n/**\n *  Some of the most common GUIDs used for variable storage on macOS\n */\n#define NVRAM_GLOBAL_GUID \"8BE4DF61-93CA-11D2-AA0D-00E098032B8C\"\n#define NVRAM_APPLE_BOOT_GUID \"7C436110-AB2A-4BBB-A880-FE41995C9F82\"\n#define NVRAM_APPLE_VENDOR_GUID \"4D1EDE05-38C7-4A6A-9CC6-4BCCA8B38C14\"\n#define NVRAM_APPLE_FILEVAULT_GUID \"8D63D4FE-BD3C-4AAD-881D-86FD974BC1DF\"\n#define NVRAM_APPLE_PASSWORD_UI_GUID \"9EBA2D25-BBE3-4AC2-A2C6-C87F44A1278C\"\n\n/**\n *  Custom GUIDs used for Lilu preferences\n *  Must be kept in sync to OcSupportPkg/Include/Guid/OcVariables.h\n */\n#define LILU_VENDOR_GUID \"4D1FDA02-38C7-4A6A-9CC6-4BCCA8B30102\"\n#define LILU_READ_ONLY_GUID \"E09B9297-7928-4440-9AAB-D1F8536FBF0A\"\n#define LILU_WRITE_ONLY_GUID \"F0B9AF8F-2222-4840-8A37-ECF7CC8C12E1\"\n\n/**\n *  Prefix variable name with a GUID\n */\n#define NVRAM_PREFIX(x, y) x \":\" y\n\nclass NVStorage {\n\t/**\n\t *  Local nvram controller reference\n\t */\n\tIORegistryEntry *dtEntry {nullptr};\n\t\npublic:\n\t/**\n\t *  Compress data with a default compression algorithm\n\t *\n\t *  @param src        source data\n\t *  @param size       data size (updated with new size)\n\t *  @param sensitive  contains sensitive data\n\t *\n\t *  @return compressed data (must be freed with Buffer::deleter) or nullptr\n\t */\n\tEXPORT uint8_t *compress(const uint8_t *src, uint32_t &size, bool sensitive=false);\n\t\n\t/**\n\t *  Decompress data compressed with compress\n\t *\n\t *  @param src        compressed data\n\t *  @param size       data size (updated with new size)\n\t *  @param sensitive  contains sensitive data\n\t *\n\t *  @return decompressed data (must be freed with Buffer::deleter) or nullptr\n\t */\n\tEXPORT uint8_t *decompress(const uint8_t *src, uint32_t &size, bool sensitive=false);\n\t\n\t/**\n\t *  Value storage options\n\t */\n\tenum Options {\n\t\tOptAuto         = 0,  // Default options\n\t\tOptRaw          = 1,  // i/o as raw buffer\n\t\tOptCompressed   = 2,  // Apply compression (see kern_compression.hpp)\n\t\tOptEncrypted    = 4,  // Apply encryption with device-unique key (see kern_crypto.hpp)\n\t\tOptChecksum     = 8,  // Append CRC32 checksum to the end\n\t\tOptSensitive    = 16  // Value contains sensitive data\n\t};\n\t\n\t/**\n\t *  Prepended value header unless OptRaw is used\n\t *  After the header the following fields should go:\n\t *  uint8_t iv[16]; aes initialisation vector (if OptEncrypted is set)\n\t *  uint32_t size;  decryption size           (if OptEncrypted is set, encrypted)\n\t *  uint32_t size;  decompression size        (if OptCompressed is set, encrypted if OptEncrypted)\n\t *  uint8_t data[]; content data              (encrypted if OptEncrypted)\n\t *  uint32_t crc32; CRC32 cheksum             (if OptChecksum is set)\n\t */\n\tstruct PACKED Header {\n\t\tstatic constexpr uint16_t Magic = 0xC717;\n\t\tstatic constexpr uint8_t MaxVer = 1;\n\t\tusing Checksum = uint32_t;\n\t\t\n\t\tuint16_t magic {Magic};\n\t\tuint8_t version {MaxVer};\n\t\tuint8_t opts {OptAuto};\n\t};\n\t\n\t/**\n\t *  Attempt to connect to active nvram, may fail at early stages\n\t *\n\t *  @return true on success\n\t */\n\tEXPORT bool init();\n\n\t/**\n\t *  Relinquish resources used, must be called regardless of the init error\n\t */\n\tEXPORT void deinit();\n\t\n\t/**\n\t *  Read data from nvram\n\t *\n\t *  @param key    key name\n\t *  @param size   amount of data read\n\t *  @param opts   bitmask of Options, may set option requirements\n\t *  @param enckey encryption key (platform-defined if OptEncrypted is set)\n\t *\n\t *  @return pointer to data (must be freed via Buffer::deleter), nullptr on failure\n\t */\n\tEXPORT uint8_t *read(const char *key, uint32_t &size, uint8_t opts=OptAuto, const uint8_t *enckey=nullptr);\n\n\t/**\n\t *  Read data from nvram\n\t *\n\t *  @param key    key name\n\t *  @param opts   bitmask of Options, may set option requirements\n\t *  @param enckey encryption key (platform-defined if OptEncrypted is set)\n\t *\n\t *  @return pointer to data (must be freed via OSData::release), nullptr on failure\n\t */\n\tEXPORT OSData *read(const char *key, uint8_t opts=OptAuto, const uint8_t *enckey=nullptr);\n\n\t/**\n\t *  Write data to nvram\n\t *\n\t *  @param key    key name\n\t *  @param src    source buffer\n\t *  @param size   buffer size\n\t *  @param opts   bitmask of Options\n\t *  @param enckey encryption key (platform-defined if OptEncrypted is set)\n\t *\n\t *  @return true on success\n\t */\n\tEXPORT bool write(const char *key, const uint8_t *src, uint32_t sz, uint8_t opts=OptAuto, const uint8_t *enckey=nullptr);\n    \n\t/**\n\t *  Write data to nvram\n\t *\n\t *  @param key    key name\n\t *  @param data   data object to write\n\t *  @param opts   bitmask of Options\n\t *  @param enckey encryption key (platform-defined if OptEncrypted is set)\n\t *\n\t *  @return true on success\n\t */\n\tEXPORT bool write(const char *key, const OSData *data, uint8_t opts=OptAuto, const uint8_t *enckey=nullptr);\n\n\t/**\n\t *  Delete key from nvram\n\t *\n\t *  @param key        key name\n\t *  @param sensitive  sensitive data\n\t *\n\t *  @return true on successful deletion or if key is missing\n\t */\n\tEXPORT bool remove(const char *key, bool sensitive=false);\n\t\n\t/**\n\t *  Synchronize with nvram controller\n\t *  This method might fail if synchronisation was done recently.\n\t *\n\t *  @return true if synchronised\n\t */\n\tEXPORT bool sync();\n\t\n\t/**\n\t *  Exports nvram to a plist file\n\t *\n\t *  @param filename  file path\n\t *  @oaram max       max output size\n\t *  @param sensitive contains sensitive data\n\t *\n\t *  @return true if saved\n\t */\n\tEXPORT bool save(const char *filename, uint32_t max=0x20000, bool sensitive=false);\n\n\t/**\n\t *  Check whether key exists\n\t *\n\t *  @param key        key name\n\t *\n\t *  @return true if key exists\n\t */\n\tEXPORT bool exists(const char *key);\n};\n\n#endif /* kern_nvram_hpp */\n"
  },
  {
    "path": "EFI/CLOVER/kexts/Other/Lilu_v1.3.7.kext/Contents/Resources/Headers/kern_patcher.hpp",
    "content": "//\n//  kern_patcher.hpp\n//  Lilu\n//\n//  Copyright © 2016-2017 vit9696. All rights reserved.\n//\n\n#ifndef kern_patcher_hpp\n#define kern_patcher_hpp\n\n#include <Headers/kern_config.hpp>\n#include <Headers/kern_compat.hpp>\n#include <Headers/kern_util.hpp>\n#include <Headers/kern_mach.hpp>\n#include <Headers/kern_disasm.hpp>\n\n#include <mach/mach_types.h>\n\nnamespace Patch { union All; void deleter(All *); }\n#ifdef LILU_KEXTPATCH_SUPPORT\nstruct OSKextLoadedKextSummaryHeader;\nstruct OSKextLoadedKextSummary;\n#endif /* LILU_KEXTPATCH_SUPPORT */\n\nclass KernelPatcher {\npublic:\n\n\t/**\n\t *  Errors set by functions\n\t */\n\tenum class Error {\n\t\tNoError,\n\t\tNoKinfoFound,\n\t\tNoSymbolFound,\n\t\tKernInitFailure,\n\t\tKernRunningInitFailure,\n\t\tKextListeningFailure,\n\t\tDisasmFailure,\n\t\tMemoryIssue,\n\t\tMemoryProtection,\n\t\tPointerRange,\n\t\tAlreadyDone,\n\t\tLockError,\n\t\tUnsupported,\n\t\tInvalidSymbolFound\n\t};\n\t\n\t/**\n\t *  Get last error\n\t *\n\t *  @return error code\n\t */\n\tEXPORT Error getError();\n\t\n\t/**\n\t *  Reset all the previous errors\n\t */\n\tEXPORT void clearError();\n\n\t/**\n\t *  Initialise KernelPatcher, prepare for modifications\n\t */\n\tvoid init();\n\t\n\t/**\n\t *  Deinitialise KernelPatcher, must be called regardless of the init error\n\t */\n\tvoid deinit();\n\n\t/**\n\t *  Kernel write lock used for performing kernel & kext writes to disable cpu preemption\n\t *  See MachInfo::setKernelWriting\n\t */\n\tEXPORT static IOSimpleLock *kernelWriteLock;\n\t\n\t/**\n\t *  Kext information\n\t */\n\tstruct KextInfo;\n\t\n#ifdef LILU_KEXTPATCH_SUPPORT\n\tstruct KextInfo {\n\t\tstatic constexpr size_t Unloaded {0};\n\t\tenum SysFlags : size_t {\n\t\t\tLoaded,      // invoke for kext if it is already loaded\n\t\t\tReloadable,  // allow the kext to unload and get patched again\n\t\t\tDisabled,    // do not load this kext (formerly achieved pathNum = 0, this no longer works)\n\t\t\tFSOnly,      // do not use prelinkedkernel (kextcache) as a symbol source\n\t\t\tFSFallback,  // perform fs fallback if kextcache failed\n\t\t\tReserved,\n\t\t\tSysFlagNum,\n\t\t};\n\t\tstatic constexpr size_t UserFlagNum {sizeof(size_t)-SysFlagNum};\n\t\tstatic_assert(UserFlagNum > 0, \"There should be at least one user flag\");\n\t\tconst char *id {nullptr};\n\t\tconst char **paths {nullptr};\n\t\tsize_t pathNum {0};\n\t\tbool sys[SysFlagNum] {};\n\t\tbool user[UserFlagNum] {};\n\t\tsize_t loadIndex {Unloaded}; // Updated after loading\n\n\t\t/**\n\t\t *  Disable this info from being used\n\t\t *  May be called from onPatcherLoad callbacks to disable certain kexts\n\t\t */\n\t\tvoid switchOff() {\n\t\t\tsys[KernelPatcher::KextInfo::Disabled] = true;\n\t\t}\n\t};\n\n\tstatic_assert(sizeof(KextInfo) == 5 * sizeof(size_t), \"KextInfo is no longer ABI compatible\");\n#endif /* LILU_KEXTPATCH_SUPPORT */\n\n\t/**\n\t *  Loads and stores kinfo information locally\n\t *\n\t *  @param id         kernel item identifier\n\t *  @param paths      item filesystem path array\n\t *  @param num        number of path entries\n\t *  @param isKernel   kinfo is kernel info\n\t *  @param fsonly     avoid using prelinkedkernel for kexts\n\t *  @param fsfallback fallback to reading from filesystem if prelink failed\n\t *\n\t *  @return loaded kinfo id\n\t */\n\tEXPORT size_t loadKinfo(const char *id, const char * const paths[], size_t num=1, bool isKernel=false, bool fsonly=false, bool fsfallback=false);\n\n#ifdef LILU_KEXTPATCH_SUPPORT\n\t/**\n\t *  Loads and stores kinfo information locally\n\t *\n\t *  @param info kext to load, updated on success\n\t *\n\t *  @return loaded kinfo id\n\t */\n\tEXPORT size_t loadKinfo(KextInfo *info);\n#endif /* LILU_KEXTPATCH_SUPPORT */\n\n\t/**\n\t *  Kernel kinfo id\n\t */\n\tstatic constexpr size_t KernelID {0};\n\t\n\t/**\n\t *  Update running information\n\t *\n\t *  @param id    loaded kinfo id\n\t *  @param slide loaded slide\n\t *  @param size  loaded memory size\n\t *  @param force force recalculatiob\n\t */\n\tEXPORT void updateRunningInfo(size_t id, mach_vm_address_t slide=0, size_t size=0, bool force=false);\n\t\n\t/**\n\t *  Any kernel\n\t */\n\tstatic constexpr uint32_t KernelAny {0};\n\t\n\t/**\n\t *  Check kernel compatibility\n\t *\n\t *  @param min minimal requested version or KernelAny\n\t *  @param max maximum supported version or KernelAny\n\t *\n\t *  @return true on success\n\t */\n\tEXPORT static bool compatibleKernel(uint32_t min, uint32_t max);\n\n\t/**\n\t *  Erase coverage instruction prefix (like inc qword ptr[]), that causes function routing to fail\n\t *\n\t *  @param addr   address to valid instruction code\n\t *  @param count  amount of instructions to inspect\n\t */\n\tEXPORT void eraseCoverageInstPrefix(mach_vm_address_t addr, size_t count=5);\n\n\t/**\n\t *  Erase coverage instruction prefix (like inc qword ptr[]), that causes function routing to fail\n\t *\n\t *  @param addr   address to valid instruction code\n\t *  @param count  amount of instructions to inspect\n\t *  @param limit  amount of bytes to inspect\n\t */\n\tEXPORT void eraseCoverageInstPrefix(mach_vm_address_t addr, size_t count, off_t limit);\n\n\t/**\n\t *  Solve a kinfo symbol\n\t *\n\t *  @param id      loaded kinfo id\n\t *  @param symbol  symbol to solve\n\t *\n\t *  @return running symbol address or 0\n\t */\n\tEXPORT mach_vm_address_t solveSymbol(size_t id, const char *symbol);\n\n\t/**\n\t *  Solve a kinfo symbol in range with designated type\n\t *\n\t *  @param id      loaded kinfo id\n\t *  @param symbol  symbol to solve\n\t *  @param start   start address range\n\t *  @param size    address range size\n\t *  @param crash   kernel panic on invalid non-zero address\n\t *\n\t *  @return running symbol address or 0 casted to type T (mach_vm_address_t)\n\t */\n\ttemplate <typename T = mach_vm_address_t>\n\tinline T solveSymbol(size_t id, const char *symbol, mach_vm_address_t start, size_t size, bool crash=false) {\n\t\tauto addr = solveSymbol(id, symbol);\n\t\tif (addr) {\n\t\t\tif (addr >= start && addr < start + size)\n\t\t\t\treturn (T)addr;\n\n\t\t\tcode = Error::InvalidSymbolFound;\n\t\t\tSYSTRACE(\"patcher\", \"address \" PRIKADDR \" is out of range \" PRIKADDR \" with size %lX\",\n\t\t\t\tCASTKADDR(addr), CASTKADDR(start), size);\n\n\t\t\tPANIC_COND(crash, \"patcher\", \"address \" PRIKADDR \" is out of range \" PRIKADDR \" with size %lX\",\n\t\t\t\tCASTKADDR(addr), CASTKADDR(start), size);\n\t\t}\n\n\t\treturn (T)nullptr;\n\t}\n\n\t/**\n\t *  Hook kext loading and unloading to access kexts at early stage\n\t */\n\tEXPORT void setupKextListening();\n\n\t/**\n\t *  Free file buffer resources and effectively make prelinked kext loading impossible\n\t */\n\tvoid freeFileBufferResources();\n\n\t/**\n\t *  Activates monitoring functions if necessary\n\t */\n\tvoid activate();\n\t\n\t/**\n\t *  Load handling structure\n\t */\n\tclass KextHandler {\n\t\tusing t_handler = void (*)(KextHandler *);\n\t\tKextHandler(const char * const i, size_t idx, t_handler h, bool l, bool r) :\n\t\t\tid(i), index(idx), handler(h), loaded(l), reloadable(r) {}\n\tpublic:\n\t\tstatic KextHandler *create(const char * const i, size_t idx, t_handler h, bool l=false, bool r=false) {\n\t\t\treturn new KextHandler(i, idx, h, l, r);\n\t\t}\n\t\tstatic void deleter(KextHandler *i) {\n\t\t\tdelete i;\n\t\t}\n\t\t\n\t\tvoid *self {nullptr};\n\t\tconst char * const id {nullptr};\n\t\tsize_t index {0};\n\t\tmach_vm_address_t address {0};\n\t\tsize_t size {0};\n\t\tt_handler handler {nullptr};\n\t\tbool loaded {false};\n\t\tbool reloadable {false};\n\t};\n\n#ifdef LILU_KEXTPATCH_SUPPORT\n\t/**\n\t *  Enqueue handler processing at kext loading\n\t *\n\t *  @param handler  handler to process\n\t */\n\tEXPORT void waitOnKext(KextHandler *handler);\n\t\n\t/**\n\t *  Update kext handler features\n\t *\n\t *  @param info  loaded kext info with features\n\t */\n\tvoid updateKextHandlerFeatures(KextInfo *info);\n\n\t/**\n\t *  Arbitrary kext find/replace patch\n\t */\n\tstruct LookupPatch {\n\t\tKextInfo *kext;\n\t\tconst uint8_t *find;\n\t\tconst uint8_t *replace;\n\t\tsize_t size;\n\t\tsize_t count;\n\t};\n\t\n\t/**\n\t *  Apply a find/replace patch\n\t *\n\t *  @param patch patch to apply\n\t */\n\tEXPORT void applyLookupPatch(const LookupPatch *patch);\n\n\t/**\n\t *  Apply a find/replace patch with additional constraints\n\t *\n\t *  @param patch              patch to apply\n\t *  @param startingAddress    start with this address (or kext/kernel lowest address)\n\t *  @param maxSize            maximum size to lookup (or kext/kernel max size)\n\t */\n\tEXPORT void applyLookupPatch(const LookupPatch *patch, uint8_t *startingAddress, size_t maxSize);\n#endif /* LILU_KEXTPATCH_SUPPORT */\n\n\t/**\n\t *  Route function to function\n\t *\n\t *  @param from         function to route\n\t *  @param to           routed function\n\t *  @param buildWrapper create entrance wrapper\n\t *  @param kernelRoute  kernel change requiring memory protection changes and patch reverting at unload\n\t *  @param revertible   patches could be reverted\n\t *\n\t *  @return wrapper pointer or 0 on success\n\t */\n\tEXPORT mach_vm_address_t routeFunction(mach_vm_address_t from, mach_vm_address_t to, bool buildWrapper=false, bool kernelRoute=true, bool revertible=true);\n\t\n\t/**\n\t *  Route block at assembly level\n\t *\n\t *  @param from         address to route\n\t *  @param opcodes      opcodes to insert\n\t *  @param opnum        number of opcodes\n\t *  @param buildWrapper create entrance wrapper\n\t *  @param kernelRoute  kernel change requiring memory protection changes and patch reverting at unload\n\t *\n\t *  @return wrapper pointer or 0 on success\n\t */\n\tEXPORT mach_vm_address_t routeBlock(mach_vm_address_t from, const uint8_t *opcodes, size_t opnum, bool buildWrapper=false, bool kernelRoute=true);\n\n\t/**\n\t *  Route virtual function to function\n\t *\n\t *  @param obj      OSObject-compatible instance\n\t *  @param off      function offset in a virtual table (arch-neutral, i.e. divided by sizeof(uintptr_t)\n\t *  @param func     function to replace with\n\t *  @param orgFunc  pointer to store the original function\n\t *\n\t *  @return true on success\n\t */\n\ttemplate <typename T>\n\tstatic inline bool routeVirtual(void *obj, size_t off, T func, T *orgFunc=nullptr) {\n\t\t// First OSObject (and similar) field is its virtual table.\n\t\tauto vt = obj ? reinterpret_cast<T **>(obj)[0] : nullptr;\n\t\tif (vt) {\n\t\t\t// Do not try to replace twice!\n\t\t\tif (vt[off] == func)\n\t\t\t\treturn false;\n\t\t\tif (orgFunc) *orgFunc = vt[off];\n\t\t\tvt[off] = func;\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\n\t/**\n\t *  Route request to simplify casting and error handling\n\t *  See routeMultiple.\n\t *\n\t *  symbol  symbol to lookup\n\t *  from    solved symbol (assigned by routeMultiple)\n\t *  to      destination address\n\t *  org     trampoline storage to the original symbol\n\t */\n\tstruct RouteRequest {\n\t\tconst char *symbol {nullptr};\n\t\tmach_vm_address_t from {0};\n\t\tconst mach_vm_address_t to {0};\n\t\tmach_vm_address_t *org {nullptr};\n\n\t\t/**\n\t\t *  Construct RouteRequest for wrapping a function\n\t\t *  @param s  symbol to lookup\n\t\t *  @param t  destination address\n\t\t *  @param o  trampoline storage to the original symbol\n\t\t */\n\t\ttemplate <typename T>\n\t\tRouteRequest(const char *s, T t, mach_vm_address_t &o) :\n\t\t\tsymbol(s), to(reinterpret_cast<mach_vm_address_t>(t)), org(&o) { }\n\n\t\t/**\n\t\t *  Construct RouteRequest for routing a function\n\t\t *  @param s  symbol to lookup\n\t\t *  @param t  destination address\n\t\t */\n\t\ttemplate <typename T>\n\t\tRouteRequest(const char *s, T t) :\n\t\t\tsymbol(s), to(reinterpret_cast<mach_vm_address_t>(t)) { }\n\t};\n\n\t/**\n\t *  Simple route multiple functions with basic error handling\n\t *\n\t *  @param id           kernel item identifier\n\t *  @param requests     an array of requests to replace\n\t *  @param num          requests array size\n\t *  @param start        start address range\n\t *  @param size         address range size\n\t *  @param kernelRoute  kernel change requiring memory protection changes and patch reverting at unload\n\t *  @param force        continue on first error\n\t *\n\t *  @return false if it at least one error happened\n\t */\n\tEXPORT bool routeMultiple(size_t id, RouteRequest *requests, size_t num, mach_vm_address_t start=0, size_t size=0, bool kernelRoute=true, bool force=false);\n\n\t/**\n\t *  Simple route multiple functions with basic error handling\n\t *\n\t *  @param id           kernel item identifier\n\t *  @param requests     an array of requests to replace\n\t *  @param start        start address range\n\t *  @param size         address range size\n\t *  @param kernelRoute  kernel change requiring memory protection changes and patch reverting at unload\n\t *  @param force        continue on first error\n\t *\n\t *  @return false if it at least one error happened\n\t */\n\ttemplate <size_t N>\n\tinline bool routeMultiple(size_t id, RouteRequest (&requests)[N], mach_vm_address_t start=0, size_t size=0, bool kernelRoute=true, bool force=false) {\n\t\treturn routeMultiple(id, requests, N, start, size, kernelRoute, force);\n\t}\n\nprivate:\n\n\t/**\n\t *  The minimal reasonable memory requirement\n\t */\n\tstatic constexpr size_t TempExecutableMemorySize {4096};\n\t\n\t/**\n\t *  As of 10.12 we seem to be not allowed to call vm_ functions from several places including onKextSummariesUpdated.\n\t */\n\tstatic uint8_t tempExecutableMemory[TempExecutableMemorySize];\n\t\n\t/**\n\t *  Offset to tempExecutableMemory that is safe to use\n\t */\n\tsize_t tempExecutableMemoryOff {0};\n\t\n\t/**\n\t *  Patcher status\n\t */\n\tbool activated {false};\n\t\n\t/**\n\t *  Created routed trampoline page\n\t *\n\t *  @param func     original area\n\t *  @param min      minimal amount of bytes that will be overwritten\n\t *  @param opcodes  opcodes to insert before function\n\t *  @param opnum    number of opcodes\n\t *\n\t *  @return trampoline pointer or 0\n\t */\n\tmach_vm_address_t createTrampoline(mach_vm_address_t func, size_t min, const uint8_t *opcodes=nullptr, size_t opnum=0);\n\n#ifdef LILU_KEXTPATCH_SUPPORT\n\t/**\n\t *  Called at kext loading and unloading if kext listening is enabled\n\t */\n\tstatic void onKextSummariesUpdated();\n\t\n\t/**\n\t *  A pointer to loaded kext information\n\t */\n\tOSKextLoadedKextSummaryHeader **loadedKextSummaries {nullptr};\n\t\n\t/**\n\t *  A pointer to kext summaries update\n\t */\n\tvoid (*orgUpdateLoadedKextSummaries)(void) {nullptr};\n\t\n\t/**\n\t *  Process already loaded kexts once at the start\n\t *\n\t *  @param summaries loaded kext summaries\n\t *  @param num       number of loaded kext summaries\n\t */\n\tvoid processAlreadyLoadedKexts(OSKextLoadedKextSummary *summaries, size_t num);\n\t\n#endif /* LILU_KEXTPATCH_SUPPORT */\n\t\n\t/**\n\t *  Kernel prelink image in case prelink is used\n\t */\n\tMachInfo *prelinkInfo {nullptr};\n\n\t/**\n\t *  Loaded kernel items\n\t */\n\tevector<MachInfo *, MachInfo::deleter> kinfos;\n\t\n\t/**\n\t *  Applied patches\n\t */\n\tevector<Patch::All *, Patch::deleter> kpatches;\n\n#ifdef LILU_KEXTPATCH_SUPPORT\t\n\t/**\n\t *  Awaiting kext notificators\n\t */\n\tevector<KextHandler *, KextHandler::deleter> khandlers;\n\t\n\t/**\n\t *  Awaiting already loaded kext list\n\t */\n\tbool waitingForAlreadyLoadedKexts {false};\n\t\n#endif /* LILU_KEXTPATCH_SUPPORT */\n\t\n\t/**\n\t *  Allocated pages\n\t */\n\tevector<Page *, Page::deleter> kpages;\n\t\n\t/**\n\t *  Current error code\n\t */\n\tError code {Error::NoError};\n\tstatic constexpr size_t INVALID {0};\n\t\n\t/**\n\t *  Jump instruction sizes\n\t */\n\tstatic constexpr size_t SmallJump {1 + sizeof(int32_t)};\n\tstatic constexpr size_t LongJump {6 + sizeof(uint64_t)};\n\t\n\t/**\n\t *  Possible kernel paths\n\t */\n#ifdef LILU_COMPRESSION_SUPPORT\n\tconst char *prelinkKernelPaths[6] {\n\t\t// This is the usual kernel cache place, which often the best thing to use\n\t\t\"/System/Library/Caches/com.apple.kext.caches/Startup/kernelcache\",\n\t\t// Otherwise fallback to one of the prelinked kernels\n\t\t// Since we always verify the LC_UUID value, trying the kernels could be done in any order.\n\t\t\"/System/Library/PrelinkedKernels/prelinkedkernel\", // normal\n\t\t\"/macOS Install Data/Locked Files/Boot Files/prelinkedkernel\", // 10.13 installer\n\t\t\"/com.apple.boot.R/prelinkedkernel\", // 10.12+ fusion drive installer\n\t\t\"/com.apple.boot.S/System/Library/PrelinkedKernels/prelinkedkernel\", // 10.11 fusion drive installer\n\t\t\"/com.apple.recovery.boot/prelinkedkernel\" // recovery\n\t};\n#endif\n\n\tconst char *kernelPaths[2] {\n\t\t\"/System/Library/Kernels/kernel\",\t//since 10.10\n\t\t\"/mach_kernel\"\n\t};\n};\n\n#endif /* kern_patcher_hpp */\n"
  },
  {
    "path": "EFI/CLOVER/kexts/Other/Lilu_v1.3.7.kext/Contents/Resources/Headers/kern_policy.hpp",
    "content": "//\n//  kern_policy.hpp\n//  Lilu\n//\n//  Copyright © 2016-2017 vit9696. All rights reserved.\n//\n\n#ifndef kern_policy_hpp\n#define kern_policy_hpp\n\n#include <Headers/kern_config.hpp>\n\n#include <sys/types.h>\n#include <sys/proc.h>\n\n#include <Library/security/mac_framework.h>\n#include <Library/security/mac_policy.h>\n#include <Headers/kern_util.hpp>\n\nclass Policy {\n\t/**\n\t *  TrustedBSD Policy handle\n\t */\n\tmac_policy_handle_t policyHandle {0};\n\t\n\t/**\n\t *  TrustedBSD policy configuration\n\t */\n\tmac_policy_conf policyConf;\npublic:\n\t/**\n\t *  May be used at TrustedBSD policy initialisation\n\t *\n\t *  @param conf policy configuration\n\t */\n\tstatic void dummyPolicyInitBSD(mac_policy_conf *conf) {\n\t\tDBGLOG(\"policy\", \"init bsd\");\n\t}\n\t\n\t/**\n\t *  Compile-time policy constructor\n\t *\n\t *  @param name  policy name literal\n\t *  @param descr policy description literal\n\t *  @param ops   policy functions\n\t */\n\tconstexpr Policy(const char *name, const char *descr, struct mac_policy_ops *ops) : policyConf{\n\t\t.mpc_name\t\t\t\t= name,\n\t\t.mpc_fullname\t\t\t= descr,\n\t\t.mpc_labelnames\t\t\t= nullptr,\n\t\t.mpc_labelname_count\t= 0,\n\t\t.mpc_ops\t\t\t\t= ops,\n\t\t// Our policies are loaded very early and are static. We cannot unload them.\n\t\t.mpc_loadtime_flags\t\t= 0 /*MPC_LOADTIME_FLAG_UNLOADOK*/,\n\t\t.mpc_field_off\t\t\t= nullptr,\n\t\t.mpc_runtime_flags\t\t= 0\n\t} { }\n\t\n\t/**\n\t *  Registers TrustedBSD policy\n\t *\n\t *  @return true on success\n\t */\n\tEXPORT bool registerPolicy();\n\t\n\t/**\n\t *  Unregisters TrustedBSD policy if allowed\n\t *\n\t *  @return true on success\n\t */\n\tEXPORT bool unregisterPolicy();\n};\n\n#endif /* kern_policy_hpp */\n"
  },
  {
    "path": "EFI/CLOVER/kexts/Other/Lilu_v1.3.7.kext/Contents/Resources/Headers/kern_rtc.hpp",
    "content": "//\n//  kern_rtc.hpp\n//  Lilu\n//\n//  Copyright © 2018 vit9696. All rights reserved.\n//\n\n#ifndef kern_rtc_h\n#define kern_rtc_h\n\n#include <Headers/kern_util.hpp>\n#include <Library/LegacyIOService.h>\n\n#pragma clang diagnostic push\n#pragma clang diagnostic ignored \"-Winconsistent-missing-override\"\n#include <IOKit/acpi/IOACPIPlatformDevice.h>\n#pragma clang diagnostic pop\n\nclass RTCStorage {\n\t/**\n\t *  General access RTC ports on x86 systems.\n\t */\n\tstatic constexpr uint8_t R_PCH_RTC_INDEX = 0x70;\n\tstatic constexpr uint8_t R_PCH_RTC_TARGET = 0x71;\n\tstatic constexpr uint8_t R_PCH_RTC_EXT_INDEX = 0x72;\n\tstatic constexpr uint8_t R_PCH_RTC_EXT_TARGET = 0x73;\n\n\t/**\n\t *  RTC has N banks (we support up to 2) of memory.\n\t */\n\tstatic constexpr uint8_t RTC_BANK_SIZE = 0x80;\n\n\t/**\n\t *  Non-ext RTC index register uses higher bit for nmi.\n\t */\n\tstatic constexpr uint8_t RTC_DATA_MASK = 0x7F;\n\tstatic constexpr uint8_t RTC_NMI_MASK = 0x80;\n\n\t/**\n\t *  Apple-specific RTC checksum addresses\n\t */\n\tstatic constexpr uint8_t APPLERTC_HASHED_ADDR = 0x0E;\n\tstatic constexpr uint8_t APPLERTC_CHECKSUM_ADDR1 = 0x58;\n\tstatic constexpr uint8_t APPLERTC_CHECKSUM_ADDR2 = 0x59;\n\n\t/**\n\t *  AppleRTC service handle\n\t */\n\tIOService *rtcSrv {nullptr};\n\n\t/**\n\t *  Low-level RTC read (does not check memory availability).\n\t *\n\t *  @param dev     RTC ACPI device\n\t *  @param offset  offset\n\t *\n\t *  @result read value\n\t */\n\tstatic uint8_t readByte(IOACPIPlatformDevice *dev, uint8_t offset);\n\n\t/**\n\t *  Low-level RTC write (does not check memory availability).\n\t *\n\t *  @param dev     RTC ACPI device\n\t *  @param offset  offset\n\t *  @param value   value\n\t */\n\tstatic void writeByte(IOACPIPlatformDevice *dev, uint8_t offset, uint8_t value);\npublic:\n\t/**\n\t *  Attempt to connect to active RTC service\n\t *\n\t *  @param wait  wait for service availability\n\t *\n\t *  @return true on success\n\t */\n\tEXPORT bool init(bool wait=true);\n\n\t/**\n\t *  Release obtained RTC service\n\t */\n\tEXPORT void deinit();\n\n\t/**\n\t *  Check whether extended (higher 128 bytes) is available\n\t *\n\t *  @return true on success\n\t */\n\tEXPORT bool checkExtendedMemory();\n\n\t/**\n\t *  Read memory from RTC\n\t *\n\t *  @param off     offset to read data from\n\t *  @param size    data size\n\t *  @param buffer  data buffer to read to\n\t *\n\t *  @return true on success\n\t */\n\tEXPORT bool read(uint64_t off, uint32_t size, uint8_t *buffer);\n\n\t/**\n\t *  Write memory to RTC\n\t *\n\t *  @param off     offset to write data to\n\t *  @param size    data size\n\t *  @param buffer  data buffer to write from\n\t *\n\t *  @return true on success\n\t */\n\tEXPORT bool write(uint64_t off, uint32_t size, uint8_t *buffer);\n\n\t/**\n\t *  Obtain RTC device for direct writing.\n\t *  Written as inline to avoid IOACPIPlatformDevice dependency.\n\t *\n\t *  @param name  device name\n\t *\n\t *  @return RTC ACPI device for I/O access, must be released\n\t */\n\tstatic inline IOACPIPlatformDevice *getRTCDevice(const char *name = \"PNP0B00\") {\n\t\tIOService *rtcDev = nullptr;\n\t\tauto matching = IOService::nameMatching(name);\n\t\tif (matching) {\n\t\t\trtcDev = IOService::waitForMatchingService(matching);\n\t\t\tmatching->release();\n\t\t} else {\n\t\t\tSYSLOG(\"rtc\", \"failed to allocate rtc device matching\");\n\t\t}\n\n\t\tif (rtcDev) {\n\t\t\tDBGLOG(\"rtc\", \"got rtc device\");\n\t\t\tauto acpiDev = OSDynamicCast(IOACPIPlatformDevice, rtcDev);\n\t\t\tif (acpiDev) {\n\t\t\t\tDBGLOG(\"rtc\", \"got rtc acpi device\");\n\t\t\t\treturn acpiDev;\n\t\t\t} else {\n\t\t\t\tSYSLOG(\"rtc\", \"failed to obtain rtc acpi device\");\n\t\t\t\trtcDev->release();\n\t\t\t}\n\t\t}\n\n\t\tSYSLOG(\"rtc\", \"failed to get rtc device\");\n\t\treturn nullptr;\n\t}\n\n\t/**\n\t *  Directly read RTC memory (UNSAFE, usage with caution!)\n\t *\n\t *  @param dev      RTC device\n\t *  @param off      offset to read data from\n\t *  @param size     data size\n\t *  @param buffer   data buffer to read to\n\t *  @param introff  turn interrupts off\n\t *\n\t *  @return true on success\n\t */\n\tEXPORT static void readDirect(IOACPIPlatformDevice *dev, uint8_t off, uint16_t size, uint8_t *buffer, bool introff);\n\n\t/**\n\t *  Directly write RTC memory (UNSAFE, usage with caution!)\n\t *\n\t *  @param dev      RTC device\n\t *  @param off        offset to read data from\n\t *  @param size       data size\n\t *  @param buffer     data buffer to read to\n\t *  @param updatecrc  recalculate crc on write\n\t *  @param introff    turn interrupts off\n\t *\n\t *  @return true on success\n\t */\n\tEXPORT static void writeDirect(IOACPIPlatformDevice *dev, uint8_t off, uint16_t size, uint8_t *buffer, bool updatecrc, bool introff);\n\n\n\t/**\n\t *  Directly read RTC memory (UNSAFE, usage with caution!), this is just a compatibility function.\n\t *\n\t *  @param off      offset to read data from\n\t *  @param size     data size\n\t *  @param buffer   data buffer to read to\n\t *  @param introff  turn interrupts off\n\t *\n\t *  @return true on success\n\t */\n\tstatic inline bool readDirect(uint8_t off, uint16_t size, uint8_t *buffer, bool introff) {\n\t\tif (size > RTC_BANK_SIZE*2 - off) {\n\t\t\tSYSLOG(\"rtc\", \"reading unsupported size\");\n\t\t\treturn false;\n\t\t}\n\n\t\tauto rtc = getRTCDevice();\n\t\tif (rtc) {\n\t\t\treadDirect(rtc, off, size, buffer, introff);\n\t\t\trtc->release();\n\t\t\treturn true;\n\t\t}\n\n\t\treturn false;\n\t}\n\n\t/**\n\t *  Directly write RTC memory (UNSAFE, usage with caution!), this is just a compatibility function.\n\t *\n\t *  @param off        offset to read data from\n\t *  @param size       data size\n\t *  @param buffer     data buffer to read to\n\t *  @param updatecrc  recalculate crc on write\n\t *  @param introff    turn interrupts off\n\t *\n\t *  @return true on success\n\t */\n\tstatic inline bool writeDirect(uint8_t off, uint16_t size, uint8_t *buffer, bool updatecrc, bool introff) {\n\t\tif (size > RTC_BANK_SIZE*2 - off) {\n\t\t\tSYSLOG(\"rtc\", \"writing unsupported size\");\n\t\t\treturn false;\n\t\t}\n\n\t\tauto rtc = getRTCDevice();\n\t\tif (rtc) {\n\t\t\twriteDirect(rtc, off, size, buffer, updatecrc, introff);\n\t\t\trtc->release();\n\t\t\treturn true;\n\t\t}\n\n\t\treturn false;\n\t}\n};\n\n#endif /* kern_rtc_h */\n"
  },
  {
    "path": "EFI/CLOVER/kexts/Other/Lilu_v1.3.7.kext/Contents/Resources/Headers/kern_time.hpp",
    "content": "//\n//  kern_time.hpp\n//  Lilu\n//\n//  Copyright © 2018 vit9696. All rights reserved.\n//\n\n#ifndef kern_time_hpp\n#define kern_time_hpp\n\n#include <kern/clock.h>\n\n/**\n *  Obtain current system time in nanoseconds\n *\n *  @return current time\n */\ninline uint64_t getCurrentTimeNs() {\n\tuint64_t currt = 0;\n\tabsolutetime_to_nanoseconds(mach_absolute_time(), &currt);\n\treturn currt;\n}\n\n/**\n *  Obtain current calendar system time in nanoseconds\n *\n *  @return current time\n */\ninline uint64_t getCalendarTimeNs() {\n\tclock_sec_t sc;\n\tclock_nsec_t ns;\n\tclock_get_calendar_nanotime(&sc, &ns);\n\treturn static_cast<uint64_t>(sc) * NSEC_PER_SEC + ns;\n}\n\n/**\n *  Obtain time passed since some timestamp in nanoseconds\n *\n *  @param start   starting timestamp\n *  @param current timestamp to check against (pass 0 for current time)\n *\n *  @return delta or 0 (if current time equals or precedeces the start)\n */\ninline uint64_t getTimeSinceNs(uint64_t start, uint64_t current = 0) {\n\tif (current == 0)\n\t\tcurrent = getCurrentTimeNs();\n\tif (current > start)\n\t\treturn current - start;\n\treturn 0;\n}\n\n/**\n *  Obtain time left till a timestamp in the future in nanoseconds\n *\n *  @param start   starting timestamp\n *  @param timeout timeout for the event\n *  @param current timestamp to check against (pass 0 for current time)\n *\n *  @return delta or 0 (if the timeout is over)\n */\ninline uint64_t getTimeLeftNs(uint64_t start, uint64_t timeout, uint64_t current = 0) {\n\tif (current == 0)\n\t\tcurrent = getCurrentTimeNs();\n\tif (start + timeout > current)\n\t\treturn start + timeout - current;\n\treturn 0;\n}\n\n/**\n *  Convert from nanoseconds to milliseconds\n *\n *  @param t timestamp in ns\n *\n *  @return timestamp in ms\n */\nconstexpr  uint64_t convertNsToMs(uint64_t t) {\n\treturn t / 1000000;\n}\n\n/**\n *  Convert from nanoseconds to seconds\n *\n *  @param t timestamp in ns\n *\n *  @return timestamp in s\n */\nconstexpr uint64_t convertNsToSc(uint64_t t) {\n\treturn t / 1000000000;\n}\n\n/**\n *  Convert from milliseconds to seconds\n *\n *  @param t timestamp in ms\n *\n *  @return timestamp in s\n */\nconstexpr uint64_t convertMsToSc(uint64_t t) {\n\treturn t / 1000;\n}\n\n/**\n *  Convert from milliseconds to nanoseconds\n *\n *  @param t timestamp in ms\n *\n *  @return timestamp in ns\n */\nconstexpr uint64_t convertMsToNs(uint64_t t) {\n\treturn t * 1000000;\n}\n\n/**\n *  Convert from seconds to nanoseconds\n *\n *  @param t timestamp in s\n *\n *  @return timestamp in ns\n */\nconstexpr uint64_t convertScToNs(uint64_t t) {\n\treturn t * 1000000000;\n}\n\n/**\n *  Convert from seconds to milliseconds\n *\n *  @param t timestamp in s\n *\n *  @return timestamp in ms\n */\nconstexpr uint64_t convertScToMs(uint64_t t) {\n\treturn t * 1000;\n}\n\n#endif /* kern_time_hpp */\n"
  },
  {
    "path": "EFI/CLOVER/kexts/Other/Lilu_v1.3.7.kext/Contents/Resources/Headers/kern_user.hpp",
    "content": "//\n//  kern_user.hpp\n//  Lilu\n//\n//  Copyright © 2016-2017 vit9696. All rights reserved.\n//\n\n#ifndef kern_user_hpp\n#define kern_user_hpp\n\n#include <Headers/kern_config.hpp>\n#include <Headers/kern_patcher.hpp>\n\n#include <mach/shared_region.h>\n#include <sys/kauth.h>\n\nclass UserPatcher {\npublic:\n\t/**\n\t *  Initialise UserPatcher, prepare for modifications\n\t *\n\t *  @param patcher        kernel patcher instance\n\t *  @param preferSlowMode policy boot type\n\t *\n\t *  @return true on success\n\t */\n\tbool init(KernelPatcher &patcher, bool preferSlowMode);\n\t\n\t/**\n\t *  Deinitialise UserPatcher, must be called regardless of the init error\n\t */\n\tvoid deinit();\n\t\n\t/**\n\t *  Obtain page protection\n\t *\n\t *  @param map  vm map\n\t *  @param addr map offset\n\t *\n\t *  @return protection\n\t */\n\tEXPORT vm_prot_t getPageProtection(vm_map_t map, vm_map_address_t addr);\n\n\t/**\n\t *  Mach segment/section references for patch locations\n\t */\n\tenum FileSegment : uint32_t {\n\t\tSegmentsTextStart,\n\t\tSegmentTextText = SegmentsTextStart,\n\t\tSegmentTextStubs,\n\t\tSegmentTextConst,\n\t\tSegmentTextCstring,\n\t\tSegmentTextUstring,\n\t\tSegmentsTextEnd = SegmentTextUstring,\n\t\tSegmentsDataStart,\n\t\tSegmentDataConst = SegmentsDataStart,\n\t\tSegmentDataCfstring,\n\t\tSegmentDataCommon,\n\t\tSegmentsDataEnd = SegmentDataCommon,\n\t\tSegmentTotal\n\t};\n\t\n\t/**\n\t *  Mach segment names kept in sync with FileSegment\n\t */\n\tconst char *fileSegments[SegmentTotal] {\n\t\t\"__TEXT\",\n\t\t\"__TEXT\",\n\t\t\"__TEXT\",\n\t\t\"__TEXT\",\n\t\t\"__TEXT\",\n\t\t\"__DATA\",\n\t\t\"__DATA\",\n\t\t\"__DATA\"\n\t};\n\t\n\t/**\n\t *  Mach section names kept in sync with FileSegment\n\t */\n\tconst char *fileSections[SegmentTotal] {\n\t\t\"__text\",\n\t\t\"__stubs\",\n\t\t\"__const\",\n\t\t\"__cstring\",\n\t\t\"__ustring\",\n\t\t\"__const\",\n\t\t\"__cfstring\",\n\t\t\"__common\"\n\t};\n\t\n\t/**\n\t *  Structure holding lookup-style binary patches\n\t */\n\tstruct BinaryModPatch {\n\t\tcpu_type_t cpu;\n\t\tconst uint8_t *find;\n\t\tconst uint8_t *replace;\n\t\tsize_t size;\n\t\tsize_t skip;\n\t\tsize_t count;\n\t\tFileSegment segment;\n\t\tuint32_t section;\n\t};\n\t\n\t/**\n\t *  Structure describing the modifications for the binary\n\t */\n\tstruct BinaryModInfo {\n\t\tconst char *path;\n\t\tBinaryModPatch *patches;\n\t\tsize_t count;\n\t\tvm_address_t startTEXT;\n\t\tvm_address_t endTEXT;\n\t\tvm_address_t startDATA;\n\t\tvm_address_t endDATA;\n\t};\n\n\t/**\n\t *  Structure describing relevant processes run\n\t */\n\tstruct ProcInfo {\n\t\t/**\n\t\t *  Process matching flags\n\t\t */\n\t\tenum ProcFlags {\n\t\t\tMatchExact  = 0,\n\t\t\tMatchAny    = 1,\n\t\t\tMatchPrefix = 2,\n\t\t\tMatchSuffix = 4,\n\t\t\tMatchMask   = MatchExact | MatchAny | MatchPrefix | MatchSuffix\n\t\t};\n\n\t\t/**\n\t\t *  Unused (aka disabled) proc info section\n\t\t */\n\t\tstatic constexpr uint32_t SectionDisabled {0};\n\n\t\tconst char *path {nullptr};\n\t\tuint32_t len {0};\n\t\tuint32_t section {SectionDisabled};\n\t\tuint32_t flags {MatchExact};\n\t};\n\t\n\t/**\n\t *  External callback type for on process invocation\n\t *\n\t *  @param user    user provided pointer at registering\n\t *  @param patcher user patcher instance\n\t *  @param map     process image vm_map\n\t *  @param path    path to the binary absolute or relative\n\t *  @param len     path length excluding null terminator\n\t */\n\tusing t_BinaryLoaded = void (*)(void *user, UserPatcher &patcher, vm_map_t map, const char *path, size_t len);\n\t\n\t/**\n\t *  Instructs user patcher to do further actions\n\t *\n\t *  @param procs    process list\n\t *  @param procNum  process list size\n\t *  @param mods     modification list\n\t *  @param modNum   modification list size\n\t *  @param callback callback function\n\t *  @param user     pointer that will be passed to the callback function\n\t */\n\tbool registerPatches(ProcInfo **procs, size_t procNum, BinaryModInfo **mods, size_t modNum, t_BinaryLoaded callback, void *user);\n\n\t/**\n\t *  Reads current process header\n\t *\n\t *  @param map     vm map\n\t *  @param header  Mach-O header\n\t *\n\t *  @return false on failure\n\t */\n\tEXPORT bool getTaskHeader(vm_map_t map, mach_header_64 &header);\n\n\t/**\n\t *  Disables dyld_shared_cache for the current process\n\t *\n\t *  @param map  vm map\n\t *\n\t *  @return false on mach image failure\n\t */\n\tEXPORT bool injectRestrict(vm_map_t map);\n\n\t/**\n\t *  Injects payload into the process right after the header with EP replacement.\n\t *\n\t *  @param map      vm map\n\t *  @param payload  code\n\t *  @param size     code size (up to PAGE_SIZE)\n\t *  @param ep       original entrypoint (may be written to code before copying)\n\t *\n\t *  @return false on mach image failure\n\t */\n\tEXPORT bool injectPayload(vm_map_t map, uint8_t *payload, size_t size, void *ep=nullptr);\n\n\t/**\n\t *  Allocates a new segment in the process.\n\t *\n\t *  @param map      vm map\n\t *  @param addr     allocation address (e.g. a little below SHARED_REGION_BASE_X86_64)\n\t *  @param payload  code\n\t *  @param size     code size (must be PAGE_SIZE-aligned)\n\t *  @param prot     segment protection\n\t *\n\t *  @return allocated address or 0 on failure\n\t */\n\tEXPORT vm_address_t injectSegment(vm_map_t taskPort, vm_address_t addr, uint8_t *payload, size_t size, vm_prot_t prot);\n\n\t/**\n\t *  Activates monitoring functions if necessary\n\t */\n\tvoid activate();\n\t\nprivate:\n\t\n\t/**\n\t *  Kernel function prototypes\n\t */\n\tusing vm_shared_region_t = void *;\n\tusing shared_file_mapping_np = void *;\n\tusing t_currentMap = vm_map_t (*)(void);\n\tusing t_getTaskMap = vm_map_t (*)(task_t);\n\tusing t_getMapMin = vm_map_offset_t (*)(vm_map_t);\n\tusing t_vmMapSwitchProtect = void (*)(vm_map_t, boolean_t);\n\tusing t_vmMapCheckProtection = boolean_t (*)(vm_map_t, vm_offset_t, vm_offset_t, vm_prot_t);\n\tusing t_vmMapReadUser = kern_return_t (*)(vm_map_t, vm_map_address_t, const void *, vm_size_t);\n\tusing t_vmMapWriteUser = kern_return_t (*)(vm_map_t, const void *, vm_map_address_t, vm_size_t);\n\n\t/**\n\t *  Original kernel function trampolines\n\t */\n\tmach_vm_address_t orgCodeSignValidatePageWrapper {};\n\tmach_vm_address_t orgCodeSignValidateRangeWrapper {};\n\tmach_vm_address_t orgVmSharedRegionMapFile {};\n\tmach_vm_address_t orgVmSharedRegionSlide {};\n\tmach_vm_address_t orgVmSharedRegionSlideMojave {};\n\tt_currentMap orgCurrentMap {nullptr};\n\tt_getMapMin orgGetMapMin {nullptr};\n\tt_getTaskMap orgGetTaskMap {nullptr};\n\tt_vmMapSwitchProtect orgVmMapSwitchProtect {nullptr};\n\tt_vmMapCheckProtection orgVmMapCheckProtection {nullptr};\n\tt_vmMapReadUser orgVmMapReadUser {nullptr};\n\tt_vmMapWriteUser orgVmMapWriteUser {nullptr};\n\tmach_vm_address_t orgTaskSetMainThreadQos {};\n\t\n\t/**\n\t *  Kernel function wrappers\n\t */\n\tstatic boolean_t codeSignValidatePageWrapper(void *blobs, memory_object_t pager, memory_object_offset_t page_offset, const void *data, unsigned *tainted);\n\tstatic boolean_t codeSignValidateRangeWrapper(void *blobs, memory_object_t pager, memory_object_offset_t range_offset, const void *data, memory_object_size_t data_size, unsigned *tainted);\n\tstatic vm_map_t swapTaskMap(task_t task, thread_t thread, vm_map_t map, boolean_t doswitch);\n\tstatic vm_map_t vmMapSwitch(vm_map_t map);\n\tstatic kern_return_t vmSharedRegionMapFile(vm_shared_region_t shared_region, unsigned int mappings_count, shared_file_mapping_np *mappings, memory_object_control_t file_control, memory_object_size_t file_size, void *root_dir, uint32_t slide, user_addr_t slide_start, user_addr_t slide_size);\n\tstatic void execsigs(proc_t p, thread_t thread);\n\tstatic int vmSharedRegionSlide(uint32_t slide, mach_vm_offset_t entry_start_address, mach_vm_size_t entry_size, mach_vm_offset_t slide_start, mach_vm_size_t slide_size, memory_object_control_t sr_file_control);\n\tstatic int vmSharedRegionSlideMojave(uint32_t slide, mach_vm_offset_t entry_start_address, mach_vm_size_t entry_size, mach_vm_offset_t slide_start, mach_vm_size_t slide_size, mach_vm_offset_t slid_mapping, memory_object_control_t sr_file_control);\n\tstatic void taskSetMainThreadQos(task_t task, thread_t main_thread);\n\n\t/**\n\t *  Applies page patches to the memory range\n\t *\n\t *  @param data_ptr  pages in kernel memory\n\t *  @param data_size data size divisible by PAGE_SIZE\n\t */\n\tvoid performPagePatch(const void *data_ptr, size_t data_size);\n\n\t/**\n\t * dyld shared cache map entry structure\n\t */\n\tstruct MapEntry {\n\t\tconst char *filename;\n\t\tsize_t length;\n\t\tvm_address_t startTEXT;\n\t\tvm_address_t endTEXT;\n\t\tvm_address_t startDATA;\n\t\tvm_address_t endDATA;\n\t};\n\t\n\t/**\n\t *  Obtains __TEXT addresses from .map files\n\t *\n\t *  @param mapBuf     read .map file\n\t *  @param mapSz      .map file size\n\t *  @param mapEntries entries to look for\n\t *  @param nentries   number of entries\n\t *\n\t *  @return number of entries found\n\t */\n\tsize_t mapAddresses(const char *mapBuf, MapEntry *mapEntries, size_t nentries);\n\n\t/**\n\t *  Stored ASLR slide of dyld shared cache\n\t */\n\tuint32_t storedSharedCacheSlide {0};\n\n\t/**\n\t *  Set once shared cache slide is defined\n\t */\n\tbool sharedCacheSlideStored {false};\n\t\n\t/**\n\t *  Set on init to decide on whether to use __RESTRICT or patch dyld shared cache\n\t */\n\tbool patchDyldSharedCache {false};\n\t\n\t/**\n\t *  Kernel patcher instance\n\t */\n\tKernelPatcher *patcher {nullptr};\n\n\t/**\n\t *  Pending callback entry\n\t */\n\tstruct PendingUser {\n\t\t/**\n\t\t *  Patch requested for path\n\t\t */\n\t\tchar path[MAXPATHLEN] {};\n\n\t\t/**\n\t\t *  Patch requested for path\n\t\t */\n\t\tuint32_t pathLen {0};\n\t};\n\n\t/**\n\t *  Stored pending callback\n\t */\n\tThreadLocal<PendingUser *, 32> pending;\n\n\t/**\n\t *  Current minimal proc name length\n\t */\n\tuint32_t currentMinProcLength {0};\n\t\n\t/**\n\t *  Provided binary modification list\n\t */\n\tBinaryModInfo **binaryMod {nullptr};\n\t\n\t/**\n\t *  Amount of provided binary modifications\n\t */\n\tsize_t binaryModSize {0};\n\t\n\t/**\n\t *  Provided process list\n\t */\n\tProcInfo **procInfo {nullptr};\n\t\n\t/**\n\t *  Amount of provided processes\n\t */\n\tsize_t procInfoSize {0};\n\t\n\t/**\n\t *  Provided global callback for on proc invocation\n\t */\n\tppair<t_BinaryLoaded, void *> userCallback {};\n\t\n\t/**\n\t *  Applies dyld shared cache patches\n\t *\n\t *  @param map     current process map\n\t *  @param slide   ASLR offset\n\t *  @param cpu     cache cpu type\n\t *  @param restore true to rollback the changes\n\t */\n\tvoid patchSharedCache(vm_map_t map, uint32_t slide, cpu_type_t cpu, bool applyChanges=true);\n\n\t/**\n\t *  Structure holding userspace lookup patches\n\t */\n\tstruct LookupStorage {\n\t\tstruct PatchRef {\n\t\t\tsize_t i {0};\n\t\t\tevector<off_t> pageOffs;\n\t\t\tevector<off_t> segOffs;\n\t\t\tstatic PatchRef *create() {\n\t\t\t\treturn new PatchRef;\n\t\t\t}\n\t\t\tstatic void deleter(PatchRef *r) {\n\t\t\t\tr->pageOffs.deinit();\n\t\t\t\tr->segOffs.deinit();\n\t\t\t\tdelete r;\n\t\t\t}\n\t\t};\n\t\t\n\t\tconst BinaryModInfo *mod {nullptr};\n\t\tevector<PatchRef *, PatchRef::deleter> refs;\n\t\tPage *page {nullptr};\n\t\tvm_address_t pageOff {0};\n\n\t\tstatic LookupStorage *create() {\n\t\t\tauto p = new LookupStorage;\n\t\t\tif (p) {\n\t\t\t\tp->page = Page::create();\n\t\t\t\tif (!p->page) {\n\t\t\t\t\tdeleter(p);\n\t\t\t\t\tp = nullptr;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn p;\n\t\t}\n\t\t\n\t\tstatic void deleter(LookupStorage *p) {\n\t\t\tif (p->page) {\n\t\t\t\tPage::deleter(p->page);\n\t\t\t\tp->page = nullptr;\n\t\t\t}\n\t\t\tp->refs.deinit();\n\t\t\tdelete p;\n\t\t}\n\t};\n\n\tstruct Lookup {\n\t\tuint32_t offs[4] {};\n\t\tstatic constexpr size_t matchNum {4};\n\t\tevector<uint64_t> c[matchNum];\n\t};\n\t\n\tevector<LookupStorage *, LookupStorage::deleter> lookupStorage;\n\tLookup lookup;\n\t\n\t/**\n\t *  Restrict 64-bit entry overlapping DYLD_SHARED_CACHE to enforce manual library loading\n\t */\n\tsegment_command_64 restrictSegment64 {\n\t\tLC_SEGMENT_64,\n\t\tsizeof(segment_command_64),\n\t\t\"__RESTRICT\",\n\t\tSHARED_REGION_BASE_X86_64,\n\t\t1, 0, 0, 0, 0, 0, 0\n\t};\n\t\n\t/**\n\t *  Restrict 32-bit entry overlapping DYLD_SHARED_CACHE to enforce manual library loading\n\t */\n\tsegment_command restrictSegment32 {\n\t\tLC_SEGMENT,\n\t\tsizeof(segment_command),\n\t\t\"__RESTRICT\",\n\t\tSHARED_REGION_BASE_I386,\n\t\t1, 0, 0, 0, 0, 0, 0\n\t};\n\t\n\t/**\n\t *  Temporary buffer for reading image data\n\t */\n\tuint8_t tmpBufferData[PAGE_SIZE*3] {};\n\n\t/**\n\t *  Kernel auth listener handle\n\t */\n\tkauth_listener_t listener {nullptr};\n\t\n\t/**\n\t *  Patcher status\n\t */\n\tbool activated {false};\n\t\n\t/**\n\t *  Validation cookie\n\t */\n\tvoid *cookie {nullptr};\n\n\t/**\n\t *  Flags for codesign (PL) offset in struct proc. (uint32_t p_csflags)\n\t */\n\tsize_t csFlagsOffset {0};\n\n\t/**\n\t *  Exec callback\n\t *\n\t *  @param credential kauth credential\n\t *  @param idata      cookie\n\t *  @param action     passed action, we only need KAUTH_FILEOP_EXEC\n\t *  @param arg0       pointer to vnode (vnode *) for executable\n\t *  @param arg1       pointer to path (char *) to executable\n\t *\n\t *  @return 0 to allow further execution\n\t */\n\tstatic int execListener(kauth_cred_t /* credential */, void *idata, kauth_action_t action, uintptr_t /* arg0 */, uintptr_t arg1, uintptr_t, uintptr_t);\n\n\t/**\n\t *  Unrestricted vm_protect, that takes care of Mojave codesign limitations for everyone's good.\n\t *  See vm_protect description.\n\t */\n\tkern_return_t vmProtect(vm_map_t map, vm_offset_t start, vm_size_t size, boolean_t set_maximum, vm_prot_t new_protection);\n\n\t/**\n\t *  Callback invoked at process loading\n\t *\n\t *  @param path binary path\n\t *  @param len  path length\n\t */\n\tvoid onPath(const char *path, uint32_t len);\n\t\n\t/**\n\t *  Reads files from BinaryModInfos and prepares lookupStorage\n\t *\n\t *  @return true on success\n\t */\n\tbool loadFilesForPatching();\n\t\n\t/**\n\t *  Reads dyld shared cache and obtains segment offsets\n\t *\n\t *  @return true on success\n\t */\n\tbool loadDyldSharedCacheMapping();\n\t\n\t/**\n\t *  Prepares quick page lookup based on lookupStorage values\n\t *\n\t *  @return true on success\n\t */\n\tbool loadLookups();\n\t\n\t/**\n\t *  Hooks memory access to get ready for patching\n\t *\n\t *  @return true on success\n\t */\n\tbool hookMemoryAccess();\n\n\t/**\n\t *  Peforms the actual binary patching\n\t *\n\t *  @param map  vm map\n\t *  @param path binary path\n\t *  @param len  path length\n\t */\n\tvoid patchBinary(vm_map_t map, const char *path, uint32_t len);\n\t\n\t/**\n\t *  Dyld shared cache map path for 10.10+ on Haswell\n\t */\n\tstatic constexpr const char *SharedCacheMapHaswell {\"/private/var/db/dyld/dyld_shared_cache_x86_64h.map\"};\n\n\t/**\n\t *  Dyld shared cache map path for all other systems and older CPUs\n\t */\n\tstatic constexpr const char *SharedCacheMapLegacy {\"/private/var/db/dyld/dyld_shared_cache_x86_64.map\"};\n\n};\n\n#endif /* kern_user_hpp */\n"
  },
  {
    "path": "EFI/CLOVER/kexts/Other/Lilu_v1.3.7.kext/Contents/Resources/Headers/kern_util.hpp",
    "content": "//\n//  kern_util.hpp\n//  Lilu\n//\n//  Copyright © 2016-2017 vit9696. All rights reserved.\n//\n\n#ifndef kern_util_hpp\n#define kern_util_hpp\n\n#include <Headers/kern_config.hpp>\n#include <Headers/kern_compat.hpp>\n#include <Headers/kern_atomic.hpp>\n\n#include <libkern/libkern.h>\n#include <libkern/OSDebug.h>\n#include <mach/vm_types.h>\n#include <mach/vm_prot.h>\n#include <sys/proc.h>\n#include <IOKit/IOLib.h>\n\n#define xStringify(a) Stringify(a)\n#define Stringify(a) #a\n\n#define xConcat(a, b) Concat(a, b)\n#define Concat(a, b) a ## b\n\n/**\n *  Prefix name with your plugin name (to ease symbolication and avoid conflicts)\n */\n#define ADDPR(a) xConcat(xConcat(PRODUCT_NAME, _), a)\n\n/**\n *  Debugging state exported for your plugin\n */\nextern bool ADDPR(debugEnabled);\n\n/**\n *  Debugging print delay used as an ugly hack around printf bufferisation,\n *  which results in messages not appearing in the boot log.\n *  Use liludelay=1000 (1 second) boot-arg to put a second after each message.\n */\nextern uint32_t ADDPR(debugPrintDelay);\n\n/**\n *  Kernel version major\n */\nextern const int version_major;\n\n/**\n *  Kernel version minor\n */\nextern const int version_minor;\n\n/**\n *  Kernel map\n */\nextern vm_map_t kernel_map;\n\n/**\n *  Kernel proc\n */\nextern proc_t kernproc;\n\n/**\n *  For noreturn failures\n */\n#define UNREACHABLE() do { __builtin_unreachable(); } while (0)\n\n/**\n *  Conditional logging to system log prefixed with you plugin name\n *\n *  @param cond  precondition\n *  @param str   printf-like string\n */\n#define SYSLOG_COND(cond, module, str, ...)                                                                \\\n\tdo {                                                                                                   \\\n\t    if (cond)                                                                                          \\\n\t        lilu_os_log( \"%s%10s\" str \"\\n\", xStringify(PRODUCT_NAME) \": \", module \" @ \", ## __VA_ARGS__);  \\\n\t} while (0)\n\n/**\n *  Write to system log prefixed with you plugin name\n *\n *  @param module log module\n *  @param str    printf-like string\n */\n#define SYSLOG(module, str, ...) SYSLOG_COND(true, module, str, ## __VA_ARGS__)\n\n/**\n *  Conditional tracing to system log prefixed with you plugin name\n *\n *  @param cond   precondition\n *  @param module log module\n *  @param str    printf-like string\n */\n#define SYSTRACE_COND(cond, module, str, ...)                                                                        \\\n\tdo {                                                                                                             \\\n\t    if (cond) {                                                                                                  \\\n\t        SYSLOG(module, str, ## __VA_ARGS__);                                                                     \\\n\t\t    OSReportWithBacktrace( \"%s%10s\" str \"\\n\", xStringify(PRODUCT_NAME) \": \", module \" @ \", ## __VA_ARGS__);  \\\n\t    }                                                                                                            \\\n\t} while (0)\n\n/**\n *  Write call trace to system log prefixed with you plugin name\n *\n *  @param module log module\n *  @param str    printf-like string\n */\n#define SYSTRACE(module, str, ...) SYSTRACE_COND(true, module, str, ## __VA_ARGS__)\n\n/**\n *  Conditional panic prefixed with you plugin name\n *\n *  @param cond   precondition\n *  @param module log module\n *  @param str    printf-like string\n */\n#define PANIC_COND(cond, module, str, ...)                                                             \\\n\tdo {                                                                                               \\\n\t    if (cond) {                                                                                    \\\n\t        (panic)( \"%s%10s\" str \"\\n\", xStringify(PRODUCT_NAME) \": \", module \" @ \", ## __VA_ARGS__);  \\\n\t        UNREACHABLE();                                                                             \\\n\t    }                                                                                              \\\n\t} while (0)\n\n/**\n *  Cause immediate kernel panic prefixed with you plugin name\n *\n *  @param module log module\n *  @param str    printf-like string\n */\n#define PANIC(module, str, ...)  PANIC_COND(true, module, str, ## __VA_ARGS__)\n\n#ifdef DEBUG\n\n/**\n *  Conditional debug logging to system log prefixed with you plugin name\n *\n *  @param cond   precondition\n *  @param module log module\n *  @param str    printf-like string\n */\n#define DBGLOG_COND(cond, module, str, ...)                                                     \\\n\tdo {                                                                                        \\\n\t    SYSLOG_COND(ADDPR(debugEnabled) && (cond), module, \"%s\" str, \"(DBG) \", ## __VA_ARGS__); \\\n\t} while (0)\n\n/**\n *  Write debug message to system log prefixed with you plugin name\n *\n *  @param module log module\n *  @param str    printf-like string\n */\n#define DBGLOG(module, str, ...) DBGLOG_COND(true, module, str, ## __VA_ARGS__)\n\n/**\n *  Conditional debug tracing to system log prefixed with you plugin name\n *\n *  @param cond   precondition\n *  @param module log module\n *  @param str    printf-like string\n */\n#define DBGTRACE_COND(cond, module, str, ...)                                                     \\\n\tdo {                                                                                          \\\n\t    SYSTRACE_COND(ADDPR(debugEnabled) && (cond), module, \"%s\" str, \"(DBG) \", ## __VA_ARGS__); \\\n\t} while (0)\n\n/**\n *  Write debug call trace to system log prefixed with you plugin name\n *\n *  @param module log module\n *  @param str    printf-like string\n */\n#define DBGTRACE(module, str, ...) DBGTRACE_COND(true, module, str, ## __VA_ARGS__)\n\n#else /* DEBUG */\n\n#define DBGLOG_COND(module, str, ...) do { } while (0)\n#define DBGLOG(module, str, ...) do { } while (0)\n#define DBGTRACE_COND(module, str, ...) do { } while (0)\n#define DBGTRACE(module, str, ...) do { } while (0)\n\n#endif\n\n/**\n *  Deprecate the interface\n */\n#define DEPRECATE(x) __attribute__((deprecated(x)))\n\n/**\n *  Macros to bypass kernel address printing protection\n */\n#define PRIKADDR \"0x%08X%08X\"\n#define CASTKADDR(x) \\\n\tstatic_cast<uint32_t>(reinterpret_cast<uint64_t>(x) >> 32), \\\n\tstatic_cast<uint32_t>(reinterpret_cast<uint64_t>(x))\n\n/**\n *  Ugly floating point printing macros\n */\n#define PRIFRAC \"%lld.%04lld\"\n#define CASTFRAC(x) static_cast<int64_t>(x), static_cast<int64_t>(((x) - static_cast<int64_t>(x)) * 10000)\n\n/**\n *  Macros to print the UUID\n */\n#define PRIUUID \"%02X%02X%02X%02X-%02X%02X-%02X%02X-%02X%02X-%02X%02X%02X%02X%02X%02X\"\n#define CASTUUID(uuid) \\\n\treinterpret_cast<const uint8_t *>(uuid)[0], \\\n\treinterpret_cast<const uint8_t *>(uuid)[1], \\\n\treinterpret_cast<const uint8_t *>(uuid)[2], \\\n\treinterpret_cast<const uint8_t *>(uuid)[3], \\\n\treinterpret_cast<const uint8_t *>(uuid)[4], \\\n\treinterpret_cast<const uint8_t *>(uuid)[5], \\\n\treinterpret_cast<const uint8_t *>(uuid)[6], \\\n\treinterpret_cast<const uint8_t *>(uuid)[7], \\\n\treinterpret_cast<const uint8_t *>(uuid)[8], \\\n\treinterpret_cast<const uint8_t *>(uuid)[9], \\\n\treinterpret_cast<const uint8_t *>(uuid)[10], \\\n\treinterpret_cast<const uint8_t *>(uuid)[11], \\\n\treinterpret_cast<const uint8_t *>(uuid)[12], \\\n\treinterpret_cast<const uint8_t *>(uuid)[13], \\\n\treinterpret_cast<const uint8_t *>(uuid)[14], \\\n\treinterpret_cast<const uint8_t *>(uuid)[15]\n\n/**\n *  Export function or symbol for linking\n */\n#define EXPORT __attribute__((visibility(\"default\")))\n\n/**\n *  Remove padding between fields\n */\n#define PACKED __attribute__((packed))\n\n/**\n *  This function is supposed to workaround missing entries in the system log.\n *  By providing its own buffer for logging data.\n *\n *  @param format  formatted string\n */\nEXPORT extern \"C\" void lilu_os_log(const char *format, ...);\n\n/**\n *  Two-way substring search\n *\n *  @param stack    String to search in\n *  @param needle   Substring to search for\n *  @param len      Length of substring\n *\n *  @return substring address if there or nullptr\n */\nEXPORT const char *strstr(const char *stack, const char *needle, size_t len=0);\n\n/**\n *  Reverse character search\n *\n *  @param stack    String to search in\n *  @param ch       Character to search for\n *\n *  @return character address if there or null\n */\nEXPORT char *strrchr(const char *stack, int ch);\n\n/**\n *  XNU kernel implementation of a C-standard qsort function normally not exported by the kernel.\n *\n *  @param a    array to sort\n *  @param n    array length\n *  @param es   array element size\n *  @param cmp  array element comparator\n */\nEXPORT void qsort(void *a, size_t n, size_t es, int (*cmp)(const void *, const void *));\n\n/**\n *  Count array elements\n *\n *  @param array   Array to process\n *\n *  @return number of elements\n */\ntemplate <class T, size_t N>\nconstexpr size_t arrsize(const T (&array)[N]) {\n\treturn N;\n}\n\n/**\n *  C-style memory management from libkern, missing from headers\n */\nextern \"C\" {\n\tvoid *kern_os_malloc(size_t size);\n\tvoid *kern_os_calloc(size_t num, size_t size);\n\tvoid kern_os_free(void *addr);\n\tvoid *kern_os_realloc(void *addr, size_t nsize);\n\t// kern_os_free does not check its argument for nullptr\n\tEXPORT void lilu_os_free(void *addr);\n}\n\n/**\n *  Known kernel versions\n */\nenum KernelVersion {\n\tSnowLeopard   = 10,\n\tLion          = 11,\n\tMountainLion  = 12,\n\tMavericks     = 13,\n\tYosemite      = 14,\n\tElCapitan     = 15,\n\tSierra        = 16,\n\tHighSierra    = 17,\n\tMojave        = 18,\n\tCatalina      = 19,\n};\n\n/**\n *  Kernel minor version for symmetry\n */\nusing KernelMinorVersion = int;\n\n/**\n *  Obtain major kernel version\n *\n *  @return numeric kernel version\n */\ninline KernelVersion getKernelVersion() {\n\treturn static_cast<KernelVersion>(version_major);\n}\n\n/**\n *  Obtain minor kernel version\n *\n *  @return numeric minor kernel version\n */\ninline KernelMinorVersion getKernelMinorVersion() {\n\treturn static_cast<KernelMinorVersion>(version_minor);\n}\n\n/**\n *  Check whether kernel boot argument is passed ignoring the value (e.g. -arg or arg).\n *\n *  @param name  argument name\n *\n *  @return true if argument was passed\n */\ninline bool checkKernelArgument(const char *name) {\n\tint val[16];\n\treturn PE_parse_boot_argn(name, val, sizeof(val));\n}\n\n/**\n *  Parse apple version at compile time\n *\n *  @param version string literal representing apple version (e.g. 1.1.1)\n *\n *  @return numeric kernel version\n */\nconstexpr size_t parseModuleVersion(const char *version) {\n\treturn (size_t)(version[0] - '0') * 100 + (version[2] - '0') * 10 + (version[4] - '0');\n}\n\n/**\n *  Access struct member by its offset\n *\n *  @param T     pointer to the field you need\n *  @param that  pointer to struct\n *  @param off   offset in bytes to the member\n *\n *  @return reference to the struct member\n */\ntemplate <typename T>\ninline T &getMember(void *that, size_t off) {\n\treturn *reinterpret_cast<T *>(static_cast<uint8_t *>(that) + off);\n}\n\n/**\n *  Align value by align (page size by default)\n *\n *  @param size  value\n *\n *  @return algined value\n */\ntemplate <typename T>\ninline T alignValue(T size, T align = 4096) {\n\treturn (size + align - 1) & (~(align - 1));\n}\n\n/**\n *  Check pointer alignment for type T\n *\n *  @param p  pointer\n *\n *  @return true if properly aligned\n */\ntemplate<typename T>\ninline bool isAligned(T *p) {\n\treturn reinterpret_cast<uintptr_t>(p) % alignof(T) == 0;\n}\n\n/**\n *  Obtain bit value of size sizeof(T)\n *  Warning, you are suggested to always pass the type explicitly!\n *\n *  @param n  bit no\n *\n *  @return bit value\n */\ntemplate <typename T>\nconstexpr T getBit(T n) {\n\treturn static_cast<T>(1U) << n;\n}\n\n/**\n *  Obtain bit mask of size sizeof(T)\n *  Warning, you are suggested to always pass the type explicitly!\n *\n *  @param hi  starting high bit\n *  @param lo  ending low bit\n *\n *  @return bit mask\n */\ntemplate <typename T>\nconstexpr T getBitMask(T hi, T lo) {\n\treturn (getBit(hi)|(getBit(hi)-1U)) & ~(getBit(lo)-1U);\n}\n\n/**\n *  Obtain bit field of size sizeof(T)\n *  Warning, you are suggested to always pass the type explicitly!\n *\n *  @param so  source\n *  @param hi  starting high bit\n *  @param lo  ending low bit\n *\n *  @return bit field value\n */\ntemplate <typename T>\nconstexpr T getBitField(T so, T hi, T lo) {\n\treturn (so & getBitMask(hi, lo)) >> lo;\n}\n\n/**\n *  Set bit field of size sizeof(T)\n *  Warning, you are suggested to always pass the type explicitly!\n *\n *  @param va  value\n *  @param hi  starting high bit\n *  @param lo  ending low bit\n *\n *  @return bit field value\n */\ntemplate <typename T>\nconstexpr T setBitField(T so, T hi, T lo) {\n\treturn (so << lo) & getBitMask(hi, lo);\n}\n\n/**\n *  This is an ugly replacement to std::find_if, allowing you\n *  to check whether a container consists only of value values.\n *\n *  @param in     container\n *  @param size   container size\n *  @param value  value to look for\n *\n *  @return true if an element different from value was found\n */\ntemplate <typename T, typename Y>\ninline bool findNotEquals(T &in, size_t size, Y value) {\n\tfor (size_t i = 0; i < size; i++)\n\t\tif (in[i] != value)\n\t\t\treturn true;\n\treturn false;\n}\n\n/**\n *  Returns non-null string when they can be null\n *\n *  @param str  original string\n *\n *  @return non-null string\n */\ninline const char *safeString(const char *str) {\n\treturn str ? str : \"(null)\";\n}\n\n/**\n *  A shorter form of writing reinterpret_cast<decltype(&org)>(ptr)\n */\ntemplate <typename T>\ninline T FunctionCast(T org, mach_vm_address_t ptr) {\n\treturn reinterpret_cast<T>(ptr);\n}\n\n/**\n *  Typed buffer allocator\n */\nnamespace Buffer {\n\t/**\n\t *  Allocating more than 1 GB is unreasonable for stability purposes.\n\t */\n\tstatic constexpr size_t BufferMax = 1024*1024*1024;\n\n\ttemplate <typename T>\n\tinline T *create(size_t size) {\n\t\tsize_t s = sizeof(T) * size;\n\t\tif (s > BufferMax) return nullptr;\n\t\treturn static_cast<T *>(kern_os_malloc(s));\n\t}\n\t\n\ttemplate <typename T>\n\tinline bool resize(T *&buf, size_t size) {\n\t\tsize_t s = sizeof(T) * size;\n\t\tif (s > BufferMax) return false;\n\t\tauto nbuf = static_cast<T *>(kern_os_realloc(buf, s));\n\t\tif (nbuf) {\n\t\t\tbuf = nbuf;\n\t\t\treturn true;\n\t\t}\n\t\t\n\t\treturn false;\n\t}\n\t\n\ttemplate <typename T>\n\tinline void deleter(T *buf) {\n\t\tlilu_os_free(buf);\n\t}\n}\n\n/**\n *  Dynamically allocated page\n */\nstruct Page {\n\t/**\n\t *  Allocates a page\n\t *\n\t *  @return true on success\n\t */\n\tEXPORT bool alloc();\n\t\n\t/**\n\t *  Sets page protection\n\t *\n\t *  @param prot protection bitmask\n\t *\n\t *  @return true on success\n\t */\n\tEXPORT bool protect(vm_prot_t prot);\n\t\n\t/**\n\t *  Deletes the page\n\t *\n\t *  @param p page\n\t */\n\tEXPORT static void deleter(Page *p);\n\t\n\t/**\n\t *  Creates a page object\n\t *\n\t *  @return pointer to new page object or nullptr\n\t */\n\tEXPORT static Page *create();\n\t\n\t/**\n\t *  Page buffer\n\t */\n\tuint8_t *p {nullptr};\n};\n\n/**\n *  Thread specific container of T values in up to N threads\n */\ntemplate <typename T, size_t N>\nclass ThreadLocal {\n\t/**\n\t *  A list of tread identifiers\n\t */\n\t_Atomic(thread_t) threads[N];\n\n\t/**\n\t *  A list of value references\n\t */\n\tT values[N] {};\n\npublic:\n\t/**\n\t *  Initialise storage\n\t *\n\t *  @return true on success\n\t */\n\tvoid init() {\n\t\tfor (auto &thread : threads)\n\t\t\tatomic_init(&thread, nullptr);\n\t}\n\n\t/**\n\t *  Deinitialise storage\n\t */\n\tvoid deinit() {\n\t\tfor (size_t i = 0; i < N; i++) {\n\t\t\tatomic_store_explicit(&threads[i], nullptr, memory_order_relaxed);\n\t\t\tvalues[i] = {};\n\t\t}\n\t}\n\n\t/**\n\t *  Set or overwrite thread specific value\n\t *\n\t *  @param value  value to store\n\t *\n\t *  @return true on success\n\t */\n\tbool set(T value) {\n\t\tauto currThread = current_thread();\n\t\tT *ptr = nullptr;\n\n\t\t// Find previous value if any\n\t\tfor (size_t i = 0; ptr == nullptr && i < N; i++)\n\t\t\tif (atomic_load_explicit(&threads[i], memory_order_acquire) == currThread)\n\t\t\t\tptr = &values[i];\n\n\t\t// Find null value if any\n\t\tfor (size_t i = 0; ptr == nullptr && i < N; i++) {\n\t\t\tthread_t nullThread = nullptr;\n\t\t\tif (atomic_compare_exchange_strong_explicit(&threads[i], &nullThread, currThread,\n\t\t\t\tmemory_order_acq_rel, memory_order_acq_rel))\n\t\t\t\tptr = &values[i];\n\t\t}\n\n\t\t// Insert if we can\n\t\tif (ptr) *ptr = value;\n\n\t\treturn ptr != nullptr;\n\t}\n\n\t/**\n\t *  Get thread specific value\n\t *\n\t *  @return pointer to stored value on success\n\t */\n\tT *get() {\n\t\tauto currThread = current_thread();\n\n\t\tfor (size_t i = 0; i < N; i++)\n\t\t\tif (atomic_load_explicit(&threads[i], memory_order_acquire) == currThread)\n\t\t\t\treturn &values[i];\n\n\t\treturn nullptr;\n\t}\n\n\t/**\n\t *  Unset thread specific value if present\n\t *\n\t *  @return true on success\n\t */\n\tbool erase() {\n\t\tauto currThread = current_thread();\n\n\t\tfor (size_t i = 0; i < N; i++) {\n\t\t\tif (atomic_load_explicit(&threads[i], memory_order_acquire) == currThread) {\n\t\t\t\tvalues[i] = {};\n\t\t\t\tthread_t nullThread = nullptr;\n\t\t\t\treturn atomic_compare_exchange_strong_explicit(&threads[i], &currThread,\n\t\t\t\t\tnullThread, memory_order_acq_rel, memory_order_acq_rel);\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n};\n\n/**\n *  Use this deleter when storing scalar types\n */\ntemplate <typename T>\nstatic void emptyDeleter(T) { /* no dynamic alloc */ }\n\ntemplate <typename T, typename Y, void (*deleterT)(T)=emptyDeleter<T>, void (*deleterY)(Y)=emptyDeleter<Y>>\nstruct ppair {\n\tT first;\n\tY second;\n\t\n\tstatic ppair *create() {\n\t\treturn new ppair;\n\t}\n\t\n\tstatic void deleter(ppair *p) {\n\t\tdeleterT(p->first);\n\t\tdeleterY(p->second);\n\t\tdelete p;\n\t}\n};\n\n/**\n *  Embedded vector-like container\n *  You muse call deinit before destruction\n *  Ugh, someone, please, port libc++ to XNU...\n *\n *  @param T        held type\n *  @param deleter  type destructor\n */\ntemplate <typename T, void (*deleter)(T)=emptyDeleter<T>>\nclass evector {\n\tT *ptr {nullptr};\n\tsize_t cnt {0};\n\tsize_t rsvd {0};\npublic:\n\t/**\n\t *  Return evector size\n\t *\n\t *  @return element count\n\t */\n\tsize_t size() const {\n\t\treturn cnt;\n\t}\n\t\n\t/**\n\t *  Return pointer to the elements\n\t *  Valid until evector contents change\n\t *\n\t *  @return elements ptr\n\t */\n\tT *data() const {\n\t\treturn ptr;\n\t}\n\t\n\t/**\n\t *  Return last element id\n\t *\n\t *  @return element id\n\t */\n\tsize_t last() const {\n\t\treturn cnt-1;\n\t}\n\t\n\t/**\n\t *  Return evector element reference\n\t *\n\t *  @param index array index\n\t *\n\t *  @return the element at provided index\n\t */\n\tT &operator [](size_t index) {\n\t\treturn ptr[index];\n\t}\n\t\n\t/**\n\t *  Return evector const element reference\n\t *\n\t *  @param index array index\n\t *\n\t *  @return the element at provided index\n\t */\n\tconst T &operator [](size_t index) const {\n\t\treturn ptr[index];\n\t}\n\t\n\t/**\n\t *  Reserve memory for at least N elements\n\t *\n\t *  @param num  amount of elements\n\t *\n\t *  @return elements ptr or null\n\t */\n\ttemplate <size_t MUL = 1>\n\tT *reserve(size_t num) {\n\t\tif (rsvd < num) {\n\t\t\tT *nPtr = static_cast<T *>(kern_os_realloc(ptr, MUL * num * sizeof(T)));\n\t\t\tif (nPtr) {\n\t\t\t\tptr = nPtr;\n\t\t\t\trsvd = MUL * num;\n\t\t\t} else {\n\t\t\t\treturn nullptr;\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn ptr;\n\t}\n\t\n\t/**\n\t *  Erase evector element\n\t *\n\t *  @param index element index\n\t */\n\tvoid erase(size_t index, bool free=true) {\n\t\tdeleter(ptr[index]);\n\t\tif (--cnt != index)\n\t\t\tlilu_os_memmove(&ptr[index], &ptr[index + 1], (cnt - index) * sizeof(T));\n\n\t\tif (free && cnt == 0) {\n\t\t\tkern_os_free(ptr);\n\t\t\tptr = nullptr;\n\t\t\trsvd = 0;\n\t\t}\n\t}\n\t\n\t/**\n\t *  Add an element to evector end\n\t *\n\t *  @param &element an element to add\n\t *\n\t *  @return true on success\n\t */\n\ttemplate <size_t MUL = 1>\n\tbool push_back(T &element) {\n\t\tif (reserve<MUL>(cnt+1)) {\n\t\t\tptr[cnt] = element;\n\t\t\tcnt++;\n\t\t\treturn true;\n\t\t}\n\t\t\n\t\tSYSLOG(\"evector\", \"insertion failure\");\n\t\treturn false;\n\t}\n\t\n\t/**\n\t *  Add an element to evector end\n\t *\n\t *  @param &element an element to add\n\t *\n\t *  @return true on success\n\t */\n\ttemplate <size_t MUL = 1>\n\tbool push_back(T &&element) {\n\t\tif (reserve<MUL>(cnt+1)) {\n\t\t\tptr[cnt] = element;\n\t\t\tcnt++;\n\t\t\treturn true;\n\t\t}\n\t\t\n\t\tSYSLOG(\"evector\", \"insertion failure\");\n\t\treturn false;\n\t}\n\t\n\tevector() = default;\n\tevector(const evector &) = delete;\n\tevector operator =(const evector &) = delete;\n\t\n\t/**\n\t * Free the used memory\n\t */\n\tvoid deinit() {\n\t\tif (ptr) {\n\t\t\tfor (size_t i = 0; i < cnt; i++)\n\t\t\t\tdeleter(ptr[i]);\n\t\t\tkern_os_free(ptr);\n\t\t\tptr = nullptr;\n\t\t\tcnt = rsvd = 0;\n\t\t}\n\t}\n};\n\n/**\n *  Slightly non-standard helpers to get the date in a YYYY-MM-DD format.\n */\ntemplate <size_t i>\ninline constexpr char getBuildYear() {\n\tstatic_assert(i < 4, \"Year consists of four digits\");\n\treturn __DATE__[7+i];\n}\n\ntemplate <size_t i>\ninline constexpr char getBuildMonth() {\n\tstatic_assert(i < 2, \"Month consists of two digits\");\n\tauto mon = static_cast<uint32_t>(__DATE__[0])\n\t\t| (static_cast<uint32_t>(__DATE__[1]) << 8U)\n\t\t| (static_cast<uint32_t>(__DATE__[2]) << 16U)\n\t\t| (static_cast<uint32_t>(__DATE__[3]) << 24U);\n\tswitch (mon) {\n\t\tcase ' naJ':\n\t\t\treturn \"01\"[i];\n\t\tcase ' beF':\n\t\t\treturn \"02\"[i];\n\t\tcase ' raM':\n\t\t\treturn \"03\"[i];\n\t\tcase ' rpA':\n\t\t\treturn \"04\"[i];\n\t\tcase ' yaM':\n\t\t\treturn \"05\"[i];\n\t\tcase ' nuJ':\n\t\t\treturn \"06\"[i];\n\t\tcase ' luJ':\n\t\t\treturn \"07\"[i];\n\t\tcase ' guA':\n\t\t\treturn \"08\"[i];\n\t\tcase ' peS':\n\t\t\treturn \"09\"[i];\n\t\tcase ' tcO':\n\t\t\treturn \"10\"[i];\n\t\tcase ' voN':\n\t\t\treturn \"11\"[i];\n\t\tcase ' ceD':\n\t\t\treturn \"12\"[i];\n\t\tdefault:\n\t\t\treturn '0';\n\t}\n}\n\ntemplate <size_t i>\ninline constexpr char getBuildDay() {\n\tstatic_assert(i < 2, \"Day consists of two digits\");\n\tif (i == 0 && __DATE__[4+i] == ' ')\n\t\treturn '0';\n\treturn __DATE__[4+i];\n}\n\n#endif /* kern_util_hpp */\n"
  },
  {
    "path": "EFI/CLOVER/kexts/Other/Lilu_v1.3.7.kext/Contents/Resources/Headers/plugin_start.hpp",
    "content": "//\n//  kern_start.hpp\n//  AppleALC\n//\n//  Copyright © 2016 vit9696. All rights reserved.\n//\n\n#ifndef kern_start_hpp\n#define kern_start_hpp\n\n#include <Headers/kern_util.hpp>\n\n#include <Library/LegacyIOService.h>\n#include <sys/types.h>\n\nstruct PluginConfiguration {\n\tconst char *product;        // Product name (e.g. xStringify(PRODUCT_NAME))\n\tsize_t version;             // Product version (e.g. parseModuleVersion(xStringify(MODULE_VERSION)))\n\tuint32_t runmode;           // Product supported environments (e.g. LiluAPI::AllowNormal)\n\tconst char **disableArg;    // Pointer to disabling boot arguments array\n\tsize_t disableArgNum;       // Number of disabling boot arguments\n\tconst char **debugArg;      // Pointer to debug boot arguments array\n\tsize_t debugArgNum;         // Number of debug boot arguments\n\tconst char **betaArg;       // Pointer to beta boot arguments array\n\tsize_t betaArgNum;          // Number of beta boot arguments\n\tKernelVersion minKernel;    // Minimal required kernel version\n\tKernelVersion maxKernel;    // Maximum supported kernel version\n\tvoid (*pluginStart)();      // Main function\n};\n\n#ifndef LILU_CUSTOM_KMOD_INIT\n\nextern PluginConfiguration ADDPR(config);\n\nextern bool ADDPR(startSuccess);\n\n#endif /* LILU_CUSTOM_KMOD_INIT */\n\n#ifndef LILU_CUSTOM_IOKIT_INIT\n\nclass EXPORT PRODUCT_NAME : public IOService {\n\tOSDeclareDefaultStructors(PRODUCT_NAME)\npublic:\n\tIOService *probe(IOService *provider, SInt32 *score) override;\n\tbool start(IOService *provider) override;\n\tvoid stop(IOService *provider) override;\n};\n\nextern PRODUCT_NAME *ADDPR(selfInstance);\n\n#endif /* LILU_CUSTOM_IOKIT_INIT */\n\n#endif /* kern_start_hpp */\n"
  },
  {
    "path": "EFI/CLOVER/kexts/Other/Lilu_v1.3.7.kext/Contents/Resources/Library/LegacyIOService.h",
    "content": "/*\n * Copyright (c) 1998-2011 Apple Computer, Inc. All rights reserved.\n *\n * @APPLE_OSREFERENCE_LICENSE_HEADER_START@\n * \n * This file contains Original Code and/or Modifications of Original Code\n * as defined in and that are subject to the Apple Public Source License\n * Version 2.0 (the 'License'). You may not use this file except in\n * compliance with the License. The rights granted to you under the License\n * may not be used to create, or enable the creation or redistribution of,\n * unlawful or unlicensed copies of an Apple operating system, or to\n * circumvent, violate, or enable the circumvention or violation of, any\n * terms of an Apple operating system software license agreement.\n * \n * Please obtain a copy of the License at\n * http://www.opensource.apple.com/apsl/ and read it before using this file.\n * \n * The Original Code and all software distributed under the License are\n * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER\n * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,\n * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.\n * Please see the License for the specific language governing rights and\n * limitations under the License.\n * \n * @APPLE_OSREFERENCE_LICENSE_HEADER_END@\n */\n/*\n * Copyright (c) 1998,1999 Apple Computer, Inc.  All rights reserved. \n *\n * HISTORY\n *\n */\n/*!\n\t@header\n\tThis header contains the definition of the IOService class.  IOService is the sole direct subclass of IORegistryEntry and is the base class of almost all I/O Kit family superclasses.  IOService defines methods that support the life cycle of I/O Kit drivers.  For more information on IOService, see {@linkdoc //apple_ref/doc/uid/TP0000011 I/O Kit Fundamentals}.\n\n\t@seealso //apple_ref/doc/header/IORegistryEntry.h IORegistryEntry\n*/\n\n#ifndef _IOKIT_IOSERVICE_H\n#define _IOKIT_IOSERVICE_H\n\n#include <IOKit/IORegistryEntry.h>\n#include <IOKit/IOReturn.h>\n#include <IOKit/IODeviceMemory.h>\n#include <IOKit/IONotifier.h>\n#include <IOKit/IOLocks.h>\n\n#include <IOKit/IOKitDebug.h>\n#include <IOKit/IOInterrupts.h>\n\n#include <IOKit/pwr_mgt/IOPMpowerState.h>\n#include <IOKit/IOServicePM.h>\n\nextern \"C\" {\n#include <kern/thread_call.h>\n}\n\n#ifndef UINT64_MAX\n#define UINT64_MAX        18446744073709551615ULL\n#endif\n\nenum {\n    kIODefaultProbeScore \t= 0\n};\n\n// masks for getState()\nenum {\n    kIOServiceInactiveState\t= 0x00000001,\n    kIOServiceRegisteredState\t= 0x00000002,\n    kIOServiceMatchedState\t= 0x00000004,\n    kIOServiceFirstPublishState\t= 0x00000008,\n    kIOServiceFirstMatchState\t= 0x00000010\n};\n\nenum {\n    // options for registerService()\n    kIOServiceExclusive\t\t= 0x00000001,\n\n    // options for terminate()\n    kIOServiceRequired\t\t= 0x00000001,\n    kIOServiceTerminate\t\t= 0x00000004,\n\n    // options for registerService() & terminate()\n    kIOServiceSynchronous\t= 0x00000002,\n    // options for registerService()\n    kIOServiceAsynchronous\t= 0x00000008\n};\n\n// options for open()\nenum {\n    kIOServiceSeize\t\t= 0x00000001,\n    kIOServiceFamilyOpenOptions = 0xffff0000\n};\n\n// options for close()\nenum {\n    kIOServiceFamilyCloseOptions = 0xffff0000\n};\n\ntypedef void * IONotificationRef;\n\nextern const IORegistryPlane *\tgIOServicePlane;\nextern const IORegistryPlane *  gIOPowerPlane;\n\nextern const OSSymbol *\t\tgIOResourcesKey;\nextern const OSSymbol *\t\tgIOResourceMatchKey;\nextern const OSSymbol *\t\tgIOProviderClassKey;\nextern const OSSymbol * \tgIONameMatchKey;\nextern const OSSymbol *\t\tgIONameMatchedKey;\nextern const OSSymbol *\t\tgIOPropertyMatchKey;\nextern const OSSymbol *\t\tgIOLocationMatchKey;\nextern const OSSymbol *\t\tgIOParentMatchKey;\nextern const OSSymbol *\t\tgIOPathMatchKey;\nextern const OSSymbol *\t\tgIOMatchCategoryKey;\nextern const OSSymbol *\t\tgIODefaultMatchCategoryKey;\nextern const OSSymbol *\t\tgIOMatchedServiceCountKey;\n\nextern const OSSymbol *\t\tgIOUserClientClassKey;\nextern const OSSymbol *\t\tgIOKitDebugKey;\nextern const OSSymbol *\t\tgIOServiceKey;\n\nextern const OSSymbol *\t\tgIOCommandPoolSizeKey;\n\nextern const OSSymbol *\t\tgIOPublishNotification;\nextern const OSSymbol *\t\tgIOFirstPublishNotification;\nextern const OSSymbol *\t\tgIOMatchedNotification;\nextern const OSSymbol *\t\tgIOFirstMatchNotification;\nextern const OSSymbol *\t\tgIOTerminatedNotification;\n\nextern const OSSymbol *\t\tgIOGeneralInterest;\nextern const OSSymbol *\t\tgIOBusyInterest;\nextern const OSSymbol *\t\tgIOOpenInterest;\nextern const OSSymbol *\t\tgIOAppPowerStateInterest;\nextern const OSSymbol *\t\tgIOPriorityPowerStateInterest;\nextern const OSSymbol *\t\tgIOConsoleSecurityInterest;\n\nextern const OSSymbol *\t\tgIODeviceMemoryKey;\nextern const OSSymbol *\t\tgIOInterruptControllersKey;\nextern const OSSymbol *\t\tgIOInterruptSpecifiersKey;\n\nextern SInt32 IOServiceOrdering( const OSMetaClassBase * inObj1, const OSMetaClassBase * inObj2, void * ref );\n\ntypedef void (*IOInterruptAction)( OSObject * target, void * refCon,\n\t\t\t\t   IOService * nub, int source );\n\n/*! @typedef IOServiceNotificationHandler\n    @param target Reference supplied when the notification was registered.\n    @param refCon Reference constant supplied when the notification was registered.\n    @param newService The IOService object the notification is delivering. It is retained for the duration of the handler's invocation and doesn't need to be released by the handler. */\n\ntypedef bool (*IOServiceNotificationHandler)( void * target, void * refCon,\n                  IOService * newService );\n\ntypedef bool (*IOServiceMatchingNotificationHandler)( void * target, void * refCon,\n                  IOService * newService,\n\t\t\t\t  IONotifier * notifier );\n\n/*! @typedef IOServiceInterestHandler\n    @param target Reference supplied when the notification was registered.\n    @param refCon Reference constant supplied when the notification was registered.\n    @param messageType Type of the message - IOKit defined in IOKit/IOMessage.h or family specific.\n    @param provider The IOService object who is delivering the notification. It is retained for the duration of the handler's invocation and doesn't need to be released by the handler.\n    @param messageArgument An argument for message, dependent on its type.\n    @param argSize Non zero if the argument represents a struct of that size, used when delivering messages outside the kernel. */\n\ntypedef IOReturn (*IOServiceInterestHandler)( void * target, void * refCon,\n                                              UInt32 messageType, IOService * provider,\n                                              void * messageArgument, vm_size_t argSize );\n\ntypedef void (*IOServiceApplierFunction)(IOService * service, void * context);\ntypedef void (*OSObjectApplierFunction)(OSObject * object, void * context);\n\nclass IOUserClient;\nclass IOPlatformExpert;\n\n/*! @class IOService\n    @abstract The base class for most I/O Kit families, devices, and drivers.\n    @discussion The IOService base class defines APIs used to publish services, instantiate other services based on the existance of a providing service (ie. driver stacking), destroy a service and its dependent stack, notify interested parties of service state changes, and general utility functions useful across all families. \n\nTypes of service are specified with a matching dictionary that describes properties of the service. For example, a matching dictionary might describe any IOUSBDevice (or subclass), an IOUSBDevice with a certain class code, or a IOPCIDevice with a set of matching names or device & vendor IDs. Since the matching dictionary is interpreted by the family which created the service, as well as generically by IOService, the list of properties considered for matching depends on the familiy.\n\nMatching dictionaries are associated with IOService classes by the catalogue, as driver property tables, and also supplied by clients of the notification APIs.\n\nIOService provides matching based on C++ class (via OSMetaClass dynamic casting), registry entry name, a registry path to the service (which includes device tree paths), a name assigned by BSD, or by its location (its point of attachment).\n\n<br><br>Driver Instantiation by IOService<br><br>\n\nDrivers are subclasses of IOService, and their availability is managed through the catalogue. They are instantiated based on the publication of an IOService they use (for example, an IOPCIDevice or IOUSBDevice), or when they are added to  the catalogue and the IOService(s) they use are already available.\n\nWhen an IOService (the \"provider\") is published with the @link registerService registerService@/link method, the matching and probing process begins, which is always single threaded per provider. A list of matching dictionaries from the catalog and installed publish notification requests, that successfully match the IOService, is constructed, with ordering supplied by <code>kIOProbeScoreKey</code> (\"IOProbeScore\") property in the dictionary, or supplied with the notification. \n\nEach entry in the list is then processed in order - for notifications, the notification is delivered, for driver property tables a lot more happens.\n\nThe driver class is instantiated and <code>init()</code> called with its property table. The new driver instance is then attached to the provider, and has its @link probe probe@/link method called with the provider as an argument. The default <code>probe</code> method does nothing but return success, but a driver may implement this method to interrogate the provider to make sure it can work with it. It may also modify its probe score at this time. After probe, the driver is detached and the next in the list is considered (ie. attached, probed, and detached).\n\nWhen the probing phase is complete, the list consists of successfully probed drivers, in order of their probe score (after adjustment during the @link probe probe@/link call). The list is then divided into categories based on the <code>kIOMatchCategoryKey</code> property (\"IOMatchCategory\"); drivers without a match category are all considered in one default category. Match categories allow multiple clients of a provider to be attached and started, though the provider may also enforce open/close semantics to gain active access to it.\n\nFor each category, the highest scoring driver in that category is attached to the provider, and its @link start start@/link method called. If <code>start</code> is successful, the rest of the drivers in the same match category are discarded, otherwise the next highest scoring driver is started, and so on.\n\nThe driver should only consider itself in action when the start method is called, meaning it has been selected for use on the provider, and consuming that particular match category. It should also be prepared to be allocated, probed and freed even if the probe was successful.\n\nAfter the drivers have all synchronously been started, the installed \"matched\" notifications that match the registered IOService are delivered.\n\n<br><br>Properties used by IOService<br><br>\n\n\t<code>kIOClassKey, extern const OSSymbol * gIOClassKey, \"IOClass\"</code>\n<br>\n<br>\nClass of the driver to instantiate on matching providers.\n<br>\n<br>\n\t<code>kIOProviderClassKey, extern const OSSymbol * gIOProviderClassKey, \"IOProviderClass\"</code>\n<br>\n<br>\nClass of the provider(s) to be considered for matching, checked with OSDynamicCast so subclasses will also match.\n<br>\n<br>\n\t<code>kIOProbeScoreKey, extern const OSSymbol * gIOProbeScoreKey, \"IOProbeScore\"</code>\n<br>\n<br>\nThe probe score initially used to order multiple matching drivers.\n<br>\n<br>\n\t<code>kIOMatchCategoryKey, extern const OSSymbol * gIOMatchCategoryKey, \"IOMatchCategory\"</code>\n<br>\n<br>\nA string defining the driver category for matching purposes. All drivers with no <code>IOMatchCategory</code> property are considered to be in the same default category. Only one driver in a category can be started on each provider.\n<br>\n<br>\n\t<code>kIONameMatchKey, extern const OSSymbol * gIONameMatchKey, \"IONameMatch\"</code>\n<br>\nA string or collection of strings that match the provider's name. The comparison is implemented with the @link //apple_ref/cpp/instm/IORegistryEntry/compareNames/virtualbool/(OSObject*,OSString**) IORegistryEntry::compareNames@/link method, which supports a single string, or any collection (OSArray, OSSet, OSDictionary etc.) of strings. IOService objects with device tree properties (eg. IOPCIDevice) will also be matched based on that standard's \"compatible\", \"name\", \"device_type\" properties. The matching name will be left in the driver's property table in the <code>kIONameMatchedKey</code> property.\n<br>\nExamples\n<pre>\n@textblock\n\t<key>IONameMatch</key>\n\t<string>pci106b,7</string>\n@/textblock\n</pre>\n\nFor a list of possible matching names, a serialized array of strings should used, eg.\n<pre>\n@textblock\n\t<key>IONameMatch</key>\n\t<array>\n\t\t<string>APPL,happy16</string>\n\t\t<string>pci106b,7</string>\n\t</array>\n@/textblock\n</pre>\n\n<br>\n\t<code>kIONameMatchedKey, extern const OSSymbol * gIONameMatchedKey, \"IONameMatched\"</code>\n<br>\nThe name successfully matched name from the <code>kIONameMatchKey</code> property will be left in the driver's property table as the <code>kIONameMatchedKey</code> property.\n<br>\n<br>\n\t<code>kIOPropertyMatchKey, extern const OSSymbol * gIOPropertyMatchKey, \"IOPropertyMatch\"</code>\n<br>\nA dictionary of properties that each must exist in the matching IOService and compare successfully with the <code>isEqualTo</code> method.\n\n<pre>\n@textblock\n\t<key>IOPropertyMatch</key>\n\t<dictionary>\n\t\t<key>APPL,happy16</key>\n\t\t<string>APPL,meek8</string>\n\t</dictionary>\n@/textblock\n</pre>\n\n<br>\n\t<code>kIOUserClientClassKey, extern const OSSymbol * gIOUserClientClassKey, \"IOUserClientClass\"</code>\n<br>\nThe class name that the service will attempt to allocate when a user client connection is requested.  First the device nub is queried, then the nub's provider is queried by default.\n<br>\n<br>\n\t<code>kIOKitDebugKey, extern const OSSymbol * gIOKitDebugKey, \"IOKitDebug\"</code>\n<br>\nSet some debug flags for logging the driver loading process. Flags are defined in <code>IOKit/IOKitDebug.h</code>, but <code>65535</code> works well.*/\n\nclass IOService : public IORegistryEntry\n{\n    OSDeclareDefaultStructors(IOService)\n\nprotected:\n/*! @struct ExpansionData\n    @discussion This structure will be used to expand the capablilties of this class in the future.\n    */    \n    struct ExpansionData { };\n\n/*! @var reserved\n    Reserved for future use.  (Internal use only)  */\n    ExpansionData * reserved;\n\nprivate:\n    IOService *\t\t__provider;\n    SInt32\t\t__providerGeneration;\n    IOService *\t\t__owner;\n    IOOptionBits\t__state[2];\n    uint64_t\t\t__timeBusy;\n    uint64_t\t\t__accumBusy;\n    IOServicePM *\tpwrMgt;\n\nprotected:\n    // TRUE once PMinit has been called\n    bool\t\t\tinitialized;\n\npublic:\n    // DEPRECATED\n    void *          pm_vars;\n\npublic:\n    /* methods available in Mac OS X 10.1 or later */\n/*! @function requestTerminate\n    @abstract Passes a termination up the stack.\n    @discussion When an IOService is made inactive the default behavior is to also make any of its clients that have it as their only provider also inactive, in this way recursing the termination up the driver stack. This method allows an IOService object to override this behavior. Returning <code>true</code> from this method when passed a just terminated provider will cause the client to also be terminated.\n    @param provider The terminated provider of this object.\n    @param options Options originally passed to terminate, plus <code>kIOServiceRecursing</code>.\n    @result <code>true</code> if this object should be terminated now that its provider has been. */\n\n    virtual bool requestTerminate( IOService * provider, IOOptionBits options );\n\n/*! @function willTerminate\n    @abstract Passes a termination up the stack.\n    @discussion Notification that a provider has been terminated, sent before recursing up the stack, in root-to-leaf order.\n    @param provider The terminated provider of this object.\n    @param options Options originally passed to terminate.\n    @result <code>true</code>. */\n\n    virtual bool willTerminate( IOService * provider, IOOptionBits options );\n\n/*! @function didTerminate\n    @abstract Passes a termination up the stack.\n    @discussion Notification that a provider has been terminated, sent after recursing up the stack, in leaf-to-root order.\n    @param provider The terminated provider of this object.\n    @param options Options originally passed to terminate.\n    @param defer If there is pending I/O that requires this object to persist, and the provider is not opened by this object set <code>defer</code> to <code>true</code> and call the <code>IOService::didTerminate()</code> implementation when the I/O completes. Otherwise, leave <code>defer</code> set to its default value of <code>false</code>.\n    @result <code>true</code>. */\n\n    virtual bool didTerminate( IOService * provider, IOOptionBits options, bool * defer );\n\n/*! @function nextIdleTimeout\n    @availability Mac OS X v10.4 and later\n    @abstract Allows subclasses to customize idle power management behavior.\n    @discussion Returns the next time that the device should idle into its next lower power state. Subclasses may override for custom idle behavior.\n    \n    A power managed driver might override this method to provide a more sophisticated idle power off algorithm than the one defined by power management.\n    @param currentTime The current time\n    @param lastActivity The time of last activity on this device\n    @param powerState The device's current power state.\n    @result Returns the next time the device should idle off (in seconds, relative to the current time). */\n\n    virtual SInt32 nextIdleTimeout(AbsoluteTime currentTime, \n        AbsoluteTime lastActivity, unsigned int powerState);\n\n/*! @function systemWillShutdown\n    @availability Mac OS X v10.5 and later\n    @abstract Notifies members of the power plane of system shutdown and restart.\n    @discussion This function is called for all members of the power plane in leaf-to-root order. If a subclass needs to wait for a pending I/O, then the call to <code>systemWillShutdown</code> should be postponed until the I/O completes.\n    \n    Any power managed driver (which has called @link joinPMtree joinPMtree@/link to join the power plane) interested in taking action at system shutdown or restart should override this method.\n    @param specifier <code>kIOMessageSystemWillPowerOff</code> or <code>kIOMessageSystemWillRestart</code>. */\n\n    virtual void systemWillShutdown( IOOptionBits specifier );\n\n/*! @function copyClientWithCategory\n    @availability Mac OS X v10.6 and later\n    @param category An OSSymbol corresponding to an IOMatchCategory matching property.\n\t@result Returns a reference to the IOService child with the given category. The result should be released by the caller.\n*/\n\n    virtual IOService * copyClientWithCategory( const OSSymbol * category );\n\nprivate:\n#if __LP64__\n    OSMetaClassDeclareReservedUnused(IOService, 0);\n    OSMetaClassDeclareReservedUnused(IOService, 1);\n    OSMetaClassDeclareReservedUnused(IOService, 2);\n    OSMetaClassDeclareReservedUnused(IOService, 3);\n    OSMetaClassDeclareReservedUnused(IOService, 4);\n    OSMetaClassDeclareReservedUnused(IOService, 5);\n#else\n    OSMetaClassDeclareReservedUsed(IOService, 0);\n    OSMetaClassDeclareReservedUsed(IOService, 1);\n    OSMetaClassDeclareReservedUsed(IOService, 2);\n    OSMetaClassDeclareReservedUsed(IOService, 3);\n    OSMetaClassDeclareReservedUsed(IOService, 4);\n    OSMetaClassDeclareReservedUsed(IOService, 5);\n#endif\n\n    OSMetaClassDeclareReservedUnused(IOService, 6);\n    OSMetaClassDeclareReservedUnused(IOService, 7);\n    OSMetaClassDeclareReservedUnused(IOService, 8);\n    OSMetaClassDeclareReservedUnused(IOService, 9);\n    OSMetaClassDeclareReservedUnused(IOService, 10);\n    OSMetaClassDeclareReservedUnused(IOService, 11);\n    OSMetaClassDeclareReservedUnused(IOService, 12);\n    OSMetaClassDeclareReservedUnused(IOService, 13);\n    OSMetaClassDeclareReservedUnused(IOService, 14);\n    OSMetaClassDeclareReservedUnused(IOService, 15);\n    OSMetaClassDeclareReservedUnused(IOService, 16);\n    OSMetaClassDeclareReservedUnused(IOService, 17);\n    OSMetaClassDeclareReservedUnused(IOService, 18);\n    OSMetaClassDeclareReservedUnused(IOService, 19);\n    OSMetaClassDeclareReservedUnused(IOService, 20);\n    OSMetaClassDeclareReservedUnused(IOService, 21);\n    OSMetaClassDeclareReservedUnused(IOService, 22);\n    OSMetaClassDeclareReservedUnused(IOService, 23);\n    OSMetaClassDeclareReservedUnused(IOService, 24);\n    OSMetaClassDeclareReservedUnused(IOService, 25);\n    OSMetaClassDeclareReservedUnused(IOService, 26);\n    OSMetaClassDeclareReservedUnused(IOService, 27);\n    OSMetaClassDeclareReservedUnused(IOService, 28);\n    OSMetaClassDeclareReservedUnused(IOService, 29);\n    OSMetaClassDeclareReservedUnused(IOService, 30);\n    OSMetaClassDeclareReservedUnused(IOService, 31);\n    OSMetaClassDeclareReservedUnused(IOService, 32);\n    OSMetaClassDeclareReservedUnused(IOService, 33);\n    OSMetaClassDeclareReservedUnused(IOService, 34);\n    OSMetaClassDeclareReservedUnused(IOService, 35);\n    OSMetaClassDeclareReservedUnused(IOService, 36);\n    OSMetaClassDeclareReservedUnused(IOService, 37);\n    OSMetaClassDeclareReservedUnused(IOService, 38);\n    OSMetaClassDeclareReservedUnused(IOService, 39);\n    OSMetaClassDeclareReservedUnused(IOService, 40);\n    OSMetaClassDeclareReservedUnused(IOService, 41);\n    OSMetaClassDeclareReservedUnused(IOService, 42);\n    OSMetaClassDeclareReservedUnused(IOService, 43);\n    OSMetaClassDeclareReservedUnused(IOService, 44);\n    OSMetaClassDeclareReservedUnused(IOService, 45);\n    OSMetaClassDeclareReservedUnused(IOService, 46);\n    OSMetaClassDeclareReservedUnused(IOService, 47);\n\npublic:\n/*! @function getState\n    @abstract Accessor for IOService state bits, not normally needed or used outside IOService.\n    @result State bits for the IOService, eg. <code>kIOServiceInactiveState</code>, <code>kIOServiceRegisteredState</code>. */\n\n    virtual IOOptionBits getState( void ) const;\n\n/*! @function isInactive\n    @abstract Checks if the IOService object has been terminated, and is in the process of being destroyed.\n    @discussion When an IOService object is successfully terminated, it is immediately made inactive, which blocks further attach()es, matching or notifications occuring on the object. It remains inactive until the last client closes, and is then finalized and destroyed.\n    @result <code>true</code> if the IOService object has been terminated. */\n\n    bool isInactive( void ) const;\n\n    /* Stack creation */\n\n/*! @function registerService\n    @abstract Starts the registration process for a newly discovered IOService object.\n    @discussion This function allows an IOService subclass to be published and made available to possible clients, by starting the registration process and delivering notifications to registered clients. The object should be completely setup and ready to field requests from clients before <code>registerService</code> is called.\n    @param options The default zero options mask is recommended and should be used in most cases. The registration process is usually asynchronous, with possible driver probing and notification occurring some time later. <code>kIOServiceSynchronous</code> may be passed to carry out the matching and notification process for currently registered clients before returning to the caller. */\n\n    virtual void registerService( IOOptionBits options = 0 );\n\n/*! @function probe\n    @abstract During an IOService object's instantiation, probes a matched service to see if it can be used.\n    @discussion The registration process for an IOService object (the provider) includes instantiating possible driver clients. The <code>probe</code> method is called in the client instance to check the matched service can be used before the driver is considered to be started. Since matching screens many possible providers, in many cases the <code>probe</code> method can be left unimplemented by IOService subclasses. The client is already attached to the provider when <code>probe</code> is called.\n    @param provider The registered IOService object that matches a driver personality's matching dictionary.\n    @param score Pointer to the current driver's probe score, which is used to order multiple matching drivers in the same match category. It defaults to the value of the <code>IOProbeScore</code> property in the drivers property table, or <code>kIODefaultProbeScore</code> if none is specified. The <code>probe</code> method may alter the score to affect start order.\n    @result An IOService instance or zero when the probe is unsuccessful. In almost all cases the value of <code>this</code> is returned on success. If another IOService object is returned, the probed instance is detached and freed, and the returned instance is used in its stead for <code>start</code>. */\n    \n    virtual IOService * probe(\tIOService * \tprovider,\n\t\t\t\tSInt32 \t  *\tscore );\n\n/*! @function start\n    @abstract During an IOService object's instantiation, starts the IOService object that has been selected to run on the provider.\n    @discussion The <code>start</code> method of an IOService instance is called by its provider when it has been selected (due to its probe score and match category) as the winning client. The client is already attached to the provider when <code>start</code> is called.<br>Implementations of <code>start</code> must call <code>start</code> on their superclass at an appropriate point. If an implementation of <code>start</code> has already called <code>super::start</code> but subsequently determines that it will fail, it must call <code>super::stop</code> to balance the prior call to <code>super::start</code> and prevent reference leaks.\n    @result <code>true</code> if the start was successful; <code>false</code> otherwise (which will cause the instance to be detached and usually freed). */\n    \n    virtual bool start( IOService * provider );\n    \n/*! @function stop\n    @abstract During an IOService termination, the stop method is called in its clients before they are detached & it is destroyed.\n    @discussion The termination process for an IOService (the provider) will call stop in each of its clients, after they have closed the provider if they had it open, or immediately on termination. */\n\n    virtual void stop( IOService * provider );\n\n    /* Open / Close */\n\n/*! @function open\n    @abstract Requests active access to a provider.\n    @discussion IOService provides generic open and close semantics to track clients of a provider that have established an active datapath. The use of <code>open</code> and @link close close@/link, and rules regarding ownership are family defined, and defined by the @link handleOpen handleOpen@/link and @link handleClose handleClose@/link methods in the provider. Some families will limit access to a provider based on its open state.\n    @param forClient Designates the client of the provider requesting the open.\n    @param options Options for the open. The provider family may implement options for open; IOService defines only <code>kIOServiceSeize</code> to request the device be withdrawn from its current owner.\n    @result <code>true</code> if the open was successful; <code>false</code> otherwise. */\n\n    virtual bool open( \t IOService *\t   forClient,\n                         IOOptionBits\t   options = 0,\n                         void *\t\t   arg = 0 );\n\n/*! @function close\n    @abstract Releases active access to a provider.\n    @discussion IOService provides generic open and close semantics to track clients of a provider that have established an active datapath. The use of @link open open@/link and <code>close</code>, and rules regarding ownership are family defined, and defined by the @link handleOpen handleOpen@/link and @link handleClose handleClose@/link methods in the provider.\n    @param forClient Designates the client of the provider requesting the close.\n    @param options Options available for the close. The provider family may implement options for close; IOService defines none.\n    @param arg Family specific arguments which are ignored by IOService. */\n    \n    virtual void close(  IOService *\t   forClient,\n                         IOOptionBits\t   options = 0 );\n                         \n/*! @function isOpen\n    @abstract Determines whether a specific, or any, client has an IOService object open.\n    @discussion Returns the open state of an IOService object with respect to the specified client, or when it is open by any client.\n    @param forClient If non-zero, <codeisOpen</code returns the open state for that client. If zero is passed, <codeisOpen</code returns the open state for all clients.\n    @result <codetrue</code if the specific, or any, client has the IOService object open. */\n\n    virtual bool isOpen( const IOService * forClient = 0 ) const;\n\n/*! @function handleOpen\n    @abstract Controls the open / close behavior of an IOService object (overrideable by subclasses).\n    @discussion IOService calls this method in its subclasses in response to the @link open open@/link method, so the subclass may implement the request. The default implementation provides single owner access to an IOService object via <code>open</code>. The object is locked via @link lockForArbitration lockForArbitration@/link before <code>handleOpen</code> is called.\n    @param forClient Designates the client of the provider requesting the open.\n    @param options Options for the open, may be interpreted by the implementor of <code>handleOpen</code>.\n    @result <code>true</code>if the open was successful; <code>false</code> otherwise. */\n\n    virtual bool handleOpen( \tIOService *\t  forClient,\n                                IOOptionBits\t  options,\n                                void *\t\t  arg );\n                                \n/*! @function handleClose\n    @abstract Controls the open / close behavior of an IOService object (overrideable by subclasses).\n    @discussion IOService calls this method in its subclasses in response to the @link close close@/link method, so the subclass may implement the request. The default implementation provides single owner access to an IOService object via @link open open@/link. The object is locked via @link lockForArbitration lockForArbitration@/link before <code>handleClose</code> is called.\n    @param forClient Designates the client of the provider requesting the close.\n    @param options Options for the close, may be interpreted by the implementor of @link handleOpen handleOpen@/link. */\n\n    virtual void handleClose(   IOService *\t  forClient,\n                                IOOptionBits\t  options );\n                                \n/*! @function handleIsOpen\n    @abstract Controls the open / close behavior of an IOService object (overrideable by subclasses).\n    @discussion IOService calls this method in its subclasses in response to the @link open open@/link method, so the subclass may implement the request. The default implementation provides single owner access to an IOService object via @link open open@/link. The object is locked via @link lockForArbitration lockForArbitration@/link before <code>handleIsOpen</code> is called.\n    @param forClient If non-zero, <code>isOpen</code> returns the open state for that client. If zero is passed, <code>isOpen</code> returns the open state for all clients.\n    @result <code>true</code> if the specific, or any, client has the IOService object open. */\n\n    virtual bool handleIsOpen(  const IOService * forClient ) const;\n\n    /* Stacking change */\n\n/*! @function terminate\n    @abstract Makes an IOService object inactive and begins its destruction.\n    @discussion Registering an IOService object informs possible clients of its existance and instantiates drivers that may be used with it; <code>terminate</code> involves the opposite process of informing clients that an IOService object is no longer able to be used and will be destroyed. By default, if any client has the service open, <code>terminate</code> fails. If the <code>kIOServiceRequired</code> flag is passed however, <code>terminate</code> will be successful though further progress in the destruction of the IOService object will not proceed until the last client has closed it. The service will be made inactive immediately upon successful termination, and all its clients will be notified via their @link message message@/link method with a message of type <code>kIOMessageServiceIsTerminated</code>. Both these actions take place on the caller's thread. After the IOService object is made inactive, further matching or attach calls will fail on it. Each client has its @link stop stop@/link method called upon their close of an inactive IOService object , or on its termination if they do not have it open. After <code>stop</code>, @link detach detach@/link is called in each client. When all clients have been detached, the @link finalize finalize@/link method is called in the inactive service. The termination process is inherently asynchronous because it will be deferred until all clients have chosen to close.\n    @param options In most cases no options are needed. <code>kIOServiceSynchronous</code> may be passed to cause <code>terminate</code> to not return until the service is finalized. */\n\n    virtual bool terminate( IOOptionBits options = 0 );\n\n/*! @function finalize\n    @abstract Finalizes the destruction of an IOService object.\n    @discussion The <code>finalize</code> method is called in an inactive (ie. terminated) IOService object after the last client has detached. IOService's implementation will call @link stop stop@/link, @link close close@/link, and @link detach detach@/link on each provider. When <code>finalize</code> returns, the object's retain count will have no references generated by IOService's registration process.\n    @param options The options passed to the @link terminate terminate@/link method of the IOService object are passed on to <code>finalize</code>.\n    @result <code>true</code>. */\n    \n    virtual bool finalize( IOOptionBits options );\n\n/*! @function free\n    @abstract Frees data structures that were allocated when power management was initialized on this service. */\n    \n    virtual void free( void ) override;\n\n/*! @function lockForArbitration\n    @abstract Locks an IOService object against changes in state or ownership.\n    @discussion The registration, termination and open / close functions of IOService use <code>lockForArbtration</code> to single-thread access to an IOService object. <code>lockForArbitration</code> grants recursive access to the same thread.\n    @param isSuccessRequired If a request for access to an IOService object should be denied if it is terminated, pass <code>false</code>, otherwise pass <code>true</code>. */\n    \n    virtual bool lockForArbitration( bool isSuccessRequired = true );\n    \n/*! @function unlockForArbitration\n    @abstract Unlocks an IOService obkect after a successful @link lockForArbitration lockForArbitration@/link.\n    @discussion A thread granted exclusive access to an IOService object should release it with <code>unlockForArbitration</code>. */\n    \n    virtual void unlockForArbitration( void );\n\n/*! @function terminateClient\n    @abstract Passes a termination up the stack.\n    @discussion When an IOService object is made inactive the default behavior is to also make any of its clients that have it as their only provider inactive, in this way recursing the termination up the driver stack. This method allows a terminated  IOService object to override this behavior. Note the client may also override this behavior by overriding its @link terminate terminate@/link method.\n    @param client The client of the terminated provider.\n    @param options Options originally passed to @link terminate terminate@/link, plus <code>kIOServiceRecursing</code>.\n    @result result of the terminate request on the client. */\n\n    virtual bool terminateClient( IOService * client, IOOptionBits options );\n\n    /* Busy state indicates discovery, matching or termination is in progress */\n\n/*! @function getBusyState\n    @abstract Returns the <code>busyState</code> of an IOService object.\n    @discussion Many activities in IOService are asynchronous. When registration, matching, or termination is in progress on an IOService object, its <code>busyState</code> is increased by one. Change in <code>busyState</code> to or from zero also changes the IOService object's provider's <code>busyState</code> by one, which means that an IOService object is marked busy when any of the above activities is ocurring on it or any of its clients.\n    @result The <code>busyState</code> value. */\n\n    virtual UInt32 getBusyState( void );\n    \n/*! @function adjustBusy\n    @abstract Adjusts the <code>busyState</code> of an IOService object.\n    @discussion Applies a delta to an IOService object's <code>busyState</code>. A change in the <code>busyState</code> to or from zero will change the IOService object's provider's <code>busyState</code> by one (in the same direction). \n    @param delta The delta to be applied to the IOService object's <code>busyState</code>. */\n\n    virtual void adjustBusy( SInt32 delta );\n\n    APPLE_KEXT_COMPATIBILITY_VIRTUAL\n\tIOReturn waitQuiet(mach_timespec_t * timeout)\n\tAPPLE_KEXT_DEPRECATED;\n\n/*! @function waitQuiet\n    @abstract Waits for an IOService object's <code>busyState</code> to be zero.\n    @discussion Blocks the caller until an IOService object is non busy.\n\t@param timeout The maximum time to wait in nanoseconds. Default is to wait forever.\n    @result Returns an error code if Mach synchronization primitives fail, <code>kIOReturnTimeout</code>, or <code>kIOReturnSuccess</code>. */\n    \n    IOReturn waitQuiet(uint64_t timeout = UINT64_MAX);\n\n    /* Matching */\n\n/*! @function matchPropertyTable\n    @abstract Allows a registered IOService object to implement family specific matching.\n    @discussion All matching on an IOService object will call this method to allow a family writer to implement matching in addition to the generic methods provided by IOService. The implementer should examine the matching dictionary passed to see if it contains properties the family understands for matching, and use them to match with the IOService object if so. Note that since matching is also carried out by other parts of the I/O Kit, the matching dictionary may contain properties the family does not understand - these should not be considered matching failures.\n    @param table The dictionary of properties to be matched against.\n    @param score Pointer to the current driver's probe score, which is used to order multiple matching drivers in the same match category. It defaults to the value of the <code>IOProbeScore</code> property in the drivers property table, or <code>kIODefaultProbeScore</code> if none is specified.\n    @result <code>false</code> if the family considers the matching dictionary does not match in properties it understands; <code>true</code> otherwise. */\n\n    virtual bool matchPropertyTable( OSDictionary *\ttable,\n                                     SInt32       *\tscore );\n\n    virtual bool matchPropertyTable( OSDictionary * table );\n\n/*! @function matchLocation\n    @abstract Allows a registered IOService object to direct location matching.\n    @discussion By default, a location matching property will be applied to an IOService object's provider. This method allows that behavior to be overridden by families.\n    @param client The IOService object at which matching is taking place.\n    @result Returns the IOService instance to be used for location matching. */\n\n    virtual IOService * matchLocation( IOService * client );\n\n    /* Resource service */\n\n/*! @function publishResource\n    @abstract Uses the resource service to publish a property.\n    @discussion The resource service uses IOService's matching and notification to allow objects to be published and found by any I/O Kit client by a global name. <code>publishResource</code> makes an object available to anyone waiting for it or looking for it in the future.\n    @param key An OSSymbol key that globally identifies the object.\n    @param The object to be published. */\n\n    static void publishResource( const OSSymbol * key, OSObject * value = 0 );\n\n/*! @function publishResource\n    @abstract Uses the resource service to publish a property.\n    @discussion The resource service uses IOService object's matching and notification to allow objects to be published and found by any I/O Kit client by a global name. <code>publishResource</code> makes an object available to anyone waiting for it or looking for it in the future.\n    @param key A C string key that globally identifies the object.\n    @param The object to be published. */\n\n    static void publishResource( const char * key, OSObject * value = 0 );\n    virtual bool addNeededResource( const char * key );\n\n    /* Notifications */\n\n/*! @function addNotification\n    @abstract Deprecated use addMatchingNotification(). Adds a persistant notification handler to be notified of IOService events.\n    @discussion IOService will deliver notifications of changes in state of an IOService object to registered clients. The type of notification is specified by a symbol, for example <code>gIOMatchedNotification</code> or <code>gIOTerminatedNotification</code>, and notifications will only include IOService objects that match the supplied matching dictionary. Notifications are ordered by a priority set with <code>addNotification</code>. When the notification is installed, its handler will be called with each of any currently existing IOService objects that are in the correct state (eg. registered) and match the supplied matching dictionary, avoiding races between finding preexisting and new IOService events. The notification request is identified by an instance of an IONotifier object, through which it can be enabled, disabled, or removed. <code>addNotification</code> consumes a retain count on the matching dictionary when the notification is removed.\n    @param type An OSSymbol identifying the type of notification and IOService state:\n<br>\t<code>gIOPublishNotification</code> Delivered when an IOService object is registered.\n<br>\t<code>gIOFirstPublishNotification</code> Delivered when an IOService object is registered, but only once per IOService instance. Some IOService objects may be reregistered when their state is changed.\n<br>\t<code>gIOMatchedNotification</code> Delivered when an IOService object has been matched with all client drivers, and they have been probed and started.\n<br>\t<code>gIOFirstMatchNotification</code> Delivered when an IOService object has been matched with all client drivers, but only once per IOService instance. Some IOService objects may be reregistered when their state is changed.\n<br>\t<code>gIOTerminatedNotification</code> Delivered after an IOService object has been terminated, during its finalize stage.\n    @param matching A matching dictionary to restrict notifications to only matching IOService objects. The dictionary will be released when the notification is removed, consuming the passed-in reference.\n    @param handler A C function callback to deliver notifications.\n    @param target An instance reference for the callback's use.\n    @param ref A reference constant for the callback's use.\n    @param priority A constant ordering all notifications of a each type.\n    @result An instance of an IONotifier object that can be used to control or destroy the notification request. */\n\n    static IONotifier * addNotification(\n                            const OSSymbol * type, OSDictionary * matching,\n                            IOServiceNotificationHandler handler,\n                            void * target, void * ref = 0,\n                            SInt32 priority = 0 )\n\tAPPLE_KEXT_DEPRECATED;\n\n/*! @function addMatchingNotification\n    @abstract Adds a persistant notification handler to be notified of IOService events.\n    @discussion IOService will deliver notifications of changes in state of an IOService object to registered clients. The type of notification is specified by a symbol, for example <code>gIOMatchedNotification</code> or <code>gIOTerminatedNotification</code>, and notifications will only include IOService objects that match the supplied matching dictionary. Notifications are ordered by a priority set with <code>addNotification</code>. When the notification is installed, its handler will be called with each of any currently existing IOService objects that are in the correct state (eg. registered) and match the supplied matching dictionary, avoiding races between finding preexisting and new IOService events. The notification request is identified by an instance of an IONotifier object, through which it can be enabled, disabled, or removed. <code>addMatchingNotification</code> does not consume a reference on the matching dictionary when the notification is removed, unlike addNotification.\n    @param type An OSSymbol identifying the type of notification and IOService state:\n<br>\t<code>gIOPublishNotification</code> Delivered when an IOService object is registered.\n<br>\t<code>gIOFirstPublishNotification</code> Delivered when an IOService object is registered, but only once per IOService instance. Some IOService objects may be reregistered when their state is changed.\n<br>\t<code>gIOMatchedNotification</code> Delivered when an IOService object has been matched with all client drivers, and they have been probed and started.\n<br>\t<code>gIOFirstMatchNotification</code> Delivered when an IOService object has been matched with all client drivers, but only once per IOService instance. Some IOService objects may be reregistered when their state is changed.\n<br>\t<code>gIOTerminatedNotification</code> Delivered after an IOService object has been terminated, during its finalize stage.\n    @param matching A matching dictionary to restrict notifications to only matching IOService objects. The dictionary is retained while the notification is installed. (Differs from addNotification).\n    @param handler A C function callback to deliver notifications.\n    @param target An instance reference for the callback's use.\n    @param ref A reference constant for the callback's use.\n    @param priority A constant ordering all notifications of a each type.\n    @result An instance of an IONotifier object that can be used to control or destroy the notification request. */\n\n    static IONotifier * addMatchingNotification(\n                            const OSSymbol * type, OSDictionary * matching,\n                            IOServiceMatchingNotificationHandler handler,\n                            void * target, void * ref = 0,\n                            SInt32 priority = 0 );\n\n/*! @function waitForService\n    @abstract Deprecated use waitForMatchingService(). Waits for a matching to service to be published.\n    @discussion Provides a method of waiting for an IOService object matching the supplied matching dictionary to be registered and fully matched. \n    @param matching The matching dictionary describing the desired IOService object. <code>waitForService</code> consumes one reference of the matching dictionary.\n    @param timeout The maximum time to wait.\n    @result A published IOService object matching the supplied dictionary. */\n\n    static IOService * waitForService( OSDictionary * matching,\n                            mach_timespec_t * timeout = 0);\n\n/*! @function waitForMatchingService\n    @abstract Waits for a matching to service to be published.\n    @discussion Provides a method of waiting for an IOService object matching the supplied matching dictionary to be registered and fully matched. \n    @param matching The matching dictionary describing the desired IOService object. (Does not consume a reference of the matching dictionary - differs from waitForService() which does consume a reference on the matching dictionary.)\n\t@param timeout The maximum time to wait in nanoseconds. Default is to wait forever.\n    @result A published IOService object matching the supplied dictionary. waitForMatchingService returns a reference to the IOService which should be released by the caller. (Differs from waitForService() which does not retain the returned object.) */\n\n    static IOService * waitForMatchingService( OSDictionary * matching,\n                            uint64_t timeout = UINT64_MAX);\n\n/*! @function getMatchingServices\n    @abstract Finds the set of current published IOService objects matching a matching dictionary.\n    @discussion Provides a method of finding the current set of published IOService objects matching the supplied matching dictionary.   \n    @param matching The matching dictionary describing the desired IOService objects.\n    @result An instance of an iterator over a set of IOService objects. To be released by the caller. */\n\n    static OSIterator * getMatchingServices( OSDictionary * matching );\n\n/*! @function copyMatchingService\n    @abstract Finds one of the current published IOService objects matching a matching dictionary.\n    @discussion Provides a method to find one member of the set of published IOService objects matching the supplied matching dictionary.   \n    @param matching The matching dictionary describing the desired IOService object.\n    @result The IOService object or NULL. To be released by the caller. */\n\n    static IOService * copyMatchingService( OSDictionary * matching );\n\npublic:\n    /* Helpers to make matching dictionaries for simple cases,\n     * they add keys to an existing dictionary, or create one. */\n\n/*! @function serviceMatching\n    @abstract Creates a matching dictionary, or adds matching properties to an existing dictionary, that specify an IOService class match.\n    @discussion A very common matching criteria for IOService object is based on its class. <code>serviceMatching</code> creates a matching dictionary that specifies any IOService object of a class, or its subclasses. The class is specified by name, and an existing dictionary may be passed in, in which case the matching properties will be added to that dictionary rather than creating a new one.\n    @param className The class name, as a const C string. Class matching is successful on IOService objects of this class or any subclass.\n    @param table If zero, <code>serviceMatching</code> creates a matching dictionary and returns a reference to it, otherwise the matching properties are added to the specified dictionary.\n    @result The matching dictionary created, or passed in, is returned on success, or zero on failure. */\n\n    static OSDictionary * serviceMatching( const char * className,\n\t\t\tOSDictionary * table = 0 );\n\n/*! @function serviceMatching\n    @abstract Creates a matching dictionary, or adds matching properties to an existing dictionary, that specify an IOService class match.\n    @discussion A very common matching criteria for IOService object is based on its class. <code>serviceMatching</code> creates a matching dictionary that specifies any IOService of a class, or its subclasses. The class is specified by name, and an existing dictionary may be passed in, in which case the matching properties will be added to that dictionary rather than creating a new one.\n    @param className The class name, as an OSString (which includes OSSymbol). Class matching is successful on IOService objects of this class or any subclass.\n    @param table If zero, <code>serviceMatching</code> creates a matching dictionary and returns a reference to it, otherwise the matching properties are added to the specified dictionary.\n    @result The matching dictionary created, or passed in, is returned on success, or zero on failure. */\n\n    static OSDictionary * serviceMatching( const OSString * className,\n\t\t\tOSDictionary * table = 0 );\n\n/*! @function nameMatching\n    @abstract Creates a matching dictionary, or adds matching properties to an existing dictionary, that specify an IOService name match.\n    @discussion A very common matching criteria for IOService object is based on its name. <code>nameMatching</code> creates a matching dictionary that specifies any IOService object which responds successfully to the @link //apple_ref/cpp/instm/IORegistryEntry/compareName/virtualbool/(OSString*,OSString**) IORegistryEntry::compareName@/link method. An existing dictionary may be passed in, in which case the matching properties will be added to that dictionary rather than creating a new one.\n    @param name The service's name, as a const C string. Name matching is successful on IOService objects that respond successfully to the <code>IORegistryEntry::compareName</code> method.\n    @param table If zero, <code>nameMatching</code> creates a matching dictionary and returns a reference to it, otherwise the matching properties are added to the specified dictionary.\n    @result The matching dictionary created, or passed in, is returned on success, or zero on failure. */\n\n    static OSDictionary * nameMatching( const char * name,\n\t\t\tOSDictionary * table = 0 );\n\n/*! @function nameMatching\n    @abstract Creates a matching dictionary, or adds matching properties to an existing dictionary, that specify an IOService name match.\n    @discussion A very common matching criteria for IOService object is based on its name. <code>nameMatching</code> creates a matching dictionary that specifies any IOService object which responds successfully to the @link //apple_ref/cpp/instm/IORegistryEntry/compareName/virtualbool/(OSString*,OSString**) IORegistryEntry::compareName@/link method. An existing dictionary may be passed in, in which case the matching properties will be added to that dictionary rather than creating a new one.\n    @param name The service's name, as an OSString (which includes OSSymbol). Name matching is successful on IOService objects that respond successfully to the <code>IORegistryEntry::compareName</code> method.\n    @param table If zero, <code>nameMatching</code> creates a matching dictionary and returns a reference to it, otherwise the matching properties are added to the specified dictionary.\n    @result The matching dictionary created, or passed in, is returned on success, or zero on failure. */\n\n    static OSDictionary * nameMatching( const OSString* name,\n\t\t\tOSDictionary * table = 0 );\n\n/*! @function resourceMatching\n    @abstract Creates a matching dictionary, or adds matching properties to an existing dictionary, that specify a resource service match.\n    @discussion IOService maintains a resource service IOResources that allows objects to be published and found globally in the I/O Kit based on a name, using the standard IOService matching and notification calls.\n    @param name The resource name, as a const C string. Resource matching is successful when an object by that name has been published with the <code>publishResource</code> method.\n    @param table If zero, <code>resourceMatching</code> creates a matching dictionary and returns a reference to it, otherwise the matching properties are added to the specified dictionary.\n    @result The matching dictionary created, or passed in, is returned on success, or zero on failure. */\n\n    static OSDictionary * resourceMatching( const char * name,\n\t\t\tOSDictionary * table = 0 );\n\n/*! @function resourceMatching\n    @abstract Creates a matching dictionary, or adds matching properties to an existing dictionary, that specify a resource service match.\n    @discussion IOService maintains a resource service IOResources that allows objects to be published and found globally in the I/O Kit based on a name, using the standard IOService matching and notification calls.\n    @param name The resource name, as an OSString (which includes OSSymbol). Resource matching is successful when an object by that name has been published with the <code>publishResource</code> method.\n    @param table If zero, <code>resourceMatching</code> creates a matching dictionary and returns a reference to it, otherwise the matching properties are added to the specified dictionary.\n    @result The matching dictionary created, or passed in, is returned on success, or zero on failure. */\n\n    static OSDictionary * resourceMatching( const OSString * name,\n\t\t\tOSDictionary * table = 0 );\n\n\n/*! @function propertyMatching\n    @abstract Creates a matching dictionary, or adds matching properties to an existing dictionary, that specify an IOService phandle match.\n    @discussion TODO A very common matching criteria for IOService is based on its name. nameMatching will create a matching dictionary that specifies any IOService which respond successfully to the IORegistryEntry method compareName. An existing dictionary may be passed in, in which case the matching properties will be added to that dictionary rather than creating a new one.\n    @param key The service's phandle, as a const UInt32. PHandle matching is successful on IOService objects that respond successfully to the IORegistryEntry method compareName.\n    @param value The service's phandle, as a const UInt32. PHandle matching is successful on IOService's which respond successfully to the IORegistryEntry method compareName.\n    @param table If zero, nameMatching will create a matching dictionary and return a reference to it, otherwise the matching properties are added to the specified dictionary.\n    @result The matching dictionary created, or passed in, is returned on success, or zero on failure. */\n\n    static OSDictionary * propertyMatching( const OSSymbol * key, const OSObject * value,\n\t\t\tOSDictionary * table = 0 );\n\n/*! @function registryEntryIDMatching\n    @abstract Creates a matching dictionary, or adds matching properties to an existing dictionary, that specify a IORegistryEntryID match.\n    @discussion <code>registryEntryIDMatching</code> creates a matching dictionary that specifies the IOService object with the assigned registry entry ID (returned by <code>IORegistryEntry::getRegistryEntryID()</code>). An existing dictionary may be passed in, in which case the matching properties will be added to that dictionary rather than creating a new one.\n    @param name The service's ID. Matching is successful on the IOService object that return that ID from the <code>IORegistryEntry::getRegistryEntryID()</code> method.\n    @param table If zero, <code>registryEntryIDMatching</code> creates a matching dictionary and returns a reference to it, otherwise the matching properties are added to the specified dictionary.\n    @result The matching dictionary created, or passed in, is returned on success, or zero on failure. */\n\n    static OSDictionary * registryEntryIDMatching( uint64_t entryID,\n\t\t\tOSDictionary * table = 0 );\n\n\n/*! @function addLocation\n    @abstract Adds a location matching property to an existing dictionary.\n    @discussion This function creates matching properties that specify the location of a IOService object, as an embedded matching dictionary. This matching will be successful on an IOService object that attached to an IOService object which matches this location matching dictionary.\n    @param table The matching properties are added to the specified dictionary, which must be non-zero.\n    @result The location matching dictionary created is returned on success, or zero on failure. */\n\n    static OSDictionary * addLocation( OSDictionary * table );\n\n    /* Helpers for matching dictionaries. */\n\n/*! @function compareProperty\n    @abstract Compares a property in a matching dictionary with an IOService object's property table.\n    @discussion This is a helper function to aid in implementing @link matchPropertyTable matchPropertyTable@/link. If the property specified by <code>key</code> exists in the matching dictionary, it is compared with a property of the same name in the IOService object's property table. The comparison is performed with the <code>isEqualTo</code> method. If the property does not exist in the matching table, success is returned. If the property exists in the matching dictionary but not the IOService property table, failure is returned.\n    @param matching The matching dictionary, which must be non-zero.\n    @param key The dictionary key specifying the property to be compared, as a C string.\n    @result <code>true</code> if the property does not exist in the matching table. If the property exists in the matching dictionary but not the IOService property table, failure is returned. Otherwise the result of calling the property from the matching dictionary's <code>isEqualTo</code> method with the IOService property as an argument is returned. */\n\n    virtual bool compareProperty(   OSDictionary   * matching,\n                                    const char     * key );\n/*! @function compareProperty\n    @abstract Compares a property in a matching dictionary with an IOService object's property table.\n    @discussion This is a helper function to aid in implementing @link matchPropertyTable matchPropertyTable@/link. If the property specified by <code>key</code> exists in the matching dictionary, it is compared with a property of the same name in the IOService object's property table. The comparison is performed with the <code>isEqualTo</code> method. If the property does not exist in the matching table, success is returned. If the property exists in the matching dictionary but not the IOService property table, failure is returned.\n    @param matching The matching dictionary, which must be non-zero.\n    @param key The dictionary key specifying the property to be compared, as an OSString (which includes OSSymbol).\n    @result <code>true</code> if the property does not exist in the matching table. If the property exists in the matching dictionary but not the IOService property table, failure is returned. Otherwise the result of calling the property from the matching dictionary's <code>isEqualTo</code> method with the IOService property as an argument is returned. */\n\n    virtual bool compareProperty(   OSDictionary   * matching,\n                                    const OSString * key );\n\n/*! @function compareProperties\n    @abstract Compares a set of properties in a matching dictionary with an IOService object's property table.\n    @discussion This is a helper function to aid in implementing @link matchPropertyTable matchPropertyTable@/link. A collection of dictionary keys specifies properties in a matching dictionary to be compared, with <code>compareProperty</code>, with an IOService object's property table, if <code>compareProperty</code> returns <code>true</code> for each key, success is returned; otherwise failure.\n    @param matching The matching dictionary, which must be non-zero.\n    @param keys A collection (eg. OSSet, OSArray, OSDictionary) which should contain OSStrings (or OSSymbols) that specify the property keys to be compared.\n    @result Success if <code>compareProperty</code> returns <code>true</code> for each key in the collection; otherwise failure. */\n\n    virtual bool compareProperties( OSDictionary   * matching,\n                                    OSCollection   * keys );\n\n    /* Client / provider accessors */\n\n/*! @function attach\n    @abstract Attaches an IOService client to a provider in the I/O Registry.\n    @discussion This function called in an IOService client enters the client into the I/O Registry as a child of the provider in the service plane. The provider must be active or the attach will fail. Multiple attach calls to the same provider are no-ops and return success. A client may be attached to multiple providers. Entering an object into the I/O Registry retains both the client and provider until they are detached.\n    @param provider The IOService object which will serve as this object's provider.\n    @result <code>false</code> if the provider is inactive or on a resource failure; otherwise <code>true</code>. */\n\n    virtual bool attach( IOService * provider );\n    \n/*! @function detach\n    @abstract Detaches an IOService client from a provider in the I/O Registry.\n    @discussion This function called in an IOService client removes the client as a child of the provider in the service plane of the I/O Registry. If the provider is not a parent of the client this is a no-op, otherwise the I/O Registry releases both the client and provider.\n    @param provider The IOService object to detach from. */\n\n    virtual void detach( IOService * provider );\n\n/*! @function getProvider\n    @abstract Returns an IOService object's primary provider.\n    @discussion This function called in an IOService client will return the provider to which it was first attached. Because the majority of IOService objects have only one provider, this is a useful simplification and also supports caching of the provider when the I/O Registry is unchanged.\n    @result The first provider of the client, or zero if the IOService object is not attached into the I/O Registry. The provider is retained while the client is attached, and should not be released by the caller. */\n\n    virtual IOService * getProvider( void ) const;\n\n/*! @function getWorkLoop\n    @abstract Returns the current work loop or <code>provider->getWorkLoop</code>.\n    @discussion This function returns a valid work loop that a client can use to add an IOCommandGate to. The intention is that an IOService client has data that needs to be protected but doesn't want to pay the cost of a dedicated thread. This data has to be accessed from a provider's call-out context as well. So to achieve both of these goals the client creates an IOCommandGate to lock access to his data but he registers it with the provider's work loop, i.e. the work loop which will make the completion call-outs. This avoids a potential deadlock because the work loop gate uses a recursive lock, which allows the same lock to be held multiple times by a single thread.\n    @result A work loop, either the current work loop or it walks up the @link getProvider getProvider@/link chain calling <code>getWorkLoop</code>. Eventually it will reach a valid work loop-based driver or the root of the I/O tree, where it will return a system-wide work loop. Returns 0 if it fails to find (or create) a work loop.*/\n\n    virtual IOWorkLoop * getWorkLoop() const;\n\n/*! @function getProviderIterator\n    @abstract Returns an iterator over an IOService object's providers.\n    @discussion For those few IOService objects that obtain service from multiple providers, this method supplies an iterator over a client's providers. \n    @result An iterator over the providers of the client, or zero if there is a resource failure. The iterator must be released when the iteration is finished. All objects returned by the iteration are retained while the iterator is valid, though they may no longer be attached during the iteration. */\n\n    virtual OSIterator * getProviderIterator( void ) const;\n\n/*! @function getOpenProviderIterator\n    @abstract Returns an iterator over an client's providers that are currently opened by the client.\n    @discussion For those few IOService objects that obtain service from multiple providers, this method supplies an iterator over a client's providers, locking each in turn with @link lockForArbitration lockForArbitration@/link and returning those that have been opened by the client. \n    @result An iterator over the providers the client has open, or zero if there is a resource failure. The iterator must be released when the iteration is finished. All objects returned by the iteration are retained while the iterator is valid, and the current entry in the iteration is locked with <code>lockForArbitration</code>, protecting it from state changes. */\n\n    virtual OSIterator * getOpenProviderIterator( void ) const;\n\n/*! @function getClient\n    @abstract Returns an IOService object's primary client.\n    @discussion This function called in an IOService provider will return the first client to attach to it. For IOService objects which have only only one client, this may be a useful simplification.\n    @result The first client of the provider, or zero if the IOService object is not attached into the I/O Registry. The client is retained while it is attached, and should not be released by the caller. */\n\n    virtual IOService * getClient( void ) const;\n\n/*! @function getClientIterator\n    @abstract Returns an iterator over an IOService object's clients.\n    @discussion For IOService objects that may have multiple clients, this method supplies an iterator over a provider's clients. \n    @result An iterator over the clients of the provider, or zero if there is a resource failure. The iterator must be released when the iteration is finished. All objects returned by the iteration are retained while the iterator is valid, though they may no longer be attached during the iteration. */\n\n    virtual OSIterator * getClientIterator( void ) const;\n\n/*! @function getOpenClientIterator\n    @abstract Returns an iterator over a provider's clients that currently have opened the provider.\n    @discussion For IOService objects that may have multiple clients, this method supplies an iterator over a provider's clients, locking each in turn with @link lockForArbitration lockForArbitration@/link and returning those that have opened the provider. \n    @result An iterator over the clients that have opened the provider, or zero if there is a resource failure. The iterator must be released when the iteration is finished. All objects returned by the iteration are retained while the iterator is valid, and the current entry in the iteration is locked with <code>lockForArbitration</code>, protecting it from state changes. */\n\n    virtual OSIterator * getOpenClientIterator( void ) const;\n\n/*! @function callPlatformFunction\n    @abstract Calls the platform function with the given name.\n    @discussion The platform expert or other drivers may implement various functions to control hardware features.  <code>callPlatformFunction</code> allows any IOService object to access these functions. Normally <code>callPlatformFunction</code> is called on a service's provider. The provider services the request or passes it to its provider. The system's IOPlatformExpert subclass catches functions it knows about and redirects them into other parts of the service plane. If the IOPlatformExpert subclass cannot execute the function, the base class is called. The IOPlatformExpert base class attempts to find a service to execute the function by looking up the function name in an IOResources name space. A service may publish a service using <code>publishResource(functionName, this)</code>. If no service can be found to execute the function an error is returned.\n    @param functionName Name of the function to be called. When <code>functionName</code> is a C string, <code>callPlatformFunction</code> converts the C string to an OSSymbol and calls the OSSymbol version of <code>callPlatformFunction</code>. This process can block and should not be used from an interrupt context.\n    @param waitForFunction If <code>true</code>, <code>callPlatformFunction</code> will not return until the function has been called.\n    @result An IOReturn code; <code>kIOReturnSuccess</code> if the function was successfully executed, <code>kIOReturnUnsupported</code> if a service to execute the function could not be found. Other return codes may be returned by the function.*/\n\n    virtual IOReturn callPlatformFunction( const OSSymbol * functionName,\n\t\t\t\t\t   bool waitForFunction,\n\t\t\t\t\t   void *param1, void *param2,\n\t\t\t\t\t   void *param3, void *param4 );\n\n    virtual IOReturn callPlatformFunction( const char * functionName,\n\t\t\t\t\t   bool waitForFunction,\n\t\t\t\t\t   void *param1, void *param2,\n\t\t\t\t\t   void *param3, void *param4 );\n\n\n    /* Some accessors */\n\n/*! @function getPlatform\n    @abstract Returns a pointer to the platform expert instance for the computer.\n    @discussion This method provides an accessor to the platform expert instance for the computer. \n    @result A pointer to the IOPlatformExport instance. It should not be released by the caller. */\n\n    static IOPlatformExpert * getPlatform( void );\n\n/*! @function getPMRootDomain\n    @abstract Returns a pointer to the power management root domain instance for the computer.\n    @discussion This method provides an accessor to the power management root domain instance for the computer. \n    @result A pointer to the power management root domain instance. It should not be released by the caller. */\n\n    static class IOPMrootDomain * getPMRootDomain( void );\n\n/*! @function getServiceRoot\n    @abstract Returns a pointer to the root of the service plane.\n    @discussion This method provides an accessor to the root of the service plane for the computer. \n    @result A pointer to the IOService instance at the root of the service plane. It should not be released by the caller. */\n\n    static IOService * getServiceRoot( void );\n\n/*! @function getResourceService\n    @abstract Returns a pointer to the IOResources service.\n    @discussion IOService maintains a resource service IOResources that allows objects to be published and found globally in the I/O Kit based on a name, using the standard IOService matching and notification calls.\n    @result A pointer to the IOResources instance. It should not be released by the caller. */\n\n    static IOService * getResourceService( void );\n\n    /* Allocate resources for a matched service */\n\n/*! @function getResources\n    @abstract Allocates any needed resources for a published IOService object before clients attach.\n    @discussion This method is called during the registration process for an IOService object if there are successful driver matches, before any clients attach. It allows for lazy allocation of resources to an IOService object when a matching driver is found.\n    @result An IOReturn code; <code>kIOReturnSuccess</code> is necessary for the IOService object to be successfully used, otherwise the registration process for the object is halted. */\n    \n    virtual IOReturn getResources( void );\n\n    /* Device memory accessors */\n\n/*! @function getDeviceMemoryCount\n    @abstract Returns a count of the physical memory ranges available for a device.\n    @discussion This method returns the count of physical memory ranges, each represented by an IODeviceMemory instance, that have been allocated for a memory mapped device.\n    @result An integer count of the number of ranges available. */\n\n    virtual IOItemCount getDeviceMemoryCount( void );\n\n/*! @function getDeviceMemoryWithIndex\n    @abstract Returns an instance of IODeviceMemory representing one of a device's memory mapped ranges.\n    @discussion This method returns a pointer to an instance of IODeviceMemory for the physical memory range at the given index for a memory mapped device.\n    @param index An index into the array of ranges assigned to the device.\n    @result A pointer to an instance of IODeviceMemory, or zero if the index is beyond the count available. The IODeviceMemory is retained by the provider, so is valid while attached, or while any mappings to it exist. It should not be released by the caller. See also @link mapDeviceMemoryWithIndex mapDeviceMemoryWithIndex@/link, which creates a device memory mapping. */\n\n    virtual IODeviceMemory * getDeviceMemoryWithIndex( unsigned int index );\n\n/*! @function mapDeviceMemoryWithIndex\n    @abstract Maps a physical range of a device.\n    @discussion This method creates a mapping for the IODeviceMemory at the given index, with <code>IODeviceMemory::map(options)</code>. The mapping is represented by the returned instance of IOMemoryMap, which should not be released until the mapping is no longer required.\n    @param index An index into the array of ranges assigned to the device.\n    @result An instance of IOMemoryMap, or zero if the index is beyond the count available. The mapping should be released only when access to it is no longer required. */\n\n    virtual IOMemoryMap * mapDeviceMemoryWithIndex( unsigned int index,\n\t\t\t\t\t\tIOOptionBits options = 0 );\n\n/*! @function getDeviceMemory\n    @abstract Returns the array of IODeviceMemory objects representing a device's memory mapped ranges.\n    @discussion This method returns an array of IODeviceMemory objects representing the physical memory ranges allocated to a memory mapped device.\n    @result An OSArray of IODeviceMemory objects, or zero if none are available. The array is retained by the provider, so is valid while attached. */\n\n    virtual OSArray * getDeviceMemory( void );\n\n/*! @function setDeviceMemory\n    @abstract Sets the array of IODeviceMemory objects representing a device's memory mapped ranges.\n    @discussion This method sets an array of IODeviceMemory objects representing the physical memory ranges allocated to a memory mapped device.\n    @param array An OSArray of IODeviceMemory objects, or zero if none are available. The array will be retained by the object. */\n\n    virtual void setDeviceMemory( OSArray * array );\n\n    /* Interrupt accessors */\n\n/*! @function registerInterrupt\n    @abstract Registers a C function interrupt handler for a device supplying interrupts.\n    @discussion This method installs a C function interrupt handler to be called at primary interrupt time for a device's interrupt. Only one handler may be installed per interrupt source. IOInterruptEventSource provides a work loop based abstraction for interrupt delivery that may be more appropriate for work loop based drivers.\n    @param source The index of the interrupt source in the device.\n    @param target An object instance to be passed to the interrupt handler.\n    @param handler The C function to be called at primary interrupt time when the interrupt occurs. The handler should process the interrupt by clearing the interrupt, or by disabling the source.\n    @param refCon A reference constant for the handler's use.\n    @result An IOReturn code.<br><code>kIOReturnNoInterrupt</code> is returned if the source is not valid; <code>kIOReturnNoResources</code> is returned if the interrupt already has an installed handler. */\n\n    virtual IOReturn registerInterrupt(int source, OSObject *target,\n\t\t\t\t       IOInterruptAction handler,\n\t\t\t\t       void *refCon = 0);\n                                       \n/*! @function unregisterInterrupt\n    @abstract Removes a C function interrupt handler for a device supplying hardware interrupts.\n    @discussion This method removes a C function interrupt handler previously installed with @link registerInterrupt registerInterrupt@/link.\n    @param source The index of the interrupt source in the device.\n    @result An IOReturn code (<code>kIOReturnNoInterrupt</code> is returned if the source is not valid). */\n\n    virtual IOReturn unregisterInterrupt(int source);\n\n/*! @function getInterruptType\n    @abstract Returns the type of interrupt used for a device supplying hardware interrupts.\n    @param source The index of the interrupt source in the device.\n    @param interruptType The interrupt type for the interrupt source will be stored here by <code>getInterruptType</code>.<br> <code>kIOInterruptTypeEdge</code> will be returned for edge-trigggered sources.<br><code>kIOInterruptTypeLevel</code> will be returned for level-trigggered sources.\n    @result An IOReturn code (<code>kIOReturnNoInterrupt</code> is returned if the source is not valid). */\n\n    virtual IOReturn getInterruptType(int source, int *interruptType);\n\n/*! @function enableInterrupt\n    @abstract Enables a device interrupt.\n    @discussion It is the caller's responsiblity to keep track of the enable state of the interrupt source.\n    @param source The index of the interrupt source in the device.\n    @result An IOReturn code (<code>kIOReturnNoInterrupt</code> is returned if the source is not valid). */\n\n    virtual IOReturn enableInterrupt(int source);\n\n/*! @function disableInterrupt\n    @abstract Synchronously disables a device interrupt.\n    @discussion If the interrupt routine is running, the call will block until the routine completes. It is the caller's responsiblity to keep track of the enable state of the interrupt source.\n    @param source The index of the interrupt source in the device.\n    @result An IOReturn code (<code>kIOReturnNoInterrupt</code> is returned if the source is not valid). */\n\n    virtual IOReturn disableInterrupt(int source);\n\n/*! @function causeInterrupt\n    @abstract Causes a device interrupt to occur.\n    @discussion Emulates a hardware interrupt, to be called from task level.\n    @param source The index of the interrupt source in the device.\n    @result An IOReturn code (<code>kIOReturnNoInterrupt</code> is returned if the source is not valid). */\n\n    virtual IOReturn causeInterrupt(int source);\n\n/*! @function requestProbe\n    @abstract Requests that hardware be re-scanned for devices.\n    @discussion For bus families that do not usually detect device addition or removal, this method represents an external request (eg. from a utility application) to rescan and publish or remove found devices.\n    @param options Family defined options, not interpreted by IOService.\n    @result An IOReturn code. */\n\n    virtual IOReturn requestProbe( IOOptionBits options );\n\n    /* Generic API for non-data-path upstream calls */\n\n/*! @function message\n    @abstract Receives a generic message delivered from an attached provider.\n    @discussion A provider may deliver messages via the <code>message</code> method to its clients informing them of state changes, such as <code>kIOMessageServiceIsTerminated</code> or <code>kIOMessageServiceIsSuspended</code>. Certain messages are defined by the I/O Kit in <code>IOMessage.h</code> while others may be family dependent. This method is implemented in the client to receive messages.\n    @param type A type defined in <code>IOMessage.h</code> or defined by the provider family.\n    @param provider The provider from which the message originates.\n    @param argument An argument defined by the provider family, not used by IOService.\n    @result An IOReturn code defined by the message type. */\n\n    virtual IOReturn message( UInt32 type, IOService * provider,\n                              void * argument = 0 );\n                                \n/*! @function messageClient\n    @abstract Sends a generic message to an attached client.\n    @discussion A provider may deliver messages via the @link message message@/link method to its clients informing them of state changes, such as <code>kIOMessageServiceIsTerminated</code> or <code>kIOMessageServiceIsSuspended</code>. Certain messages are defined by the I/O Kit in <code>IOMessage.h</code> while others may be family dependent. This method may be called in the provider to send a message to the specified client, which may be useful for overrides.\n    @param messageType A type defined in <code>IOMessage.h</code> or defined by the provider family.\n    @param client A client of the IOService to send the message.\n    @param messageArgument An argument defined by the provider family, not used by IOService.\n    @param argSize Specifies the size of messageArgument, in bytes.  If argSize is non-zero, messageArgument is treated as a pointer to argSize bytes of data.  If argSize is 0 (the default), messageArgument is treated as an ordinal and passed by value.\n    @result The return code from the client message call. */\n    \n    virtual IOReturn messageClient( UInt32 messageType, OSObject * client,\n                                    void * messageArgument = 0, vm_size_t argSize = 0 );\n\n/*! @function messageClients\n    @abstract Sends a generic message to all attached clients.\n    @discussion A provider may deliver messages via the @link message message@/link method to its clients informing them of state changes, such as <code>kIOMessageServiceIsTerminated</code> or <code>kIOMessageServiceIsSuspended</code>. Certain messages are defined by the I/O Kit in <code>IOMessage.h</code> while others may be family dependent. This method may be called in the provider to send a message to all the attached clients, via the @link messageClient messageClient@/link method.\n    @param type A type defined in <code>IOMessage.h</code> or defined by the provider family.\n    @param argument An argument defined by the provider family, not used by IOService.\n    @param argSize Specifies the size of argument, in bytes.  If argSize is non-zero, argument is treated as a pointer to argSize bytes of data.  If argSize is 0 (the default), argument is treated as an ordinal and passed by value.\n    @result Any non-<code>kIOReturnSuccess</code> return codes returned by the clients, or <code>kIOReturnSuccess</code> if all return <code>kIOReturnSuccess</code>. */\n\n    virtual IOReturn messageClients( UInt32 type,\n                                     void * argument = 0, vm_size_t argSize = 0 );\n\n    virtual IONotifier * registerInterest( const OSSymbol * typeOfInterest,\n                                           IOServiceInterestHandler handler,\n                                           void * target, void * ref = 0 );\n\n    virtual void applyToProviders( IOServiceApplierFunction applier,\n                                   void * context );\n\n    virtual void applyToClients( IOServiceApplierFunction applier,\n                                 void * context );\n\n    virtual void applyToInterested( const OSSymbol * typeOfInterest,\n                                    OSObjectApplierFunction applier,\n                                    void * context );\n\n    virtual IOReturn acknowledgeNotification( IONotificationRef notification,\n                                              IOOptionBits response );\n\n    /* User client create */\n\n/*! @function newUserClient\n    @abstract Creates a connection for a non kernel client.\n    @discussion A non kernel client may request a connection be opened via the @link //apple_ref/c/func/IOServiceOpen IOServiceOpen@/link library function, which will call this method in an IOService object. The rules and capabilities of user level clients are family dependent, and use the functions of the IOUserClient class for support. IOService's implementation returns <code>kIOReturnUnsupported</code>, so any family supporting user clients must implement this method.\n    @param owningTask The Mach task of the client thread in the process of opening the user client. Note that in Mac OS X, each process is based on a Mach task and one or more Mach threads. For more information on the composition of a Mach task and its relationship with Mach threads, see {@linkdoc //apple_ref/doc/uid/TP30000905-CH209-TPXREF103 \"Tasks and Threads\"}.\n    @param securityID A token representing the access level for the task.\n    @param type A constant specifying the type of connection to be created, specified by the caller of @link //apple_ref/c/func/IOServiceOpen IOServiceOpen@/link and interpreted only by the family.\n    @param handler An instance of an IOUserClient object to represent the connection, which will be released when the connection is closed, or zero if the connection was not opened.    \n    @param properties A dictionary of additional properties for the connection.\n    @result A return code to be passed back to the caller of <code>IOServiceOpen</code>. */\n\n    virtual IOReturn newUserClient( task_t owningTask, void * securityID,\n                                    UInt32 type, OSDictionary * properties,\n                                    IOUserClient ** handler );\n\n    virtual IOReturn newUserClient( task_t owningTask, void * securityID,\n                                    UInt32 type, IOUserClient ** handler );\n\n    /* Return code utilities */\n\n/*! @function stringFromReturn\n    @abstract Supplies a programmer-friendly string from an IOReturn code.\n    @discussion Strings are available for the standard return codes in <code>IOReturn.h</code> in IOService, while subclasses may implement this method to interpret family dependent return codes.\n    @param rtn The IOReturn code.\n    @result A pointer to a constant string, or zero if the return code is unknown. */\n    \n    virtual const char * stringFromReturn( IOReturn rtn );\n\n/*! @function errnoFromReturn\n    @abstract Translates an IOReturn code to a BSD <code>errno</code>.\n    @discussion BSD defines its own return codes for its functions in <code>sys/errno.h</code>, and I/O Kit families may need to supply compliant results in BSD shims. Results are available for the standard return codes in <code>IOReturn.h</code> in IOService, while subclasses may implement this method to interpret family dependent return codes.\n    @param rtn The IOReturn code.\n    @result The BSD <code>errno</code> or <code>EIO</code> if unknown. */\n    \n    virtual int errnoFromReturn( IOReturn rtn );\n\n    /* * * * * * * * * * * * * * * * * * * * * * * * * * * * */\n    /* * * * * * * * * * end of IOService API  * * * * * * * */\n    /* * * * * * * * * * * * * * * * * * * * * * * * * * * * */\n\n    /* for IOInterruptController implementors */\n\n    int               _numInterruptSources;\n    IOInterruptSource *_interruptSources;\n\n    /* overrides */\n    virtual bool serializeProperties( OSSerialize * s ) const override;\n\n    void   requireMaxBusStall(UInt32 ns);\n    void   requireMaxInterruptDelay(uint32_t ns);\n\n    /* * * * * * * * * * * * * * * * * * * * * * * * * * * * */\n    /* * * * * * * * * * * * Internals * * * * * * * * * * * */\n    /* * * * * * * * * * * * * * * * * * * * * * * * * * * * */\n\n\nprivate:\n    APPLE_KEXT_COMPATIBILITY_VIRTUAL\n\tbool checkResources( void );\n    APPLE_KEXT_COMPATIBILITY_VIRTUAL\n    bool checkResource( OSObject * matching );\n\n    APPLE_KEXT_COMPATIBILITY_VIRTUAL\n    void probeCandidates( OSOrderedSet * matches );\n    APPLE_KEXT_COMPATIBILITY_VIRTUAL\n    bool startCandidate( IOService * candidate );\n\npublic:\n    APPLE_KEXT_COMPATIBILITY_VIRTUAL\n    IOService * getClientWithCategory( const OSSymbol * category )\n\tAPPLE_KEXT_DEPRECATED;\n\t// copyClientWithCategory is the public replacement\n\nprivate:\n    APPLE_KEXT_COMPATIBILITY_VIRTUAL\n    bool passiveMatch( OSDictionary * matching, bool changesOK = false);\n    APPLE_KEXT_COMPATIBILITY_VIRTUAL\n    void startMatching( IOOptionBits options = 0 );\n    APPLE_KEXT_COMPATIBILITY_VIRTUAL\n    void doServiceMatch( IOOptionBits options );\n    APPLE_KEXT_COMPATIBILITY_VIRTUAL\n    void doServiceTerminate( IOOptionBits options );\n\nprivate:\n\n    bool matchPassive(OSDictionary * table, uint32_t options);\n    bool matchInternal(OSDictionary * table, uint32_t options, unsigned int * did);\n    static bool instanceMatch(const OSObject * entry, void * context);\n\n    static OSObject * copyExistingServices( OSDictionary * matching,\n\t\t IOOptionBits inState, IOOptionBits options = 0 );\n\n    static IONotifier * setNotification(\n\t\t\tconst OSSymbol * type, OSDictionary * matching,\n                    \tIOServiceMatchingNotificationHandler handler,\n                        void * target, void * ref,\n                        SInt32 priority = 0 );\n\n    static IONotifier * doInstallNotification(\n\t\t\tconst OSSymbol * type, OSDictionary * matching,\n\t\t\tIOServiceMatchingNotificationHandler handler,\n\t\t\tvoid * target, void * ref,\n\t\t\tSInt32 priority, OSIterator ** existing );\n\n    static bool syncNotificationHandler( void * target, void * ref,\n\t\t\tIOService * newService, IONotifier * notifier  );\n\n    APPLE_KEXT_COMPATIBILITY_VIRTUAL\n\tvoid deliverNotification( const OSSymbol * type,\n                            IOOptionBits orNewState, IOOptionBits andNewState );\n\n    bool invokeNotifer( class _IOServiceNotifier * notify );\n\n\tAPPLE_KEXT_COMPATIBILITY_VIRTUAL\n\tvoid unregisterAllInterest( void );\n\n\tAPPLE_KEXT_COMPATIBILITY_VIRTUAL\n    IOReturn waitForState( UInt32 mask, UInt32 value,\n\t\t\t\t mach_timespec_t * timeout = 0 );\n\n    IOReturn waitForState( UInt32 mask, UInt32 value, uint64_t timeout );\n\n    UInt32 _adjustBusy( SInt32 delta );\n\n    bool terminatePhase1( IOOptionBits options = 0 );\n    void scheduleTerminatePhase2( IOOptionBits options = 0 );\n    void scheduleStop( IOService * provider );\n    void scheduleFinalize( void );\n    static void terminateThread( void * arg, wait_result_t unused );\n    static void terminateWorker( IOOptionBits options );\n    static void actionWillTerminate( IOService * victim, IOOptionBits options, \n                                     OSArray * doPhase2List, void*, void * );\n    static void actionDidTerminate( IOService * victim, IOOptionBits options,\n                                    void *, void *, void *);\n    static void actionFinalize( IOService * victim, IOOptionBits options,\n                                void *, void *, void *);\n    static void actionStop( IOService * client, IOService * provider,\n                            void *, void *, void *);\n\n\tAPPLE_KEXT_COMPATIBILITY_VIRTUAL\n    IOReturn resolveInterrupt(IOService *nub, int source);\n\tAPPLE_KEXT_COMPATIBILITY_VIRTUAL\n    IOReturn lookupInterrupt(int source, bool resolve, IOInterruptController **interruptController);\n\n\n    /* power management */\npublic:\n\n/*! @function PMinit\n    @abstract Initializes power management for a driver.\n    @discussion <code>PMinit</code> allocates and initializes the power management instance variables, and it should be called before accessing those variables or calling the power management methods. This method should be called inside the driver's <code>start</code> routine and must be paired with a call to @link PMstop PMstop@/link.\n    Most calls to <code>PMinit</code> are followed by calls to @link joinPMtree joinPMtree@/link and @link registerPowerDriver registerPowerDriver@/link. */\n\n    virtual void PMinit( void );\n\n/*! @function PMstop\n    @abstract Stop power managing the driver.\n    @discussion Removes the driver from the power plane and stop its power management. This method is synchronous against any power management method invocations (e.g. <code>setPowerState</code> or <code>setAggressiveness</code>), so when this method returns it is guaranteed those power management methods will not be entered. Driver should not call any power management methods after this call.\n    Calling <code>PMstop</code> cleans up for the three power management initialization calls: @link PMinit PMinit@/link, @link joinPMtree joinPMtree@/link, and @link registerPowerDriver registerPowerDriver@/link. */\n\n    virtual void PMstop( void );\n\n/*! @function joinPMtree\n    @abstract Joins the driver into the power plane of the I/O Registry.\n    @discussion A driver uses this method to call its nub when initializing (usually in its <code>start</code> routine after calling @link PMinit PMinit@/link), to be attached into the power management hierarchy (i.e., the power plane). A driver usually calls this method on the driver for the device that provides it power (this is frequently the nub).    \n    Before this call returns, the caller will probably be called at @link setPowerParent setPowerParent@/link and @link setAggressiveness setAggressiveness@/link and possibly at @link addPowerChild addPowerChild@/link as it is added to the hierarchy. This method may be overridden by a nub subclass.\n    @param driver The driver to be added to the power plane, usually <code>this</code>. */\n\n    virtual void joinPMtree( IOService * driver );\n\n/*! @function registerPowerDriver\n    @abstract Registers a set of power states that the driver supports.\n    @discussion A driver defines its array of supported power states with power management in its power management initialization (its <code>start</code> routine). If successful, power management will call the driver to instruct it to change its power state through @link setPowerState setPowerState@/link.\n    Most drivers do not need to override <code>registerPowerDriver</code>. A nub may override <code>registerPowerDriver</code> if it needs to arrange its children in the power plane differently than the default placement, but this is uncommon.\n    @param controllingDriver A pointer to the calling driver, usually <code>this</code>.\n    @param powerStates A driver-defined array of power states that the driver and device support. Power states are defined in <code>pwr_mgt/IOPMpowerState.h</code>.\n    @param numberOfStates The number of power states in the array.\n    @result </code>IOPMNoErr</code>. All errors are logged via <code>kprintf</code>. */\n\n    virtual IOReturn registerPowerDriver(\n                        IOService *      controllingDriver,\n                        IOPMPowerState * powerStates,\n                        unsigned long    numberOfStates );\n\n/*! @function registerInterestedDriver\n    @abstract Allows an IOService object to register interest in the changing power state of a power-managed IOService object.\n    @discussion Call <code>registerInterestedDriver</code> on the IOService object you are interested in receiving power state messages from, and pass a pointer to the interested driver (<code>this</code>) as an argument.\n    The interested driver is retained until the power interest is removed by calling <code>deRegisterInterestedDriver</code>.\n    The interested driver should override @link powerStateWillChangeTo powerStateWillChangeTo@/link and @link powerStateDidChangeTo powerStateDidChangeTo@/link to receive these power change messages.\n    Interested drivers must acknowledge power changes in <code>powerStateWillChangeTo</code> or <code>powerStateDidChangeTo</code>, either via return value or later calls to @link acknowledgePowerChange acknowledgePowerChange@/link.\n    @param theDriver The driver of interest adds this pointer to the list of interested drivers. It informs drivers on this list before and after the power change.\n    @result Flags describing the capability of the device in its current power state. If the current power state is not yet defined, zero is returned (this is the case when the driver is not yet in the power domain hierarchy or hasn't fully registered with power management yet). */\n\n    APPLE_KEXT_COMPATIBILITY_VIRTUAL\n    IOPMPowerFlags registerInterestedDriver( IOService * theDriver );\n\n/*! @function deRegisterInterestedDriver\n    @abstract De-registers power state interest from a previous call to <code>registerInterestedDriver</code>.\n    @discussion The retain from <code>registerInterestedDriver</code> is released. This method is synchronous against any <code>powerStateWillChangeTo</code> or <code>powerStateDidChangeTo</code> call targeting the interested driver, so when this method returns it is guaranteed those interest handlers will not be entered.\n    Most drivers do not need to override <code>deRegisterInterestedDriver</code>.\n    @param theDriver The interested driver previously passed into @link registerInterestedDriver registerInterestedDriver@/link.\n    @result A return code that can be ignored by the caller. */\n\n    APPLE_KEXT_COMPATIBILITY_VIRTUAL\n    IOReturn deRegisterInterestedDriver( IOService * theDriver );\n\n/*! @function acknowledgePowerChange\n    @abstract Acknowledges an in-progress power state change.\n    @discussion When power management informs an interested object (via @link powerStateWillChangeTo powerStateWillChangeTo@/link or @link powerStateDidChangeTo powerStateDidChangeTo@/link), the object can return an immediate acknowledgement via a return code, or it may return an indication that it will acknowledge later by calling <code>acknowledgePowerChange</code>.\n    Interested objects are those that have registered as interested drivers, as well as power plane children of the power changing driver. A driver that calls @link registerInterestedDriver registerInterestedDriver@/link must call <code>acknowledgePowerChange</code>, or use an immediate acknowledgement return from <code>powerStateWillChangeTo</code> or <code>powerStateDidChangeTo</code>.\n    @param whichDriver A pointer to the calling driver. The called object tracks all interested parties to ensure that all have acknowledged the power state change.\n    @result <code>IOPMNoErr</code>. */\n\n    APPLE_KEXT_COMPATIBILITY_VIRTUAL\n    IOReturn acknowledgePowerChange( IOService * whichDriver );\n\n/*! @function acknowledgeSetPowerState\n    @abstract Acknowledges the belated completion of a driver's <code>setPowerState</code> power state change.\n    @discussion After power management instructs a driver to change its state via @link setPowerState setPowerState@/link, that driver must acknowledge the change when its device has completed its transition. The acknowledgement may be immediate, via a return code from <code>setPowerState</code>, or delayed, via this call to <code>acknowledgeSetPowerState</code>.\n    Any driver that does not return <code>kIOPMAckImplied</code> from its <code>setPowerState</code> implementation must later call <code>acknowledgeSetPowerState</code>.\n    @result <code>IOPMNoErr</code>. */\n\n    APPLE_KEXT_COMPATIBILITY_VIRTUAL\n    IOReturn acknowledgeSetPowerState( void );\n\n/*! @function requestPowerDomainState\n    @abstract Tells a driver to adjust its power state.\n    @discussion This call is handled internally by power management. It is not intended to be overridden or called by drivers. */\n\n    virtual IOReturn requestPowerDomainState(\n                        IOPMPowerFlags desiredState,\n                        IOPowerConnection * whichChild,\n                        unsigned long specificationFlags );\n\n/*! @function makeUsable\n    @abstract Requests that a device become usable.\n    @discussion This method is called when some client of a device (or the device's own driver) is asking for the device to become usable. Power management responds by telling the object upon which this method is called to change to its highest power state.\n    <code>makeUsable</code> is implemented using @link changePowerStateToPriv changePowerStateToPriv@/link. Subsequent requests for lower power, such as from <code>changePowerStateToPriv</code>, will pre-empt this request.\n    @result A return code that can be ignored by the caller. */\n\n    APPLE_KEXT_COMPATIBILITY_VIRTUAL\n    IOReturn makeUsable( void );\n\n/*! @function temporaryPowerClampOn\n    @abstract A driver calls this method to hold itself in the highest power state until it has children.\n    @discussion Use <code>temporaryPowerClampOn</code> to hold your driver in its highest power state while waiting for child devices to attach. After children have attached, the clamp is released and the device's power state is controlled by the children's requirements.\n    @result A return code that can be ignored by the caller. */\n\n    APPLE_KEXT_COMPATIBILITY_VIRTUAL\n    IOReturn temporaryPowerClampOn( void );\n\n/*! @function changePowerStateTo\n    @abstract Sets a driver's power state.\n    @discussion This function is one of several that are used to set a driver's power state. In most circumstances, however, you should call @link changePowerStateToPriv changePowerStateToPriv@/link instead.\n\tCalls to <code>changePowerStateTo</code>, <code>changePowerStateToPriv</code>, and a driver's power children all affect the power state of a driver. For legacy design reasons, they have overlapping functionality. Although you should call <code>changePowerStateToPriv</code> to change your device's power state, you might need to call <code>changePowerStateTo</code> in the following circumstances:\n    <ul><li>If a driver will be using <code>changePowerStateToPriv</code> to change its power state, it should call <code>changePowerStateTo(0)</code> in its <code>start</code> routine to eliminate the influence <code>changePowerStateTo</code> has on power state calculations.\n    <li>Call <code>changePowerStateTo</code> in conjunction with @link setIdleTimerPeriod setIdleTimerPeriod@/link and @link activityTickle activityTickle@/link to idle a driver into a low power state. For a driver with 3 power states, for example, <code>changePowerStateTo(1)</code> sets a minimum level of power state 1, such that the idle timer period may not set your device's power any lower than state 1.</ul>\n    @param ordinal The number of the desired power state in the power state array. \n    @result A return code that can be ignored by the caller. */\n\n    APPLE_KEXT_COMPATIBILITY_VIRTUAL\n    IOReturn changePowerStateTo( unsigned long ordinal );\n\n/*! @function currentCapability\n    @abstract Finds out the capability of a device's current power state.\n    @result A copy of the <code>capabilityFlags</code> field for the current power state in the power state array. */\n\n    APPLE_KEXT_COMPATIBILITY_VIRTUAL\n    IOPMPowerFlags currentCapability( void );\n\n/*! @function currentPowerConsumption\n    @abstract Finds out the current power consumption of a device.\n    @discussion Most Mac OS X power managed drivers do not report their power consumption via the <code>staticPower</code> field. Thus this call will not accurately reflect power consumption for most drivers.\n    @result A copy of the <code>staticPower</code> field for the current power state in the power state array. */\n\n    APPLE_KEXT_COMPATIBILITY_VIRTUAL\n    unsigned long currentPowerConsumption( void );\n\n/*! @function activityTickle\n    @abstract Informs power management when a power-managed device is in use, so that power management can track when it is idle and adjust its power state accordingly.\n    @discussion The <code>activityTickle</code> method is provided for objects in the system (or for the driver itself) to tell a driver that its device is being used.\n    The IOService superclass can manage idleness determination with a simple idle timer mechanism and this <code>activityTickle</code> call. To start this up, the driver calls its superclass's <code>setIdleTimerPeriod</code>. This starts a timer for the time interval specified in the call. When the timer expires, the superclass checks to see if there has been any activity since the last timer expiration. (It checks to see if <code>activityTickle</code> has been called). If there has been activity, it restarts the timer, and this process continues. When the timer expires, and there has been no device activity, the superclass lowers the device power state to the next lower state. This can continue until the device is in state zero.\n    After the device has been powered down by at least one power state, a subsequent call to <code>activityTickle</code> causes the device to be switched to a higher state required for the activity.    \n    If the driver is managing the idleness determination totally on its own, the value of the <code>type</code> parameter should be <code>kIOPMSubclassPolicy</code>, and the driver should override the <code>activityTickle</code> method. The superclass IOService implementation of <code>activityTickle</code> does nothing with the <code>kIOPMSubclassPolicy</code> argument.\n    @param type When <code>type</code> is <code>kIOPMSubclassPolicy</code>, <code>activityTickle</code> is not handled in IOService and should be intercepted by the subclass. When <code>type</code> is <code>kIOPMSuperclassPolicy1</code>, an activity flag is set and the device state is checked. If the device has been powered down, it is powered up again.\n    @param stateNumber When <code>type</code> is <code>kIOPMSuperclassPolicy1</code>, <code>stateNumber</code> contains the desired power state ordinal for the activity. If the device is in a lower state, the superclass will switch it to this state. This is for devices that can handle some accesses in lower power states; the device is powered up only as far as it needs to be for the activity.\n    @result When <code>type</code> is <code>kIOPMSuperclassPolicy1</code>, the superclass returns <code>true</code> if the device is currently in the state specified by <code>stateNumber</code>. If the device is in a lower state and must be powered up, the superclass returns <code>false</code>; in this case the superclass will initiate a power change to power the device up. */\n\n    virtual bool activityTickle(\n                        unsigned long type,\n                        unsigned long stateNumber = 0 );\n\n/*! @function setAggressiveness\n    @abstract Broadcasts an aggressiveness factor from the parent of a driver to the driver.\n    @discussion Implement <code>setAggressiveness</code> to receive a notification when an \"aggressiveness Aggressiveness factors are a loose set of power management variables that contain values for system sleep timeout, display sleep timeout, whether the system is on battery or AC, and other power management features. There are several aggressiveness factors that can be broadcast and a driver may take action on whichever factors apply to it.\n    A driver that has joined the power plane via @link joinPMtree joinPMtree@/link will receive <code>setAgressiveness</code> calls when aggressiveness factors change.\n    A driver may override this call if it needs to do something with the new factor (such as change its idle timeout). If overridden, the driver must  call its superclass's <code>setAgressiveness</code> method in its own <code>setAgressiveness</code> implementation.\n    Most drivers do not need to implement <code>setAgressiveness</code>.\n    @param type The aggressiveness factor type, such as <code>kPMMinutesToDim</code>, <code>kPMMinutesToSpinDown</code>, <code>kPMMinutesToSleep</code>, and <code>kPMPowerSource</code>. (Aggressiveness factors are defined in <code>pwr_mgt/IOPM.h</code>.)\n    @param newLevel The aggressiveness factor's new value.\n    @result <code>IOPMNoErr</code>. */\n\n    virtual IOReturn setAggressiveness(\n                        unsigned long type,\n                        unsigned long newLevel );\n\n/*! @function getAggressiveness\n    @abstract Returns the current aggressiveness value for the given type.\n    @param type The aggressiveness factor to query.\n    @param currentLevel Upon successful return, contains the value of aggressiveness factor <code>type</code>.\n    @result <code>kIOReturnSuccess</code> upon success; an I/O Kit error code otherwise. */\n\n    virtual IOReturn getAggressiveness(\n                        unsigned long type,\n                        unsigned long * currentLevel );\n\n#ifndef __LP64__\n/*! @function systemWake\n    @abstract Tells every driver in the power plane that the system is waking up.\n    @discussion This call is handled internally by power management. It is not intended to be overridden or called by drivers. */\n\n    virtual IOReturn systemWake( void )\n    APPLE_KEXT_DEPRECATED;\n\n/*! @function temperatureCriticalForZone\n    @abstract Alerts a driver to a critical temperature in some thermal zone.\n    @discussion This call is unused by power management. It is not intended to be called or overridden. */\n\n    virtual IOReturn temperatureCriticalForZone( IOService * whichZone )\n    APPLE_KEXT_DEPRECATED;\n\n/*! @function youAreRoot\n    @abstract Informs power management which IOService object is the power plane root.\n    @discussion This call is handled internally by power management. It is not intended to be overridden or called by drivers. */\n\n    virtual IOReturn youAreRoot( void )\n    APPLE_KEXT_DEPRECATED;\n\n/*! @function setPowerParent\n    @abstract This call is handled internally by power management. It is not intended to be overridden or called by drivers. */\n\n    virtual IOReturn setPowerParent(\n                        IOPowerConnection * parent,\n                        bool stateKnown,\n                        IOPMPowerFlags currentState )\n    APPLE_KEXT_DEPRECATED;\n#endif /* !__LP64__ */\n\n/*! @function addPowerChild\n    @abstract Informs a driver that it has a new child.\n    @discussion The Platform Expert uses this method to call a driver and introduce it to a new child. This call is handled internally by power management. It is not intended to be overridden or called by drivers.\n    @param theChild A pointer to the child IOService object. */\n\n    virtual IOReturn addPowerChild( IOService * theChild );\n\n/*! @function removePowerChild\n    @abstract Informs a power managed driver that one of its power plane childen is disappearing.\n    @discussion This call is handled internally by power management. It is not intended to be overridden or called by drivers. */\n\n    virtual IOReturn removePowerChild( IOPowerConnection * theChild );\n\n#ifndef __LP64__\n/*! @function command_received\n    @discussion This call is handled internally by power management. It is not intended to be overridden or called by drivers. */\n\n    virtual void command_received( void *, void * , void * , void * );\n#endif\n\n/*! @function start_PM_idle_timer\n    @discussion This call is handled internally by power management. It is not intended to be overridden or called by drivers. */\n\n    APPLE_KEXT_COMPATIBILITY_VIRTUAL\n    void start_PM_idle_timer( void );\n\n#ifndef __LP64__\n/*! @function PM_idle_timer_expiration\n    @discussion This call is handled internally by power management. It is not intended to be overridden or called by drivers. */\n\n    virtual void PM_idle_timer_expiration( void )\n    APPLE_KEXT_DEPRECATED;\n\n/*! @function PM_Clamp_Timer_Expired\n    @discussion This call is handled internally by power management. It is not intended to be overridden or called by drivers. */\n\n    virtual void PM_Clamp_Timer_Expired( void )\n    APPLE_KEXT_DEPRECATED;\n#endif\n\n/*! @function setIdleTimerPeriod\n    @abstract Sets or changes the idle timer period.\n    @discussion A driver using the idleness determination provided by IOService calls its superclass with this method to set or change the idle timer period. See @link activityTickle activityTickle@/link for a description of this type of idleness determination.\n    @param period The desired idle timer period in seconds.\n    @result <code>kIOReturnSuccess</code> upon success; an I/O Kit error code otherwise. */\n\n    virtual IOReturn setIdleTimerPeriod( unsigned long );\n\n#ifndef __LP64__\n/*! @function getPMworkloop\n    @abstract Returns a pointer to the system-wide power management work loop.\n    @availability Deprecated in Mac OS X version 10.6.\n    @discussion Most drivers should create their own work loops to synchronize their code; drivers should not run arbitrary code on the power management work loop. */\n\n    virtual IOWorkLoop * getPMworkloop( void )\n    APPLE_KEXT_DEPRECATED;\n#endif\n\n/*! @function getPowerState\n    @abstract Determines a device's power state.\n    @discussion A device's \"current power state\" is updated at the end of each power state transition (e.g. transition from state 1 to state 0, or state 0 to state 2). This transition includes the time spent powering on or off any power plane children. Thus, if a child calls <code>getPowerState</code> on its power parent during system wake from sleep, the call will return the index to the device's off state rather than its on state.\n    @result The current power state's index into the device's power state array. */\n\n    UInt32 getPowerState( void );\n\n/*! @function setPowerState\n    @abstract Requests a power managed driver to change the power state of its device.\n    @discussion A power managed driver must override <code>setPowerState</code> to take part in system power management. After a driver is registered with power management, the system uses <code>setPowerState</code> to power the device off and on for system sleep and wake.\n    Calls to @link PMinit PMinit@/link and @link registerPowerDriver registerPowerDriver@/link enable power management to change a device's power state using <code>setPowerState</code>. <code>setPowerState</code> is called in a clean and separate thread context.\n    @param powerStateOrdinal The number in the power state array of the state the driver is being instructed to switch to. \n    @param whatDevice A pointer to the power management object which registered to manage power for this device. In most cases, <code>whatDevice</code> will be equal to your driver's own <code>this</code> pointer.\n    @result The driver must return <code>IOPMAckImplied</code> if it has complied with the request when it returns. Otherwise if it has started the process of changing power state but not finished it, the driver should return a number of microseconds which is an upper limit of the time it will need to finish. Then, when it has completed the power switch, it should call @link acknowledgeSetPowerState acknowledgeSetPowerState@/link. */\n\n    virtual IOReturn setPowerState(\n                        unsigned long powerStateOrdinal,\n                        IOService *   whatDevice );\n\n#ifndef __LP64__\n/*! @function clampPowerOn\n    @abstract Deprecated. Do not use. */\n\n    virtual void clampPowerOn( unsigned long duration );\n#endif\n\n/*! @function maxCapabilityForDomainState\n    @abstract Determines a driver's highest power state possible for a given power domain state.\n    @discussion This happens when the power domain is changing state and power management needs to determine which state the device is capable of in the new domain state.\n    Most drivers do not need to implement this method, and can rely upon the default IOService implementation. The IOService implementation scans the power state array looking for the highest state whose <code>inputPowerRequirement</code> field exactly matches the value of the <code>domainState</code> parameter. If more intelligent determination is required, the driver itself should implement the method and override the superclass's implementation.\n    @param domainState Flags that describe the character of \"domain power\"; they represent the <code>outputPowerCharacter</code> field of a state in the power domain's power state array.\n    @result A state number. */\n\n    virtual unsigned long maxCapabilityForDomainState( IOPMPowerFlags domainState );\n\n/*! @function initialPowerStateForDomainState\n    @abstract Determines which power state a device is in, given the current power domain state.\n    @discussion Power management calls this method once, when the driver is initializing power management.\n    Most drivers do not need to implement this method, and can rely upon the default IOService implementation. The IOService implementation scans the power state array looking for the highest state whose <code>inputPowerRequirement</code> field exactly matches the value of the <code>domainState</code> parameter. If more intelligent determination is required, the power managed driver should implement the method and override the superclass's implementation.\n    @param domainState Flags that describe the character of \"domain power\"; they represent the <code>outputPowerCharacter</code> field of a state in the power domain's power state array.\n    @result A state number. */\n\n    virtual unsigned long initialPowerStateForDomainState( IOPMPowerFlags domainState );\n\n/*! @function powerStateForDomainState\n    @abstract Determines what power state the device would be in for a given power domain state.\n    @discussion Power management calls a driver with this method to find out what power state the device would be in for a given power domain state. This happens when the power domain is changing state and power management needs to determine the effect of the change.\n    Most drivers do not need to implement this method, and can rely upon the default IOService implementation. The IOService implementation scans the power state array looking for the highest state whose <code>inputPowerRequirement</code> field exactly matches the value of the <code>domainState</code> parameter. If more intelligent determination is required, the power managed driver should implement the method and override the superclass's implementation.\n    @param domainState Flags that describe the character of \"domain power\"; they represent the <code>outputPowerCharacter</code> field of a state in the power domain's power state array.\n    @result A state number. */\n\n    virtual unsigned long powerStateForDomainState( IOPMPowerFlags domainState );\n\n/*! @function powerStateWillChangeTo\n    @abstract Informs interested parties that a device is about to change its power state.\n    @discussion Power management informs interested parties that a device is about to change to a different power state. Interested parties are those that have registered for this notification via @link registerInterestedDriver registerInterestedDriver@/link. If you have called <code>registerInterestedDriver</code> on a power managed driver, you must implement <code>powerStateWillChangeTo</code> and @link powerStateDidChangeTo powerStateDidChangeTo@/link to receive the notifications.\n    <code>powerStateWillChangeTo</code> is called in a clean and separate thread context. <code>powerStateWillChangeTo</code> is called before a power state transition takes place; <code>powerStateDidChangeTo</code> is called after the transition has completed.\n    @param capabilities Flags that describe the capability of the device in the new power state (they come from the <code>capabilityFlags</code> field of the new state in the power state array).\n\t@param stateNumber The number of the state in the state array that the device is switching to.\n    @param whatDevice A pointer to the driver that is changing. It can be used by a driver that is receiving power state change notifications for multiple devices to distinguish between them.\n    @result The driver returns <code>IOPMAckImplied</code> if it has prepared for the power change when it returns. If it has started preparing but not finished, it should return a number of microseconds which is an upper limit of the time it will need to finish preparing. Then, when it has completed its preparations, it should call @link acknowledgePowerChange acknowledgePowerChange@/link. */\n\n    virtual IOReturn powerStateWillChangeTo(\n                        IOPMPowerFlags  capabilities,\n                        unsigned long   stateNumber,\n                        IOService *     whatDevice );\n\n/*! @function powerStateDidChangeTo\n    @abstract Informs interested parties that a device has changed to a different power state.\n    @discussion Power management informs interested parties that a device has changed to a different power state. Interested parties are those that have registered for this notification via @link registerInterestedDriver registerInterestedDriver@/link. If you have called <code>registerInterestedDriver</code> on a power managed driver, you must implemnt @link powerStateWillChangeTo powerStateWillChangeTo@/link and <code>powerStateDidChangeTo</code> to receive the notifications.\n    <code>powerStateDidChangeTo</code> is called in a clean and separate thread context. <code>powerStateWillChangeTo</code> is called before a power state transition takes place; <code>powerStateDidChangeTo</code> is called after the transition has completed.\n    @param capabilities Flags that describe the capability of the device in the new power state (they come from the <code>capabilityFlags</code> field of the new state in the power state array).\n\t@param stateNumber The number of the state in the state array that the device is switching to.\n    @param whatDevice A pointer to the driver that is changing. It can be used by a driver that is receiving power state change notifications for multiple devices to distinguish between them.\n    @result The driver returns <code>IOPMAckImplied</code> if it has prepared for the power change when it returns. If it has started preparing but not finished, it should return a number of microseconds which is an upper limit of the time it will need to finish preparing. Then, when it has completed its preparations, it should call @link acknowledgePowerChange acknowledgePowerChange@/link. */\n\n    virtual IOReturn powerStateDidChangeTo(\n                        IOPMPowerFlags  capabilities,\n                        unsigned long   stateNumber,\n                        IOService *     whatDevice );\n\n#ifndef __LP64__\n/*! @function didYouWakeSystem\n    @abstract Asks a driver if its device is the one that just woke the system from sleep.\n    @availability Deprecated in Mac OS X version 10.6.\n    @discussion Power management calls a power managed driver with this method to ask if its device is the one that just woke the system from sleep. If a device is capable of waking the system from sleep, its driver should implement <code>didYouWakeSystem</code> and return <code>true</code> if its device was responsible for waking the system.\n    @result <code>true</code> if the driver's device woke the system and <code>false</code> otherwise. */\n\n    virtual bool didYouWakeSystem( void )\n    APPLE_KEXT_DEPRECATED;\n\n/*! @function newTemperature\n    @abstract Tells a power managed driver that the temperature in the thermal zone has changed.\n    @discussion This call is unused by power management. It is not intended to be called or overridden. */\n\n    virtual IOReturn newTemperature( long currentTemp, IOService * whichZone )\n    APPLE_KEXT_DEPRECATED;\n#endif\n\n    virtual bool askChangeDown( unsigned long );\n    virtual bool tellChangeDown( unsigned long );\n    virtual void tellNoChangeDown ( unsigned long );\n    virtual void tellChangeUp( unsigned long );\n    virtual IOReturn allowPowerChange( unsigned long refcon );\n    virtual IOReturn cancelPowerChange( unsigned long refcon );\n\nprotected:\n/*! @function changePowerStateToPriv \n    @abstract Tells a driver's superclass to change the power state of its device.\n    @discussion A driver uses this method to tell its superclass to change the power state of the device. This is the recommended way to change the power state of a device.\n    Three things affect driver power state: @link changePowerStateTo changePowerStateTo@/link, <code>changePowerStateToPriv</code>, and the desires of the driver's power plane children. Power management puts the device into the maximum state governed by those three entities.\n    Drivers may eliminate the influence of the <code>changePowerStateTo</code> method on power state one of two ways. See @link powerOverrideOnPriv powerOverrideOnPriv@/link to ignore the method's influence, or call <code>changePowerStateTo(0)</code> in the driver's <code>start</code> routine to remove the <code>changePowerStateTo</code> method's power request.\n    @param ordinal The number of the desired power state in the power state array.\n    @result A return code that can be ignored by the caller. */\n\n    IOReturn changePowerStateToPriv( unsigned long ordinal );\n\n/*! @function powerOverrideOnPriv\n    @abstract Allows a driver to ignore its children's power management requests and only use changePowerStateToPriv to define its own power state.\n    @discussion Power management normally keeps a device at the highest state required by its requests via @link changePowerStateTo changePowerStateTo@/link, @link changePowerStateToPriv changePowerStateToPriv@/link, and its children. However, a driver may ensure a lower power state than otherwise required by itself and its children using <code>powerOverrideOnPriv</code>. When the override is on, power management keeps the device's power state in the state specified by <code>changePowerStateToPriv</code>. Turning on the override will initiate a power change if the driver's <code>changePowerStateToPriv</code> desired power state is different from the maximum of the <code>changePowerStateTo</code> desired power state and the children's desires.\n    @result A return code that can be ignored by the caller. */\n\n    IOReturn powerOverrideOnPriv( void );\n\n/*! @function powerOverrideOffPriv\n    @abstract Allows a driver to disable a power override.\n    @discussion When a driver has enabled an override via @link powerOverrideOnPriv powerOverrideOnPriv@/link, it can disable it again by calling this method in its superclass. Disabling the override reverts to the default algorithm for determining a device's power state. The superclass will now keep the device at the highest state required by <code>changePowerStateTo</code>, <code>changePowerStateToPriv</code>, and its children. Turning off the override will initiate a power change if the driver's desired power state is different from the maximum of the power managed driver's desire and the children's desires.\n    @result A return code that can be ignored by the caller. */\n\n    IOReturn powerOverrideOffPriv( void );\n\n/*! @function powerChangeDone\n    @abstract Tells a driver when a power state change is complete.\n    @discussion Power management uses this method to inform a driver when a power change is completely done, when all interested parties have acknowledged the @link powerStateDidChangeTo powerStateDidChangeTo@/link call. The default implementation of this method is null; the method is meant to be overridden by subclassed power managed drivers. A driver should use this method to find out if a power change it initiated is complete.\n    @param stateNumber The number of the state in the state array that the device has switched from. */\n\n    virtual void powerChangeDone( unsigned long stateNumber );\n};\n\n#endif /* ! _IOKIT_IOSERVICE_H */\n"
  },
  {
    "path": "EFI/CLOVER/kexts/Other/Lilu_v1.3.7.kext/Contents/Resources/Library/plugin_start.cpp",
    "content": "//\n//  plugin_start.cpp\n//  Lilu\n//\n//  Copyright © 2016-2017 vit9696. All rights reserved.\n//\n\n#include <Headers/plugin_start.hpp>\n#include <Headers/kern_api.hpp>\n#include <Headers/kern_util.hpp>\n\n#ifndef LILU_CUSTOM_KMOD_INIT\nbool ADDPR(startSuccess) = false;\n#else\n// Workaround custom kmod code and enable by default\nbool ADDPR(startSuccess) = true;\n#endif\n\nbool ADDPR(debugEnabled) = false;\nuint32_t ADDPR(debugPrintDelay) = 0;\n\n#if !defined(LILU_CUSTOM_KMOD_INIT) || !defined(LILU_CUSTOM_IOKIT_INIT)\n\nstatic const char kextVersion[] {\n#ifdef DEBUG\n\t'D', 'B', 'G', '-',\n#else\n\t'R', 'E', 'L', '-',\n#endif\n\txStringify(MODULE_VERSION)[0], xStringify(MODULE_VERSION)[2], xStringify(MODULE_VERSION)[4], '-',\n\tgetBuildYear<0>(), getBuildYear<1>(), getBuildYear<2>(), getBuildYear<3>(), '-',\n\tgetBuildMonth<0>(), getBuildMonth<1>(), '-', getBuildDay<0>(), getBuildDay<1>(), '\\0'\n};\n\n#endif\n\n#ifndef LILU_CUSTOM_IOKIT_INIT\n\nOSDefineMetaClassAndStructors(PRODUCT_NAME, IOService)\n\nPRODUCT_NAME *ADDPR(selfInstance) = nullptr;\n\nIOService *PRODUCT_NAME::probe(IOService *provider, SInt32 *score) {\n\tADDPR(selfInstance) = this;\n\tsetProperty(\"VersionInfo\", kextVersion);\n\tauto service = IOService::probe(provider, score);\n\treturn ADDPR(startSuccess) ? service : nullptr;\n}\n\nbool PRODUCT_NAME::start(IOService *provider) {\n\tADDPR(selfInstance) = this;\n\tif (!IOService::start(provider)) {\n\t\tSYSLOG(\"init\", \"failed to start the parent\");\n\t\treturn false;\n\t}\n\t\n\treturn ADDPR(startSuccess);\n}\n\nvoid PRODUCT_NAME::stop(IOService *provider) {\n\tADDPR(selfInstance) = nullptr;\n\tIOService::stop(provider);\n}\n\n#endif /* LILU_CUSTOM_IOKIT_INIT */\n\n#ifndef LILU_CUSTOM_KMOD_INIT\n\nEXPORT extern \"C\" kern_return_t ADDPR(kern_start)(kmod_info_t *, void *) {\n\t// This is an ugly hack necessary on some systems where buffering kills most of debug output.\n\tPE_parse_boot_argn(\"liludelay\", &ADDPR(debugPrintDelay), sizeof(ADDPR(debugPrintDelay)));\n\n\tauto error = lilu.requestAccess();\n\tif (error == LiluAPI::Error::NoError) {\n\t\terror = lilu.shouldLoad(ADDPR(config).product, ADDPR(config).version, ADDPR(config).runmode, ADDPR(config).disableArg, ADDPR(config).disableArgNum,\n\t\t\t\t\t\t\t\tADDPR(config).debugArg, ADDPR(config).debugArgNum, ADDPR(config).betaArg, ADDPR(config).betaArgNum, ADDPR(config).minKernel,\n\t\t\t\t\t\t\t\tADDPR(config).maxKernel, ADDPR(debugEnabled));\n\t\t\n\t\tif (error == LiluAPI::Error::NoError) {\n\t\t\tDBGLOG(\"init\", \"%s bootstrap %s\", xStringify(PRODUCT_NAME), kextVersion);\n\t\t\t(void)kextVersion;\n\t\t\tADDPR(startSuccess) = true;\n\t\t\tADDPR(config).pluginStart();\n\t\t} else {\n\t\t\tSYSLOG(\"init\", \"parent said we should not continue %d\", error);\n\t\t}\n\t\t\n\t\tlilu.releaseAccess();\n\t} else {\n\t\tSYSLOG(\"init\", \"failed to call parent %d\", error);\n\t}\n\n\t// Report success but actually do not start and let I/O Kit unload us.\n\t// This works better and increases boot speed in some cases.\n\treturn KERN_SUCCESS;\n}\n\nEXPORT extern \"C\" kern_return_t ADDPR(kern_stop)(kmod_info_t *, void *) {\n\t// It is not safe to unload Lilu plugins unless they were disabled!\n\treturn ADDPR(startSuccess) ? KERN_FAILURE : KERN_SUCCESS;\n}\n\n#endif /* LILU_CUSTOM_KMOD_INIT */\n"
  },
  {
    "path": "EFI/CLOVER/kexts/Other/Lilu_v1.3.7.kext/Contents/Resources/Library/security/_label.h",
    "content": "/*\n * Copyright (c) 2007 Apple Inc. All rights reserved.\n *\n * @APPLE_OSREFERENCE_LICENSE_HEADER_START@\n * \n * This file contains Original Code and/or Modifications of Original Code\n * as defined in and that are subject to the Apple Public Source License\n * Version 2.0 (the 'License'). You may not use this file except in\n * compliance with the License. The rights granted to you under the License\n * may not be used to create, or enable the creation or redistribution of,\n * unlawful or unlicensed copies of an Apple operating system, or to\n * circumvent, violate, or enable the circumvention or violation of, any\n * terms of an Apple operating system software license agreement.\n * \n * Please obtain a copy of the License at\n * http://www.opensource.apple.com/apsl/ and read it before using this file.\n * \n * The Original Code and all software distributed under the License are\n * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER\n * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,\n * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.\n * Please see the License for the specific language governing rights and\n * limitations under the License.\n * \n * @APPLE_OSREFERENCE_LICENSE_HEADER_END@\n */\n/*-\n * Copyright (c) 1999, 2000, 2001, 2002 Robert N. M. Watson\n * Copyright (c) 2001, 2002 Networks Associates Technology, Inc.\n * Copyright (c) 2005 SPARTA, Inc.\n * All rights reserved.\n *\n * This software was developed by Robert Watson for the TrustedBSD Project.\n *\n * This software was developed for the FreeBSD Project in part by Network\n * Associates Laboratories, the Security Research Division of Network\n * Associates, Inc. under DARPA/SPAWAR contract N66001-01-C-8035 (\"CBOSS\"),\n * as part of the DARPA CHATS research program.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions\n * are met:\n * 1. Redistributions of source code must retain the above copyright\n *    notice, this list of conditions and the following disclaimer.\n * 2. Redistributions in binary form must reproduce the above copyright\n *    notice, this list of conditions and the following disclaimer in the\n *    documentation and/or other materials provided with the distribution.\n *\n * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND\n * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS\n * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)\n * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT\n * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY\n * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF\n * SUCH DAMAGE.\n *\n * $FreeBSD: src/sys/sys/_label.h,v 1.4 2003/05/08 19:49:42 rwatson Exp $\n */\n#ifndef _SECURITY_LABEL_H_\n#define\t_SECURITY_LABEL_H_\n\n/*\n * XXXMAC: This shouldn't be exported to userland, but is because of ucred.h\n * and various other messes.\n */\n#if CONFIG_EMBEDDED\n#define\tMAC_MAX_SLOTS\t3\n#else\n#define\tMAC_MAX_SLOTS\t7\n#endif\n\n#define\tMAC_FLAG_INITIALIZED\t0x0000001\t/* Is initialized for use. */\n\nstruct label {\n\tint\tl_flags;\n\tunion {\n\t\tvoid\t*l_ptr;\n\t\tlong\t l_long;\n\t}\tl_perpolicy[MAC_MAX_SLOTS];\n};\n\n#endif /* !_SECURITY_LABEL_H_ */\n"
  },
  {
    "path": "EFI/CLOVER/kexts/Other/Lilu_v1.3.7.kext/Contents/Resources/Library/security/mac_framework.h",
    "content": "/*\n * Copyright (c) 2007 Apple Inc. All rights reserved.\n *\n * @APPLE_OSREFERENCE_LICENSE_HEADER_START@\n *\n * This file contains Original Code and/or Modifications of Original Code\n * as defined in and that are subject to the Apple Public Source License\n * Version 2.0 (the 'License'). You may not use this file except in\n * compliance with the License. The rights granted to you under the License\n * may not be used to create, or enable the creation or redistribution of,\n * unlawful or unlicensed copies of an Apple operating system, or to\n * circumvent, violate, or enable the circumvention or violation of, any\n * terms of an Apple operating system software license agreement.\n *\n * Please obtain a copy of the License at\n * http://www.opensource.apple.com/apsl/ and read it before using this file.\n *\n * The Original Code and all software distributed under the License are\n * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER\n * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,\n * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.\n * Please see the License for the specific language governing rights and\n * limitations under the License.\n *\n * @APPLE_OSREFERENCE_LICENSE_HEADER_END@\n */\n/*-\n * Copyright (c) 1999-2002 Robert N. M. Watson\n * Copyright (c) 2001-2005 Networks Associates Technology, Inc.\n * Copyright (c) 2005-2007 SPARTA, Inc.\n * All rights reserved.\n *\n * This software was developed by Robert Watson for the TrustedBSD Project.\n *\n * This software was developed for the FreeBSD Project in part by Network\n * Associates Laboratories, the Security Research Division of Network\n * Associates, Inc. under DARPA/SPAWAR contract N66001-01-C-8035 (\"CBOSS\"),\n * as part of the DARPA CHATS research program.\n *\n * This software was enhanced by SPARTA ISSO under SPAWAR contract\n * N66001-04-C-6019 (\"SEFOS\").\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions\n * are met:\n * 1. Redistributions of source code must retain the above copyright\n *    notice, this list of conditions and the following disclaimer.\n * 2. Redistributions in binary form must reproduce the above copyright\n *    notice, this list of conditions and the following disclaimer in the\n *    documentation and/or other materials provided with the distribution.\n *\n * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND\n * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS\n * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)\n * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT\n * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY\n * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF\n * SUCH DAMAGE.\n *\n * $FreeBSD: src/sys/sys/mac.h,v 1.40 2003/04/18 19:57:37 rwatson Exp $\n *\n */\n/*\n * Kernel interface for Mandatory Access Control -- how kernel services\n * interact with the TrustedBSD MAC Framework.\n */\n\n#ifndef _SECURITY_MAC_FRAMEWORK_H_\n#define\t_SECURITY_MAC_FRAMEWORK_H_\n\n//#warning \"MAC policy is not KPI, see Technical Q&A QA1574, this header will be removed in next version\"\n\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\nstruct attrlist;\nstruct auditinfo;\nstruct bpf_d;\nstruct componentname;\nstruct cs_blob;\nstruct devnode;\nstruct exception_action;\nstruct flock;\nstruct fdescnode;\nstruct fileglob;\nstruct fileproc;\nstruct ifnet;\nstruct ifreq;\nstruct image_params;\nstruct inpcb;\nstruct ipc_port;\nstruct ipq;\nstruct knote;\nstruct m_tag;\nstruct mac;\nstruct mac_module_data;\nstruct mbuf;\nstruct msg;\nstruct msqid_kernel;\nstruct mount;\nstruct pipe;\nstruct proc;\nstruct pseminfo;\nstruct pshminfo;\nstruct semid_kernel;\nstruct shmid_kernel;\nstruct sockaddr;\nstruct sockopt;\nstruct socket;\nstruct task;\nstruct thread;\nstruct timespec;\nstruct tty;\nstruct ucred;\nstruct uio;\nstruct uthread;\nstruct vfs_attr;\nstruct vfs_context;\nstruct vnode;\nstruct vnode_attr;\nstruct vop_setlabel_args;\n\n#include <sys/kauth.h>\n#include <sys/kernel_types.h>\n\n#if CONFIG_MACF\n\n#ifndef __IOKIT_PORTS_DEFINED__\n#define __IOKIT_PORTS_DEFINED__\n#ifdef __cplusplus\nclass OSObject;\ntypedef OSObject *io_object_t;\n#else\nstruct OSObject;\ntypedef struct OSObject *io_object_t;\n#endif\n#endif /* __IOKIT_PORTS_DEFINED__ */\n\n/*@ macros */\n#define\tVNODE_LABEL_CREATE\t1\n\n/*@ === */\nint\tmac_audit_check_postselect(kauth_cred_t cred, unsigned short syscode,\n\t    void *args, int error, int retval, int mac_forced);\nint\tmac_audit_check_preselect(kauth_cred_t cred, unsigned short syscode,\n\t    void *args);\nint\tmac_bpfdesc_check_receive(struct bpf_d *bpf_d, struct ifnet *ifp);\nvoid\tmac_bpfdesc_label_destroy(struct bpf_d *bpf_d);\nvoid\tmac_bpfdesc_label_init(struct bpf_d *bpf_d);\nvoid\tmac_bpfdesc_label_associate(kauth_cred_t cred, struct bpf_d *bpf_d);\nint\tmac_cred_check_label_update(kauth_cred_t cred,\n\t    struct label *newlabel);\nint\tmac_cred_check_label_update_execve(vfs_context_t ctx,\n\t    struct vnode *vp, off_t offset, struct vnode *scriptvp,\n\t    struct label *scriptvnodelabel, struct label *execlabel,\n\t    proc_t proc, void *macextensions);\nint\tmac_cred_check_visible(kauth_cred_t u1, kauth_cred_t u2);\nstruct label\t*mac_cred_label_alloc(void);\nvoid\tmac_cred_label_associate(kauth_cred_t cred_parent,\n\t    kauth_cred_t cred_child);\nvoid\tmac_cred_label_associate_fork(kauth_cred_t cred, proc_t child);\nvoid\tmac_cred_label_associate_kernel(kauth_cred_t cred);\nvoid\tmac_cred_label_associate_user(kauth_cred_t cred);\nvoid\tmac_cred_label_destroy(kauth_cred_t cred);\nint\tmac_cred_label_externalize_audit(proc_t p, struct mac *mac);\nvoid\tmac_cred_label_free(struct label *label);\nvoid\tmac_cred_label_init(kauth_cred_t cred);\nint\tmac_cred_label_compare(struct label *a, struct label *b);\nvoid\tmac_cred_label_update(kauth_cred_t cred, struct label *newlabel);\nvoid\tmac_cred_label_update_execve(vfs_context_t ctx, kauth_cred_t newcred,\n\t    struct vnode *vp, off_t offset, struct vnode *scriptvp,\n\t    struct label *scriptvnodelabel, struct label *execlabel, u_int *csflags,\n\t    void *macextensions, int *disjoint, int *labelupdateerror);\nvoid\tmac_devfs_label_associate_device(dev_t dev, struct devnode *de,\n\t    const char *fullpath);\nvoid\tmac_devfs_label_associate_directory(const char *dirname, int dirnamelen,\n\t    struct devnode *de, const char *fullpath);\nvoid\tmac_devfs_label_copy(struct label *, struct label *label);\nvoid\tmac_devfs_label_destroy(struct devnode *de);\nvoid\tmac_devfs_label_init(struct devnode *de);\nvoid\tmac_devfs_label_update(struct mount *mp, struct devnode *de,\n\t    struct vnode *vp);\nint\tmac_execve_enter(user_addr_t mac_p, struct image_params *imgp);\nint\tmac_file_check_change_offset(kauth_cred_t cred, struct fileglob *fg);\nint\tmac_file_check_create(kauth_cred_t cred);\nint\tmac_file_check_dup(kauth_cred_t cred, struct fileglob *fg, int newfd);\nint\tmac_file_check_fcntl(kauth_cred_t cred, struct fileglob *fg, int cmd,\n\t    user_long_t arg);\nint\tmac_file_check_get(kauth_cred_t cred, struct fileglob *fg,\n\t    char *elements, int len);\nint\tmac_file_check_get_offset(kauth_cred_t cred, struct fileglob *fg);\nint\tmac_file_check_inherit(kauth_cred_t cred, struct fileglob *fg);\nint\tmac_file_check_ioctl(kauth_cred_t cred, struct fileglob *fg,\n\t    unsigned int cmd);\nint\tmac_file_check_lock(kauth_cred_t cred, struct fileglob *fg, int op,\n\t    struct flock *fl);\nint\tmac_file_check_library_validation(struct proc *proc,\n\t    struct fileglob *fg, off_t slice_offset,\n\t    user_long_t error_message, size_t error_message_size);\nint\tmac_file_check_mmap(kauth_cred_t cred, struct fileglob *fg,\n\t    int prot, int flags, uint64_t file_pos, int *maxprot);\nvoid\tmac_file_check_mmap_downgrade(kauth_cred_t cred, struct fileglob *fg,\n\t    int *prot);\nint\tmac_file_check_receive(kauth_cred_t cred, struct fileglob *fg);\nint\tmac_file_check_set(kauth_cred_t cred, struct fileglob *fg,\n\t    char *bufp, int buflen);\nvoid\tmac_file_label_associate(kauth_cred_t cred, struct fileglob *fg);\nvoid\tmac_file_label_destroy(struct fileglob *fg);\nvoid\tmac_file_label_init(struct fileglob *fg);\nint\tmac_ifnet_check_transmit(struct ifnet *ifp, struct mbuf *mbuf,\n\t    int family, int type);\nvoid\tmac_ifnet_label_associate(struct ifnet *ifp);\nvoid\tmac_ifnet_label_destroy(struct ifnet *ifp);\nint\tmac_ifnet_label_get(kauth_cred_t cred, struct ifreq *ifr,\n\t    struct ifnet *ifp);\nvoid\tmac_ifnet_label_init(struct ifnet *ifp);\nvoid\tmac_ifnet_label_recycle(struct ifnet *ifp);\nint\tmac_ifnet_label_set(kauth_cred_t cred, struct ifreq *ifr,\n\t    struct ifnet *ifp);\nint\tmac_inpcb_check_deliver(struct inpcb *inp, struct mbuf *mbuf,\n\t    int family, int type);\nvoid\tmac_inpcb_label_associate(struct socket *so, struct inpcb *inp);\nvoid\tmac_inpcb_label_destroy(struct inpcb *inp);\nint\tmac_inpcb_label_init(struct inpcb *inp, int flag);\nvoid\tmac_inpcb_label_recycle(struct inpcb *inp);\nvoid\tmac_inpcb_label_update(struct socket *so);\nint\tmac_iokit_check_device(char *devtype, struct mac_module_data *mdata);\nint\tmac_iokit_check_open(kauth_cred_t cred, io_object_t user_client, unsigned int user_client_type);\nint\tmac_iokit_check_set_properties(kauth_cred_t cred, io_object_t registry_entry, io_object_t properties);\nint\tmac_iokit_check_filter_properties(kauth_cred_t cred, io_object_t registry_entry);\nint\tmac_iokit_check_get_property(kauth_cred_t cred, io_object_t registry_entry, const char *name);\nint\tmac_iokit_check_hid_control(kauth_cred_t cred);\nint\tmac_iokit_check_nvram_delete(kauth_cred_t cred, const char *name);\nint\tmac_iokit_check_nvram_get(kauth_cred_t cred, const char *name);\nint\tmac_iokit_check_nvram_set(kauth_cred_t cred, const char *name, io_object_t value);\nvoid\tmac_ipq_label_associate(struct mbuf *fragment, struct ipq *ipq);\nint\tmac_ipq_label_compare(struct mbuf *fragment, struct ipq *ipq);\nvoid\tmac_ipq_label_destroy(struct ipq *ipq);\nint\tmac_ipq_label_init(struct ipq *ipq, int flag);\nvoid\tmac_ipq_label_update(struct mbuf *fragment, struct ipq *ipq);\nvoid\tmac_mbuf_label_associate_bpfdesc(struct bpf_d *bpf_d, struct mbuf *m);\nvoid\tmac_mbuf_label_associate_ifnet(struct ifnet *ifp, struct mbuf *m);\nvoid\tmac_mbuf_label_associate_inpcb(struct inpcb *inp, struct mbuf *m);\nvoid\tmac_mbuf_label_associate_ipq(struct ipq *ipq, struct mbuf *mbuf);\nvoid\tmac_mbuf_label_associate_linklayer(struct ifnet *ifp, struct mbuf *m);\nvoid\tmac_mbuf_label_associate_multicast_encap(struct mbuf *oldmbuf,\n\t    struct ifnet *ifp, struct mbuf *newmbuf);\nvoid\tmac_mbuf_label_associate_netlayer(struct mbuf *oldmbuf,\n\t    struct mbuf *newmbuf);\nvoid\tmac_mbuf_label_associate_socket(struct socket *so, struct mbuf *m);\nvoid\tmac_mbuf_label_copy(struct mbuf *m_from, struct mbuf *m_to);\nvoid\tmac_mbuf_label_destroy(struct mbuf *m);\nint\tmac_mbuf_label_init(struct mbuf *m, int flag);\nvoid\tmac_mbuf_tag_copy(struct m_tag *m, struct m_tag *mtag);\nvoid\tmac_mbuf_tag_destroy(struct m_tag *mtag);\nint\tmac_mbuf_tag_init(struct m_tag *, int how);\nint\tmac_mount_check_fsctl(vfs_context_t ctx, struct mount *mp,\n\t    unsigned int cmd);\nint\tmac_mount_check_getattr(vfs_context_t ctx, struct mount *mp,\n\t    struct vfs_attr *vfa);\nint\tmac_mount_check_label_update(vfs_context_t ctx, struct mount *mp);\nint\tmac_mount_check_mount(vfs_context_t ctx, struct vnode *vp,\n\t    struct componentname *cnp, const char *vfc_name);\nint\tmac_mount_check_snapshot_create(vfs_context_t ctx, struct mount *mp,\n\t    const char *name);\nint\tmac_mount_check_snapshot_delete(vfs_context_t ctx, struct mount *mp,\n\t    const char *name);\nint\tmac_mount_check_snapshot_revert(vfs_context_t ctx, struct mount *mp,\n\t    const char *name);\nint\tmac_mount_check_remount(vfs_context_t ctx, struct mount *mp);\nint\tmac_mount_check_setattr(vfs_context_t ctx, struct mount *mp,\n\t    struct vfs_attr *vfa);\nint\tmac_mount_check_stat(vfs_context_t ctx, struct mount *mp);\nint\tmac_mount_check_umount(vfs_context_t ctx, struct mount *mp);\nvoid\tmac_mount_label_associate(vfs_context_t ctx, struct mount *mp);\nvoid\tmac_mount_label_destroy(struct mount *mp);\nint\tmac_mount_label_externalize(struct label *label, char *elements,\n\t    char *outbuf, size_t outbuflen);\nint\tmac_mount_label_get(struct mount *mp, user_addr_t mac_p);\nvoid\tmac_mount_label_init(struct mount *);\nint\tmac_mount_label_internalize(struct label *, char *string);\nvoid\tmac_netinet_fragment(struct mbuf *datagram, struct mbuf *fragment);\nvoid\tmac_netinet_icmp_reply(struct mbuf *m);\nvoid\tmac_netinet_tcp_reply(struct mbuf *m);\nint\tmac_pipe_check_ioctl(kauth_cred_t cred, struct pipe *cpipe,\n\t    unsigned int cmd);\nint\tmac_pipe_check_kqfilter(kauth_cred_t cred, struct knote *kn,\n\t    struct pipe *cpipe);\nint\tmac_pipe_check_read(kauth_cred_t cred, struct pipe *cpipe);\nint\tmac_pipe_check_select(kauth_cred_t cred, struct pipe *cpipe,\n\t    int which);\nint\tmac_pipe_check_stat(kauth_cred_t cred, struct pipe *cpipe);\nint\tmac_pipe_check_write(kauth_cred_t cred, struct pipe *cpipe);\nstruct label\t*mac_pipe_label_alloc(void);\nvoid\tmac_pipe_label_associate(kauth_cred_t cred, struct pipe *cpipe);\nvoid\tmac_pipe_label_copy(struct label *src, struct label *dest);\nvoid\tmac_pipe_label_destroy(struct pipe *cpipe);\nvoid\tmac_pipe_label_free(struct label *label);\nvoid\tmac_pipe_label_init(struct pipe *cpipe);\nint\tmac_pipe_label_update(kauth_cred_t cred, struct pipe *cpipe,\n\t    struct label *label);\nvoid    mac_policy_initbsd(void);\nint\tmac_posixsem_check_create(kauth_cred_t cred, const char *name);\nint\tmac_posixsem_check_open(kauth_cred_t cred, struct pseminfo *psem);\nint\tmac_posixsem_check_post(kauth_cred_t cred, struct pseminfo *psem);\nint\tmac_posixsem_check_unlink(kauth_cred_t cred, struct pseminfo *psem,\n\t    const char *name);\nint\tmac_posixsem_check_wait(kauth_cred_t cred, struct pseminfo *psem);\nvoid\tmac_posixsem_vnode_label_associate(kauth_cred_t cred,\n\t    struct pseminfo *psem, struct label *plabel,\n\t    vnode_t vp, struct label *vlabel);\nvoid\tmac_posixsem_label_associate(kauth_cred_t cred,\n\t    struct pseminfo *psem, const char *name);\nvoid\tmac_posixsem_label_destroy(struct pseminfo *psem);\nvoid\tmac_posixsem_label_init(struct pseminfo *psem);\nint\tmac_posixshm_check_create(kauth_cred_t cred, const char *name);\nint\tmac_posixshm_check_mmap(kauth_cred_t cred, struct pshminfo *pshm,\n\t    int prot, int flags);\nint\tmac_posixshm_check_open(kauth_cred_t cred, struct pshminfo *pshm,\n\t    int fflags);\nint\tmac_posixshm_check_stat(kauth_cred_t cred, struct pshminfo *pshm);\nint\tmac_posixshm_check_truncate(kauth_cred_t cred, struct pshminfo *pshm,\n\t    off_t s);\nint\tmac_posixshm_check_unlink(kauth_cred_t cred, struct pshminfo *pshm,\n\t    const char *name);\nvoid\tmac_posixshm_vnode_label_associate(kauth_cred_t cred,\n\t    struct pshminfo *pshm, struct label *plabel,\n\t    vnode_t vp, struct label *vlabel);\nvoid\tmac_posixshm_label_associate(kauth_cred_t cred,\n\t    struct pshminfo *pshm, const char *name);\nvoid\tmac_posixshm_label_destroy(struct pshminfo *pshm);\nvoid\tmac_posixshm_label_init(struct pshminfo *pshm);\nint\tmac_priv_check(kauth_cred_t cred, int priv);\nint\tmac_priv_grant(kauth_cred_t cred, int priv);\nint\tmac_proc_check_debug(proc_t proc1, proc_t proc2);\nint\tmac_proc_check_cpumon(proc_t curp);\nint\tmac_proc_check_proc_info(proc_t curp, proc_t target, int callnum, int flavor);\nint\tmac_proc_check_get_cs_info(proc_t curp, proc_t target, unsigned int op);\nint\tmac_proc_check_set_cs_info(proc_t curp, proc_t target, unsigned int op);\nint\tmac_proc_check_fork(proc_t proc);\nint\tmac_proc_check_suspend_resume(proc_t proc, int sr);\nint\tmac_proc_check_get_task_name(kauth_cred_t cred, struct proc *p);\nint\tmac_proc_check_get_task(kauth_cred_t cred, struct proc *p);\nint\tmac_proc_check_expose_task(kauth_cred_t cred, struct proc *p);\nint\tmac_proc_check_inherit_ipc_ports(struct proc *p, struct vnode *cur_vp, off_t cur_offset, struct vnode *img_vp, off_t img_offset, struct vnode *scriptvp);\nint\tmac_proc_check_getaudit(proc_t proc);\nint\tmac_proc_check_getauid(proc_t proc);\nint     mac_proc_check_getlcid(proc_t proc1, proc_t proc2,\n\t    pid_t pid);\nint     mac_proc_check_ledger(proc_t curp, proc_t target, int op);\nint\tmac_proc_check_map_anon(proc_t proc, user_addr_t u_addr,\n\t    user_size_t u_size, int prot, int flags, int *maxprot);\nint\tmac_proc_check_mprotect(proc_t proc,\n\t    user_addr_t addr, user_size_t size, int prot);\nint\tmac_proc_check_run_cs_invalid(proc_t proc);\nint\tmac_proc_check_sched(proc_t proc, proc_t proc2);\nint\tmac_proc_check_setaudit(proc_t proc, struct auditinfo_addr *ai);\nint\tmac_proc_check_setauid(proc_t proc, uid_t auid);\nint     mac_proc_check_setlcid(proc_t proc1, proc_t proc2,\n\t    pid_t pid1, pid_t pid2);\nint\tmac_proc_check_signal(proc_t proc1, proc_t proc2,\n\t    int signum);\nint\tmac_proc_check_wait(proc_t proc1, proc_t proc2);\nvoid\tmac_proc_set_enforce(proc_t p, int enforce_flags);\nint\tmac_setsockopt_label(kauth_cred_t cred, struct socket *so,\n\t    struct mac *extmac);\nint     mac_socket_check_accept(kauth_cred_t cred, struct socket *so);\nint     mac_socket_check_accepted(kauth_cred_t cred, struct socket *so);\nint\tmac_socket_check_bind(kauth_cred_t cred, struct socket *so,\n\t    struct sockaddr *addr);\nint\tmac_socket_check_connect(kauth_cred_t cred, struct socket *so,\n\t    struct sockaddr *addr);\nint\tmac_socket_check_create(kauth_cred_t cred, int domain,\n\t    int type, int protocol);\nint\tmac_socket_check_deliver(struct socket *so, struct mbuf *m);\nint\tmac_socket_check_kqfilter(kauth_cred_t cred, struct knote *kn,\n\t    struct socket *so);\nint\tmac_socket_check_listen(kauth_cred_t cred, struct socket *so);\nint\tmac_socket_check_receive(kauth_cred_t cred, struct socket *so);\nint\tmac_socket_check_received(kauth_cred_t cred, struct socket *so,\n\t    struct sockaddr *saddr);\nint     mac_socket_check_select(kauth_cred_t cred, struct socket *so,\n\t    int which);\nint\tmac_socket_check_send(kauth_cred_t cred, struct socket *so,\n\t    struct sockaddr *addr);\nint\tmac_socket_check_getsockopt(kauth_cred_t cred, struct socket *so,\n\t    struct sockopt *sopt);\nint\tmac_socket_check_setsockopt(kauth_cred_t cred, struct socket *so,\n\t    struct sockopt *sopt);\nint\tmac_socket_check_stat(kauth_cred_t cred, struct socket *so);\nvoid\tmac_socket_label_associate(kauth_cred_t cred, struct socket *so);\nvoid\tmac_socket_label_associate_accept(struct socket *oldsocket,\n\t    struct socket *newsocket);\nvoid\tmac_socket_label_copy(struct label *from, struct label *to);\nvoid\tmac_socket_label_destroy(struct socket *);\nint\tmac_socket_label_get(kauth_cred_t cred, struct socket *so,\n\t    struct mac *extmac);\nint\tmac_socket_label_init(struct socket *, int waitok);\nvoid\tmac_socketpeer_label_associate_mbuf(struct mbuf *m, struct socket *so);\nvoid\tmac_socketpeer_label_associate_socket(struct socket *peersocket,\n\t    struct socket *socket_to_modify);\nint\tmac_socketpeer_label_get(kauth_cred_t cred, struct socket *so,\n\t    struct mac *extmac);\nint\tmac_system_check_acct(kauth_cred_t cred, struct vnode *vp);\nint\tmac_system_check_audit(kauth_cred_t cred, void *record, int length);\nint\tmac_system_check_auditctl(kauth_cred_t cred, struct vnode *vp);\nint\tmac_system_check_auditon(kauth_cred_t cred, int cmd);\nint\tmac_system_check_chud(kauth_cred_t cred);\nint\tmac_system_check_host_priv(kauth_cred_t cred);\nint\tmac_system_check_info(kauth_cred_t, const char *info_type);\nint\tmac_system_check_nfsd(kauth_cred_t cred);\nint\tmac_system_check_reboot(kauth_cred_t cred, int howto);\nint\tmac_system_check_settime(kauth_cred_t cred);\nint\tmac_system_check_swapoff(kauth_cred_t cred, struct vnode *vp);\nint\tmac_system_check_swapon(kauth_cred_t cred, struct vnode *vp);\nint\tmac_system_check_sysctlbyname(kauth_cred_t cred, const char *namestring, int *name,\n\t\t\t\t      u_int namelen, user_addr_t oldctl, size_t oldlen,\n\t\t\t\t      user_addr_t newctl, size_t newlen);\nint\tmac_system_check_kas_info(kauth_cred_t cred, int selector);\nvoid\tmac_sysvmsg_label_associate(kauth_cred_t cred,\n\t    struct msqid_kernel *msqptr, struct msg *msgptr);\nvoid\tmac_sysvmsg_label_init(struct msg *msgptr);\nvoid\tmac_sysvmsg_label_recycle(struct msg *msgptr);\nint\tmac_sysvmsq_check_enqueue(kauth_cred_t cred, struct msg *msgptr,\n\t    struct msqid_kernel *msqptr);\nint\tmac_sysvmsq_check_msgrcv(kauth_cred_t cred, struct msg *msgptr);\nint\tmac_sysvmsq_check_msgrmid(kauth_cred_t cred, struct msg *msgptr);\nint\tmac_sysvmsq_check_msqctl(kauth_cred_t cred,\n\t    struct msqid_kernel *msqptr, int cmd);\nint\tmac_sysvmsq_check_msqget(kauth_cred_t cred,\n\t    struct msqid_kernel *msqptr);\nint\tmac_sysvmsq_check_msqrcv(kauth_cred_t cred,\n\t    struct msqid_kernel *msqptr);\nint\tmac_sysvmsq_check_msqsnd(kauth_cred_t cred,\n\t    struct msqid_kernel *msqptr);\nvoid\tmac_sysvmsq_label_associate(kauth_cred_t cred,\n\t    struct msqid_kernel *msqptr);\nvoid \tmac_sysvmsq_label_init(struct msqid_kernel *msqptr);\nvoid \tmac_sysvmsq_label_recycle(struct msqid_kernel *msqptr);\nint\tmac_sysvsem_check_semctl(kauth_cred_t cred,\n\t    struct semid_kernel *semakptr, int cmd);\nint\tmac_sysvsem_check_semget(kauth_cred_t cred,\n\t    struct semid_kernel *semakptr);\nint\tmac_sysvsem_check_semop(kauth_cred_t cred,\n\t    struct semid_kernel *semakptr, size_t accesstype);\nvoid\tmac_sysvsem_label_associate(kauth_cred_t cred,\n\t    struct semid_kernel *semakptr);\nvoid\tmac_sysvsem_label_destroy(struct semid_kernel *semakptr);\nvoid\tmac_sysvsem_label_init(struct semid_kernel *semakptr);\nvoid\tmac_sysvsem_label_recycle(struct semid_kernel *semakptr);\nint\tmac_sysvshm_check_shmat(kauth_cred_t cred,\n\t    struct shmid_kernel *shmsegptr, int shmflg);\nint\tmac_sysvshm_check_shmctl(kauth_cred_t cred,\n\t    struct shmid_kernel *shmsegptr, int cmd);\nint\tmac_sysvshm_check_shmdt(kauth_cred_t cred,\n\t    struct shmid_kernel *shmsegptr);\nint\tmac_sysvshm_check_shmget(kauth_cred_t cred,\n\t    struct shmid_kernel *shmsegptr, int shmflg);\nvoid\tmac_sysvshm_label_associate(kauth_cred_t cred,\n\t    struct shmid_kernel *shmsegptr);\nvoid\tmac_sysvshm_label_destroy(struct shmid_kernel *shmsegptr);\nvoid\tmac_sysvshm_label_init(struct shmid_kernel* shmsegptr);\nvoid\tmac_sysvshm_label_recycle(struct shmid_kernel *shmsegptr);\nint\tmac_vnode_check_access(vfs_context_t ctx, struct vnode *vp,\n\t    int acc_mode);\nint\tmac_vnode_check_chdir(vfs_context_t ctx, struct vnode *dvp);\nint\tmac_vnode_check_chroot(vfs_context_t ctx, struct vnode *dvp,\n\t    struct componentname *cnp);\nint\tmac_vnode_check_clone(vfs_context_t ctx, struct vnode *dvp,\n\t    struct vnode *vp, struct componentname *cnp);\nint\tmac_vnode_check_create(vfs_context_t ctx, struct vnode *dvp,\n\t    struct componentname *cnp, struct vnode_attr *vap);\nint\tmac_vnode_check_deleteextattr(vfs_context_t ctx, struct vnode *vp,\n\t    const char *name);\nint\tmac_vnode_check_exchangedata(vfs_context_t ctx, struct vnode *v1,\n\t    struct vnode *v2);\nint\tmac_vnode_check_exec(vfs_context_t ctx, struct vnode *vp,\n\t    struct image_params *imgp);\nint\tmac_vnode_check_fsgetpath(vfs_context_t ctx, struct vnode *vp);\nint\tmac_vnode_check_getattr(vfs_context_t ctx, struct ucred *file_cred,\n            struct vnode *vp, struct vnode_attr *va);\nint     mac_vnode_check_getattrlist(vfs_context_t ctx, struct vnode *vp,\n\t    struct attrlist *alist);\nint\tmac_vnode_check_getextattr(vfs_context_t ctx, struct vnode *vp,\n\t    const char *name, struct uio *uio);\nint\tmac_vnode_check_ioctl(vfs_context_t ctx, struct vnode *vp,\n\t    unsigned int cmd);\nint\tmac_vnode_check_kqfilter(vfs_context_t ctx,\n\t    kauth_cred_t file_cred, struct knote *kn, struct vnode *vp);\nint\tmac_vnode_check_label_update(vfs_context_t ctx, struct vnode *vp,\n\t    struct label *newlabel);\nint\tmac_vnode_check_link(vfs_context_t ctx, struct vnode *dvp,\n\t    struct vnode *vp, struct componentname *cnp);\nint\tmac_vnode_check_listextattr(vfs_context_t ctx, struct vnode *vp);\nint\tmac_vnode_check_lookup(vfs_context_t ctx, struct vnode *dvp,\n\t    struct componentname *cnp);\nint\tmac_vnode_check_open(vfs_context_t ctx, struct vnode *vp,\n\t    int acc_mode);\nint\tmac_vnode_check_read(vfs_context_t ctx,\n\t    kauth_cred_t file_cred, struct vnode *vp);\nint\tmac_vnode_check_readdir(vfs_context_t ctx, struct vnode *vp);\nint\tmac_vnode_check_readlink(vfs_context_t ctx, struct vnode *vp);\nint\tmac_vnode_check_rename(vfs_context_t ctx, struct vnode *dvp,\n\t    struct vnode *vp, struct componentname *cnp, struct vnode *tdvp,\n\t    struct vnode *tvp, struct componentname *tcnp);\nint\tmac_vnode_check_revoke(vfs_context_t ctx, struct vnode *vp);\nint\tmac_vnode_check_searchfs(vfs_context_t ctx, struct vnode *vp,\n\t    struct attrlist *alist);\nint     mac_vnode_check_select(vfs_context_t ctx, struct vnode *vp,\n\t    int which);\nint\tmac_vnode_check_setacl(vfs_context_t ctx, struct vnode *vp,\n\t    struct kauth_acl *acl);\nint     mac_vnode_check_setattrlist(vfs_context_t ctxd, struct vnode *vp,\n\t    struct attrlist *alist);\nint\tmac_vnode_check_setextattr(vfs_context_t ctx, struct vnode *vp,\n\t    const char *name, struct uio *uio);\nint\tmac_vnode_check_setflags(vfs_context_t ctx, struct vnode *vp,\n\t    u_long flags);\nint\tmac_vnode_check_setmode(vfs_context_t ctx, struct vnode *vp,\n\t    mode_t mode);\nint\tmac_vnode_check_setowner(vfs_context_t ctx, struct vnode *vp,\n\t    uid_t uid, gid_t gid);\nint\tmac_vnode_check_setutimes(vfs_context_t ctx, struct vnode *vp,\n\t    struct timespec atime, struct timespec mtime);\nint\tmac_vnode_check_signature(struct vnode *vp,\n\t\tstruct cs_blob *cs_blob, struct image_params *imgp,\n\t\tunsigned int *cs_flags,\n\t\tint flags);\nint\tmac_vnode_check_stat(vfs_context_t ctx,\n\t    kauth_cred_t file_cred, struct vnode *vp);\nint\tmac_vnode_check_truncate(vfs_context_t ctx,\n\t    kauth_cred_t file_cred, struct vnode *vp);\nint\tmac_vnode_check_uipc_bind(vfs_context_t ctx, struct vnode *dvp,\n\t    struct componentname *cnp, struct vnode_attr *vap);\nint\tmac_vnode_check_uipc_connect(vfs_context_t ctx, struct vnode *vp, struct socket *so);\nint\tmac_vnode_check_unlink(vfs_context_t ctx, struct vnode *dvp,\n\t    struct vnode *vp, struct componentname *cnp);\nint\tmac_vnode_check_write(vfs_context_t ctx,\n\t    kauth_cred_t file_cred, struct vnode *vp);\nstruct label\t*mac_vnode_label_alloc(void);\nint\tmac_vnode_label_associate(struct mount *mp, struct vnode *vp,\n\t    vfs_context_t ctx);\nvoid\tmac_vnode_label_associate_devfs(struct mount *mp, struct devnode *de,\n\t    struct vnode *vp);\nint\tmac_vnode_label_associate_extattr(struct mount *mp, struct vnode *vp);\nint\tmac_vnode_label_associate_fdesc(struct mount *mp, struct fdescnode *fnp,\n\t    struct vnode *vp, vfs_context_t ctx);\nvoid\tmac_vnode_label_associate_singlelabel(struct mount *mp,\n\t    struct vnode *vp);\nvoid\tmac_vnode_label_copy(struct label *l1, struct label *l2);\nvoid\tmac_vnode_label_destroy(struct vnode *vp);\nint\tmac_vnode_label_externalize_audit(struct vnode *vp, struct mac *mac);\nvoid\tmac_vnode_label_free(struct label *label);\nvoid\tmac_vnode_label_init(struct vnode *vp);\nint\tmac_vnode_label_init_needed(struct vnode *vp);\nvoid\tmac_vnode_label_recycle(struct vnode *vp);\nvoid\tmac_vnode_label_update(vfs_context_t ctx, struct vnode *vp,\n\t    struct label *newlabel);\nvoid\tmac_vnode_label_update_extattr(struct mount *mp, struct vnode *vp,\n\t    const char *name);\nint\tmac_vnode_notify_create(vfs_context_t ctx, struct mount *mp,\n\t    struct vnode *dvp, struct vnode *vp, struct componentname *cnp);\nvoid\tmac_vnode_notify_deleteextattr(vfs_context_t ctx, struct vnode *vp, const char *name);\nvoid\tmac_vnode_notify_link(vfs_context_t ctx, struct vnode *vp,\n\t    struct vnode *dvp, struct componentname *cnp);\nvoid\tmac_vnode_notify_open(vfs_context_t ctx, struct vnode *vp, int acc_flags);\nvoid\tmac_vnode_notify_rename(vfs_context_t ctx, struct vnode *vp,\n\t    struct vnode *dvp, struct componentname *cnp);\nvoid\tmac_vnode_notify_setacl(vfs_context_t ctx, struct vnode *vp, struct kauth_acl *acl);\nvoid\tmac_vnode_notify_setattrlist(vfs_context_t ctx, struct vnode *vp, struct attrlist *alist);\nvoid\tmac_vnode_notify_setextattr(vfs_context_t ctx, struct vnode *vp, const char *name, struct uio *uio);\nvoid\tmac_vnode_notify_setflags(vfs_context_t ctx, struct vnode *vp, u_long flags);\nvoid\tmac_vnode_notify_setmode(vfs_context_t ctx, struct vnode *vp, mode_t mode);\nvoid\tmac_vnode_notify_setowner(vfs_context_t ctx, struct vnode *vp, uid_t uid, gid_t gid);\nvoid\tmac_vnode_notify_setutimes(vfs_context_t ctx, struct vnode *vp, struct timespec atime, struct timespec mtime);\nvoid\tmac_vnode_notify_truncate(vfs_context_t ctx, kauth_cred_t file_cred, struct vnode *vp);\nint\tmac_vnode_find_sigs(struct proc *p, struct vnode *vp, off_t offsetInMacho);\nint\tvnode_label(struct mount *mp, struct vnode *dvp, struct vnode *vp,\n\t    struct componentname *cnp, int flags, vfs_context_t ctx);\nvoid\tvnode_relabel(struct vnode *vp);\nvoid\tmac_pty_notify_grant(proc_t p, struct tty *tp, dev_t dev, struct label *label);\nvoid\tmac_pty_notify_close(proc_t p, struct tty *tp, dev_t dev, struct label *label);\nint\tmac_kext_check_load(kauth_cred_t cred, const char *identifier);\nint\tmac_kext_check_unload(kauth_cred_t cred, const char *identifier);\nint\tmac_kext_check_query(kauth_cred_t cred);\n\nvoid psem_label_associate(struct fileproc *fp, struct vnode *vp, struct vfs_context *ctx);\nvoid pshm_label_associate(struct fileproc *fp, struct vnode *vp, struct vfs_context *ctx);\n\n#if CONFIG_MACF_NET\nstruct label *mac_bpfdesc_label_get(struct bpf_d *d);\nvoid mac_bpfdesc_label_set(struct bpf_d *d, struct label *label);\n#endif\n\n#endif\t/* CONFIG_MACF */\n\n#ifdef __cplusplus\n}\n#endif\n\n#endif /* !_SECURITY_MAC_FRAMEWORK_H_ */\n"
  },
  {
    "path": "EFI/CLOVER/kexts/Other/Lilu_v1.3.7.kext/Contents/Resources/Library/security/mac_policy.h",
    "content": "/*\n * Copyright (c) 2007-2016 Apple Inc. All rights reserved.\n *\n * @APPLE_OSREFERENCE_LICENSE_HEADER_START@\n * \n * This file contains Original Code and/or Modifications of Original Code\n * as defined in and that are subject to the Apple Public Source License\n * Version 2.0 (the 'License'). You may not use this file except in\n * compliance with the License. The rights granted to you under the License\n * may not be used to create, or enable the creation or redistribution of,\n * unlawful or unlicensed copies of an Apple operating system, or to\n * circumvent, violate, or enable the circumvention or violation of, any\n * terms of an Apple operating system software license agreement.\n * \n * Please obtain a copy of the License at\n * http://www.opensource.apple.com/apsl/ and read it before using this file.\n * \n * The Original Code and all software distributed under the License are\n * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER\n * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,\n * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.\n * Please see the License for the specific language governing rights and\n * limitations under the License.\n * \n * @APPLE_OSREFERENCE_LICENSE_HEADER_END@\n */\n/*-\n * Copyright (c) 1999-2002 Robert N. M. Watson\n * Copyright (c) 2001-2005 Networks Associates Technology, Inc.\n * Copyright (c) 2005-2007 SPARTA, Inc.\n * All rights reserved.\n *\n * This software was developed by Robert Watson for the TrustedBSD Project.\n *\n * This software was developed for the FreeBSD Project in part by Network\n * Associates Laboratories, the Security Research Division of Network\n * Associates, Inc. under DARPA/SPAWAR contract N66001-01-C-8035 (\"CBOSS\"),\n * as part of the DARPA CHATS research program.\n *\n * This software was enhanced by SPARTA ISSO under SPAWAR contract\n * N66001-04-C-6019 (\"SEFOS\").\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions\n * are met:\n * 1. Redistributions of source code must retain the above copyright\n *    notice, this list of conditions and the following disclaimer.\n * 2. Redistributions in binary form must reproduce the above copyright\n *    notice, this list of conditions and the following disclaimer in the\n *    documentation and/or other materials provided with the distribution.\n *\n * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND\n * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS\n * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)\n * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT\n * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY\n * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF\n * SUCH DAMAGE.\n *\n * $FreeBSD: src/sys/sys/mac_policy.h,v 1.39 2003/04/18 19:57:37 rwatson Exp $\n */\n\n/**\n  @file mac_policy.h\n  @brief Kernel Interfaces for MAC policy modules\n\n  This header defines the list of operations that are defined by the\n  TrustedBSD MAC Framwork on Darwin.  MAC Policy modules register\n  with the framework to declare interest in a specific set of\n  operations.  If interest in an entry point is not declared, then\n  the policy will be ignored when the Framework evaluates that entry\n  point.\n*/\n\n#ifndef _SECURITY_MAC_POLICY_H_\n#define _SECURITY_MAC_POLICY_H_\n\n//#warning \"MAC policy is not KPI, see Technical Q&A QA1574, this header will be removed in next version\"\n\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n#include <Library/security/_label.h>\n\nstruct attrlist;\nstruct auditinfo;\nstruct bpf_d;\nstruct cs_blob;\nstruct devnode;\nstruct exception_action;\nstruct fileglob;\nstruct ifnet;\nstruct inpcb;\nstruct ipq;\nstruct label;\nstruct mac_module_data;\nstruct mac_policy_conf;\nstruct mbuf;\nstruct mount;\nstruct msg;\nstruct msqid_kernel;\nstruct pipe;\nstruct pseminfo;\nstruct pshminfo;\nstruct sbuf;\nstruct semid_kernel;\nstruct shmid_kernel;\nstruct socket;\nstruct sockopt;\nstruct task;\nstruct thread;\nstruct tty;\nstruct ucred;\nstruct vfs_attr;\nstruct vnode;\n/** @struct dummy */\n\n\n\n#ifndef _KAUTH_CRED_T\n#define\t_KAUTH_CRED_T\ntypedef struct ucred *kauth_cred_t;\n#endif\t/* !_KAUTH_CRED_T */\n\n#ifndef __IOKIT_PORTS_DEFINED__\n#define __IOKIT_PORTS_DEFINED__\n#ifdef __cplusplus\nclass OSObject;\ntypedef OSObject *io_object_t;\n#else\nstruct OSObject;\ntypedef struct OSObject *io_object_t;\n#endif\n#endif /* __IOKIT_PORTS_DEFINED__ */\n\n/*-\n * MAC entry points are generally named using the following template:\n *\n *   mpo_<object>_<operation>()\n *\n * or:\n *\n *   mpo_<object>_check_<operation>()\n *\n * Entry points are sorted by object type.\n *\n * It may be desirable also to consider some subsystems as \"objects\", such\n * as system, iokit, etc.\n */\n\n/**\n  @name Entry Points for Label Management\n\n  These are the entry points corresponding to the life cycle events for\n  kernel objects, such as initialization, creation, and destruction.\n\n  Most policies (that use labels) will initialize labels by allocating\n  space for policy-specific data.  In most cases, it is permitted to\n  sleep during label initialization operations; it will be noted when\n  it is not permitted.\n\n  Initialization usually will not require doing more than allocating a\n  generic label for the given object.  What follows initialization is\n  creation, where a label is made specific to the object it is associated\n  with.  Destruction occurs when the label is no longer needed, such as\n  when the corresponding object is destroyed.  All necessary cleanup should\n  be performed in label destroy operations.\n\n  Where possible, the label entry points have identical parameters.  If\n  the policy module does not require structure-specific label\n  information, the same function may be registered in the policy\n  operation vector.  Many policies will implement two such generic\n  allocation calls: one to handle sleepable requests, and one to handle\n  potentially non-sleepable requests.\n*/\n\n\n/**\n  @brief Audit event postselection\n  @param cred Subject credential\n  @param syscode Syscall number\n  @param args Syscall arguments\n  @param error Syscall errno\n  @param retval Syscall return value\n\n  This is the MAC Framework audit postselect, which is called before\n  exiting a syscall to determine if an audit event should be committed.\n  A return value of MAC_AUDIT_NO forces the audit record to be suppressed.\n  Any other return value results in the audit record being committed.\n\n  @warning The suppression behavior will probably go away in Apple's\n  future version of the audit implementation.\n\n  @return Return MAC_AUDIT_NO to force suppression of the audit record.\n  Any other value results in the audit record being committed.\n\n*/\ntypedef int mpo_audit_check_postselect_t(\n\tkauth_cred_t cred,\n\tunsigned short syscode,\n\tvoid *args,\n\tint error,\n\tint retval\n);\n/**\n  @brief Audit event preselection\n  @param cred Subject credential\n  @param syscode Syscall number\n  @param args Syscall arguments\n\n  This is the MAC Framework audit preselect, which is called before a\n  syscall is entered to determine if an audit event should be created.\n  If the MAC policy forces the syscall to be audited, MAC_AUDIT_YES should be\n  returned. A return value of MAC_AUDIT_NO causes the audit record to\n  be suppressed. Returning MAC_POLICY_DEFAULT indicates that the policy wants\n  to defer to the system's existing preselection mechanism.\n\n  When policies return different preferences, the Framework decides what action\n  to take based on the following policy.  If any policy returns MAC_AUDIT_YES,\n  then create an audit record, else if any policy returns MAC_AUDIT_NO, then\n  suppress the creations of an audit record, else defer to the system's\n  existing preselection mechanism.\n\n  @warning The audit implementation in Apple's current version is\n  incomplete, so the MAC policies have priority over the system's existing\n  mechanisms. This will probably change in the future version where\n  the audit implementation is more complete.\n\n  @return Return MAC_AUDIT_YES to force auditing of the syscall,\n  MAC_AUDIT_NO to force no auditing of the syscall, MAC_AUDIT_DEFAULT\n  to allow auditing mechanisms to determine if the syscall is audited.\n\n*/\ntypedef int mpo_audit_check_preselect_t(\n\tkauth_cred_t cred,\n\tunsigned short syscode,\n\tvoid *args\n);\n/**\n  @brief Initialize BPF descriptor label\n  @param label New label to initialize\n\n  Initialize the label for a newly instantiated BPF descriptor.\n  Sleeping is permitted.\n*/\ntypedef void mpo_bpfdesc_label_init_t(\n\tstruct label *label\n);\n/**\n  @brief Destroy BPF descriptor label\n  @param label The label to be destroyed\n\n  Destroy a BPF descriptor label.  Since the BPF descriptor\n  is going out of scope, policy modules should free any internal\n  storage associated with the label so that it may be destroyed.\n*/\ntypedef void mpo_bpfdesc_label_destroy_t(\n\tstruct label *label\n);\n/**\n  @brief Associate a BPF descriptor with a label\n  @param cred User credential creating the BPF descriptor\n  @param bpf_d The BPF descriptor\n  @param bpflabel The new label\n\n  Set the label on a newly created BPF descriptor from the passed\n  subject credential. This call will be made when a BPF device node\n  is opened by a process with the passed subject credential.\n*/\ntypedef void mpo_bpfdesc_label_associate_t(\n\tkauth_cred_t cred,\n\tstruct bpf_d *bpf_d,\n\tstruct label *bpflabel\n);\n/**\n  @brief Check whether BPF can read from a network interface\n  @param bpf_d Subject; the BPF descriptor\n  @param bpflabel Policy label for bpf_d \n  @param ifp Object; the network interface \n  @param ifnetlabel Policy label for ifp\n\n  Determine whether the MAC framework should permit datagrams from\n  the passed network interface to be delivered to the buffers of\n  the passed BPF descriptor.  Return (0) for success, or an errno\n  value for failure.  Suggested failure: EACCES for label mismatches,\n  EPERM for lack of privilege.\n*/\ntypedef int mpo_bpfdesc_check_receive_t(\n\tstruct bpf_d *bpf_d,\n\tstruct label *bpflabel,\n\tstruct ifnet *ifp,\n\tstruct label *ifnetlabel\n);\n/**\n  @brief Indicate desire to change the process label at exec time\n  @param old Existing subject credential\n  @param vp File being executed\n  @param offset Offset of binary within file being executed\n  @param scriptvp Script being executed by interpreter, if any.\n  @param vnodelabel Label corresponding to vp\n  @param scriptvnodelabel Script vnode label\n  @param execlabel Userspace provided execution label\n  @param p Object process\n  @param macpolicyattr MAC policy-specific spawn attribute data\n  @param macpolicyattrlen Length of policy-specific spawn attribute data\n  @see mac_execve\n  @see mpo_cred_label_update_execve_t\n  @see mpo_vnode_check_exec_t\n\n  Indicate whether this policy intends to update the label of a newly\n  created credential from the existing subject credential (old).  This\n  call occurs when a process executes the passed vnode.  If a policy\n  returns success from this entry point, the mpo_cred_label_update_execve\n  entry point will later be called with the same parameters.  Access\n  has already been checked via the mpo_vnode_check_exec entry point,\n  this entry point is necessary to preserve kernel locking constraints\n  during program execution.\n\n  The supplied vnode and vnodelabel correspond with the file actually\n  being executed; in the case that the file is interpreted (for\n  example, a script), the label of the original exec-time vnode has\n  been preserved in scriptvnodelabel.\n\n  The final label, execlabel, corresponds to a label supplied by a\n  user space application through the use of the mac_execve system call.\n\n  The vnode lock is held during this operation.  No changes should be\n  made to the old credential structure.\n\n  @warning Even if a policy returns 0, it should behave correctly in\n  the presence of an invocation of mpo_cred_label_update_execve, as that\n  call may happen as a result of another policy requesting a transition.\n\n  @return Non-zero if a transition is required, 0 otherwise.\n*/\ntypedef int mpo_cred_check_label_update_execve_t(\n\tkauth_cred_t old,\n\tstruct vnode *vp,\n\toff_t offset,\n\tstruct vnode *scriptvp,\n\tstruct label *vnodelabel,\n\tstruct label *scriptvnodelabel,\n\tstruct label *execlabel,\n\tstruct proc *p,\n\tvoid *macpolicyattr,\n\tsize_t macpolicyattrlen\n);\n/**\n  @brief Access control check for relabelling processes\n  @param cred Subject credential\n  @param newlabel New label to apply to the user credential\n  @see mpo_cred_label_update_t\n  @see mac_set_proc\n\n  Determine whether the subject identified by the credential can relabel\n  itself to the supplied new label (newlabel).  This access control check\n  is called when the mac_set_proc system call is invoked.  A user space\n  application will supply a new value, the value will be internalized\n  and provided in newlabel.\n\n  @return Return 0 if access is granted, otherwise an appropriate value for\n  errno should be returned.\n*/\ntypedef int mpo_cred_check_label_update_t(\n\tkauth_cred_t cred,\n\tstruct label *newlabel\n);\n/**\n  @brief Access control check for visibility of other subjects\n  @param u1 Subject credential\n  @param u2 Object credential\n\n  Determine whether the subject identified by the credential u1 can\n  \"see\" other subjects with the passed subject credential u2. This call\n  may be made in a number of situations, including inter-process status\n  sysctls used by ps, and in procfs lookups.\n\n  @return Return 0 if access is granted, otherwise an appropriate value for\n  errno should be returned. Suggested failure: EACCES for label mismatch,\n  EPERM for lack of privilege, or ESRCH to hide visibility.\n*/\ntypedef int mpo_cred_check_visible_t(\n\tkauth_cred_t u1,\n\tkauth_cred_t u2\n);\n/**\n  @brief Associate a credential with a new process at fork\n  @param cred credential to inherited by new process\n  @param proc the new process\n\n  Allow a process to associate the credential with a new\n  process for reference countng purposes.\n  NOTE: the credential can be dis-associated in ways other\n        than exit - so this strategy is flawed - should just\n\tcatch label destroy callback.\n*/\ntypedef void mpo_cred_label_associate_fork_t(\n\tkauth_cred_t cred,\n\tproc_t proc\n);\n/**\n  @brief Create the first process\n  @param cred Subject credential to be labeled\n\n  Create the subject credential of process 0, the parent of all BSD\n  kernel processes.  Policies should update the label in the\n  previously initialized credential structure.\n*/\ntypedef void mpo_cred_label_associate_kernel_t(\n\tkauth_cred_t cred\n);\n/**\n  @brief Create a credential label\n  @param parent_cred Parent credential\n  @param child_cred Child credential\n\n  Set the label of a newly created credential, most likely using the\n  information in the supplied parent credential.\n\n  @warning This call is made when crcopy or crdup is invoked on a\n  newly created struct ucred, and should not be confused with a\n  process fork or creation event.\n*/\ntypedef void mpo_cred_label_associate_t(\n\tkauth_cred_t parent_cred,\n\tkauth_cred_t child_cred\n);\n/**\n  @brief Create the first process\n  @param cred Subject credential to be labeled\n\n  Create the subject credential of process 1, the parent of all BSD\n  user processes.  Policies should update the label in the previously\n  initialized credential structure.  This is the 'init' process.\n*/\ntypedef void mpo_cred_label_associate_user_t(\n\tkauth_cred_t cred\n);\n/**\n  @brief Destroy credential label\n  @param label The label to be destroyed\n\n  Destroy a user credential label.  Since the user credential\n  is going out of scope, policy modules should free any internal\n  storage associated with the label so that it may be destroyed.\n*/\ntypedef void mpo_cred_label_destroy_t(\n\tstruct label *label\n);\n/**\n  @brief Externalize a user credential label for auditing\n  @param label Label to be externalized\n  @param element_name Name of the label namespace for which labels should be\n  externalized\n  @param sb String buffer to be filled with a text representation of the label\n\n  Produce an external representation of the label on a user credential for\n  inclusion in an audit record.  An externalized label consists of a text\n  representation of the label contents that will be added to the audit record\n  as part of a text token.  Policy-agnostic user space tools will display\n  this externalized version.\n\n  @return 0 on success, return non-zero if an error occurs while\n  externalizing the label data.\n\n*/\ntypedef int mpo_cred_label_externalize_audit_t(\n\tstruct label *label,\n\tchar *element_name,\n\tstruct sbuf *sb\n);\n/**\n  @brief Externalize a user credential label\n  @param label Label to be externalized\n  @param element_name Name of the label namespace for which labels should be\n  externalized\n  @param sb String buffer to be filled with a text representation of the label\n\n  Produce an external representation of the label on a user\n  credential.  An externalized label consists of a text representation\n  of the label contents that can be used with user applications.\n  Policy-agnostic user space tools will display this externalized\n  version.\n\n  @return 0 on success, return non-zero if an error occurs while\n  externalizing the label data.\n\n*/\ntypedef int mpo_cred_label_externalize_t(\n\tstruct label *label,\n\tchar *element_name,\n\tstruct sbuf *sb\n);\n/**\n  @brief Initialize user credential label\n  @param label New label to initialize\n\n  Initialize the label for a newly instantiated user credential.\n  Sleeping is permitted.\n*/\ntypedef void mpo_cred_label_init_t(\n\tstruct label *label\n);\n/**\n  @brief Internalize a user credential label\n  @param label Label to be internalized\n  @param element_name Name of the label namespace for which the label should\n  be internalized\n  @param element_data Text data to be internalized\n\n  Produce a user credential label from an external representation.  An\n  externalized label consists of a text representation of the label\n  contents that can be used with user applications.  Policy-agnostic\n  user space tools will forward text version to the kernel for\n  processing by individual policy modules.\n\n  The policy's internalize entry points will be called only if the\n  policy has registered interest in the label namespace.\n\n  @return 0 on success, Otherwise, return non-zero if an error occurs\n  while internalizing the label data.\n\n*/\ntypedef int mpo_cred_label_internalize_t(\n\tstruct label *label,\n\tchar *element_name,\n\tchar *element_data\n);\n/**\n  @brief Update credential at exec time\n  @param old_cred Existing subject credential\n  @param new_cred New subject credential to be labeled\n  @param p Object process.\n  @param vp File being executed\n  @param offset Offset of binary within file being executed\n  @param scriptvp Script being executed by interpreter, if any.\n  @param vnodelabel Label corresponding to vp\n  @param scriptvnodelabel Script vnode label\n  @param execlabel Userspace provided execution label\n  @param csflags Code signing flags to be set after exec\n  @param macpolicyattr MAC policy-specific spawn attribute data.\n  @param macpolicyattrlen Length of policy-specific spawn attribute data.\n  @see mac_execve\n  @see mpo_cred_check_label_update_execve_t\n  @see mpo_vnode_check_exec_t\n\n  Update the label of a newly created credential (new) from the\n  existing subject credential (old).  This call occurs when a process\n  executes the passed vnode and one of the loaded policy modules has\n  returned success from the mpo_cred_check_label_update_execve entry point.\n  Access has already been checked via the mpo_vnode_check_exec entry\n  point, this entry point is only used to update any policy state.\n\n  The supplied vnode and vnodelabel correspond with the file actually\n  being executed; in the case that the file is interpreted (for\n  example, a script), the label of the original exec-time vnode has\n  been preserved in scriptvnodelabel.\n\n  The final label, execlabel, corresponds to a label supplied by a\n  user space application through the use of the mac_execve system call.\n\n  If non-NULL, the value pointed to by disjointp will be set to 0 to\n  indicate that the old and new credentials are not disjoint, or 1 to\n  indicate that they are.\n\n  The vnode lock is held during this operation.  No changes should be\n  made to the old credential structure.\n  @return 0 on success, Otherwise, return non-zero if update results in\n  termination of child.\n*/\ntypedef int mpo_cred_label_update_execve_t(\n\tkauth_cred_t old_cred,\n\tkauth_cred_t new_cred,\n\tstruct proc *p,\n\tstruct vnode *vp,\n\toff_t offset,\n\tstruct vnode *scriptvp,\n\tstruct label *vnodelabel,\n\tstruct label *scriptvnodelabel,\n\tstruct label *execlabel,\n\tu_int *csflags,\n\tvoid *macpolicyattr,\n\tsize_t macpolicyattrlen,\n\tint *disjointp\n);\n/**\n  @brief Update a credential label\n  @param cred The existing credential\n  @param newlabel A new label to apply to the credential\n  @see mpo_cred_check_label_update_t\n  @see mac_set_proc\n\n  Update the label on a user credential, using the supplied new label.\n  This is called as a result of a process relabel operation.  Access\n  control was already confirmed by mpo_cred_check_label_update.\n*/\ntypedef void mpo_cred_label_update_t(\n\tkauth_cred_t cred,\n\tstruct label *newlabel\n);\n/**\n  @brief Create a new devfs device\n  @param dev Major and minor numbers of special file\n  @param de \"inode\" of new device file\n  @param label Destination label\n  @param fullpath Path relative to mount (e.g. /dev) of new device file\n\n  This entry point labels a new devfs device. The label will likely be based\n  on the path to the device, or the major and minor numbers.\n  The policy should store an appropriate label into 'label'.\n*/\ntypedef void mpo_devfs_label_associate_device_t(\n\tdev_t dev,\n\tstruct devnode *de,\n\tstruct label *label,\n\tconst char *fullpath\n);\n/**\n  @brief Create a new devfs directory\n  @param dirname Name of new directory\n  @param dirnamelen Length of 'dirname'\n  @param de \"inode\" of new directory\n  @param label Destination label\n  @param fullpath Path relative to mount (e.g. /dev) of new directory\n\n  This entry point labels a new devfs directory. The label will likely be\n  based on the path of the new directory. The policy should store an appropriate\n  label into 'label'. The devfs root directory is labelled in this way.\n*/\ntypedef void mpo_devfs_label_associate_directory_t(\n\tconst char *dirname,\n\tint dirnamelen,\n\tstruct devnode *de,\n\tstruct label *label,\n\tconst char *fullpath\n);\n/**\n  @brief Copy a devfs label\n  @param src Source devfs label\n  @param dest Destination devfs label\n\n  Copy the label information from src to dest.  The devfs file system\n  often duplicates (splits) existing device nodes rather than creating\n  new ones.\n*/\ntypedef void mpo_devfs_label_copy_t(\n\tstruct label *src,\n\tstruct label *dest\n);\n/**\n  @brief Destroy devfs label\n  @param label The label to be destroyed\n\n  Destroy a devfs entry label.  Since the object is going out\n  of scope, policy modules should free any internal storage associated\n  with the label so that it may be destroyed.\n*/\ntypedef void mpo_devfs_label_destroy_t(\n\tstruct label *label\n);\n/**\n  @brief Initialize devfs label\n  @param label New label to initialize\n\n  Initialize the label for a newly instantiated devfs entry.  Sleeping\n  is permitted.\n*/\ntypedef void mpo_devfs_label_init_t(\n\tstruct label *label\n);\n/**\n  @brief Update a devfs label after relabelling its vnode\n  @param mp Devfs mount point\n  @param de Affected devfs directory entry\n  @param delabel Label of devfs directory entry\n  @param vp Vnode associated with de\n  @param vnodelabel New label of vnode\n\n  Update a devfs label when its vnode is manually relabelled,\n  for example with setfmac(1). Typically, this will simply copy\n  the vnode label into the devfs label.\n*/\ntypedef void mpo_devfs_label_update_t(\n\tstruct mount *mp,\n\tstruct devnode *de,\n\tstruct label *delabel,\n\tstruct vnode *vp,\n\tstruct label *vnodelabel\n);\n/**\n  @brief Access control for sending an exception to an exception action\n  @param crashlabel The crashing process's label\n  @param action Exception action\n  @param exclabel Policy label for exception action\n\n  Determine whether the the exception message caused by the victim\n  process can be sent to the exception action.\n\n  @return Return 0 if the message can be sent, otherwise an\n  appropriate value for errno should be returned.\n*/\ntypedef int mpo_exc_action_check_exception_send_t(\n\tstruct label *crashlabel,\n\tstruct exception_action *action,\n\tstruct label *exclabel\n);\n/**\n  @brief Create an exception action label\n  @param action Exception action to label\n  @param exclabel Policy label to be filled in for exception action\n\n  Set the label on an exception action.\n*/\ntypedef void mpo_exc_action_label_associate_t(\n\tstruct exception_action *action,\n\tstruct label *exclabel\n);\n/**\n  @brief Copy an exception action label\n  @param src Source exception action label\n  @param dest Destination exception action label\n\n  Copy the label information from src to dest.\n  Exception actions are often inherited, e.g. from parent to child.\n  In that case, the labels are copied instead of created fresh.\n*/\ntypedef void mpo_exc_action_label_copy_t(\n\tstruct label *src,\n\tstruct label *dest\n);\n/**\n @brief Destroy exception action label\n @param label The label to be destroyed\n\n Destroy the label on an exception action.  In this entry point, a\n policy module should free any internal storage associated with\n label so that it may be destroyed.\n*/\ntypedef void mpo_exc_action_label_destroy_t(\n\tstruct label *label\n);\n/**\n  @brief Initialize exception action label\n  @param label New label to initialize\n\n  Initialize a label for an exception action.\n*/\ntypedef int mpo_exc_action_label_init_t(\n\tstruct label *label\n);\n/**\n  @brief Update the label on an exception action\n  @param p Process to update the label from\n  @param exclabel Policy label to be updated for exception action\n\n  Update the credentials of an exception action with the given task.\n*/\ntypedef void mpo_exc_action_label_update_t(\n\tstruct proc *p,\n\tstruct label *exclabel\n);\n/**\n  @brief Access control for changing the offset of a file descriptor\n  @param cred Subject credential\n  @param fg Fileglob structure\n  @param label Policy label for fg\n\n  Determine whether the subject identified by the credential can\n  change the offset of the file represented by fg.\n\n  @return Return 0 if access if granted, otherwise an appropriate\n  value for errno should be returned.\n*/\ntypedef int mpo_file_check_change_offset_t(\n\tkauth_cred_t cred,\n\tstruct fileglob *fg,\n\tstruct label *label\n);\n/**\n  @brief Access control for creating a file descriptor\n  @param cred Subject credential\n\n  Determine whether the subject identified by the credential can\n  allocate a new file descriptor.\n\n  @return Return 0 if access if granted, otherwise an appropriate\n  value for errno should be returned.\n*/\ntypedef int mpo_file_check_create_t(\n\tkauth_cred_t cred\n);\n/**\n  @brief Access control for duplicating a file descriptor\n  @param cred Subject credential\n  @param fg Fileglob structure\n  @param label Policy label for fg\n  @param newfd New file descriptor number\n\n  Determine whether the subject identified by the credential can\n  duplicate the fileglob structure represented by fg and as file\n  descriptor number newfd.\n\n  @return Return 0 if access if granted, otherwise an appropriate\n  value for errno should be returned.\n*/\ntypedef int mpo_file_check_dup_t(\n\tkauth_cred_t cred,\n\tstruct fileglob *fg,\n\tstruct label *label,\n\tint newfd\n);\n/**\n  @brief Access control check for fcntl\n  @param cred Subject credential\n  @param fg Fileglob structure\n  @param label Policy label for fg\n  @param cmd Control operation to be performed; see fcntl(2)\n  @param arg fcnt arguments; see fcntl(2)\n\n  Determine whether the subject identified by the credential can perform\n  the file control operation indicated by cmd.\n\n  @return Return 0 if access is granted, otherwise an appropriate value for\n  errno should be returned.\n*/\ntypedef int mpo_file_check_fcntl_t(\n\tkauth_cred_t cred,\n\tstruct fileglob *fg,\n\tstruct label *label,\n\tint cmd,\n\tuser_long_t arg\n);\n/**\n  @brief Access control check for mac_get_fd\n  @param cred Subject credential\n  @param fg Fileglob structure\n  @param elements Element buffer\n  @param len Length of buffer\n\n  Determine whether the subject identified by the credential should be allowed\n  to get an externalized version of the label on the object indicated by fd.\n\n  @return Return 0 if access is granted, otherwise an appropriate value for\n  errno should be returned.\n*/\ntypedef int mpo_file_check_get_t(\n\tkauth_cred_t cred,\n\tstruct fileglob *fg,\n\tchar *elements,\n\tint len\n);\n/**\n  @brief Access control for getting the offset of a file descriptor\n  @param cred Subject credential\n  @param fg Fileglob structure\n  @param label Policy label for fg\n\n  Determine whether the subject identified by the credential can\n  get the offset of the file represented by fg.\n\n  @return Return 0 if access if granted, otherwise an appropriate\n  value for errno should be returned.\n*/\ntypedef int mpo_file_check_get_offset_t(\n\tkauth_cred_t cred,\n\tstruct fileglob *fg,\n\tstruct label *label\n);\n/**\n  @brief Access control for inheriting a file descriptor\n  @param cred Subject credential\n  @param fg Fileglob structure\n  @param label Policy label for fg\n\n  Determine whether the subject identified by the credential can\n  inherit the fileglob structure represented by fg.\n\n  @return Return 0 if access if granted, otherwise an appropriate\n  value for errno should be returned.\n*/\ntypedef int mpo_file_check_inherit_t(\n\tkauth_cred_t cred,\n\tstruct fileglob *fg,\n\tstruct label *label\n);\n/**\n  @brief Access control check for file ioctl\n  @param cred Subject credential\n  @param fg Fileglob structure\n  @param label Policy label for fg\n  @param cmd The ioctl command; see ioctl(2)\n\n  Determine whether the subject identified by the credential can perform\n  the ioctl operation indicated by cmd.\n\n  @warning Since ioctl data is opaque from the standpoint of the MAC\n  framework, policies must exercise extreme care when implementing\n  access control checks.\n\n  @return Return 0 if access is granted, otherwise an appropriate value for\n  errno should be returned.\n\n*/\ntypedef int mpo_file_check_ioctl_t(\n\tkauth_cred_t cred,\n\tstruct fileglob *fg,\n\tstruct label *label,\n\tunsigned int cmd\n);\n/**\n  @brief Access control check for file locking\n  @param cred Subject credential\n  @param fg Fileglob structure\n  @param label Policy label for fg\n  @param op The lock operation (F_GETLK, F_SETLK, F_UNLK)\n  @param fl The flock structure\n\n  Determine whether the subject identified by the credential can perform\n  the lock operation indicated by op and fl on the file represented by fg.\n\n  @return Return 0 if access is granted, otherwise an appropriate value for\n  errno should be returned.\n\n*/\ntypedef int mpo_file_check_lock_t(\n\tkauth_cred_t cred,\n\tstruct fileglob *fg,\n\tstruct label *label,\n\tint op,\n\tstruct flock *fl\n);\n/**\n  @brief Check with library validation if a macho slice is allowed to be combined into a proc.\n  @param p Subject process\n  @param fg Fileglob structure\n  @param slice_offset offset of the code slice\n  @param error_message error message returned to user-space in case of error (userspace pointer)\n  @param error_message_size error message size\n\n  Its a little odd that the MAC/kext writes into userspace since this\n  implies there is only one MAC module that implements this, however\n  the alterantive is to allocate memory in xnu, on the hope that\n  the MAC module will use it, or allocated in the MAC module and then\n  free it in xnu. Either of these are very appeling, so lets go with\n  the slightly more hacky way.\n\n  @return Return 0 if access is granted, otherwise an appropriate value for\n  errno should be returned.\n*/\ntypedef int mpo_file_check_library_validation_t(\n\tstruct proc *p,\n\tstruct fileglob *fg,\n\toff_t slice_offset,\n\tuser_long_t error_message,\n\tsize_t error_message_size\n);\n/**\n  @brief Access control check for mapping a file\n  @param cred Subject credential\n  @param fg fileglob representing file to map\n  @param label Policy label associated with vp\n  @param prot mmap protections; see mmap(2)\n  @param flags Type of mapped object; see mmap(2)\n  @param maxprot Maximum rights\n\n  Determine whether the subject identified by the credential should be\n  allowed to map the file represented by fg with the protections specified\n  in prot.  The maxprot field holds the maximum permissions on the new\n  mapping, a combination of VM_PROT_READ, VM_PROT_WRITE, and VM_PROT_EXECUTE.\n  To avoid overriding prior access control checks, a policy should only\n  remove flags from maxprot.\n\n  @return Return 0 if access is granted, otherwise an appropriate value for\n  errno should be returned. Suggested failure: EACCES for label mismatch or\n  EPERM for lack of privilege.\n*/\ntypedef int mpo_file_check_mmap_t(\n\tkauth_cred_t cred,\n\tstruct fileglob *fg,\n\tstruct label *label,\n\tint prot,\n\tint flags,\n\tuint64_t file_pos,\n\tint *maxprot\n);\n/**\n  @brief Downgrade the mmap protections\n  @param cred Subject credential\n  @param fg file to map\n  @param label Policy label associated with vp\n  @param prot mmap protections to be downgraded\n\n  Downgrade the mmap protections based on the subject and object labels.\n*/\ntypedef void mpo_file_check_mmap_downgrade_t(\n\tkauth_cred_t cred,\n\tstruct fileglob *fg,\n\tstruct label *label,\n\tint *prot\n);\n/**\n  @brief Access control for receiving a file descriptor\n  @param cred Subject credential\n  @param fg Fileglob structure\n  @param label Policy label for fg\n\n  Determine whether the subject identified by the credential can\n  receive the fileglob structure represented by fg.\n\n  @return Return 0 if access if granted, otherwise an appropriate\n  value for errno should be returned.\n*/\ntypedef int mpo_file_check_receive_t(\n\tkauth_cred_t cred,\n\tstruct fileglob *fg,\n\tstruct label *label\n);\n/**\n  @brief Access control check for mac_set_fd\n  @param cred Subject credential\n  @param fg Fileglob structure\n  @param elements Elements buffer\n  @param len Length of elements buffer\n\n  Determine whether the subject identified by the credential can\n  perform the mac_set_fd operation.  The mac_set_fd operation is used\n  to associate a MAC label with a file.\n\n  @return Return 0 if access is granted, otherwise an appropriate value for\n  errno should be returned.\n*/\ntypedef int mpo_file_check_set_t(\n\tkauth_cred_t cred,\n\tstruct fileglob *fg,\n\tchar *elements,\n\tint len\n);\n/**\n  @brief Create file label\n  @param cred Subject credential\n  @param fg Fileglob structure\n  @param label Policy label for fg\n*/\ntypedef void mpo_file_label_associate_t(\n\tkauth_cred_t cred,\n\tstruct fileglob *fg,\n\tstruct label *label\n);\n/**\n @brief Destroy file label\n @param label The label to be destroyed\n\n Destroy the label on a file descriptor.  In this entry point, a\n policy module should free any internal storage associated with\n label so that it may be destroyed.\n*/\ntypedef void mpo_file_label_destroy_t(\n\tstruct label *label\n);\n/**\n  @brief Initialize file label\n  @param label New label to initialize\n*/\ntypedef void mpo_file_label_init_t(\n\tstruct label *label\n);\n/**\n  @brief Access control check for relabeling network interfaces\n  @param cred Subject credential\n  @param ifp network interface being relabeled\n  @param ifnetlabel Current label of the network interfaces\n  @param newlabel New label to apply to the network interfaces\n  @see mpo_ifnet_label_update_t\n\n  Determine whether the subject identified by the credential can\n  relabel the network interface represented by ifp to the supplied\n  new label (newlabel).\n\n  @return Return 0 if access is granted, otherwise an appropriate value for\n  errno should be returned.\n*/\ntypedef int mpo_ifnet_check_label_update_t(\n\tkauth_cred_t cred,\n\tstruct ifnet *ifp,\n\tstruct label *ifnetlabel,\n\tstruct label *newlabel\n);\n/**\n  @brief Access control check for relabeling network interfaces\n  @param ifp Network interface mbuf will be transmitted through\n  @param ifnetlabel Label of the network interfaces\n  @param m The mbuf to be transmitted\n  @param mbuflabel Label of the mbuf to be transmitted\n  @param family Address Family, AF_*\n  @param type Type of socket, SOCK_{STREAM,DGRAM,RAW}\n\n  Determine whether the mbuf with label mbuflabel may be transmitted\n  through the network interface represented by ifp that has the\n  label ifnetlabel.\n\n  @return Return 0 if access is granted, otherwise an appropriate value for\n  errno should be returned.\n*/\ntypedef int mpo_ifnet_check_transmit_t(\n\tstruct ifnet *ifp,\n\tstruct label *ifnetlabel,\n\tstruct mbuf *m,\n\tstruct label *mbuflabel,\n\tint family,\n\tint type\n);\n/**\n  @brief Create a network interface label\n  @param ifp Network interface labeled\n  @param ifnetlabel Label for the network interface\n\n  Set the label of a newly created network interface, most likely\n  using the information in the supplied network interface struct.\n*/\ntypedef void mpo_ifnet_label_associate_t(\n\tstruct ifnet *ifp,\n\tstruct label *ifnetlabel\n);\n/**\n  @brief Copy an ifnet label\n  @param src Source ifnet label\n  @param dest Destination ifnet label\n\n  Copy the label information from src to dest.\n*/\ntypedef void mpo_ifnet_label_copy_t(\n\tstruct label *src,\n\tstruct label *dest\n);\n/**\n @brief Destroy ifnet label\n @param label The label to be destroyed\n\n Destroy the label on an ifnet label.  In this entry point, a\n policy module should free any internal storage associated with\n label so that it may be destroyed.\n*/\ntypedef void mpo_ifnet_label_destroy_t(\n\tstruct label *label\n);\n/**\n  @brief Externalize an ifnet label\n  @param label Label to be externalized\n  @param element_name Name of the label namespace for which labels should be\n  externalized\n  @param sb String buffer to be filled with a text representation of the label\n\n  Produce an external representation of the label on an interface.\n  An externalized label consists of a text representation of the\n  label contents that can be used with user applications.\n  Policy-agnostic user space tools will display this externalized\n  version.\n\n  @return 0 on success, return non-zero if an error occurs while\n  externalizing the label data.\n\n*/\ntypedef int mpo_ifnet_label_externalize_t(\n\tstruct label *label,\n\tchar *element_name,\n\tstruct sbuf *sb\n);\n/**\n  @brief Initialize ifnet label\n  @param label New label to initialize\n*/\ntypedef void mpo_ifnet_label_init_t(\n\tstruct label *label\n);\n/**\n  @brief Internalize an interface label\n  @param label Label to be internalized\n  @param element_name Name of the label namespace for which the label should\n  be internalized\n  @param element_data Text data to be internalized\n\n  Produce an interface label from an external representation.  An\n  externalized label consists of a text representation of the label\n  contents that can be used with user applications.  Policy-agnostic\n  user space tools will forward text version to the kernel for\n  processing by individual policy modules.\n\n  The policy's internalize entry points will be called only if the\n  policy has registered interest in the label namespace.\n\n  @return 0 on success, Otherwise, return non-zero if an error occurs\n  while internalizing the label data.\n\n*/\ntypedef int mpo_ifnet_label_internalize_t(\n\tstruct label *label,\n\tchar *element_name,\n\tchar *element_data\n);\n/**\n  @brief Recycle up a network interface label\n  @param label The label to be recycled\n\n  Recycle a network interface label.  Darwin caches the struct ifnet\n  of detached ifnets in a \"free pool\".  Before ifnets are returned\n  to the \"free pool\", policies can cleanup or overwrite any information\n  present in the label.\n*/\ntypedef void mpo_ifnet_label_recycle_t(\n\tstruct label *label\n);\n/**\n  @brief Update a network interface label\n  @param cred Subject credential\n  @param ifp The network interface to be relabeled\n  @param ifnetlabel The current label of the network interface\n  @param newlabel A new label to apply to the network interface\n  @see mpo_ifnet_check_label_update_t\n\n  Update the label on a network interface, using the supplied new label.\n*/\ntypedef void mpo_ifnet_label_update_t(\n\tkauth_cred_t cred,\n\tstruct ifnet *ifp,\n\tstruct label *ifnetlabel,\n\tstruct label *newlabel\n);\n/**\n  @brief Access control check for delivering a packet to a socket\n  @param inp inpcb the socket is associated with\n  @param inplabel Label of the inpcb\n  @param m The mbuf being received\n  @param mbuflabel Label of the mbuf being received\n  @param family Address family, AF_*\n  @param type Type of socket, SOCK_{STREAM,DGRAM,RAW}\n\n  Determine whether the mbuf with label mbuflabel may be received\n  by the socket associated with inpcb that has the label inplabel.\n\n  @return Return 0 if access is granted, otherwise an appropriate value for\n  errno should be returned.\n*/\ntypedef int mpo_inpcb_check_deliver_t(\n\tstruct inpcb *inp,\n\tstruct label *inplabel,\n\tstruct mbuf *m,\n\tstruct label *mbuflabel,\n\tint family,\n\tint type\n);\n/**\n  @brief Create an inpcb label\n  @param so Socket containing the inpcb to be labeled\n  @param solabel Label of the socket\n  @param inp inpcb to be labeled\n  @param inplabel Label for the inpcb\n\n  Set the label of a newly created inpcb, most likely\n  using the information in the socket and/or socket label.\n*/\ntypedef void mpo_inpcb_label_associate_t(\n\tstruct socket *so,\n\tstruct label *solabel,\n\tstruct inpcb *inp,\n\tstruct label *inplabel\n);\n/**\n @brief Destroy inpcb label\n @param label The label to be destroyed\n\n Destroy the label on an inpcb label.  In this entry point, a\n policy module should free any internal storage associated with\n label so that it may be destroyed.\n*/\ntypedef void mpo_inpcb_label_destroy_t(\n\tstruct label *label\n);\n/**\n  @brief Initialize inpcb label\n  @param label New label to initialize\n  @param flag M_WAITOK or M_NOWAIT\n*/\ntypedef int mpo_inpcb_label_init_t(\n\tstruct label *label,\n\tint flag\n);\n/**\n  @brief Recycle up an inpcb label\n  @param label The label to be recycled\n\n  Recycle an inpcb label.  Darwin allocates the inpcb as part of\n  the socket structure in some cases.  For this case we must recycle\n  rather than destroy the inpcb as it will be reused later.\n*/\ntypedef void mpo_inpcb_label_recycle_t(\n\tstruct label *label\n);\n/**\n  @brief Update an inpcb label from a socket label\n  @param so Socket containing the inpcb to be relabeled\n  @param solabel New label of the socket\n  @param inp inpcb to be labeled\n  @param inplabel Label for the inpcb\n\n  Set the label of a newly created inpcb due to a change in the\n  underlying socket label.\n*/\ntypedef void mpo_inpcb_label_update_t(\n\tstruct socket *so,\n\tstruct label *solabel,\n\tstruct inpcb *inp,\n\tstruct label *inplabel\n);\n/**\n  @brief Device hardware access control\n  @param devtype Type of device connected\n\n  This is the MAC Framework device access control, which is called by the I/O\n  Kit when a new device is connected to the system to determine whether that\n  device should be trusted.  A list of properties associated with the device\n  is passed as an XML-formatted string.  The routine should examine these\n  properties to determine the trustworthiness of the device.  A return value\n  of EPERM forces the device to be claimed by a special device driver that\n  will prevent its operation.\n\n  @warning This is an experimental interface and may change in the future.\n\n  @return Return EPERM to indicate that the device is untrusted and should\n  not be allowed to operate.  Return zero to indicate that the device is\n  trusted and should be allowed to operate normally.\n\n*/\ntypedef int mpo_iokit_check_device_t(\n\tchar *devtype,\n\tstruct mac_module_data *mdata\n);\n/**\n  @brief Access control check for opening an I/O Kit device\n  @param cred Subject credential\n  @param user_client User client instance\n  @param user_client_type User client type\n\n  Determine whether the subject identified by the credential can open an\n  I/O Kit device at the passed path of the passed user client class and\n  type.\n\n  @return Return 0 if access is granted, or an appropriate value for\n  errno should be returned.\n*/\ntypedef int mpo_iokit_check_open_t(\n\tkauth_cred_t cred,\n\tio_object_t user_client,\n\tunsigned int user_client_type\n);\n/**\n  @brief Access control check for setting I/O Kit device properties\n  @param cred Subject credential\n  @param entry Target device\n  @param properties Property list\n\n  Determine whether the subject identified by the credential can set\n  properties on an I/O Kit device.\n\n  @return Return 0 if access is granted, or an appropriate value for\n  errno should be returned.\n*/\ntypedef int mpo_iokit_check_set_properties_t(\n\tkauth_cred_t cred,\n\tio_object_t entry,\n\tio_object_t properties\n);\n/**\n  @brief Indicate desire to filter I/O Kit devices properties\n  @param cred Subject credential\n  @param entry Target device\n  @see mpo_iokit_check_get_property_t\n\n  Indicate whether this policy may restrict the subject credential\n  from reading properties of the target device.\n  If a policy returns success from this entry point, the\n  mpo_iokit_check_get_property entry point will later be called\n  for each property that the subject credential tries to read from\n  the target device.\n\n  This entry point is primarilly to optimize bulk property reads\n  by skipping calls to the mpo_iokit_check_get_property entry point\n  for credentials / devices no MAC policy is interested in.\n\n  @warning Even if a policy returns 0, it should behave correctly in\n  the presence of an invocation of mpo_iokit_check_get_property, as that\n  call may happen as a result of another policy requesting a transition.\n\n  @return Non-zero if a transition is required, 0 otherwise.\n */\ntypedef int mpo_iokit_check_filter_properties_t(\n\tkauth_cred_t cred,\n\tio_object_t entry\n);\n/**\n  @brief Access control check for getting I/O Kit device properties\n  @param cred Subject credential\n  @param entry Target device\n  @param name Property name \n\n  Determine whether the subject identified by the credential can get\n  properties on an I/O Kit device.\n\n  @return Return 0 if access is granted, or an appropriate value for\n  errno.\n*/\ntypedef int mpo_iokit_check_get_property_t(\n\tkauth_cred_t cred,\n\tio_object_t entry,\n\tconst char *name\n);\n/**\n  @brief Access control check for software HID control\n  @param cred Subject credential\n\n  Determine whether the subject identified by the credential can\n  control the HID (Human Interface Device) subsystem, such as to\n  post synthetic keypresses, pointer movement and clicks.\n\n  @return Return 0 if access is granted, or an appropriate value for\n  errno.\n*/\ntypedef int mpo_iokit_check_hid_control_t(\n\tkauth_cred_t cred\n);\n/**\n  @brief Create an IP reassembly queue label\n  @param fragment First received IP fragment\n  @param fragmentlabel Policy label for fragment\n  @param ipq IP reassembly queue to be labeled\n  @param ipqlabel Policy label to be filled in for ipq\n\n  Set the label on a newly created IP reassembly queue from\n  the mbuf header of the first received fragment.\n*/\ntypedef void mpo_ipq_label_associate_t(\n\tstruct mbuf *fragment,\n\tstruct label *fragmentlabel,\n\tstruct ipq *ipq,\n\tstruct label *ipqlabel\n);\n/**\n  @brief Compare an mbuf header label to an ipq label\n  @param fragment IP datagram fragment\n  @param fragmentlabel Policy label for fragment\n  @param ipq IP fragment reassembly queue\n  @param ipqlabel Policy label for ipq\n\n  Compare the label of the mbuf header containing an IP datagram\n  (fragment) fragment with the label of the passed IP fragment\n  reassembly queue (ipq). Return (1) for a successful match, or (0)\n  for no match. This call is made when the IP stack attempts to\n  find an existing fragment reassembly queue for a newly received\n  fragment; if this fails, a new fragment reassembly queue may be\n  instantiated for the fragment. Policies may use this entry point\n  to prevent the reassembly of otherwise matching IP fragments if\n  policy does not permit them to be reassembled based on the label\n  or other information.\n*/\ntypedef int mpo_ipq_label_compare_t(\n\tstruct mbuf *fragment,\n\tstruct label *fragmentlabel,\n\tstruct ipq *ipq,\n\tstruct label *ipqlabel\n);\n/**\n @brief Destroy IP reassembly queue label\n @param label The label to be destroyed\n\n Destroy the label on an IP fragment queue.  In this entry point, a\n policy module should free any internal storage associated with\n label so that it may be destroyed.\n*/\ntypedef void mpo_ipq_label_destroy_t(\n\tstruct label *label\n);\n/**\n  @brief Initialize IP reassembly queue label\n  @param label New label to initialize\n  @param flag M_WAITOK or M_NOWAIT\n\n  Initialize the label on a newly instantiated IP fragment reassembly\n  queue.  The flag field may be one of M_WAITOK and M_NOWAIT, and\n  should be employed to avoid performing a sleeping malloc(9) during\n  this initialization call. IP fragment reassembly queue allocation\n  frequently occurs in performance sensitive environments, and the\n  implementation should be careful to avoid sleeping or long-lived\n  operations. This entry point is permitted to fail resulting in\n  the failure to allocate the IP fragment reassembly queue.\n*/\ntypedef int mpo_ipq_label_init_t(\n\tstruct label *label,\n\tint flag\n);\n/**\n  @brief Update the label on an IP fragment reassembly queue\n  @param fragment IP fragment\n  @param fragmentlabel Policy label for fragment\n  @param ipq IP fragment reassembly queue\n  @param ipqlabel Policy label to be updated for ipq\n\n  Update the label on an IP fragment reassembly queue (ipq) based\n  on the acceptance of the passed IP fragment mbuf header (fragment).\n*/\ntypedef void mpo_ipq_label_update_t(\n\tstruct mbuf *fragment,\n\tstruct label *fragmentlabel,\n\tstruct ipq *ipq,\n\tstruct label *ipqlabel\n);\n/**\n @brief Assign a label to a new mbuf\n @param bpf_d BPF descriptor\n @param b_label Policy label for bpf_d\n @param m Object; mbuf\n @param m_label Policy label to fill in for m\n\n Set the label on the mbuf header of a newly created datagram\n generated using the passed BPF descriptor. This call is made when\n a write is performed to the BPF device associated with the passed\n BPF descriptor.\n*/\ntypedef void mpo_mbuf_label_associate_bpfdesc_t(\n\tstruct bpf_d *bpf_d,\n\tstruct label *b_label,\n\tstruct mbuf *m,\n\tstruct label *m_label\n);\n/**\n @brief Assign a label to a new mbuf\n @param ifp Interface descriptor\n @param i_label Existing label of ifp\n @param m Object; mbuf\n @param m_label Policy label to fill in for m\n\n Label an mbuf based on the interface from which it was received.\n*/\ntypedef void mpo_mbuf_label_associate_ifnet_t(\n\tstruct ifnet *ifp,\n\tstruct label *i_label,\n\tstruct mbuf *m,\n\tstruct label *m_label\n);\n/**\n @brief Assign a label to a new mbuf\n @param inp inpcb structure\n @param i_label Existing label of inp\n @param m Object; mbuf\n @param m_label Policy label to fill in for m\n\n Label an mbuf based on the inpcb from which it was derived.\n*/\ntypedef void mpo_mbuf_label_associate_inpcb_t(\n\tstruct inpcb *inp,\n\tstruct label *i_label,\n\tstruct mbuf *m,\n\tstruct label *m_label\n);\n/**\n  @brief Set the label on a newly reassembled IP datagram\n  @param ipq IP fragment reassembly queue\n  @param ipqlabel Policy label for ipq\n  @param mbuf IP datagram to be labeled\n  @param mbuflabel Policy label to be filled in for mbuf\n\n  Set the label on a newly reassembled IP datagram (mbuf) from the IP\n  fragment reassembly queue (ipq) from which it was generated.\n*/\ntypedef void mpo_mbuf_label_associate_ipq_t(\n\tstruct ipq *ipq,\n\tstruct label *ipqlabel,\n\tstruct mbuf *mbuf,\n\tstruct label *mbuflabel\n);\n/**\n @brief Assign a label to a new mbuf\n @param ifp Subject; network interface\n @param i_label Existing label of ifp\n @param m Object; mbuf\n @param m_label Policy label to fill in for m\n\n Set the label on the mbuf header of a newly created datagram\n generated for the purposes of a link layer response for the passed\n interface. This call may be made in a number of situations, including\n for ARP or ND6 responses in the IPv4 and IPv6 stacks.\n*/\ntypedef void mpo_mbuf_label_associate_linklayer_t(\n\tstruct ifnet *ifp,\n\tstruct label *i_label,\n\tstruct mbuf *m,\n\tstruct label *m_label\n);\n/**\n @brief Assign a label to a new mbuf\n @param oldmbuf mbuf headerder for existing datagram for existing datagram\n @param oldmbuflabel Policy label for oldmbuf\n @param ifp Network interface\n @param ifplabel Policy label for ifp\n @param newmbuf mbuf header to be labeled for new datagram\n @param newmbuflabel Policy label for newmbuf\n\n Set the label on the mbuf header of a newly created datagram\n generated from the existing passed datagram when it is processed\n by the passed multicast encapsulation interface. This call is made\n when an mbuf is to be delivered using the virtual interface.\n*/\ntypedef void mpo_mbuf_label_associate_multicast_encap_t(\n\tstruct mbuf *oldmbuf,\n\tstruct label *oldmbuflabel,\n\tstruct ifnet *ifp,\n\tstruct label *ifplabel,\n\tstruct mbuf *newmbuf,\n\tstruct label *newmbuflabel\n);\n/**\n @brief Assign a label to a new mbuf\n @param oldmbuf Received datagram\n @param oldmbuflabel Policy label for oldmbuf\n @param newmbuf Newly created datagram\n @param newmbuflabel Policy label for newmbuf\n\n Set the label on the mbuf header of a newly created datagram generated\n by the IP stack in response to an existing received datagram (oldmbuf).\n This call may be made in a number of situations, including when responding\n to ICMP request datagrams.\n*/\ntypedef void mpo_mbuf_label_associate_netlayer_t(\n\tstruct mbuf *oldmbuf,\n\tstruct label *oldmbuflabel,\n\tstruct mbuf *newmbuf,\n\tstruct label *newmbuflabel\n);\n/**\n  @brief Assign a label to a new mbuf\n  @param so Socket to label\n  @param so_label Policy label for socket\n  @param m Object; mbuf\n  @param m_label Policy label to fill in for m\n\n  An mbuf structure is used to store network traffic in transit.\n  When an application sends data to a socket or a pipe, it is wrapped\n  in an mbuf first.  This function sets the label on a newly created mbuf header\n  based on the socket sending the data.  The contents of the label should be\n  suitable for performing an access check on the receiving side of the\n  communication.\n\n  Only labeled MBUFs will be presented to the policy via this entrypoint.\n*/\ntypedef void mpo_mbuf_label_associate_socket_t(\n\tsocket_t so,\n\tstruct label *so_label,\n\tstruct mbuf *m,\n\tstruct label *m_label\n);\n/**\n  @brief Copy a mbuf label\n  @param src Source label\n  @param dest Destination label\n\n  Copy the mbuf label information in src into dest.\n\n  Only called when both source and destination mbufs have labels.\n*/\ntypedef void mpo_mbuf_label_copy_t(\n\tstruct label *src,\n\tstruct label *dest\n);\n/**\n  @brief Destroy mbuf label\n  @param label The label to be destroyed\n\n  Destroy a mbuf label.  Since the\n  object is going out of scope, policy modules should free any\n  internal storage associated with the label so that it may be\n  destroyed.\n*/\ntypedef void mpo_mbuf_label_destroy_t(\n\tstruct label *label\n);\n/**\n  @brief Initialize mbuf label\n  @param label New label to initialize\n  @param flag Malloc flags\n\n  Initialize the label for a newly instantiated mbuf.\n\n  @warning Since it is possible for the flags to be set to\n  M_NOWAIT, the malloc operation may fail.\n\n  @return On success, 0, otherwise, an appropriate errno return value.\n*/\ntypedef int mpo_mbuf_label_init_t(\n\tstruct label *label,\n\tint flag\n);\n/**\n  @brief Access control check for fsctl\n  @param cred Subject credential\n  @param mp The mount point\n  @param label Label associated with the mount point\n  @param cmd Filesystem-dependent request code; see fsctl(2)\n\n  Determine whether the subject identified by the credential can perform\n  the volume operation indicated by com.\n\n  @warning The fsctl() system call is directly analogous to ioctl(); since\n  the associated data is opaque from the standpoint of the MAC framework\n  and since these operations can affect many aspects of system operation,\n  policies must exercise extreme care when implementing access control checks.\n\n  @return Return 0 if access is granted, otherwise an appropriate value for\n  errno should be returned.\n*/\ntypedef int mpo_mount_check_fsctl_t(\n\tkauth_cred_t cred,\n\tstruct mount *mp,\n\tstruct label *label,\n\tunsigned int cmd\n);\n/**\n  @brief Access control check for the retrieval of file system attributes\n  @param cred Subject credential\n  @param mp The mount structure of the file system\n  @param vfa The attributes requested\n\n  This entry point determines whether given subject can get information\n  about the given file system.  This check happens during statfs() syscalls,\n  but is also used by other parts within the kernel such as the audit system.\n\n  @return Return 0 if access is granted, otherwise an appropriate value for\n  errno should be returned.\n\n  @note Policies may change the contents of vfa to alter the list of\n  file system attributes returned.\n*/\n\ntypedef int mpo_mount_check_getattr_t(\n\tkauth_cred_t cred,\n\tstruct mount *mp,\n\tstruct label *mp_label,\n\tstruct vfs_attr *vfa\n);\n/**\n  @brief Access control check for mount point relabeling\n  @param cred Subject credential\n  @param mp Object file system mount point\n  @param mntlabel Policy label for fle system mount point\n\n  Determine whether the subject identified by the credential can relabel\n  the mount point. This call is made when a file system mount is updated.\n\n  @return Return 0 if access is granted, otherwise an appropriate value for\n  errno should be returned. Suggested failure: EACCES for label mismatch\n  or EPERM for lack of privilege.\n*/\ntypedef int mpo_mount_check_label_update_t(\n\tkauth_cred_t cred,\n\tstruct mount *mp,\n\tstruct label *mntlabel\n);\n/**\n  @brief Access control check for mounting a file system\n  @param cred Subject credential\n  @param vp Vnode that is to be the mount point\n  @param vlabel Label associated with the vnode\n  @param cnp Component name for vp\n  @param vfc_name Filesystem type name\n\n  Determine whether the subject identified by the credential can perform\n  the mount operation on the target vnode.\n\n  @return Return 0 if access is granted, otherwise an appropriate value for\n  errno should be returned.\n*/\ntypedef int mpo_mount_check_mount_t(\n\tkauth_cred_t cred,\n\tstruct vnode *vp,\n\tstruct label *vlabel,\n\tstruct componentname *cnp,\n\tconst char *vfc_name\n);\n/**\n  @brief Access control check for fs_snapshot_create\n  @param cred Subject credential\n  @mp Filesystem mount point to create snapshot of\n  @name Name of snapshot to create\n\n  Determine whether the subject identified by the credential can\n  create a snapshot of the filesystem at the given mount point.\n\n  @return Return 0 if access is granted, otherwise an appropriate value\n  for errno should be returned.\n*/\ntypedef int mpo_mount_check_snapshot_create_t(\n\tkauth_cred_t cred,\n\tstruct mount *mp,\n\tconst char *name\n);\n/**\n  @brief Access control check for fs_snapshot_delete\n  @param cred Subject credential\n  @mp Filesystem mount point to delete snapshot of\n  @name Name of snapshot to delete\n\n  Determine whether the subject identified by the credential can\n  delete the named snapshot from the filesystem at the given\n  mount point.\n\n  @return Return 0 if access is granted, otherwise an appropriate value\n  for errno should be returned.\n*/\ntypedef int mpo_mount_check_snapshot_delete_t(\n\tkauth_cred_t cred,\n\tstruct mount *mp,\n\tconst char *name\n);\n/**\n  @brief Access control check for fs_snapshot_revert\n  @param cred Subject credential\n  @mp Filesystem mount point to revert to snapshot\n  @name Name of snapshot to revert to\n\n  Determine whether the subject identified by the credential can\n  revert the filesystem at the given mount point to the named snapshot.\n\n  @return Return 0 if access is granted, otherwise an appropriate value\n  for errno should be returned.\n*/\ntypedef int mpo_mount_check_snapshot_revert_t(\n\tkauth_cred_t cred,\n\tstruct mount *mp,\n\tconst char *name\n);\n/**\n  @brief Access control check remounting a filesystem\n  @param cred Subject credential\n  @param mp The mount point\n  @param mlabel Label currently associated with the mount point\n\n  Determine whether the subject identified by the credential can perform\n  the remount operation on the target vnode.\n\n  @return Return 0 if access is granted, otherwise an appropriate value for\n  errno should be returned.\n*/\ntypedef int mpo_mount_check_remount_t(\n\tkauth_cred_t cred,\n\tstruct mount *mp,\n\tstruct label *mlabel\n);\n/**\n  @brief Access control check for the settting of file system attributes\n  @param cred Subject credential\n  @param mp The mount structure of the file system\n  @param vfa The attributes requested\n\n  This entry point determines whether given subject can set information\n  about the given file system, for example the volume name.\n\n  @return Return 0 if access is granted, otherwise an appropriate value for\n  errno should be returned.\n*/\n\ntypedef int mpo_mount_check_setattr_t(\n\tkauth_cred_t cred,\n\tstruct mount *mp,\n\tstruct label *mp_label,\n\tstruct vfs_attr *vfa\n);\n/**\n  @brief Access control check for file system statistics\n  @param cred Subject credential\n  @param mp Object file system mount\n  @param mntlabel Policy label for mp\n\n  Determine whether the subject identified by the credential can see\n  the results of a statfs performed on the file system. This call may\n  be made in a number of situations, including during invocations of\n  statfs(2) and related calls, as well as to determine what file systems\n  to exclude from listings of file systems, such as when getfsstat(2)\n  is invoked.\n\n  @return Return 0 if access is granted, otherwise an appropriate value for\n  errno should be returned. Suggested failure: EACCES for label mismatch\n  or EPERM for lack of privilege.\n*/\ntypedef int mpo_mount_check_stat_t(\n\tkauth_cred_t cred,\n\tstruct mount *mp,\n\tstruct label *mntlabel\n);\n/**\n  @brief Access control check for unmounting a filesystem\n  @param cred Subject credential\n  @param mp The mount point\n  @param mlabel Label associated with the mount point\n\n  Determine whether the subject identified by the credential can perform\n  the unmount operation on the target vnode.\n\n  @return Return 0 if access is granted, otherwise an appropriate value for\n  errno should be returned.\n*/\ntypedef int mpo_mount_check_umount_t(\n\tkauth_cred_t cred,\n\tstruct mount *mp,\n\tstruct label *mlabel\n);\n/**\n  @brief Create mount labels\n  @param cred Subject credential\n  @param mp Mount point of file system being mounted\n  @param mntlabel Label to associate with the new mount point\n  @see mpo_mount_label_init_t\n\n  Fill out the labels on the mount point being created by the supplied\n  user credential.  This call is made when file systems are first mounted.\n*/\ntypedef void mpo_mount_label_associate_t(\n\tkauth_cred_t cred,\n\tstruct mount *mp,\n\tstruct label *mntlabel\n);\n/**\n  @brief Destroy mount label\n  @param label The label to be destroyed\n\n  Destroy a file system mount label.  Since the\n  object is going out of scope, policy modules should free any\n  internal storage associated with the label so that it may be\n  destroyed.\n*/\ntypedef void mpo_mount_label_destroy_t(\n\tstruct label *label\n);\n/**\n  @brief Externalize a mount point label\n  @param label Label to be externalized\n  @param element_name Name of the label namespace for which labels should be\n  externalized\n  @param sb String buffer to be filled with a text representation of the label\n\n  Produce an external representation of the mount point label.  An\n  externalized label consists of a text representation of the label\n  contents that can be used with user applications.  Policy-agnostic\n  user space tools will display this externalized version.\n\n  The policy's externalize entry points will be called only if the\n  policy has registered interest in the label namespace.\n\n  @return 0 on success, return non-zero if an error occurs while\n  externalizing the label data.\n\n*/\ntypedef int mpo_mount_label_externalize_t(\n\tstruct label *label,\n\tchar *element_name,\n\tstruct sbuf *sb\n);\n/**\n  @brief Initialize mount point label\n  @param label New label to initialize\n\n  Initialize the label for a newly instantiated mount structure.\n  This label is typically used to store a default label in the case\n  that the file system has been mounted singlelabel.  Since some\n  file systems do not support persistent labels (extended attributes)\n  or are read-only (such as CD-ROMs), it is often necessary to store\n  a default label separately from the label of the mount point\n  itself.  Sleeping is permitted.\n*/\ntypedef void mpo_mount_label_init_t(\n\tstruct label *label\n);\n/**\n  @brief Internalize a mount point label\n  @param label Label to be internalized\n  @param element_name Name of the label namespace for which the label should\n  be internalized\n  @param element_data Text data to be internalized\n\n  Produce a mount point file system label from an external representation.\n  An externalized label consists of a text representation of the label\n  contents that can be used with user applications.  Policy-agnostic\n  user space tools will forward text version to the kernel for\n  processing by individual policy modules.\n\n  The policy's internalize entry points will be called only if the\n  policy has registered interest in the label namespace.\n\n  @return 0 on success, Otherwise, return non-zero if an error occurs\n  while internalizing the label data.\n\n*/\ntypedef int mpo_mount_label_internalize_t(\n\tstruct label *label,\n\tchar *element_name,\n\tchar *element_data\n);\n/**\n  @brief Set the label on an IPv4 datagram fragment\n  @param datagram Datagram being fragmented\n  @param datagramlabel Policy label for datagram\n  @param fragment New fragment\n  @param fragmentlabel Policy label for fragment\n\n  Called when an IPv4 datagram is fragmented into several smaller datagrams.\n  Policies implementing mbuf labels will typically copy the label from the\n  source datagram to the new fragment.\n*/\ntypedef void mpo_netinet_fragment_t(\n\tstruct mbuf *datagram,\n\tstruct label *datagramlabel,\n\tstruct mbuf *fragment,\n\tstruct label *fragmentlabel\n);\n/**\n  @brief Set the label on an ICMP reply\n  @param m mbuf containing the ICMP reply\n  @param mlabel Policy label for m\n\n  A policy may wish to update the label of an mbuf that refers to\n  an ICMP packet being sent in response to an IP packet.  This may\n  be called in response to a bad packet or an ICMP request.\n*/\ntypedef void mpo_netinet_icmp_reply_t(\n\tstruct mbuf *m,\n\tstruct label *mlabel\n);\n/**\n  @brief Set the label on a TCP reply\n  @param m mbuf containing the TCP reply\n  @param mlabel Policy label for m\n\n  Called for outgoing TCP packets not associated with an actual socket.\n*/\ntypedef void mpo_netinet_tcp_reply_t(\n\tstruct mbuf *m,\n\tstruct label *mlabel\n);\n/**\n  @brief Access control check for pipe ioctl\n  @param cred Subject credential\n  @param cpipe Object to be accessed\n  @param pipelabel The label on the pipe\n  @param cmd The ioctl command; see ioctl(2)\n\n  Determine whether the subject identified by the credential can perform\n  the ioctl operation indicated by cmd.\n\n  @warning Since ioctl data is opaque from the standpoint of the MAC\n  framework, policies must exercise extreme care when implementing\n  access control checks.\n\n  @return Return 0 if access is granted, otherwise an appropriate value for\n  errno should be returned.\n\n*/\ntypedef int mpo_pipe_check_ioctl_t(\n\tkauth_cred_t cred,\n\tstruct pipe *cpipe,\n\tstruct label *pipelabel,\n\tunsigned int cmd\n);\n/**\n  @brief Access control check for pipe kqfilter\n  @param cred Subject credential\n  @param kn Object knote\n  @param cpipe Object to be accessed\n  @param pipelabel Policy label for the pipe\n\n  Determine whether the subject identified by the credential can\n  receive the knote on the passed pipe.\n\n  @return Return 0 if access if granted, otherwise an appropriate\n  value for errno should be returned.\n*/\ntypedef int mpo_pipe_check_kqfilter_t(\n\tkauth_cred_t cred,\n\tstruct knote *kn,\n\tstruct pipe *cpipe,\n\tstruct label *pipelabel\n);\n/**\n  @brief Access control check for pipe relabel\n  @param cred Subject credential\n  @param cpipe Object to be accessed\n  @param pipelabel The current label on the pipe\n  @param newlabel The new label to be used\n\n  Determine whether the subject identified by the credential can\n  perform a relabel operation on the passed pipe.  The cred object holds\n  the credentials of the subject performing the operation.\n\n  @return Return 0 if access is granted, otherwise an appropriate value for\n  errno should be returned.\n\n*/\ntypedef int mpo_pipe_check_label_update_t(\n\tkauth_cred_t cred,\n\tstruct pipe *cpipe,\n\tstruct label *pipelabel,\n\tstruct label *newlabel\n);\n/**\n  @brief Access control check for pipe read\n  @param cred Subject credential\n  @param cpipe Object to be accessed\n  @param pipelabel The label on the pipe\n\n  Determine whether the subject identified by the credential can\n  perform a read operation on the passed pipe.  The cred object holds\n  the credentials of the subject performing the operation.\n\n  @return Return 0 if access is granted, otherwise an appropriate value for\n  errno should be returned.\n\n*/\ntypedef int mpo_pipe_check_read_t(\n\tkauth_cred_t cred,\n\tstruct pipe *cpipe,\n\tstruct label *pipelabel\n);\n/**\n  @brief Access control check for pipe select\n  @param cred Subject credential\n  @param cpipe Object to be accessed\n  @param pipelabel The label on the pipe\n  @param which The operation selected on: FREAD or FWRITE\n\n  Determine whether the subject identified by the credential can\n  perform a select operation on the passed pipe.  The cred object holds\n  the credentials of the subject performing the operation.\n\n  @return Return 0 if access is granted, otherwise an appropriate value for\n  errno should be returned.\n\n*/\ntypedef int mpo_pipe_check_select_t(\n\tkauth_cred_t cred,\n\tstruct pipe *cpipe,\n\tstruct label *pipelabel,\n\tint which\n);\n/**\n  @brief Access control check for pipe stat\n  @param cred Subject credential\n  @param cpipe Object to be accessed\n  @param pipelabel The label on the pipe\n\n  Determine whether the subject identified by the credential can\n  perform a stat operation on the passed pipe.  The cred object holds\n  the credentials of the subject performing the operation.\n\n  @return Return 0 if access is granted, otherwise an appropriate value for\n  errno should be returned.\n\n*/\ntypedef int mpo_pipe_check_stat_t(\n\tkauth_cred_t cred,\n\tstruct pipe *cpipe,\n\tstruct label *pipelabel\n);\n/**\n  @brief Access control check for pipe write\n  @param cred Subject credential\n  @param cpipe Object to be accessed\n  @param pipelabel The label on the pipe\n\n  Determine whether the subject identified by the credential can\n  perform a write operation on the passed pipe.  The cred object holds\n  the credentials of the subject performing the operation.\n\n  @return Return 0 if access is granted, otherwise an appropriate value for\n  errno should be returned.\n\n*/\ntypedef int mpo_pipe_check_write_t(\n\tkauth_cred_t cred,\n\tstruct pipe *cpipe,\n\tstruct label *pipelabel\n);\n/**\n  @brief Create a pipe label\n  @param cred Subject credential\n  @param cpipe object to be labeled\n  @param pipelabel Label for the pipe object\n\n  Create a label for the pipe object being created by the supplied\n  user credential. This call is made when the pipe is being created\n  XXXPIPE(for one or both sides of the pipe?).\n\n*/\ntypedef void mpo_pipe_label_associate_t(\n\tkauth_cred_t cred,\n\tstruct pipe *cpipe,\n\tstruct label *pipelabel\n);\n/**\n  @brief Copy a pipe label\n  @param src Source pipe label\n  @param dest Destination pipe label\n\n  Copy the pipe label associated with src to dest.\n  XXXPIPE Describe when this is used: most likely during pipe creation to\n          copy from rpipe to wpipe.\n*/\ntypedef void mpo_pipe_label_copy_t(\n\tstruct label *src,\n\tstruct label *dest\n);\n/**\n  @brief Destroy pipe label\n  @param label The label to be destroyed\n\n  Destroy a pipe label.  Since the object is going out of scope,\n  policy modules should free any internal storage associated with the\n  label so that it may be destroyed.\n*/\ntypedef void mpo_pipe_label_destroy_t(\n\tstruct label *label\n);\n/**\n  @brief Externalize a pipe label\n  @param label Label to be externalized\n  @param element_name Name of the label namespace for which labels should be\n  externalized\n  @param sb String buffer to be filled with a text representation of the label\n\n  Produce an external representation of the label on a pipe.\n  An externalized label consists of a text representation\n  of the label contents that can be used with user applications.\n  Policy-agnostic user space tools will display this externalized\n  version.\n\n  The policy's externalize entry points will be called only if the\n  policy has registered interest in the label namespace.\n\n  @return 0 on success, return non-zero if an error occurs while\n  externalizing the label data.\n\n*/\ntypedef int mpo_pipe_label_externalize_t(\n\tstruct label *label,\n\tchar *element_name,\n\tstruct sbuf *sb\n);\n/**\n  @brief Initialize pipe label\n  @param label New label to initialize\n\n  Initialize label storage for use with a newly instantiated pipe object.\n  Sleeping is permitted.\n*/\ntypedef void mpo_pipe_label_init_t(\n\tstruct label *label\n);\n/**\n  @brief Internalize a pipe label\n  @param label Label to be internalized\n  @param element_name Name of the label namespace for which the label should\n  be internalized\n  @param element_data Text data to be internalized\n\n  Produce a pipe label from an external representation.  An\n  externalized label consists of a text representation of the label\n  contents that can be used with user applications.  Policy-agnostic\n  user space tools will forward text version to the kernel for\n  processing by individual policy modules.\n\n  The policy's internalize entry points will be called only if the\n  policy has registered interest in the label namespace.\n\n  @return 0 on success, Otherwise, return non-zero if an error occurs\n  while internalizing the label data.\n\n*/\ntypedef int mpo_pipe_label_internalize_t(\n\tstruct label *label,\n\tchar *element_name,\n\tchar *element_data\n);\n/**\n  @brief Update a pipe label\n  @param cred Subject credential\n  @param cpipe Object to be labeled\n  @param oldlabel Existing pipe label\n  @param newlabel New label to replace existing label\n  @see mpo_pipe_check_label_update_t\n\n  The subject identified by the credential has previously requested\n  and was authorized to relabel the pipe; this entry point allows\n  policies to perform the actual relabel operation.  Policies should\n  update oldlabel using the label stored in the newlabel parameter.\n\n*/\ntypedef void mpo_pipe_label_update_t(\n\tkauth_cred_t cred,\n\tstruct pipe *cpipe,\n\tstruct label *oldlabel,\n\tstruct label *newlabel\n);\n/**\n  @brief Policy unload event\n  @param mpc MAC policy configuration\n\n  This is the MAC Framework policy unload event.  This entry point will\n  only be called if the module's policy configuration allows unload (if\n  the MPC_LOADTIME_FLAG_UNLOADOK is set).  Most security policies won't\n  want to be unloaded; they should set their flags to prevent this\n  entry point from being called.\n\n  @warning During this call, the mac policy list mutex is held, so\n  sleep operations cannot be performed, and calls out to other kernel\n  subsystems must be made with caution.\n\n  @see MPC_LOADTIME_FLAG_UNLOADOK\n*/\ntypedef void mpo_policy_destroy_t(\n\tstruct mac_policy_conf *mpc\n);\n/**\n  @brief Policy initialization event\n  @param mpc MAC policy configuration\n  @see mac_policy_register\n  @see mpo_policy_initbsd_t\n\n  This is the MAC Framework policy initialization event.  This entry\n  point is called during mac_policy_register, when the policy module\n  is first registered with the MAC Framework.  This is often done very\n  early in the boot process, after the kernel Mach subsystem has been\n  initialized, but prior to the BSD subsystem being initialized.\n  Since the kernel BSD services are not yet available, it is possible\n  that some initialization must occur later, possibly in the\n  mpo_policy_initbsd_t policy entry point, such as registering BSD system\n  controls (sysctls).  Policy modules loaded at boot time will be\n  registered and initialized before labeled Mach objects are created.\n\n  @warning During this call, the mac policy list mutex is held, so\n  sleep operations cannot be performed, and calls out to other kernel\n  subsystems must be made with caution.\n*/\ntypedef void mpo_policy_init_t(\n\tstruct mac_policy_conf *mpc\n);\n/**\n  @brief Policy BSD initialization event\n  @param mpc MAC policy configuration\n  @see mpo_policy_init_t\n\n  This entry point is called after the kernel BSD subsystem has been\n  initialized.  By this point, the module should already be loaded,\n  registered, and initialized.  Since policy modules are initialized\n  before kernel BSD services are available, this second initialization\n  phase is necessary.  At this point, BSD services (memory management,\n  synchronization primitives, vfs, etc.) are available, but the first\n  process has not yet been created.  Mach-related objects and tasks\n  will already be fully initialized and may be in use--policies requiring\n  ubiquitous labeling may also want to implement mpo_policy_init_t.\n\n  @warning During this call, the mac policy list mutex is held, so\n  sleep operations cannot be performed, and calls out to other kernel\n  subsystems must be made with caution.\n*/\ntypedef void mpo_policy_initbsd_t(\n\tstruct mac_policy_conf *mpc\n);\n/**\n  @brief Policy extension service\n  @param p Calling process\n  @param call Policy-specific syscall number\n  @param arg Pointer to syscall arguments\n\n  This entry point provides a policy-multiplexed system call so that\n  policies may provide additional services to user processes without\n  registering specific system calls. The policy name provided during\n  registration is used to demux calls from userland, and the arguments\n  will be forwarded to this entry point.  When implementing new\n  services, security modules should be sure to invoke appropriate\n  access control checks from the MAC framework as needed.  For\n  example, if a policy implements an augmented signal functionality,\n  it should call the necessary signal access control checks to invoke\n  the MAC framework and other registered policies.\n\n  @warning Since the format and contents of the policy-specific\n  arguments are unknown to the MAC Framework, modules must perform the\n  required copyin() of the syscall data on their own.  No policy\n  mediation is performed, so policies must perform any necessary\n  access control checks themselves.  If multiple policies are loaded,\n  they will currently be unable to mediate calls to other policies.\n\n  @return In the event of an error, an appropriate value for errno\n  should be returned, otherwise return 0 upon success.\n*/\ntypedef int mpo_policy_syscall_t(\n\tstruct proc *p,\n\tint call,\n\tuser_addr_t arg\n);\n/**\n  @brief Access control check for POSIX semaphore create\n  @param cred Subject credential\n  @param name String name of the semaphore\n\n  Determine whether the subject identified by the credential can create\n  a POSIX semaphore specified by name.\n\n  @return Return 0 if access is granted, otherwise an appropriate value for\n  errno should be returned.\n*/\ntypedef int mpo_posixsem_check_create_t(\n\tkauth_cred_t cred,\n\tconst char *name\n);\n/**\n  @brief Access control check for POSIX semaphore open\n  @param cred Subject credential\n  @param ps Pointer to semaphore information structure\n  @param semlabel Label associated with the semaphore\n\n  Determine whether the subject identified by the credential can open\n  the named POSIX semaphore with label semlabel.\n\n  @return Return 0 if access is granted, otherwise an appropriate value for\n  errno should be returned.\n*/\ntypedef int mpo_posixsem_check_open_t(\n\tkauth_cred_t cred,\n\tstruct pseminfo *ps,\n\tstruct label *semlabel\n);\n/**\n  @brief Access control check for POSIX semaphore post\n  @param cred Subject credential\n  @param ps Pointer to semaphore information structure\n  @param semlabel Label associated with the semaphore\n\n  Determine whether the subject identified by the credential can unlock\n  the named POSIX semaphore with label semlabel.\n\n  @return Return 0 if access is granted, otherwise an appropriate value for\n  errno should be returned.\n*/\ntypedef int mpo_posixsem_check_post_t(\n\tkauth_cred_t cred,\n\tstruct pseminfo *ps,\n\tstruct label *semlabel\n);\n/**\n  @brief Access control check for POSIX semaphore unlink\n  @param cred Subject credential\n  @param ps Pointer to semaphore information structure\n  @param semlabel Label associated with the semaphore\n  @param name String name of the semaphore\n\n  Determine whether the subject identified by the credential can remove\n  the named POSIX semaphore with label semlabel.\n\n  @return Return 0 if access is granted, otherwise an appropriate value for\n  errno should be returned.\n*/\ntypedef int mpo_posixsem_check_unlink_t(\n\tkauth_cred_t cred,\n\tstruct pseminfo *ps,\n\tstruct label *semlabel,\n\tconst char *name\n);\n/**\n  @brief Access control check for POSIX semaphore wait\n  @param cred Subject credential\n  @param ps Pointer to semaphore information structure\n  @param semlabel Label associated with the semaphore\n\n  Determine whether the subject identified by the credential can lock\n  the named POSIX semaphore with label semlabel.\n\n  @return Return 0 if access is granted, otherwise an appropriate value for\n  errno should be returned.\n*/\ntypedef int mpo_posixsem_check_wait_t(\n\tkauth_cred_t cred,\n\tstruct pseminfo *ps,\n\tstruct label *semlabel\n);\n/**\n  @brief Create a POSIX semaphore label\n  @param cred Subject credential\n  @param ps Pointer to semaphore information structure\n  @param semlabel Label to associate with the new semaphore\n  @param name String name of the semaphore\n\n  Label a new POSIX semaphore.  The label was previously\n  initialized and associated with the semaphore.  At this time, an\n  appropriate initial label value should be assigned to the object and\n  stored in semalabel.\n*/\ntypedef void mpo_posixsem_label_associate_t(\n\tkauth_cred_t cred,\n\tstruct pseminfo *ps,\n\tstruct label *semlabel,\n\tconst char *name\n);\n/**\n  @brief Destroy POSIX semaphore label\n  @param label The label to be destroyed\n\n  Destroy a POSIX semaphore label.  Since the object is\n  going out of scope, policy modules should free any internal storage\n  associated with the label so that it may be destroyed.\n*/\ntypedef void mpo_posixsem_label_destroy_t(\n\tstruct label *label\n);\n/**\n  @brief Initialize POSIX semaphore label\n  @param label New label to initialize\n\n  Initialize the label for a newly instantiated POSIX semaphore. Sleeping\n  is permitted.\n*/\ntypedef void mpo_posixsem_label_init_t(\n\tstruct label *label\n);\n/**\n  @brief Access control check for POSIX shared memory region create\n  @param cred Subject credential\n  @param name String name of the shared memory region\n\n  Determine whether the subject identified by the credential can create\n  the POSIX shared memory region referenced by name.\n\n  @return Return 0 if access is granted, otherwise an appropriate value for\n  errno should be returned.\n*/\ntypedef int mpo_posixshm_check_create_t(\n\tkauth_cred_t cred,\n\tconst char *name\n);\n/**\n  @brief Access control check for mapping POSIX shared memory\n  @param cred Subject credential\n  @param ps Pointer to shared memory information structure\n  @param shmlabel Label associated with the shared memory region\n  @param prot mmap protections; see mmap(2)\n  @param flags shmat flags; see shmat(2)\n\n  Determine whether the subject identified by the credential can map\n  the POSIX shared memory segment associated with shmlabel.\n\n  @return Return 0 if access is granted, otherwise an appropriate value for\n  errno should be returned.\n*/\ntypedef int mpo_posixshm_check_mmap_t(\n\tkauth_cred_t cred,\n\tstruct pshminfo *ps,\n\tstruct label *shmlabel,\n\tint prot,\n\tint flags\n);\n/**\n  @brief Access control check for POSIX shared memory region open\n  @param cred Subject credential\n  @param ps Pointer to shared memory information structure\n  @param shmlabel Label associated with the shared memory region\n  @param fflags shm_open(2) open flags ('fflags' encoded)\n\n  Determine whether the subject identified by the credential can open\n  the POSIX shared memory region.\n\n  @return Return 0 if access is granted, otherwise an appropriate value for\n  errno should be returned.\n*/\ntypedef int mpo_posixshm_check_open_t(\n\tkauth_cred_t cred,\n\tstruct pshminfo *ps,\n\tstruct label *shmlabel,\n\tint fflags\n);\n/**\n  @brief Access control check for POSIX shared memory stat\n  @param cred Subject credential\n  @param ps Pointer to shared memory information structure\n  @param shmlabel Label associated with the shared memory region\n\n  Determine whether the subject identified by the credential can obtain\n  status for the POSIX shared memory segment associated with shmlabel.\n\n  @return Return 0 if access is granted, otherwise an appropriate value for\n  errno should be returned.\n*/\ntypedef int mpo_posixshm_check_stat_t(\n\tkauth_cred_t cred,\n\tstruct pshminfo *ps,\n\tstruct label *shmlabel\n);\n/**\n  @brief Access control check for POSIX shared memory truncate\n  @param cred Subject credential\n  @param ps Pointer to shared memory information structure\n  @param shmlabel Label associated with the shared memory region\n  @param len Length to truncate or extend shared memory segment\n\n  Determine whether the subject identified by the credential can truncate\n  or extend (to len) the POSIX shared memory segment associated with shmlabel.\n\n  @return Return 0 if access is granted, otherwise an appropriate value for\n  errno should be returned.\n*/\ntypedef int mpo_posixshm_check_truncate_t(\n\tkauth_cred_t cred,\n\tstruct pshminfo *ps,\n\tstruct label *shmlabel,\n\toff_t len\n);\n/**\n  @brief Access control check for POSIX shared memory unlink\n  @param cred Subject credential\n  @param ps Pointer to shared memory information structure\n  @param shmlabel Label associated with the shared memory region\n  @param name String name of the shared memory region\n\n  Determine whether the subject identified by the credential can delete\n  the POSIX shared memory segment associated with shmlabel.\n\n  @return Return 0 if access is granted, otherwise an appropriate value for\n  errno should be returned.\n*/\ntypedef int mpo_posixshm_check_unlink_t(\n\tkauth_cred_t cred,\n\tstruct pshminfo *ps,\n\tstruct label *shmlabel,\n\tconst char *name\n);\n/**\n  @brief Create a POSIX shared memory region label\n  @param cred Subject credential\n  @param ps Pointer to shared memory information structure\n  @param shmlabel Label to associate with the new shared memory region\n  @param name String name of the shared memory region\n\n  Label a new POSIX shared memory region.  The label was previously\n  initialized and associated with the shared memory region.  At this\n  time, an appropriate initial label value should be assigned to the\n  object and stored in shmlabel.\n*/\ntypedef void mpo_posixshm_label_associate_t(\n\tkauth_cred_t cred,\n\tstruct pshminfo *ps,\n\tstruct label *shmlabel,\n\tconst char *name\n);\n/**\n  @brief Destroy POSIX shared memory label\n  @param label The label to be destroyed\n\n  Destroy a POSIX shared memory region label.  Since the\n  object is going out of scope, policy modules should free any\n  internal storage associated with the label so that it may be\n  destroyed.\n*/\ntypedef void mpo_posixshm_label_destroy_t(\n\tstruct label *label\n);\n/**\n  @brief Initialize POSIX Shared Memory region label\n  @param label New label to initialize\n\n  Initialize the label for newly a instantiated POSIX Shared Memory\n  region. Sleeping is permitted.\n*/\ntypedef void mpo_posixshm_label_init_t(\n\tstruct label *label\n);\n/**\n @brief Access control check for privileged operations\n @param cred Subject credential\n @param priv Requested privilege (see sys/priv.h)\n\n Determine whether the subject identified by the credential can perform\n a privileged operation.  Privileged operations are allowed if the cred\n is the superuser or any policy returns zero for mpo_priv_grant, unless\n any policy returns nonzero for mpo_priv_check.\n\n @return Return 0 if access is granted, otherwise EPERM should be returned.\n*/\ntypedef int mpo_priv_check_t(\n\tkauth_cred_t cred,\n\tint priv\n);\n/**\n @brief Grant regular users the ability to perform privileged operations\n @param cred Subject credential\n @param priv Requested privilege (see sys/priv.h)\n\n Determine whether the subject identified by the credential should be\n allowed to perform a privileged operation that in the absense of any\n MAC policy it would not be able to perform.  Privileged operations are\n allowed if the cred is the superuser or any policy returns zero for\n mpo_priv_grant, unless any policy returns nonzero for mpo_priv_check.\n\n Unlike other MAC hooks which can only reduce the privilege of a\n credential, this hook raises the privilege of a credential when it\n returns 0.  Extreme care must be taken when implementing this hook to\n avoid undermining the security of the system.\n\n @return Return 0 if additional privilege is granted, otherwise EPERM\n should be returned.\n*/\ntypedef int mpo_priv_grant_t(\n\tkauth_cred_t cred,\n\tint priv\n);\n/**\n  @brief Access control check for debugging process\n  @param cred Subject credential\n  @param proc Object process\n\n  Determine whether the subject identified by the credential can debug\n  the passed process. This call may be made in a number of situations,\n  including use of the ptrace(2) and ktrace(2) APIs, as well as for some\n  types of procfs operations.\n\n  @return Return 0 if access is granted, otherwise an appropriate value for\n  errno should be returned. Suggested failure: EACCES for label mismatch,\n  EPERM for lack of privilege, or ESRCH to hide visibility of the target.\n*/\ntypedef int mpo_proc_check_debug_t(\n\tkauth_cred_t cred,\n\tstruct proc *proc\n);\n/**\n  @brief Access control over fork\n  @param cred Subject credential\n  @param proc Subject process trying to fork\n\n  Determine whether the subject identified is allowed to fork.\n\n  @return Return 0 if access is granted, otherwise an appropriate value for\n  errno should be returned.\n*/\ntypedef int mpo_proc_check_fork_t(\n\tkauth_cred_t cred,\n\tstruct proc *proc\n);\n/**\n  @brief Access control check for setting host special ports.\n  @param cred Subject credential\n  @param id The host special port to set\n  @param port The new value to set for the special port\n\n  @return Return 0 if access is granted, otherwise an appropriate value for\n  errno should be returned.\n*/\ntypedef int mpo_proc_check_set_host_special_port_t(\n\tkauth_cred_t cred,\n\tint id,\n\tstruct ipc_port\t*port\n);\n/**\n  @brief Access control check for setting host exception ports.\n  @param cred Subject credential\n  @param exception Exception port to set\n\n  @return Return 0 if access is granted, otherwise an appropriate value for\n  errno should be returned.\n*/\ntypedef int mpo_proc_check_set_host_exception_port_t(\n\tkauth_cred_t cred,\n\tunsigned int exception\n);\n/**\n  @brief Access control over pid_suspend and pid_resume\n  @param cred Subject credential\n  @param proc Subject process trying to run pid_suspend or pid_resume \n  @param sr Call is suspend (0) or resume (1)\n\n  Determine whether the subject identified is allowed to suspend or resume\n  other processes.\n\n  @return Return 0 if access is granted, otherwise an appropriate value for\n  errno should be returned.\n*/\ntypedef int mpo_proc_check_suspend_resume_t(\n\tkauth_cred_t cred,\n\tstruct proc *proc,\n\tint sr\n);\n/**\n  @brief Access control check for retrieving audit information\n  @param cred Subject credential\n\n  Determine whether the subject identified by the credential can get\n  audit information such as the audit user ID, the preselection mask,\n  the terminal ID and the audit session ID, using the getaudit() system call.\n\n  @return Return 0 if access is granted, otherwise an appropriate value for\n  errno should be returned.\n*/\ntypedef int mpo_proc_check_getaudit_t(\n\tkauth_cred_t cred\n);\n/**\n  @brief Access control check for retrieving audit user ID\n  @param cred Subject credential\n\n  Determine whether the subject identified by the credential can get\n  the user identity being used by the auditing system, using the getauid()\n  system call.\n\n  @return Return 0 if access is granted, otherwise an appropriate value for\n  errno should be returned.\n*/\ntypedef int mpo_proc_check_getauid_t(\n\tkauth_cred_t cred\n);\n/**\n  @brief Access control check for retrieving Login Context ID\n  @param p0 Calling process\n  @param p Effected process\n  @param pid syscall PID argument\n\n  Determine if getlcid(2) system call is permitted.\n\n  Information returned by this system call is similar to that returned via\n  process listings etc.\n\n  @return Return 0 if access is granted, otherwise an appropriate value for\n  errno should be returned.\n*/\ntypedef int mpo_proc_check_getlcid_t(\n\tstruct proc *p0,\n\tstruct proc *p,\n\tpid_t pid\n);\n/**\n  @brief Access control check for retrieving ledger information\n  @param cred Subject credential\n  @param target Object process\n  @param op ledger operation\n\n  Determine if ledger(2) system call is permitted.\n\n  Information returned by this system call is similar to that returned via\n  process listings etc.\n\n  @return Return 0 if access is granted, otherwise an appropriate value for\n  errno should be returned.\n*/\ntypedef int mpo_proc_check_ledger_t(\n\tkauth_cred_t cred,\n\tstruct proc *target,\n\tint op\n);\n/**\n  @brief Access control check for escaping default CPU usage monitor parameters.\n  @param cred Subject credential\n  \n  Determine if a credential has permission to program CPU usage monitor parameters\n  that are less restrictive than the global system-wide defaults.\n\n  @return Return 0 if access is granted, otherwise an appropriate value for\n  errno should be returned.\n*/\ntypedef int mpo_proc_check_cpumon_t(\n  kauth_cred_t cred\n);\n/**\n  @brief Access control check for retrieving process information.\n  @param cred Subject credential\n  @param target Target process (may be null, may be zombie)\n\n  Determine if a credential has permission to access process information as defined\n  by call number and flavor on target process\n\n  @return Return 0 if access is granted, otherwise an appropriate value for\n  errno should be returned.\n*/\ntypedef int mpo_proc_check_proc_info_t(\n\tkauth_cred_t cred,\n\tstruct proc *target,\n\tint callnum,\n\tint flavor\n);\n/**\n  @brief Access control check for retrieving code signing information.\n  @param cred Subject credential\n  @param target Target process\n  @param op Code signing operation being performed\n\n  Determine whether the subject identified by the credential should be\n  allowed to get code signing information about the target process.\n\n  @return Return 0 if access is granted, otherwise an appropriate value for\n  errno should be returned.\n*/\ntypedef int mpo_proc_check_get_cs_info_t(\n\tkauth_cred_t cred,\n\tstruct proc *target,\n\tunsigned int op\n);\n/**\n  @brief Access control check for setting code signing information.\n  @param cred Subject credential\n  @param target Target process\n  @param op Code signing operation being performed.\n\n  Determine whether the subject identified by the credential should be\n  allowed to set code signing information about the target process.\n\n  @return Return 0 if permission is granted, otherwise an appropriate\n  value of errno should be returned.\n*/\ntypedef int mpo_proc_check_set_cs_info_t(\n\tkauth_cred_t cred,\n\tstruct proc *target,\n\tunsigned int op\n);\n/**\n  @brief Access control check for mmap MAP_ANON\n  @param proc User process requesting the memory\n  @param cred Subject credential\n  @param u_addr Start address of the memory range\n  @param u_size Length address of the memory range\n  @param prot mmap protections; see mmap(2)\n  @param flags Type of mapped object; see mmap(2)\n  @param maxprot Maximum rights\n\n  Determine whether the subject identified by the credential should be\n  allowed to obtain anonymous memory using the specified flags and \n  protections on the new mapping. MAP_ANON will always be present in the\n  flags. Certain combinations of flags with a non-NULL addr may\n  cause a mapping to be rejected before this hook is called. The maxprot field\n  holds the maximum permissions on the new mapping, a combination of\n  VM_PROT_READ, VM_PROT_WRITE and VM_PROT_EXECUTE. To avoid overriding prior\n  access control checks, a policy should only remove flags from maxprot.\n\n  @return Return 0 if access is granted, otherwise an appropriate value for\n  errno should be returned. Suggested failure: EPERM for lack of privilege.\n*/\ntypedef int mpo_proc_check_map_anon_t(\n\tstruct proc *proc,\n\tkauth_cred_t cred,\n\tuser_addr_t u_addr,\n\tuser_size_t u_size,\n\tint prot,\n\tint flags,\n\tint *maxprot\n);\n/**\n  @brief Access control check for setting memory protections\n  @param cred Subject credential\n  @param proc User process requesting the change\n  @param addr Start address of the memory range\n  @param size Length address of the memory range\n  @param prot Memory protections, see mmap(2)\n\n  Determine whether the subject identified by the credential should\n  be allowed to set the specified memory protections on memory mapped\n  in the process proc.\n\n  @return Return 0 if access is granted, otherwise an appropriate value for\n  errno should be returned.\n*/\ntypedef int mpo_proc_check_mprotect_t(\n\tkauth_cred_t cred,\n\tstruct proc *proc,\n\tuser_addr_t addr,\n\tuser_size_t size,\n\tint prot\n);\n/**\n  @brief Access control check for changing scheduling parameters\n  @param cred Subject credential\n  @param proc Object process\n\n  Determine whether the subject identified by the credential can change\n  the scheduling parameters of the passed process.\n\n  @return Return 0 if access is granted, otherwise an appropriate value for\n  errno should be returned. Suggested failure: EACCES for label mismatch,\n  EPERM for lack of privilege, or ESRCH to limit visibility.\n*/\ntypedef int mpo_proc_check_sched_t(\n\tkauth_cred_t cred,\n\tstruct proc *proc\n);\n/**\n  @brief Access control check for setting audit information\n  @param cred Subject credential\n  @param ai Audit information\n\n  Determine whether the subject identified by the credential can set\n  audit information such as the the preselection mask, the terminal ID\n  and the audit session ID, using the setaudit() system call.\n\n  @return Return 0 if access is granted, otherwise an appropriate value for\n  errno should be returned.\n*/\ntypedef int mpo_proc_check_setaudit_t(\n\tkauth_cred_t cred,\n\tstruct auditinfo_addr *ai\n);\n/**\n  @brief Access control check for setting audit user ID\n  @param cred Subject credential\n  @param auid Audit user ID\n\n  Determine whether the subject identified by the credential can set\n  the user identity used by the auditing system, using the setauid()\n  system call.\n\n  @return Return 0 if access is granted, otherwise an appropriate value for\n  errno should be returned.\n*/\ntypedef int mpo_proc_check_setauid_t(\n\tkauth_cred_t cred,\n\tuid_t auid\n);\n/**\n  @brief Access control check for setting the Login Context\n  @param p0 Calling process\n  @param p Effected process\n  @param pid syscall PID argument\n  @param lcid syscall LCID argument\n\n  Determine if setlcid(2) system call is permitted.\n\n  See xnu/bsd/kern/kern_prot.c:setlcid() implementation for example of\n  decoding syscall arguments to determine action desired by caller.\n\n  Five distinct actions are possible: CREATE JOIN LEAVE ADOPT ORPHAN\n\n  @return Return 0 if access is granted, otherwise an appropriate value for\n  errno should be returned.\n*/\ntypedef int mpo_proc_check_setlcid_t(\n\tstruct proc *p0,\n\tstruct proc *p,\n\tpid_t pid,\n\tpid_t lcid\n);\n/**\n  @brief Access control check for delivering signal\n  @param cred Subject credential\n  @param proc Object process\n  @param signum Signal number; see kill(2)\n\n  Determine whether the subject identified by the credential can deliver\n  the passed signal to the passed process.\n\n  @warning Programs typically expect to be able to send and receive\n  signals as part or their normal process lifecycle; caution should be\n  exercised when implementing access controls over signal events.\n\n  @return Return 0 if access is granted, otherwise an appropriate value for\n  errno should be returned. Suggested failure: EACCES for label mismatch,\n  EPERM for lack of privilege, or ESRCH to limit visibility.\n*/\ntypedef int mpo_proc_check_signal_t(\n\tkauth_cred_t cred,\n\tstruct proc *proc,\n\tint signum\n);\n/**\n  @brief Access control check for wait\n  @param cred Subject credential\n  @param proc Object process\n\n  Determine whether the subject identified by the credential can wait\n  for process termination.\n\n  @warning Caution should be exercised when implementing access\n  controls for wait, since programs often wait for child processes to\n  exit.  Failure to be notified of a child process terminating may\n  cause the parent process to hang, or may produce zombie processes.\n\n  @return Return 0 if access is granted, otherwise an appropriate value for\n  errno should be returned.\n*/\ntypedef int mpo_proc_check_wait_t(\n\tkauth_cred_t cred,\n\tstruct proc *proc\n);\n/**\n  @brief Destroy process label\n  @param label The label to be destroyed\n\n  Destroy a process label.  Since the object is going\n  out of scope, policy modules should free any internal storage\n  associated with the label so that it may be destroyed.\n*/\ntypedef void mpo_proc_label_destroy_t(\n\tstruct label *label\n);\n/**\n  @brief Initialize process label\n  @param label New label to initialize\n  @see mpo_cred_label_init_t\n\n  Initialize the label for a newly instantiated BSD process structure.\n  Normally, security policies will store the process label in the user\n  credential rather than here in the process structure.  However,\n  there are some floating label policies that may need to temporarily\n  store a label in the process structure until it is safe to update\n  the user credential label.  Sleeping is permitted.\n*/\ntypedef void mpo_proc_label_init_t(\n\tstruct label *label\n);\n/**\n  @brief Access control check for socket accept\n  @param cred Subject credential\n  @param so Object socket\n  @param socklabel Policy label for socket\n\n  Determine whether the subject identified by the credential can accept()\n  a new connection on the socket from the host specified by addr.\n\n  @return Return 0 if access if granted, otherwise an appropriate\n  value for errno should be returned.\n*/\ntypedef int mpo_socket_check_accept_t(\n\tkauth_cred_t cred,\n\tsocket_t so,\n\tstruct label *socklabel\n);\n/**\n  @brief Access control check for a pending socket accept\n  @param cred Subject credential\n  @param so Object socket\n  @param socklabel Policy label for socket\n  @param addr Address of the listening socket (coming soon)\n\n  Determine whether the subject identified by the credential can accept()\n  a pending connection on the socket from the host specified by addr.\n\n  @return Return 0 if access if granted, otherwise an appropriate\n  value for errno should be returned.\n*/\ntypedef int mpo_socket_check_accepted_t(\n\tkauth_cred_t cred,\n\tsocket_t so,\n\tstruct label *socklabel,\n\tstruct sockaddr *addr\n);\n/**\n  @brief Access control check for socket bind\n  @param cred Subject credential\n  @param so Object socket\n  @param socklabel Policy label for socket\n  @param addr Name to assign to the socket\n\n  Determine whether the subject identified by the credential can bind()\n  the name (addr) to the socket.\n\n  @return Return 0 if access if granted, otherwise an appropriate\n  value for errno should be returned.\n*/\ntypedef int mpo_socket_check_bind_t(\n\tkauth_cred_t cred,\n\tsocket_t so,\n\tstruct label *socklabel,\n\tstruct sockaddr *addr\n);\n/**\n  @brief Access control check for socket connect\n  @param cred Subject credential\n  @param so Object socket\n  @param socklabel Policy label for socket\n  @param addr Name to assign to the socket\n\n  Determine whether the subject identified by the credential can\n  connect() the passed socket to the remote host specified by addr.\n\n  @return Return 0 if access if granted, otherwise an appropriate\n  value for errno should be returned.\n*/\ntypedef int mpo_socket_check_connect_t(\n\tkauth_cred_t cred,\n\tsocket_t so,\n\tstruct label *socklabel,\n\tstruct sockaddr *addr\n);\n/**\n  @brief Access control check for socket() system call.\n  @param cred Subject credential\n  @param domain communication domain\n  @param type socket type\n  @param protocol socket protocol\n\n  Determine whether the subject identified by the credential can\n  make the socket() call.\n\n  @return Return 0 if access if granted, otherwise an appropriate\n  value for errno should be returned.\n*/\ntypedef int mpo_socket_check_create_t(\n\tkauth_cred_t cred,\n\tint domain,\n\tint type,\n\tint protocol\n);\n/**\n  @brief Access control check for delivering data to a user's receieve queue\n  @param so The socket data is being delivered to\n  @param so_label The label of so\n  @param m The mbuf whose data will be deposited into the receive queue\n  @param m_label The label of the sender of the data.\n\n  A socket has a queue for receiving incoming data.  When a packet arrives\n  on the wire, it eventually gets deposited into this queue, which the\n  owner of the socket drains when they read from the socket's file descriptor.\n\n  This function determines whether the socket can receive data from\n  the sender specified by m_label.\n\n  @warning There is an outstanding design issue surrounding the placement\n  of this function.  The check must be placed either before or after the\n  TCP sequence and ACK counters are updated.  Placing the check before\n  the counters are updated causes the incoming packet to be resent by\n  the remote if the check rejects it.  Placing the check after the counters\n  are updated results in a completely silent drop.  As far as each TCP stack\n  is concerned the packet was received, however, the data will not be in the\n  socket's receive queue.  Another consideration is that the current design\n  requires using the \"failed label\" occasionally.  In that case, on rejection,\n  we want the remote TCP to resend the data.  Because of this, we chose to\n  place this check before the counters are updated, so rejected packets will be\n  resent by the remote host.\n\n  If a policy keeps rejecting the same packet, eventually the connection will\n  be dropped.  Policies have several options if this design causes problems.\n  For example, one options is to sanitize the mbuf such that it is acceptable,\n  then accept it.  That may require negotiation between policies as the\n  Framework will not know to re-check the packet.\n\n  The policy must handle NULL MBUF labels.  This will likely be the case\n  for non-local TCP sockets for example.\n\n  @return Return 0 if access if granted, otherwise an appropriate\n  value for errno should be returned.\n*/\ntypedef int mpo_socket_check_deliver_t(\n\tsocket_t so,\n\tstruct label *so_label,\n\tstruct mbuf *m,\n\tstruct label *m_label\n);\n/**\n  @brief Access control check for socket kqfilter\n  @param cred Subject credential\n  @param kn Object knote\n  @param so Object socket\n  @param socklabel Policy label for socket\n\n  Determine whether the subject identified by the credential can\n  receive the knote on the passed socket.\n\n  @return Return 0 if access if granted, otherwise an appropriate\n  value for errno should be returned.\n*/\ntypedef int mpo_socket_check_kqfilter_t(\n\tkauth_cred_t cred,\n\tstruct knote *kn,\n\tsocket_t so,\n\tstruct label *socklabel\n);\n/**\n  @brief Access control check for socket relabel\n  @param cred Subject credential\n  @param so Object socket\n  @param so_label The current label of so\n  @param newlabel The label to be assigned to so\n\n  Determine whether the subject identified by the credential can\n  change the label on the socket.\n\n  @return Return 0 if access if granted, otherwise an appropriate\n  value for errno should be returned.\n*/\ntypedef int mpo_socket_check_label_update_t(\n\tkauth_cred_t cred,\n\tsocket_t so,\n\tstruct label *so_label,\n\tstruct label *newlabel\n);\n/**\n  @brief Access control check for socket listen\n  @param cred Subject credential\n  @param so Object socket\n  @param socklabel Policy label for socket\n\n  Determine whether the subject identified by the credential can\n  listen() on the passed socket.\n\n  @return Return 0 if access if granted, otherwise an appropriate\n  value for errno should be returned.\n*/\ntypedef int mpo_socket_check_listen_t(\n\tkauth_cred_t cred,\n\tsocket_t so,\n\tstruct label *socklabel\n);\n/**\n  @brief Access control check for socket receive\n  @param cred Subject credential\n  @param so Object socket\n  @param socklabel Policy label for socket\n\n  Determine whether the subject identified by the credential can\n  receive data from the socket.\n\n  @return Return 0 if access if granted, otherwise an appropriate\n  value for errno should be returned.\n*/\ntypedef int mpo_socket_check_receive_t(\n\tkauth_cred_t cred,\n\tsocket_t so,\n\tstruct label *socklabel\n);\n\n/**                                                                                               \n  @brief Access control check for socket receive                                                  \n  @param cred Subject credential                                                                  \n  @param sock Object socket                                                                     \n  @param socklabel Policy label for socket                                                        \n  @param saddr Name of the remote socket                                                           \n                                                                                                  \n  Determine whether the subject identified by the credential can                                  \n  receive data from the remote host specified by addr.                                            \n                                                                                                  \n  @return Return 0 if access if granted, otherwise an appropriate                                 \n  value for errno should be returned.                                                             \n*/\ntypedef int mpo_socket_check_received_t(\n\t\t\t\t\tkauth_cred_t cred,\n\t\t\t\t\tstruct socket *sock,\n\t\t\t\t\tstruct label *socklabel,\n\t\t\t\t\tstruct sockaddr *saddr\n\t\t\t\t\t);\n\n\n/**\n  @brief Access control check for socket select\n  @param cred Subject credential\n  @param so Object socket\n  @param socklabel Policy label for socket\n  @param which The operation selected on: FREAD or FWRITE\n\n  Determine whether the subject identified by the credential can use the\n  socket in a call to select().\n\n  @return Return 0 if access if granted, otherwise an appropriate\n  value for errno should be returned.\n*/\ntypedef int mpo_socket_check_select_t(\n\tkauth_cred_t cred,\n\tsocket_t so,\n\tstruct label *socklabel,\n\tint which\n);\n/**\n  @brief Access control check for socket send\n  @param cred Subject credential\n  @param so Object socket\n  @param socklabel Policy label for socket\n  @param addr Address being sent to\n\n  Determine whether the subject identified by the credential can send\n  data to the socket.\n\n  @return Return 0 if access if granted, otherwise an appropriate\n  value for errno should be returned.\n*/\ntypedef int mpo_socket_check_send_t(\n\tkauth_cred_t cred,\n\tsocket_t so,\n\tstruct label *socklabel,\n\tstruct sockaddr *addr\n);\n/**\n  @brief Access control check for retrieving socket status\n  @param cred Subject credential\n  @param so Object socket\n  @param socklabel Policy label for so\n\n  Determine whether the subject identified by the credential can\n  execute the stat() system call on the given socket.\n\n  @return Return 0 if access if granted, otherwise an appropriate\n  value for errno should be returned.\n*/\ntypedef int mpo_socket_check_stat_t(\n\tkauth_cred_t cred,\n\tsocket_t so,\n\tstruct label *socklabel\n);\n/**\n  @brief Access control check for setting socket options\n  @param cred Subject credential\n  @param so Object socket\n  @param socklabel Policy label for so\n  @param sopt The options being set\n\n  Determine whether the subject identified by the credential can\n  execute the setsockopt system call on the given socket.\n\n  @return Return 0 if access if granted, otherwise an appropriate\n  value for errno should be returned.\n*/\ntypedef int mpo_socket_check_setsockopt_t(\n\tkauth_cred_t cred,\n\tsocket_t so,\n\tstruct label *socklabel,\n\tstruct sockopt *sopt\n);\n/**\n  @brief Access control check for getting socket options\n  @param cred Subject credential\n  @param so Object socket\n  @param socklabel Policy label for so\n  @param sopt The options to get\n\n  Determine whether the subject identified by the credential can\n  execute the getsockopt system call on the given socket.\n\n  @return Return 0 if access if granted, otherwise an appropriate\n  value for errno should be returned.\n*/\ntypedef int mpo_socket_check_getsockopt_t(\n\tkauth_cred_t cred,\n\tsocket_t so,\n\tstruct label *socklabel,\n\tstruct sockopt *sopt\n);\n/**\n  @brief Label a socket\n  @param oldsock Listening socket\n  @param oldlabel Policy label associated with oldsock\n  @param newsock New socket\n  @param newlabel Policy label associated with newsock\n\n  A new socket is created when a connection is accept(2)ed.  This\n  function labels the new socket based on the existing listen(2)ing\n  socket.\n*/\ntypedef void mpo_socket_label_associate_accept_t(\n\tsocket_t oldsock,\n\tstruct label *oldlabel,\n\tsocket_t newsock,\n\tstruct label *newlabel\n);\n/**\n  @brief Assign a label to a new socket\n  @param cred Credential of the owning process\n  @param so The socket being labeled\n  @param solabel The label\n  @warning cred can be NULL\n\n  Set the label on a newly created socket from the passed subject\n  credential.  This call is made when a socket is created.  The\n  credentials may be null if the socket is being created by the\n  kernel.\n*/\ntypedef void mpo_socket_label_associate_t(\n\tkauth_cred_t cred,\n\tsocket_t so,\n\tstruct label *solabel\n);\n/**\n  @brief Copy a socket label\n  @param src Source label\n  @param dest Destination label\n\n  Copy the socket label information in src into dest.\n*/\ntypedef void mpo_socket_label_copy_t(\n\tstruct label *src,\n\tstruct label *dest\n);\n/**\n  @brief Destroy socket label\n  @param label The label to be destroyed\n\n  Destroy a socket label.  Since the object is going out of\n  scope, policy modules should free any internal storage associated\n  with the label so that it may be destroyed.\n*/\ntypedef void mpo_socket_label_destroy_t(\n\tstruct label *label\n);\n/**\n  @brief Externalize a socket label\n  @param label Label to be externalized\n  @param element_name Name of the label namespace for which labels should be\n  externalized\n  @param sb String buffer to be filled with a text representation of label\n\n  Produce an externalized socket label based on the label structure passed.\n  An externalized label consists of a text representation of the label\n  contents that can be used with userland applications and read by the\n  user.  If element_name does not match a namespace managed by the policy,\n  simply return 0. Only return nonzero if an error occurs while externalizing\n  the label data.\n\n  @return In the event of an error, an appropriate value for errno\n  should be returned, otherwise return 0 upon success.\n*/\ntypedef int mpo_socket_label_externalize_t(\n\tstruct label *label,\n\tchar *element_name,\n\tstruct sbuf *sb\n);\n/**\n  @brief Initialize socket label\n  @param label New label to initialize\n  @param waitok Malloc flags\n\n  Initialize the label of a newly instantiated socket.  The waitok\n  field may be one of M_WAITOK and M_NOWAIT, and should be employed to\n  avoid performing a sleeping malloc(9) during this initialization\n  call.  It it not always safe to sleep during this entry point.\n\n  @warning Since it is possible for the waitok flags to be set to\n  M_NOWAIT, the malloc operation may fail.\n\n  @return In the event of an error, an appropriate value for errno\n  should be returned, otherwise return 0 upon success.\n*/\ntypedef int mpo_socket_label_init_t(\n\tstruct label *label,\n\tint waitok\n);\n/**\n  @brief Internalize a socket label\n  @param label Label to be filled in\n  @param element_name Name of the label namespace for which the label should\n  be internalized\n  @param element_data Text data to be internalized\n\n  Produce an internal socket label structure based on externalized label\n  data in text format.\n\n  The policy's internalize entry points will be called only if the\n  policy has registered interest in the label namespace.\n\n  @return In the event of an error, an appropriate value for errno\n  should be returned, otherwise return 0 upon success.\n*/\ntypedef int mpo_socket_label_internalize_t(\n\tstruct label *label,\n\tchar *element_name,\n\tchar *element_data\n);\n/**\n  @brief Relabel socket\n  @param cred Subject credential\n  @param so Object; socket\n  @param so_label Current label of the socket\n  @param newlabel The label to be assigned to so\n\n  The subject identified by the credential has previously requested\n  and was authorized to relabel the socket; this entry point allows\n  policies to perform the actual label update operation.\n\n  @warning XXX This entry point will likely change in future versions.\n*/\ntypedef void mpo_socket_label_update_t(\n\tkauth_cred_t cred,\n\tsocket_t so,\n\tstruct label *so_label,\n\tstruct label *newlabel\n);\n/**\n  @brief Set the peer label on a socket from mbuf\n  @param m Mbuf chain received on socket so\n  @param m_label Label for m\n  @param so Current label for the socket\n  @param so_label Policy label to be filled out for the socket\n\n  Set the peer label of a socket based on the label of the sender of the\n  mbuf.\n\n  This is called for every TCP/IP packet received.  The first call for a given\n  socket operates on a newly initialized label, and subsequent calls operate\n  on existing label data.\n\n  @warning Because this can affect performance significantly, it has\n  different sematics than other 'set' operations.  Typically, 'set' operations\n  operate on newly initialzed labels and policies do not need to worry about\n  clobbering existing values.  In this case, it is too inefficient to\n  initialize and destroy a label every time data is received for the socket.\n  Instead, it is up to the policies to determine how to replace the label data.\n  Most policies should be able to replace the data inline.\n*/\ntypedef void mpo_socketpeer_label_associate_mbuf_t(\n\tstruct mbuf *m,\n\tstruct label *m_label,\n\tsocket_t so,\n\tstruct label *so_label\n);\n/**\n  @brief Set the peer label on a socket from socket\n  @param source Local socket\n  @param sourcelabel Policy label for source\n  @param target Peer socket\n  @param targetlabel Policy label to fill in for target\n\n  Set the peer label on a stream UNIX domain socket from the passed\n  remote socket endpoint. This call will be made when the socket pair\n  is connected, and will be made for both endpoints.\n\n  Note that this call is only made on connection; it is currently not updated\n  during communication.\n*/\ntypedef void mpo_socketpeer_label_associate_socket_t(\n\tsocket_t source,\n\tstruct label *sourcelabel,\n\tsocket_t target,\n\tstruct label *targetlabel\n);\n/**\n  @brief Destroy socket peer label\n  @param label The peer label to be destroyed\n\n  Destroy a socket peer label.  Since the object is going out of\n  scope, policy modules should free any internal storage associated\n  with the label so that it may be destroyed.\n*/\ntypedef void mpo_socketpeer_label_destroy_t(\n\tstruct label *label\n);\n/**\n  @brief Externalize a socket peer label\n  @param label Label to be externalized\n  @param element_name Name of the label namespace for which labels should be\n  externalized\n  @param sb String buffer to be filled with a text representation of label\n\n  Produce an externalized socket peer label based on the label structure\n  passed. An externalized label consists of a text representation of the\n  label contents that can be used with userland applications and read by the\n  user.  If element_name does not match a namespace managed by the policy,\n  simply return 0. Only return nonzero if an error occurs while externalizing\n  the label data.\n\n  @return In the event of an error, an appropriate value for errno\n  should be returned, otherwise return 0 upon success.\n*/\ntypedef int mpo_socketpeer_label_externalize_t(\n\tstruct label *label,\n\tchar *element_name,\n\tstruct sbuf *sb\n);\n/**\n  @brief Initialize socket peer label\n  @param label New label to initialize\n  @param waitok Malloc flags\n\n  Initialize the peer label of a newly instantiated socket.  The\n  waitok field may be one of M_WAITOK and M_NOWAIT, and should be\n  employed to avoid performing a sleeping malloc(9) during this\n  initialization call.  It it not always safe to sleep during this\n  entry point.\n\n  @warning Since it is possible for the waitok flags to be set to\n  M_NOWAIT, the malloc operation may fail.\n\n  @return In the event of an error, an appropriate value for errno\n  should be returned, otherwise return 0 upon success.\n*/\ntypedef int mpo_socketpeer_label_init_t(\n\tstruct label *label,\n\tint waitok\n);\n/**\n  @brief Access control check for enabling accounting\n  @param cred Subject credential\n  @param vp Accounting file\n  @param vlabel Label associated with vp\n\n  Determine whether the subject should be allowed to enable accounting,\n  based on its label and the label of the accounting log file.  See\n  acct(5) for more information.\n\n  As accounting is disabled by passing NULL to the acct(2) system call,\n  the policy should be prepared for both 'vp' and 'vlabel' to be NULL.\n\n  @return Return 0 if access is granted, otherwise an appropriate value for\n  errno should be returned.\n*/\ntypedef int mpo_system_check_acct_t(\n\tkauth_cred_t cred,\n\tstruct vnode *vp,\n\tstruct label *vlabel\n);\n/**\n  @brief Access control check for audit\n  @param cred Subject credential\n  @param record Audit record\n  @param length Audit record length\n\n  Determine whether the subject identified by the credential can submit\n  an audit record for inclusion in the audit log via the audit() system call.\n\n  @return Return 0 if access is granted, otherwise an appropriate value for\n  errno should be returned.\n*/\ntypedef int mpo_system_check_audit_t(\n\tkauth_cred_t cred,\n\tvoid *record,\n\tint length\n);\n/**\n  @brief Access control check for controlling audit\n  @param cred Subject credential\n  @param vp Audit file\n  @param vl Label associated with vp\n\n  Determine whether the subject should be allowed to enable auditing using\n  the auditctl() system call, based on its label and the label of the proposed\n  audit file.\n\n  @return Return 0 if access is granted, otherwise an appropriate value for\n  errno should be returned.\n*/\ntypedef int mpo_system_check_auditctl_t(\n\tkauth_cred_t cred,\n\tstruct vnode *vp,\n\tstruct label *vl\n);\n/**\n  @brief Access control check for manipulating auditing\n  @param cred Subject credential\n  @param cmd Audit control command\n\n  Determine whether the subject identified by the credential can perform\n  the audit subsystem control operation cmd via the auditon() system call.\n\n  @return Return 0 if access is granted, otherwise an appropriate value for\n  errno should be returned.\n*/\ntypedef int mpo_system_check_auditon_t(\n\tkauth_cred_t cred,\n\tint cmd\n);\n/**\n  @brief Access control check for using CHUD facilities\n  @param cred Subject credential\n\n  Determine whether the subject identified by the credential can perform\n  performance-related tasks using the CHUD system call.\n\n  @return Return 0 if access is granted, otherwise an appropriate value for\n  errno should be returned.\n*/\ntypedef int mpo_system_check_chud_t(\n\tkauth_cred_t cred\n);\n/**\n  @brief Access control check for obtaining the host control port\n  @param cred Subject credential\n\n  Determine whether the subject identified by the credential can\n  obtain the host control port.\n\n  @return Return 0 if access is granted, or non-zero otherwise.\n*/\ntypedef int mpo_system_check_host_priv_t(\n\tkauth_cred_t cred\n);\n/**\n  @brief Access control check for obtaining system information\n  @param cred Subject credential\n  @param info_type A description of the information requested\n\n  Determine whether the subject identified by the credential should be\n  allowed to obtain information about the system.\n\n  This is a generic hook that can be used in a variety of situations where\n  information is being returned that might be considered sensitive.\n  Rather than adding a new MAC hook for every such interface, this hook can\n  be called with a string identifying the type of information requested.\n\n  @return Return 0 if access is granted, otherwise an appropriate value for\n  errno should be returned.\n*/\ntypedef int mpo_system_check_info_t(\n\tkauth_cred_t cred,\n\tconst char *info_type\n);\n/**\n  @brief Access control check for calling NFS services\n  @param cred Subject credential\n\n  Determine whether the subject identified by the credential should be\n  allowed to call nfssrv(2).\n\n  @return Return 0 if access is granted, otherwise an appropriate value for\n  errno should be returned.\n*/\ntypedef int mpo_system_check_nfsd_t(\n\tkauth_cred_t cred\n);\n/**\n  @brief Access control check for reboot\n  @param cred Subject credential\n  @param howto howto parameter from reboot(2)\n\n  Determine whether the subject identified by the credential should be\n  allowed to reboot the system in the specified manner.\n\n  @return Return 0 if access is granted, otherwise an appropriate value for\n  errno should be returned.\n*/\ntypedef int mpo_system_check_reboot_t(\n\tkauth_cred_t cred,\n\tint howto\n);\n/**\n  @brief Access control check for setting system clock\n  @param cred Subject credential\n\n  Determine whether the subject identified by the credential should be\n  allowed to set the system clock.\n\n  @return Return 0 if access is granted, otherwise an appropriate value for\n  errno should be returned.\n*/\ntypedef int mpo_system_check_settime_t(\n\tkauth_cred_t cred\n);\n/**\n  @brief Access control check for removing swap devices\n  @param cred Subject credential\n  @param vp Swap device\n  @param label Label associated with vp\n\n  Determine whether the subject identified by the credential should be\n  allowed to remove vp as a swap device.\n\n  @return Return 0 if access is granted, otherwise an appropriate value for\n  errno should be returned.\n*/\ntypedef int mpo_system_check_swapoff_t(\n\tkauth_cred_t cred,\n\tstruct vnode *vp,\n\tstruct label *label\n);\n/**\n  @brief Access control check for adding swap devices\n  @param cred Subject credential\n  @param vp Swap device\n  @param label Label associated with vp\n\n  Determine whether the subject identified by the credential should be\n  allowed to add vp as a swap device.\n\n  @return Return 0 if access is granted, otherwise an appropriate value for\n  errno should be returned.\n*/\ntypedef int mpo_system_check_swapon_t(\n\tkauth_cred_t cred,\n\tstruct vnode *vp,\n\tstruct label *label\n);\n/**\n  @brief Access control check for sysctl\n  @param cred Subject credential\n  @param namestring String representation of sysctl name.\n  @param name Integer name; see sysctl(3)\n  @param namelen Length of name array of integers; see sysctl(3)\n  @param old 0 or address where to store old value; see sysctl(3)\n  @param oldlen Length of old buffer; see sysctl(3)\n  @param newvalue 0 or address of new value; see sysctl(3)\n  @param newlen Length of new buffer; see sysctl(3)\n\n  Determine whether the subject identified by the credential should be\n  allowed to make the specified sysctl(3) transaction.\n\n  The sysctl(3) call specifies that if the old value is not desired,\n  oldp and oldlenp should be set to NULL.  Likewise, if a new value is\n  not to be set, newp should be set to NULL and newlen set to 0.\n\n  @return Return 0 if access is granted, otherwise an appropriate value for\n  errno should be returned.\n*/\ntypedef int mpo_system_check_sysctlbyname_t(\n\tkauth_cred_t cred,\n\tconst char *namestring,\n\tint *name,\n\tu_int namelen,\n\tuser_addr_t old,\t/* NULLOK */\n\tsize_t oldlen,\n\tuser_addr_t newvalue,\t/* NULLOK */\n\tsize_t newlen\n);\n/**\n  @brief Access control check for kas_info\n  @param cred Subject credential\n  @param selector Category of information to return. See kas_info.h\n\n  Determine whether the subject identified by the credential can perform\n  introspection of the kernel address space layout for\n  debugging/performance analysis.\n\n  @return Return 0 if access is granted, otherwise an appropriate value for\n  errno should be returned.\n*/\ntypedef int mpo_system_check_kas_info_t(\n\tkauth_cred_t cred,\n\tint selector\n);\n/**\n  @brief Create a System V message label\n  @param cred Subject credential\n  @param msqptr The message queue the message will be placed in\n  @param msqlabel The label of the message queue\n  @param msgptr The message\n  @param msglabel The label of the message\n\n  Label the message as its placed in the message queue.\n*/\ntypedef void mpo_sysvmsg_label_associate_t(\n\tkauth_cred_t cred,\n\tstruct msqid_kernel *msqptr,\n\tstruct label *msqlabel,\n\tstruct msg *msgptr,\n\tstruct label *msglabel\n);\n/**\n  @brief Destroy System V message label\n  @param label The label to be destroyed\n\n  Destroy a System V message label.  Since the object is\n  going out of scope, policy modules should free any internal storage\n  associated with the label so that it may be destroyed.\n*/\ntypedef void mpo_sysvmsg_label_destroy_t(\n\tstruct label *label\n);\n/**\n  @brief Initialize System V message label\n  @param label New label to initialize\n\n  Initialize the label for a newly instantiated System V message.\n*/\ntypedef void mpo_sysvmsg_label_init_t(\n\tstruct label *label\n);\n/**\n  @brief Clean up a System V message label\n  @param label The label to be destroyed\n\n  Clean up a System V message label.  Darwin pre-allocates\n  messages at system boot time and re-uses them rather than\n  allocating new ones.  Before messages are returned to the \"free\n  pool\", policies can cleanup or overwrite any information present in\n  the label.\n*/\ntypedef void mpo_sysvmsg_label_recycle_t(\n\tstruct label *label\n);\n/**\n  @brief Access control check for System V message enqueuing\n  @param cred Subject credential\n  @param msgptr The message\n  @param msglabel The message's label\n  @param msqptr The message queue\n  @param msqlabel The message queue's label\n\n  Determine whether the subject identified by the credential can add the\n  given message to the given message queue.\n\n  @return Return 0 if access is granted, otherwise an appropriate value for\n  errno should be returned.\n*/\ntypedef int mpo_sysvmsq_check_enqueue_t(\n\tkauth_cred_t cred,\n\tstruct msg *msgptr,\n\tstruct label *msglabel,\n\tstruct msqid_kernel *msqptr,\n\tstruct label *msqlabel\n);\n/**\n  @brief Access control check for System V message reception\n  @param cred The credential of the intended recipient\n  @param msgptr The message\n  @param msglabel The message's label\n\n  Determine whether the subject identified by the credential can receive\n  the given message.\n\n  @return Return 0 if access is granted, otherwise an appropriate value for\n  errno should be returned.\n*/\ntypedef int mpo_sysvmsq_check_msgrcv_t(\n\tkauth_cred_t cred,\n\tstruct msg *msgptr,\n\tstruct label *msglabel\n);\n/**\n  @brief Access control check for System V message queue removal\n  @param cred The credential of the caller\n  @param msgptr The message\n  @param msglabel The message's label\n\n  System V message queues are removed using the msgctl() system call.\n  The system will iterate over each messsage in the queue, calling this\n  function for each, to determine whether the caller has the appropriate\n  credentials.\n\n  @return Return 0 if access is granted, otherwise an appropriate value for\n  errno should be returned.\n*/\ntypedef int mpo_sysvmsq_check_msgrmid_t(\n\tkauth_cred_t cred,\n\tstruct msg *msgptr,\n\tstruct label *msglabel\n);\n/**\n  @brief Access control check for msgctl()\n  @param cred The credential of the caller\n  @param msqptr The message queue\n  @param msqlabel The message queue's label\n\n  This access check is performed to validate calls to msgctl().\n\n  @return Return 0 if access is granted, otherwise an appropriate value for\n  errno should be returned.\n*/\ntypedef int mpo_sysvmsq_check_msqctl_t(\n\tkauth_cred_t cred,\n\tstruct msqid_kernel *msqptr,\n\tstruct label *msqlabel,\n\tint cmd\n);\n/**\n  @brief Access control check to get a System V message queue\n  @param cred The credential of the caller\n  @param msqptr The message queue requested\n  @param msqlabel The message queue's label\n\n  On a call to msgget(), if the queue requested already exists,\n  and it is a public queue, this check will be performed before the\n  queue's ID is returned to the user.\n\n  @return Return 0 if access is granted, otherwise an appropriate value for\n  errno should be returned.\n*/\ntypedef int mpo_sysvmsq_check_msqget_t(\n\tkauth_cred_t cred,\n\tstruct msqid_kernel *msqptr,\n\tstruct label *msqlabel\n);\n/**\n  @brief Access control check to receive a System V message from the given queue\n  @param cred The credential of the caller\n  @param msqptr The message queue to receive from\n  @param msqlabel The message queue's label\n\n  On a call to msgrcv(), this check is performed to determine whether the\n  caller has receive rights on the given queue.\n\n  @return Return 0 if access is granted, otherwise an appropriate value for\n  errno should be returned.\n*/\ntypedef int mpo_sysvmsq_check_msqrcv_t(\n\tkauth_cred_t cred,\n\tstruct msqid_kernel *msqptr,\n\tstruct label *msqlabel\n);\n/**\n  @brief Access control check to send a System V message to the given queue\n  @param cred The credential of the caller\n  @param msqptr The message queue to send to\n  @param msqlabel The message queue's label\n\n  On a call to msgsnd(), this check is performed to determine whether the\n  caller has send rights on the given queue.\n\n  @return Return 0 if access is granted, otherwise an appropriate value for\n  errno should be returned.\n*/\ntypedef int mpo_sysvmsq_check_msqsnd_t(\n\tkauth_cred_t cred,\n\tstruct msqid_kernel *msqptr,\n\tstruct label *msqlabel\n);\n/**\n  @brief Create a System V message queue label\n  @param cred Subject credential\n  @param msqptr The message queue\n  @param msqlabel The label of the message queue\n\n*/\ntypedef void mpo_sysvmsq_label_associate_t(\n\tkauth_cred_t cred,\n\tstruct msqid_kernel *msqptr,\n\tstruct label *msqlabel\n);\n/**\n  @brief Destroy System V message queue label\n  @param label The label to be destroyed\n\n  Destroy a System V message queue label.  Since the object is\n  going out of scope, policy modules should free any internal storage\n  associated with the label so that it may be destroyed.\n*/\ntypedef void mpo_sysvmsq_label_destroy_t(\n\tstruct label *label\n);\n/**\n  @brief Initialize System V message queue label\n  @param label New label to initialize\n\n  Initialize the label for a newly instantiated System V message queue.\n*/\ntypedef void mpo_sysvmsq_label_init_t(\n\tstruct label *label\n);\n/**\n  @brief Clean up a System V message queue label\n  @param label The label to be destroyed\n\n  Clean up a System V message queue label.  Darwin pre-allocates\n  message queues at system boot time and re-uses them rather than\n  allocating new ones.  Before message queues are returned to the \"free\n  pool\", policies can cleanup or overwrite any information present in\n  the label.\n*/\ntypedef void mpo_sysvmsq_label_recycle_t(\n\tstruct label *label\n);\n/**\n  @brief Access control check for System V semaphore control operation\n  @param cred Subject credential\n  @param semakptr Pointer to semaphore identifier\n  @param semaklabel Label associated with semaphore\n  @param cmd Control operation to be performed; see semctl(2)\n\n  Determine whether the subject identified by the credential can perform\n  the operation indicated by cmd on the System V semaphore semakptr.\n\n  @return Return 0 if access is granted, otherwise an appropriate value for\n  errno should be returned.\n*/\ntypedef int mpo_sysvsem_check_semctl_t(\n\tkauth_cred_t cred,\n\tstruct semid_kernel *semakptr,\n\tstruct label *semaklabel,\n\tint cmd\n);\n/**\n  @brief Access control check for obtaining a System V semaphore\n  @param cred Subject credential\n  @param semakptr Pointer to semaphore identifier\n  @param semaklabel Label to associate with the semaphore\n\n  Determine whether the subject identified by the credential can\n  obtain a System V semaphore.\n\n  @return Return 0 if access is granted, otherwise an appropriate value for\n  errno should be returned.\n*/\ntypedef int mpo_sysvsem_check_semget_t(\n\tkauth_cred_t cred,\n\tstruct semid_kernel *semakptr,\n\tstruct label *semaklabel\n);\n/**\n  @brief Access control check for System V semaphore operations\n  @param cred Subject credential\n  @param semakptr Pointer to semaphore identifier\n  @param semaklabel Label associated with the semaphore\n  @param accesstype Flags to indicate access (read and/or write)\n\n  Determine whether the subject identified by the credential can\n  perform the operations on the System V semaphore indicated by\n  semakptr.  The accesstype flags hold the maximum set of permissions\n  from the sem_op array passed to the semop system call.  It may\n  contain SEM_R for read-only operations or SEM_A for read/write\n  operations.\n\n  @return Return 0 if access is granted, otherwise an appropriate value for\n  errno should be returned.\n*/\ntypedef int mpo_sysvsem_check_semop_t(\n\tkauth_cred_t cred,\n\tstruct semid_kernel *semakptr,\n\tstruct label *semaklabel,\n\tsize_t accesstype\n);\n/**\n  @brief Create a System V semaphore label\n  @param cred Subject credential\n  @param semakptr The semaphore being created\n  @param semalabel Label to associate with the new semaphore\n\n  Label a new System V semaphore.  The label was previously\n  initialized and associated with the semaphore.  At this time, an\n  appropriate initial label value should be assigned to the object and\n  stored in semalabel.\n*/\ntypedef void mpo_sysvsem_label_associate_t(\n\tkauth_cred_t cred,\n\tstruct semid_kernel *semakptr,\n\tstruct label *semalabel\n);\n/**\n  @brief Destroy System V semaphore label\n  @param label The label to be destroyed\n\n  Destroy a System V semaphore label.  Since the object is\n  going out of scope, policy modules should free any internal storage\n  associated with the label so that it may be destroyed.\n*/\ntypedef void mpo_sysvsem_label_destroy_t(\n\tstruct label *label\n);\n/**\n  @brief Initialize System V semaphore label\n  @param label New label to initialize\n\n  Initialize the label for a newly instantiated System V semaphore.  Sleeping\n  is permitted.\n*/\ntypedef void mpo_sysvsem_label_init_t(\n\tstruct label *label\n);\n/**\n  @brief Clean up a System V semaphore label\n  @param label The label to be cleaned\n\n  Clean up a System V semaphore label.  Darwin pre-allocates\n  semaphores at system boot time and re-uses them rather than\n  allocating new ones.  Before semaphores are returned to the \"free\n  pool\", policies can cleanup or overwrite any information present in\n  the label.\n*/\ntypedef void mpo_sysvsem_label_recycle_t(\n\tstruct label *label\n);\n/**\n  @brief Access control check for mapping System V shared memory\n  @param cred Subject credential\n  @param shmsegptr Pointer to shared memory segment identifier\n  @param shmseglabel Label associated with the shared memory segment\n  @param shmflg shmat flags; see shmat(2)\n\n  Determine whether the subject identified by the credential can map\n  the System V shared memory segment associated with shmsegptr.\n\n  @return Return 0 if access is granted, otherwise an appropriate value for\n  errno should be returned.\n*/\ntypedef int mpo_sysvshm_check_shmat_t(\n\tkauth_cred_t cred,\n\tstruct shmid_kernel *shmsegptr,\n\tstruct label *shmseglabel,\n\tint shmflg\n);\n/**\n  @brief Access control check for System V shared memory control operation\n  @param cred Subject credential\n  @param shmsegptr Pointer to shared memory segment identifier\n  @param shmseglabel Label associated with the shared memory segment\n  @param cmd Control operation to be performed; see shmctl(2)\n\n  Determine whether the subject identified by the credential can perform\n  the operation indicated by cmd on the System V shared memory segment\n  shmsegptr.\n\n  @return Return 0 if access is granted, otherwise an appropriate value for\n  errno should be returned.\n*/\ntypedef int mpo_sysvshm_check_shmctl_t(\n\tkauth_cred_t cred,\n\tstruct shmid_kernel *shmsegptr,\n\tstruct label *shmseglabel,\n\tint cmd\n);\n/**\n  @brief Access control check for unmapping System V shared memory\n  @param cred Subject credential\n  @param shmsegptr Pointer to shared memory segment identifier\n  @param shmseglabel Label associated with the shared memory segment\n\n  Determine whether the subject identified by the credential can unmap\n  the System V shared memory segment associated with shmsegptr.\n\n  @return Return 0 if access is granted, otherwise an appropriate value for\n  errno should be returned.\n*/\ntypedef int mpo_sysvshm_check_shmdt_t(\n\tkauth_cred_t cred,\n\tstruct shmid_kernel *shmsegptr,\n\tstruct label *shmseglabel\n);\n/**\n  @brief Access control check obtaining System V shared memory identifier\n  @param cred Subject credential\n  @param shmsegptr Pointer to shared memory segment identifier\n  @param shmseglabel Label associated with the shared memory segment\n  @param shmflg shmget flags; see shmget(2)\n\n  Determine whether the subject identified by the credential can get\n  the System V shared memory segment address.\n\n  @return Return 0 if access is granted, otherwise an appropriate value for\n  errno should be returned.\n*/\ntypedef int mpo_sysvshm_check_shmget_t(\n\tkauth_cred_t cred,\n\tstruct shmid_kernel *shmsegptr,\n\tstruct label *shmseglabel,\n\tint shmflg\n);\n/**\n  @brief Create a System V shared memory region label\n  @param cred Subject credential\n  @param shmsegptr The shared memory region being created\n  @param shmlabel Label to associate with the new shared memory region\n\n  Label a new System V shared memory region.  The label was previously\n  initialized and associated with the shared memory region.  At this\n  time, an appropriate initial label value should be assigned to the\n  object and stored in shmlabel.\n*/\ntypedef void mpo_sysvshm_label_associate_t(\n\tkauth_cred_t cred,\n\tstruct shmid_kernel *shmsegptr,\n\tstruct label *shmlabel\n);\n/**\n  @brief Destroy System V shared memory label\n  @param label The label to be destroyed\n\n  Destroy a System V shared memory region label.  Since the\n  object is going out of scope, policy modules should free any\n  internal storage associated with the label so that it may be\n  destroyed.\n*/\ntypedef void mpo_sysvshm_label_destroy_t(\n\tstruct label *label\n);\n/**\n  @brief Initialize System V Shared Memory region label\n  @param label New label to initialize\n\n  Initialize the label for a newly instantiated System V Shared Memory\n  region.  Sleeping is permitted.\n*/\ntypedef void mpo_sysvshm_label_init_t(\n\tstruct label *label\n);\n/**\n  @brief Clean up a System V Share Memory Region label\n  @param shmlabel The label to be cleaned\n\n  Clean up a System V Shared Memory Region label.  Darwin\n  pre-allocates these objects at system boot time and re-uses them\n  rather than allocating new ones.  Before the memory regions are\n  returned to the \"free pool\", policies can cleanup or overwrite any\n  information present in the label.\n*/\ntypedef void mpo_sysvshm_label_recycle_t(\n\tstruct label *shmlabel\n);\n/**\n  @brief Access control check for getting a process's task name\n  @param cred Subject credential\n  @param p Object process\n\n  Determine whether the subject identified by the credential can get\n  the passed process's task name port.\n  This call is used by the task_name_for_pid(2) API.\n\n  @return Return 0 if access is granted, otherwise an appropriate value for\n  errno should be returned. Suggested failure: EACCES for label mismatch,\n  EPERM for lack of privilege, or ESRCH to hide visibility of the target.\n*/\ntypedef int mpo_proc_check_get_task_name_t(\n\tkauth_cred_t cred,\n\tstruct proc *p\n);\n/**\n  @brief Access control check for getting a process's task port\n  @param cred Subject credential\n  @param p Object process\n\n  Determine whether the subject identified by the credential can get\n  the passed process's task control port.\n  This call is used by the task_for_pid(2) API.\n\n  @return Return 0 if access is granted, otherwise an appropriate value for\n  errno should be returned. Suggested failure: EACCES for label mismatch,\n  EPERM for lack of privilege, or ESRCH to hide visibility of the target.\n*/\ntypedef int mpo_proc_check_get_task_t(\n\tkauth_cred_t cred,\n\tstruct proc *p\n);\n\n/**\n  @brief Access control check for exposing a process's task port\n  @param cred Subject credential\n  @param p Object process\n\n  Determine whether the subject identified by the credential can expose\n  the passed process's task control port.\n  This call is used by the accessor APIs like processor_set_tasks() and\n  processor_set_threads().\n\n  @return Return 0 if access is granted, otherwise an appropriate value for\n  errno should be returned. Suggested failure: EACCES for label mismatch,\n  EPERM for lack of privilege, or ESRCH to hide visibility of the target.\n*/\ntypedef int mpo_proc_check_expose_task_t(\n\tkauth_cred_t cred,\n\tstruct proc *p\n);\n\n/**\n @brief Check whether task's IPC may inherit across process exec\n @param p current process instance\n @param cur_vp vnode pointer to current instance\n @param cur_offset offset of binary of currently executing image\n @param img_vp vnode pointer to to be exec'ed image\n @param img_offset offset into file which is selected for execution\n @param scriptvp vnode pointer of script file if any.\n @return Return 0 if access is granted.\n \tEPERM     if parent does not have any entitlements.\n\tEACCESS   if mismatch in entitlements\n*/\ntypedef int mpo_proc_check_inherit_ipc_ports_t(\n\tstruct proc *p,\n\tstruct vnode *cur_vp,\n\toff_t cur_offset,\n\tstruct vnode *img_vp,\n\toff_t img_offset,\n\tstruct vnode *scriptvp\n);\n\n/**\n @brief Privilege check for a process to run invalid\n @param p Object process\n \n Determine whether the process may execute even though the system determined\n that it is untrusted (eg unidentified / modified code).\n \n @return Return 0 if access is granted, otherwise an appropriate value for\n errno should be returned.\n */\ntypedef int mpo_proc_check_run_cs_invalid_t(\n\tstruct proc *p\n);\n\n/**\n  @brief Perform MAC-related events when a thread returns to user space\n  @param thread Mach (not BSD) thread that is returning\n\n  This entry point permits policy modules to perform MAC-related\n  events when a thread returns to user space, via a system call\n  return or trap return.\n*/\ntypedef void mpo_thread_userret_t(\n\tstruct thread *thread\n);\n\n/**\n  @brief Check vnode access\n  @param cred Subject credential\n  @param vp Object vnode\n  @param label Label for vp\n  @param acc_mode access(2) flags\n\n  Determine how invocations of access(2) and related calls by the\n  subject identified by the credential should return when performed\n  on the passed vnode using the passed access flags. This should\n  generally be implemented using the same semantics used in\n  mpo_vnode_check_open.\n\n  @return Return 0 if access is granted, otherwise an appropriate value for\n  errno should be returned. Suggested failure: EACCES for label mismatch or\n  EPERM for lack of privilege.\n*/\ntypedef int mpo_vnode_check_access_t(\n\tkauth_cred_t cred,\n\tstruct vnode *vp,\n\tstruct label *label,\n\tint acc_mode\n);\n/**\n  @brief Access control check for changing working directory\n  @param cred Subject credential\n  @param dvp Object; vnode to chdir(2) into\n  @param dlabel Policy label for dvp\n\n  Determine whether the subject identified by the credential can change\n  the process working directory to the passed vnode.\n\n  @return Return 0 if access is granted, otherwise an appropriate value for\n  errno should be returned. Suggested failure: EACCES for label mismatch or\n  EPERM for lack of privilege.\n*/\ntypedef int mpo_vnode_check_chdir_t(\n\tkauth_cred_t cred,\n\tstruct vnode *dvp,\n\tstruct label *dlabel\n);\n/**\n  @brief Access control check for changing root directory\n  @param cred Subject credential\n  @param dvp Directory vnode\n  @param dlabel Policy label associated with dvp\n  @param cnp Component name for dvp\n\n  Determine whether the subject identified by the credential should be\n  allowed to chroot(2) into the specified directory (dvp).\n\n  @return In the event of an error, an appropriate value for errno\n  should be returned, otherwise return 0 upon success.\n*/\ntypedef int mpo_vnode_check_chroot_t(\n\tkauth_cred_t cred,\n\tstruct vnode *dvp,\n\tstruct label *dlabel,\n\tstruct componentname *cnp\n);\n/**\n  @brief Access control check for creating clone\n  @param cred Subject credential\n  @param dvp Vnode of directory to create the clone in\n  @param dlabel Policy label associated with dvp\n  @param vp Vnode of the file to clone from\n  @param label Policy label associated with vp\n  @param cnp Component name for the clone being created\n\n  Determine whether the subject identified by the credential should be\n  allowed to create a clone of the vnode vp with the name specified by cnp.\n\n  @return Return 0 if access is granted, otherwise an appropriate value for\n  errno should be returned.\n*/\ntypedef int mpo_vnode_check_clone_t(\n\tkauth_cred_t cred,\n\tstruct vnode *dvp,\n\tstruct label *dlabel,\n\tstruct vnode *vp,\n\tstruct label *label,\n\tstruct componentname *cnp\n);\n/**\n  @brief Access control check for creating vnode\n  @param cred Subject credential\n  @param dvp Directory vnode\n  @param dlabel Policy label for dvp\n  @param cnp Component name for dvp\n  @param vap vnode attributes for vap\n\n  Determine whether the subject identified by the credential can create\n  a vnode with the passed parent directory, passed name information,\n  and passed attribute information. This call may be made in a number of\n  situations, including as a result of calls to open(2) with O_CREAT,\n  mknod(2), mkfifo(2), and others.\n\n  @return Return 0 if access is granted, otherwise an appropriate value for\n  errno should be returned. Suggested failure: EACCES for label mismatch or\n  EPERM for lack of privilege.\n*/\ntypedef int mpo_vnode_check_create_t(\n\tkauth_cred_t cred,\n\tstruct vnode *dvp,\n\tstruct label *dlabel,\n\tstruct componentname *cnp,\n\tstruct vnode_attr *vap\n);\n/**\n  @brief Access control check for deleting extended attribute\n  @param cred Subject credential\n  @param vp Object vnode\n  @param vlabel Label associated with vp\n  @param name Extended attribute name\n\n  Determine whether the subject identified by the credential can delete\n  the extended attribute from the passed vnode.\n\n  @return Return 0 if access is granted, otherwise an appropriate value for\n  errno should be returned. Suggested failure: EACCES for label mismatch or\n  EPERM for lack of privilege.\n*/\ntypedef int mpo_vnode_check_deleteextattr_t(\n\tkauth_cred_t cred,\n\tstruct vnode *vp,\n\tstruct label *vlabel,\n\tconst char *name\n);\n/**\n  @brief Access control check for exchanging file data\n  @param cred Subject credential\n  @param v1 vnode 1 to swap\n  @param vl1 Policy label for v1\n  @param v2 vnode 2 to swap\n  @param vl2 Policy label for v2\n\n  Determine whether the subject identified by the credential can swap the data\n  in the two supplied vnodes.\n\n  @return Return 0 if access is granted, otherwise an appropriate value for\n  errno should be returned. Suggested failure: EACCES for label mismatch or\n  EPERM for lack of privilege.\n*/\ntypedef int mpo_vnode_check_exchangedata_t(\n\tkauth_cred_t cred,\n\tstruct vnode *v1,\n\tstruct label *vl1,\n\tstruct vnode *v2,\n\tstruct label *vl2\n);\n/**\n  @brief Access control check for executing the vnode\n  @param cred Subject credential\n  @param vp Object vnode to execute\n  @param scriptvp Script being executed by interpreter, if any.\n  @param vnodelabel Label corresponding to vp\n  @param scriptlabel Script vnode label\n  @param execlabel Userspace provided execution label\n  @param cnp Component name for file being executed\n  @param macpolicyattr MAC policy-specific spawn attribute data.\n  @param macpolicyattrlen Length of policy-specific spawn attribute data.\n\n  Determine whether the subject identified by the credential can execute\n  the passed vnode. Determination of execute privilege is made separately\n  from decisions about any process label transitioning event.\n\n  The final label, execlabel, corresponds to a label supplied by a\n  user space application through the use of the mac_execve system call.\n  This label will be NULL if the user application uses the the vendor\n  execve(2) call instead of the MAC Framework mac_execve() call.\n\n  @return Return 0 if access is granted, otherwise an appropriate value for\n  errno should be returned. Suggested failure: EACCES for label mismatch or\n  EPERM for lack of privilege.\n*/\ntypedef int mpo_vnode_check_exec_t(\n\tkauth_cred_t cred,\n\tstruct vnode *vp,\n\tstruct vnode *scriptvp,\n\tstruct label *vnodelabel,\n\tstruct label *scriptlabel,\n\tstruct label *execlabel,\t/* NULLOK */\n\tstruct componentname *cnp,\n\tu_int *csflags,\n\tvoid *macpolicyattr,\n\tsize_t macpolicyattrlen\n);\n/**\n  @brief Access control check for fsgetpath\n  @param cred Subject credential\n  @param vp Vnode for which a path will be returned\n  @param label Label associated with the vnode\n\n  Determine whether the subject identified by the credential can get the path\n  of the given vnode with fsgetpath.\n\n  @return Return 0 if access is granted, otherwise an appropriate value for\n  errno should be returned.\n*/\ntypedef int mpo_vnode_check_fsgetpath_t(\n\tkauth_cred_t cred,\n\tstruct vnode *vp,\n\tstruct label *label\n);\n/**\n  @brief Access control check for retrieving file attributes\n  @param active_cred Subject credential\n  @param file_cred Credential associated with the struct fileproc\n  @param vp Object vnode\n  @param vlabel Policy label for vp\n  @param va Vnode attributes to retrieve\n\n  Determine whether the subject identified by the credential can\n  get information about the passed vnode.  The active_cred hold\n  the credentials of the subject performing the operation, and\n  file_cred holds the credentials of the subject that originally\n  opened the file. This check happens during stat(), lstat(),\n  fstat(), and getattrlist() syscalls.  See <sys/vnode.h> for\n  definitions of the attributes.\n\n  @return Return 0 if access is granted, otherwise an appropriate value for\n  errno should be returned.\n\n  @note Policies may change the contents of va to alter the list of\n  file attributes returned.\n*/\ntypedef int mpo_vnode_check_getattr_t(\n\tkauth_cred_t active_cred,\n\tkauth_cred_t file_cred, /* NULLOK */\n\tstruct vnode *vp,\n\tstruct label *vlabel,\n\tstruct vnode_attr *va\n);\n/**\n  @brief Access control check for retrieving file attributes\n  @param cred Subject credential\n  @param vp Object vnode\n  @param vlabel Policy label for vp\n  @param alist List of attributes to retrieve\n\n  Determine whether the subject identified by the credential can read\n  various attributes of the specified vnode, or the filesystem or volume on\n  which that vnode resides. See <sys/attr.h> for definitions of the\n  attributes.\n\n  @return Return 0 if access is granted, otherwise an appropriate value for\n  errno should be returned. Suggested failure: EACCES for label mismatch or\n  EPERM for lack of privilege. Access control covers all attributes requested\n  with this call; the security policy is not permitted to change the set of\n  attributes requested.\n*/\ntypedef int mpo_vnode_check_getattrlist_t(\n\tkauth_cred_t cred,\n\tstruct vnode *vp,\n\tstruct label *vlabel,\n\tstruct attrlist *alist\n);\n/**\n  @brief Access control check for retrieving an extended attribute\n  @param cred Subject credential\n  @param vp Object vnode\n  @param label Policy label for vp\n  @param name Extended attribute name\n  @param uio I/O structure pointer\n\n  Determine whether the subject identified by the credential can retrieve\n  the extended attribute from the passed vnode.  The uio parameter\n  will be NULL when the getxattr(2) call has been made with a NULL data\n  value; this is done to request the size of the data only.\n\n  @return Return 0 if access is granted, otherwise an appropriate value for\n  errno should be returned. Suggested failure: EACCES for label mismatch or\n  EPERM for lack of privilege.\n*/\ntypedef int mpo_vnode_check_getextattr_t(\n\tkauth_cred_t cred,\n\tstruct vnode *vp,\n\tstruct label *label,\t\t/* NULLOK */\n\tconst char *name,\n\tstruct uio *uio\t\t\t/* NULLOK */\n);\n/**\n  @brief Access control check for ioctl\n  @param cred Subject credential\n  @param vp Object vnode\n  @param label Policy label for vp\n  @param cmd Device-dependent request code; see ioctl(2)\n\n  Determine whether the subject identified by the credential can perform\n  the ioctl operation indicated by com.\n\n  @warning Since ioctl data is opaque from the standpoint of the MAC\n  framework, and since ioctls can affect many aspects of system\n  operation, policies must exercise extreme care when implementing\n  access control checks.\n\n  @return Return 0 if access is granted, otherwise an appropriate value for\n  errno should be returned.\n*/\ntypedef int mpo_vnode_check_ioctl_t(\n\tkauth_cred_t cred,\n\tstruct vnode *vp,\n\tstruct label *label,\n\tunsigned int cmd\n);\n/**\n  @brief Access control check for vnode kqfilter\n  @param active_cred Subject credential\n  @param kn Object knote\n  @param vp Object vnode\n  @param label Policy label for vp\n\n  Determine whether the subject identified by the credential can\n  receive the knote on the passed vnode.\n\n  @return Return 0 if access if granted, otherwise an appropriate\n  value for errno should be returned.\n*/\ntypedef int mpo_vnode_check_kqfilter_t(\n\tkauth_cred_t active_cred,\n\tkauth_cred_t file_cred,\t\t/* NULLOK */\n\tstruct knote *kn,\n\tstruct vnode *vp,\n\tstruct label *label\n);\n/**\n  @brief Access control check for relabel\n  @param cred Subject credential\n  @param vp Object vnode\n  @param vnodelabel Existing policy label for vp\n  @param newlabel Policy label update to later be applied to vp\n  @see mpo_relable_vnode_t\n\n  Determine whether the subject identified by the credential can relabel\n  the passed vnode to the passed label update.  If all policies permit\n  the label change, the actual relabel entry point (mpo_vnode_label_update)\n  will follow.\n\n  @return Return 0 if access is granted, otherwise an appropriate value for\n  errno should be returned.\n*/\ntypedef int mpo_vnode_check_label_update_t(\n\tstruct ucred *cred,\n\tstruct vnode *vp,\n\tstruct label *vnodelabel,\n\tstruct label *newlabel\n);\n/**\n  @brief Access control check for creating link\n  @param cred Subject credential\n  @param dvp Directory vnode\n  @param dlabel Policy label associated with dvp\n  @param vp Link destination vnode\n  @param label Policy label associated with vp\n  @param cnp Component name for the link being created\n\n  Determine whether the subject identified by the credential should be\n  allowed to create a link to the vnode vp with the name specified by cnp.\n\n  @return Return 0 if access is granted, otherwise an appropriate value for\n  errno should be returned.\n*/\ntypedef int mpo_vnode_check_link_t(\n\tkauth_cred_t cred,\n\tstruct vnode *dvp,\n\tstruct label *dlabel,\n\tstruct vnode *vp,\n\tstruct label *label,\n\tstruct componentname *cnp\n);\n/**\n  @brief Access control check for listing extended attributes\n  @param cred Subject credential\n  @param vp Object vnode\n  @param vlabel Policy label associated with vp\n\n  Determine whether the subject identified by the credential can retrieve\n  a list of named extended attributes from a vnode.\n\n  @return Return 0 if access is granted, otherwise an appropriate value for\n  errno should be returned.\n*/\ntypedef int mpo_vnode_check_listextattr_t(\n\tkauth_cred_t cred,\n\tstruct vnode *vp,\n\tstruct label *vlabel\n);\n/**\n  @brief Access control check for lookup\n  @param cred Subject credential\n  @param dvp Object vnode\n  @param dlabel Policy label for dvp\n  @param cnp Component name being looked up\n\n  Determine whether the subject identified by the credential can perform\n  a lookup in the passed directory vnode for the passed name (cnp).\n\n  @return Return 0 if access is granted, otherwise an appropriate value for\n  errno should be returned. Suggested failure: EACCES for label mismatch or\n  EPERM for lack of privilege.\n*/\ntypedef int mpo_vnode_check_lookup_t(\n\tkauth_cred_t cred,\n\tstruct vnode *dvp,\n\tstruct label *dlabel,\n\tstruct componentname *cnp\n);\n/**\n  @brief Access control check for open\n  @param cred Subject credential\n  @param vp Object vnode\n  @param label Policy label associated with vp\n  @param acc_mode open(2) access mode\n\n  Determine whether the subject identified by the credential can perform\n  an open operation on the passed vnode with the passed access mode.\n\n  @return Return 0 if access is granted, otherwise an appropriate value for\n  errno should be returned. Suggested failure: EACCES for label mismatch or\n  EPERM for lack of privilege.\n*/\ntypedef int mpo_vnode_check_open_t(\n\tkauth_cred_t cred,\n\tstruct vnode *vp,\n\tstruct label *label,\n\tint acc_mode\n);\n/**\n  @brief Access control check for read\n  @param active_cred Subject credential\n  @param file_cred Credential associated with the struct fileproc\n  @param vp Object vnode\n  @param label Policy label for vp\n\n  Determine whether the subject identified by the credential can perform\n  a read operation on the passed vnode.  The active_cred hold the credentials\n  of the subject performing the operation, and file_cred holds the\n  credentials of the subject that originally opened the file.\n\n  @return Return 0 if access is granted, otherwise an appropriate value for\n  errno should be returned. Suggested failure: EACCES for label mismatch or\n  EPERM for lack of privilege.\n*/\ntypedef int mpo_vnode_check_read_t(\n\tkauth_cred_t active_cred,\t/* SUBJECT */\n\tkauth_cred_t file_cred,\t/* NULLOK */\n\tstruct vnode *vp,\t\t/* OBJECT */\n\tstruct label *label\t\t/* LABEL */\n);\n/**\n  @brief Access control check for read directory\n  @param cred Subject credential\n  @param dvp Object directory vnode\n  @param dlabel Policy label for dvp\n\n  Determine whether the subject identified by the credential can\n  perform a readdir operation on the passed directory vnode.\n\n  @return Return 0 if access is granted, otherwise an appropriate value for\n  errno should be returned. Suggested failure: EACCES for label mismatch or\n  EPERM for lack of privilege.\n*/\ntypedef int mpo_vnode_check_readdir_t(\n\tkauth_cred_t cred,\t\t/* SUBJECT */\n\tstruct vnode *dvp,\t\t/* OBJECT */\n\tstruct label *dlabel\t\t/* LABEL */\n);\n/**\n  @brief Access control check for read link\n  @param cred Subject credential\n  @param vp Object vnode\n  @param label Policy label for vp\n\n  Determine whether the subject identified by the credential can perform\n  a readlink operation on the passed symlink vnode.  This call can be made\n  in a number of situations, including an explicit readlink call by the\n  user process, or as a result of an implicit readlink during a name\n  lookup by the process.\n\n  @return Return 0 if access is granted, otherwise an appropriate value for\n  errno should be returned. Suggested failure: EACCES for label mismatch or\n  EPERM for lack of privilege.\n*/\ntypedef int mpo_vnode_check_readlink_t(\n\tkauth_cred_t cred,\n\tstruct vnode *vp,\n\tstruct label *label\n);\n/**\n  @brief Access control check for rename\n  @param cred Subject credential\n  @param dvp Directory vnode\n  @param dlabel Policy label associated with dvp\n  @param vp vnode to be renamed\n  @param label Policy label associated with vp\n  @param cnp Component name for vp\n  @param tdvp Destination directory vnode\n  @param tdlabel Policy label associated with tdvp\n  @param tvp Overwritten vnode\n  @param tlabel Policy label associated with tvp\n  @param tcnp Destination component name\n\n  Determine whether the subject identified by the credential should be allowed\n  to rename the vnode vp to something else.\n\n  @return Return 0 if access is granted, otherwise an appropriate value for\n  errno should be returned.\n*/\ntypedef int mpo_vnode_check_rename_t(\n\tkauth_cred_t cred,\n\tstruct vnode *dvp,\n\tstruct label *dlabel,\n\tstruct vnode *vp,\n\tstruct label *label,\n\tstruct componentname *cnp,\n\tstruct vnode *tdvp,\n\tstruct label *tdlabel,\n\tstruct vnode *tvp,\n\tstruct label *tlabel,\n\tstruct componentname *tcnp\n);\n/**\n  @brief Access control check for rename from\n  @param cred Subject credential\n  @param dvp Directory vnode\n  @param dlabel Policy label associated with dvp\n  @param vp vnode to be renamed\n  @param label Policy label associated with vp\n  @param cnp Component name for vp\n  @see mpo_vnode_check_rename_t\n  @see mpo_vnode_check_rename_to_t\n\n  Determine whether the subject identified by the credential should be\n  allowed to rename the vnode vp to something else.\n\n  Due to VFS locking constraints (to make sure proper vnode locks are\n  held during this entry point), the vnode relabel checks had to be\n  split into two parts: relabel_from and relabel to.\n\n  This hook is deprecated, mpo_vnode_check_rename_t should be used instead.\n\n  @return Return 0 if access is granted, otherwise an appropriate value for\n  errno should be returned.\n*/\ntypedef int mpo_vnode_check_rename_from_t(\n\tkauth_cred_t cred,\n\tstruct vnode *dvp,\n\tstruct label *dlabel,\n\tstruct vnode *vp,\n\tstruct label *label,\n\tstruct componentname *cnp\n);\n/**\n  @brief Access control check for rename to\n  @param cred Subject credential\n  @param dvp Directory vnode\n  @param dlabel Policy label associated with dvp\n  @param vp Overwritten vnode\n  @param label Policy label associated with vp\n  @param samedir Boolean; 1 if the source and destination directories are the same\n  @param cnp Destination component name\n  @see mpo_vnode_check_rename_t\n  @see mpo_vnode_check_rename_from_t\n\n  Determine whether the subject identified by the credential should be\n  allowed to rename to the vnode vp, into the directory dvp, or to the\n  name represented by cnp. If there is no existing file to overwrite,\n  vp and label will be NULL.\n\n  Due to VFS locking constraints (to make sure proper vnode locks are\n  held during this entry point), the vnode relabel checks had to be\n  split into two parts: relabel_from and relabel to.\n\n  This hook is deprecated, mpo_vnode_check_rename_t should be used instead.\n\n  @return Return 0 if access is granted, otherwise an appropriate value for\n  errno should be returned.\n*/\ntypedef int mpo_vnode_check_rename_to_t(\n\tkauth_cred_t cred,\n\tstruct vnode *dvp,\n\tstruct label *dlabel,\n\tstruct vnode *vp,\t\t\t/* NULLOK */\n\tstruct label *label,\t\t\t/* NULLOK */\n\tint samedir,\n\tstruct componentname *cnp\n);\n/**\n  @brief Access control check for revoke\n  @param cred Subject credential\n  @param vp Object vnode\n  @param label Policy label for vp\n\n  Determine whether the subject identified by the credential can revoke\n  access to the passed vnode.\n\n  @return Return 0 if access is granted, otherwise an appropriate value for\n  errno should be returned. Suggested failure: EACCES for label mismatch or\n  EPERM for lack of privilege.\n*/\ntypedef int mpo_vnode_check_revoke_t(\n\tkauth_cred_t cred,\n\tstruct vnode *vp,\n\tstruct label *label\n);\n/**\n  @brief Access control check for searchfs\n  @param cred Subject credential\n  @param vp Object vnode\n  @param vlabel Policy label for vp\n  @param alist List of attributes used as search criteria\n\n  Determine whether the subject identified by the credential can search the\n  vnode using the searchfs system call.\n\n  @return Return 0 if access is granted, otherwise an appropriate value for\n  errno should be returned.\n*/\ntypedef int mpo_vnode_check_searchfs_t(\n\tkauth_cred_t cred,\n\tstruct vnode *vp,\n\tstruct label *vlabel,\n\tstruct attrlist *alist\n);\n/**\n  @brief Access control check for select\n  @param cred Subject credential\n  @param vp Object vnode\n  @param label Policy label for vp\n  @param which The operation selected on: FREAD or FWRITE\n\n  Determine whether the subject identified by the credential can select\n  the vnode.\n\n  @return Return 0 if access is granted, otherwise an appropriate value for\n  errno should be returned.\n*/\ntypedef int mpo_vnode_check_select_t(\n\tkauth_cred_t cred,\n\tstruct vnode *vp,\n\tstruct label *label,\n\tint which\n);\n/**\n  @brief Access control check for setting ACL\n  @param cred Subject credential\n  @param vp Object node\n  @param label Policy label for vp\n  @param acl ACL structure pointer\n\n  Determine whether the subject identified by the credential can set an ACL\n  on the specified vnode.  The ACL pointer will be NULL when removing an ACL.\n\n  @return Return 0 if access is granted, otherwise an appropriate value for\n  errno should be returned. Suggested failure: EACCES for label mismatch or\n  EPERM for lack of privilege.\n*/\ntypedef int mpo_vnode_check_setacl_t(\n\tkauth_cred_t cred,\n\tstruct vnode *vp,\n\tstruct label *label,\n\tstruct kauth_acl *acl\n);\n/**\n  @brief Access control check for setting file attributes\n  @param cred Subject credential\n  @param vp Object vnode\n  @param vlabel Policy label for vp\n  @param alist List of attributes to set\n\n  Determine whether the subject identified by the credential can set\n  various attributes of the specified vnode, or the filesystem or volume on\n  which that vnode resides. See <sys/attr.h> for definitions of the\n  attributes.\n\n  @return Return 0 if access is granted, otherwise an appropriate value for\n  errno should be returned. Suggested failure: EACCES for label mismatch or\n  EPERM for lack of privilege. Access control covers all attributes requested\n  with this call.\n*/\ntypedef int mpo_vnode_check_setattrlist_t(\n\tkauth_cred_t cred,\n\tstruct vnode *vp,\n\tstruct label *vlabel,\n\tstruct attrlist *alist\n);\n/**\n  @brief Access control check for setting extended attribute\n  @param cred Subject credential\n  @param vp Object vnode\n  @param label Policy label for vp\n  @param name Extended attribute name\n  @param uio I/O structure pointer\n\n  Determine whether the subject identified by the credential can set the\n  extended attribute of passed name and passed namespace on the passed\n  vnode. Policies implementing security labels backed into extended\n  attributes may want to provide additional protections for those\n  attributes. Additionally, policies should avoid making decisions based\n  on the data referenced from uio, as there is a potential race condition\n  between this check and the actual operation. The uio may also be NULL\n  if a delete operation is being performed.\n\n  @return Return 0 if access is granted, otherwise an appropriate value for\n  errno should be returned. Suggested failure: EACCES for label mismatch or\n  EPERM for lack of privilege.\n*/\ntypedef int mpo_vnode_check_setextattr_t(\n\tkauth_cred_t cred,\n\tstruct vnode *vp,\n\tstruct label *label,\n\tconst char *name,\n\tstruct uio *uio\n);\n/**\n  @brief Access control check for setting flags\n  @param cred Subject credential\n  @param vp Object vnode\n  @param label Policy label for vp\n  @param flags File flags; see chflags(2)\n\n  Determine whether the subject identified by the credential can set\n  the passed flags on the passed vnode.\n\n  @return Return 0 if access is granted, otherwise an appropriate value for\n  errno should be returned. Suggested failure: EACCES for label mismatch or\n  EPERM for lack of privilege.\n*/\ntypedef int mpo_vnode_check_setflags_t(\n\tkauth_cred_t cred,\n\tstruct vnode *vp,\n\tstruct label *label,\n\tu_long flags\n);\n/**\n  @brief Access control check for setting mode\n  @param cred Subject credential\n  @param vp Object vnode\n  @param label Policy label for vp\n  @param mode File mode; see chmod(2)\n\n  Determine whether the subject identified by the credential can set\n  the passed mode on the passed vnode.\n\n  @return Return 0 if access is granted, otherwise an appropriate value for\n  errno should be returned. Suggested failure: EACCES for label mismatch or\n  EPERM for lack of privilege.\n*/\ntypedef int mpo_vnode_check_setmode_t(\n\tkauth_cred_t cred,\n\tstruct vnode *vp,\n\tstruct label *label,\n\tmode_t mode\n);\n/**\n  @brief Access control check for setting uid and gid\n  @param cred Subject credential\n  @param vp Object vnode\n  @param label Policy label for vp\n  @param uid User ID\n  @param gid Group ID\n\n  Determine whether the subject identified by the credential can set\n  the passed uid and passed gid as file uid and file gid on the passed\n  vnode. The IDs may be set to (-1) to request no update.\n\n  @return Return 0 if access is granted, otherwise an appropriate value for\n  errno should be returned. Suggested failure: EACCES for label mismatch or\n  EPERM for lack of privilege.\n*/\ntypedef int mpo_vnode_check_setowner_t(\n\tkauth_cred_t cred,\n\tstruct vnode *vp,\n\tstruct label *label,\n\tuid_t uid,\n\tgid_t gid\n);\n/**\n  @brief Access control check for setting timestamps\n  @param cred Subject credential\n  @param vp Object vnode\n  @param label Policy label for vp\n  @param atime Access time; see utimes(2)\n  @param mtime Modification time; see utimes(2)\n\n  Determine whether the subject identified by the credential can set\n  the passed access timestamps on the passed vnode.\n\n  @return Return 0 if access is granted, otherwise an appropriate value for\n  errno should be returned. Suggested failure: EACCES for label mismatch or\n  EPERM for lack of privilege.\n*/\ntypedef int mpo_vnode_check_setutimes_t(\n\tkauth_cred_t cred,\n\tstruct vnode *vp,\n\tstruct label *label,\n\tstruct timespec atime,\n\tstruct timespec mtime\n);\n/**\n  @brief Access control check after determining the code directory hash\n  @param vp vnode vnode to combine into proc\n  @param label label associated with the vnode\n  @param cs_blob the code signature to check\n  @param cs_flags update code signing flags if needed\n  @param flags operational flag to mpo_vnode_check_signature\n  @param fatal_failure_desc description of fatal failure\n  @param fatal_failure_desc_len failure description len, failure is fatal if non-0\n\n  @return Return 0 if access is granted, otherwise an appropriate value for\n  errno should be returned.\n */\ntypedef int mpo_vnode_check_signature_t(\n\tstruct vnode *vp,\n\tstruct label *label,\n\tstruct cs_blob *cs_blob,\n\tunsigned int *cs_flags,\n\tint flags,\n\tchar **fatal_failure_desc, size_t *fatal_failure_desc_len\n);\n/**\n  @brief Access control check for stat\n  @param active_cred Subject credential\n  @param file_cred Credential associated with the struct fileproc\n  @param vp Object vnode\n  @param label Policy label for vp\n\n  Determine whether the subject identified by the credential can stat\n  the passed vnode. See stat(2) for more information.  The active_cred\n  hold the credentials of the subject performing the operation, and\n  file_cred holds the credentials of the subject that originally\n  opened the file.\n\n  @return Return 0 if access is granted, otherwise an appropriate value for\n  errno should be returned. Suggested failure: EACCES for label mismatch or\n  EPERM for lack of privilege.\n*/\ntypedef int mpo_vnode_check_stat_t(\n\tstruct ucred *active_cred,\n\tstruct ucred *file_cred,\t/* NULLOK */\n\tstruct vnode *vp,\n\tstruct label *label\n);\n/**\n  @brief Access control check for truncate/ftruncate\n  @param active_cred Subject credential\n  @param file_cred Credential associated with the struct fileproc\n  @param vp Object vnode\n  @param label Policy label for vp\n\n  Determine whether the subject identified by the credential can\n  perform a truncate operation on the passed vnode.  The active_cred hold\n  the credentials of the subject performing the operation, and\n  file_cred holds the credentials of the subject that originally\n  opened the file.\n\n  @return Return 0 if access is granted, otherwise an appropriate value for\n  errno should be returned. Suggested failure: EACCES for label mismatch or\n  EPERM for lack of privilege.\n*/\ntypedef int mpo_vnode_check_truncate_t(\n\tkauth_cred_t active_cred,\n\tkauth_cred_t file_cred,\t/* NULLOK */\n\tstruct vnode *vp,\n\tstruct label *label\n);\n/**\n  @brief Access control check for binding UNIX domain socket\n  @param cred Subject credential\n  @param dvp Directory vnode\n  @param dlabel Policy label for dvp\n  @param cnp Component name for dvp\n  @param vap vnode attributes for vap\n\n  Determine whether the subject identified by the credential can perform a\n  bind operation on a UNIX domain socket with the passed parent directory,\n  passed name information, and passed attribute information.\n\n  @return Return 0 if access is granted, otherwise an appropriate value for\n  errno should be returned. Suggested failure: EACCES for label mismatch or\n  EPERM for lack of privilege.\n*/\ntypedef int mpo_vnode_check_uipc_bind_t(\n\tkauth_cred_t cred,\n\tstruct vnode *dvp,\n\tstruct label *dlabel,\n\tstruct componentname *cnp,\n\tstruct vnode_attr *vap\n);\n/**\n  @brief Access control check for connecting UNIX domain socket\n  @param cred Subject credential\n  @param vp Object vnode\n  @param label Policy label associated with vp\n  @param so Socket\n\n  Determine whether the subject identified by the credential can perform a\n  connect operation on the passed UNIX domain socket vnode.\n\n  @return Return 0 if access is granted, otherwise an appropriate value for\n  errno should be returned. Suggested failure: EACCES for label mismatch or\n  EPERM for lack of privilege.\n*/\ntypedef int mpo_vnode_check_uipc_connect_t(\n\tkauth_cred_t cred,\n\tstruct vnode *vp,\n\tstruct label *label,\n\tsocket_t so\n);\n/**\n  @brief Access control check for deleting vnode\n  @param cred Subject credential\n  @param dvp Parent directory vnode\n  @param dlabel Policy label for dvp\n  @param vp Object vnode to delete\n  @param label Policy label for vp\n  @param cnp Component name for vp\n  @see mpo_check_rename_to_t\n\n  Determine whether the subject identified by the credential can delete\n  a vnode from the passed parent directory and passed name information.\n  This call may be made in a number of situations, including as a\n  results of calls to unlink(2) and rmdir(2). Policies implementing\n  this entry point should also implement mpo_check_rename_to to\n  authorize deletion of objects as a result of being the target of a rename.\n\n  @return Return 0 if access is granted, otherwise an appropriate value for\n  errno should be returned. Suggested failure: EACCES for label mismatch or\n  EPERM for lack of privilege.\n*/\ntypedef int mpo_vnode_check_unlink_t(\n\tkauth_cred_t cred,\n\tstruct vnode *dvp,\n\tstruct label *dlabel,\n\tstruct vnode *vp,\n\tstruct label *label,\n\tstruct componentname *cnp\n);\n/**\n  @brief Access control check for write\n  @param active_cred Subject credential\n  @param file_cred Credential associated with the struct fileproc\n  @param vp Object vnode\n  @param label Policy label for vp\n\n  Determine whether the subject identified by the credential can\n  perform a write operation on the passed vnode.  The active_cred hold\n  the credentials of the subject performing the operation, and\n  file_cred holds the credentials of the subject that originally\n  opened the file.\n\n  @return Return 0 if access is granted, otherwise an appropriate value for\n  errno should be returned. Suggested failure: EACCES for label mismatch or\n  EPERM for lack of privilege.\n*/\ntypedef int mpo_vnode_check_write_t(\n\tkauth_cred_t active_cred,\n\tkauth_cred_t file_cred,\t/* NULLOK */\n\tstruct vnode *vp,\n\tstruct label *label\n);\n/**\n  @brief Associate a vnode with a devfs entry\n  @param mp Devfs mount point\n  @param mntlabel Devfs mount point label\n  @param de Devfs directory entry\n  @param delabel Label associated with de\n  @param vp vnode associated with de\n  @param vlabel Label associated with vp\n\n  Fill in the label (vlabel) for a newly created devfs vnode.  The\n  label is typically derived from the label on the devfs directory\n  entry or the label on the filesystem, supplied as parameters.\n*/\ntypedef void mpo_vnode_label_associate_devfs_t(\n\tstruct mount *mp,\n\tstruct label *mntlabel,\n\tstruct devnode *de,\n\tstruct label *delabel,\n\tstruct vnode *vp,\n\tstruct label *vlabel\n);\n/**\n  @brief Associate a label with a vnode\n  @param mp File system mount point\n  @param mntlabel File system mount point label\n  @param vp Vnode to label\n  @param vlabel Label associated with vp\n\n  Attempt to retrieve label information for the vnode, vp, from the\n  file system extended attribute store.  The label should be stored in\n  the supplied vlabel parameter.  If a policy cannot retrieve an\n  extended attribute, sometimes it is acceptible to fallback to using\n  the mntlabel.\n\n  If the policy requires vnodes to have a valid label elsewhere it\n  MUST NOT return other than temporary errors, and must always provide\n  a valid label of some sort.  Returning an error will cause vnode\n  labeling to be retried at a later access.  Failure to handle policy\n  centric errors internally (corrupt labels etc.) will result in\n  inaccessible files.\n\n  @return In the event of an error, an appropriate value for errno\n  should be returned, otherwise return 0 upon success.\n*/\ntypedef int mpo_vnode_label_associate_extattr_t(\n\tstruct mount *mp,\n\tstruct label *mntlabel,\n\tstruct vnode *vp,\n\tstruct label *vlabel\n);\n/**\n  @brief Associate a file label with a vnode\n  @param cred User credential\n  @param mp Fdesc mount point\n  @param mntlabel Fdesc mount point label\n  @param fg Fileglob structure\n  @param label Policy label for fg\n  @param vp Vnode to label\n  @param vlabel Label associated with vp\n\n  Associate label information for the vnode, vp, with the label of\n  the open file descriptor described by fg.\n  The label should be stored in the supplied vlabel parameter.\n*/\ntypedef void mpo_vnode_label_associate_file_t(\n\tstruct ucred *cred,\n\tstruct mount *mp,\n\tstruct label *mntlabel,\n\tstruct fileglob *fg,\n\tstruct label *label,\n\tstruct vnode *vp,\n\tstruct label *vlabel\n);\n/**\n  @brief Associate a pipe label with a vnode\n  @param cred User credential for the process that opened the pipe\n  @param cpipe Pipe structure\n  @param pipelabel Label associated with pipe\n  @param vp Vnode to label\n  @param vlabel Label associated with vp\n\n  Associate label information for the vnode, vp, with the label of\n  the pipe described by the pipe structure cpipe.\n  The label should be stored in the supplied vlabel parameter.\n*/\ntypedef void mpo_vnode_label_associate_pipe_t(\n\tstruct ucred *cred,\n\tstruct pipe *cpipe,\n\tstruct label *pipelabel,\n\tstruct vnode *vp,\n\tstruct label *vlabel\n);\n/**\n  @brief Associate a POSIX semaphore label with a vnode\n  @param cred User credential for the process that create psem\n  @param psem POSIX semaphore structure\n  @param psemlabel Label associated with psem\n  @param vp Vnode to label\n  @param vlabel Label associated with vp\n\n  Associate label information for the vnode, vp, with the label of\n  the POSIX semaphore described by psem.\n  The label should be stored in the supplied vlabel parameter.\n*/\ntypedef void mpo_vnode_label_associate_posixsem_t(\n\tstruct ucred *cred,\n\tstruct pseminfo *psem,\n\tstruct label *psemlabel,\n\tstruct vnode *vp,\n\tstruct label *vlabel\n);\n/**\n  @brief Associate a POSIX shared memory label with a vnode\n  @param cred User credential for the process that created pshm\n  @param pshm POSIX shared memory structure\n  @param pshmlabel Label associated with pshm\n  @param vp Vnode to label\n  @param vlabel Label associated with vp\n\n  Associate label information for the vnode, vp, with the label of\n  the POSIX shared memory region described by pshm.\n  The label should be stored in the supplied vlabel parameter.\n*/\ntypedef void mpo_vnode_label_associate_posixshm_t(\n\tstruct ucred *cred,\n\tstruct pshminfo *pshm,\n\tstruct label *pshmlabel,\n\tstruct vnode *vp,\n\tstruct label *vlabel\n);\n/**\n  @brief Associate a label with a vnode\n  @param mp File system mount point\n  @param mntlabel File system mount point label\n  @param vp Vnode to label\n  @param vlabel Label associated with vp\n\n  On non-multilabel file systems, set the label for a vnode.  The\n  label will most likely be based on the file system label.\n*/\ntypedef void mpo_vnode_label_associate_singlelabel_t(\n\tstruct mount *mp,\n\tstruct label *mntlabel,\n\tstruct vnode *vp,\n\tstruct label *vlabel\n);\n/**\n  @brief Associate a socket label with a vnode\n  @param cred User credential for the process that opened the socket\n  @param so Socket structure\n  @param solabel Label associated with so\n  @param vp Vnode to label\n  @param vlabel Label associated with vp\n\n  Associate label information for the vnode, vp, with the label of\n  the open socket described by the socket structure so.\n  The label should be stored in the supplied vlabel parameter.\n*/\ntypedef void mpo_vnode_label_associate_socket_t(\n\tkauth_cred_t cred,\n\tsocket_t so,\n\tstruct label *solabel,\n\tstruct vnode *vp,\n\tstruct label *vlabel\n);\n/**\n  @brief Copy a vnode label\n  @param src Source vnode label\n  @param dest Destination vnode label\n\n  Copy the vnode label information from src to dest.  On Darwin, this\n  is currently only necessary when executing interpreted scripts, but\n  will later be used if vnode label externalization cannot be an\n  atomic operation.\n*/\ntypedef void mpo_vnode_label_copy_t(\n\tstruct label *src,\n\tstruct label *dest\n);\n/**\n  @brief Destroy vnode label\n  @param label The label to be destroyed\n\n  Destroy a vnode label.  Since the object is going out of scope,\n  policy modules should free any internal storage associated with the\n  label so that it may be destroyed.\n*/\ntypedef void mpo_vnode_label_destroy_t(\n\tstruct label *label\n);\n/**\n  @brief Externalize a vnode label for auditing\n  @param label Label to be externalized\n  @param element_name Name of the label namespace for which labels should be\n  externalized\n  @param sb String buffer to be filled with a text representation of the label\n\n  Produce an external representation of the label on a vnode suitable for\n  inclusion in an audit record.  An externalized label consists of a text\n  representation of the label contents that will be added to the audit record\n  as part of a text token.  Policy-agnostic user space tools will display\n  this externalized version.\n\n  @return 0 on success, return non-zero if an error occurs while\n  externalizing the label data.\n\n*/\ntypedef int mpo_vnode_label_externalize_audit_t(\n\tstruct label *label,\n\tchar *element_name,\n\tstruct sbuf *sb\n);\n/**\n  @brief Externalize a vnode label\n  @param label Label to be externalized\n  @param element_name Name of the label namespace for which labels should be\n  externalized\n  @param sb String buffer to be filled with a text representation of the label\n\n  Produce an external representation of the label on a vnode.  An\n  externalized label consists of a text representation of the label\n  contents that can be used with user applications.  Policy-agnostic\n  user space tools will display this externalized version.\n\n  @return 0 on success, return non-zero if an error occurs while\n  externalizing the label data.\n\n*/\ntypedef int mpo_vnode_label_externalize_t(\n\tstruct label *label,\n\tchar *element_name,\n\tstruct sbuf *sb\n);\n/**\n  @brief Initialize vnode label\n  @param label New label to initialize\n\n  Initialize label storage for use with a newly instantiated vnode, or\n  for temporary storage associated with the copying in or out of a\n  vnode label.  While it is necessary to allocate space for a\n  kernel-resident vnode label, it is not yet necessary to link this vnode\n  with persistent label storage facilities, such as extended attributes.\n  Sleeping is permitted.\n*/\ntypedef void mpo_vnode_label_init_t(\n\tstruct label *label\n);\n/**\n  @brief Internalize a vnode label\n  @param label Label to be internalized\n  @param element_name Name of the label namespace for which the label should\n  be internalized\n  @param element_data Text data to be internalized\n\n  Produce a vnode label from an external representation.  An\n  externalized label consists of a text representation of the label\n  contents that can be used with user applications.  Policy-agnostic\n  user space tools will forward text version to the kernel for\n  processing by individual policy modules.\n\n  The policy's internalize entry points will be called only if the\n  policy has registered interest in the label namespace.\n\n  @return 0 on success, Otherwise, return non-zero if an error occurs\n  while internalizing the label data.\n*/\ntypedef int mpo_vnode_label_internalize_t(\n\tstruct label *label,\n\tchar *element_name,\n\tchar *element_data\n);\n/**\n  @brief Clean up a vnode label\n  @param label The label to be cleaned for re-use\n\n  Clean up a vnode label.  Darwin (Tiger, 8.x) allocates vnodes on demand, but\n  typically never frees them.  Before vnodes are placed back on free lists for\n  re-use, policies can cleanup or overwrite any information present in the label.\n*/\ntypedef void mpo_vnode_label_recycle_t(\n\tstruct label *label\n);\n/**\n  @brief Write a label to a extended attribute\n  @param cred Subject credential\n  @param vp The vnode for which the label is being stored\n  @param vlabel Label associated with vp\n  @param intlabel The new label to store\n\n  Store a new label in the extended attribute corresponding to the\n  supplied vnode.  The policy has already authorized the operation;\n  this call must be implemented in order to perform the actual\n  operation.\n\n  @return In the event of an error, an appropriate value for errno\n  should be returned, otherwise return 0 upon success.\n\n  @warning XXX After examining the extended attribute implementation on\n  Apple's future release, this entry point may be changed.\n*/\ntypedef int mpo_vnode_label_store_t(\n\tkauth_cred_t cred,\n\tstruct vnode *vp,\n\tstruct label *vlabel,\n\tstruct label *intlabel\n);\n/**\n  @brief Update vnode label from extended attributes\n  @param mp File system mount point\n  @param mntlabel Mount point label\n  @param vp Vnode to label\n  @param vlabel Label associated with vp\n  @param name Name of the xattr\n  @see mpo_vnode_check_setextattr_t\n\n  When an extended attribute is updated via the Vendor attribute management\n  functions, the MAC vnode label might also require an update.\n  Policies should first determine if 'name' matches their xattr label\n  name.  If it does, the kernel is has either replaced or removed the\n  named extended attribute that was previously associated with the\n  vnode.  Normally labels should only be modified via MAC Framework label\n  management calls, but sometimes the user space components will directly\n  modify extended attributes.  For example, 'cp', 'tar', etc. manage\n  extended attributes in userspace, not the kernel.\n\n  This entry point is called after the label update has occurred, so\n  it cannot return a failure.  However, the operation is preceded by\n  the mpo_vnode_check_setextattr() access control check.\n\n  If the vnode label needs to be updated the policy should return\n  a non-zero value.  The vnode label will be marked for re-association\n  by the framework.\n*/\ntypedef int mpo_vnode_label_update_extattr_t(\n\tstruct mount *mp,\n\tstruct label *mntlabel,\n\tstruct vnode *vp,\n\tstruct label *vlabel,\n\tconst char *name\n);\n/**\n  @brief Update a vnode label\n  @param cred Subject credential\n  @param vp The vnode to relabel\n  @param vnodelabel Existing vnode label\n  @param label New label to replace existing label\n  @see mpo_vnode_check_label_update_t\n\n  The subject identified by the credential has previously requested\n  and was authorized to relabel the vnode; this entry point allows\n  policies to perform the actual relabel operation.  Policies should\n  update vnodelabel using the label stored in the label parameter.\n*/\ntypedef void mpo_vnode_label_update_t(\n\tkauth_cred_t cred,\n\tstruct vnode *vp,\n\tstruct label *vnodelabel,\n\tstruct label *label\n);\n/**\n  @brief Find deatched signatures for a shared library\n  @param p file trying to find the signature\n  @param vp The vnode to relabel\n  @param offset offset in the macho that the signature is requested for (for fat binaries)\n  @param label Existing vnode label\n\n*/\ntypedef int mpo_vnode_find_sigs_t(\n\tstruct proc *p,\n\tstruct vnode *vp,\n\toff_t offset,\n\tstruct label *label\n);\n/**\n  @brief Create a new vnode, backed by extended attributes\n  @param cred User credential for the creating process\n  @param mp File system mount point\n  @param mntlabel File system mount point label\n  @param dvp Parent directory vnode\n  @param dlabel Parent directory vnode label\n  @param vp Newly created vnode\n  @param vlabel Label to associate with the new vnode\n  @param cnp Component name for vp\n\n  Write out the label for the newly created vnode, most likely storing\n  the results in a file system extended attribute.  Most policies will\n  derive the new vnode label using information from a combination\n  of the subject (user) credential, the file system label, the parent\n  directory label, and potentially the path name component.\n\n  @return If the operation succeeds, store the new label in vlabel and\n  return 0.  Otherwise, return an appropriate errno value.\n*/\ntypedef int mpo_vnode_notify_create_t(\n\tkauth_cred_t cred,\n\tstruct mount *mp,\n\tstruct label *mntlabel,\n\tstruct vnode *dvp,\n\tstruct label *dlabel,\n\tstruct vnode *vp,\n\tstruct label *vlabel,\n\tstruct componentname *cnp\n);\n\n/**\n  @brief Inform MAC policies that a vnode has been opened\n  @param cred User credential for the creating process\n  @param vp vnode opened\n  @param label Policy label for the vp\n  @param acc_mode open(2) access mode used\n\n  Inform Mac policies that a vnode have been successfully opened\n  (passing all MAC polices and DAC).\n*/\ntypedef void mpo_vnode_notify_open_t(\n\tkauth_cred_t cred,\n\tstruct vnode *vp,\n\tstruct label *label,\n\tint acc_mode\n);\n\n/**\n  @brief Inform MAC policies that a vnode has been renamed\n  @param cred User credential for the renaming process\n  @param vp Vnode that's being renamed\n  @param label Policy label for vp\n  @param dvp Parent directory for the destination\n  @param dlabel Policy label for dvp\n  @param cnp Component name for the destination\n\n  Inform MAC policies that a vnode has been renamed.\n */\ntypedef void mpo_vnode_notify_rename_t(\n\tkauth_cred_t cred,\n\tstruct vnode *vp,\n\tstruct label *label,\n\tstruct vnode *dvp,\n\tstruct label *dlabel,\n\tstruct componentname *cnp\n);\n\n/**\n  @brief Inform MAC policies that a vnode has been linked\n  @param cred User credential for the renaming process\n  @param dvp Parent directory for the destination\n  @param dlabel Policy label for dvp\n  @param vp Vnode that's being linked\n  @param vlabel Policy label for vp\n  @param cnp Component name for the destination\n\n  Inform MAC policies that a vnode has been linked.\n */\ntypedef void mpo_vnode_notify_link_t(\n\tkauth_cred_t cred,\n\tstruct vnode *dvp,\n\tstruct label *dlabel,\n\tstruct vnode *vp,\n\tstruct label *vlabel,\n\tstruct componentname *cnp\n);\n\n/**\n  @brief Inform MAC policies that an extended attribute has been removed from a vnode\n  @param cred Subject credential\n  @param vp Object node\n  @param label Policy label for vp\n  @param name Extended attribute name\n\n  Inform MAC policies that an extended attribute has been removed from a vnode.\n*/\ntypedef void mpo_vnode_notify_deleteextattr_t(\n\tkauth_cred_t cred,\n\tstruct vnode *vp,\n\tstruct label *label,\n\tconst char *name\n);\n\n\n/**\n  @brief Inform MAC policies that an ACL has been set on a vnode\n  @param cred Subject credential\n  @param vp Object node\n  @param label Policy label for vp\n  @param acl ACL structure pointer\n\n  Inform MAC policies that an ACL has been set on a vnode.\n*/\ntypedef void mpo_vnode_notify_setacl_t(\n\tkauth_cred_t cred,\n\tstruct vnode *vp,\n\tstruct label *label,\n\tstruct kauth_acl *acl\n);\n\n/**\n  @brief Inform MAC policies that an attributes have been set on a vnode\n  @param cred Subject credential\n  @param vp Object vnode\n  @param label Policy label for vp\n  @param alist List of attributes to set\n\n  Inform MAC policies that an attributes have been set on a vnode.\n*/\ntypedef void mpo_vnode_notify_setattrlist_t(\n\tkauth_cred_t cred,\n\tstruct vnode *vp,\n\tstruct label *label,\n\tstruct attrlist *alist\n);\n\n/**\n  @brief Inform MAC policies that an extended attribute has been set on a vnode\n  @param cred Subject credential\n  @param vp Object vnode\n  @param label Policy label for vp\n  @param name Extended attribute name\n  @param uio I/O structure pointer\n\n  Inform MAC policies that an extended attribute has been set on a vnode.\n*/\ntypedef void mpo_vnode_notify_setextattr_t(\n\tkauth_cred_t cred,\n\tstruct vnode *vp,\n\tstruct label *label,\n\tconst char *name,\n\tstruct uio *uio\n);\n\n/**\n  @brief Inform MAC policies that flags have been set on a vnode\n  @param cred Subject credential\n  @param vp Object vnode\n  @param label Policy label for vp\n  @param flags File flags; see chflags(2)\n\n  Inform MAC policies that flags have been set on a vnode.\n*/\ntypedef void mpo_vnode_notify_setflags_t(\n\tkauth_cred_t cred,\n\tstruct vnode *vp,\n\tstruct label *label,\n\tu_long flags\n);\n\n/**\n  @brief Inform MAC policies that a new mode has been set on a vnode\n  @param cred Subject credential\n  @param vp Object vnode\n  @param label Policy label for vp\n  @param mode File mode; see chmod(2)\n\n  Inform MAC policies that a new mode has been set on a vnode.\n*/\ntypedef void mpo_vnode_notify_setmode_t(\n\tkauth_cred_t cred,\n\tstruct vnode *vp,\n\tstruct label *label,\n\tmode_t mode\n);\n\n/**\n  @brief Inform MAC policies that new uid/gid have been set on a vnode\n  @param cred Subject credential\n  @param vp Object vnode\n  @param label Policy label for vp\n  @param uid User ID\n  @param gid Group ID\n\n  Inform MAC policies that new uid/gid have been set on a vnode.\n*/\ntypedef void mpo_vnode_notify_setowner_t(\n\tkauth_cred_t cred,\n\tstruct vnode *vp,\n\tstruct label *label,\n\tuid_t uid,\n\tgid_t gid\n);\n\n/**\n  @brief Inform MAC policies that new timestamps have been set on a vnode\n  @param cred Subject credential\n  @param vp Object vnode\n  @param label Policy label for vp\n  @param atime Access time; see utimes(2)\n  @param mtime Modification time; see utimes(2)\n\n  Inform MAC policies that new timestamps have been set on a vnode.\n*/\ntypedef void mpo_vnode_notify_setutimes_t(\n\tkauth_cred_t cred,\n\tstruct vnode *vp,\n\tstruct label *label,\n\tstruct timespec atime,\n\tstruct timespec mtime\n);\n\n/**\n  @brief Inform MAC policies that a vnode has been truncated\n  @param cred Subject credential\n  @param file_cred Credential associated with the struct fileproc\n  @param vp Object vnode\n  @param label Policy label for vp\n\n  Inform MAC policies that a vnode has been truncated.\n*/\ntypedef void mpo_vnode_notify_truncate_t(\n\tkauth_cred_t cred,\n\tkauth_cred_t file_cred,\n\tstruct vnode *vp,\n\tstruct label *label\n);\n\n\n/**\n  @brief Inform MAC policies that a pty slave has been granted\n  @param p Responsible process\n  @param tp tty data structure\n  @param dev Major and minor numbers of device\n  @param label Policy label for tp\n  \n  Inform MAC policies that a pty slave has been granted.\n*/\ntypedef void mpo_pty_notify_grant_t(\n\tproc_t p,\n\tstruct tty *tp,\n\tdev_t dev,\n\tstruct label *label\n);\n\n/**\n  @brief Inform MAC policies that a pty master has been closed\n  @param p Responsible process\n  @param tp tty data structure\n  @param dev Major and minor numbers of device\n  @param label Policy label for tp\n  \n  Inform MAC policies that a pty master has been closed.\n*/\ntypedef void mpo_pty_notify_close_t(\n\tproc_t p,\n\tstruct tty *tp,\n\tdev_t dev,\n\tstruct label *label\n);\n\n/**\n  @brief Access control check for kext loading\n  @param cred Subject credential\n  @param identifier Kext identifier\n\n  Determine whether the subject identified by the credential can load the\n  specified kext.\n\n  @return Return 0 if access is granted, otherwise an appropriate value for\n  errno should be returned. Suggested failure: EPERM for lack of privilege.\n*/\ntypedef int mpo_kext_check_load_t(\n\tkauth_cred_t cred,\n\tconst char *identifier\n);\n\n/**\n  @brief Access control check for kext unloading\n  @param cred Subject credential\n  @param identifier Kext identifier\n\n  Determine whether the subject identified by the credential can unload the\n  specified kext.\n\n  @return Return 0 if access is granted, otherwise an appropriate value for\n  errno should be returned. Suggested failure: EPERM for lack of privilege.\n*/\ntypedef int mpo_kext_check_unload_t(\n\tkauth_cred_t cred,\n\tconst char *identifier\n);\n\n/**\n  @brief Access control check for querying information about loaded kexts\n  @param cred Subject credential\n\n  Determine whether the subject identified by the credential can query\n  information about loaded kexts.\n\n  @return Return 0 if access is granted, otherwise an appropriate value for\n  errno should be returned.  Suggested failure: EPERM for lack of privilege.\n*/\ntypedef int mpo_kext_check_query_t(\n\tkauth_cred_t cred\n);\n\n/**\n  @brief Access control check for getting NVRAM variables.\n  @param cred Subject credential\n  @param name NVRAM variable to get\n\n  Determine whether the subject identifier by the credential can get the\n  value of the named NVRAM variable.\n\n  @return Return 0 if access is granted, otherwise an appropriate value for\n  errno should be returned.  Suggested failure: EPERM for lack of privilege.\n*/\ntypedef int mpo_iokit_check_nvram_get_t(\n\tkauth_cred_t cred,\n\tconst char *name\n);\n\n/**\n  @brief Access control check for setting NVRAM variables.\n  @param cred Subject credential\n  @param name NVRAM variable to set\n  @param value The new value for the NVRAM variable\n\n  Determine whether the subject identifier by the credential can set the\n  value of the named NVRAM variable.\n\n  @return Return 0 if access is granted, otherwise an appropriate value for\n  errno should be returned.  Suggested failure: EPERM for lack of privilege.\n*/\ntypedef int mpo_iokit_check_nvram_set_t(\n\tkauth_cred_t cred,\n\tconst char *name,\n\tio_object_t value\n);\n\n/**\n  @brief Access control check for deleting NVRAM variables.\n  @param cred Subject credential\n  @param name NVRAM variable to delete\n\n  Determine whether the subject identifier by the credential can delete the\n  named NVRAM variable.\n\n  @return Return 0 if access is granted, otherwise an appropriate value for\n  errno should be returned.  Suggested failure: EPERM for lack of privilege.\n*/\ntypedef int mpo_iokit_check_nvram_delete_t(\n\tkauth_cred_t cred,\n\tconst char *name\n);\n\n/*\n * Placeholder for future events that may need mac hooks.\n */\ntypedef void mpo_reserved_hook_t(void);\n\n/*\n * Policy module operations.\n *\n * Please note that this should be kept in sync with the check assumptions\n * policy in bsd/kern/policy_check.c (policy_ops struct).\n */\n#define MAC_POLICY_OPS_VERSION 47 /* inc when new reserved slots are taken */\nstruct mac_policy_ops {\n\tmpo_audit_check_postselect_t\t\t*mpo_audit_check_postselect;\n\tmpo_audit_check_preselect_t\t\t*mpo_audit_check_preselect;\n\n\tmpo_bpfdesc_label_associate_t\t\t*mpo_bpfdesc_label_associate;\n\tmpo_bpfdesc_label_destroy_t\t\t*mpo_bpfdesc_label_destroy;\n\tmpo_bpfdesc_label_init_t\t\t*mpo_bpfdesc_label_init;\n\tmpo_bpfdesc_check_receive_t\t\t*mpo_bpfdesc_check_receive;\n\n\tmpo_cred_check_label_update_execve_t\t*mpo_cred_check_label_update_execve;\n\tmpo_cred_check_label_update_t\t\t*mpo_cred_check_label_update;\n\tmpo_cred_check_visible_t\t\t*mpo_cred_check_visible;\n\tmpo_cred_label_associate_fork_t\t\t*mpo_cred_label_associate_fork;\n\tmpo_cred_label_associate_kernel_t\t*mpo_cred_label_associate_kernel;\n\tmpo_cred_label_associate_t\t\t*mpo_cred_label_associate;\n\tmpo_cred_label_associate_user_t\t\t*mpo_cred_label_associate_user;\n\tmpo_cred_label_destroy_t\t\t*mpo_cred_label_destroy;\n\tmpo_cred_label_externalize_audit_t\t*mpo_cred_label_externalize_audit;\n\tmpo_cred_label_externalize_t\t\t*mpo_cred_label_externalize;\n\tmpo_cred_label_init_t\t\t\t*mpo_cred_label_init;\n\tmpo_cred_label_internalize_t\t\t*mpo_cred_label_internalize;\n\tmpo_cred_label_update_execve_t\t\t*mpo_cred_label_update_execve;\n\tmpo_cred_label_update_t\t\t\t*mpo_cred_label_update;\n\n\tmpo_devfs_label_associate_device_t\t*mpo_devfs_label_associate_device;\n\tmpo_devfs_label_associate_directory_t\t*mpo_devfs_label_associate_directory;\n\tmpo_devfs_label_copy_t\t\t\t*mpo_devfs_label_copy;\n\tmpo_devfs_label_destroy_t\t\t*mpo_devfs_label_destroy;\n\tmpo_devfs_label_init_t\t\t\t*mpo_devfs_label_init;\n\tmpo_devfs_label_update_t\t\t*mpo_devfs_label_update;\n\n\tmpo_file_check_change_offset_t\t\t*mpo_file_check_change_offset;\n\tmpo_file_check_create_t\t\t\t*mpo_file_check_create;\n\tmpo_file_check_dup_t\t\t\t*mpo_file_check_dup;\n\tmpo_file_check_fcntl_t\t\t\t*mpo_file_check_fcntl;\n\tmpo_file_check_get_offset_t\t\t*mpo_file_check_get_offset;\n\tmpo_file_check_get_t\t\t\t*mpo_file_check_get;\n\tmpo_file_check_inherit_t\t\t*mpo_file_check_inherit;\n\tmpo_file_check_ioctl_t\t\t\t*mpo_file_check_ioctl;\n\tmpo_file_check_lock_t\t\t\t*mpo_file_check_lock;\n\tmpo_file_check_mmap_downgrade_t\t\t*mpo_file_check_mmap_downgrade;\n\tmpo_file_check_mmap_t\t\t\t*mpo_file_check_mmap;\n\tmpo_file_check_receive_t\t\t*mpo_file_check_receive;\n\tmpo_file_check_set_t\t\t\t*mpo_file_check_set;\n\tmpo_file_label_init_t\t\t\t*mpo_file_label_init;\n\tmpo_file_label_destroy_t\t\t*mpo_file_label_destroy;\n\tmpo_file_label_associate_t\t\t*mpo_file_label_associate;\n\n\tmpo_ifnet_check_label_update_t\t\t*mpo_ifnet_check_label_update;\n\tmpo_ifnet_check_transmit_t\t\t*mpo_ifnet_check_transmit;\n\tmpo_ifnet_label_associate_t\t\t*mpo_ifnet_label_associate;\n\tmpo_ifnet_label_copy_t\t\t\t*mpo_ifnet_label_copy;\n\tmpo_ifnet_label_destroy_t\t\t*mpo_ifnet_label_destroy;\n\tmpo_ifnet_label_externalize_t\t\t*mpo_ifnet_label_externalize;\n\tmpo_ifnet_label_init_t\t\t\t*mpo_ifnet_label_init;\n\tmpo_ifnet_label_internalize_t\t\t*mpo_ifnet_label_internalize;\n\tmpo_ifnet_label_update_t\t\t*mpo_ifnet_label_update;\n\tmpo_ifnet_label_recycle_t\t\t*mpo_ifnet_label_recycle;\n\n\tmpo_inpcb_check_deliver_t\t\t*mpo_inpcb_check_deliver;\n\tmpo_inpcb_label_associate_t\t\t*mpo_inpcb_label_associate;\n\tmpo_inpcb_label_destroy_t\t\t*mpo_inpcb_label_destroy;\n\tmpo_inpcb_label_init_t\t\t\t*mpo_inpcb_label_init;\n\tmpo_inpcb_label_recycle_t\t\t*mpo_inpcb_label_recycle;\n\tmpo_inpcb_label_update_t\t\t*mpo_inpcb_label_update;\n\n\tmpo_iokit_check_device_t\t\t*mpo_iokit_check_device;\n\n\tmpo_ipq_label_associate_t\t\t*mpo_ipq_label_associate;\n\tmpo_ipq_label_compare_t\t\t\t*mpo_ipq_label_compare;\n\tmpo_ipq_label_destroy_t\t\t\t*mpo_ipq_label_destroy;\n\tmpo_ipq_label_init_t\t\t\t*mpo_ipq_label_init;\n\tmpo_ipq_label_update_t\t\t\t*mpo_ipq_label_update;\n\n\tmpo_file_check_library_validation_t     *mpo_file_check_library_validation;\n\tmpo_vnode_notify_setacl_t               *mpo_vnode_notify_setacl;\n\tmpo_vnode_notify_setattrlist_t          *mpo_vnode_notify_setattrlist;\n\tmpo_vnode_notify_setextattr_t           *mpo_vnode_notify_setextattr;\n\tmpo_vnode_notify_setflags_t             *mpo_vnode_notify_setflags;\n\tmpo_vnode_notify_setmode_t              *mpo_vnode_notify_setmode;\n\tmpo_vnode_notify_setowner_t             *mpo_vnode_notify_setowner;\n\tmpo_vnode_notify_setutimes_t            *mpo_vnode_notify_setutimes;\n\tmpo_vnode_notify_truncate_t             *mpo_vnode_notify_truncate;\n\n\tmpo_mbuf_label_associate_bpfdesc_t\t*mpo_mbuf_label_associate_bpfdesc;\n\tmpo_mbuf_label_associate_ifnet_t\t*mpo_mbuf_label_associate_ifnet;\n\tmpo_mbuf_label_associate_inpcb_t\t*mpo_mbuf_label_associate_inpcb;\n\tmpo_mbuf_label_associate_ipq_t\t\t*mpo_mbuf_label_associate_ipq;\n\tmpo_mbuf_label_associate_linklayer_t\t*mpo_mbuf_label_associate_linklayer;\n\tmpo_mbuf_label_associate_multicast_encap_t *mpo_mbuf_label_associate_multicast_encap;\n\tmpo_mbuf_label_associate_netlayer_t\t*mpo_mbuf_label_associate_netlayer;\n\tmpo_mbuf_label_associate_socket_t\t*mpo_mbuf_label_associate_socket;\n\tmpo_mbuf_label_copy_t\t\t\t*mpo_mbuf_label_copy;\n\tmpo_mbuf_label_destroy_t\t\t*mpo_mbuf_label_destroy;\n\tmpo_mbuf_label_init_t\t\t\t*mpo_mbuf_label_init;\n\n\tmpo_mount_check_fsctl_t\t\t\t*mpo_mount_check_fsctl;\n\tmpo_mount_check_getattr_t\t\t*mpo_mount_check_getattr;\n\tmpo_mount_check_label_update_t\t\t*mpo_mount_check_label_update;\n\tmpo_mount_check_mount_t\t\t\t*mpo_mount_check_mount;\n\tmpo_mount_check_remount_t\t\t*mpo_mount_check_remount;\n\tmpo_mount_check_setattr_t\t\t*mpo_mount_check_setattr;\n\tmpo_mount_check_stat_t\t\t\t*mpo_mount_check_stat;\n\tmpo_mount_check_umount_t\t\t*mpo_mount_check_umount;\n\tmpo_mount_label_associate_t\t\t*mpo_mount_label_associate;\n\tmpo_mount_label_destroy_t\t\t*mpo_mount_label_destroy;\n\tmpo_mount_label_externalize_t\t\t*mpo_mount_label_externalize;\n\tmpo_mount_label_init_t\t\t\t*mpo_mount_label_init;\n\tmpo_mount_label_internalize_t\t\t*mpo_mount_label_internalize;\n\n\tmpo_netinet_fragment_t\t\t\t*mpo_netinet_fragment;\n\tmpo_netinet_icmp_reply_t\t\t*mpo_netinet_icmp_reply;\n\tmpo_netinet_tcp_reply_t\t\t\t*mpo_netinet_tcp_reply;\n\n\tmpo_pipe_check_ioctl_t\t\t\t*mpo_pipe_check_ioctl;\n\tmpo_pipe_check_kqfilter_t\t\t*mpo_pipe_check_kqfilter;\n\tmpo_pipe_check_label_update_t\t\t*mpo_pipe_check_label_update;\n\tmpo_pipe_check_read_t\t\t\t*mpo_pipe_check_read;\n\tmpo_pipe_check_select_t\t\t\t*mpo_pipe_check_select;\n\tmpo_pipe_check_stat_t\t\t\t*mpo_pipe_check_stat;\n\tmpo_pipe_check_write_t\t\t\t*mpo_pipe_check_write;\n\tmpo_pipe_label_associate_t\t\t*mpo_pipe_label_associate;\n\tmpo_pipe_label_copy_t\t\t\t*mpo_pipe_label_copy;\n\tmpo_pipe_label_destroy_t\t\t*mpo_pipe_label_destroy;\n\tmpo_pipe_label_externalize_t\t\t*mpo_pipe_label_externalize;\n\tmpo_pipe_label_init_t\t\t\t*mpo_pipe_label_init;\n\tmpo_pipe_label_internalize_t\t\t*mpo_pipe_label_internalize;\n\tmpo_pipe_label_update_t\t\t\t*mpo_pipe_label_update;\n\n\tmpo_policy_destroy_t\t\t\t*mpo_policy_destroy;\n\tmpo_policy_init_t\t\t\t*mpo_policy_init;\n\tmpo_policy_initbsd_t\t\t\t*mpo_policy_initbsd;\n\tmpo_policy_syscall_t\t\t\t*mpo_policy_syscall;\n\n\tmpo_system_check_sysctlbyname_t\t\t*mpo_system_check_sysctlbyname;\n\tmpo_proc_check_inherit_ipc_ports_t\t*mpo_proc_check_inherit_ipc_ports;\n\tmpo_vnode_check_rename_t\t\t*mpo_vnode_check_rename;\n\tmpo_kext_check_query_t\t\t\t*mpo_kext_check_query;\n\tmpo_iokit_check_nvram_get_t\t\t*mpo_iokit_check_nvram_get;\n\tmpo_iokit_check_nvram_set_t\t\t*mpo_iokit_check_nvram_set;\n\tmpo_iokit_check_nvram_delete_t\t\t*mpo_iokit_check_nvram_delete;\n\tmpo_proc_check_expose_task_t\t\t*mpo_proc_check_expose_task;\n\tmpo_proc_check_set_host_special_port_t\t*mpo_proc_check_set_host_special_port;\n\tmpo_proc_check_set_host_exception_port_t *mpo_proc_check_set_host_exception_port;\n\tmpo_exc_action_check_exception_send_t\t*mpo_exc_action_check_exception_send;\n\tmpo_exc_action_label_associate_t\t*mpo_exc_action_label_associate;\n\tmpo_exc_action_label_copy_t\t\t*mpo_exc_action_label_copy;\n\tmpo_exc_action_label_destroy_t\t\t*mpo_exc_action_label_destroy;\n\tmpo_exc_action_label_init_t\t\t*mpo_exc_action_label_init;\n\tmpo_exc_action_label_update_t\t\t*mpo_exc_action_label_update;\n\n\tmpo_reserved_hook_t\t\t\t*mpo_reserved1;\n\tmpo_reserved_hook_t\t\t\t*mpo_reserved2;\n\tmpo_reserved_hook_t\t\t\t*mpo_reserved3;\n\tmpo_reserved_hook_t\t\t\t*mpo_reserved4;\n\tmpo_reserved_hook_t\t\t\t*mpo_reserved5;\n\tmpo_reserved_hook_t\t\t\t*mpo_reserved6;\n\n\tmpo_posixsem_check_create_t\t\t*mpo_posixsem_check_create;\n\tmpo_posixsem_check_open_t\t\t*mpo_posixsem_check_open;\n\tmpo_posixsem_check_post_t\t\t*mpo_posixsem_check_post;\n\tmpo_posixsem_check_unlink_t\t\t*mpo_posixsem_check_unlink;\n\tmpo_posixsem_check_wait_t\t\t*mpo_posixsem_check_wait;\n\tmpo_posixsem_label_associate_t\t\t*mpo_posixsem_label_associate;\n\tmpo_posixsem_label_destroy_t\t\t*mpo_posixsem_label_destroy;\n\tmpo_posixsem_label_init_t\t\t*mpo_posixsem_label_init;\n\tmpo_posixshm_check_create_t\t\t*mpo_posixshm_check_create;\n\tmpo_posixshm_check_mmap_t\t\t*mpo_posixshm_check_mmap;\n\tmpo_posixshm_check_open_t\t\t*mpo_posixshm_check_open;\n\tmpo_posixshm_check_stat_t\t\t*mpo_posixshm_check_stat;\n\tmpo_posixshm_check_truncate_t\t\t*mpo_posixshm_check_truncate;\n\tmpo_posixshm_check_unlink_t\t\t*mpo_posixshm_check_unlink;\n\tmpo_posixshm_label_associate_t\t\t*mpo_posixshm_label_associate;\n\tmpo_posixshm_label_destroy_t\t\t*mpo_posixshm_label_destroy;\n\tmpo_posixshm_label_init_t\t\t*mpo_posixshm_label_init;\n\n\tmpo_proc_check_debug_t\t\t\t*mpo_proc_check_debug;\n\tmpo_proc_check_fork_t\t\t\t*mpo_proc_check_fork;\n\tmpo_proc_check_get_task_name_t\t\t*mpo_proc_check_get_task_name;\n\tmpo_proc_check_get_task_t\t\t*mpo_proc_check_get_task;\n\tmpo_proc_check_getaudit_t\t\t*mpo_proc_check_getaudit;\n\tmpo_proc_check_getauid_t\t\t*mpo_proc_check_getauid;\n\tmpo_proc_check_getlcid_t\t\t*mpo_proc_check_getlcid;\n\tmpo_proc_check_mprotect_t\t\t*mpo_proc_check_mprotect;\n\tmpo_proc_check_sched_t\t\t\t*mpo_proc_check_sched;\n\tmpo_proc_check_setaudit_t\t\t*mpo_proc_check_setaudit;\n\tmpo_proc_check_setauid_t\t\t*mpo_proc_check_setauid;\n\tmpo_proc_check_setlcid_t\t\t*mpo_proc_check_setlcid;\n\tmpo_proc_check_signal_t\t\t\t*mpo_proc_check_signal;\n\tmpo_proc_check_wait_t\t\t\t*mpo_proc_check_wait;\n\tmpo_proc_label_destroy_t\t\t*mpo_proc_label_destroy;\n\tmpo_proc_label_init_t\t\t\t*mpo_proc_label_init;\n\n\tmpo_socket_check_accept_t\t\t*mpo_socket_check_accept;\n\tmpo_socket_check_accepted_t\t\t*mpo_socket_check_accepted;\n\tmpo_socket_check_bind_t\t\t\t*mpo_socket_check_bind;\n\tmpo_socket_check_connect_t\t\t*mpo_socket_check_connect;\n\tmpo_socket_check_create_t\t\t*mpo_socket_check_create;\n\tmpo_socket_check_deliver_t\t\t*mpo_socket_check_deliver;\n\tmpo_socket_check_kqfilter_t\t\t*mpo_socket_check_kqfilter;\n\tmpo_socket_check_label_update_t\t\t*mpo_socket_check_label_update;\n\tmpo_socket_check_listen_t\t\t*mpo_socket_check_listen;\n\tmpo_socket_check_receive_t\t\t*mpo_socket_check_receive;\n\tmpo_socket_check_received_t\t\t*mpo_socket_check_received;\n\tmpo_socket_check_select_t\t\t*mpo_socket_check_select;\n\tmpo_socket_check_send_t\t\t\t*mpo_socket_check_send;\n\tmpo_socket_check_stat_t\t\t\t*mpo_socket_check_stat;\n\tmpo_socket_check_setsockopt_t\t\t*mpo_socket_check_setsockopt;\n\tmpo_socket_check_getsockopt_t\t\t*mpo_socket_check_getsockopt;\n\tmpo_socket_label_associate_accept_t\t*mpo_socket_label_associate_accept;\n\tmpo_socket_label_associate_t\t\t*mpo_socket_label_associate;\n\tmpo_socket_label_copy_t\t\t\t*mpo_socket_label_copy;\n\tmpo_socket_label_destroy_t\t\t*mpo_socket_label_destroy;\n\tmpo_socket_label_externalize_t\t\t*mpo_socket_label_externalize;\n\tmpo_socket_label_init_t\t\t\t*mpo_socket_label_init;\n\tmpo_socket_label_internalize_t\t\t*mpo_socket_label_internalize;\n\tmpo_socket_label_update_t\t\t*mpo_socket_label_update;\n\n\tmpo_socketpeer_label_associate_mbuf_t\t*mpo_socketpeer_label_associate_mbuf;\n\tmpo_socketpeer_label_associate_socket_t\t*mpo_socketpeer_label_associate_socket;\n\tmpo_socketpeer_label_destroy_t\t\t*mpo_socketpeer_label_destroy;\n\tmpo_socketpeer_label_externalize_t\t*mpo_socketpeer_label_externalize;\n\tmpo_socketpeer_label_init_t\t\t*mpo_socketpeer_label_init;\n\n\tmpo_system_check_acct_t\t\t\t*mpo_system_check_acct;\n\tmpo_system_check_audit_t\t\t*mpo_system_check_audit;\n\tmpo_system_check_auditctl_t\t\t*mpo_system_check_auditctl;\n\tmpo_system_check_auditon_t\t\t*mpo_system_check_auditon;\n\tmpo_system_check_host_priv_t\t\t*mpo_system_check_host_priv;\n\tmpo_system_check_nfsd_t\t\t\t*mpo_system_check_nfsd;\n\tmpo_system_check_reboot_t\t\t*mpo_system_check_reboot;\n\tmpo_system_check_settime_t\t\t*mpo_system_check_settime;\n\tmpo_system_check_swapoff_t\t\t*mpo_system_check_swapoff;\n\tmpo_system_check_swapon_t\t\t*mpo_system_check_swapon;\n\tmpo_reserved_hook_t\t\t\t*mpo_reserved7;\n\n\tmpo_sysvmsg_label_associate_t\t\t*mpo_sysvmsg_label_associate;\n\tmpo_sysvmsg_label_destroy_t\t\t*mpo_sysvmsg_label_destroy;\n\tmpo_sysvmsg_label_init_t\t\t*mpo_sysvmsg_label_init;\n\tmpo_sysvmsg_label_recycle_t\t\t*mpo_sysvmsg_label_recycle;\n\tmpo_sysvmsq_check_enqueue_t\t\t*mpo_sysvmsq_check_enqueue;\n\tmpo_sysvmsq_check_msgrcv_t\t\t*mpo_sysvmsq_check_msgrcv;\n\tmpo_sysvmsq_check_msgrmid_t\t\t*mpo_sysvmsq_check_msgrmid;\n\tmpo_sysvmsq_check_msqctl_t\t\t*mpo_sysvmsq_check_msqctl;\n\tmpo_sysvmsq_check_msqget_t\t\t*mpo_sysvmsq_check_msqget;\n\tmpo_sysvmsq_check_msqrcv_t\t\t*mpo_sysvmsq_check_msqrcv;\n\tmpo_sysvmsq_check_msqsnd_t\t\t*mpo_sysvmsq_check_msqsnd;\n\tmpo_sysvmsq_label_associate_t\t\t*mpo_sysvmsq_label_associate;\n\tmpo_sysvmsq_label_destroy_t\t\t*mpo_sysvmsq_label_destroy;\n\tmpo_sysvmsq_label_init_t\t\t*mpo_sysvmsq_label_init;\n\tmpo_sysvmsq_label_recycle_t\t\t*mpo_sysvmsq_label_recycle;\n\tmpo_sysvsem_check_semctl_t\t\t*mpo_sysvsem_check_semctl;\n\tmpo_sysvsem_check_semget_t\t\t*mpo_sysvsem_check_semget;\n\tmpo_sysvsem_check_semop_t\t\t*mpo_sysvsem_check_semop;\n\tmpo_sysvsem_label_associate_t\t\t*mpo_sysvsem_label_associate;\n\tmpo_sysvsem_label_destroy_t\t\t*mpo_sysvsem_label_destroy;\n\tmpo_sysvsem_label_init_t\t\t*mpo_sysvsem_label_init;\n\tmpo_sysvsem_label_recycle_t\t\t*mpo_sysvsem_label_recycle;\n\tmpo_sysvshm_check_shmat_t\t\t*mpo_sysvshm_check_shmat;\n\tmpo_sysvshm_check_shmctl_t\t\t*mpo_sysvshm_check_shmctl;\n\tmpo_sysvshm_check_shmdt_t\t\t*mpo_sysvshm_check_shmdt;\n\tmpo_sysvshm_check_shmget_t\t\t*mpo_sysvshm_check_shmget;\n\tmpo_sysvshm_label_associate_t\t\t*mpo_sysvshm_label_associate;\n\tmpo_sysvshm_label_destroy_t\t\t*mpo_sysvshm_label_destroy;\n\tmpo_sysvshm_label_init_t\t\t*mpo_sysvshm_label_init;\n\tmpo_sysvshm_label_recycle_t\t\t*mpo_sysvshm_label_recycle;\n\n\tmpo_reserved_hook_t\t\t\t*mpo_reserved8;\n\tmpo_mount_check_snapshot_revert_t\t*mpo_mount_check_snapshot_revert;\n\tmpo_vnode_check_getattr_t\t\t*mpo_vnode_check_getattr;\n\tmpo_mount_check_snapshot_create_t\t*mpo_mount_check_snapshot_create;\n\tmpo_mount_check_snapshot_delete_t\t*mpo_mount_check_snapshot_delete;\n\tmpo_vnode_check_clone_t\t\t\t*mpo_vnode_check_clone;\n\tmpo_proc_check_get_cs_info_t\t\t*mpo_proc_check_get_cs_info;\n\tmpo_proc_check_set_cs_info_t\t\t*mpo_proc_check_set_cs_info;\n\n\tmpo_iokit_check_hid_control_t\t\t*mpo_iokit_check_hid_control;\n\n\tmpo_vnode_check_access_t\t\t*mpo_vnode_check_access;\n\tmpo_vnode_check_chdir_t\t\t\t*mpo_vnode_check_chdir;\n\tmpo_vnode_check_chroot_t\t\t*mpo_vnode_check_chroot;\n\tmpo_vnode_check_create_t\t\t*mpo_vnode_check_create;\n\tmpo_vnode_check_deleteextattr_t\t\t*mpo_vnode_check_deleteextattr;\n\tmpo_vnode_check_exchangedata_t\t\t*mpo_vnode_check_exchangedata;\n\tmpo_vnode_check_exec_t\t\t\t*mpo_vnode_check_exec;\n\tmpo_vnode_check_getattrlist_t\t\t*mpo_vnode_check_getattrlist;\n\tmpo_vnode_check_getextattr_t\t\t*mpo_vnode_check_getextattr;\n\tmpo_vnode_check_ioctl_t\t\t\t*mpo_vnode_check_ioctl;\n\tmpo_vnode_check_kqfilter_t\t\t*mpo_vnode_check_kqfilter;\n\tmpo_vnode_check_label_update_t\t\t*mpo_vnode_check_label_update;\n\tmpo_vnode_check_link_t\t\t\t*mpo_vnode_check_link;\n\tmpo_vnode_check_listextattr_t\t\t*mpo_vnode_check_listextattr;\n\tmpo_vnode_check_lookup_t\t\t*mpo_vnode_check_lookup;\n\tmpo_vnode_check_open_t\t\t\t*mpo_vnode_check_open;\n\tmpo_vnode_check_read_t\t\t\t*mpo_vnode_check_read;\n\tmpo_vnode_check_readdir_t\t\t*mpo_vnode_check_readdir;\n\tmpo_vnode_check_readlink_t\t\t*mpo_vnode_check_readlink;\n\tmpo_vnode_check_rename_from_t\t\t*mpo_vnode_check_rename_from;\n\tmpo_vnode_check_rename_to_t\t\t*mpo_vnode_check_rename_to;\n\tmpo_vnode_check_revoke_t\t\t*mpo_vnode_check_revoke;\n\tmpo_vnode_check_select_t\t\t*mpo_vnode_check_select;\n\tmpo_vnode_check_setattrlist_t\t\t*mpo_vnode_check_setattrlist;\n\tmpo_vnode_check_setextattr_t\t\t*mpo_vnode_check_setextattr;\n\tmpo_vnode_check_setflags_t\t\t*mpo_vnode_check_setflags;\n\tmpo_vnode_check_setmode_t\t\t*mpo_vnode_check_setmode;\n\tmpo_vnode_check_setowner_t\t\t*mpo_vnode_check_setowner;\n\tmpo_vnode_check_setutimes_t\t\t*mpo_vnode_check_setutimes;\n\tmpo_vnode_check_stat_t\t\t\t*mpo_vnode_check_stat;\n\tmpo_vnode_check_truncate_t\t\t*mpo_vnode_check_truncate;\n\tmpo_vnode_check_unlink_t\t\t*mpo_vnode_check_unlink;\n\tmpo_vnode_check_write_t\t\t\t*mpo_vnode_check_write;\n\tmpo_vnode_label_associate_devfs_t\t*mpo_vnode_label_associate_devfs;\n\tmpo_vnode_label_associate_extattr_t\t*mpo_vnode_label_associate_extattr;\n\tmpo_vnode_label_associate_file_t\t*mpo_vnode_label_associate_file;\n\tmpo_vnode_label_associate_pipe_t\t*mpo_vnode_label_associate_pipe;\n\tmpo_vnode_label_associate_posixsem_t\t*mpo_vnode_label_associate_posixsem;\n\tmpo_vnode_label_associate_posixshm_t\t*mpo_vnode_label_associate_posixshm;\n\tmpo_vnode_label_associate_singlelabel_t\t*mpo_vnode_label_associate_singlelabel;\n\tmpo_vnode_label_associate_socket_t\t*mpo_vnode_label_associate_socket;\n\tmpo_vnode_label_copy_t\t\t\t*mpo_vnode_label_copy;\n\tmpo_vnode_label_destroy_t\t\t*mpo_vnode_label_destroy;\n\tmpo_vnode_label_externalize_audit_t\t*mpo_vnode_label_externalize_audit;\n\tmpo_vnode_label_externalize_t\t\t*mpo_vnode_label_externalize;\n\tmpo_vnode_label_init_t\t\t\t*mpo_vnode_label_init;\n\tmpo_vnode_label_internalize_t\t\t*mpo_vnode_label_internalize;\n\tmpo_vnode_label_recycle_t\t\t*mpo_vnode_label_recycle;\n\tmpo_vnode_label_store_t\t\t\t*mpo_vnode_label_store;\n\tmpo_vnode_label_update_extattr_t\t*mpo_vnode_label_update_extattr;\n\tmpo_vnode_label_update_t\t\t*mpo_vnode_label_update;\n\tmpo_vnode_notify_create_t\t\t*mpo_vnode_notify_create;\n\tmpo_vnode_check_signature_t\t\t*mpo_vnode_check_signature;\n\tmpo_vnode_check_uipc_bind_t\t\t*mpo_vnode_check_uipc_bind;\n\tmpo_vnode_check_uipc_connect_t\t\t*mpo_vnode_check_uipc_connect;\n\n\tmpo_proc_check_run_cs_invalid_t\t\t*mpo_proc_check_run_cs_invalid;\n\tmpo_proc_check_suspend_resume_t\t\t*mpo_proc_check_suspend_resume;\n\n\tmpo_thread_userret_t\t\t\t*mpo_thread_userret;\n\n\tmpo_iokit_check_set_properties_t\t*mpo_iokit_check_set_properties;\n\n\tmpo_system_check_chud_t\t\t\t*mpo_system_check_chud;\n\n\tmpo_vnode_check_searchfs_t\t\t*mpo_vnode_check_searchfs;\n\n\tmpo_priv_check_t\t\t\t*mpo_priv_check;\n\tmpo_priv_grant_t\t\t\t*mpo_priv_grant;\n\n\tmpo_proc_check_map_anon_t\t\t*mpo_proc_check_map_anon;\n\n\tmpo_vnode_check_fsgetpath_t\t\t*mpo_vnode_check_fsgetpath;\n\n\tmpo_iokit_check_open_t\t\t\t*mpo_iokit_check_open;\n\n \tmpo_proc_check_ledger_t\t\t\t*mpo_proc_check_ledger;\n\n\tmpo_vnode_notify_rename_t\t\t*mpo_vnode_notify_rename;\n\n\tmpo_vnode_check_setacl_t\t\t*mpo_vnode_check_setacl;\n\n\tmpo_vnode_notify_deleteextattr_t        *mpo_vnode_notify_deleteextattr;\n\n\tmpo_system_check_kas_info_t\t\t*mpo_system_check_kas_info;\n\n\tmpo_proc_check_cpumon_t\t\t\t*mpo_proc_check_cpumon;\n\n\tmpo_vnode_notify_open_t\t\t\t*mpo_vnode_notify_open;\n\n\tmpo_system_check_info_t\t\t\t*mpo_system_check_info;\n\n\tmpo_pty_notify_grant_t \t\t\t*mpo_pty_notify_grant;\n\tmpo_pty_notify_close_t\t\t\t*mpo_pty_notify_close;\n\n\tmpo_vnode_find_sigs_t\t\t\t*mpo_vnode_find_sigs;\n\n\tmpo_kext_check_load_t\t\t\t*mpo_kext_check_load;\n\tmpo_kext_check_unload_t\t\t\t*mpo_kext_check_unload;\n\n\tmpo_proc_check_proc_info_t\t\t*mpo_proc_check_proc_info;\n\tmpo_vnode_notify_link_t\t\t\t*mpo_vnode_notify_link;\n\tmpo_iokit_check_filter_properties_t\t*mpo_iokit_check_filter_properties;\n\tmpo_iokit_check_get_property_t\t\t*mpo_iokit_check_get_property;\n};\n\n/**\n   @brief MAC policy handle type\n\n   The MAC handle is used to uniquely identify a loaded policy within\n   the MAC Framework.\n\n   A variable of this type is set by mac_policy_register().\n */\ntypedef unsigned int mac_policy_handle_t;\n\n#define mpc_t\tstruct mac_policy_conf *\n\n/**\n  @brief Mac policy configuration\n\n  This structure specifies the configuration information for a\n  MAC policy module.  A policy module developer must supply\n  a short unique policy name, a more descriptive full name, a list of label\n  namespaces and count, a pointer to the registered enty point operations,\n  any load time flags, and optionally, a pointer to a label slot identifier.\n\n  The Framework will update the runtime flags (mpc_runtime_flags) to\n  indicate that the module has been registered.\n\n  If the label slot identifier (mpc_field_off) is NULL, the Framework\n  will not provide label storage for the policy.  Otherwise, the\n  Framework will store the label location (slot) in this field.\n\n  The mpc_list field is used by the Framework and should not be\n  modified by policies.\n*/\n/* XXX - reorder these for better aligment on 64bit platforms */\nstruct mac_policy_conf {\n\tconst char\t\t*mpc_name;\t\t/** policy name */\n\tconst char\t\t*mpc_fullname;\t\t/** full name */\n\tchar const * const *mpc_labelnames;\t/** managed label namespaces */\n\tunsigned int\t\t mpc_labelname_count;\t/** number of managed label namespaces */\n\tstruct mac_policy_ops\t*mpc_ops;\t\t/** operation vector */\n\tint\t\t\t mpc_loadtime_flags;\t/** load time flags */\n\tint\t\t\t*mpc_field_off;\t\t/** label slot */\n\tint\t\t\t mpc_runtime_flags;\t/** run time flags */\n\tmpc_t\t\t\t mpc_list;\t\t/** List reference */\n\tvoid\t\t\t*mpc_data;\t\t/** module data */\n};\n\n/**\n   @brief MAC policy module registration routine\n\n   This function is called to register a policy with the\n   MAC framework.  A policy module will typically call this from the\n   Darwin KEXT registration routine.\n */\nint\tmac_policy_register(struct mac_policy_conf *mpc,\n    mac_policy_handle_t *handlep, void *xd);\n\n/**\n   @brief MAC policy module de-registration routine\n\n   This function is called to de-register a policy with theD\n   MAC framework.  A policy module will typically call this from the\n   Darwin KEXT de-registration routine.\n */\nint\tmac_policy_unregister(mac_policy_handle_t handle);\n\n/*\n * Framework entry points for the policies to add audit data.\n */\nint\tmac_audit_text(char *text, mac_policy_handle_t handle);\n\n/*\n * Calls to assist with use of Apple XATTRs within policy modules.\n */\nint\tmac_vnop_setxattr(struct vnode *, const char *, char *, size_t);\nint\tmac_vnop_getxattr(struct vnode *, const char *, char *, size_t,\n\t\t\t  size_t *);\nint\tmac_vnop_removexattr(struct vnode *, const char *);\n\n/**\n   @brief Set an extended attribute on a vnode-based fileglob.\n   @param fg fileglob representing file to attach the extended attribute\n   @param name extended attribute name\n   @param buf buffer of data to use as the extended attribute value\n   @param len size of buffer\n\n   Sets the value of an extended attribute on a file.\n\n   Caller must hold an iocount on the vnode represented by the fileglob.\n*/\nint\tmac_file_setxattr(struct fileglob *fg, const char *name, char *buf, size_t len);\n\n/**\n\t@brief Get an extended attribute from a vnode-based fileglob.\n\t@param fg fileglob representing file to read the extended attribute\n\t@param name extended attribute name\n\t@param buf buffer of data to hold the extended attribute value\n\t@param len size of buffer\n\t@param attrlen size of full extended attribute value\n\n\tGets the value of an extended attribute on a file.\n\n\tCaller must hold an iocount on the vnode represented by the fileglob.\n*/\nint\tmac_file_getxattr(struct fileglob *fg, const char *name, char *buf, size_t len,\n\t\t\t  size_t *attrlen);\n\n/**\n\t@brief Remove an extended attribute from a vnode-based fileglob.\n\t@param fg fileglob representing file to remove the extended attribute\n\t@param name extended attribute name\n\n\tRemoves the named extended attribute from the file.\n\n\tCaller must hold an iocount on the vnode represented by the fileglob.\n*/\nint\tmac_file_removexattr(struct fileglob *fg, const char *name);\n\n\n/*\n * Arbitrary limit on how much data will be logged by the audit\n * entry points above.\n */\n#define\tMAC_AUDIT_DATA_LIMIT\t1024\n\n/*\n * Values returned by mac_audit_{pre,post}select. To combine the responses\n * of the security policies into a single decision,\n * mac_audit_{pre,post}select() choose the greatest value returned.\n */\n#define\tMAC_AUDIT_DEFAULT\t0\t/* use system behavior */\n#define\tMAC_AUDIT_NO\t\t1\t/* force not auditing this event */\n#define\tMAC_AUDIT_YES\t\t2\t/* force auditing this event */\n\n//  \\defgroup mpc_loadtime_flags Flags for the mpc_loadtime_flags field\n\n/**\n  @name Flags for the mpc_loadtime_flags field\n  @see mac_policy_conf\n\n  This is the complete list of flags that are supported by the\n  mpc_loadtime_flags field of the mac_policy_conf structure.  These\n  flags specify the load time behavior of MAC Framework policy\n  modules.\n*/\n\n/*@{*/\n\n/**\n  @brief Flag to indicate registration preference\n\n  This flag indicates that the policy module must be loaded and\n  initialized early in the boot process. If the flag is specified,\n  attempts to register the module following boot will be rejected. The\n  flag may be used by policies that require pervasive labeling of all\n  system objects, and cannot handle objects that have not been\n  properly initialized by the policy.\n */\n#define\tMPC_LOADTIME_FLAG_NOTLATE\t0x00000001\n\n/**\n  @brief Flag to indicate unload preference\n\n  This flag indicates that the policy module may be unloaded. If this\n  flag is not set, then the policy framework will reject requests to\n  unload the module. This flag might be used by modules that allocate\n  label state and are unable to free that state at runtime, or for\n  modules that simply do not want to permit unload operations.\n*/\n#define\tMPC_LOADTIME_FLAG_UNLOADOK\t0x00000002\n\n/**\n  @brief Unsupported\n\n  XXX This flag is not yet supported.\n*/\n#define\tMPC_LOADTIME_FLAG_LABELMBUFS\t0x00000004\n\n/**\n  @brief Flag to indicate a base policy\n\n  This flag indicates that the policy module is a base policy. Only\n  one module can declare itself as base, otherwise the boot process\n  will be halted.\n */\n#define\tMPC_LOADTIME_BASE_POLICY\t0x00000008\n\n/*@}*/\n\n/**\n  @brief Policy registration flag\n  @see mac_policy_conf\n\n  This flag indicates that the policy module has been successfully\n  registered with the TrustedBSD MAC Framework.  The Framework will\n  set this flag in the mpc_runtime_flags field of the policy's\n  mac_policy_conf structure after registering the policy.\n */\n#define\tMPC_RUNTIME_FLAG_REGISTERED\t0x00000001\n\n/*\n * Depends on POLICY_VER\n */\n\n#ifndef POLICY_VER\n#define\tPOLICY_VER\t1.0\n#endif\n\n#define\tMAC_POLICY_SET(handle, mpops, mpname, mpfullname, lnames, lcount, slot, lflags, rflags) \\\n\tstatic struct mac_policy_conf mpname##_mac_policy_conf = {\t\\\n\t\t.mpc_name\t\t= #mpname,\t\t\t\\\n\t\t.mpc_fullname\t\t= mpfullname,\t\t\t\\\n\t\t.mpc_labelnames\t\t= lnames,\t\t\t\\\n\t\t.mpc_labelname_count\t= lcount,\t\t\t\\\n\t\t.mpc_ops\t\t= mpops,\t\t\t\\\n\t\t.mpc_loadtime_flags\t= lflags,\t\t\t\\\n\t\t.mpc_field_off\t\t= slot,\t\t\t\t\\\n\t\t.mpc_runtime_flags\t= rflags\t\t\t\\\n\t};\t\t\t\t\t\t\t\t\\\n\t\t\t\t\t\t\t\t\t\\\n\tstatic kern_return_t\t\t\t\t\t\t\\\n\tkmod_start(kmod_info_t *ki, void *xd)\t\t\t\t\\\n\t{\t\t\t\t\t\t\t\t\\\n\t\treturn mac_policy_register(&mpname##_mac_policy_conf,\t\\\n\t\t    &handle, xd);\t\t\t\t\t\\\n\t}\t\t\t\t\t\t\t\t\\\n\t\t\t\t\t\t\t\t\t\\\n\tstatic kern_return_t\t\t\t\t\t\t\\\n\tkmod_stop(kmod_info_t *ki, void *xd)\t\t\t\t\\\n\t{\t\t\t\t\t\t\t\t\\\n\t\treturn mac_policy_unregister(handle);\t\t\t\\\n\t}\t\t\t\t\t\t\t\t\\\n\t\t\t\t\t\t\t\t\t\\\n\textern kern_return_t _start(kmod_info_t *ki, void *data);\t\\\n\textern kern_return_t _stop(kmod_info_t *ki, void *data);\t\\\n\t\t\t\t\t\t\t\t\t\\\n\tKMOD_EXPLICIT_DECL(security.mpname, POLICY_VER, _start, _stop)\t\\\n\tkmod_start_func_t *_realmain = kmod_start;\t\t\t\\\n\tkmod_stop_func_t *_antimain = kmod_stop;\t\t\t\\\n\tint _kext_apple_cc = __APPLE_CC__\n\n\n#define\tLABEL_TO_SLOT(l, s)\t(l)->l_perpolicy[s]\n\n/*\n * Policy interface to map a struct label pointer to per-policy data.\n * Typically, policies wrap this in their own accessor macro that casts an\n * intptr_t to a policy-specific data type.\n */\nintptr_t        mac_label_get(struct label *l, int slot);\nvoid            mac_label_set(struct label *l, int slot, intptr_t v);\n\n#define\tmac_get_mpc(h)\t\t(mac_policy_list.entries[h].mpc)\n\n/**\n  @name Flags for MAC allocator interfaces\n\n  These flags are passed to the Darwin kernel allocator routines to\n  indicate whether the allocation is permitted to block or not.\n  Caution should be taken; some operations are not permitted to sleep,\n  and some types of locks cannot be held when sleeping.\n */\n\n/*@{*/\n\n/**\n    @brief Allocation operations may block\n\n    If memory is not immediately available, the allocation routine\n    will block (typically sleeping) until memory is available.\n\n    @warning Inappropriate use of this flag may cause kernel panics.\n */\n#define MAC_WAITOK  0\n\n/**\n    @brief Allocation operations may not block\n\n    Rather than blocking, the allocator may return an error if memory\n    is not immediately available.  This type of allocation will not\n    sleep, preserving locking semantics.\n */\n#define MAC_NOWAIT  1\n\n/*@}*/\n\t\n#ifdef __cplusplus\n}\n#endif\n\n#endif /* !_SECURITY_MAC_POLICY_H_ */\n"
  },
  {
    "path": "EFI/CLOVER/kexts/Other/Lilu_v1.3.7.kext/Contents/Resources/Library/wrappers/build.tool",
    "content": "#!/bin/bash\n#\n#  build.tool\n#  Lilu\n#\n#  Copyright © 2018 vit9696. All rights reserved.\n#\n\ncd $(dirname \"$0\") || exit 1\n\nrm -f *.o *.bin wrappers.inc entry32 entry64\n\nclang -m32 -c entry32.S || exit 1\nclang -m64 -c entry64.S || exit 1\n\nclang -m32 entry32.o -o entry32 || exit 1\nclang -m64 entry64.o -o entry64 || exit 1\n\nif [ \"$(nm entry32.o | grep '00000000 T _main')\" == \"\" ] || [ \"$(nm entry64.o | grep '0000000000000000 T _main')\" == \"\" ]; then\n  echo \"Invalid main address\"\n  exit 1\nfi\n\notool -t entry32 | grep -E '^0000' | sed 's#^[0-9a-f]*##' | xxd -r -p > entry32.bin\notool -t entry64 | grep -E '^0000' | sed 's#^[0-9a-f]*##' | xxd -r -p > entry64.bin\n\nsz32=$(stat -f '%z' entry32.bin)\nsz64=$(stat -f '%z' entry64.bin)\n\nbtr32=$(nm entry32.o | grep -E 't booter$' | cut -f1 -d' ')\nbtr64=$(nm entry64.o | grep -E 't booter$' | cut -f1 -d' ')\n\nep32=$(nm entry32.o | grep -E 't entrypoint$' | cut -f1 -d' ')\nep64=$(nm entry64.o | grep -E 't entrypoint$' | cut -f1 -d' ')\n\necho '//' > wrappers.inc\necho '//  wrappers.inc' >> wrappers.inc\necho '//  Lilu' >> wrappers.inc\necho '//' >> wrappers.inc\necho '//  Copyright © 2018 vit9696. All rights reserved.' >> wrappers.inc\necho '//' >> wrappers.inc\necho '' >> wrappers.inc\necho '// This is an autogenerated file, do not edit!' >> wrappers.inc\necho 'static uint8_t entryWrapper32[] = {' >> wrappers.inc\ncat entry32.bin | xxd -i >> wrappers.inc\necho '};' >> wrappers.inc\necho 'static uint8_t entryWrapper64[] = {' >> wrappers.inc\ncat entry64.bin | xxd -i >> wrappers.inc\necho '};' >> wrappers.inc\necho \"static_assert(sizeof(entryWrapper32) == ${sz32}, \\\"Invalid entryWrapper32 size\\\");\" >> wrappers.inc\necho \"static_assert(sizeof(entryWrapper64) == ${sz64}, \\\"Invalid entryWrapper64 size\\\");\" >> wrappers.inc\necho \"static constexpr size_t EntryWrapper32Booter {0x${btr32}};\" >> wrappers.inc\necho \"static constexpr size_t EntryWrapper64Booter {0x${btr64}};\" >> wrappers.inc\necho \"static constexpr size_t EntryWrapper32Entry {0x${ep32}};\" >> wrappers.inc\necho \"static constexpr size_t EntryWrapper64Entry {0x${ep64}};\" >> wrappers.inc\n\nrm -f *.o *.bin entry32 entry64\n"
  },
  {
    "path": "EFI/CLOVER/kexts/Other/Lilu_v1.3.7.kext/Contents/Resources/Library/wrappers/entry32.S",
    "content": "#\n#  entry32.S\n#  Lilu\n#\n#  Copyright © 2018 vit9696. All rights reserved.\n#\n\n.text\n.global _main\n_main:\n  push  %ebp\n  mov   %esp, %ebp\n  # ensure 16-byte alignment\n  and   $0xfffffff0, %esp\n  # int main(int argc, const char* argv[], const char* envp[], const char* apple[]);\n  push  20(%ebp)\n  push  16(%ebp)\n  push  12(%ebp)\n  push  8(%ebp)\n  call  get_booter\n# entrypoint-compatible wrapper\nbooter:\n  .word 0xFFFF\n  .word 0xFFFF\nget_booter:\n  pop   %edx\n  mov   (%edx), %edx\n  call  *%edx\n  xor   %eax, %eax\n  mov   %ebp, %esp\n  pop   %ebp\n  call  get_entrypoint\n# original entrypoint (main)\nentrypoint:\n  .word 0xFFFF\n  .word 0xFFFF\nget_entrypoint:\n  pop   %edx\n  mov   (%edx), %edx\n  jmp   *%edx\n_end:\n"
  },
  {
    "path": "EFI/CLOVER/kexts/Other/Lilu_v1.3.7.kext/Contents/Resources/Library/wrappers/entry64.S",
    "content": "#\n#  entry64.S\n#  Lilu\n#\n#  Copyright © 2018 vit9696. All rights reserved.\n#\n\n.text\n.global _main\n_main:\n  push  %rbp\n  mov   %rsp, %rbp\n  # ensure 16-byte alignment\n  and   $0xfffffffffffffff0, %rsp\n  # int main(int argc, const char* argv[], const char* envp[], const char* apple[]);\n  push  %rdi\n  push  %rsi\n  push  %rdx\n  push  %rcx\n  call  *booter(%rip)\n  xor   %eax, %eax\n  pop   %rcx\n  pop   %rdx\n  pop   %rsi\n  pop   %rdi\n  mov   %rbp, %rsp\n  pop   %rbp\n  jmp   *entrypoint(%rip)\n# original entrypoint (main)\nentrypoint:\n  .word 0xFFFF\n  .word 0xFFFF\n  .word 0xFFFF\n  .word 0xFFFF\n# entrypoint-compatible wrapper\nbooter:\n  .word 0xFFFF\n  .word 0xFFFF\n  .word 0xFFFF\n  .word 0xFFFF\n_end:\n"
  },
  {
    "path": "EFI/CLOVER/kexts/Other/Lilu_v1.3.7.kext/Contents/Resources/Library/wrappers/wrappers.inc",
    "content": "//\n//  wrappers.inc\n//  Lilu\n//\n//  Copyright © 2018 vit9696. All rights reserved.\n//\n\n// This is an autogenerated file, do not edit!\nstatic uint8_t entryWrapper32[] = {\n  0x55, 0x89, 0xe5, 0x83, 0xe4, 0xf0, 0xff, 0x75, 0x14, 0xff, 0x75, 0x10,\n  0xff, 0x75, 0x0c, 0xff, 0x75, 0x08, 0xe8, 0x04, 0x00, 0x00, 0x00, 0xff,\n  0xff, 0xff, 0xff, 0x5a, 0x8b, 0x12, 0xff, 0xd2, 0x31, 0xc0, 0x89, 0xec,\n  0x5d, 0xe8, 0x04, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x5a, 0x8b,\n  0x12, 0xff, 0xe2\n};\nstatic uint8_t entryWrapper64[] = {\n  0x55, 0x48, 0x89, 0xe5, 0x48, 0x83, 0xe4, 0xf0, 0x57, 0x56, 0x52, 0x51,\n  0xff, 0x15, 0x18, 0x00, 0x00, 0x00, 0x31, 0xc0, 0x59, 0x5a, 0x5e, 0x5f,\n  0x48, 0x89, 0xec, 0x5d, 0xff, 0x25, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff,\n  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,\n  0xff, 0xff\n};\nstatic_assert(sizeof(entryWrapper32) == 51, \"Invalid entryWrapper32 size\");\nstatic_assert(sizeof(entryWrapper64) == 50, \"Invalid entryWrapper64 size\");\nstatic constexpr size_t EntryWrapper32Booter {0x00000017};\nstatic constexpr size_t EntryWrapper64Booter {0x000000000000002a};\nstatic constexpr size_t EntryWrapper32Entry {0x0000002a};\nstatic constexpr size_t EntryWrapper64Entry {0x0000000000000022};\n"
  },
  {
    "path": "EFI/CLOVER/kexts/Other/RealtekRTL8111.kext/Contents/Info.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>BuildMachineOSBuild</key>\n\t<string>16D32</string>\n\t<key>CFBundleDevelopmentRegion</key>\n\t<string>English</string>\n\t<key>CFBundleExecutable</key>\n\t<string>RealtekRTL8111</string>\n\t<key>CFBundleIdentifier</key>\n\t<string>com.insanelymac.RealtekRTL8111</string>\n\t<key>CFBundleInfoDictionaryVersion</key>\n\t<string>6.0</string>\n\t<key>CFBundleName</key>\n\t<string>RealtekRTL8111</string>\n\t<key>CFBundlePackageType</key>\n\t<string>KEXT</string>\n\t<key>CFBundleShortVersionString</key>\n\t<string>2.2.1</string>\n\t<key>CFBundleSignature</key>\n\t<string>????</string>\n\t<key>CFBundleSupportedPlatforms</key>\n\t<array>\n\t\t<string>MacOSX</string>\n\t</array>\n\t<key>CFBundleVersion</key>\n\t<string>2.2.1</string>\n\t<key>DTCompiler</key>\n\t<string>com.apple.compilers.llvm.clang.1_0</string>\n\t<key>DTPlatformBuild</key>\n\t<string>8C1002</string>\n\t<key>DTPlatformVersion</key>\n\t<string>GM</string>\n\t<key>DTSDKBuild</key>\n\t<string>15E60</string>\n\t<key>DTSDKName</key>\n\t<string>macosx10.11</string>\n\t<key>DTXcode</key>\n\t<string>0821</string>\n\t<key>DTXcodeBuild</key>\n\t<string>8C1002</string>\n\t<key>IOKitPersonalities</key>\n\t<dict>\n\t\t<key>RTL8111 PCIe Adapter</key>\n\t\t<dict>\n\t\t\t<key>CFBundleIdentifier</key>\n\t\t\t<string>com.insanelymac.RealtekRTL8111</string>\n\t\t\t<key>Driver_Version</key>\n\t\t\t<string>2.2.1</string>\n\t\t\t<key>IOClass</key>\n\t\t\t<string>RTL8111</string>\n\t\t\t<key>IOPCIMatch</key>\n\t\t\t<string>0x816810ec 0x81681186</string>\n\t\t\t<key>IOProbeScore</key>\n\t\t\t<integer>1000</integer>\n\t\t\t<key>IOProviderClass</key>\n\t\t\t<string>IOPCIDevice</string>\n\t\t\t<key>Model</key>\n\t\t\t<string>RTL8111</string>\n\t\t\t<key>Vendor</key>\n\t\t\t<string>Realtek</string>\n\t\t\t<key>disableASPM</key>\n\t\t\t<true/>\n\t\t\t<key>enableCSO6</key>\n\t\t\t<true/>\n\t\t\t<key>enableEEE</key>\n\t\t\t<true/>\n\t\t\t<key>enableTSO4</key>\n\t\t\t<true/>\n\t\t\t<key>enableTSO6</key>\n\t\t\t<true/>\n\t\t\t<key>intrMitigate</key>\n\t\t\t<integer>24401</integer>\n\t\t\t<key>rxPolling</key>\n\t\t\t<true/>\n\t\t</dict>\n\t</dict>\n\t<key>NSHumanReadableCopyright</key>\n\t<string>Copyright © 2013 Laura Müller. All rights reserved.</string>\n\t<key>OSBundleLibraries</key>\n\t<dict>\n\t\t<key>com.apple.iokit.IONetworkingFamily</key>\n\t\t<string>1.1.0</string>\n\t\t<key>com.apple.iokit.IOPCIFamily</key>\n\t\t<string>1.7</string>\n\t\t<key>com.apple.kpi.bsd</key>\n\t\t<string>8.10.0</string>\n\t\t<key>com.apple.kpi.iokit</key>\n\t\t<string>8.10.0</string>\n\t\t<key>com.apple.kpi.libkern</key>\n\t\t<string>8.10.0</string>\n\t\t<key>com.apple.kpi.mach</key>\n\t\t<string>8.10.0</string>\n\t</dict>\n\t<key>OSBundleRequired</key>\n\t<string>Network-Root</string>\n</dict>\n</plist>\n"
  },
  {
    "path": "EFI/CLOVER/kexts/Other/SMCBatteryManager.kext/Contents/Info.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>BuildMachineOSBuild</key>\n\t<string>18F132</string>\n\t<key>CFBundleDevelopmentRegion</key>\n\t<string>en</string>\n\t<key>CFBundleExecutable</key>\n\t<string>SMCBatteryManager</string>\n\t<key>CFBundleIdentifier</key>\n\t<string>ru.usrsse2.SMCBatteryManager</string>\n\t<key>CFBundleInfoDictionaryVersion</key>\n\t<string>6.0</string>\n\t<key>CFBundleName</key>\n\t<string>SMCBatteryManager</string>\n\t<key>CFBundlePackageType</key>\n\t<string>KEXT</string>\n\t<key>CFBundleShortVersionString</key>\n\t<string>1.0</string>\n\t<key>CFBundleSupportedPlatforms</key>\n\t<array>\n\t\t<string>MacOSX</string>\n\t</array>\n\t<key>CFBundleVersion</key>\n\t<string>1</string>\n\t<key>DTCompiler</key>\n\t<string>com.apple.compilers.llvm.clang.1_0</string>\n\t<key>DTPlatformBuild</key>\n\t<string>10E1001</string>\n\t<key>DTPlatformVersion</key>\n\t<string>GM</string>\n\t<key>DTSDKBuild</key>\n\t<string>18E219</string>\n\t<key>DTSDKName</key>\n\t<string>macosx10.14</string>\n\t<key>DTXcode</key>\n\t<string>1020</string>\n\t<key>DTXcodeBuild</key>\n\t<string>10E1001</string>\n\t<key>IOKitPersonalities</key>\n\t<dict>\n\t\t<key>IOSMBusController</key>\n\t\t<dict>\n\t\t\t<key>CFBundleIdentifier</key>\n\t\t\t<string>ru.usrsse2.SMCBatteryManager</string>\n\t\t\t<key>IOClass</key>\n\t\t\t<string>SMCSMBusController</string>\n\t\t\t<key>IOProviderClass</key>\n\t\t\t<string>IOResources</string>\n\t\t\t<key>IOResourceMatch</key>\n\t\t\t<string>IOKit</string>\n\t\t</dict>\n\t\t<key>SMCBatteryManager</key>\n\t\t<dict>\n\t\t\t<key>CFBundleIdentifier</key>\n\t\t\t<string>ru.usrsse2.SMCBatteryManager</string>\n\t\t\t<key>IOClass</key>\n\t\t\t<string>SMCBatteryManager</string>\n\t\t\t<key>IOMatchCategory</key>\n\t\t\t<string>SMCBatteryManager</string>\n\t\t\t<key>IOProviderClass</key>\n\t\t\t<string>IOResources</string>\n\t\t\t<key>IOResourceMatch</key>\n\t\t\t<string>IOKit</string>\n\t\t</dict>\n\t</dict>\n\t<key>NSHumanReadableCopyright</key>\n\t<string>Copyright © 2018 usrsse2. All rights reserved.</string>\n\t<key>OSBundleCompatibleVersion</key>\n\t<string>1.0.0</string>\n\t<key>OSBundleLibraries</key>\n\t<dict>\n\t\t<key>as.vit9696.Lilu</key>\n\t\t<string>1.2.0</string>\n\t\t<key>as.vit9696.VirtualSMC</key>\n\t\t<string>1.0.0</string>\n\t\t<key>com.apple.iokit.IOACPIFamily</key>\n\t\t<string>1.0.0d1</string>\n\t\t<key>com.apple.iokit.IOSMBusFamily</key>\n\t\t<string>1.0.0</string>\n\t\t<key>com.apple.kpi.bsd</key>\n\t\t<string>12.0.0</string>\n\t\t<key>com.apple.kpi.dsep</key>\n\t\t<string>12.0.0</string>\n\t\t<key>com.apple.kpi.iokit</key>\n\t\t<string>12.0.0</string>\n\t\t<key>com.apple.kpi.libkern</key>\n\t\t<string>12.0.0</string>\n\t\t<key>com.apple.kpi.mach</key>\n\t\t<string>12.0.0</string>\n\t\t<key>com.apple.kpi.unsupported</key>\n\t\t<string>12.0.0</string>\n\t</dict>\n\t<key>OSBundleRequired</key>\n\t<string>Root</string>\n</dict>\n</plist>\n"
  },
  {
    "path": "EFI/CLOVER/kexts/Other/SMCProcessor.kext/Contents/Info.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>BuildMachineOSBuild</key>\n\t<string>18F132</string>\n\t<key>CFBundleDevelopmentRegion</key>\n\t<string>en</string>\n\t<key>CFBundleExecutable</key>\n\t<string>SMCProcessor</string>\n\t<key>CFBundleIdentifier</key>\n\t<string>as.vit9696.SMCProcessor</string>\n\t<key>CFBundleInfoDictionaryVersion</key>\n\t<string>6.0</string>\n\t<key>CFBundleName</key>\n\t<string>SMCProcessor</string>\n\t<key>CFBundlePackageType</key>\n\t<string>KEXT</string>\n\t<key>CFBundleShortVersionString</key>\n\t<string>1.0.5</string>\n\t<key>CFBundleSignature</key>\n\t<string>????</string>\n\t<key>CFBundleSupportedPlatforms</key>\n\t<array>\n\t\t<string>MacOSX</string>\n\t</array>\n\t<key>CFBundleVersion</key>\n\t<string>1.0.5</string>\n\t<key>DTCompiler</key>\n\t<string>com.apple.compilers.llvm.clang.1_0</string>\n\t<key>DTPlatformBuild</key>\n\t<string>10E1001</string>\n\t<key>DTPlatformVersion</key>\n\t<string>GM</string>\n\t<key>DTSDKBuild</key>\n\t<string>18E219</string>\n\t<key>DTSDKName</key>\n\t<string>macosx10.14</string>\n\t<key>DTXcode</key>\n\t<string>1020</string>\n\t<key>DTXcodeBuild</key>\n\t<string>10E1001</string>\n\t<key>IOKitPersonalities</key>\n\t<dict>\n\t\t<key>as.vit9696.SMCProcessor</key>\n\t\t<dict>\n\t\t\t<key>CFBundleIdentifier</key>\n\t\t\t<string>as.vit9696.SMCProcessor</string>\n\t\t\t<key>IOClass</key>\n\t\t\t<string>SMCProcessor</string>\n\t\t\t<key>IOMatchCategory</key>\n\t\t\t<string>SMCProcessor</string>\n\t\t\t<key>IONameMatch</key>\n\t\t\t<string>processor</string>\n\t\t\t<key>IOPropertyMatch</key>\n\t\t\t<dict>\n\t\t\t\t<key>processor-index</key>\n\t\t\t\t<integer>0</integer>\n\t\t\t</dict>\n\t\t\t<key>IOProviderClass</key>\n\t\t\t<string>IOACPIPlatformDevice</string>\n\t\t\t<key>IOResourceMatch</key>\n\t\t\t<string>ACPI</string>\n\t\t</dict>\n\t</dict>\n\t<key>NSHumanReadableCopyright</key>\n\t<string>Copyright © 2018 vit9696. All rights reserved.</string>\n\t<key>OSBundleCompatibleVersion</key>\n\t<string>1.0</string>\n\t<key>OSBundleLibraries</key>\n\t<dict>\n\t\t<key>as.vit9696.Lilu</key>\n\t\t<string>1.2.0</string>\n\t\t<key>as.vit9696.VirtualSMC</key>\n\t\t<string>1.0.0</string>\n\t\t<key>com.apple.iokit.IOACPIFamily</key>\n\t\t<string>1.0.0d1</string>\n\t\t<key>com.apple.kpi.bsd</key>\n\t\t<string>12.0.0</string>\n\t\t<key>com.apple.kpi.dsep</key>\n\t\t<string>12.0.0</string>\n\t\t<key>com.apple.kpi.iokit</key>\n\t\t<string>12.0.0</string>\n\t\t<key>com.apple.kpi.libkern</key>\n\t\t<string>12.0.0</string>\n\t\t<key>com.apple.kpi.mach</key>\n\t\t<string>12.0.0</string>\n\t\t<key>com.apple.kpi.unsupported</key>\n\t\t<string>12.0.0</string>\n\t</dict>\n\t<key>OSBundleRequired</key>\n\t<string>Root</string>\n</dict>\n</plist>\n"
  },
  {
    "path": "EFI/CLOVER/kexts/Other/USBPorts_7560.kext/Contents/Info.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>CFBundleDevelopmentRegion</key>\n\t<string>English</string>\n\t<key>CFBundleGetInfoString</key>\n\t<string>1.0 Copyright © 2018 Headsoft. All rights reserved.</string>\n\t<key>CFBundleIdentifier</key>\n\t<string>com.Headsoft.USBPorts</string>\n\t<key>CFBundleInfoDictionaryVersion</key>\n\t<string>6.0</string>\n\t<key>CFBundleName</key>\n\t<string>USBPorts</string>\n\t<key>CFBundlePackageType</key>\n\t<string>KEXT</string>\n\t<key>CFBundleShortVersionString</key>\n\t<string>1.0</string>\n\t<key>CFBundleSignature</key>\n\t<string>????</string>\n\t<key>CFBundleVersion</key>\n\t<string>1.0</string>\n\t<key>IOKitPersonalities</key>\n\t<dict>\n\t\t<key>MacBookPro15,2-XHC</key>\n\t\t<dict>\n\t\t\t<key>CFBundleIdentifier</key>\n\t\t\t<string>com.apple.driver.AppleUSBHostMergeProperties</string>\n\t\t\t<key>IOClass</key>\n\t\t\t<string>AppleUSBHostMergeProperties</string>\n\t\t\t<key>IONameMatch</key>\n\t\t\t<string>XHC</string>\n\t\t\t<key>IOProviderClass</key>\n\t\t\t<string>AppleUSBXHCIPCI</string>\n\t\t\t<key>IOProviderMergeProperties</key>\n\t\t\t<dict>\n\t\t\t\t<key>port-count</key>\n\t\t\t\t<data>\n\t\t\t\tDgAAAA==\n\t\t\t\t</data>\n\t\t\t\t<key>ports</key>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>HS01</key>\n\t\t\t\t\t<dict>\n\t\t\t\t\t\t<key>UsbConnector</key>\n\t\t\t\t\t\t<integer>0</integer>\n\t\t\t\t\t\t<key>port</key>\n\t\t\t\t\t\t<data>\n\t\t\t\t\t\tAQAAAA==\n\t\t\t\t\t\t</data>\n\t\t\t\t\t</dict>\n\t\t\t\t\t<key>HS02</key>\n\t\t\t\t\t<dict>\n\t\t\t\t\t\t<key>UsbConnector</key>\n\t\t\t\t\t\t<integer>0</integer>\n\t\t\t\t\t\t<key>port</key>\n\t\t\t\t\t\t<data>\n\t\t\t\t\t\tAgAAAA==\n\t\t\t\t\t\t</data>\n\t\t\t\t\t</dict>\n\t\t\t\t\t<key>HS03</key>\n\t\t\t\t\t<dict>\n\t\t\t\t\t\t<key>UsbConnector</key>\n\t\t\t\t\t\t<integer>255</integer>\n\t\t\t\t\t\t<key>port</key>\n\t\t\t\t\t\t<data>\n\t\t\t\t\t\tAwAAAA==\n\t\t\t\t\t\t</data>\n\t\t\t\t\t</dict>\n\t\t\t\t\t<key>HS05</key>\n\t\t\t\t\t<dict>\n\t\t\t\t\t\t<key>UsbConnector</key>\n\t\t\t\t\t\t<integer>255</integer>\n\t\t\t\t\t\t<key>port</key>\n\t\t\t\t\t\t<data>\n\t\t\t\t\t\tBQAAAA==\n\t\t\t\t\t\t</data>\n\t\t\t\t\t</dict>\n\t\t\t\t\t<key>HS06</key>\n\t\t\t\t\t<dict>\n\t\t\t\t\t\t<key>UsbConnector</key>\n\t\t\t\t\t\t<integer>255</integer>\n\t\t\t\t\t\t<key>port</key>\n\t\t\t\t\t\t<data>\n\t\t\t\t\t\tBgAAAA==\n\t\t\t\t\t\t</data>\n\t\t\t\t\t</dict>\n\t\t\t\t\t<key>HS08</key>\n\t\t\t\t\t<dict>\n\t\t\t\t\t\t<key>UsbConnector</key>\n\t\t\t\t\t\t<integer>255</integer>\n\t\t\t\t\t\t<key>port</key>\n\t\t\t\t\t\t<data>\n\t\t\t\t\t\tCAAAAA==\n\t\t\t\t\t\t</data>\n\t\t\t\t\t</dict>\n\t\t\t\t\t<key>SS01</key>\n\t\t\t\t\t<dict>\n\t\t\t\t\t\t<key>UsbConnector</key>\n\t\t\t\t\t\t<integer>3</integer>\n\t\t\t\t\t\t<key>port</key>\n\t\t\t\t\t\t<data>\n\t\t\t\t\t\tDQAAAA==\n\t\t\t\t\t\t</data>\n\t\t\t\t\t</dict>\n\t\t\t\t\t<key>SS02</key>\n\t\t\t\t\t<dict>\n\t\t\t\t\t\t<key>UsbConnector</key>\n\t\t\t\t\t\t<integer>3</integer>\n\t\t\t\t\t\t<key>port</key>\n\t\t\t\t\t\t<data>\n\t\t\t\t\t\tDgAAAA==\n\t\t\t\t\t\t</data>\n\t\t\t\t\t</dict>\n\t\t\t\t</dict>\n\t\t\t</dict>\n\t\t\t<key>model</key>\n\t\t\t<string>MacBookPro15,2</string>\n\t\t</dict>\n\t</dict>\n\t<key>OSBundleRequired</key>\n\t<string>Root</string>\n</dict>\n</plist>\n"
  },
  {
    "path": "EFI/CLOVER/kexts/Other/VerbStub.kext/Contents/Info.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>BuildMachineOSBuild</key>\n\t<string>18B75</string>\n\t<key>CFBundleDevelopmentRegion</key>\n\t<string>en</string>\n\t<key>CFBundleExecutable</key>\n\t<string>VerbStub</string>\n\t<key>CFBundleIdentifier</key>\n\t<string>com.XPS.VerbStub</string>\n\t<key>CFBundleInfoDictionaryVersion</key>\n\t<string>6.0</string>\n\t<key>CFBundleName</key>\n\t<string>VerbStub</string>\n\t<key>CFBundlePackageType</key>\n\t<string>KEXT</string>\n\t<key>CFBundleShortVersionString</key>\n\t<string>1.0.3</string>\n\t<key>CFBundleSupportedPlatforms</key>\n\t<array>\n\t\t<string>MacOSX</string>\n\t</array>\n\t<key>CFBundleVersion</key>\n\t<string>1.0.3</string>\n\t<key>DTCompiler</key>\n\t<string>com.apple.compilers.llvm.clang.1_0</string>\n\t<key>DTPlatformBuild</key>\n\t<string>10B61</string>\n\t<key>DTPlatformVersion</key>\n\t<string>GM</string>\n\t<key>DTSDKBuild</key>\n\t<string>18B71</string>\n\t<key>DTSDKName</key>\n\t<string>macosx10.14</string>\n\t<key>DTXcode</key>\n\t<string>1010</string>\n\t<key>DTXcodeBuild</key>\n\t<string>10B61</string>\n\t<key>IOKitPersonalities</key>\n\t<dict>\n\t\t<key>VerbStub</key>\n\t\t<dict>\n\t\t\t<key>CFBundleIdentifier</key>\n\t\t\t<string>com.XPS.VerbStub</string>\n\t\t\t<key>IOClass</key>\n\t\t\t<string>com_XPS_VerbStub</string>\n\t\t\t<key>IOMatchCategory</key>\n\t\t\t<string>com_XPS_VerbStub</string>\n\t\t\t<key>IOProviderClass</key>\n\t\t\t<string>IOHDACodecFunction</string>\n\t\t\t<key>IOUserClientClass</key>\n\t\t\t<string>VerbStubUserClient</string>\n\t\t</dict>\n\t\t<key>VerbStubResidency</key>\n\t\t<dict>\n\t\t\t<key>CFBundleIdentifier</key>\n\t\t\t<string>com.XPS.VerbStub</string>\n\t\t\t<key>IOClass</key>\n\t\t\t<string>VerbStubResidency</string>\n\t\t\t<key>IOMatchCategory</key>\n\t\t\t<string>VerbStubResidency</string>\n\t\t\t<key>IOProviderClass</key>\n\t\t\t<string>IOResources</string>\n\t\t</dict>\n\t</dict>\n\t<key>NSHumanReadableCopyright</key>\n\t<string>Copyright © 2017 VerbStub. All rights reserved.</string>\n\t<key>OSBundleLibraries</key>\n\t<dict>\n\t\t<key>com.apple.iokit.IOPCIFamily</key>\n\t\t<string>2.9</string>\n\t\t<key>com.apple.kpi.iokit</key>\n\t\t<string>16.6</string>\n\t\t<key>com.apple.kpi.libkern</key>\n\t\t<string>16.6</string>\n\t</dict>\n</dict>\n</plist>\n"
  },
  {
    "path": "EFI/CLOVER/kexts/Other/VirtualSMC.kext/Contents/Info.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>BuildMachineOSBuild</key>\n\t<string>18F132</string>\n\t<key>CFBundleDevelopmentRegion</key>\n\t<string>en</string>\n\t<key>CFBundleExecutable</key>\n\t<string>VirtualSMC</string>\n\t<key>CFBundleIdentifier</key>\n\t<string>as.vit9696.VirtualSMC</string>\n\t<key>CFBundleInfoDictionaryVersion</key>\n\t<string>6.0</string>\n\t<key>CFBundleName</key>\n\t<string>VirtualSMC</string>\n\t<key>CFBundlePackageType</key>\n\t<string>KEXT</string>\n\t<key>CFBundleShortVersionString</key>\n\t<string>1.0.5</string>\n\t<key>CFBundleSignature</key>\n\t<string>????</string>\n\t<key>CFBundleSupportedPlatforms</key>\n\t<array>\n\t\t<string>MacOSX</string>\n\t</array>\n\t<key>CFBundleVersion</key>\n\t<string>1.0.5</string>\n\t<key>DTCompiler</key>\n\t<string>com.apple.compilers.llvm.clang.1_0</string>\n\t<key>DTPlatformBuild</key>\n\t<string>10E1001</string>\n\t<key>DTPlatformVersion</key>\n\t<string>GM</string>\n\t<key>DTSDKBuild</key>\n\t<string>18E219</string>\n\t<key>DTSDKName</key>\n\t<string>macosx10.14</string>\n\t<key>DTXcode</key>\n\t<string>1020</string>\n\t<key>DTXcodeBuild</key>\n\t<string>10E1001</string>\n\t<key>IOKitPersonalities</key>\n\t<dict>\n\t\t<key>as.vit9696.VirtualSMC</key>\n\t\t<dict>\n\t\t\t<key>CFBundleIdentifier</key>\n\t\t\t<string>as.vit9696.VirtualSMC</string>\n\t\t\t<key>IOClass</key>\n\t\t\t<string>VirtualSMC</string>\n\t\t\t<key>IODeviceMemory</key>\n\t\t\t<array>\n\t\t\t\t<array>\n\t\t\t\t\t<dict>\n\t\t\t\t\t\t<key>address</key>\n\t\t\t\t\t\t<integer>768</integer>\n\t\t\t\t\t\t<key>length</key>\n\t\t\t\t\t\t<integer>32</integer>\n\t\t\t\t\t</dict>\n\t\t\t\t</array>\n\t\t\t\t<array>\n\t\t\t\t\t<dict>\n\t\t\t\t\t\t<key>address</key>\n\t\t\t\t\t\t<integer>4277141504</integer>\n\t\t\t\t\t\t<key>length</key>\n\t\t\t\t\t\t<integer>65536</integer>\n\t\t\t\t\t</dict>\n\t\t\t\t</array>\n\t\t\t</array>\n\t\t\t<key>IOInterruptControllers</key>\n\t\t\t<array>\n\t\t\t\t<string>io-apic-0</string>\n\t\t\t</array>\n\t\t\t<key>IOInterruptSpecifiers</key>\n\t\t\t<array>\n\t\t\t\t<data>\n\t\t\t\tBgAAAAAAAAA=\n\t\t\t\t</data>\n\t\t\t</array>\n\t\t\t<key>IOMatchCategory</key>\n\t\t\t<string>IOACPIPlatformDevice</string>\n\t\t\t<key>IOName</key>\n\t\t\t<string>SMC</string>\n\t\t\t<key>IOProbeScore</key>\n\t\t\t<integer>60000</integer>\n\t\t\t<key>IOProviderClass</key>\n\t\t\t<string>AppleACPIPlatformExpert</string>\n\t\t\t<key>Keystore</key>\n\t\t\t<dict>\n\t\t\t\t<key>Generic</key>\n\t\t\t\t<array>\n\t\t\t\t\t<dict>\n\t\t\t\t\t\t<key>attr</key>\n\t\t\t\t\t\t<data>\n\t\t\t\t\t\tiA==\n\t\t\t\t\t\t</data>\n\t\t\t\t\t\t<key>comment</key>\n\t\t\t\t\t\t<string>Total fan number, this should be put to a plugin</string>\n\t\t\t\t\t\t<key>name</key>\n\t\t\t\t\t\t<data>\n\t\t\t\t\t\tRk51bQ==\n\t\t\t\t\t\t</data>\n\t\t\t\t\t\t<key>type</key>\n\t\t\t\t\t\t<data>\n\t\t\t\t\t\tdWk4IA==\n\t\t\t\t\t\t</data>\n\t\t\t\t\t\t<key>value</key>\n\t\t\t\t\t\t<data>\n\t\t\t\t\t\tAA==\n\t\t\t\t\t\t</data>\n\t\t\t\t\t</dict>\n\t\t\t\t\t<dict>\n\t\t\t\t\t\t<key>attr</key>\n\t\t\t\t\t\t<data>\n\t\t\t\t\t\tgA==\n\t\t\t\t\t\t</data>\n\t\t\t\t\t\t<key>comment</key>\n\t\t\t\t\t\t<string>CPU plimit</string>\n\t\t\t\t\t\t<key>name</key>\n\t\t\t\t\t\t<data>\n\t\t\t\t\t\tTVNUYw==\n\t\t\t\t\t\t</data>\n\t\t\t\t\t\t<key>type</key>\n\t\t\t\t\t\t<data>\n\t\t\t\t\t\tdWk4IA==\n\t\t\t\t\t\t</data>\n\t\t\t\t\t\t<key>value</key>\n\t\t\t\t\t\t<data>\n\t\t\t\t\t\tAA==\n\t\t\t\t\t\t</data>\n\t\t\t\t\t</dict>\n\t\t\t\t\t<dict>\n\t\t\t\t\t\t<key>attr</key>\n\t\t\t\t\t\t<data>\n\t\t\t\t\t\tgA==\n\t\t\t\t\t\t</data>\n\t\t\t\t\t\t<key>comment</key>\n\t\t\t\t\t\t<string>FAN plimit (supposedly)</string>\n\t\t\t\t\t\t<key>name</key>\n\t\t\t\t\t\t<data>\n\t\t\t\t\t\tTVNUZg==\n\t\t\t\t\t\t</data>\n\t\t\t\t\t\t<key>type</key>\n\t\t\t\t\t\t<data>\n\t\t\t\t\t\tdWk4IA==\n\t\t\t\t\t\t</data>\n\t\t\t\t\t\t<key>value</key>\n\t\t\t\t\t\t<data>\n\t\t\t\t\t\tAA==\n\t\t\t\t\t\t</data>\n\t\t\t\t\t</dict>\n\t\t\t\t\t<dict>\n\t\t\t\t\t\t<key>attr</key>\n\t\t\t\t\t\t<data>\n\t\t\t\t\t\tgA==\n\t\t\t\t\t\t</data>\n\t\t\t\t\t\t<key>comment</key>\n\t\t\t\t\t\t<string>Memory plimit</string>\n\t\t\t\t\t\t<key>name</key>\n\t\t\t\t\t\t<data>\n\t\t\t\t\t\tTVNUbQ==\n\t\t\t\t\t\t</data>\n\t\t\t\t\t\t<key>type</key>\n\t\t\t\t\t\t<data>\n\t\t\t\t\t\tdWk4IA==\n\t\t\t\t\t\t</data>\n\t\t\t\t\t\t<key>value</key>\n\t\t\t\t\t\t<data>\n\t\t\t\t\t\tAA==\n\t\t\t\t\t\t</data>\n\t\t\t\t\t</dict>\n\t\t\t\t\t<dict>\n\t\t\t\t\t\t<key>attr</key>\n\t\t\t\t\t\t<data>\n\t\t\t\t\t\tgA==\n\t\t\t\t\t\t</data>\n\t\t\t\t\t\t<key>comment</key>\n\t\t\t\t\t\t<string>This should be 1 on laptops, and is overriden by sensors</string>\n\t\t\t\t\t\t<key>name</key>\n\t\t\t\t\t\t<data>\n\t\t\t\t\t\tQkFUUA==\n\t\t\t\t\t\t</data>\n\t\t\t\t\t\t<key>type</key>\n\t\t\t\t\t\t<data>\n\t\t\t\t\t\tZmxhZw==\n\t\t\t\t\t\t</data>\n\t\t\t\t\t\t<key>value</key>\n\t\t\t\t\t\t<data>\n\t\t\t\t\t\tAA==\n\t\t\t\t\t\t</data>\n\t\t\t\t\t</dict>\n\t\t\t\t\t<dict>\n\t\t\t\t\t\t<key>attr</key>\n\t\t\t\t\t\t<data>\n\t\t\t\t\t\tgA==\n\t\t\t\t\t\t</data>\n\t\t\t\t\t\t<key>comment</key>\n\t\t\t\t\t\t<string>Only MacPros have custom illumination controllers</string>\n\t\t\t\t\t\t<key>name</key>\n\t\t\t\t\t\t<data>\n\t\t\t\t\t\tTHNOTQ==\n\t\t\t\t\t\t</data>\n\t\t\t\t\t\t<key>type</key>\n\t\t\t\t\t\t<data>\n\t\t\t\t\t\tdWk4IA==\n\t\t\t\t\t\t</data>\n\t\t\t\t\t\t<key>value</key>\n\t\t\t\t\t\t<data>\n\t\t\t\t\t\tAA==\n\t\t\t\t\t\t</data>\n\t\t\t\t\t</dict>\n\t\t\t\t</array>\n\t\t\t\t<key>GenericDesktopV1</key>\n\t\t\t\t<array/>\n\t\t\t\t<key>GenericDesktopV2</key>\n\t\t\t\t<array/>\n\t\t\t\t<key>GenericLaptopV1</key>\n\t\t\t\t<array/>\n\t\t\t\t<key>GenericLaptopV2</key>\n\t\t\t\t<array/>\n\t\t\t\t<key>GenericV1</key>\n\t\t\t\t<array>\n\t\t\t\t\t<dict>\n\t\t\t\t\t\t<key>attr</key>\n\t\t\t\t\t\t<data>\n\t\t\t\t\t\tgA==\n\t\t\t\t\t\t</data>\n\t\t\t\t\t\t<key>comment</key>\n\t\t\t\t\t\t<string>GPU plimit</string>\n\t\t\t\t\t\t<key>name</key>\n\t\t\t\t\t\t<data>\n\t\t\t\t\t\tTVNUZw==\n\t\t\t\t\t\t</data>\n\t\t\t\t\t\t<key>type</key>\n\t\t\t\t\t\t<data>\n\t\t\t\t\t\tdWk4IA==\n\t\t\t\t\t\t</data>\n\t\t\t\t\t\t<key>value</key>\n\t\t\t\t\t\t<data>\n\t\t\t\t\t\tAA==\n\t\t\t\t\t\t</data>\n\t\t\t\t\t</dict>\n\t\t\t\t</array>\n\t\t\t\t<key>GenericV2</key>\n\t\t\t\t<array>\n\t\t\t\t\t<dict>\n\t\t\t\t\t\t<key>attr</key>\n\t\t\t\t\t\t<data>\n\t\t\t\t\t\tgA==\n\t\t\t\t\t\t</data>\n\t\t\t\t\t\t<key>comment</key>\n\t\t\t\t\t\t<string>E plimit (???)</string>\n\t\t\t\t\t\t<key>name</key>\n\t\t\t\t\t\t<data>\n\t\t\t\t\t\tTVNUZQ==\n\t\t\t\t\t\t</data>\n\t\t\t\t\t\t<key>type</key>\n\t\t\t\t\t\t<data>\n\t\t\t\t\t\tdWk4IA==\n\t\t\t\t\t\t</data>\n\t\t\t\t\t\t<key>value</key>\n\t\t\t\t\t\t<data>\n\t\t\t\t\t\tAA==\n\t\t\t\t\t\t</data>\n\t\t\t\t\t</dict>\n\t\t\t\t\t<dict>\n\t\t\t\t\t\t<key>attr</key>\n\t\t\t\t\t\t<data>\n\t\t\t\t\t\tgA==\n\t\t\t\t\t\t</data>\n\t\t\t\t\t\t<key>comment</key>\n\t\t\t\t\t\t<string>I plimit (???)</string>\n\t\t\t\t\t\t<key>name</key>\n\t\t\t\t\t\t<data>\n\t\t\t\t\t\tTVNUaQ==\n\t\t\t\t\t\t</data>\n\t\t\t\t\t\t<key>type</key>\n\t\t\t\t\t\t<data>\n\t\t\t\t\t\tdWk4IA==\n\t\t\t\t\t\t</data>\n\t\t\t\t\t\t<key>value</key>\n\t\t\t\t\t\t<data>\n\t\t\t\t\t\tAA==\n\t\t\t\t\t\t</data>\n\t\t\t\t\t</dict>\n\t\t\t\t\t<dict>\n\t\t\t\t\t\t<key>attr</key>\n\t\t\t\t\t\t<data>\n\t\t\t\t\t\tgA==\n\t\t\t\t\t\t</data>\n\t\t\t\t\t\t<key>comment</key>\n\t\t\t\t\t\t<string>J plimit (???)</string>\n\t\t\t\t\t\t<key>name</key>\n\t\t\t\t\t\t<data>\n\t\t\t\t\t\tTVNUag==\n\t\t\t\t\t\t</data>\n\t\t\t\t\t\t<key>type</key>\n\t\t\t\t\t\t<data>\n\t\t\t\t\t\tdWk4IA==\n\t\t\t\t\t\t</data>\n\t\t\t\t\t\t<key>value</key>\n\t\t\t\t\t\t<data>\n\t\t\t\t\t\tAA==\n\t\t\t\t\t\t</data>\n\t\t\t\t\t</dict>\n\t\t\t\t</array>\n\t\t\t</dict>\n\t\t\t<key>ModelInfo</key>\n\t\t\t<dict>\n\t\t\t\t<key>GenericV1</key>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>branch</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tajUyAAAAAAA=\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>hwname</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tc21jLXBpa2V0b24A\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>platform</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tajUyAAAAAAA=\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>rev</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAXQPAAAE\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>revfb</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAXQPAAAE\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>revfu</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAXQPAAAE\n\t\t\t\t\t</data>\n\t\t\t\t</dict>\n\t\t\t\t<key>GenericV2</key>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>branch</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tajUyAAAAAAA=\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>hwname</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tc21jLWh1cm9ucml2ZXIA\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>platform</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tajUyAAAAAAA=\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>rev</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAigPAAAH\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>revfb</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAigPAAAH\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>revfu</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tAigPAAAH\n\t\t\t\t\t</data>\n\t\t\t\t</dict>\n\t\t\t\t<key>GenericV3</key>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>hwname</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tc21jLWh1cm9ucml2ZXIA\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>platform</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tajUyAAAAAAA=\n\t\t\t\t\t</data>\n\t\t\t\t</dict>\n\t\t\t</dict>\n\t\t\t<key>_STA</key>\n\t\t\t<integer>11</integer>\n\t\t\t<key>name</key>\n\t\t\t<data>\n\t\t\tQVBQMDAwMQA=\n\t\t\t</data>\n\t\t</dict>\n\t</dict>\n\t<key>NSHumanReadableCopyright</key>\n\t<string>Copyright © 2017 vit9696. All rights reserved.</string>\n\t<key>OSBundleCompatibleVersion</key>\n\t<string>1.0</string>\n\t<key>OSBundleLibraries</key>\n\t<dict>\n\t\t<key>as.vit9696.Lilu</key>\n\t\t<string>1.2.0</string>\n\t\t<key>com.apple.iokit.IOACPIFamily</key>\n\t\t<string>1.0.0d1</string>\n\t\t<key>com.apple.kpi.bsd</key>\n\t\t<string>12.0.0</string>\n\t\t<key>com.apple.kpi.dsep</key>\n\t\t<string>12.0.0</string>\n\t\t<key>com.apple.kpi.iokit</key>\n\t\t<string>12.0.0</string>\n\t\t<key>com.apple.kpi.libkern</key>\n\t\t<string>12.0.0</string>\n\t\t<key>com.apple.kpi.mach</key>\n\t\t<string>12.0.0</string>\n\t\t<key>com.apple.kpi.unsupported</key>\n\t\t<string>12.0.0</string>\n\t</dict>\n\t<key>OSBundleRequired</key>\n\t<string>Root</string>\n</dict>\n</plist>\n"
  },
  {
    "path": "EFI/CLOVER/kexts/Other/VoodooI2CHID.kext/Contents/Info.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>BuildMachineOSBuild</key>\n\t<string>17G2112</string>\n\t<key>CFBundleDevelopmentRegion</key>\n\t<string>en</string>\n\t<key>CFBundleExecutable</key>\n\t<string>VoodooI2CHID</string>\n\t<key>CFBundleIdentifier</key>\n\t<string>com.alexandred.VoodooI2CHID</string>\n\t<key>CFBundleInfoDictionaryVersion</key>\n\t<string>6.0</string>\n\t<key>CFBundleName</key>\n\t<string>VoodooI2CHID</string>\n\t<key>CFBundlePackageType</key>\n\t<string>KEXT</string>\n\t<key>CFBundleShortVersionString</key>\n\t<string>1.0</string>\n\t<key>CFBundleSupportedPlatforms</key>\n\t<array>\n\t\t<string>MacOSX</string>\n\t</array>\n\t<key>CFBundleVersion</key>\n\t<string>1</string>\n\t<key>DTCompiler</key>\n\t<string>com.apple.compilers.llvm.clang.1_0</string>\n\t<key>DTPlatformBuild</key>\n\t<string>10A255</string>\n\t<key>DTPlatformVersion</key>\n\t<string>GM</string>\n\t<key>DTSDKBuild</key>\n\t<string>15A278</string>\n\t<key>DTSDKName</key>\n\t<string>macosx10.11</string>\n\t<key>DTXcode</key>\n\t<string>1000</string>\n\t<key>DTXcodeBuild</key>\n\t<string>10A255</string>\n\t<key>IOKitPersonalities</key>\n\t<dict>\n\t\t<key>Intel ACPI Sensor Hub Enabler</key>\n\t\t<dict>\n\t\t\t<key>CFBundleIdentifier</key>\n\t\t\t<string>com.alexandred.VoodooI2CHID</string>\n\t\t\t<key>IOClass</key>\n\t\t\t<string>VoodooI2CSensorHubEnabler</string>\n\t\t\t<key>IONameMatch</key>\n\t\t\t<array>\n\t\t\t\t<string>INT33D0</string>\n\t\t\t</array>\n\t\t\t<key>IOProviderClass</key>\n\t\t\t<string>IOACPIPlatformDevice</string>\n\t\t</dict>\n\t\t<key>Sensor Hub Event Driver</key>\n\t\t<dict>\n\t\t\t<key>CFBundleIdentifier</key>\n\t\t\t<string>com.alexandred.VoodooI2CHID</string>\n\t\t\t<key>DeviceUsagePairs</key>\n\t\t\t<array>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>DeviceUsage</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>DeviceUsagePage</key>\n\t\t\t\t\t<integer>32</integer>\n\t\t\t\t</dict>\n\t\t\t</array>\n\t\t\t<key>IOClass</key>\n\t\t\t<string>VoodooI2CSensorHubEventDriver</string>\n\t\t\t<key>IOProbeScore</key>\n\t\t\t<integer>100</integer>\n\t\t\t<key>IOProviderClass</key>\n\t\t\t<string>IOHIDInterface</string>\n\t\t</dict>\n\t\t<key>VoodooI2CHIDDevice</key>\n\t\t<dict>\n\t\t\t<key>CFBundleIdentifier</key>\n\t\t\t<string>com.alexandred.VoodooI2CHID</string>\n\t\t\t<key>IOClass</key>\n\t\t\t<string>VoodooI2CHIDDevice</string>\n\t\t\t<key>IOProbeScore</key>\n\t\t\t<integer>100</integer>\n\t\t\t<key>IOPropertyMatch</key>\n\t\t\t<dict>\n\t\t\t\t<key>compatible</key>\n\t\t\t\t<string>PNP0C50</string>\n\t\t\t</dict>\n\t\t\t<key>IOProviderClass</key>\n\t\t\t<string>VoodooI2CDeviceNub</string>\n\t\t</dict>\n\t\t<key>VoodooI2CHIDDevice Generic Mouse HID Event Driver</key>\n\t\t<dict>\n\t\t\t<key>CFBundleIdentifier</key>\n\t\t\t<string>com.alexandred.VoodooI2CHID</string>\n\t\t\t<key>DeviceUsagePairs</key>\n\t\t\t<array>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>DeviceUsage</key>\n\t\t\t\t\t<integer>2</integer>\n\t\t\t\t\t<key>DeviceUsagePage</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t</dict>\n\t\t\t</array>\n\t\t\t<key>HIDAccelCurves</key>\n\t\t\t<array>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>HIDAccelGainLinear</key>\n\t\t\t\t\t<integer>65536</integer>\n\t\t\t\t\t<key>HIDAccelIndex</key>\n\t\t\t\t\t<integer>0</integer>\n\t\t\t\t\t<key>HIDAccelTangentSpeedLinear</key>\n\t\t\t\t\t<integer>524288</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>HIDAccelGainCubic</key>\n\t\t\t\t\t<integer>5243</integer>\n\t\t\t\t\t<key>HIDAccelGainLinear</key>\n\t\t\t\t\t<integer>60293</integer>\n\t\t\t\t\t<key>HIDAccelGainParabolic</key>\n\t\t\t\t\t<integer>26214</integer>\n\t\t\t\t\t<key>HIDAccelIndex</key>\n\t\t\t\t\t<integer>8192</integer>\n\t\t\t\t\t<key>HIDAccelTangentSpeedLinear</key>\n\t\t\t\t\t<integer>537395</integer>\n\t\t\t\t\t<key>HIDAccelTangentSpeedParabolicRoot</key>\n\t\t\t\t\t<integer>1245184</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>HIDAccelGainCubic</key>\n\t\t\t\t\t<integer>6554</integer>\n\t\t\t\t\t<key>HIDAccelGainLinear</key>\n\t\t\t\t\t<integer>60948</integer>\n\t\t\t\t\t<key>HIDAccelGainParabolic</key>\n\t\t\t\t\t<integer>36045</integer>\n\t\t\t\t\t<key>HIDAccelIndex</key>\n\t\t\t\t\t<integer>32768</integer>\n\t\t\t\t\t<key>HIDAccelTangentSpeedLinear</key>\n\t\t\t\t\t<integer>543949</integer>\n\t\t\t\t\t<key>HIDAccelTangentSpeedParabolicRoot</key>\n\t\t\t\t\t<integer>1179648</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>HIDAccelGainCubic</key>\n\t\t\t\t\t<integer>7864</integer>\n\t\t\t\t\t<key>HIDAccelGainLinear</key>\n\t\t\t\t\t<integer>61604</integer>\n\t\t\t\t\t<key>HIDAccelGainParabolic</key>\n\t\t\t\t\t<integer>46531</integer>\n\t\t\t\t\t<key>HIDAccelIndex</key>\n\t\t\t\t\t<integer>45056</integer>\n\t\t\t\t\t<key>HIDAccelTangentSpeedLinear</key>\n\t\t\t\t\t<integer>550502</integer>\n\t\t\t\t\t<key>HIDAccelTangentSpeedParabolicRoot</key>\n\t\t\t\t\t<integer>1114112</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>HIDAccelGainCubic</key>\n\t\t\t\t\t<integer>9830</integer>\n\t\t\t\t\t<key>HIDAccelGainLinear</key>\n\t\t\t\t\t<integer>62259</integer>\n\t\t\t\t\t<key>HIDAccelGainParabolic</key>\n\t\t\t\t\t<integer>57672</integer>\n\t\t\t\t\t<key>HIDAccelIndex</key>\n\t\t\t\t\t<integer>57344</integer>\n\t\t\t\t\t<key>HIDAccelTangentSpeedLinear</key>\n\t\t\t\t\t<integer>557056</integer>\n\t\t\t\t\t<key>HIDAccelTangentSpeedParabolicRoot</key>\n\t\t\t\t\t<integer>1048576</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>HIDAccelGainCubic</key>\n\t\t\t\t\t<integer>11796</integer>\n\t\t\t\t\t<key>HIDAccelGainLinear</key>\n\t\t\t\t\t<integer>62915</integer>\n\t\t\t\t\t<key>HIDAccelGainParabolic</key>\n\t\t\t\t\t<integer>69468</integer>\n\t\t\t\t\t<key>HIDAccelIndex</key>\n\t\t\t\t\t<integer>65536</integer>\n\t\t\t\t\t<key>HIDAccelTangentSpeedLinear</key>\n\t\t\t\t\t<integer>563610</integer>\n\t\t\t\t\t<key>HIDAccelTangentSpeedParabolicRoot</key>\n\t\t\t\t\t<integer>983040</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>HIDAccelGainCubic</key>\n\t\t\t\t\t<integer>14418</integer>\n\t\t\t\t\t<key>HIDAccelGainLinear</key>\n\t\t\t\t\t<integer>63570</integer>\n\t\t\t\t\t<key>HIDAccelGainParabolic</key>\n\t\t\t\t\t<integer>81920</integer>\n\t\t\t\t\t<key>HIDAccelIndex</key>\n\t\t\t\t\t<integer>98304</integer>\n\t\t\t\t\t<key>HIDAccelTangentSpeedLinear</key>\n\t\t\t\t\t<integer>570163</integer>\n\t\t\t\t\t<key>HIDAccelTangentSpeedParabolicRoot</key>\n\t\t\t\t\t<integer>917504</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>HIDAccelGainCubic</key>\n\t\t\t\t\t<integer>17695</integer>\n\t\t\t\t\t<key>HIDAccelGainLinear</key>\n\t\t\t\t\t<integer>64225</integer>\n\t\t\t\t\t<key>HIDAccelGainParabolic</key>\n\t\t\t\t\t<integer>95027</integer>\n\t\t\t\t\t<key>HIDAccelIndex</key>\n\t\t\t\t\t<integer>131072</integer>\n\t\t\t\t\t<key>HIDAccelTangentSpeedLinear</key>\n\t\t\t\t\t<integer>576717</integer>\n\t\t\t\t\t<key>HIDAccelTangentSpeedParabolicRoot</key>\n\t\t\t\t\t<integer>851968</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>HIDAccelGainCubic</key>\n\t\t\t\t\t<integer>21627</integer>\n\t\t\t\t\t<key>HIDAccelGainLinear</key>\n\t\t\t\t\t<integer>64881</integer>\n\t\t\t\t\t<key>HIDAccelGainParabolic</key>\n\t\t\t\t\t<integer>108790</integer>\n\t\t\t\t\t<key>HIDAccelIndex</key>\n\t\t\t\t\t<integer>163840</integer>\n\t\t\t\t\t<key>HIDAccelTangentSpeedLinear</key>\n\t\t\t\t\t<integer>583270</integer>\n\t\t\t\t\t<key>HIDAccelTangentSpeedParabolicRoot</key>\n\t\t\t\t\t<integer>786432</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>HIDAccelGainCubic</key>\n\t\t\t\t\t<integer>26214</integer>\n\t\t\t\t\t<key>HIDAccelGainLinear</key>\n\t\t\t\t\t<integer>65536</integer>\n\t\t\t\t\t<key>HIDAccelGainParabolic</key>\n\t\t\t\t\t<integer>123208</integer>\n\t\t\t\t\t<key>HIDAccelIndex</key>\n\t\t\t\t\t<integer>196608</integer>\n\t\t\t\t\t<key>HIDAccelTangentSpeedLinear</key>\n\t\t\t\t\t<integer>589824</integer>\n\t\t\t\t\t<key>HIDAccelTangentSpeedParabolicRoot</key>\n\t\t\t\t\t<integer>786432</integer>\n\t\t\t\t</dict>\n\t\t\t</array>\n\t\t\t<key>IOClass</key>\n\t\t\t<string>IOHIDEventDriver</string>\n\t\t\t<key>IOProbeScore</key>\n\t\t\t<integer>100</integer>\n\t\t\t<key>IOPropertyMatch</key>\n\t\t\t<dict>\n\t\t\t\t<key>Transport</key>\n\t\t\t\t<string>I2C</string>\n\t\t\t</dict>\n\t\t\t<key>IOProviderClass</key>\n\t\t\t<string>IOHIDInterface</string>\n\t\t</dict>\n\t\t<key>VoodooI2CHIDDevice Multitouch HID Event Driver</key>\n\t\t<dict>\n\t\t\t<key>CFBundleIdentifier</key>\n\t\t\t<string>com.alexandred.VoodooI2CHID</string>\n\t\t\t<key>DeviceUsagePairs</key>\n\t\t\t<array>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>DeviceUsage</key>\n\t\t\t\t\t<integer>4</integer>\n\t\t\t\t\t<key>DeviceUsagePage</key>\n\t\t\t\t\t<integer>13</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>DeviceUsage</key>\n\t\t\t\t\t<integer>5</integer>\n\t\t\t\t\t<key>DeviceUsagePage</key>\n\t\t\t\t\t<integer>13</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>DeviceUsage</key>\n\t\t\t\t\t<integer>2</integer>\n\t\t\t\t\t<key>DeviceUsagePage</key>\n\t\t\t\t\t<integer>13</integer>\n\t\t\t\t</dict>\n\t\t\t</array>\n\t\t\t<key>IOClass</key>\n\t\t\t<string>VoodooI2CMultitouchHIDEventDriver</string>\n\t\t\t<key>IOProbeScore</key>\n\t\t\t<integer>200</integer>\n\t\t\t<key>IOProviderClass</key>\n\t\t\t<string>IOHIDInterface</string>\n\t\t</dict>\n\t\t<key>VoodooI2CHIDDevice Precision Touchpad HID Event Driver</key>\n\t\t<dict>\n\t\t\t<key>CFBundleIdentifier</key>\n\t\t\t<string>com.alexandred.VoodooI2CHID</string>\n\t\t\t<key>DeviceUsagePairs</key>\n\t\t\t<array>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>DeviceUsage</key>\n\t\t\t\t\t<integer>5</integer>\n\t\t\t\t\t<key>DeviceUsagePage</key>\n\t\t\t\t\t<integer>13</integer>\n\t\t\t\t</dict>\n\t\t\t</array>\n\t\t\t<key>IOClass</key>\n\t\t\t<string>VoodooI2CPrecisionTouchpadHIDEventDriver</string>\n\t\t\t<key>IOProbeScore</key>\n\t\t\t<integer>300</integer>\n\t\t\t<key>IOPropertyMatch</key>\n\t\t\t<dict>\n\t\t\t\t<key>Transport</key>\n\t\t\t\t<string>I2C</string>\n\t\t\t</dict>\n\t\t\t<key>IOProviderClass</key>\n\t\t\t<string>IOHIDInterface</string>\n\t\t\t<key>ProcessBluetoothMouseStopsTrackpad</key>\n\t\t\t<false/>\n\t\t\t<key>ProcessUSBMouseStopsTrackpad</key>\n\t\t\t<false/>\n\t\t\t<key>QuietTimeAfterTyping</key>\n\t\t\t<integer>500</integer>\n\t\t\t<key>RM,deliverNotifications</key>\n\t\t\t<true/>\n\t\t</dict>\n\t\t<key>VoodooI2CHIDDevice Stylus HID Event Driver</key>\n\t\t<dict>\n\t\t\t<key>CFBundleIdentifier</key>\n\t\t\t<string>com.alexandred.VoodooI2CHID</string>\n\t\t\t<key>DeviceUsagePairs</key>\n\t\t\t<array>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>DeviceUsage</key>\n\t\t\t\t\t<integer>2</integer>\n\t\t\t\t\t<key>DeviceUsagePage</key>\n\t\t\t\t\t<integer>13</integer>\n\t\t\t\t</dict>\n\t\t\t</array>\n\t\t\t<key>IOClass</key>\n\t\t\t<string>VoodooI2CStylusHIDEventDriver</string>\n\t\t\t<key>IOProbeScore</key>\n\t\t\t<integer>300</integer>\n\t\t\t<key>IOProviderClass</key>\n\t\t\t<string>IOHIDInterface</string>\n\t\t</dict>\n\t\t<key>VoodooI2CHIDDevice Touchscreen HID Event Driver</key>\n\t\t<dict>\n\t\t\t<key>CFBundleIdentifier</key>\n\t\t\t<string>com.alexandred.VoodooI2CHID</string>\n\t\t\t<key>DeviceUsagePairs</key>\n\t\t\t<array>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>DeviceUsage</key>\n\t\t\t\t\t<integer>4</integer>\n\t\t\t\t\t<key>DeviceUsagePage</key>\n\t\t\t\t\t<integer>13</integer>\n\t\t\t\t</dict>\n\t\t\t</array>\n\t\t\t<key>IOClass</key>\n\t\t\t<string>VoodooI2CTouchscreenHIDEventDriver</string>\n\t\t\t<key>IOProbeScore</key>\n\t\t\t<integer>400</integer>\n\t\t\t<key>IOProviderClass</key>\n\t\t\t<string>IOHIDInterface</string>\n\t\t</dict>\n\t</dict>\n\t<key>NSHumanReadableCopyright</key>\n\t<string>Copyright © 2017 Alexandre Daoud. All rights reserved.</string>\n\t<key>OSBundleLibraries</key>\n\t<dict>\n\t\t<key>com.alexandred.VoodooI2C</key>\n\t\t<string>2.0</string>\n\t\t<key>com.apple.iokit.IOACPIFamily</key>\n\t\t<string>1.4</string>\n\t\t<key>com.apple.iokit.IOGraphicsFamily</key>\n\t\t<string>1.0.0b1</string>\n\t\t<key>com.apple.iokit.IOHIDFamily</key>\n\t\t<string>2.0</string>\n\t\t<key>com.apple.kpi.iokit</key>\n\t\t<string>14</string>\n\t\t<key>com.apple.kpi.libkern</key>\n\t\t<string>14</string>\n\t\t<key>com.apple.kpi.mach</key>\n\t\t<string>13.0</string>\n\t</dict>\n\t<key>OSBundleRequired</key>\n\t<string>Safe Boot</string>\n</dict>\n</plist>\n"
  },
  {
    "path": "EFI/CLOVER/kexts/Other/VoodooI2C_v2.1.4.kext/Contents/Info.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>BuildMachineOSBuild</key>\n\t<string>17G2112</string>\n\t<key>CFBundleDevelopmentRegion</key>\n\t<string>en</string>\n\t<key>CFBundleExecutable</key>\n\t<string>VoodooI2C</string>\n\t<key>CFBundleIdentifier</key>\n\t<string>com.alexandred.VoodooI2C</string>\n\t<key>CFBundleInfoDictionaryVersion</key>\n\t<string>6.0</string>\n\t<key>CFBundleName</key>\n\t<string>VoodooI2C</string>\n\t<key>CFBundlePackageType</key>\n\t<string>KEXT</string>\n\t<key>CFBundleShortVersionString</key>\n\t<string>2.1.4</string>\n\t<key>CFBundleSupportedPlatforms</key>\n\t<array>\n\t\t<string>MacOSX</string>\n\t</array>\n\t<key>CFBundleVersion</key>\n\t<string>2.1.4</string>\n\t<key>DTCompiler</key>\n\t<string>com.apple.compilers.llvm.clang.1_0</string>\n\t<key>DTPlatformBuild</key>\n\t<string>10A255</string>\n\t<key>DTPlatformVersion</key>\n\t<string>GM</string>\n\t<key>DTSDKBuild</key>\n\t<string>16C58</string>\n\t<key>DTSDKName</key>\n\t<string>macosx10.12</string>\n\t<key>DTXcode</key>\n\t<string>1000</string>\n\t<key>DTXcodeBuild</key>\n\t<string>10A255</string>\n\t<key>IOKitPersonalities</key>\n\t<dict>\n\t\t<key>Custom MT2 Personality</key>\n\t\t<dict>\n\t\t\t<key>ApplePreferenceCapability</key>\n\t\t\t<integer>2</integer>\n\t\t\t<key>ApplePreferenceIdentifier</key>\n\t\t\t<string>com.apple.AppleMultitouchTrackpad</string>\n\t\t\t<key>ApplePreferencesDefaultPreferences</key>\n\t\t\t<dict>\n\t\t\t\t<key>ActuateDetents</key>\n\t\t\t\t<integer>0</integer>\n\t\t\t\t<key>Clicking</key>\n\t\t\t\t<integer>1</integer>\n\t\t\t\t<key>DragLock</key>\n\t\t\t\t<integer>0</integer>\n\t\t\t\t<key>Dragging</key>\n\t\t\t\t<integer>0</integer>\n\t\t\t\t<key>FirstClickThreshold</key>\n\t\t\t\t<integer>1</integer>\n\t\t\t\t<key>ForceSuppressed</key>\n\t\t\t\t<true/>\n\t\t\t\t<key>SecondClickThreshold</key>\n\t\t\t\t<integer>1</integer>\n\t\t\t\t<key>TrackpadCornerSecondaryClick</key>\n\t\t\t\t<integer>0</integer>\n\t\t\t\t<key>TrackpadFiveFingerPinchGesture</key>\n\t\t\t\t<integer>2</integer>\n\t\t\t\t<key>TrackpadFourFingerHorizSwipeGesture</key>\n\t\t\t\t<integer>2</integer>\n\t\t\t\t<key>TrackpadFourFingerPinchGesture</key>\n\t\t\t\t<integer>2</integer>\n\t\t\t\t<key>TrackpadFourFingerVertSwipeGesture</key>\n\t\t\t\t<integer>2</integer>\n\t\t\t\t<key>TrackpadHorizScroll</key>\n\t\t\t\t<integer>1</integer>\n\t\t\t\t<key>TrackpadMomentumScroll</key>\n\t\t\t\t<true/>\n\t\t\t\t<key>TrackpadPinch</key>\n\t\t\t\t<integer>1</integer>\n\t\t\t\t<key>TrackpadRightClick</key>\n\t\t\t\t<true/>\n\t\t\t\t<key>TrackpadRotate</key>\n\t\t\t\t<integer>1</integer>\n\t\t\t\t<key>TrackpadScroll</key>\n\t\t\t\t<true/>\n\t\t\t\t<key>TrackpadThreeFingerDrag</key>\n\t\t\t\t<false/>\n\t\t\t\t<key>TrackpadThreeFingerHorizSwipeGesture</key>\n\t\t\t\t<integer>2</integer>\n\t\t\t\t<key>TrackpadThreeFingerVertSwipeGesture</key>\n\t\t\t\t<integer>2</integer>\n\t\t\t</dict>\n\t\t\t<key>CFBundleIdentifier</key>\n\t\t\t<string>com.apple.driver.AppleTopCaseHIDEventDriver</string>\n\t\t\t<key>DefaultMultitouchProperties</key>\n\t\t\t<dict>\n\t\t\t\t<key>ActuationSupported</key>\n\t\t\t\t<false/>\n\t\t\t\t<key>ExtractAndPostDeviceButtonState</key>\n\t\t\t\t<true/>\n\t\t\t\t<key>ForceSupported</key>\n\t\t\t\t<false/>\n\t\t\t\t<key>HIDServiceSupport</key>\n\t\t\t\t<true/>\n\t\t\t\t<key>IOCFPlugInTypes</key>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>0516B563-B15B-11DA-96EB-0014519758EF</key>\n\t\t\t\t\t<string>AppleMultitouchDriver.kext/Contents/PlugIns/MultitouchHID.plugin</string>\n\t\t\t\t</dict>\n\t\t\t\t<key>MT Built-In</key>\n\t\t\t\t<true/>\n\t\t\t\t<key>MTHIDDevice</key>\n\t\t\t\t<true/>\n\t\t\t\t<key>MTPowerStatsDisable</key>\n\t\t\t\t<true/>\n\t\t\t\t<key>SupportsGestureScrolling</key>\n\t\t\t\t<true/>\n\t\t\t\t<key>TrackpadFourFingerGestures</key>\n\t\t\t\t<true/>\n\t\t\t\t<key>TrackpadMomentumScroll</key>\n\t\t\t\t<true/>\n\t\t\t\t<key>TrackpadSecondaryClickCorners</key>\n\t\t\t\t<true/>\n\t\t\t\t<key>TrackpadThreeFingerDrag</key>\n\t\t\t\t<true/>\n\t\t\t\t<key>parser-options</key>\n\t\t\t\t<integer>39</integer>\n\t\t\t\t<key>parser-type</key>\n\t\t\t\t<integer>1000</integer>\n\t\t\t</dict>\n\t\t\t<key>DeviceUsagePairs</key>\n\t\t\t<array>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>DeviceUsage</key>\n\t\t\t\t\t<integer>2</integer>\n\t\t\t\t\t<key>DeviceUsagePage</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t</dict>\n\t\t\t</array>\n\t\t\t<key>DoReportIntervalHack</key>\n\t\t\t<true/>\n\t\t\t<key>HIDAccelCurves</key>\n\t\t\t<array>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>HIDAccelGainLinear</key>\n\t\t\t\t\t<integer>65536</integer>\n\t\t\t\t\t<key>HIDAccelIndex</key>\n\t\t\t\t\t<integer>0</integer>\n\t\t\t\t\t<key>HIDAccelTangentSpeedLinear</key>\n\t\t\t\t\t<integer>484966</integer>\n\t\t\t\t\t<key>HIDAccelTangentSpeedParabolicRoot</key>\n\t\t\t\t\t<integer>1376256</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>HIDAccelGainCubic</key>\n\t\t\t\t\t<integer>5243</integer>\n\t\t\t\t\t<key>HIDAccelGainLinear</key>\n\t\t\t\t\t<integer>64881</integer>\n\t\t\t\t\t<key>HIDAccelGainParabolic</key>\n\t\t\t\t\t<integer>32768</integer>\n\t\t\t\t\t<key>HIDAccelIndex</key>\n\t\t\t\t\t<integer>8192</integer>\n\t\t\t\t\t<key>HIDAccelTangentSpeedLinear</key>\n\t\t\t\t\t<integer>478413</integer>\n\t\t\t\t\t<key>HIDAccelTangentSpeedParabolicRoot</key>\n\t\t\t\t\t<integer>1310720</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>HIDAccelGainCubic</key>\n\t\t\t\t\t<integer>6554</integer>\n\t\t\t\t\t<key>HIDAccelGainLinear</key>\n\t\t\t\t\t<integer>64225</integer>\n\t\t\t\t\t<key>HIDAccelGainParabolic</key>\n\t\t\t\t\t<integer>43254</integer>\n\t\t\t\t\t<key>HIDAccelIndex</key>\n\t\t\t\t\t<integer>32768</integer>\n\t\t\t\t\t<key>HIDAccelTangentSpeedLinear</key>\n\t\t\t\t\t<integer>471859</integer>\n\t\t\t\t\t<key>HIDAccelTangentSpeedParabolicRoot</key>\n\t\t\t\t\t<integer>1245184</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>HIDAccelGainCubic</key>\n\t\t\t\t\t<integer>7864</integer>\n\t\t\t\t\t<key>HIDAccelGainLinear</key>\n\t\t\t\t\t<integer>62915</integer>\n\t\t\t\t\t<key>HIDAccelGainParabolic</key>\n\t\t\t\t\t<integer>54395</integer>\n\t\t\t\t\t<key>HIDAccelIndex</key>\n\t\t\t\t\t<integer>45056</integer>\n\t\t\t\t\t<key>HIDAccelTangentSpeedLinear</key>\n\t\t\t\t\t<integer>465306</integer>\n\t\t\t\t\t<key>HIDAccelTangentSpeedParabolicRoot</key>\n\t\t\t\t\t<integer>1179648</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>HIDAccelGainCubic</key>\n\t\t\t\t\t<integer>9830</integer>\n\t\t\t\t\t<key>HIDAccelGainLinear</key>\n\t\t\t\t\t<integer>61604</integer>\n\t\t\t\t\t<key>HIDAccelGainParabolic</key>\n\t\t\t\t\t<integer>65536</integer>\n\t\t\t\t\t<key>HIDAccelIndex</key>\n\t\t\t\t\t<integer>57344</integer>\n\t\t\t\t\t<key>HIDAccelTangentSpeedLinear</key>\n\t\t\t\t\t<integer>458752</integer>\n\t\t\t\t\t<key>HIDAccelTangentSpeedParabolicRoot</key>\n\t\t\t\t\t<integer>1114112</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>HIDAccelGainCubic</key>\n\t\t\t\t\t<integer>11796</integer>\n\t\t\t\t\t<key>HIDAccelGainLinear</key>\n\t\t\t\t\t<integer>60293</integer>\n\t\t\t\t\t<key>HIDAccelGainParabolic</key>\n\t\t\t\t\t<integer>75366</integer>\n\t\t\t\t\t<key>HIDAccelIndex</key>\n\t\t\t\t\t<integer>65536</integer>\n\t\t\t\t\t<key>HIDAccelTangentSpeedLinear</key>\n\t\t\t\t\t<integer>458752</integer>\n\t\t\t\t\t<key>HIDAccelTangentSpeedParabolicRoot</key>\n\t\t\t\t\t<integer>1048576</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>HIDAccelGainCubic</key>\n\t\t\t\t\t<integer>13763</integer>\n\t\t\t\t\t<key>HIDAccelGainLinear</key>\n\t\t\t\t\t<integer>58327</integer>\n\t\t\t\t\t<key>HIDAccelGainParabolic</key>\n\t\t\t\t\t<integer>85197</integer>\n\t\t\t\t\t<key>HIDAccelIndex</key>\n\t\t\t\t\t<integer>98304</integer>\n\t\t\t\t\t<key>HIDAccelTangentSpeedLinear</key>\n\t\t\t\t\t<integer>458752</integer>\n\t\t\t\t\t<key>HIDAccelTangentSpeedParabolicRoot</key>\n\t\t\t\t\t<integer>983040</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>HIDAccelGainCubic</key>\n\t\t\t\t\t<integer>15729</integer>\n\t\t\t\t\t<key>HIDAccelGainLinear</key>\n\t\t\t\t\t<integer>56361</integer>\n\t\t\t\t\t<key>HIDAccelGainParabolic</key>\n\t\t\t\t\t<integer>95027</integer>\n\t\t\t\t\t<key>HIDAccelIndex</key>\n\t\t\t\t\t<integer>131072</integer>\n\t\t\t\t\t<key>HIDAccelTangentSpeedLinear</key>\n\t\t\t\t\t<integer>458752</integer>\n\t\t\t\t\t<key>HIDAccelTangentSpeedParabolicRoot</key>\n\t\t\t\t\t<integer>917504</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>HIDAccelGainCubic</key>\n\t\t\t\t\t<integer>18350</integer>\n\t\t\t\t\t<key>HIDAccelGainLinear</key>\n\t\t\t\t\t<integer>54395</integer>\n\t\t\t\t\t<key>HIDAccelGainParabolic</key>\n\t\t\t\t\t<integer>108790</integer>\n\t\t\t\t\t<key>HIDAccelIndex</key>\n\t\t\t\t\t<integer>163840</integer>\n\t\t\t\t\t<key>HIDAccelTangentSpeedLinear</key>\n\t\t\t\t\t<integer>458752</integer>\n\t\t\t\t\t<key>HIDAccelTangentSpeedParabolicRoot</key>\n\t\t\t\t\t<integer>851968</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>HIDAccelGainCubic</key>\n\t\t\t\t\t<integer>23593</integer>\n\t\t\t\t\t<key>HIDAccelGainLinear</key>\n\t\t\t\t\t<integer>65536</integer>\n\t\t\t\t\t<key>HIDAccelGainParabolic</key>\n\t\t\t\t\t<integer>123208</integer>\n\t\t\t\t\t<key>HIDAccelIndex</key>\n\t\t\t\t\t<integer>196608</integer>\n\t\t\t\t\t<key>HIDAccelTangentSpeedLinear</key>\n\t\t\t\t\t<integer>458752</integer>\n\t\t\t\t\t<key>HIDAccelTangentSpeedParabolicRoot</key>\n\t\t\t\t\t<integer>786432</integer>\n\t\t\t\t</dict>\n\t\t\t</array>\n\t\t\t<key>HIDDisallowRemappingOfPrimaryClick</key>\n\t\t\t<true/>\n\t\t\t<key>HIDPointerAccelerationTable</key>\n\t\t\t<data>\n\t\t\tAACAAFVTQioABwAAAAAAAgAEAAAABAAAABAAAAAQAAAAACAAAA0A\n\t\t\tAIAAAACAAAABQAAAAYAAAAIAAAAC4AAAAwAAAATgAAAEAAAAB0AA\n\t\t\tAAUAAAAKAAAABgAAAA1AAAAIAAAAFgAAAArAAAAjAAAADQAAAC8A\n\t\t\tAAAOwAAAOMAAABBAAABBAAAAEcAAAEjAAAAAUAAADwAAgAAAAIAA\n\t\t\tAAEAAAABQAAAAYAAAAJAAAACAAAAA4AAAAKAAAAE4AAAAwAAAAZg\n\t\t\tAAAEAAAACgAAAAUAAAAOQAAABgAAABNAAAAIAAAAHsAAAArAAAAu\n\t\t\twAAADQAAADyAAAAOwAAARwAAABBAAABPwAAAEcAAAFiAAAAAgAAA\n\t\t\tDwAAgAAAAIAAAAEAAAABYAAAAYAAAAKgAAACAAAABEAAAAKAAAAG\n\t\t\tAAAAAwAAAAgAAAAEAAAADQAAAAUAAAASwAAABgAAABkAAAAIAAAA\n\t\t\tKAAAAArAAAA7wAAADQAAAEuAAAAOwAAAV0AAABBAAABgQAAAEcAA\n\t\t\tAGkAAAAAsAAADwAAgAAAAIAAAAEAAAABoAAAAYAAAAMAAAACAAAA\n\t\t\tBQAAAAKAAAAHQAAAAwAAAAnAAAAEAAAAEEAAAAUAAAAXgAAABgAA\n\t\t\tAB/AAAAIAAAAMgAAAArAAABKAAAADQAAAFyAAAAOwAAAaQAAABBA\n\t\t\tAABywAAAEcAAAHrAAAAA4AAADwAAgAAAAKAAAAEAAAABwAAAAYAA\n\t\t\tAANgAAACAAAABeAAAAKAAAAIoAAAAwAAAAvAAAAEAAAAE8AAAAUA\n\t\t\tAAAdQAAABgAAACfAAAAIAAAAPcAAAArAAABZAAAADQAAAG3AAAAO\n\t\t\twAAAe0AAABBAAACFQAAAEcAAAIxAAAABAAAADwAAgAAAAMAAAAEA\n\t\t\tAAACAAAAAYAAAAPgAAACAAAABsAAAAKAAAAKQAAAAwAAAA5gAAAE\n\t\t\tAAAAGMAAAAUAAAAkwAAABgAAADLAAAAIAAAATUAAAArAAABugAAA\n\t\t\tDQAAAIMAAAAOwAAAj0AAABBAAACXAAAAEcAAAJxA\n\t\t\t</data>\n\t\t\t<key>HIDPointerAccelerationType</key>\n\t\t\t<string>HIDTrackpadAcceleration</string>\n\t\t\t<key>HIDScrollAccelCurves</key>\n\t\t\t<array>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>HIDAccelGainLinear</key>\n\t\t\t\t\t<integer>65536</integer>\n\t\t\t\t\t<key>HIDAccelIndex</key>\n\t\t\t\t\t<integer>0</integer>\n\t\t\t\t\t<key>HIDAccelTangentSpeedLinear</key>\n\t\t\t\t\t<integer>393216</integer>\n\t\t\t\t\t<key>HIDAccelTangentSpeedParabolicRoot</key>\n\t\t\t\t\t<integer>786432</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>HIDAccelGainLinear</key>\n\t\t\t\t\t<integer>62259</integer>\n\t\t\t\t\t<key>HIDAccelGainParabolic</key>\n\t\t\t\t\t<integer>39322</integer>\n\t\t\t\t\t<key>HIDAccelIndex</key>\n\t\t\t\t\t<integer>8192</integer>\n\t\t\t\t\t<key>HIDAccelTangentSpeedLinear</key>\n\t\t\t\t\t<integer>406323</integer>\n\t\t\t\t\t<key>HIDAccelTangentSpeedParabolicRoot</key>\n\t\t\t\t\t<integer>786432</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>HIDAccelGainLinear</key>\n\t\t\t\t\t<integer>58982</integer>\n\t\t\t\t\t<key>HIDAccelGainParabolic</key>\n\t\t\t\t\t<integer>58982</integer>\n\t\t\t\t\t<key>HIDAccelIndex</key>\n\t\t\t\t\t<integer>32768</integer>\n\t\t\t\t\t<key>HIDAccelTangentSpeedLinear</key>\n\t\t\t\t\t<integer>419430</integer>\n\t\t\t\t\t<key>HIDAccelTangentSpeedParabolicRoot</key>\n\t\t\t\t\t<integer>786432</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>HIDAccelGainLinear</key>\n\t\t\t\t\t<integer>55706</integer>\n\t\t\t\t\t<key>HIDAccelGainParabolic</key>\n\t\t\t\t\t<integer>78643</integer>\n\t\t\t\t\t<key>HIDAccelIndex</key>\n\t\t\t\t\t<integer>45056</integer>\n\t\t\t\t\t<key>HIDAccelTangentSpeedLinear</key>\n\t\t\t\t\t<integer>432538</integer>\n\t\t\t\t\t<key>HIDAccelTangentSpeedParabolicRoot</key>\n\t\t\t\t\t<integer>786432</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>HIDAccelGainLinear</key>\n\t\t\t\t\t<integer>52429</integer>\n\t\t\t\t\t<key>HIDAccelGainParabolic</key>\n\t\t\t\t\t<integer>91750</integer>\n\t\t\t\t\t<key>HIDAccelIndex</key>\n\t\t\t\t\t<integer>57344</integer>\n\t\t\t\t\t<key>HIDAccelTangentSpeedLinear</key>\n\t\t\t\t\t<integer>445645</integer>\n\t\t\t\t\t<key>HIDAccelTangentSpeedParabolicRoot</key>\n\t\t\t\t\t<integer>786432</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>HIDAccelGainLinear</key>\n\t\t\t\t\t<integer>49152</integer>\n\t\t\t\t\t<key>HIDAccelGainParabolic</key>\n\t\t\t\t\t<integer>104858</integer>\n\t\t\t\t\t<key>HIDAccelIndex</key>\n\t\t\t\t\t<integer>65536</integer>\n\t\t\t\t\t<key>HIDAccelTangentSpeedLinear</key>\n\t\t\t\t\t<integer>458752</integer>\n\t\t\t\t\t<key>HIDAccelTangentSpeedParabolicRoot</key>\n\t\t\t\t\t<integer>786432</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>HIDAccelGainLinear</key>\n\t\t\t\t\t<integer>45875</integer>\n\t\t\t\t\t<key>HIDAccelGainParabolic</key>\n\t\t\t\t\t<integer>117965</integer>\n\t\t\t\t\t<key>HIDAccelIndex</key>\n\t\t\t\t\t<integer>98304</integer>\n\t\t\t\t\t<key>HIDAccelTangentSpeedLinear</key>\n\t\t\t\t\t<integer>471859</integer>\n\t\t\t\t\t<key>HIDAccelTangentSpeedParabolicRoot</key>\n\t\t\t\t\t<integer>786432</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>HIDAccelGainLinear</key>\n\t\t\t\t\t<integer>42598</integer>\n\t\t\t\t\t<key>HIDAccelGainParabolic</key>\n\t\t\t\t\t<integer>131072</integer>\n\t\t\t\t\t<key>HIDAccelIndex</key>\n\t\t\t\t\t<integer>131072</integer>\n\t\t\t\t\t<key>HIDAccelTangentSpeedLinear</key>\n\t\t\t\t\t<integer>484966</integer>\n\t\t\t\t\t<key>HIDAccelTangentSpeedParabolicRoot</key>\n\t\t\t\t\t<integer>786432</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>HIDAccelGainLinear</key>\n\t\t\t\t\t<integer>39322</integer>\n\t\t\t\t\t<key>HIDAccelGainParabolic</key>\n\t\t\t\t\t<integer>144179</integer>\n\t\t\t\t\t<key>HIDAccelIndex</key>\n\t\t\t\t\t<integer>163840</integer>\n\t\t\t\t\t<key>HIDAccelTangentSpeedLinear</key>\n\t\t\t\t\t<integer>498074</integer>\n\t\t\t\t\t<key>HIDAccelTangentSpeedParabolicRoot</key>\n\t\t\t\t\t<integer>786432</integer>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>HIDAccelGainLinear</key>\n\t\t\t\t\t<integer>36045</integer>\n\t\t\t\t\t<key>HIDAccelGainParabolic</key>\n\t\t\t\t\t<integer>157286</integer>\n\t\t\t\t\t<key>HIDAccelIndex</key>\n\t\t\t\t\t<integer>196608</integer>\n\t\t\t\t\t<key>HIDAccelTangentSpeedLinear</key>\n\t\t\t\t\t<integer>511181</integer>\n\t\t\t\t\t<key>HIDAccelTangentSpeedParabolicRoot</key>\n\t\t\t\t\t<integer>786432</integer>\n\t\t\t\t</dict>\n\t\t\t</array>\n\t\t\t<key>HIDScrollAccelerationTable</key>\n\t\t\t<data>\n\t\t\tAACAAFVTQioABwAAAAAAAQABAAAAAQAAAAAgAAAQAABxOwAATOMA\n\t\t\tAwAAAAdgAAAEwAAADoAAAAbxSgAX6V4ACVeCACMQWgALZ6EALBF7\n\t\t\tAA2N1AA03ToAD36aADvQuAASWKAARl01ABUAAABO2dgAF8AAAFXK\n\t\t\t7QAas+UAW2FQAB2QAABe0qoAIL75AGEgywAkLXsAYnXvACewAABj\n\t\t\tRl8AAIAAABMAAHE7AABWfwABAAAAAuAAAAIAAAAJYAAAAwAAABIA\n\t\t\tAAAEwAAAIMAAAAaAAAAwgAAACGp5AEH9tgAK7bUAV4ZuAA0B2ABr\n\t\t\tPTkADv1/AIEEcAAQy5gAkdRWABJouQCe3VAAE+c/AKikCgAXAucA\n\t\t\ttn2SABot3ADARE4AHVjQAMX4OgAg35IAytuYACQ4bgDO7mUAJ6CX\n\t\t\tANIwowAAsAAAFAAAcTsAAGFOAADAAAABwAAAAQAAAANgAAACAAAA\n\t\t\tDCAAAAMAAAAW4AAABMAAACnAAAAGQAAAOsAAAAfOggBP7OcACgWA\n\t\t\tAGo8rgAL658AhMCkAA2RCwCfR+EADzjIALWDbwAQ/k8AxqbEABLN\n\t\t\tUQDUeCMAFepmAOTKxwAZoVYA8qFmAB1CvwD7fXwAIQuCAQFpdAAk\n\t\t\tS20BBVKIACegAAEIK4wAAOAAABQAAHE7AABtdwAAwAAAAeAAAAEA\n\t\t\tAAAD4AAAAgAAAA6AAAADAAAAHEAAAATAAAA0AAAABgAAAEdAAAAH\n\t\t\tN4wAXL7hAAkAAACAwAAACoAAAKGAAAALz7IAvU7UAA01yQDadikA\n\t\t\tDvtPAPKF4gARLu4BCSWiABUlDwEfV8QAGT9oASzRKgAdChkBNQrG\n\t\t\tACDz5QE6cR4AJEARAT3XdgAnn1YBQMHWAABQAAATAABxOwAAS7AA\n\t\t\tAQAAAAJgAAACAAAABuAAAAMAAAAMYAAABMAAABcAAAAGwAAAJAAA\n\t\t\tAAkAAAAyAAAACz1uAEFngAANcE8AUMGhAA+sTQBgSTMAEagdAG5N\n\t\t\tTAATT9YAd9WQABTQfgB+26MAF3odAIbYXQAagocAjp+lAB2J6QCT\n\t\t\tvnkAIN/yAJdcWwAkO0IAmYu9ACegOACacdcAAQAAABUAAHE7AABW\n\t\t\tfwAAwAAAAiAAAAEAAAAEgAAAAYAAAAqAAAACAAAAEaAAAAMAAAAh\n\t\t\tgAAABMAAAD6AAAAFwAAAVEAAAAbAAABrAAAACAAAAIxAAAAJAAAA\n\t\t\tqYAAAApAAADKwAAAC8AAAPTAAAANwAABJAAAABAAAAFEn9IAFEAA\n\t\t\tAV49zAAZAAABbrsYABzQAAFz78AAIOAAAXhvwAAkIAABem/AACeg\n\t\t\tAAF8JGg=\n\t\t\t</data>\n\t\t\t<key>HIDScrollAccelerationType</key>\n\t\t\t<string>HIDTrackpadScrollAcceleration</string>\n\t\t\t<key>HIDScrollResolution</key>\n\t\t\t<integer>26214400</integer>\n\t\t\t<key>IOCFPlugInTypes</key>\n\t\t\t<dict>\n\t\t\t\t<key>0516B563-B15B-11DA-96EB-0014519758EF</key>\n\t\t\t\t<string>AppleMultitouchDriver.kext/Contents/PlugIns/MultitouchHID.plugin</string>\n\t\t\t</dict>\n\t\t\t<key>IOClass</key>\n\t\t\t<string>AppleMultitouchTrackpadHIDEventDriver</string>\n\t\t\t<key>IOProbeScore</key>\n\t\t\t<integer>9999</integer>\n\t\t\t<key>IOProviderClass</key>\n\t\t\t<string>IOHIDInterface</string>\n\t\t\t<key>MTEventSource</key>\n\t\t\t<true/>\n\t\t\t<key>ProductIDArray</key>\n\t\t\t<array>\n\t\t\t\t<integer>628</integer>\n\t\t\t</array>\n\t\t\t<key>TrackpadEmbedded</key>\n\t\t\t<true/>\n\t\t\t<key>VendorID</key>\n\t\t\t<integer>1452</integer>\n\t\t</dict>\n\t\t<key>Native Multitouch Engine</key>\n\t\t<dict>\n\t\t\t<key>CFBundleIdentifier</key>\n\t\t\t<string>com.alexandred.VoodooI2C</string>\n\t\t\t<key>IOClass</key>\n\t\t\t<string>VoodooI2CNativeEngine</string>\n\t\t\t<key>IOMatchCategory</key>\n\t\t\t<string>VoodooI2CNativeEngine</string>\n\t\t\t<key>IOProviderClass</key>\n\t\t\t<string>VoodooI2CMultitouchInterface</string>\n\t\t</dict>\n\t\t<key>VoodooI2CACPIController</key>\n\t\t<dict>\n\t\t\t<key>CFBundleIdentifier</key>\n\t\t\t<string>com.alexandred.VoodooI2C</string>\n\t\t\t<key>IOClass</key>\n\t\t\t<string>VoodooI2CACPIController</string>\n\t\t\t<key>IONameMatch</key>\n\t\t\t<array>\n\t\t\t\t<string>INT33C2</string>\n\t\t\t\t<string>INT33C3</string>\n\t\t\t\t<string>INT3432</string>\n\t\t\t\t<string>INT3433</string>\n\t\t\t</array>\n\t\t\t<key>IOProbeScore</key>\n\t\t\t<integer>9999</integer>\n\t\t\t<key>IOProviderClass</key>\n\t\t\t<string>IOService</string>\n\t\t</dict>\n\t\t<key>VoodooI2CControllerDriver</key>\n\t\t<dict>\n\t\t\t<key>CFBundleIdentifier</key>\n\t\t\t<string>com.alexandred.VoodooI2C</string>\n\t\t\t<key>IOClass</key>\n\t\t\t<string>VoodooI2CControllerDriver</string>\n\t\t\t<key>IOProbeScore</key>\n\t\t\t<integer>9999</integer>\n\t\t\t<key>IOProviderClass</key>\n\t\t\t<string>VoodooI2CControllerNub</string>\n\t\t</dict>\n\t\t<key>VoodooI2CPCIController</key>\n\t\t<dict>\n\t\t\t<key>CFBundleIdentifier</key>\n\t\t\t<string>com.alexandred.VoodooI2C</string>\n\t\t\t<key>IOClass</key>\n\t\t\t<string>VoodooI2CPCIController</string>\n\t\t\t<key>IONameMatch</key>\n\t\t\t<array>\n\t\t\t\t<string>pci8086,9d60</string>\n\t\t\t\t<string>pci8086,9d61</string>\n\t\t\t\t<string>pci8086,a160</string>\n\t\t\t\t<string>pci8086,a161</string>\n\t\t\t\t<string>pci8086,a162</string>\n\t\t\t</array>\n\t\t\t<key>IOProbeScore</key>\n\t\t\t<integer>9999</integer>\n\t\t\t<key>IOProviderClass</key>\n\t\t\t<string>IOService</string>\n\t\t</dict>\n\t</dict>\n\t<key>NSHumanReadableCopyright</key>\n\t<string>Copyright © 2017 Alexandre Daoud. All rights reserved.</string>\n\t<key>OSBundleCompatibleVersion</key>\n\t<string>2.0.0</string>\n\t<key>OSBundleLibraries</key>\n\t<dict>\n\t\t<key>com.alexandred.VoodooI2CServices</key>\n\t\t<string>1.0</string>\n\t\t<key>com.apple.iokit.IOACPIFamily</key>\n\t\t<string>1.4</string>\n\t\t<key>com.apple.iokit.IOHIDFamily</key>\n\t\t<string>2.0</string>\n\t\t<key>com.apple.iokit.IOPCIFamily</key>\n\t\t<string>2.9</string>\n\t\t<key>com.apple.kpi.bsd</key>\n\t\t<string>8.0</string>\n\t\t<key>com.apple.kpi.iokit</key>\n\t\t<string>14</string>\n\t\t<key>com.apple.kpi.libkern</key>\n\t\t<string>14</string>\n\t\t<key>com.apple.kpi.mach</key>\n\t\t<string>14</string>\n\t\t<key>org.coolstar.VoodooGPIO</key>\n\t\t<string>1.1</string>\n\t</dict>\n</dict>\n</plist>\n"
  },
  {
    "path": "EFI/CLOVER/kexts/Other/VoodooI2C_v2.1.4.kext/Contents/PlugIns/VoodooGPIO.kext/Contents/Info.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>BuildMachineOSBuild</key>\n\t<string>17G2112</string>\n\t<key>CFBundleDevelopmentRegion</key>\n\t<string>en</string>\n\t<key>CFBundleExecutable</key>\n\t<string>VoodooGPIO</string>\n\t<key>CFBundleIdentifier</key>\n\t<string>org.coolstar.VoodooGPIO</string>\n\t<key>CFBundleInfoDictionaryVersion</key>\n\t<string>6.0</string>\n\t<key>CFBundleName</key>\n\t<string>VoodooGPIO</string>\n\t<key>CFBundlePackageType</key>\n\t<string>KEXT</string>\n\t<key>CFBundleShortVersionString</key>\n\t<string>1.1</string>\n\t<key>CFBundleSupportedPlatforms</key>\n\t<array>\n\t\t<string>MacOSX</string>\n\t</array>\n\t<key>CFBundleVersion</key>\n\t<string>1.1</string>\n\t<key>DTCompiler</key>\n\t<string>com.apple.compilers.llvm.clang.1_0</string>\n\t<key>DTPlatformBuild</key>\n\t<string>10A255</string>\n\t<key>DTPlatformVersion</key>\n\t<string>GM</string>\n\t<key>DTSDKBuild</key>\n\t<string>16C58</string>\n\t<key>DTSDKName</key>\n\t<string>macosx10.12</string>\n\t<key>DTXcode</key>\n\t<string>1000</string>\n\t<key>DTXcodeBuild</key>\n\t<string>10A255</string>\n\t<key>IOKitPersonalities</key>\n\t<dict>\n\t\t<key>VoodooGPIOSunrisePointH</key>\n\t\t<dict>\n\t\t\t<key>CFBundleIdentifier</key>\n\t\t\t<string>org.coolstar.VoodooGPIO</string>\n\t\t\t<key>IOClass</key>\n\t\t\t<string>VoodooGPIOSunrisePointH</string>\n\t\t\t<key>IONameMatch</key>\n\t\t\t<array>\n\t\t\t\t<string>INT345D</string>\n\t\t\t</array>\n\t\t\t<key>IOProviderClass</key>\n\t\t\t<string>IOService</string>\n\t\t</dict>\n\t\t<key>VoodooGPIOSunrisePointLP</key>\n\t\t<dict>\n\t\t\t<key>CFBundleIdentifier</key>\n\t\t\t<string>org.coolstar.VoodooGPIO</string>\n\t\t\t<key>IOClass</key>\n\t\t\t<string>VoodooGPIOSunrisePointLP</string>\n\t\t\t<key>IONameMatch</key>\n\t\t\t<array>\n\t\t\t\t<string>INT344B</string>\n\t\t\t</array>\n\t\t\t<key>IOProviderClass</key>\n\t\t\t<string>IOService</string>\n\t\t</dict>\n\t</dict>\n\t<key>NSHumanReadableCopyright</key>\n\t<string>Copyright © 2017 CoolStar. All rights reserved.</string>\n\t<key>OSBundleCompatibleVersion</key>\n\t<string>1.1</string>\n\t<key>OSBundleLibraries</key>\n\t<dict>\n\t\t<key>com.apple.iokit.IOACPIFamily</key>\n\t\t<string>1.4</string>\n\t\t<key>com.apple.kpi.iokit</key>\n\t\t<string>13.0</string>\n\t\t<key>com.apple.kpi.libkern</key>\n\t\t<string>13.0</string>\n\t\t<key>com.apple.kpi.mach</key>\n\t\t<string>13.0</string>\n\t</dict>\n</dict>\n</plist>\n"
  },
  {
    "path": "EFI/CLOVER/kexts/Other/VoodooI2C_v2.1.4.kext/Contents/PlugIns/VoodooI2CServices.kext/Contents/Info.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>BuildMachineOSBuild</key>\n\t<string>17G2112</string>\n\t<key>CFBundleDevelopmentRegion</key>\n\t<string>en</string>\n\t<key>CFBundleExecutable</key>\n\t<string>VoodooI2CServices</string>\n\t<key>CFBundleIdentifier</key>\n\t<string>com.alexandred.VoodooI2CServices</string>\n\t<key>CFBundleInfoDictionaryVersion</key>\n\t<string>6.0</string>\n\t<key>CFBundleName</key>\n\t<string>VoodooI2CServices</string>\n\t<key>CFBundlePackageType</key>\n\t<string>KEXT</string>\n\t<key>CFBundleShortVersionString</key>\n\t<string>1.0</string>\n\t<key>CFBundleSupportedPlatforms</key>\n\t<array>\n\t\t<string>MacOSX</string>\n\t</array>\n\t<key>CFBundleVersion</key>\n\t<string>1</string>\n\t<key>DTCompiler</key>\n\t<string>com.apple.compilers.llvm.clang.1_0</string>\n\t<key>DTPlatformBuild</key>\n\t<string>10A255</string>\n\t<key>DTPlatformVersion</key>\n\t<string>GM</string>\n\t<key>DTSDKBuild</key>\n\t<string>16C58</string>\n\t<key>DTSDKName</key>\n\t<string>macosx10.12</string>\n\t<key>DTXcode</key>\n\t<string>1000</string>\n\t<key>DTXcodeBuild</key>\n\t<string>10A255</string>\n\t<key>IOKitPersonalities</key>\n\t<dict>\n\t\t<key>VoodooI2CLogger</key>\n\t\t<dict>\n\t\t\t<key>CFBundleIdentifier</key>\n\t\t\t<string>com.alexandred.VoodooI2CServices</string>\n\t\t\t<key>IOClass</key>\n\t\t\t<string>VoodooI2CLogger</string>\n\t\t\t<key>IOMatchCategory</key>\n\t\t\t<string>VoodooI2CLogger</string>\n\t\t\t<key>IOProviderClass</key>\n\t\t\t<string>VoodooI2CServices</string>\n\t\t</dict>\n\t\t<key>VoodooI2CServices</key>\n\t\t<dict>\n\t\t\t<key>CFBundleIdentifier</key>\n\t\t\t<string>com.alexandred.VoodooI2CServices</string>\n\t\t\t<key>IOClass</key>\n\t\t\t<string>VoodooI2CServices</string>\n\t\t\t<key>IOMatchCategory</key>\n\t\t\t<string>VoodooI2CServices</string>\n\t\t\t<key>IOProviderClass</key>\n\t\t\t<string>IOResources</string>\n\t\t</dict>\n\t</dict>\n\t<key>NSHumanReadableCopyright</key>\n\t<string>Copyright © 2017 Alexandre Daoud. All rights reserved.</string>\n\t<key>OSBundleCompatibleVersion</key>\n\t<string>1.0.0</string>\n\t<key>OSBundleLibraries</key>\n\t<dict>\n\t\t<key>com.apple.kpi.iokit</key>\n\t\t<string>14</string>\n\t\t<key>com.apple.kpi.libkern</key>\n\t\t<string>14</string>\n\t</dict>\n</dict>\n</plist>\n"
  },
  {
    "path": "EFI/CLOVER/kexts/Other/VoodooPS2Controller_v1.8.25.kext/Contents/Info.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>BuildMachineOSBuild</key>\n\t<string>16D32</string>\n\t<key>CFBundleExecutable</key>\n\t<string>VoodooPS2Controller</string>\n\t<key>CFBundleGetInfoString</key>\n\t<string>1.8.25, Copyright Apple Computer, Inc. 2000-2003, David Elliot 2007, RehabMan 2012-2013, IcedMan 2017</string>\n\t<key>CFBundleIdentifier</key>\n\t<string>org.rehabman.voodoo.driver.PS2Controller</string>\n\t<key>CFBundleInfoDictionaryVersion</key>\n\t<string>6.0</string>\n\t<key>CFBundleName</key>\n\t<string>Voodoo PS/2 Controller</string>\n\t<key>CFBundlePackageType</key>\n\t<string>KEXT</string>\n\t<key>CFBundleShortVersionString</key>\n\t<string>1.8.25</string>\n\t<key>CFBundleSignature</key>\n\t<string>????</string>\n\t<key>CFBundleSupportedPlatforms</key>\n\t<array>\n\t\t<string>MacOSX</string>\n\t</array>\n\t<key>CFBundleVersion</key>\n\t<string>1.8.25</string>\n\t<key>DTCompiler</key>\n\t<string>com.apple.compilers.llvm.clang.1_0</string>\n\t<key>DTPlatformBuild</key>\n\t<string>8C1002</string>\n\t<key>DTPlatformVersion</key>\n\t<string>GM</string>\n\t<key>DTSDKBuild</key>\n\t<string>16C58</string>\n\t<key>DTSDKName</key>\n\t<string>macosx10.12</string>\n\t<key>DTXcode</key>\n\t<string>0821</string>\n\t<key>DTXcodeBuild</key>\n\t<string>8C1002</string>\n\t<key>IOKitPersonalities</key>\n\t<dict>\n\t\t<key>ACPI PS/2 Nub</key>\n\t\t<dict>\n\t\t\t<key>CFBundleIdentifier</key>\n\t\t\t<string>org.rehabman.voodoo.driver.PS2Controller</string>\n\t\t\t<key>IOClass</key>\n\t\t\t<string>AppleACPIPS2Nub</string>\n\t\t\t<key>IONameMatch</key>\n\t\t\t<array>\n\t\t\t\t<string>PNP0303</string>\n\t\t\t\t<string>PNP030B</string>\n\t\t\t</array>\n\t\t\t<key>IOProviderClass</key>\n\t\t\t<string>IOACPIPlatformDevice</string>\n\t\t\t<key>MouseNameMatch</key>\n\t\t\t<array>\n\t\t\t\t<string>PNP0F03</string>\n\t\t\t\t<string>PNP0F0B</string>\n\t\t\t\t<string>PNP0F0E</string>\n\t\t\t\t<string>PNP0F13</string>\n\t\t\t</array>\n\t\t</dict>\n\t\t<key>ApplePS2Controller</key>\n\t\t<dict>\n\t\t\t<key>CFBundleIdentifier</key>\n\t\t\t<string>org.rehabman.voodoo.driver.PS2Controller</string>\n\t\t\t<key>IOClass</key>\n\t\t\t<string>ApplePS2Controller</string>\n\t\t\t<key>IONameMatch</key>\n\t\t\t<string>ps2controller</string>\n\t\t\t<key>IOProviderClass</key>\n\t\t\t<string>IOPlatformDevice</string>\n\t\t\t<key>Platform Profile</key>\n\t\t\t<dict>\n\t\t\t\t<key>Default</key>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>MouseWakeFirst</key>\n\t\t\t\t\t<false/>\n\t\t\t\t\t<key>WakeDelay</key>\n\t\t\t\t\t<integer>10</integer>\n\t\t\t\t</dict>\n\t\t\t\t<key>HPQOEM</key>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>1411</key>\n\t\t\t\t\t<string>ProBook</string>\n\t\t\t\t\t<key>1619</key>\n\t\t\t\t\t<string>ProBook</string>\n\t\t\t\t\t<key>161C</key>\n\t\t\t\t\t<string>ProBook</string>\n\t\t\t\t\t<key>164F</key>\n\t\t\t\t\t<string>ProBook</string>\n\t\t\t\t\t<key>167C</key>\n\t\t\t\t\t<string>ProBook</string>\n\t\t\t\t\t<key>167E</key>\n\t\t\t\t\t<string>ProBook</string>\n\t\t\t\t\t<key>1680</key>\n\t\t\t\t\t<string>ProBook</string>\n\t\t\t\t\t<key>179B</key>\n\t\t\t\t\t<string>ProBook</string>\n\t\t\t\t\t<key>179C</key>\n\t\t\t\t\t<string>ProBook</string>\n\t\t\t\t\t<key>17A9</key>\n\t\t\t\t\t<string>ProBook</string>\n\t\t\t\t\t<key>17F0</key>\n\t\t\t\t\t<string>ProBook</string>\n\t\t\t\t\t<key>17F3</key>\n\t\t\t\t\t<string>ProBook</string>\n\t\t\t\t\t<key>17F6</key>\n\t\t\t\t\t<string>ProBook</string>\n\t\t\t\t\t<key>1942</key>\n\t\t\t\t\t<string>ProBook</string>\n\t\t\t\t\t<key>1949</key>\n\t\t\t\t\t<string>ProBook</string>\n\t\t\t\t\t<key>198F</key>\n\t\t\t\t\t<string>ProBook</string>\n\t\t\t\t\t<key>ProBook</key>\n\t\t\t\t\t<dict>\n\t\t\t\t\t\t<key>WakeDelay</key>\n\t\t\t\t\t\t<integer>0</integer>\n\t\t\t\t\t</dict>\n\t\t\t\t\t<key>ProBook-102</key>\n\t\t\t\t\t<string>ProBook</string>\n\t\t\t\t\t<key>ProBook-87</key>\n\t\t\t\t\t<string>ProBook</string>\n\t\t\t\t</dict>\n\t\t\t</dict>\n\t\t</dict>\n\t</dict>\n\t<key>OSBundleCompatibleVersion</key>\n\t<string>1.8.25</string>\n\t<key>OSBundleLibraries</key>\n\t<dict>\n\t\t<key>com.apple.iokit.IOACPIFamily</key>\n\t\t<string>1.0.0d1</string>\n\t\t<key>com.apple.kpi.bsd</key>\n\t\t<string>8.0.0</string>\n\t\t<key>com.apple.kpi.iokit</key>\n\t\t<string>8.0.0</string>\n\t\t<key>com.apple.kpi.libkern</key>\n\t\t<string>8.0.0</string>\n\t\t<key>com.apple.kpi.mach</key>\n\t\t<string>8.0.0</string>\n\t\t<key>com.apple.kpi.unsupported</key>\n\t\t<string>8.0.0</string>\n\t</dict>\n\t<key>OSBundleRequired</key>\n\t<string>Console</string>\n\t<key>Source Code</key>\n\t<string>https://github.com/RehabMan/OS-X-Voodoo-PS2-Controller</string>\n</dict>\n</plist>\n"
  },
  {
    "path": "EFI/CLOVER/kexts/Other/VoodooPS2Controller_v1.8.25.kext/Contents/PlugIns/VoodooPS2Keyboard.kext/Contents/Info.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>BuildMachineOSBuild</key>\n\t<string>16D32</string>\n\t<key>CFBundleExecutable</key>\n\t<string>VoodooPS2Keyboard</string>\n\t<key>CFBundleGetInfoString</key>\n\t<string>1.8.25, Copyright Apple Computer, Inc. 2000-2003, RehabMan 2012-2013</string>\n\t<key>CFBundleIdentifier</key>\n\t<string>org.rehabman.voodoo.driver.PS2Keyboard</string>\n\t<key>CFBundleInfoDictionaryVersion</key>\n\t<string>6.0</string>\n\t<key>CFBundleName</key>\n\t<string>Voodoo PS/2 Keyboard</string>\n\t<key>CFBundlePackageType</key>\n\t<string>KEXT</string>\n\t<key>CFBundleShortVersionString</key>\n\t<string>1.8.25</string>\n\t<key>CFBundleSignature</key>\n\t<string>????</string>\n\t<key>CFBundleSupportedPlatforms</key>\n\t<array>\n\t\t<string>MacOSX</string>\n\t</array>\n\t<key>CFBundleVersion</key>\n\t<string>1.8.25</string>\n\t<key>DTCompiler</key>\n\t<string>com.apple.compilers.llvm.clang.1_0</string>\n\t<key>DTPlatformBuild</key>\n\t<string>8C1002</string>\n\t<key>DTPlatformVersion</key>\n\t<string>GM</string>\n\t<key>DTSDKBuild</key>\n\t<string>16C58</string>\n\t<key>DTSDKName</key>\n\t<string>macosx10.12</string>\n\t<key>DTXcode</key>\n\t<string>0821</string>\n\t<key>DTXcodeBuild</key>\n\t<string>8C1002</string>\n\t<key>IOKitPersonalities</key>\n\t<dict>\n\t\t<key>ApplePS2Keyboard</key>\n\t\t<dict>\n\t\t\t<key>CFBundleIdentifier</key>\n\t\t\t<string>org.rehabman.voodoo.driver.PS2Keyboard</string>\n\t\t\t<key>IOClass</key>\n\t\t\t<string>ApplePS2Keyboard</string>\n\t\t\t<key>IOProviderClass</key>\n\t\t\t<string>ApplePS2KeyboardDevice</string>\n\t\t\t<key>Platform Profile</key>\n\t\t\t<dict>\n\t\t\t\t<key>DELL</key>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>Dell-Keys</key>\n\t\t\t\t\t<dict>\n\t\t\t\t\t\t<key>Breakless PS2</key>\n\t\t\t\t\t\t<array>\n\t\t\t\t\t\t\t<string>e005</string>\n\t\t\t\t\t\t\t<string>e006</string>\n\t\t\t\t\t\t</array>\n\t\t\t\t\t\t<key>Function Keys Special</key>\n\t\t\t\t\t\t<array>\n\t\t\t\t\t\t\t<string>;The following 12 items map Fn+fkeys to fkeys</string>\n\t\t\t\t\t\t\t<string>e020=3b</string>\n\t\t\t\t\t\t\t<string>e02e=3c</string>\n\t\t\t\t\t\t\t<string>e030=3d</string>\n\t\t\t\t\t\t\t<string>e022=3e</string>\n\t\t\t\t\t\t\t<string>;Fn+f5 macro</string>\n\t\t\t\t\t\t\t<string>;Fn+f6 macro</string>\n\t\t\t\t\t\t\t<string>;Fn+f7 macro</string>\n\t\t\t\t\t\t\t<string>;Fn+f8 macro</string>\n\t\t\t\t\t\t\t<string>;Fn+f9 macro</string>\n\t\t\t\t\t\t\t<string>;Fn+f10 no code</string>\n\t\t\t\t\t\t\t<string>e005=57</string>\n\t\t\t\t\t\t\t<string>e006=58</string>\n\t\t\t\t\t\t\t<string>;The following 12 items map fkeys to Fn+fkeys</string>\n\t\t\t\t\t\t\t<string>3b=e020</string>\n\t\t\t\t\t\t\t<string>3c=e02e</string>\n\t\t\t\t\t\t\t<string>3d=e030</string>\n\t\t\t\t\t\t\t<string>3e=e022</string>\n\t\t\t\t\t\t\t<string>;Fn+f5 macro</string>\n\t\t\t\t\t\t\t<string>;Fn+f6 macro</string>\n\t\t\t\t\t\t\t<string>;Fn+f7 macro</string>\n\t\t\t\t\t\t\t<string>;Fn+f8 macro</string>\n\t\t\t\t\t\t\t<string>;Fn+f9 macro</string>\n\t\t\t\t\t\t\t<string>;Fn+f10 no code</string>\n\t\t\t\t\t\t\t<string>57=e005</string>\n\t\t\t\t\t\t\t<string>58=e006</string>\n\t\t\t\t\t\t</array>\n\t\t\t\t\t\t<key>Function Keys Standard</key>\n\t\t\t\t\t\t<array>\n\t\t\t\t\t\t\t<string>;The following 12 items map Fn+fkeys to Fn+fkeys</string>\n\t\t\t\t\t\t\t<string>e020=e020</string>\n\t\t\t\t\t\t\t<string>e02e=e02e</string>\n\t\t\t\t\t\t\t<string>e030=e030</string>\n\t\t\t\t\t\t\t<string>e022=e022</string>\n\t\t\t\t\t\t\t<string>;Fn+f5 macro</string>\n\t\t\t\t\t\t\t<string>;Fn+f6 macro</string>\n\t\t\t\t\t\t\t<string>;Fn+f7 macro</string>\n\t\t\t\t\t\t\t<string>;Fn+f8 macro</string>\n\t\t\t\t\t\t\t<string>;Fn+f9 macro</string>\n\t\t\t\t\t\t\t<string>;Fn+f10 no code</string>\n\t\t\t\t\t\t\t<string>e005=e005</string>\n\t\t\t\t\t\t\t<string>e006=e006</string>\n\t\t\t\t\t\t\t<string>;The following 12 items map fkeys to fkeys</string>\n\t\t\t\t\t\t\t<string>3b=3b</string>\n\t\t\t\t\t\t\t<string>3c=3c</string>\n\t\t\t\t\t\t\t<string>3d=3d</string>\n\t\t\t\t\t\t\t<string>3e=3e</string>\n\t\t\t\t\t\t\t<string>3f=3f</string>\n\t\t\t\t\t\t\t<string>40=40</string>\n\t\t\t\t\t\t\t<string>41=41</string>\n\t\t\t\t\t\t\t<string>42=42</string>\n\t\t\t\t\t\t\t<string>43=43</string>\n\t\t\t\t\t\t\t<string>44=44</string>\n\t\t\t\t\t\t\t<string>57=57</string>\n\t\t\t\t\t\t\t<string>58=58</string>\n\t\t\t\t\t\t</array>\n\t\t\t\t\t</dict>\n\t\t\t\t\t<key>HSW-LPT</key>\n\t\t\t\t\t<string>Dell-Keys</string>\n\t\t\t\t\t<key>SNB-CPT</key>\n\t\t\t\t\t<dict>\n\t\t\t\t\t\t<key>ActionSwipeDown</key>\n\t\t\t\t\t\t<string>63 d, 63 u</string>\n\t\t\t\t\t\t<key>ActionSwipeUp</key>\n\t\t\t\t\t\t<string>61 d, 61 u</string>\n\t\t\t\t\t\t<key>Breakless PS2</key>\n\t\t\t\t\t\t<array>\n\t\t\t\t\t\t\t<string>e01e;Touchpad Fn+f3 is breakless</string>\n\t\t\t\t\t\t\t<string>e06e;REVIEW: temporary for case that macro inversion does not work...</string>\n\t\t\t\t\t\t</array>\n\t\t\t\t\t\t<key>Custom ADB Map</key>\n\t\t\t\t\t\t<array>\n\t\t\t\t\t\t\t<string>e009=83;Dell Support to Launchpad</string>\n\t\t\t\t\t\t\t<string>e0f1=71;Call brightens up w RKA1 for special mode (was =90)</string>\n\t\t\t\t\t\t\t<string>e0f2=6b;Call brightens down w RKA2 for special mode (was =91)</string>\n\t\t\t\t\t\t\t<string>e06e=70;Map vidmirror key for special mode default is adb90</string>\n\t\t\t\t\t\t</array>\n\t\t\t\t\t\t<key>Custom PS2 Map</key>\n\t\t\t\t\t\t<array>\n\t\t\t\t\t\t\t<string>e01e=e037;Map tp disable to Fn+f3</string>\n\t\t\t\t\t\t\t<string>e037=e01e;Prevent PrntScr from triggering tp disable</string>\n\t\t\t\t\t\t</array>\n\t\t\t\t\t\t<key>Function Keys Special</key>\n\t\t\t\t\t\t<array>\n\t\t\t\t\t\t\t<string>;The following 12 items map Fn+fkeys to fkeys</string>\n\t\t\t\t\t\t\t<string>e06e=3b</string>\n\t\t\t\t\t\t\t<string>e008=3c</string>\n\t\t\t\t\t\t\t<string>e01e=3d</string>\n\t\t\t\t\t\t\t<string>e005=3e</string>\n\t\t\t\t\t\t\t<string>e006=3f</string>\n\t\t\t\t\t\t\t<string>e00c=40</string>\n\t\t\t\t\t\t\t<string>;Fn+f7 no dedicated macro</string>\n\t\t\t\t\t\t\t<string>e010=42</string>\n\t\t\t\t\t\t\t<string>e022=43</string>\n\t\t\t\t\t\t\t<string>e019=44</string>\n\t\t\t\t\t\t\t<string>e02e=57</string>\n\t\t\t\t\t\t\t<string>e030=58</string>\n\t\t\t\t\t\t\t<string>;The following 12 items map fkeys to Fn+fkeys</string>\n\t\t\t\t\t\t\t<string>3b=e06e;Map vidmirror key to f1</string>\n\t\t\t\t\t\t\t<string>3c=e0f0;Map radio toggle action from EC query to f2</string>\n\t\t\t\t\t\t\t<string>3d=e037;Map touchpad toggle button to f3</string>\n\t\t\t\t\t\t\t<string>3e=e0f2;Map acpi RKA2 to f4 brightness down</string>\n\t\t\t\t\t\t\t<string>3f=e0f1;Map acpi RKA1 to f5 brightness up</string>\n\t\t\t\t\t\t\t<string>40=e0f3;Map acpi RKA3 to f6 keyboard backlight</string>\n\t\t\t\t\t\t\t<string>;Fn+f7 no macro</string>\n\t\t\t\t\t\t\t<string>42=e010</string>\n\t\t\t\t\t\t\t<string>43=e022</string>\n\t\t\t\t\t\t\t<string>44=e019</string>\n\t\t\t\t\t\t\t<string>57=e02e</string>\n\t\t\t\t\t\t\t<string>58=e030</string>\n\t\t\t\t\t\t</array>\n\t\t\t\t\t\t<key>Function Keys Standard</key>\n\t\t\t\t\t\t<array>\n\t\t\t\t\t\t\t<string>;The following 12 items map Fn+fkeys to Fn+fkeys</string>\n\t\t\t\t\t\t\t<string>e06e=e06e;Fn+f1 macro translated</string>\n\t\t\t\t\t\t\t<string>e008=e008;Fn+f2 regular scancode and EC query call q8c</string>\n\t\t\t\t\t\t\t<string>e01e=e037;Fn+f3 regular scancode and EC controls LED</string>\n\t\t\t\t\t\t\t<string>e005=e005;Fn+f4 no ps2scancode and EC query call q81</string>\n\t\t\t\t\t\t\t<string>e006=e006;Fn+f5 no ps2scancode and EC query call q80</string>\n\t\t\t\t\t\t\t<string>e00c=e00c;Fn+f6 no ps2scancode and EC query call q8a</string>\n\t\t\t\t\t\t\t<string>;Fn+f7 no macro just regular f key</string>\n\t\t\t\t\t\t\t<string>e010=e010; Fn+f8 regular scancode</string>\n\t\t\t\t\t\t\t<string>e022=e022; Fn+f9 regular scancode</string>\n\t\t\t\t\t\t\t<string>e019=e019;Fn+f10 regular scancode</string>\n\t\t\t\t\t\t\t<string>e02e=e02e;Fn+f11 regular scancode</string>\n\t\t\t\t\t\t\t<string>e030=e030;Fn+f12 regular scancode</string>\n\t\t\t\t\t\t\t<string>;Fn+f13 is mute dedicated button that always produces e020 regardless of Fn</string>\n\t\t\t\t\t\t\t<string>;The following 12 items map fkeys to fkeys</string>\n\t\t\t\t\t\t\t<string>3b=3b</string>\n\t\t\t\t\t\t\t<string>3c=3c</string>\n\t\t\t\t\t\t\t<string>3d=3d</string>\n\t\t\t\t\t\t\t<string>3e=3e</string>\n\t\t\t\t\t\t\t<string>3f=3f</string>\n\t\t\t\t\t\t\t<string>40=40</string>\n\t\t\t\t\t\t\t<string>41=41</string>\n\t\t\t\t\t\t\t<string>42=42</string>\n\t\t\t\t\t\t\t<string>43=43</string>\n\t\t\t\t\t\t\t<string>44=44</string>\n\t\t\t\t\t\t\t<string>57=57</string>\n\t\t\t\t\t\t\t<string>58=58</string>\n\t\t\t\t\t\t</array>\n\t\t\t\t\t\t<key>Macro Inversion</key>\n\t\t\t\t\t\t<array>\n\t\t\t\t\t\t\t<string>;This section maps ps2 codes (packet format) received quickly (macros) into fake ps2 codes (packet format)</string>\n\t\t\t\t\t\t\t<string>;Fn+F1</string>\n\t\t\t\t\t\t\t<data>\n\t\t\t\t\t\t\t//8CbgAAAAACWwEZ\n\t\t\t\t\t\t\t</data>\n\t\t\t\t\t\t\t<data>\n\t\t\t\t\t\t\t//8C7gAAAAAC2wGZ\n\t\t\t\t\t\t\t</data>\n\t\t\t\t\t\t\t<data>\n\t\t\t\t\t\t\t//8C7gAAAAABmQLb\n\t\t\t\t\t\t\t</data>\n\t\t\t\t\t\t</array>\n\t\t\t\t\t\t<key>MaximumMacroTime</key>\n\t\t\t\t\t\t<integer>35000000</integer>\n\t\t\t\t\t\t<key>Note-Author</key>\n\t\t\t\t\t\t<string>TimeWalker aka TimeWalker75a</string>\n\t\t\t\t\t\t<key>Note-Comment</key>\n\t\t\t\t\t\t<string>Keyboard Profile for DELL SandyBridge SecureCore Tiano based laptops (Vostro 3450 &amp; 3750, Inspiron N4110, XPS L502x &amp; L702x &amp; L511z)</string>\n\t\t\t\t\t</dict>\n\t\t\t\t\t<key>WN09</key>\n\t\t\t\t\t<dict>\n\t\t\t\t\t\t<key>Breakless PS2</key>\n\t\t\t\t\t\t<array>\n\t\t\t\t\t\t\t<string>e01b</string>\n\t\t\t\t\t\t\t<string>e008</string>\n\t\t\t\t\t\t\t<string>e01e</string>\n\t\t\t\t\t\t\t<string>e005</string>\n\t\t\t\t\t\t\t<string>e06e</string>\n\t\t\t\t\t\t\t<string>e006</string>\n\t\t\t\t\t\t</array>\n\t\t\t\t\t\t<key>Custom ADB Map</key>\n\t\t\t\t\t\t<array>\n\t\t\t\t\t\t\t<string>e01b=70</string>\n\t\t\t\t\t\t\t<string>e06e=83</string>\n\t\t\t\t\t\t</array>\n\t\t\t\t\t\t<key>Custom PS2 Map</key>\n\t\t\t\t\t\t<array>\n\t\t\t\t\t\t\t<string>56=2b</string>\n\t\t\t\t\t\t\t<string>29=56</string>\n\t\t\t\t\t\t\t<string>2b=29</string>\n\t\t\t\t\t\t\t<string>e01e=e037</string>\n\t\t\t\t\t\t\t<string>e037=e01e</string>\n\t\t\t\t\t\t</array>\n\t\t\t\t\t</dict>\n\t\t\t\t\t<key>WN09a</key>\n\t\t\t\t\t<dict>\n\t\t\t\t\t\t<key>Breakless PS2</key>\n\t\t\t\t\t\t<array>\n\t\t\t\t\t\t\t<string>e01b</string>\n\t\t\t\t\t\t\t<string>e008</string>\n\t\t\t\t\t\t\t<string>e01e</string>\n\t\t\t\t\t\t\t<string>e005</string>\n\t\t\t\t\t\t\t<string>e06e</string>\n\t\t\t\t\t\t\t<string>e006</string>\n\t\t\t\t\t\t</array>\n\t\t\t\t\t\t<key>Custom ADB Map</key>\n\t\t\t\t\t\t<array>\n\t\t\t\t\t\t\t<string>e01b=70</string>\n\t\t\t\t\t\t\t<string>e06e=83</string>\n\t\t\t\t\t\t</array>\n\t\t\t\t\t\t<key>Custom PS2 Map</key>\n\t\t\t\t\t\t<array>\n\t\t\t\t\t\t\t<string>e01e=e037</string>\n\t\t\t\t\t\t\t<string>e037=e01e</string>\n\t\t\t\t\t\t</array>\n\t\t\t\t\t</dict>\n\t\t\t\t</dict>\n\t\t\t\t<key>Default</key>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>Action2FingersTap</key>\n\t\t\t\t\t<string>3b d, 37 d, 1c d, 1c u, 37 u, 3b u</string>\n\t\t\t\t\t<key>Action3FingersTap</key>\n\t\t\t\t\t<string>3b d, 37 d, 2 d, 2 u, 37 u, 3b u</string>\n\t\t\t\t\t<key>Action4FingersTap</key>\n\t\t\t\t\t<string>3b d, 37 d, 2 d, 2 u, 37 u, 3b u</string>\n\t\t\t\t\t<key>ActionSwipe4FingersDown</key>\n\t\t\t\t\t<string>37 d, 2e d, 2e u, 37 u</string>\n\t\t\t\t\t<key>ActionSwipe4FingersLeft</key>\n\t\t\t\t\t<string>3b d, 7c d, 7c u, 3b u</string>\n\t\t\t\t\t<key>ActionSwipe4FingersRight</key>\n\t\t\t\t\t<string>3b d, 7b d, 7b u, 3b u</string>\n\t\t\t\t\t<key>ActionSwipe4FingersUp</key>\n\t\t\t\t\t<string>67 d, 67 u</string>\n\t\t\t\t\t<key>ActionSwipeDown</key>\n\t\t\t\t\t<string>3b d, 37 d, 7d d, 7d u, 37 u, 3b u</string>\n\t\t\t\t\t<key>ActionSwipeLeft</key>\n\t\t\t\t\t<string>37 d, 21 d, 21 u, 37 u</string>\n\t\t\t\t\t<key>ActionSwipeLeftFromEdge</key>\n\t\t\t\t\t<string>3b d, 37 d, 1d d, 1d u, 37 u, 3b u</string>\n\t\t\t\t\t<key>ActionSwipeRight</key>\n\t\t\t\t\t<string>37 d, 1e d, 1e u, 37 u</string>\n\t\t\t\t\t<key>ActionSwipeRightFromEdge</key>\n\t\t\t\t\t<string>3b d, 37 d, 19 d, 19 u, 37 u, 3b u</string>\n\t\t\t\t\t<key>ActionSwipeUp</key>\n\t\t\t\t\t<string>3b d, 7e d, 7e u, 3b u</string>\n\t\t\t\t\t<key>Breakless PS2</key>\n\t\t\t\t\t<array>\n\t\t\t\t\t\t<string>;Items must be strings in the form of breaklessscan (in hex)</string>\n\t\t\t\t\t</array>\n\t\t\t\t\t<key>Custom ADB Map</key>\n\t\t\t\t\t<array>\n\t\t\t\t\t\t<string>;Items must be strings in the form of scanfrom=adbto (in hex)</string>\n\t\t\t\t\t</array>\n\t\t\t\t\t<key>Custom PS2 Map</key>\n\t\t\t\t\t<array>\n\t\t\t\t\t\t<string>;Items must be strings in the form of scanfrom=scanto (in hex)</string>\n\t\t\t\t\t\t<string>e027=0;disable discrete fnkeys toggle</string>\n\t\t\t\t\t\t<string>e028=0;disable discrete trackpad toggle</string>\n\t\t\t\t\t</array>\n\t\t\t\t\t<key>HIDF12EjectDelay</key>\n\t\t\t\t\t<integer>250</integer>\n\t\t\t\t\t<key>LogScanCodes</key>\n\t\t\t\t\t<integer>0</integer>\n\t\t\t\t\t<key>Make Application key into Apple Fn key</key>\n\t\t\t\t\t<false/>\n\t\t\t\t\t<key>Make Application key into right windows</key>\n\t\t\t\t\t<true/>\n\t\t\t\t\t<key>Make right modifier keys into Hangul and Hanja</key>\n\t\t\t\t\t<false/>\n\t\t\t\t\t<key>SleepPressTime</key>\n\t\t\t\t\t<integer>0</integer>\n\t\t\t\t\t<key>Swap capslock and left control</key>\n\t\t\t\t\t<false/>\n\t\t\t\t\t<key>Swap command and option</key>\n\t\t\t\t\t<true/>\n\t\t\t\t\t<key>Use ISO layout keyboard</key>\n\t\t\t\t\t<false/>\n\t\t\t\t\t<key>alt_handler_id</key>\n\t\t\t\t\t<integer>3</integer>\n\t\t\t\t</dict>\n\t\t\t\t<key>HPQOEM</key>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>1411</key>\n\t\t\t\t\t<string>ProBook-102;ProBook 4520s</string>\n\t\t\t\t\t<key>1619</key>\n\t\t\t\t\t<string>ProBook-87;ProBook 6560b</string>\n\t\t\t\t\t<key>161C</key>\n\t\t\t\t\t<string>ProBook-87;ProBook 8460p</string>\n\t\t\t\t\t<key>164F</key>\n\t\t\t\t\t<string>ProBook-87;ProBook 5330m</string>\n\t\t\t\t\t<key>167C</key>\n\t\t\t\t\t<string>ProBook-102;ProBook 4530s</string>\n\t\t\t\t\t<key>167E</key>\n\t\t\t\t\t<string>ProBook-102;ProBook 4330s</string>\n\t\t\t\t\t<key>1680</key>\n\t\t\t\t\t<string>ProBook-102;ProBook 4230s</string>\n\t\t\t\t\t<key>179B</key>\n\t\t\t\t\t<string>ProBook-87;ProBook 6470b</string>\n\t\t\t\t\t<key>179C</key>\n\t\t\t\t\t<string>ProBook-87;ProBook 6470b</string>\n\t\t\t\t\t<key>17A9</key>\n\t\t\t\t\t<string>ProBook-87;ProBook 8570b</string>\n\t\t\t\t\t<key>17F0</key>\n\t\t\t\t\t<string>ProBook-102;ProBook 4340s</string>\n\t\t\t\t\t<key>17F3</key>\n\t\t\t\t\t<string>ProBook-102;ProBook 4440s</string>\n\t\t\t\t\t<key>17F6</key>\n\t\t\t\t\t<string>ProBook-102;ProBook 4540s</string>\n\t\t\t\t\t<key>1942</key>\n\t\t\t\t\t<string>ProBook-87;ProBook 450s G1</string>\n\t\t\t\t\t<key>1949</key>\n\t\t\t\t\t<string>ProBook-87;ProBook 450s G1</string>\n\t\t\t\t\t<key>1962</key>\n\t\t\t\t\t<string>Haswell-Envy;HP Envy 15-j063cl</string>\n\t\t\t\t\t<key>1963</key>\n\t\t\t\t\t<string>Haswell-Envy;HP Envy 15-j063cl</string>\n\t\t\t\t\t<key>1965</key>\n\t\t\t\t\t<string>Haswell-Envy;HP Envy 17t-j100</string>\n\t\t\t\t\t<key>1966</key>\n\t\t\t\t\t<string>Haswell-Envy;HP Envy 17t-j000</string>\n\t\t\t\t\t<key>198F</key>\n\t\t\t\t\t<string>ProBook-87;ProBook 450s G0</string>\n\t\t\t\t\t<key>Haswell-Envy</key>\n\t\t\t\t\t<dict>\n\t\t\t\t\t\t<key>Custom ADB Map</key>\n\t\t\t\t\t\t<array>\n\t\t\t\t\t\t\t<string>e019=42;next</string>\n\t\t\t\t\t\t\t<string>e010=4d;previous</string>\n\t\t\t\t\t\t</array>\n\t\t\t\t\t\t<key>Custom PS2 Map</key>\n\t\t\t\t\t\t<array>\n\t\t\t\t\t\t\t<string>e045=e037</string>\n\t\t\t\t\t\t\t<string>e0ab=0;bogus Fn+F2/F3</string>\n\t\t\t\t\t\t</array>\n\t\t\t\t\t</dict>\n\t\t\t\t\t<key>ProBook-102</key>\n\t\t\t\t\t<dict>\n\t\t\t\t\t\t<key>Function Keys Special</key>\n\t\t\t\t\t\t<array>\n\t\t\t\t\t\t\t<string>;The following 12 items map Fn+fkeys to fkeys</string>\n\t\t\t\t\t\t\t<string>e05f=3b</string>\n\t\t\t\t\t\t\t<string>e012=3c</string>\n\t\t\t\t\t\t\t<string>e017=3d</string>\n\t\t\t\t\t\t\t<string>e06e=3e</string>\n\t\t\t\t\t\t\t<string>e00a=3f</string>\n\t\t\t\t\t\t\t<string>e009=40</string>\n\t\t\t\t\t\t\t<string>e020=41</string>\n\t\t\t\t\t\t\t<string>e02e=42</string>\n\t\t\t\t\t\t\t<string>e030=43</string>\n\t\t\t\t\t\t\t<string>e010=44</string>\n\t\t\t\t\t\t\t<string>e022=57</string>\n\t\t\t\t\t\t\t<string>e019=58</string>\n\t\t\t\t\t\t\t<string>;The following 12 items map fkeys to Fn+fkeys</string>\n\t\t\t\t\t\t\t<string>3b=e05f</string>\n\t\t\t\t\t\t\t<string>3c=e012</string>\n\t\t\t\t\t\t\t<string>3d=e017</string>\n\t\t\t\t\t\t\t<string>3e=e06e</string>\n\t\t\t\t\t\t\t<string>3f=e00a</string>\n\t\t\t\t\t\t\t<string>40=e009</string>\n\t\t\t\t\t\t\t<string>41=e020</string>\n\t\t\t\t\t\t\t<string>42=e02e</string>\n\t\t\t\t\t\t\t<string>43=e030</string>\n\t\t\t\t\t\t\t<string>44=e010</string>\n\t\t\t\t\t\t\t<string>57=e022</string>\n\t\t\t\t\t\t\t<string>58=e019</string>\n\t\t\t\t\t\t</array>\n\t\t\t\t\t\t<key>Function Keys Standard</key>\n\t\t\t\t\t\t<array>\n\t\t\t\t\t\t\t<string>;The following 12 items map Fn+fkeys to Fn+fkeys</string>\n\t\t\t\t\t\t\t<string>e05f=e05f</string>\n\t\t\t\t\t\t\t<string>e012=e012</string>\n\t\t\t\t\t\t\t<string>e017=e017</string>\n\t\t\t\t\t\t\t<string>e06e=e06e</string>\n\t\t\t\t\t\t\t<string>e00a=e00a</string>\n\t\t\t\t\t\t\t<string>e009=e009</string>\n\t\t\t\t\t\t\t<string>e020=e020</string>\n\t\t\t\t\t\t\t<string>e02e=e02e</string>\n\t\t\t\t\t\t\t<string>e030=e030</string>\n\t\t\t\t\t\t\t<string>e010=e010</string>\n\t\t\t\t\t\t\t<string>e022=e022</string>\n\t\t\t\t\t\t\t<string>e019=e019</string>\n\t\t\t\t\t\t\t<string>;The following 12 items map fkeys to fkeys</string>\n\t\t\t\t\t\t\t<string>3b=3b</string>\n\t\t\t\t\t\t\t<string>3c=3c</string>\n\t\t\t\t\t\t\t<string>3d=3d</string>\n\t\t\t\t\t\t\t<string>3e=3e</string>\n\t\t\t\t\t\t\t<string>3f=3f</string>\n\t\t\t\t\t\t\t<string>40=40</string>\n\t\t\t\t\t\t\t<string>41=41</string>\n\t\t\t\t\t\t\t<string>42=42</string>\n\t\t\t\t\t\t\t<string>43=43</string>\n\t\t\t\t\t\t\t<string>44=44</string>\n\t\t\t\t\t\t\t<string>57=57</string>\n\t\t\t\t\t\t\t<string>58=58</string>\n\t\t\t\t\t\t</array>\n\t\t\t\t\t\t<key>SleepPressTime</key>\n\t\t\t\t\t\t<integer>3000</integer>\n\t\t\t\t\t</dict>\n\t\t\t\t\t<key>ProBook-87</key>\n\t\t\t\t\t<dict>\n\t\t\t\t\t\t<key>Custom ADB Map</key>\n\t\t\t\t\t\t<array>\n\t\t\t\t\t\t\t<string>46=4d;scroll =&gt; Previous-track</string>\n\t\t\t\t\t\t\t<string>e045=34;pause =&gt; Play-Pause</string>\n\t\t\t\t\t\t\t<string>e052=42;insert =&gt; Next-track</string>\n\t\t\t\t\t\t\t<string>e046=92;break =&gt; Eject</string>\n\t\t\t\t\t\t</array>\n\t\t\t\t\t\t<key>Function Keys Special</key>\n\t\t\t\t\t\t<array>\n\t\t\t\t\t\t\t<string>;The following 8 items map Fn+fkeys to fkeys</string>\n\t\t\t\t\t\t\t<string>e05f=3d</string>\n\t\t\t\t\t\t\t<string>e06e=3e</string>\n\t\t\t\t\t\t\t<string>e02e=40</string>\n\t\t\t\t\t\t\t<string>e030=41</string>\n\t\t\t\t\t\t\t<string>e009=42</string>\n\t\t\t\t\t\t\t<string>e012=43</string>\n\t\t\t\t\t\t\t<string>e017=44</string>\n\t\t\t\t\t\t\t<string>e033=57</string>\n\t\t\t\t\t\t\t<string>;The following 8 items map fkeys to Fn+fkeys</string>\n\t\t\t\t\t\t\t<string>3d=e05f</string>\n\t\t\t\t\t\t\t<string>3e=e06e</string>\n\t\t\t\t\t\t\t<string>40=e02e</string>\n\t\t\t\t\t\t\t<string>41=e030</string>\n\t\t\t\t\t\t\t<string>42=e037</string>\n\t\t\t\t\t\t\t<string>43=e012</string>\n\t\t\t\t\t\t\t<string>44=e017</string>\n\t\t\t\t\t\t</array>\n\t\t\t\t\t\t<key>Function Keys Standard</key>\n\t\t\t\t\t\t<array>\n\t\t\t\t\t\t\t<string>;The following 8 items map Fn+fkeys to Fn+fkeys</string>\n\t\t\t\t\t\t\t<string>e05f=e05f</string>\n\t\t\t\t\t\t\t<string>e06e=e06e</string>\n\t\t\t\t\t\t\t<string>e02e=e02e</string>\n\t\t\t\t\t\t\t<string>e030=e030</string>\n\t\t\t\t\t\t\t<string>e009=e009</string>\n\t\t\t\t\t\t\t<string>e012=e012</string>\n\t\t\t\t\t\t\t<string>e017=e017</string>\n\t\t\t\t\t\t\t<string>e033=e033</string>\n\t\t\t\t\t\t\t<string>;The following 8 items map fkeys to fkeys</string>\n\t\t\t\t\t\t\t<string>3d=3d</string>\n\t\t\t\t\t\t\t<string>3e=3e</string>\n\t\t\t\t\t\t\t<string>40=40</string>\n\t\t\t\t\t\t\t<string>41=41</string>\n\t\t\t\t\t\t\t<string>42=42</string>\n\t\t\t\t\t\t\t<string>43=43</string>\n\t\t\t\t\t\t\t<string>44=44</string>\n\t\t\t\t\t\t</array>\n\t\t\t\t\t\t<key>SleepPressTime</key>\n\t\t\t\t\t\t<integer>3000</integer>\n\t\t\t\t\t</dict>\n\t\t\t\t</dict>\n\t\t\t\t<key>Intel</key>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>CALPELLA</key>\n\t\t\t\t\t<string>SamsungKeys</string>\n\t\t\t\t\t<key>SamsungKeys</key>\n\t\t\t\t\t<dict>\n\t\t\t\t\t\t<key>Breakless PS2</key>\n\t\t\t\t\t\t<array>\n\t\t\t\t\t\t\t<string>e003</string>\n\t\t\t\t\t\t\t<string>e002</string>\n\t\t\t\t\t\t\t<string>e004</string>\n\t\t\t\t\t\t\t<string>e020</string>\n\t\t\t\t\t\t\t<string>;e031</string>\n\t\t\t\t\t\t\t<string>e033</string>\n\t\t\t\t\t\t\t<string>e006</string>\n\t\t\t\t\t\t\t<string>e077</string>\n\t\t\t\t\t\t\t<string>e079</string>\n\t\t\t\t\t\t\t<string>e008</string>\n\t\t\t\t\t\t\t<string>e009</string>\n\t\t\t\t\t\t</array>\n\t\t\t\t\t\t<key>Custom ADB Map</key>\n\t\t\t\t\t\t<array>\n\t\t\t\t\t\t\t<string>e002=70</string>\n\t\t\t\t\t\t\t<string>e006=80</string>\n\t\t\t\t\t\t\t<string>e008=71 (was =90)</string>\n\t\t\t\t\t\t\t<string>e009=6b (was =91)</string>\n\t\t\t\t\t\t</array>\n\t\t\t\t\t\t<key>Function Keys Special</key>\n\t\t\t\t\t\t<array>\n\t\t\t\t\t\t\t<string>;The following 12 items map Fn+fkeys to fkeys</string>\n\t\t\t\t\t\t\t<string>;fn+f1 no code</string>\n\t\t\t\t\t\t\t<string>e003=3c</string>\n\t\t\t\t\t\t\t<string>;fn+f3 weird code</string>\n\t\t\t\t\t\t\t<string>e002=3e</string>\n\t\t\t\t\t\t\t<string>e004=3f</string>\n\t\t\t\t\t\t\t<string>e020=40</string>\n\t\t\t\t\t\t\t<string>e031=41</string>\n\t\t\t\t\t\t\t<string>e033=42</string>\n\t\t\t\t\t\t\t<string>e006=43</string>\n\t\t\t\t\t\t\t<string>;fn+f10 weird code</string>\n\t\t\t\t\t\t\t<string>;fn+f11 no code</string>\n\t\t\t\t\t\t\t<string>;fn+f12 scrolllock</string>\n\t\t\t\t\t\t\t<string>;The following 12 items map fkeys to Fn+fkeys</string>\n\t\t\t\t\t\t\t<string>;fn+f1 no code</string>\n\t\t\t\t\t\t\t<string>3c=e003</string>\n\t\t\t\t\t\t\t<string>;fn+f3 weird code</string>\n\t\t\t\t\t\t\t<string>3e=e002</string>\n\t\t\t\t\t\t\t<string>3f=e004</string>\n\t\t\t\t\t\t\t<string>40=e020</string>\n\t\t\t\t\t\t\t<string>41=e031</string>\n\t\t\t\t\t\t\t<string>42=e033</string>\n\t\t\t\t\t\t\t<string>43=e006</string>\n\t\t\t\t\t\t\t<string>;fn+f10 weird code</string>\n\t\t\t\t\t\t\t<string>;fn+f11 no code</string>\n\t\t\t\t\t\t\t<string>;fn+f12 scrolllock</string>\n\t\t\t\t\t\t</array>\n\t\t\t\t\t\t<key>Function Keys Standard</key>\n\t\t\t\t\t\t<array>\n\t\t\t\t\t\t\t<string>;The following 12 items map Fn+fkeys to Fn+fkeys</string>\n\t\t\t\t\t\t\t<string>;fn+f1 no code</string>\n\t\t\t\t\t\t\t<string>e003=e003</string>\n\t\t\t\t\t\t\t<string>;fn+f3 weird code</string>\n\t\t\t\t\t\t\t<string>e002=e002</string>\n\t\t\t\t\t\t\t<string>e004=e004</string>\n\t\t\t\t\t\t\t<string>e020=e020</string>\n\t\t\t\t\t\t\t<string>e031=e031</string>\n\t\t\t\t\t\t\t<string>e033=e033</string>\n\t\t\t\t\t\t\t<string>e006=e006</string>\n\t\t\t\t\t\t\t<string>;fn+f10 weird code</string>\n\t\t\t\t\t\t\t<string>;fn+f11 no code</string>\n\t\t\t\t\t\t\t<string>;fn+f12 scrolllock</string>\n\t\t\t\t\t\t\t<string>;The following 12 items map fkeys to fkeys</string>\n\t\t\t\t\t\t\t<string>3b=3b</string>\n\t\t\t\t\t\t\t<string>3c=3c</string>\n\t\t\t\t\t\t\t<string>3d=3d</string>\n\t\t\t\t\t\t\t<string>3e=3e</string>\n\t\t\t\t\t\t\t<string>3f=3f</string>\n\t\t\t\t\t\t\t<string>40=40</string>\n\t\t\t\t\t\t\t<string>41=41</string>\n\t\t\t\t\t\t\t<string>42=42</string>\n\t\t\t\t\t\t\t<string>43=43</string>\n\t\t\t\t\t\t\t<string>44=44</string>\n\t\t\t\t\t\t\t<string>57=57</string>\n\t\t\t\t\t\t\t<string>58=58</string>\n\t\t\t\t\t\t</array>\n\t\t\t\t\t</dict>\n\t\t\t\t</dict>\n\t\t\t\t<key>SECCSD</key>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>LH43STAR</key>\n\t\t\t\t\t<string>SamsungKeys</string>\n\t\t\t\t\t<key>SamsungKeys</key>\n\t\t\t\t\t<dict>\n\t\t\t\t\t\t<key>Breakless PS2</key>\n\t\t\t\t\t\t<array>\n\t\t\t\t\t\t\t<string>e020</string>\n\t\t\t\t\t\t\t<string>e02e</string>\n\t\t\t\t\t\t\t<string>e030</string>\n\t\t\t\t\t\t</array>\n\t\t\t\t\t</dict>\n\t\t\t\t</dict>\n\t\t\t</dict>\n\t\t</dict>\n\t</dict>\n\t<key>OSBundleLibraries</key>\n\t<dict>\n\t\t<key>com.apple.iokit.IOHIDSystem</key>\n\t\t<string>1.1</string>\n\t\t<key>com.apple.kpi.bsd</key>\n\t\t<string>8.0.0</string>\n\t\t<key>com.apple.kpi.iokit</key>\n\t\t<string>8.0.0</string>\n\t\t<key>com.apple.kpi.libkern</key>\n\t\t<string>8.0.0</string>\n\t\t<key>com.apple.kpi.mach</key>\n\t\t<string>8.0.0</string>\n\t\t<key>com.apple.kpi.unsupported</key>\n\t\t<string>8.0.0</string>\n\t\t<key>org.rehabman.voodoo.driver.PS2Controller</key>\n\t\t<string>1.8.25</string>\n\t</dict>\n\t<key>OSBundleRequired</key>\n\t<string>Console</string>\n\t<key>Source Code</key>\n\t<string>https://github.com/RehabMan/OS-X-Voodoo-PS2-Controller</string>\n</dict>\n</plist>\n"
  },
  {
    "path": "EFI/CLOVER/kexts/Other/VoodooPS2Controller_v1.8.25.kext/Contents/PlugIns/VoodooPS2Mouse.kext/Contents/Info.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>BuildMachineOSBuild</key>\n\t<string>16D32</string>\n\t<key>CFBundleExecutable</key>\n\t<string>VoodooPS2Mouse</string>\n\t<key>CFBundleGetInfoString</key>\n\t<string>1.8.25, Copyright Apple Computer, Inc. 2000-2004, Slice 2010, RehabMan 2012-2013</string>\n\t<key>CFBundleIdentifier</key>\n\t<string>org.rehabman.voodoo.driver.PS2Mouse</string>\n\t<key>CFBundleInfoDictionaryVersion</key>\n\t<string>6.0</string>\n\t<key>CFBundleName</key>\n\t<string>Voodoo PS/2 Mouse</string>\n\t<key>CFBundlePackageType</key>\n\t<string>KEXT</string>\n\t<key>CFBundleShortVersionString</key>\n\t<string>1.8.25</string>\n\t<key>CFBundleSignature</key>\n\t<string>????</string>\n\t<key>CFBundleSupportedPlatforms</key>\n\t<array>\n\t\t<string>MacOSX</string>\n\t</array>\n\t<key>CFBundleVersion</key>\n\t<string>1.8.25</string>\n\t<key>DTCompiler</key>\n\t<string>com.apple.compilers.llvm.clang.1_0</string>\n\t<key>DTPlatformBuild</key>\n\t<string>8C1002</string>\n\t<key>DTPlatformVersion</key>\n\t<string>GM</string>\n\t<key>DTSDKBuild</key>\n\t<string>16C58</string>\n\t<key>DTSDKName</key>\n\t<string>macosx10.12</string>\n\t<key>DTXcode</key>\n\t<string>0821</string>\n\t<key>DTXcodeBuild</key>\n\t<string>8C1002</string>\n\t<key>IOKitPersonalities</key>\n\t<dict>\n\t\t<key>ApplePS2Mouse</key>\n\t\t<dict>\n\t\t\t<key>CFBundleIdentifier</key>\n\t\t\t<string>org.rehabman.voodoo.driver.PS2Mouse</string>\n\t\t\t<key>HIDPointerAccelerationType</key>\n\t\t\t<string>HIDTrackpadAcceleration</string>\n\t\t\t<key>HIDScrollAccelerationType</key>\n\t\t\t<string>HIDTrackpadScrollAcceleration</string>\n\t\t\t<key>IOClass</key>\n\t\t\t<string>ApplePS2Mouse</string>\n\t\t\t<key>IOProviderClass</key>\n\t\t\t<string>ApplePS2MouseDevice</string>\n\t\t\t<key>Platform Profile</key>\n\t\t\t<dict>\n\t\t\t\t<key>Default</key>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>ActLikeTrackpad</key>\n\t\t\t\t\t<false/>\n\t\t\t\t\t<key>ButtonCount</key>\n\t\t\t\t\t<integer>3</integer>\n\t\t\t\t\t<key>DefaultResolution</key>\n\t\t\t\t\t<integer>240</integer>\n\t\t\t\t\t<key>DisableDevice</key>\n\t\t\t\t\t<false/>\n\t\t\t\t\t<key>DisableLEDUpdating</key>\n\t\t\t\t\t<false/>\n\t\t\t\t\t<key>FakeMiddleButton</key>\n\t\t\t\t\t<false/>\n\t\t\t\t\t<key>ForceDefaultResolution</key>\n\t\t\t\t\t<true/>\n\t\t\t\t\t<key>ForceSetResolution</key>\n\t\t\t\t\t<false/>\n\t\t\t\t\t<key>MiddleClickTime</key>\n\t\t\t\t\t<integer>100000000</integer>\n\t\t\t\t\t<key>MouseCount</key>\n\t\t\t\t\t<integer>0</integer>\n\t\t\t\t\t<key>MouseYInverter</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>QuietTimeAfterTyping</key>\n\t\t\t\t\t<integer>500000000</integer>\n\t\t\t\t\t<key>ResolutionMode</key>\n\t\t\t\t\t<integer>3</integer>\n\t\t\t\t\t<key>ScrollResolution</key>\n\t\t\t\t\t<integer>5</integer>\n\t\t\t\t\t<key>ScrollYInverter</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>TrackpadScroll</key>\n\t\t\t\t\t<true/>\n\t\t\t\t\t<key>WakeDelay</key>\n\t\t\t\t\t<integer>1000</integer>\n\t\t\t\t</dict>\n\t\t\t\t<key>HPQOEM</key>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>1411</key>\n\t\t\t\t\t<string>ProBook</string>\n\t\t\t\t\t<key>1619</key>\n\t\t\t\t\t<string>ProBook</string>\n\t\t\t\t\t<key>161C</key>\n\t\t\t\t\t<string>ProBook</string>\n\t\t\t\t\t<key>164F</key>\n\t\t\t\t\t<string>ProBook</string>\n\t\t\t\t\t<key>167C</key>\n\t\t\t\t\t<string>ProBook</string>\n\t\t\t\t\t<key>167E</key>\n\t\t\t\t\t<string>ProBook</string>\n\t\t\t\t\t<key>1680</key>\n\t\t\t\t\t<string>ProBook</string>\n\t\t\t\t\t<key>179B</key>\n\t\t\t\t\t<string>ProBook</string>\n\t\t\t\t\t<key>179C</key>\n\t\t\t\t\t<string>ProBook</string>\n\t\t\t\t\t<key>17A9</key>\n\t\t\t\t\t<string>ProBook</string>\n\t\t\t\t\t<key>17F0</key>\n\t\t\t\t\t<string>ProBook</string>\n\t\t\t\t\t<key>17F3</key>\n\t\t\t\t\t<string>ProBook</string>\n\t\t\t\t\t<key>17F6</key>\n\t\t\t\t\t<string>ProBook</string>\n\t\t\t\t\t<key>1942</key>\n\t\t\t\t\t<string>ProBook</string>\n\t\t\t\t\t<key>1949</key>\n\t\t\t\t\t<string>ProBook</string>\n\t\t\t\t\t<key>198F</key>\n\t\t\t\t\t<string>ProBook</string>\n\t\t\t\t\t<key>ProBook</key>\n\t\t\t\t\t<dict>\n\t\t\t\t\t\t<key>ActLikeTrackpad</key>\n\t\t\t\t\t\t<true/>\n\t\t\t\t\t\t<key>DisableDevice</key>\n\t\t\t\t\t\t<true/>\n\t\t\t\t\t</dict>\n\t\t\t\t\t<key>ProBook-102</key>\n\t\t\t\t\t<string>ProBook</string>\n\t\t\t\t\t<key>ProBook-87</key>\n\t\t\t\t\t<string>ProBook</string>\n\t\t\t\t</dict>\n\t\t\t</dict>\n\t\t\t<key>ProductID</key>\n\t\t\t<integer>547</integer>\n\t\t\t<key>USBMouseStopsTrackpad</key>\n\t\t\t<integer>0</integer>\n\t\t\t<key>VendorID</key>\n\t\t\t<integer>1452</integer>\n\t\t</dict>\n\t</dict>\n\t<key>OSBundleLibraries</key>\n\t<dict>\n\t\t<key>com.apple.iokit.IOHIDFamily</key>\n\t\t<string>1.0.0b1</string>\n\t\t<key>com.apple.kpi.iokit</key>\n\t\t<string>9.0.0</string>\n\t\t<key>com.apple.kpi.libkern</key>\n\t\t<string>9.0.0</string>\n\t\t<key>com.apple.kpi.mach</key>\n\t\t<string>9.0.0</string>\n\t\t<key>org.rehabman.voodoo.driver.PS2Controller</key>\n\t\t<string>1.8.25</string>\n\t</dict>\n\t<key>OSBundleRequired</key>\n\t<string>Console</string>\n\t<key>Source Code</key>\n\t<string>https://github.com/RehabMan/OS-X-Voodoo-PS2-Controller</string>\n</dict>\n</plist>\n"
  },
  {
    "path": "EFI/CLOVER/kexts/Other/VoodooPS2Controller_v1.8.25.kext/Contents/PlugIns/VoodooPS2Trackpad.kext/Contents/Info.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>BuildMachineOSBuild</key>\n\t<string>16D32</string>\n\t<key>CFBundleExecutable</key>\n\t<string>VoodooPS2Trackpad</string>\n\t<key>CFBundleGetInfoString</key>\n\t<string>1.8.25, Copyright Apple Computer, Inc. 2002-2003, mackerintel 2008, RehabMan 2012-2013</string>\n\t<key>CFBundleIdentifier</key>\n\t<string>org.rehabman.voodoo.driver.PS2Trackpad</string>\n\t<key>CFBundleInfoDictionaryVersion</key>\n\t<string>6.0</string>\n\t<key>CFBundleName</key>\n\t<string>Voodoo PS/2 Trackpad</string>\n\t<key>CFBundlePackageType</key>\n\t<string>KEXT</string>\n\t<key>CFBundleShortVersionString</key>\n\t<string>1.8.25</string>\n\t<key>CFBundleSignature</key>\n\t<string>????</string>\n\t<key>CFBundleSupportedPlatforms</key>\n\t<array>\n\t\t<string>MacOSX</string>\n\t</array>\n\t<key>CFBundleVersion</key>\n\t<string>1.8.25</string>\n\t<key>DTCompiler</key>\n\t<string>com.apple.compilers.llvm.clang.1_0</string>\n\t<key>DTPlatformBuild</key>\n\t<string>8C1002</string>\n\t<key>DTPlatformVersion</key>\n\t<string>GM</string>\n\t<key>DTSDKBuild</key>\n\t<string>16C58</string>\n\t<key>DTSDKName</key>\n\t<string>macosx10.12</string>\n\t<key>DTXcode</key>\n\t<string>0821</string>\n\t<key>DTXcodeBuild</key>\n\t<string>8C1002</string>\n\t<key>IOKitPersonalities</key>\n\t<dict>\n\t\t<key>ALPS GlidePoint</key>\n\t\t<dict>\n\t\t\t<key>CFBundleIdentifier</key>\n\t\t\t<string>org.rehabman.voodoo.driver.PS2Trackpad</string>\n\t\t\t<key>IOClass</key>\n\t\t\t<string>ApplePS2ALPSGlidePoint</string>\n\t\t\t<key>IOProbeScore</key>\n\t\t\t<integer>1500</integer>\n\t\t\t<key>IOProviderClass</key>\n\t\t\t<string>ApplePS2MouseDevice</string>\n\t\t\t<key>Platform Profile</key>\n\t\t\t<dict>\n\t\t\t\t<key>Default</key>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>DisableDevice</key>\n\t\t\t\t\t<false/>\n\t\t\t\t</dict>\n\t\t\t\t<key>HPQOEM</key>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>1411</key>\n\t\t\t\t\t<string>ProBook</string>\n\t\t\t\t\t<key>1619</key>\n\t\t\t\t\t<string>ProBook</string>\n\t\t\t\t\t<key>161C</key>\n\t\t\t\t\t<string>ProBook</string>\n\t\t\t\t\t<key>164F</key>\n\t\t\t\t\t<string>ProBook</string>\n\t\t\t\t\t<key>167C</key>\n\t\t\t\t\t<string>ProBook</string>\n\t\t\t\t\t<key>167E</key>\n\t\t\t\t\t<string>ProBook</string>\n\t\t\t\t\t<key>1680</key>\n\t\t\t\t\t<string>ProBook</string>\n\t\t\t\t\t<key>179B</key>\n\t\t\t\t\t<string>ProBook</string>\n\t\t\t\t\t<key>179C</key>\n\t\t\t\t\t<string>ProBook</string>\n\t\t\t\t\t<key>17A9</key>\n\t\t\t\t\t<string>ProBook</string>\n\t\t\t\t\t<key>17F0</key>\n\t\t\t\t\t<string>ProBook</string>\n\t\t\t\t\t<key>17F3</key>\n\t\t\t\t\t<string>ProBook</string>\n\t\t\t\t\t<key>17F6</key>\n\t\t\t\t\t<string>ProBook</string>\n\t\t\t\t\t<key>1942</key>\n\t\t\t\t\t<string>ProBook</string>\n\t\t\t\t\t<key>1949</key>\n\t\t\t\t\t<string>ProBook</string>\n\t\t\t\t\t<key>198F</key>\n\t\t\t\t\t<string>ProBook</string>\n\t\t\t\t\t<key>ProBook</key>\n\t\t\t\t\t<dict>\n\t\t\t\t\t\t<key>DisableDevice</key>\n\t\t\t\t\t\t<true/>\n\t\t\t\t\t</dict>\n\t\t\t\t\t<key>ProBook-102</key>\n\t\t\t\t\t<string>ProBook</string>\n\t\t\t\t\t<key>ProBook-87</key>\n\t\t\t\t\t<string>ProBook</string>\n\t\t\t\t</dict>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<key>Sentelic FSP</key>\n\t\t<dict>\n\t\t\t<key>CFBundleIdentifier</key>\n\t\t\t<string>org.rehabman.voodoo.driver.PS2Trackpad</string>\n\t\t\t<key>IOClass</key>\n\t\t\t<string>ApplePS2SentelicFSP</string>\n\t\t\t<key>IOProbeScore</key>\n\t\t\t<integer>5500</integer>\n\t\t\t<key>IOProviderClass</key>\n\t\t\t<string>ApplePS2MouseDevice</string>\n\t\t\t<key>Platform Profile</key>\n\t\t\t<dict>\n\t\t\t\t<key>Default</key>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>DisableDevice</key>\n\t\t\t\t\t<false/>\n\t\t\t\t</dict>\n\t\t\t\t<key>HPQOEM</key>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>1411</key>\n\t\t\t\t\t<string>ProBook</string>\n\t\t\t\t\t<key>1619</key>\n\t\t\t\t\t<string>ProBook</string>\n\t\t\t\t\t<key>161C</key>\n\t\t\t\t\t<string>ProBook</string>\n\t\t\t\t\t<key>164F</key>\n\t\t\t\t\t<string>ProBook</string>\n\t\t\t\t\t<key>167C</key>\n\t\t\t\t\t<string>ProBook</string>\n\t\t\t\t\t<key>167E</key>\n\t\t\t\t\t<string>ProBook</string>\n\t\t\t\t\t<key>1680</key>\n\t\t\t\t\t<string>ProBook</string>\n\t\t\t\t\t<key>179B</key>\n\t\t\t\t\t<string>ProBook</string>\n\t\t\t\t\t<key>179C</key>\n\t\t\t\t\t<string>ProBook</string>\n\t\t\t\t\t<key>17A9</key>\n\t\t\t\t\t<string>ProBook</string>\n\t\t\t\t\t<key>17F0</key>\n\t\t\t\t\t<string>ProBook</string>\n\t\t\t\t\t<key>17F3</key>\n\t\t\t\t\t<string>ProBook</string>\n\t\t\t\t\t<key>17F6</key>\n\t\t\t\t\t<string>ProBook</string>\n\t\t\t\t\t<key>1942</key>\n\t\t\t\t\t<string>ProBook</string>\n\t\t\t\t\t<key>1949</key>\n\t\t\t\t\t<string>ProBook</string>\n\t\t\t\t\t<key>198F</key>\n\t\t\t\t\t<string>ProBook</string>\n\t\t\t\t\t<key>ProBook</key>\n\t\t\t\t\t<dict>\n\t\t\t\t\t\t<key>DisableDevice</key>\n\t\t\t\t\t\t<true/>\n\t\t\t\t\t</dict>\n\t\t\t\t\t<key>ProBook-102</key>\n\t\t\t\t\t<string>ProBook</string>\n\t\t\t\t\t<key>ProBook-87</key>\n\t\t\t\t\t<string>ProBook</string>\n\t\t\t\t</dict>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<key>Synaptics TouchPad</key>\n\t\t<dict>\n\t\t\t<key>CFBundleIdentifier</key>\n\t\t\t<string>org.rehabman.voodoo.driver.PS2Trackpad</string>\n\t\t\t<key>HIDPointerAccelerationTable</key>\n\t\t\t<data>\n\t\t\tAACAAFVTQioABwAAAAAAAgAEAAAABAAAABAAAAAQAAAAACAAAA0A\n\t\t\tAIAAAACAAAABQAAAAYAAAAIAAAAC4AAAAwAAAATgAAAEAAAAB0AA\n\t\t\tAAUAAAAKAAAABgAAAA1AAAAIAAAAFgAAAArAAAAjAAAADQAAAC8A\n\t\t\tAAAOwAAAOMAAABBAAABBAAAAEcAAAEjAAAAAUAAADwAAgAAAAIAA\n\t\t\tAAEAAAABQAAAAYAAAAJAAAACAAAAA4AAAAKAAAAE4AAAAwAAAAZg\n\t\t\tAAAEAAAACgAAAAUAAAAOQAAABgAAABNAAAAIAAAAHsAAAArAAAAu\n\t\t\twAAADQAAADyAAAAOwAAARwAAABBAAABPwAAAEcAAAFiAAAAAgAAA\n\t\t\tDwAAgAAAAIAAAAEAAAABYAAAAYAAAAKgAAACAAAABEAAAAKAAAAG\n\t\t\tAAAAAwAAAAgAAAAEAAAADQAAAAUAAAASwAAABgAAABkAAAAIAAAA\n\t\t\tKAAAAArAAAA7wAAADQAAAEuAAAAOwAAAV0AAABBAAABgQAAAEcAA\n\t\t\tAGkAAAAAsAAADwAAgAAAAIAAAAEAAAABoAAAAYAAAAMAAAACAAAA\n\t\t\tBQAAAAKAAAAHQAAAAwAAAAnAAAAEAAAAEEAAAAUAAAAXgAAABgAA\n\t\t\tAB/AAAAIAAAAMgAAAArAAABKAAAADQAAAFyAAAAOwAAAaQAAABBA\n\t\t\tAABywAAAEcAAAHrAAAAA4AAADwAAgAAAAKAAAAEAAAABwAAAAYAA\n\t\t\tAANgAAACAAAABeAAAAKAAAAIoAAAAwAAAAvAAAAEAAAAE8AAAAUA\n\t\t\tAAAdQAAABgAAACfAAAAIAAAAPcAAAArAAABZAAAADQAAAG3AAAAO\n\t\t\twAAAe0AAABBAAACFQAAAEcAAAIxAAAABAAAADwAAgAAAAMAAAAEA\n\t\t\tAAACAAAAAYAAAAPgAAACAAAABsAAAAKAAAAKQAAAAwAAAA5gAAAE\n\t\t\tAAAAGMAAAAUAAAAkwAAABgAAADLAAAAIAAAATUAAAArAAABugAAA\n\t\t\tDQAAAIMAAAAOwAAAj0AAABBAAACXAAAAEcAAAJxAAA==\n\t\t\t</data>\n\t\t\t<key>HIDPointerAccelerationType</key>\n\t\t\t<string>HIDTrackpadAcceleration</string>\n\t\t\t<key>HIDScrollAccelerationTable</key>\n\t\t\t<data>\n\t\t\tAACAAFVTQioABwAAAAAAAQABAAAAAQAAAAAgAAAQAABxOwAATOMA\n\t\t\tAwAAAAdgAAAEwAAADoAAAAbxSgAX6V4ACVeCACMQWgALZ6EALBF7\n\t\t\tAA2N1AA03ToAD36aADvQuAASWKAARl01ABUAAABO2dgAF8AAAFXK\n\t\t\t7QAas+UAW2FQAB2QAABe0qoAIL75AGEgywAkLXsAYnXvACewAABj\n\t\t\tRl8AAIAAABMAAHE7AABWfwABAAAAAuAAAAIAAAAJYAAAAwAAABIA\n\t\t\tAAAEwAAAIMAAAAaAAAAwgAAACGp5AEH9tgAK7bUAV4ZuAA0B2ABr\n\t\t\tPTkADv1/AIEEcAAQy5gAkdRWABJouQCe3VAAE+c/AKikCgAXAucA\n\t\t\ttn2SABot3ADARE4AHVjQAMX4OgAg35IAytuYACQ4bgDO7mUAJ6CX\n\t\t\tANIwowAAsAAAFAAAcTsAAGFOAADAAAABwAAAAQAAAANgAAACAAAA\n\t\t\tDCAAAAMAAAAW4AAABMAAACnAAAAGQAAAOsAAAAfOggBP7OcACgWA\n\t\t\tAGo8rgAL658AhMCkAA2RCwCfR+EADzjIALWDbwAQ/k8AxqbEABLN\n\t\t\tUQDUeCMAFepmAOTKxwAZoVYA8qFmAB1CvwD7fXwAIQuCAQFpdAAk\n\t\t\tS20BBVKIACegAAEIK4wAAOAAABQAAHE7AABtdwAAwAAAAeAAAAEA\n\t\t\tAAAD4AAAAgAAAA6AAAADAAAAHEAAAATAAAA0AAAABgAAAEdAAAAH\n\t\t\tN4wAXL7hAAkAAACAwAAACoAAAKGAAAALz7IAvU7UAA01yQDadikA\n\t\t\tDvtPAPKF4gARLu4BCSWiABUlDwEfV8QAGT9oASzRKgAdChkBNQrG\n\t\t\tACDz5QE6cR4AJEARAT3XdgAnn1YBQMHWAABQAAATAABxOwAAS7AA\n\t\t\tAQAAAAJgAAACAAAABuAAAAMAAAAMYAAABMAAABcAAAAGwAAAJAAA\n\t\t\tAAkAAAAyAAAACz1uAEFngAANcE8AUMGhAA+sTQBgSTMAEagdAG5N\n\t\t\tTAATT9YAd9WQABTQfgB+26MAF3odAIbYXQAagocAjp+lAB2J6QCT\n\t\t\tvnkAIN/yAJdcWwAkO0IAmYu9ACegOACacdcAAQAAABUAAHE7AABW\n\t\t\tfwAAwAAAAiAAAAEAAAAEgAAAAYAAAAqAAAACAAAAEaAAAAMAAAAh\n\t\t\tgAAABMAAAD6AAAAFwAAAVEAAAAbAAABrAAAACAAAAIxAAAAJAAAA\n\t\t\tqYAAAApAAADKwAAAC8AAAPTAAAANwAABJAAAABAAAAFEn9IAFEAA\n\t\t\tAV49zAAZAAABbrsYABzQAAFz78AAIOAAAXhvwAAkIAABem/AACeg\n\t\t\tAAF8JGg=\n\t\t\t</data>\n\t\t\t<key>HIDScrollAccelerationType</key>\n\t\t\t<string>HIDTrackpadScrollAcceleration</string>\n\t\t\t<key>IOClass</key>\n\t\t\t<string>ApplePS2SynapticsTouchPad</string>\n\t\t\t<key>IOProbeScore</key>\n\t\t\t<integer>6000</integer>\n\t\t\t<key>IOProviderClass</key>\n\t\t\t<string>ApplePS2MouseDevice</string>\n\t\t\t<key>Platform Profile</key>\n\t\t\t<dict>\n\t\t\t\t<key>Default</key>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>BogusDeltaThreshX</key>\n\t\t\t\t\t<integer>0</integer>\n\t\t\t\t\t<key>BogusDeltaThreshY</key>\n\t\t\t\t\t<integer>0</integer>\n\t\t\t\t\t<key>ButtonCount</key>\n\t\t\t\t\t<integer>3</integer>\n\t\t\t\t\t<key>CenterX</key>\n\t\t\t\t\t<integer>3000</integer>\n\t\t\t\t\t<key>CenterY</key>\n\t\t\t\t\t<integer>3000</integer>\n\t\t\t\t\t<key>CircularScrollDivisor</key>\n\t\t\t\t\t<integer>0</integer>\n\t\t\t\t\t<key>CircularScrollTrigger</key>\n\t\t\t\t\t<integer>0</integer>\n\t\t\t\t\t<key>ClickPadClickTime</key>\n\t\t\t\t\t<integer>300000000</integer>\n\t\t\t\t\t<key>ClickPadTrackBoth</key>\n\t\t\t\t\t<true/>\n\t\t\t\t\t<key>Darwin 16.x</key>\n\t\t\t\t\t<dict>\n\t\t\t\t\t\t<key>ApplePreferenceCapability</key>\n\t\t\t\t\t\t<true/>\n\t\t\t\t\t\t<key>ApplePreferenceIdentifier</key>\n\t\t\t\t\t\t<string>com.apple.AppleMultitouchTrackpad</string>\n\t\t\t\t\t\t<key>MT Built-in</key>\n\t\t\t\t\t\t<true/>\n\t\t\t\t\t\t<key>MTHIDDevice</key>\n\t\t\t\t\t\t<true/>\n\t\t\t\t\t\t<key>SupportsGestureScrolling</key>\n\t\t\t\t\t\t<true/>\n\t\t\t\t\t\t<key>TrackpadEmbedded</key>\n\t\t\t\t\t\t<true/>\n\t\t\t\t\t\t<key>TrackpadFourFingerGestures</key>\n\t\t\t\t\t\t<false/>\n\t\t\t\t\t\t<key>TrackpadSecondaryClickCorners</key>\n\t\t\t\t\t\t<true/>\n\t\t\t\t\t\t<key>TrackpadThreeFingerDrag</key>\n\t\t\t\t\t\t<true/>\n\t\t\t\t\t</dict>\n\t\t\t\t\t<key>DisableDevice</key>\n\t\t\t\t\t<false/>\n\t\t\t\t\t<key>DisableLEDUpdating</key>\n\t\t\t\t\t<false/>\n\t\t\t\t\t<key>DisableZoneBottom</key>\n\t\t\t\t\t<integer>4200</integer>\n\t\t\t\t\t<key>DisableZoneControl</key>\n\t\t\t\t\t<integer>0</integer>\n\t\t\t\t\t<key>DisableZoneLeft</key>\n\t\t\t\t\t<integer>0</integer>\n\t\t\t\t\t<key>DisableZoneRight</key>\n\t\t\t\t\t<integer>1700</integer>\n\t\t\t\t\t<key>DisableZoneTop</key>\n\t\t\t\t\t<integer>99999</integer>\n\t\t\t\t\t<key>DivisorX</key>\n\t\t\t\t\t<integer>5</integer>\n\t\t\t\t\t<key>DivisorY</key>\n\t\t\t\t\t<integer>5</integer>\n\t\t\t\t\t<key>DoubleTapThresholdX</key>\n\t\t\t\t\t<integer>100</integer>\n\t\t\t\t\t<key>DoubleTapThresholdY</key>\n\t\t\t\t\t<integer>100</integer>\n\t\t\t\t\t<key>DragExitDelayTime</key>\n\t\t\t\t\t<integer>750000000</integer>\n\t\t\t\t\t<key>DragLockTempMask</key>\n\t\t\t\t\t<integer>1048592</integer>\n\t\t\t\t\t<key>Dragging</key>\n\t\t\t\t\t<integer>1</integer>\n\t\t\t\t\t<key>DynamicEWMode</key>\n\t\t\t\t\t<false/>\n\t\t\t\t\t<key>EdgeBottom</key>\n\t\t\t\t\t<integer>1700</integer>\n\t\t\t\t\t<key>EdgeLeft</key>\n\t\t\t\t\t<integer>1700</integer>\n\t\t\t\t\t<key>EdgeRight</key>\n\t\t\t\t\t<integer>5200</integer>\n\t\t\t\t\t<key>EdgeTop</key>\n\t\t\t\t\t<integer>4200</integer>\n\t\t\t\t\t<key>FakeMiddleButton</key>\n\t\t\t\t\t<true/>\n\t\t\t\t\t<key>FingerChangeIgnoreDeltas</key>\n\t\t\t\t\t<integer>3</integer>\n\t\t\t\t\t<key>FingerZ</key>\n\t\t\t\t\t<integer>30</integer>\n\t\t\t\t\t<key>HorizontalScrollDivisor</key>\n\t\t\t\t\t<integer>0</integer>\n\t\t\t\t\t<key>ImmediateClick</key>\n\t\t\t\t\t<false/>\n\t\t\t\t\t<key>MaxDragTime</key>\n\t\t\t\t\t<integer>180000000</integer>\n\t\t\t\t\t<key>MaxTapTime</key>\n\t\t\t\t\t<integer>130000000</integer>\n\t\t\t\t\t<key>MiddleClickTime</key>\n\t\t\t\t\t<integer>100000000</integer>\n\t\t\t\t\t<key>MomentumScrollDivisor</key>\n\t\t\t\t\t<integer>100</integer>\n\t\t\t\t\t<key>MomentumScrollMultiplier</key>\n\t\t\t\t\t<integer>98</integer>\n\t\t\t\t\t<key>MomentumScrollSamplesMin</key>\n\t\t\t\t\t<integer>3</integer>\n\t\t\t\t\t<key>MomentumScrollThreshY</key>\n\t\t\t\t\t<integer>18</integer>\n\t\t\t\t\t<key>MomentumScrollTimer</key>\n\t\t\t\t\t<integer>10000000</integer>\n\t\t\t\t\t<key>MouseCount</key>\n\t\t\t\t\t<integer>0</integer>\n\t\t\t\t\t<key>MouseMiddleScroll</key>\n\t\t\t\t\t<true/>\n\t\t\t\t\t<key>MouseMultiplierX</key>\n\t\t\t\t\t<integer>20</integer>\n\t\t\t\t\t<key>MouseMultiplierY</key>\n\t\t\t\t\t<integer>20</integer>\n\t\t\t\t\t<key>MouseScrollMultiplierX</key>\n\t\t\t\t\t<integer>20</integer>\n\t\t\t\t\t<key>MouseScrollMultiplierY</key>\n\t\t\t\t\t<integer>20</integer>\n\t\t\t\t\t<key>MultiFingerHorizontalDivisor</key>\n\t\t\t\t\t<integer>13</integer>\n\t\t\t\t\t<key>MultiFingerVerticalDivisor</key>\n\t\t\t\t\t<integer>13</integer>\n\t\t\t\t\t<key>MultiFingerWLimit</key>\n\t\t\t\t\t<integer>9</integer>\n\t\t\t\t\t<key>QuietTimeAfterTyping</key>\n\t\t\t\t\t<integer>500000000</integer>\n\t\t\t\t\t<key>Resolution</key>\n\t\t\t\t\t<integer>305</integer>\n\t\t\t\t\t<key>RightClickZoneBottom</key>\n\t\t\t\t\t<integer>0</integer>\n\t\t\t\t\t<key>RightClickZoneLeft</key>\n\t\t\t\t\t<integer>3800</integer>\n\t\t\t\t\t<key>RightClickZoneRight</key>\n\t\t\t\t\t<integer>99999</integer>\n\t\t\t\t\t<key>RightClickZoneTop</key>\n\t\t\t\t\t<integer>2000</integer>\n\t\t\t\t\t<key>ScrollDeltaThreshX</key>\n\t\t\t\t\t<integer>0</integer>\n\t\t\t\t\t<key>ScrollDeltaThreshY</key>\n\t\t\t\t\t<integer>0</integer>\n\t\t\t\t\t<key>ScrollResolution</key>\n\t\t\t\t\t<integer>305</integer>\n\t\t\t\t\t<key>SkipPassThrough</key>\n\t\t\t\t\t<false/>\n\t\t\t\t\t<key>SmoothInput</key>\n\t\t\t\t\t<true/>\n\t\t\t\t\t<key>StickyHorizontalScrolling</key>\n\t\t\t\t\t<false/>\n\t\t\t\t\t<key>StickyMultiFingerScrolling</key>\n\t\t\t\t\t<false/>\n\t\t\t\t\t<key>StickyVerticalScrolling</key>\n\t\t\t\t\t<false/>\n\t\t\t\t\t<key>SwapDoubleTriple</key>\n\t\t\t\t\t<false/>\n\t\t\t\t\t<key>SwipeDeltaX</key>\n\t\t\t\t\t<integer>800</integer>\n\t\t\t\t\t<key>SwipeDeltaY</key>\n\t\t\t\t\t<integer>800</integer>\n\t\t\t\t\t<key>TapThresholdX</key>\n\t\t\t\t\t<integer>50</integer>\n\t\t\t\t\t<key>TapThresholdY</key>\n\t\t\t\t\t<integer>50</integer>\n\t\t\t\t\t<key>USBMouseStopsTrackpad</key>\n\t\t\t\t\t<integer>0</integer>\n\t\t\t\t\t<key>UnitsPerMMX</key>\n\t\t\t\t\t<integer>50</integer>\n\t\t\t\t\t<key>UnitsPerMMY</key>\n\t\t\t\t\t<integer>50</integer>\n\t\t\t\t\t<key>UnsmoothInput</key>\n\t\t\t\t\t<true/>\n\t\t\t\t\t<key>UseHighRate</key>\n\t\t\t\t\t<true/>\n\t\t\t\t\t<key>VerticalScrollDivisor</key>\n\t\t\t\t\t<integer>0</integer>\n\t\t\t\t\t<key>WakeDelay</key>\n\t\t\t\t\t<integer>1000</integer>\n\t\t\t\t\t<key>ZLimit</key>\n\t\t\t\t\t<integer>115</integer>\n\t\t\t\t\t<key>ZoneBottom</key>\n\t\t\t\t\t<integer>0</integer>\n\t\t\t\t\t<key>ZoneLeft</key>\n\t\t\t\t\t<integer>1700</integer>\n\t\t\t\t\t<key>ZoneRight</key>\n\t\t\t\t\t<integer>5200</integer>\n\t\t\t\t\t<key>ZoneTop</key>\n\t\t\t\t\t<integer>99999</integer>\n\t\t\t\t</dict>\n\t\t\t\t<key>HPQOEM</key>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>1411</key>\n\t\t\t\t\t<string>ProBook</string>\n\t\t\t\t\t<key>1619</key>\n\t\t\t\t\t<string>ProBook</string>\n\t\t\t\t\t<key>161C</key>\n\t\t\t\t\t<string>ProBook</string>\n\t\t\t\t\t<key>164F</key>\n\t\t\t\t\t<string>ProBook</string>\n\t\t\t\t\t<key>167C</key>\n\t\t\t\t\t<string>ProBook</string>\n\t\t\t\t\t<key>167E</key>\n\t\t\t\t\t<string>ProBook</string>\n\t\t\t\t\t<key>1680</key>\n\t\t\t\t\t<string>ProBook</string>\n\t\t\t\t\t<key>179B</key>\n\t\t\t\t\t<string>ProBook</string>\n\t\t\t\t\t<key>179C</key>\n\t\t\t\t\t<string>ProBook</string>\n\t\t\t\t\t<key>17A9</key>\n\t\t\t\t\t<string>ProBook</string>\n\t\t\t\t\t<key>17F0</key>\n\t\t\t\t\t<string>ProBook</string>\n\t\t\t\t\t<key>17F3</key>\n\t\t\t\t\t<string>ProBook</string>\n\t\t\t\t\t<key>17F6</key>\n\t\t\t\t\t<string>ProBook</string>\n\t\t\t\t\t<key>1942</key>\n\t\t\t\t\t<string>ProBook</string>\n\t\t\t\t\t<key>1949</key>\n\t\t\t\t\t<string>ProBook</string>\n\t\t\t\t\t<key>198F</key>\n\t\t\t\t\t<string>ProBook</string>\n\t\t\t\t\t<key>ProBook</key>\n\t\t\t\t\t<dict>\n\t\t\t\t\t\t<key>FingerZ</key>\n\t\t\t\t\t\t<integer>40</integer>\n\t\t\t\t\t</dict>\n\t\t\t\t\t<key>ProBook-102</key>\n\t\t\t\t\t<string>ProBook</string>\n\t\t\t\t\t<key>ProBook-87</key>\n\t\t\t\t\t<string>ProBook</string>\n\t\t\t\t</dict>\n\t\t\t</dict>\n\t\t\t<key>ProductID</key>\n\t\t\t<integer>547</integer>\n\t\t\t<key>VendorID</key>\n\t\t\t<integer>1452</integer>\n\t\t</dict>\n\t</dict>\n\t<key>OSBundleLibraries</key>\n\t<dict>\n\t\t<key>com.apple.iokit.IOHIDSystem</key>\n\t\t<string>1.0.0b1</string>\n\t\t<key>com.apple.kpi.iokit</key>\n\t\t<string>9.0.0</string>\n\t\t<key>com.apple.kpi.libkern</key>\n\t\t<string>9.0.0</string>\n\t\t<key>com.apple.kpi.mach</key>\n\t\t<string>9.0.0</string>\n\t\t<key>org.rehabman.voodoo.driver.PS2Controller</key>\n\t\t<string>1.8.25</string>\n\t</dict>\n\t<key>OSBundleRequired</key>\n\t<string>Console</string>\n\t<key>Source Code</key>\n\t<string>https://github.com/RehabMan/OS-X-Voodoo-PS2-Controller</string>\n</dict>\n</plist>\n"
  },
  {
    "path": "EFI/CLOVER/kexts/Other/WhateverGreen_v1.3.0.kext/Contents/Info.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>BuildMachineOSBuild</key>\n\t<string>18G29g</string>\n\t<key>CFBundleDevelopmentRegion</key>\n\t<string>en</string>\n\t<key>CFBundleExecutable</key>\n\t<string>WhateverGreen</string>\n\t<key>CFBundleIdentifier</key>\n\t<string>as.vit9696.WhateverGreen</string>\n\t<key>CFBundleInfoDictionaryVersion</key>\n\t<string>6.0</string>\n\t<key>CFBundleName</key>\n\t<string>WhateverGreen</string>\n\t<key>CFBundlePackageType</key>\n\t<string>KEXT</string>\n\t<key>CFBundleShortVersionString</key>\n\t<string>1.3.0</string>\n\t<key>CFBundleSignature</key>\n\t<string>????</string>\n\t<key>CFBundleSupportedPlatforms</key>\n\t<array>\n\t\t<string>MacOSX</string>\n\t</array>\n\t<key>CFBundleVersion</key>\n\t<string>1.3.0</string>\n\t<key>DTCompiler</key>\n\t<string>com.apple.compilers.llvm.clang.1_0</string>\n\t<key>DTPlatformBuild</key>\n\t<string>10E1001</string>\n\t<key>DTPlatformVersion</key>\n\t<string>GM</string>\n\t<key>DTSDKBuild</key>\n\t<string>18E219</string>\n\t<key>DTSDKName</key>\n\t<string>macosx10.14</string>\n\t<key>DTXcode</key>\n\t<string>1020</string>\n\t<key>DTXcodeBuild</key>\n\t<string>10E1001</string>\n\t<key>IOKitPersonalities</key>\n\t<dict>\n\t\t<key>AppleIntelPanelA</key>\n\t\t<dict>\n\t\t\t<key>ApplePanels</key>\n\t\t\t<dict>\n\t\t\t\t<key>Default</key>\n\t\t\t\t<data>\n\t\t\t\tAAAHQAr3//4=\n\t\t\t\t</data>\n\t\t\t\t<key>F10P9c56</key>\n\t\t\t\t<data>\n\t\t\t\tAAAANQDiAP8=\n\t\t\t\t</data>\n\t\t\t\t<key>F10P9c57</key>\n\t\t\t\t<data>\n\t\t\t\tAAAANQDiAP8=\n\t\t\t\t</data>\n\t\t\t\t<key>F10P9c58</key>\n\t\t\t\t<data>\n\t\t\t\tAEYARgDXAP8=\n\t\t\t\t</data>\n\t\t\t\t<key>F10P9c59</key>\n\t\t\t\t<data>\n\t\t\t\tAEwATADMAP8=\n\t\t\t\t</data>\n\t\t\t\t<key>F10P9c5a</key>\n\t\t\t\t<data>\n\t\t\t\tAEwATADMAP8=\n\t\t\t\t</data>\n\t\t\t\t<key>F10P9c5b</key>\n\t\t\t\t<data>\n\t\t\t\tAAAAPgEHASg=\n\t\t\t\t</data>\n\t\t\t\t<key>F10P9c5c</key>\n\t\t\t\t<data>\n\t\t\t\tAAAAPgEHASg=\n\t\t\t\t</data>\n\t\t\t\t<key>F10P9c5d</key>\n\t\t\t\t<data>\n\t\t\t\tAAAAPgEHASg=\n\t\t\t\t</data>\n\t\t\t\t<key>F10P9c5e</key>\n\t\t\t\t<data>\n\t\t\t\tAAAAPgEHASg=\n\t\t\t\t</data>\n\t\t\t\t<key>F10P9c5f</key>\n\t\t\t\t<data>\n\t\t\t\tAAAAPgEHASg=\n\t\t\t\t</data>\n\t\t\t\t<key>F10P9c60</key>\n\t\t\t\t<data>\n\t\t\t\tAAAANQDiAP8=\n\t\t\t\t</data>\n\t\t\t\t<key>F10P9c61</key>\n\t\t\t\t<data>\n\t\t\t\tAAAANwDnAP8=\n\t\t\t\t</data>\n\t\t\t\t<key>F10P9c62</key>\n\t\t\t\t<data>\n\t\t\t\tAAAANwDnAP8=\n\t\t\t\t</data>\n\t\t\t\t<key>F10P9c63</key>\n\t\t\t\t<data>\n\t\t\t\tAAAAAADlAP8=\n\t\t\t\t</data>\n\t\t\t\t<key>F10P9c65</key>\n\t\t\t\t<data>\n\t\t\t\tAAAAAADlAP8=\n\t\t\t\t</data>\n\t\t\t\t<key>F10P9c69</key>\n\t\t\t\t<data>\n\t\t\t\tAAAANQDoAP8=\n\t\t\t\t</data>\n\t\t\t\t<key>F10P9c6a</key>\n\t\t\t\t<data>\n\t\t\t\tAEUATgDOAP8=\n\t\t\t\t</data>\n\t\t\t\t<key>F10P9c6b</key>\n\t\t\t\t<data>\n\t\t\t\tAEUATgDOAP8=\n\t\t\t\t</data>\n\t\t\t\t<key>F10P9c6c</key>\n\t\t\t\t<data>\n\t\t\t\tAAAADgDOAP8=\n\t\t\t\t</data>\n\t\t\t\t<key>F10P9c71</key>\n\t\t\t\t<data>\n\t\t\t\tAAAADgDOAP8=\n\t\t\t\t</data>\n\t\t\t\t<key>F10P9c72</key>\n\t\t\t\t<data>\n\t\t\t\tAAAANQDoAP8=\n\t\t\t\t</data>\n\t\t\t\t<key>F10P9c74</key>\n\t\t\t\t<data>\n\t\t\t\tABAAAAAeACUAMQA9AE8AZwCDAKkA2QEVAWUB6QJPAvcD\n\t\t\t\tzw==\n\t\t\t\t</data>\n\t\t\t\t<key>F10P9c7d</key>\n\t\t\t\t<data>\n\t\t\t\tAEUATgDOAP8=\n\t\t\t\t</data>\n\t\t\t\t<key>F10P9c7e</key>\n\t\t\t\t<data>\n\t\t\t\tAAAADgDOAP8=\n\t\t\t\t</data>\n\t\t\t\t<key>F10P9c8d</key>\n\t\t\t\t<data>\n\t\t\t\tAAAADgDOAP8=\n\t\t\t\t</data>\n\t\t\t\t<key>F10P9c8e</key>\n\t\t\t\t<data>\n\t\t\t\tAAAADgDOAP8=\n\t\t\t\t</data>\n\t\t\t\t<key>F10P9c92</key>\n\t\t\t\t<data>\n\t\t\t\tAEUATgDOAP8=\n\t\t\t\t</data>\n\t\t\t\t<key>F10P9c93</key>\n\t\t\t\t<data>\n\t\t\t\tAEUATgDOAP8=\n\t\t\t\t</data>\n\t\t\t\t<key>F10P9c94</key>\n\t\t\t\t<data>\n\t\t\t\tAEUATgDOAP8=\n\t\t\t\t</data>\n\t\t\t\t<key>F10P9c95</key>\n\t\t\t\t<data>\n\t\t\t\tAEUATgDOAP8=\n\t\t\t\t</data>\n\t\t\t\t<key>F10P9c96</key>\n\t\t\t\t<data>\n\t\t\t\tAAAADgDOAP8=\n\t\t\t\t</data>\n\t\t\t\t<key>F10T9c66</key>\n\t\t\t\t<data>\n\t\t\t\tABAAAAAeACUAMQA9AE8AZwCDAKkA2QEVAWUB6QJPAvcD\n\t\t\t\tzw==\n\t\t\t\t</data>\n\t\t\t\t<key>F10T9c67</key>\n\t\t\t\t<data>\n\t\t\t\tABAAAAAeACUAMQA9AE8AZwCDAKkA2QEVAWUB6QJPAvcD\n\t\t\t\tzw==\n\t\t\t\t</data>\n\t\t\t\t<key>F10T9c68</key>\n\t\t\t\t<data>\n\t\t\t\tABAAAAAeACUAMQA9AE8AZwCDAKkA2QEVAWUB6QJPAvcD\n\t\t\t\tzw==\n\t\t\t\t</data>\n\t\t\t\t<key>F10T9c6d</key>\n\t\t\t\t<data>\n\t\t\t\tABAAAAAeACUAMQA9AE8AZwCDAKkA2QEVAWUB6QJPAvcD\n\t\t\t\tzw==\n\t\t\t\t</data>\n\t\t\t\t<key>F10T9c6f</key>\n\t\t\t\t<data>\n\t\t\t\tABEAAAASABcAHgAnADMAQgBWAG8AkAC7APMBPAGaAhQC\n\t\t\t\tsgOA\n\t\t\t\t</data>\n\t\t\t\t<key>F10T9c70</key>\n\t\t\t\t<data>\n\t\t\t\tABAAAAAeACUAMQA9AE8AZwCDAKkA2QEVAWUB6QJPAvcD\n\t\t\t\tzw==\n\t\t\t\t</data>\n\t\t\t\t<key>F10T9c73</key>\n\t\t\t\t<data>\n\t\t\t\tABEAAAASABcAHgAnADMAQgBWAG8AkAC7APMBPAGaAhQC\n\t\t\t\tsgOA\n\t\t\t\t</data>\n\t\t\t\t<key>F10T9c79</key>\n\t\t\t\t<data>\n\t\t\t\tABEAAAAjACwANwBEAFUAagCFAKYAzwECAUIBkQH1AnID\n\t\t\t\tDQPP\n\t\t\t\t</data>\n\t\t\t\t<key>F10T9c79D</key>\n\t\t\t\t<data>\n\t\t\t\tABEAAAAjACwANwBEAFUAagCFAKYAzwECAUIBkQH1AnID\n\t\t\t\tDQPPAMg=\n\t\t\t\t</data>\n\t\t\t\t<key>F10T9c7aD</key>\n\t\t\t\t<data>\n\t\t\t\tABEAAAAjACwANwBEAFUAagCFAKYAzwECAUIBkQH1AnID\n\t\t\t\tDQPPAMg=\n\t\t\t\t</data>\n\t\t\t\t<key>F10T9c7c</key>\n\t\t\t\t<data>\n\t\t\t\tABEAAAASABcAHgAnADMAQgBWAG8AkAC7APMBPAGaAhQC\n\t\t\t\tsgOA\n\t\t\t\t</data>\n\t\t\t\t<key>F10T9c80D</key>\n\t\t\t\t<data>\n\t\t\t\tABAAAAAeACUAMQA9AE8AZwCDAKkA2QEVAWUB6QJPAvcD\n\t\t\t\tzwDI\n\t\t\t\t</data>\n\t\t\t\t<key>F10T9c81D</key>\n\t\t\t\t<data>\n\t\t\t\tABAAAAAeACUAMQA9AE8AZwCDAKkA2QEVAWUB6QJPAvcD\n\t\t\t\tzwDI\n\t\t\t\t</data>\n\t\t\t\t<key>F10T9c82D</key>\n\t\t\t\t<data>\n\t\t\t\tABAAAAAeACUAMQA9AE8AZwCDAKkA2QEVAWUB6QJPAvcD\n\t\t\t\tzwDI\n\t\t\t\t</data>\n\t\t\t\t<key>F10T9c83D</key>\n\t\t\t\t<data>\n\t\t\t\tABAAAAAeACUAMQA9AE8AZwCDAKkA2QEVAWUB6QJPAvcD\n\t\t\t\tzwDI\n\t\t\t\t</data>\n\t\t\t\t<key>F10T9c84</key>\n\t\t\t\t<data>\n\t\t\t\tABEAAAAQABUAGwAjAC4APABPAGgAiACzAOsBNQGWAhYC\n\t\t\t\tvgOa\n\t\t\t\t</data>\n\t\t\t\t<key>F10T9c85</key>\n\t\t\t\t<data>\n\t\t\t\tABEAAAAQABUAGwAjAC4APABPAGgAiACzAOsBNQGWAhYC\n\t\t\t\tvgOa\n\t\t\t\t</data>\n\t\t\t\t<key>F10T9c86</key>\n\t\t\t\t<data>\n\t\t\t\tABEAAAAQABUAGwAjAC4APABPAGgAiACzAOsBNQGWAhYC\n\t\t\t\tvgOa\n\t\t\t\t</data>\n\t\t\t\t<key>F10T9c89</key>\n\t\t\t\t<data>\n\t\t\t\tABEAAAAtADgARABUAGcAfgCcAL4A6gEgAWUBugIfAp0D\n\t\t\t\tPAQA\n\t\t\t\t</data>\n\t\t\t\t<key>F10T9c8a</key>\n\t\t\t\t<data>\n\t\t\t\tABEAAAAtADgARABUAGcAfgCcAL4A6gEgAWUBugIfAp0D\n\t\t\t\tPAQA\n\t\t\t\t</data>\n\t\t\t\t<key>F10T9c8b</key>\n\t\t\t\t<data>\n\t\t\t\tABEAAAAtADgARABUAGcAfgCcAL4A6gEgAWUBugIfAp0D\n\t\t\t\tPAQA\n\t\t\t\t</data>\n\t\t\t\t<key>F10T9c8c</key>\n\t\t\t\t<data>\n\t\t\t\tABEAAAAtADgARABUAGcAfgCcAL4A6gEgAWUBugIfAp0D\n\t\t\t\tPAQA\n\t\t\t\t</data>\n\t\t\t\t<key>F10T9c8f</key>\n\t\t\t\t<data>\n\t\t\t\tABEAAAAdACUALgA6AEkAXAB0AJIAtwDmASEBagHGAjkC\n\t\t\t\tygOA\n\t\t\t\t</data>\n\t\t\t\t<key>F10T9c90</key>\n\t\t\t\t<data>\n\t\t\t\tABEAAAAdACUALgA6AEkAXAB0AJIAtwDmASEBagHGAjkC\n\t\t\t\tygOA\n\t\t\t\t</data>\n\t\t\t\t<key>F10T9c91</key>\n\t\t\t\t<data>\n\t\t\t\tABEAAAAdACUALgA6AEkAXAB0AJIAtwDmASEBagHGAjkC\n\t\t\t\tygOA\n\t\t\t\t</data>\n\t\t\t\t<key>F10T9c9a</key>\n\t\t\t\t<data>\n\t\t\t\tABEAAAAdACUALgA6AEkAXAB0AJIAtwDmASEBagHGAjkC\n\t\t\t\tygOA\n\t\t\t\t</data>\n\t\t\t\t<key>F10T9c9d</key>\n\t\t\t\t<data>\n\t\t\t\tABEAAAAdACUALgA6AEkAXAB0AJIAtwDmASEBagHGAjkC\n\t\t\t\tygOA\n\t\t\t\t</data>\n\t\t\t\t<key>F10T9c9e</key>\n\t\t\t\t<data>\n\t\t\t\tABEAAAAhACoANgBFAFkAdACXAMUA8AEmAWcBtwIcApsD\n\t\t\t\tOQQA\n\t\t\t\t</data>\n\t\t\t\t<key>F10T9c9f</key>\n\t\t\t\t<data>\n\t\t\t\tABEAAAAhACoANQBDAFYAbgCPALgA4gESAVABmwH6Am8D\n\t\t\t\tAgO/\n\t\t\t\t</data>\n\t\t\t\t<key>F10T9ca0</key>\n\t\t\t\t<data>\n\t\t\t\tABEAAAAhACoANgBFAFkAdACXAMUA8AEmAWcBtwIcApsD\n\t\t\t\tOQQA\n\t\t\t\t</data>\n\t\t\t\t<key>F10T9ca1</key>\n\t\t\t\t<data>\n\t\t\t\tABEAAAAhACoANQBDAFYAbgCPALgA4gESAVABmwH6Am8D\n\t\t\t\tAgO/\n\t\t\t\t</data>\n\t\t\t\t<key>F10T9ca2</key>\n\t\t\t\t<data>\n\t\t\t\tABEAAAAkACsANgBDAFQAaACDAKYAywD6ATUBfQHYAkgC\n\t\t\t\t1QOG\n\t\t\t\t</data>\n\t\t\t\t<key>F10T9ca3</key>\n\t\t\t\t<data>\n\t\t\t\tABEAAAAkACsANgBDAFQAaACDAKYAywD6ATUBfQHYAkgC\n\t\t\t\t1QOG\n\t\t\t\t</data>\n\t\t\t\t<key>F10T9ca4</key>\n\t\t\t\t<data>\n\t\t\t\tABEAAAAkACsANgBDAFQAaACDAKYAywD6ATUBfQHYAkgC\n\t\t\t\t1QOG\n\t\t\t\t</data>\n\t\t\t\t<key>F10T9ca5M</key>\n\t\t\t\t<data>\n\t\t\t\tABEAAAAtADgARABUAGcAfgCcAL4A6gEgAWUBugIfAp0D\n\t\t\t\tPAQABAA=\n\t\t\t\t</data>\n\t\t\t\t<key>F10T9ca6M</key>\n\t\t\t\t<data>\n\t\t\t\tABEAAAAtADgARABUAGcAfgCcAL4A6gEgAWUBugIfAp0D\n\t\t\t\tPAQABAA=\n\t\t\t\t</data>\n\t\t\t\t<key>F10T9ca7M</key>\n\t\t\t\t<data>\n\t\t\t\tABEAAAAtADgARABUAGcAfgCcAL4A6gEgAWUBugIfAp0D\n\t\t\t\tPAQABAA=\n\t\t\t\t</data>\n\t\t\t\t<key>F10T9ca8M</key>\n\t\t\t\t<data>\n\t\t\t\tABEAAAAtADgARABUAGcAfgCcAL4A6gEgAWUBugIfAp0D\n\t\t\t\tPAQABAA=\n\t\t\t\t</data>\n\t\t\t\t<key>F10T9ca9</key>\n\t\t\t\t<data>\n\t\t\t\tABEABgAIAA0AEQAXABsAIQAnAC4AOABAAE8AZQB/AKAA\n\t\t\t\tygD/\n\t\t\t\t</data>\n\t\t\t\t<key>F10T9caaM</key>\n\t\t\t\t<data>\n\t\t\t\tABEACgAQABYAHgAnADEAOwBKAFwAZABuAHwAjgClAL4A\n\t\t\t\tzQDYAQA=\n\t\t\t\t</data>\n\t\t\t\t<key>F10T9cabM</key>\n\t\t\t\t<data>\n\t\t\t\tABEACgAQABYAHgAnADEAOwBKAFwAZABuAHwAjgClAL4A\n\t\t\t\tzQDYAQA=\n\t\t\t\t</data>\n\t\t\t\t<key>F10T9cb0</key>\n\t\t\t\t<data>\n\t\t\t\tABEAAAAkACsANgBDAFQAaACDAKYAywD6ATUBfQHYAkgC\n\t\t\t\t1QOG\n\t\t\t\t</data>\n\t\t\t\t<key>F10T9cb1</key>\n\t\t\t\t<data>\n\t\t\t\tABEAAAAkACsANgBDAFQAaACDAKYAywD6ATUBfQHYAkgC\n\t\t\t\t1QOG\n\t\t\t\t</data>\n\t\t\t\t<key>F10T9cb2</key>\n\t\t\t\t<data>\n\t\t\t\tABEAAAAkACsANgBDAFQAaACDAKYAywD6ATUBfQHYAkgC\n\t\t\t\t1QOG\n\t\t\t\t</data>\n\t\t\t\t<key>F10T9cb5</key>\n\t\t\t\t<data>\n\t\t\t\tABEABgANABIAGQAhACoANgBDAFUAXgBpAHkAjACiALsA\n\t\t\t\t2gDy\n\t\t\t\t</data>\n\t\t\t\t<key>F10T9cb6</key>\n\t\t\t\t<data>\n\t\t\t\tABEAAAAkAC0AOABHAFoAcgCTALwA5wEdAV8BsQIVApYD\n\t\t\t\tNwQA\n\t\t\t\t</data>\n\t\t\t\t<key>F10T9cb7</key>\n\t\t\t\t<data>\n\t\t\t\tABEAAAAkAC0AOABHAFoAcgCTALwA5wEdAV8BsQIVApYD\n\t\t\t\tNwQA\n\t\t\t\t</data>\n\t\t\t\t<key>F10T9cb8</key>\n\t\t\t\t<data>\n\t\t\t\tABEAAAAjACsANgBEAFYAbQCMALQA3QEQAU8BnQH+AnkD\n\t\t\t\tDgPR\n\t\t\t\t</data>\n\t\t\t\t<key>F10T9cb9</key>\n\t\t\t\t<data>\n\t\t\t\tABEAAAAjACsANgBEAFYAbQCMALQA3QEQAU8BnQH+AnkD\n\t\t\t\tDgPR\n\t\t\t\t</data>\n\t\t\t\t<key>F10T9cba</key>\n\t\t\t\t<data>\n\t\t\t\tABEAAAAkAC0AOABHAFoAcgCTALwA5wEdAV8BsQIVApYD\n\t\t\t\tNwQA\n\t\t\t\t</data>\n\t\t\t\t<key>F10T9cbb</key>\n\t\t\t\t<data>\n\t\t\t\tABEAAAAkAC0AOABHAFoAcgCTALwA5wEdAV8BsQIVApYD\n\t\t\t\tNwQA\n\t\t\t\t</data>\n\t\t\t\t<key>F10T9cbcM</key>\n\t\t\t\t<data>\n\t\t\t\tABEACgAQABYAHgAnADEAOwBKAFwAZABuAHwAjgClAL4A\n\t\t\t\tzQDYAQA=\n\t\t\t\t</data>\n\t\t\t\t<key>F10T9cbd</key>\n\t\t\t\t<data>\n\t\t\t\tABEAAAAhACoANgBFAFkAdACXAMUA8AEmAWcBtwIcApsD\n\t\t\t\tOQQA\n\t\t\t\t</data>\n\t\t\t\t<key>F10T9cbeM</key>\n\t\t\t\t<data>\n\t\t\t\tABEAAAAiACwANgBGAFgAcgCUALwA5gEaAVwBqwIKAoID\n\t\t\t\tFgPOBAA=\n\t\t\t\t</data>\n\t\t\t\t<key>F10T9cc0M</key>\n\t\t\t\t<data>\n\t\t\t\tABEAAAAiACwANgBGAFgAcgCUALwA5gEaAVwBqwIKAoID\n\t\t\t\tFgPOBAA=\n\t\t\t\t</data>\n\t\t\t\t<key>F10T9cc1M</key>\n\t\t\t\t<data>\n\t\t\t\tABEAAAAiACwANgBGAFgAcgCUALwA5gEaAVwBqwIKAoID\n\t\t\t\tFgPOBAA=\n\t\t\t\t</data>\n\t\t\t\t<key>F10T9cc2</key>\n\t\t\t\t<data>\n\t\t\t\tABEAAAAhACoANQBDAFYAbgCPALgA4gESAVABmwH6Am8D\n\t\t\t\tAgO/\n\t\t\t\t</data>\n\t\t\t\t<key>F10T9cc3</key>\n\t\t\t\t<data>\n\t\t\t\tABEAAAAiACsANgBGAFgAbwCPALcA4QEUAVQBogIEAnoD\n\t\t\t\tDwPL\n\t\t\t\t</data>\n\t\t\t\t<key>F10T9cc5</key>\n\t\t\t\t<data>\n\t\t\t\tABEAAAAhACkANABCAFMAaQCHAKwA0wEDAT4BhwHiAlIC\n\t\t\t\t3gOP\n\t\t\t\t</data>\n\t\t\t\t<key>F10T9cc7</key>\n\t\t\t\t<data>\n\t\t\t\tABEAAAAiACsANgBGAFgAbwCPALcA4QEUAVQBogIEAnoD\n\t\t\t\tDwPL\n\t\t\t\t</data>\n\t\t\t\t<key>F10T9cc9</key>\n\t\t\t\t<data>\n\t\t\t\tABEAAAAiACsANgBGAFgAbwCPALcA4QEUAVQBogIEAnoD\n\t\t\t\tDwPL\n\t\t\t\t</data>\n\t\t\t\t<key>F10T9ccb</key>\n\t\t\t\t<data>\n\t\t\t\tABEAAAAhACkANABCAFMAaQCHAKwA0wEDAT4BhwHiAlIC\n\t\t\t\t3gOP\n\t\t\t\t</data>\n\t\t\t\t<key>F10T9cd1M</key>\n\t\t\t\t<data>\n\t\t\t\tABEAAAAiACwANgBGAFgAcgCUALwA5gEaAVwBqwIKAoID\n\t\t\t\tFgPOBAA=\n\t\t\t\t</data>\n\t\t\t\t<key>F10T9cd6</key>\n\t\t\t\t<data>\n\t\t\t\tABEABgALABQAHAAnADMAPwBOAFwAZwBzAIEAkQClAL8A\n\t\t\t\t2wD/\n\t\t\t\t</data>\n\t\t\t\t<key>F10T9cd7</key>\n\t\t\t\t<data>\n\t\t\t\tABEABgALABQAHAAnADMAPwBOAFwAZwBzAIEAkQClAL8A\n\t\t\t\t2wD/\n\t\t\t\t</data>\n\t\t\t\t<key>F10T9cd8M</key>\n\t\t\t\t<data>\n\t\t\t\tABEAAAAiACwANgBGAFgAcgCUALwA5gEaAVwBqwIKAoID\n\t\t\t\tFgPOBAA=\n\t\t\t\t</data>\n\t\t\t\t<key>F10T9cd9M</key>\n\t\t\t\t<data>\n\t\t\t\tABEAAAAiACwANgBGAFgAcgCUALwA5gEaAVwBqwIKAoID\n\t\t\t\tFgPOBAA=\n\t\t\t\t</data>\n\t\t\t\t<key>F10T9cdaM</key>\n\t\t\t\t<data>\n\t\t\t\tABEAAAAiACwANgBGAFgAcgCUALwA5gEaAVwBqwIKAoID\n\t\t\t\tFgPOBAA=\n\t\t\t\t</data>\n\t\t\t\t<key>F10T9cdbM</key>\n\t\t\t\t<data>\n\t\t\t\tABEAAAAiACwANgBGAFgAcgCUALwA5gEaAVwBqwIKAoID\n\t\t\t\tFgPOBAA=\n\t\t\t\t</data>\n\t\t\t\t<key>F10T9cdc</key>\n\t\t\t\t<data>\n\t\t\t\tABEABgALABQAHAAnADMAPwBOAFwAZwBzAIEAkQClAL8A\n\t\t\t\t2wD/\n\t\t\t\t</data>\n\t\t\t\t<key>F10T9cdd</key>\n\t\t\t\t<data>\n\t\t\t\tABEACgARABkAIwAwADwASwBaAGgAdQCEAJYAqwDBANUA\n\t\t\t\t5gD/\n\t\t\t\t</data>\n\t\t\t\t<key>F10T9cde</key>\n\t\t\t\t<data>\n\t\t\t\tABEABgANABcAIgAsADoASABZAGoAdACCAJQAqAC9ANIA\n\t\t\t\t5AD/\n\t\t\t\t</data>\n\t\t\t\t<key>F10T9cdf</key>\n\t\t\t\t<data>\n\t\t\t\tABEAAAAjAC4AOgBMAF8AeQCWALsA6QEiAWcBuwIgApwD\n\t\t\t\tMwPq\n\t\t\t\t</data>\n\t\t\t\t<key>F10T9cf0</key>\n\t\t\t\t<data>\n\t\t\t\tABEAAAAiACwAOABJAFsAdACQALUA4AEXAVcBqQILAoED\n\t\t\t\tEAPA\n\t\t\t\t</data>\n\t\t\t\t<key>F10T9cf2</key>\n\t\t\t\t<data>\n\t\t\t\tABEAAAAiACwAOQBJAF0AdQCTALgA5QEcAV8BswIXApID\n\t\t\t\tKAPe\n\t\t\t\t</data>\n\t\t\t\t<key>F10T9cf3</key>\n\t\t\t\t<data>\n\t\t\t\tABEAAAAhACoANgBFAFgAbwCMAK4A2QENAU0BnAH7Am8C\n\t\t\t\t+wOq\n\t\t\t\t</data>\n\t\t\t\t<key>F10T9cf4</key>\n\t\t\t\t<data>\n\t\t\t\tABEAAAAhACkANQBEAFYAbQCJAKoA1AEHAUYBkwHwAmIC\n\t\t\t\t6wOT\n\t\t\t\t</data>\n\t\t\t\t<key>F10T9cfc</key>\n\t\t\t\t<data>\n\t\t\t\tABEABgALABQAHAAnADMAPwBOAFwAZwBzAIEAkQClAL8A\n\t\t\t\t2wD/\n\t\t\t\t</data>\n\t\t\t\t<key>F10T9cfd</key>\n\t\t\t\t<data>\n\t\t\t\tABEACgAPABcAIQAtADkASABWAGEAbAB4AIYAmQCtAL4A\n\t\t\t\tzQDV\n\t\t\t\t</data>\n\t\t\t\t<key>F10T9cfeM</key>\n\t\t\t\t<data>\n\t\t\t\tABEAGAA3AF8AigCzAOsBJAFnAakB1AIJAlQCogL4A00D\n\t\t\t\tlgP/BAA=\n\t\t\t\t</data>\n\t\t\t\t<key>F10T9cff</key>\n\t\t\t\t<data>\n\t\t\t\tABEABgALABQAHAAnADMAPwBOAFwAZwBzAIEAkQClAL8A\n\t\t\t\t2wD/\n\t\t\t\t</data>\n\t\t\t\t<key>F10T9d0c</key>\n\t\t\t\t<data>\n\t\t\t\tABEABgALABQAHAAnADMAPwBOAFwAZwBzAIEAkQClAL8A\n\t\t\t\t2wD/\n\t\t\t\t</data>\n\t\t\t\t<key>F10T9d0d</key>\n\t\t\t\t<data>\n\t\t\t\tABEABgALABQAHAAnADMAPwBOAFwAZwBzAIEAkQClAL8A\n\t\t\t\t2wD/\n\t\t\t\t</data>\n\t\t\t\t<key>F10T9d0fM</key>\n\t\t\t\t<data>\n\t\t\t\tABEAGAA3AF8AigCzAOsBJAFnAakB1AIJAlQCogL4A00D\n\t\t\t\tlgP/BAA=\n\t\t\t\t</data>\n\t\t\t\t<key>F10Ta007</key>\n\t\t\t\t<data>\n\t\t\t\tABEABgALABQAHAAnADMAPwBOAFwAZwBzAIEAkQClAL8A\n\t\t\t\t2wD/\n\t\t\t\t</data>\n\t\t\t\t<key>F10Ta008</key>\n\t\t\t\t<data>\n\t\t\t\tABEABgALABQAHAAnADMAPwBOAFwAZwBzAIEAkQClAL8A\n\t\t\t\t2wD/\n\t\t\t\t</data>\n\t\t\t\t<key>F10Ta00aM</key>\n\t\t\t\t<data>\n\t\t\t\tABEAGAA3AF8AigCzAOsBJAFnAakB1AIJAlQCogL4A00D\n\t\t\t\tlgP/BAA=\n\t\t\t\t</data>\n\t\t\t\t<key>F10Ta00b</key>\n\t\t\t\t<data>\n\t\t\t\tABEABgALABQAHAAnADMAPwBOAFwAZwBzAIEAkQClAL8A\n\t\t\t\t2wD/\n\t\t\t\t</data>\n\t\t\t\t<key>F10Ta00cM</key>\n\t\t\t\t<data>\n\t\t\t\tABEAGAA3AF8AigCzAOsBJAFnAakB1AIJAlQCogL4A00D\n\t\t\t\tlgP/BAA=\n\t\t\t\t</data>\n\t\t\t\t<key>F10Ta00d</key>\n\t\t\t\t<data>\n\t\t\t\tABEABgALABQAHAAnADMAPwBOAFwAZwBzAIEAkQClAL8A\n\t\t\t\t2wD/\n\t\t\t\t</data>\n\t\t\t\t<key>F11P9c58</key>\n\t\t\t\t<data>\n\t\t\t\tAEoASgDuASg=\n\t\t\t\t</data>\n\t\t\t\t<key>F11P9c5b</key>\n\t\t\t\t<data>\n\t\t\t\tAAAANQDhAP8=\n\t\t\t\t</data>\n\t\t\t\t<key>F11P9c5c</key>\n\t\t\t\t<data>\n\t\t\t\tAAAANQDhAP8=\n\t\t\t\t</data>\n\t\t\t\t<key>F11P9c5d</key>\n\t\t\t\t<data>\n\t\t\t\tAAAANQDhAP8=\n\t\t\t\t</data>\n\t\t\t\t<key>F11P9c5e</key>\n\t\t\t\t<data>\n\t\t\t\tAAAANQDhAP8=\n\t\t\t\t</data>\n\t\t\t\t<key>F11P9c5f</key>\n\t\t\t\t<data>\n\t\t\t\tAAAANQDhAP8=\n\t\t\t\t</data>\n\t\t\t\t<key>F11T9c7f</key>\n\t\t\t\t<data>\n\t\t\t\tABEAAADHAP4BNQFsAaMB2gIRAkgCfwK2Au0DJANbA5ID\n\t\t\t\tyQQA\n\t\t\t\t</data>\n\t\t\t\t<key>F12P9c5b</key>\n\t\t\t\t<data>\n\t\t\t\tAAAAZAGqAeI=\n\t\t\t\t</data>\n\t\t\t\t<key>F12P9c5c</key>\n\t\t\t\t<data>\n\t\t\t\tAAAAZAGqAeI=\n\t\t\t\t</data>\n\t\t\t\t<key>F12P9c5e</key>\n\t\t\t\t<data>\n\t\t\t\tAAAAZAGqAeI=\n\t\t\t\t</data>\n\t\t\t\t<key>F12P9c5f</key>\n\t\t\t\t<data>\n\t\t\t\tAAAAZAGqAeI=\n\t\t\t\t</data>\n\t\t\t\t<key>F12P9c7f</key>\n\t\t\t\t<data>\n\t\t\t\tAAAAZAGqAeI=\n\t\t\t\t</data>\n\t\t\t\t<key>F12T9c6fL</key>\n\t\t\t\t<data>\n\t\t\t\tABEAAAJfA3cEPwUvBm8IJwoHDNcQRxRXGX8f5yh/Mx8/\n\t\t\t\tx1NYBAA=\n\t\t\t\t</data>\n\t\t\t\t<key>F12T9c73L</key>\n\t\t\t\t<data>\n\t\t\t\tABEAAAJfA3cEPwUvBm8IJwoHDNcQRxRXGX8f5yh/Mx8/\n\t\t\t\tx1NYBAA=\n\t\t\t\t</data>\n\t\t\t\t<key>F12T9c7cL</key>\n\t\t\t\t<data>\n\t\t\t\tABEAAAJfA3cEPwUvBm8IJwoHDNcQRxRXGX8f5yh/Mx8/\n\t\t\t\tx1NYBAA=\n\t\t\t\t</data>\n\t\t\t\t<key>F14T9cc3</key>\n\t\t\t\t<data>\n\t\t\t\tABEAAAAhADYAUQBzAJ4A0wEUAWQBxQImApsDJwPPBJsF\n\t\t\t\tjAar\n\t\t\t\t</data>\n\t\t\t\t<key>F14T9cc5</key>\n\t\t\t\t<data>\n\t\t\t\tABEAAAAgADQATQBuAJYAyAEGAVEBrQIMAnsDAAOdBF0F\n\t\t\t\tPgZM\n\t\t\t\t</data>\n\t\t\t\t<key>F14T9cc7</key>\n\t\t\t\t<data>\n\t\t\t\tABEAAAAhADYAUQBzAJ4A0wEUAWQBxQImApsDJwPPBJsF\n\t\t\t\tjAar\n\t\t\t\t</data>\n\t\t\t\t<key>F14T9cc9</key>\n\t\t\t\t<data>\n\t\t\t\tABEAAAAhADYAUQBzAJ4A0wEUAWQBxQImApsDJwPPBJsF\n\t\t\t\tjAar\n\t\t\t\t</data>\n\t\t\t\t<key>F14T9ccb</key>\n\t\t\t\t<data>\n\t\t\t\tABEAAAAgADQATQBuAJYAyAEGAVEBrQIMAnsDAAOdBF0F\n\t\t\t\tPgZM\n\t\t\t\t</data>\n\t\t\t\t<key>F14T9cdf</key>\n\t\t\t\t<data>\n\t\t\t\tABEAAAA8AFIAagCJAK4A2gEWAVkBtAIUAoIDDgO5BJAF\n\t\t\t\tmwbm\n\t\t\t\t</data>\n\t\t\t\t<key>F14T9cf0</key>\n\t\t\t\t<data>\n\t\t\t\tABEAAAA5AE8AaACDAKcA0gEJAUwBoQIAAmwC8gOYBGAF\n\t\t\t\tYAag\n\t\t\t\t</data>\n\t\t\t\t<key>F14T9cf2</key>\n\t\t\t\t<data>\n\t\t\t\tABEAAAA8AFEAawCJAK4A3AEXAVsBtgIVAoEDDAOyBIMF\n\t\t\t\tjgbU\n\t\t\t\t</data>\n\t\t\t\t<key>F14T9cf3</key>\n\t\t\t\t<data>\n\t\t\t\tABEAAAA6AE4AZwCCAKQA0AEHAUYBmgH5AmAC4gOABEQF\n\t\t\t\tPgZz\n\t\t\t\t</data>\n\t\t\t\t<key>F14T9cf4</key>\n\t\t\t\t<data>\n\t\t\t\tABEAAAA3AEkAYAB7AJ4AxwD6ATkBiwHqAlACzQNmBCYF\n\t\t\t\tHwZJ\n\t\t\t\t</data>\n\t\t\t\t<key>F14T9d0b</key>\n\t\t\t\t<data>\n\t\t\t\tABEAAAAhADYAUQBzAJ4A0wEUAWQBxQImApsDJwPPBJsF\n\t\t\t\tjAar\n\t\t\t\t</data>\n\t\t\t\t<key>F14Ta006</key>\n\t\t\t\t<data>\n\t\t\t\tABEAAAAhADYAUQBzAJ4A0wEUAWQBxQImApsDJwPPBJsF\n\t\t\t\tjAar\n\t\t\t\t</data>\n\t\t\t\t<key>F14Ta010</key>\n\t\t\t\t<data>\n\t\t\t\tABEAAAA5AE8AaACDAKcA0gEJAUwBoQIAAmwC8gOYBGAF\n\t\t\t\tYAag\n\t\t\t\t</data>\n\t\t\t\t<key>F14Ta013</key>\n\t\t\t\t<data>\n\t\t\t\tABEAAAAnADYAUAB2AJ0AzgEMAVkBrgIfApcDMgPgBLUF\n\t\t\t\togbE\n\t\t\t\t</data>\n\t\t\t\t<key>F14Ta014</key>\n\t\t\t\t<data>\n\t\t\t\tABEAAAAmADQATQBxAJcAxgECAUsBnQIKAn0DEgO4BIUF\n\t\t\t\taQaA\n\t\t\t\t</data>\n\t\t\t\t<key>F14Ta015</key>\n\t\t\t\t<data>\n\t\t\t\tABEAAAAnADYAUAB2AJ0AzgEMAVkBrgIfApcDMgPgBLUF\n\t\t\t\togbE\n\t\t\t\t</data>\n\t\t\t\t<key>F14Ta019</key>\n\t\t\t\t<data>\n\t\t\t\tABEAAAAfADQATwBxAJsAzwEOAV0BuwIvArkDYAQpBR4G\n\t\t\t\tRAed\n\t\t\t\t</data>\n\t\t\t\t<key>F14Ta022</key>\n\t\t\t\t<data>\n\t\t\t\tABEAAAAfADQATwBxAJsAzwEOAV0BuwIvArkDYAQpBR4G\n\t\t\t\tRAed\n\t\t\t\t</data>\n\t\t\t\t<key>F14Ta02b</key>\n\t\t\t\t<data>\n\t\t\t\tABEAAAAfADQATwBxAJsAzwEOAV0BvAIvArkDYAQqBR8G\n\t\t\t\tRQee\n\t\t\t\t</data>\n\t\t\t\t<key>F14Ta02c</key>\n\t\t\t\t<data>\n\t\t\t\tABEAAAAfADQATwBxAJsAzwEOAV0BvAIvArkDYAQqBR8G\n\t\t\t\tRQee\n\t\t\t\t</data>\n\t\t\t\t<key>F14Ta02e</key>\n\t\t\t\t<data>\n\t\t\t\tABEAAAAeADMATABtAJYAyQEGAVMBrgIeAqQDRgQKBPcG\n\t\t\t\tFAdj\n\t\t\t\t</data>\n\t\t\t\t<key>F14Ta02f</key>\n\t\t\t\t<data>\n\t\t\t\tABEAAAAeADMATABtAJYAyQEGAVMBrgIeAqQDRgQKBPcG\n\t\t\t\tFAdj\n\t\t\t\t</data>\n\t\t\t\t<key>F14Txxxx</key>\n\t\t\t\t<data>\n\t\t\t\tABEAAAA0AFIAcwCUAL4A+gE2AXIBxQIvArkDYAQaBQoG\n\t\t\t\tDgcQ\n\t\t\t\t</data>\n\t\t\t\t<key>F15T9cdf</key>\n\t\t\t\t<data>\n\t\t\t\tABEAAAA4AFgAggC5AP8BVwHDAkIC1QN9BD4FIQYyB4EJ\n\t\t\t\tDArZ\n\t\t\t\t</data>\n\t\t\t\t<key>F15T9cf0</key>\n\t\t\t\t<data>\n\t\t\t\tABEAAAA2AFQAfQCyAPUBSQGxAisCuANZBBME7AXzBzQI\n\t\t\t\trwpq\n\t\t\t\t</data>\n\t\t\t\t<key>F15T9cf2</key>\n\t\t\t\t<data>\n\t\t\t\tABEAAAA4AFgAggC5AP8BVwHDAkIC1QN9BD4FIQYyB4EJ\n\t\t\t\tDArZ\n\t\t\t\t</data>\n\t\t\t\t<key>F15T9cf3</key>\n\t\t\t\t<data>\n\t\t\t\tABEAAAA1AFQAfACwAPIBRgGsAiUCsQNQBAgE3wXjByEI\n\t\t\t\tmApO\n\t\t\t\t</data>\n\t\t\t\t<key>F15Ta010</key>\n\t\t\t\t<data>\n\t\t\t\tABEAAAA0AFIAeQCsAO0BPwGjAhoCogM+A/IExQXDBvsI\n\t\t\t\tagoX\n\t\t\t\t</data>\n\t\t\t\t<key>F15Ta018</key>\n\t\t\t\t<data>\n\t\t\t\tABEAAAAWACUAOABQAG4AkwDAAPgBOwGNAe8CZgL1A6ME\n\t\t\t\tdAVp\n\t\t\t\t</data>\n\t\t\t\t<key>F15Ta01a</key>\n\t\t\t\t<data>\n\t\t\t\tABEAAAAYACcAOgBSAHEAlgDEAPwBQAGTAfYCbgL+A6oE\n\t\t\t\teAVp\n\t\t\t\t</data>\n\t\t\t\t<key>F15Ta01b</key>\n\t\t\t\t<data>\n\t\t\t\tABEAAAA2AFQAfQCyAPUBSQGxAisCuANZBBME7AXzBzQI\n\t\t\t\trwpq\n\t\t\t\t</data>\n\t\t\t\t<key>F15Ta01c</key>\n\t\t\t\t<data>\n\t\t\t\tABEAAAAYACcAOgBSAHEAlgDEAPwBQAGTAfYCbgL+A6oE\n\t\t\t\teAVp\n\t\t\t\t</data>\n\t\t\t\t<key>F15Ta020</key>\n\t\t\t\t<data>\n\t\t\t\tABEAAAAWACUAOABQAG4AkwDAAPgBOwGNAe8CZgL1A6ME\n\t\t\t\tdAVp\n\t\t\t\t</data>\n\t\t\t\t<key>F15Ta027</key>\n\t\t\t\t<data>\n\t\t\t\tABEAAAAYACcAOgBSAHEAlgDEAPwBQAGTAfYCbgL+A6oE\n\t\t\t\teAVp\n\t\t\t\t</data>\n\t\t\t\t<key>F15Ta028</key>\n\t\t\t\t<data>\n\t\t\t\tABEAAAAYACcAOgBSAHEAlgDEAPwBQAGTAfYCbgL+A6oE\n\t\t\t\teAVp\n\t\t\t\t</data>\n\t\t\t\t<key>F15Ta029</key>\n\t\t\t\t<data>\n\t\t\t\tABEAAAAXACYAOgBSAHEAkwDEAPwBPwGRAfMCagL5A6UE\n\t\t\t\tcwVp\n\t\t\t\t</data>\n\t\t\t\t<key>F15Ta02a</key>\n\t\t\t\t<data>\n\t\t\t\tABEAAAAXACYAOQBSAHAAlQDCAPkBPQGOAfICawL+A6wE\n\t\t\t\teAVp\n\t\t\t\t</data>\n\t\t\t\t<key>F15Ta02d</key>\n\t\t\t\t<data>\n\t\t\t\tABEAAAA4AFgAggC5AP8BVwHDAkIC1QN9BD4FIQYyB4EJ\n\t\t\t\tDArZ\n\t\t\t\t</data>\n\t\t\t\t<key>F15Txxxx</key>\n\t\t\t\t<data>\n\t\t\t\tABEAAAA2AFQAfQCyAPUBSQGxAisCuANZBBME7AXzBzQI\n\t\t\t\trwrZ\n\t\t\t\t</data>\n\t\t\t\t<key>F16Ia039</key>\n\t\t\t\t<data>\n\t\t\t\tABEAAANpBc0IzgyhEWgXRx5yJ0Ax1T6ITZ5fknS7jaaq\n\t\t\t\tzMzM\n\t\t\t\t</data>\n\t\t\t\t<key>F16Ia03c</key>\n\t\t\t\t<data>\n\t\t\t\tABEAAANpBc0IzgyhEWgXRx5yJ0Ax1T6ITZ5fknS7jaaq\n\t\t\t\tzMzM\n\t\t\t\t</data>\n\t\t\t\t<key>F16Ia03d</key>\n\t\t\t\t<data>\n\t\t\t\tABEAAAKPA1MEWgWhB64KPQ4UE3QaXiQYMalEWV52gxG2\n\t\t\t\tx/97\n\t\t\t\t</data>\n\t\t\t\t<key>F16Ia03e</key>\n\t\t\t\t<data>\n\t\t\t\tABEAAAKPA1MEWgWhB64KPQ4UE3QaXiQYMalEWV52gxG2\n\t\t\t\tx/97\n\t\t\t\t</data>\n\t\t\t\t<key>F16Ta01a</key>\n\t\t\t\t<data>\n\t\t\t\tABEAAAAYACcAOgBSAHEAlgDEAPwBQAGTAfYCbgL+A6oE\n\t\t\t\teAVp\n\t\t\t\t</data>\n\t\t\t\t<key>F16Ta01c</key>\n\t\t\t\t<data>\n\t\t\t\tABEAAAAYACcAOgBSAHEAlgDEAPwBQAGTAfYCbgL+A6oE\n\t\t\t\teAVp\n\t\t\t\t</data>\n\t\t\t\t<key>F16Ta027</key>\n\t\t\t\t<data>\n\t\t\t\tABEAAAAYACcAOgBSAHEAlgDEAPwBQAGTAfYCbgL+A6oE\n\t\t\t\teAVp\n\t\t\t\t</data>\n\t\t\t\t<key>F16Ta028</key>\n\t\t\t\t<data>\n\t\t\t\tABEAAAAYACcAOgBSAHEAlgDEAPwBQAGTAfYCbgL+A6oE\n\t\t\t\teAVp\n\t\t\t\t</data>\n\t\t\t\t<key>F16Ta029</key>\n\t\t\t\t<data>\n\t\t\t\tABEAAAAYACcAOgBSAHEAlgDEAPwBQAGTAfYCbgL+A6oE\n\t\t\t\teAVp\n\t\t\t\t</data>\n\t\t\t\t<key>F16Ta030</key>\n\t\t\t\t<data>\n\t\t\t\tABEAAAALAA4AEwAZACIALgA+AFQAcgCcANUBIwGPAiUC\n\t\t\t\t8gQP\n\t\t\t\t</data>\n\t\t\t\t<key>F16Ta031</key>\n\t\t\t\t<data>\n\t\t\t\tABEAAAAMABAAFQAcACYAMwBFAF4AgACvAPABSAHCAmoD\n\t\t\t\tUgSS\n\t\t\t\t</data>\n\t\t\t\t<key>F16Ta033</key>\n\t\t\t\t<data>\n\t\t\t\tABEAAAANABIAFwAgACsAOQBOAGoAkADEAQ4BdQIEAsoD\n\t\t\t\t3wVp\n\t\t\t\t</data>\n\t\t\t\t<key>F16Ta034</key>\n\t\t\t\t<data>\n\t\t\t\tABEAAAANABIAFwAfACoAOABNAGkAjwDEAQ0BcgIAAscD\n\t\t\t\t3wVp\n\t\t\t\t</data>\n\t\t\t\t<key>F16Ta037</key>\n\t\t\t\t<data>\n\t\t\t\tABEAAAANABIAFwAfACoAOABNAGkAjwDEAQ0BcgIAAscD\n\t\t\t\t3wVp\n\t\t\t\t</data>\n\t\t\t\t<key>F16Txxxx</key>\n\t\t\t\t<data>\n\t\t\t\tABEAAAAYACcAOgBSAHEAlgDEAPwBQAGTAfYCbgL+A6oE\n\t\t\t\teAVs\n\t\t\t\t</data>\n\t\t\t\t<key>F17Ta033</key>\n\t\t\t\t<data>\n\t\t\t\tABEAAAANABIAFgAeACgANgBJAGMAhwC4AP0BXQHjApwD\n\t\t\t\tnwUP\n\t\t\t\t</data>\n\t\t\t\t<key>F17Ta034</key>\n\t\t\t\t<data>\n\t\t\t\tABEAAAANABIAGAAfACoAOABNAGgAjgDCAQoBbwH7AsAD\n\t\t\t\t1QVa\n\t\t\t\t</data>\n\t\t\t\t<key>F17Ta037</key>\n\t\t\t\t<data>\n\t\t\t\tABEAAAANABIAGAAfACoAOABNAGgAjgDCAQoBbwH7AsAD\n\t\t\t\t1QVa\n\t\t\t\t</data>\n\t\t\t\t<key>F17Txxxx</key>\n\t\t\t\t<data>\n\t\t\t\tABEAAAAfADQATwBxAJsAzwEOAV0BuwIvArkDYAQpBR4G\n\t\t\t\tRAeh\n\t\t\t\t</data>\n\t\t\t\t<key>F18Txxxx</key>\n\t\t\t\t<data>\n\t\t\t\tABEAAABTAIwA1QExAaICLgLYA64ErAXlB1kJHAs7DdAQ\n\t\t\t\t6hSZ\n\t\t\t\t</data>\n\t\t\t\t<key>F19Txxxx</key>\n\t\t\t\t<data>\n\t\t\t\tABEAAAKPA1MEWgWhB64KPQ4UE3QaXiQYMalEWV52gxG2\n\t\t\t\tx/97\n\t\t\t\t</data>\n\t\t\t\t<key>F24Txxxx</key>\n\t\t\t\t<data>\n\t\t\t\tABEAAQA0AFIAcwCUAL4A+gE2AXIBxQIvArkDYAQaBQoG\n\t\t\t\tDgcQ\n\t\t\t\t</data>\n\t\t\t</dict>\n\t\t\t<key>CFBundleIdentifier</key>\n\t\t\t<string>com.apple.driver.AppleBacklight</string>\n\t\t\t<key>IOClass</key>\n\t\t\t<string>AppleIntelPanelA</string>\n\t\t\t<key>IODisplayParameters</key>\n\t\t\t<dict>\n\t\t\t\t<key>brightness</key>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>max</key>\n\t\t\t\t\t<integer>255</integer>\n\t\t\t\t\t<key>min</key>\n\t\t\t\t\t<integer>40</integer>\n\t\t\t\t</dict>\n\t\t\t\t<key>commit</key>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>reg</key>\n\t\t\t\t\t<integer>0</integer>\n\t\t\t\t</dict>\n\t\t\t</dict>\n\t\t\t<key>IOMatchCategory</key>\n\t\t\t<string>IODisplayParameters</string>\n\t\t\t<key>IONameMatch</key>\n\t\t\t<string>backlight</string>\n\t\t\t<key>IOProbeScore</key>\n\t\t\t<integer>5000</integer>\n\t\t\t<key>IOProviderClass</key>\n\t\t\t<string>IOACPIPlatformDevice</string>\n\t\t</dict>\n\t\t<key>NVHDAEnabler</key>\n\t\t<dict>\n\t\t\t<key>CFBundleIdentifier</key>\n\t\t\t<string>as.vit9696.WhateverGreen</string>\n\t\t\t<key>IOClass</key>\n\t\t\t<string>NVHDAEnabler</string>\n\t\t\t<key>IOMatchCategory</key>\n\t\t\t<string>IOFramebuffer</string>\n\t\t\t<key>IOPCIClassMatch</key>\n\t\t\t<string>0x03000000&amp;0xff000000</string>\n\t\t\t<key>IOPCIMatch</key>\n\t\t\t<string>0x000010de&amp;0x0000ffff</string>\n\t\t\t<key>IOProbeScore</key>\n\t\t\t<integer>300000</integer>\n\t\t\t<key>IOProviderClass</key>\n\t\t\t<string>IOPCIDevice</string>\n\t\t</dict>\n\t\t<key>as.vit9696.WhateverGreen</key>\n\t\t<dict>\n\t\t\t<key>CFBundleIdentifier</key>\n\t\t\t<string>as.vit9696.WhateverGreen</string>\n\t\t\t<key>IOClass</key>\n\t\t\t<string>WhateverGreen</string>\n\t\t\t<key>IOMatchCategory</key>\n\t\t\t<string>WhateverGreen</string>\n\t\t\t<key>IOProviderClass</key>\n\t\t\t<string>IOResources</string>\n\t\t\t<key>IOResourceMatch</key>\n\t\t\t<string>IOKit</string>\n\t\t</dict>\n\t</dict>\n\t<key>NSHumanReadableCopyright</key>\n\t<string>Copyright © 2018 vit9696. All rights reserved.</string>\n\t<key>OSBundleCompatibleVersion</key>\n\t<string>1.0</string>\n\t<key>OSBundleLibraries</key>\n\t<dict>\n\t\t<key>as.vit9696.Lilu</key>\n\t\t<string>1.2.0</string>\n\t\t<key>com.apple.iokit.IOPCIFamily</key>\n\t\t<string>1.0.0b1</string>\n\t\t<key>com.apple.kpi.bsd</key>\n\t\t<string>12.0.0</string>\n\t\t<key>com.apple.kpi.dsep</key>\n\t\t<string>12.0.0</string>\n\t\t<key>com.apple.kpi.iokit</key>\n\t\t<string>12.0.0</string>\n\t\t<key>com.apple.kpi.libkern</key>\n\t\t<string>12.0.0</string>\n\t\t<key>com.apple.kpi.mach</key>\n\t\t<string>12.0.0</string>\n\t\t<key>com.apple.kpi.unsupported</key>\n\t\t<string>12.0.0</string>\n\t</dict>\n\t<key>OSBundleRequired</key>\n\t<string>Root</string>\n</dict>\n</plist>\n"
  },
  {
    "path": "EFI/CLOVER/misc/HdaCodec#0 (Realtek ALC256).txt",
    "content": "HdaCodecDump Start\r\nCodec: Realtek ALC256\r\nAddress: 0\r\nAFG Function Id: 0x1 (unsol 1)\r\nVendor ID: 0x10EC0256\r\nRevision ID: 0x00100002\r\nDefault PCM:\r\n    rates [0x0560]: 44100 48000 96000 192000\r\n    bits [0x000E]: 16 20 24\r\n    formats [0x00000001]: PCM\r\nDefault Amp-In caps: N/A\r\nDefault Amp-Out caps: N/A\r\nNode 0x02 [Audio Output] wcaps 0x0000041D: Stereo Amp-Out\r\n  Amp-Out caps: ofs=0x57, nsteps=0x57, stepsize=02, mute=0\r\n  Amp-Out vals: [0x57 0x57]\r\nNode 0x03 [Audio Output] wcaps 0x0000041D: Stereo Amp-Out\r\n  Amp-Out caps: ofs=0x57, nsteps=0x57, stepsize=02, mute=0\r\n  Amp-Out vals: [0x57 0x57]\r\nNode 0x04 [Vendor Defined Widget] wcaps 0x00F00000: Mono\r\nNode 0x05 [Vendor Defined Widget] wcaps 0x00F00000: Mono\r\nNode 0x06 [Audio Output] wcaps 0x00000611: Stereo Digital\r\nNode 0x07 [Audio Input] wcaps 0x0010051B: Stereo Amp-In\r\n  Amp-In caps: ofs=0x17, nsteps=0x3F, stepsize=02, mute=1\r\n  Amp-In vals: [0x97 0x97]\r\n  Connection: 1\r\n     0x24\r\nNode 0x08 [Audio Input] wcaps 0x0010051B: Stereo Amp-In\r\n  Amp-In caps: ofs=0x17, nsteps=0x3F, stepsize=02, mute=1\r\n  Amp-In vals: [0x97 0x97]\r\n  Connection: 1\r\n     0x23\r\nNode 0x09 [Audio Input] wcaps 0x0010051B: Stereo Amp-In\r\n  Amp-In caps: ofs=0x17, nsteps=0x3F, stepsize=02, mute=1\r\n  Amp-In vals: [0x97 0x97]\r\n  Connection: 1\r\n     0x22\r\nNode 0x0A [Vendor Defined Widget] wcaps 0x00F00000: Mono\r\nNode 0x0B [Vendor Defined Widget] wcaps 0x00F00000: Mono\r\nNode 0x0C [Vendor Defined Widget] wcaps 0x00F00000: Mono\r\nNode 0x0D [Vendor Defined Widget] wcaps 0x00F00000: Mono\r\nNode 0x0E [Vendor Defined Widget] wcaps 0x00F00000: Mono\r\nNode 0x0F [Vendor Defined Widget] wcaps 0x00F00000: Mono\r\nNode 0x10 [Vendor Defined Widget] wcaps 0x00F00000: Mono\r\nNode 0x11 [Vendor Defined Widget] wcaps 0x00F00000: Mono\r\nNode 0x12 [Pin Complex] wcaps 0x0040040B: Stereo Amp-In\r\n  Amp-In caps: ofs=0x00, nsteps=0x03, stepsize=27, mute=0\r\n  Amp-In vals:\r\n  Pincap 0x00000020: IN\r\n  Pin Default 0x90A60170: [Fixed] Mic at Int N/A\r\n    Conn = Digital, Color = Unknown\r\n    DefAssociation = 0x7, Sequence = 0x0\r\n  Pin-ctls: 0x00:\r\nNode 0x13 [Pin Complex] wcaps 0x0040040B: Stereo Amp-In\r\n  Amp-In caps: ofs=0x00, nsteps=0x03, stepsize=27, mute=0\r\n  Amp-In vals:\r\n  Pincap 0x00000020: IN\r\n  Pin Default 0x40000000: [None] Line Out at Ext N/A\r\n    Conn = Unknown, Color = Unknown\r\n    DefAssociation = 0x0, Sequence = 0x0\r\n  Pin-ctls: 0x00:\r\nNode 0x14 [Pin Complex] wcaps 0x0040058D: Stereo Amp-Out\r\n  Amp-Out caps: ofs=0x00, nsteps=0x00, stepsize=00, mute=1\r\n  Amp-Out vals: [0x00 0x00]\r\n  Pincap 0x00010014: OUT EAPD Detect\r\n  EAPD 0x2: EAPD\r\n  Pin Default 0x90170120: [Fixed] Speaker at Int N/A\r\n    Conn = Analog, Color = Unknown\r\n    DefAssociation = 0x2, Sequence = 0x0\r\n  Pin-ctls: 0x40: OUT\r\n  Connection: 1\r\n     0x02\r\nNode 0x15 [Vendor Defined Widget] wcaps 0x00F00000: Mono\r\nNode 0x16 [Vendor Defined Widget] wcaps 0x00F00000: Mono\r\nNode 0x17 [Vendor Defined Widget] wcaps 0x00F00000: Mono\r\nNode 0x18 [Pin Complex] wcaps 0x0040048B: Stereo Amp-In\r\n  Amp-In caps: ofs=0x00, nsteps=0x03, stepsize=27, mute=0\r\n  Amp-In vals:\r\n  Pincap 0x00003724: IN Detect\r\n  Pin Default 0x411111F0: [None] Speaker at Ext Rear\r\n    Conn = 1/8, Color = Black\r\n    DefAssociation = 0xF, Sequence = 0x0\r\n  Pin-ctls: 0x20: IN\r\nNode 0x19 [Pin Complex] wcaps 0x0040048B: Stereo Amp-In\r\n  Amp-In caps: ofs=0x00, nsteps=0x03, stepsize=27, mute=0\r\n  Amp-In vals:\r\n  Pincap 0x00003724: IN Detect\r\n  Pin Default 0x411111F0: [None] Speaker at Ext Rear\r\n    Conn = 1/8, Color = Black\r\n    DefAssociation = 0xF, Sequence = 0x0\r\n  Pin-ctls: 0x20: IN\r\nNode 0x1A [Pin Complex] wcaps 0x0040048B: Stereo Amp-In\r\n  Amp-In caps: ofs=0x00, nsteps=0x03, stepsize=27, mute=0\r\n  Amp-In vals:\r\n  Pincap 0x00003724: IN Detect\r\n  Pin Default 0x411111F0: [None] Speaker at Ext Rear\r\n    Conn = 1/8, Color = Black\r\n    DefAssociation = 0xF, Sequence = 0x0\r\n  Pin-ctls: 0x00:\r\nNode 0x1B [Pin Complex] wcaps 0x0040058F: Stereo Amp-In Amp-Out\r\n  Amp-In caps: ofs=0x00, nsteps=0x03, stepsize=27, mute=0\r\n  Amp-In vals: [0x00 0x00] [0x00 0x00]\r\n  Amp-Out caps: ofs=0x00, nsteps=0x00, stepsize=00, mute=1\r\n  Amp-Out vals: [0x80 0x80]\r\n  Pincap 0x00013734: IN OUT EAPD Detect\r\n  EAPD 0x2: EAPD\r\n  Pin Default 0x411111F0: [None] Speaker at Ext Rear\r\n    Conn = 1/8, Color = Black\r\n    DefAssociation = 0xF, Sequence = 0x0\r\n  Pin-ctls: 0x20: IN\r\n  Connection: 2\r\n     0x02 0x03\r\nNode 0x1C [Vendor Defined Widget] wcaps 0x00F00000: Mono\r\nNode 0x1D [Pin Complex] wcaps 0x00400400: Mono\r\n  Pincap 0x00000020: IN\r\n  Pin Default 0x40779A2D: [None] Modem Handset at Ext N/A\r\n    Conn = Analog, Color = Pink\r\n    DefAssociation = 0x2, Sequence = 0xD\r\n  Pin-ctls: 0x20: IN\r\nNode 0x1E [Pin Complex] wcaps 0x00400781: Stereo Digital\r\n  Pincap 0x00000014: OUT Detect\r\n  Pin Default 0x411111F0: [None] Speaker at Ext Rear\r\n    Conn = 1/8, Color = Black\r\n    DefAssociation = 0xF, Sequence = 0x0\r\n  Pin-ctls: 0x40: OUT\r\n  Connection: 1\r\n     0x06\r\nNode 0x1F [Vendor Defined Widget] wcaps 0x00F00000: Mono\r\nNode 0x20 [Vendor Defined Widget] wcaps 0x00F00040: Mono\r\nNode 0x21 [Pin Complex] wcaps 0x0040058D: Stereo Amp-Out\r\n  Amp-Out caps: ofs=0x00, nsteps=0x00, stepsize=00, mute=1\r\n  Amp-Out vals: [0x80 0x80]\r\n  Pincap 0x0001001C: OUT HP EAPD Detect\r\n  EAPD 0x2: EAPD\r\n  Pin Default 0x02211030: [Jack] HP Out at Ext Front\r\n    Conn = 1/8, Color = Black\r\n    DefAssociation = 0x3, Sequence = 0x0\r\n  Pin-ctls: 0x00:\r\n  Connection: 2\r\n     0x02 0x03\r\nNode 0x22 [Audio Mixer] wcaps 0x0020010B: Stereo Amp-In\r\n  Amp-In caps: ofs=0x00, nsteps=0x00, stepsize=00, mute=1\r\n  Amp-In vals: [0x80 0x80] [0x80 0x80] [0x80 0x80] [0x80 0x80] [0x80 0x80]\r\n  Connection: 5\r\n     0x18 0x19 0x1A 0x1B 0x1D\r\nNode 0x23 [Audio Mixer] wcaps 0x0020010B: Stereo Amp-In\r\n  Amp-In caps: ofs=0x00, nsteps=0x00, stepsize=00, mute=1\r\n  Amp-In vals: [0x80 0x80] [0x80 0x80] [0x80 0x80] [0x80 0x80] [0x80 0x80] [0x80 0x80]\r\n  Connection: 6\r\n     0x18 0x19 0x1A 0x1B 0x1D 0x12\r\nNode 0x24 [Audio Selector] wcaps 0x00300101: Stereo\r\n  Connection: 2\r\n     0x12 0x13\r\n"
  },
  {
    "path": "EFI/CLOVER/misc/HdaCodec#1 (Realtek ALC256).txt",
    "content": "HdaCodecDump Start\r\nCodec: Realtek ALC256\r\nAddress: 0\r\nAFG Function Id: 0x1 (unsol 1)\r\nVendor ID: 0x10EC0256\r\nRevision ID: 0x00100002\r\nDefault PCM:\r\n    rates [0x0560]: 44100 48000 96000 192000\r\n    bits [0x000E]: 16 20 24\r\n    formats [0x00000001]: PCM\r\nDefault Amp-In caps: N/A\r\nDefault Amp-Out caps: N/A\r\nNode 0x02 [Audio Output] wcaps 0x0000041D: Stereo Amp-Out\r\n  Amp-Out caps: ofs=0x57, nsteps=0x57, stepsize=02, mute=0\r\n  Amp-Out vals: [0x57 0x57]\r\nNode 0x03 [Audio Output] wcaps 0x0000041D: Stereo Amp-Out\r\n  Amp-Out caps: ofs=0x57, nsteps=0x57, stepsize=02, mute=0\r\n  Amp-Out vals: [0x57 0x57]\r\nNode 0x04 [Vendor Defined Widget] wcaps 0x00F00000: Mono\r\nNode 0x05 [Vendor Defined Widget] wcaps 0x00F00000: Mono\r\nNode 0x06 [Audio Output] wcaps 0x00000611: Stereo Digital\r\nNode 0x07 [Audio Input] wcaps 0x0010051B: Stereo Amp-In\r\n  Amp-In caps: ofs=0x17, nsteps=0x3F, stepsize=02, mute=1\r\n  Amp-In vals: [0x97 0x97]\r\n  Connection: 1\r\n     0x24\r\nNode 0x08 [Audio Input] wcaps 0x0010051B: Stereo Amp-In\r\n  Amp-In caps: ofs=0x17, nsteps=0x3F, stepsize=02, mute=1\r\n  Amp-In vals: [0x97 0x97]\r\n  Connection: 1\r\n     0x23\r\nNode 0x09 [Audio Input] wcaps 0x0010051B: Stereo Amp-In\r\n  Amp-In caps: ofs=0x17, nsteps=0x3F, stepsize=02, mute=1\r\n  Amp-In vals: [0x97 0x97]\r\n  Connection: 1\r\n     0x22\r\nNode 0x0A [Vendor Defined Widget] wcaps 0x00F00000: Mono\r\nNode 0x0B [Vendor Defined Widget] wcaps 0x00F00000: Mono\r\nNode 0x0C [Vendor Defined Widget] wcaps 0x00F00000: Mono\r\nNode 0x0D [Vendor Defined Widget] wcaps 0x00F00000: Mono\r\nNode 0x0E [Vendor Defined Widget] wcaps 0x00F00000: Mono\r\nNode 0x0F [Vendor Defined Widget] wcaps 0x00F00000: Mono\r\nNode 0x10 [Vendor Defined Widget] wcaps 0x00F00000: Mono\r\nNode 0x11 [Vendor Defined Widget] wcaps 0x00F00000: Mono\r\nNode 0x12 [Pin Complex] wcaps 0x0040040B: Stereo Amp-In\r\n  Amp-In caps: ofs=0x00, nsteps=0x03, stepsize=27, mute=0\r\n  Amp-In vals:\r\n  Pincap 0x00000020: IN\r\n  Pin Default 0x90A60170: [Fixed] Mic at Int N/A\r\n    Conn = Digital, Color = Unknown\r\n    DefAssociation = 0x7, Sequence = 0x0\r\n  Pin-ctls: 0x00:\r\nNode 0x13 [Pin Complex] wcaps 0x0040040B: Stereo Amp-In\r\n  Amp-In caps: ofs=0x00, nsteps=0x03, stepsize=27, mute=0\r\n  Amp-In vals:\r\n  Pincap 0x00000020: IN\r\n  Pin Default 0x40000000: [None] Line Out at Ext N/A\r\n    Conn = Unknown, Color = Unknown\r\n    DefAssociation = 0x0, Sequence = 0x0\r\n  Pin-ctls: 0x00:\r\nNode 0x14 [Pin Complex] wcaps 0x0040058D: Stereo Amp-Out\r\n  Amp-Out caps: ofs=0x00, nsteps=0x00, stepsize=00, mute=1\r\n  Amp-Out vals: [0x00 0x00]\r\n  Pincap 0x00010014: OUT EAPD Detect\r\n  EAPD 0x2: EAPD\r\n  Pin Default 0x90170120: [Fixed] Speaker at Int N/A\r\n    Conn = Analog, Color = Unknown\r\n    DefAssociation = 0x2, Sequence = 0x0\r\n  Pin-ctls: 0x40: OUT\r\n  Connection: 1\r\n     0x02\r\nNode 0x15 [Vendor Defined Widget] wcaps 0x00F00000: Mono\r\nNode 0x16 [Vendor Defined Widget] wcaps 0x00F00000: Mono\r\nNode 0x17 [Vendor Defined Widget] wcaps 0x00F00000: Mono\r\nNode 0x18 [Pin Complex] wcaps 0x0040048B: Stereo Amp-In\r\n  Amp-In caps: ofs=0x00, nsteps=0x03, stepsize=27, mute=0\r\n  Amp-In vals:\r\n  Pincap 0x00003724: IN Detect\r\n  Pin Default 0x411111F0: [None] Speaker at Ext Rear\r\n    Conn = 1/8, Color = Black\r\n    DefAssociation = 0xF, Sequence = 0x0\r\n  Pin-ctls: 0x20: IN\r\nNode 0x19 [Pin Complex] wcaps 0x0040048B: Stereo Amp-In\r\n  Amp-In caps: ofs=0x00, nsteps=0x03, stepsize=27, mute=0\r\n  Amp-In vals:\r\n  Pincap 0x00003724: IN Detect\r\n  Pin Default 0x411111F0: [None] Speaker at Ext Rear\r\n    Conn = 1/8, Color = Black\r\n    DefAssociation = 0xF, Sequence = 0x0\r\n  Pin-ctls: 0x20: IN\r\nNode 0x1A [Pin Complex] wcaps 0x0040048B: Stereo Amp-In\r\n  Amp-In caps: ofs=0x00, nsteps=0x03, stepsize=27, mute=0\r\n  Amp-In vals:\r\n  Pincap 0x00003724: IN Detect\r\n  Pin Default 0x411111F0: [None] Speaker at Ext Rear\r\n    Conn = 1/8, Color = Black\r\n    DefAssociation = 0xF, Sequence = 0x0\r\n  Pin-ctls: 0x00:\r\nNode 0x1B [Pin Complex] wcaps 0x0040058F: Stereo Amp-In Amp-Out\r\n  Amp-In caps: ofs=0x00, nsteps=0x03, stepsize=27, mute=0\r\n  Amp-In vals: [0x00 0x00] [0x00 0x00]\r\n  Amp-Out caps: ofs=0x00, nsteps=0x00, stepsize=00, mute=1\r\n  Amp-Out vals: [0x80 0x80]\r\n  Pincap 0x00013734: IN OUT EAPD Detect\r\n  EAPD 0x2: EAPD\r\n  Pin Default 0x411111F0: [None] Speaker at Ext Rear\r\n    Conn = 1/8, Color = Black\r\n    DefAssociation = 0xF, Sequence = 0x0\r\n  Pin-ctls: 0x20: IN\r\n  Connection: 2\r\n     0x02 0x03\r\nNode 0x1C [Vendor Defined Widget] wcaps 0x00F00000: Mono\r\nNode 0x1D [Pin Complex] wcaps 0x00400400: Mono\r\n  Pincap 0x00000020: IN\r\n  Pin Default 0x40779A2D: [None] Modem Handset at Ext N/A\r\n    Conn = Analog, Color = Pink\r\n    DefAssociation = 0x2, Sequence = 0xD\r\n  Pin-ctls: 0x20: IN\r\nNode 0x1E [Pin Complex] wcaps 0x00400781: Stereo Digital\r\n  Pincap 0x00000014: OUT Detect\r\n  Pin Default 0x411111F0: [None] Speaker at Ext Rear\r\n    Conn = 1/8, Color = Black\r\n    DefAssociation = 0xF, Sequence = 0x0\r\n  Pin-ctls: 0x40: OUT\r\n  Connection: 1\r\n     0x06\r\nNode 0x1F [Vendor Defined Widget] wcaps 0x00F00000: Mono\r\nNode 0x20 [Vendor Defined Widget] wcaps 0x00F00040: Mono\r\nNode 0x21 [Pin Complex] wcaps 0x0040058D: Stereo Amp-Out\r\n  Amp-Out caps: ofs=0x00, nsteps=0x00, stepsize=00, mute=1\r\n  Amp-Out vals: [0x80 0x80]\r\n  Pincap 0x0001001C: OUT HP EAPD Detect\r\n  EAPD 0x2: EAPD\r\n  Pin Default 0x02211030: [Jack] HP Out at Ext Front\r\n    Conn = 1/8, Color = Black\r\n    DefAssociation = 0x3, Sequence = 0x0\r\n  Pin-ctls: 0x00:\r\n  Connection: 2\r\n     0x02 0x03\r\nNode 0x22 [Audio Mixer] wcaps 0x0020010B: Stereo Amp-In\r\n  Amp-In caps: ofs=0x00, nsteps=0x00, stepsize=00, mute=1\r\n  Amp-In vals: [0x80 0x80] [0x80 0x80] [0x80 0x80] [0x80 0x80] [0x80 0x80]\r\n  Connection: 5\r\n     0x18 0x19 0x1A 0x1B 0x1D\r\nNode 0x23 [Audio Mixer] wcaps 0x0020010B: Stereo Amp-In\r\n  Amp-In caps: ofs=0x00, nsteps=0x00, stepsize=00, mute=1\r\n  Amp-In vals: [0x80 0x80] [0x80 0x80] [0x80 0x80] [0x80 0x80] [0x80 0x80] [0x80 0x80]\r\n  Connection: 6\r\n     0x18 0x19 0x1A 0x1B 0x1D 0x12\r\nNode 0x24 [Audio Selector] wcaps 0x00300101: Stereo\r\n  Connection: 2\r\n     0x12 0x13\r\n"
  },
  {
    "path": "EFI/CLOVER/misc/HdaCodec#2 (Intel Kaby Lake HDMI).txt",
    "content": "HdaCodecDump Start\r\nCodec: Intel Kaby Lake HDMI\r\nAddress: 2\r\nAFG Function Id: 0x1 (unsol 0)\r\nVendor ID: 0x8086280B\r\nRevision ID: 0x00100000\r\nDefault PCM: N/A\r\nDefault Amp-In caps: N/A\r\nDefault Amp-Out caps: N/A\r\nNode 0x02 [Audio Output] wcaps 0x00006611: Stereo Digital\r\nNode 0x03 [Pin Complex] wcaps 0x0040778D: Stereo Digital Amp-Out\r\n  Amp-Out caps: ofs=0x00, nsteps=0x00, stepsize=00, mute=1\r\n  Amp-Out vals: [0x00 0x00]\r\n  Pincap 0x09000094: OUT Detect HBR HDMI DP\r\n  Pin Default 0x18560010: [Jack] Digital Out at Int Special\r\n    Conn = Digital, Color = Unknown\r\n    DefAssociation = 0x1, Sequence = 0x0\r\n  Pin-ctls: 0x00:\r\n  Connection: 1\r\n     0x02\r\n"
  },
  {
    "path": "EFI/CLOVER/themes/Hackintosh_ID/force.txt",
    "content": ""
  },
  {
    "path": "EFI/CLOVER/themes/Hackintosh_ID/theme.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>Author</key>\n\t<string>Badruzeus</string>\n\t<key>Description</key>\n\t<string>Hackintosh Indonesia theme for Clover Bootloader. Version: 1.6</string>\n\t<key>Theme</key>\n\t<dict>\n\t\t<key>Background</key>\n\t\t<dict>\n\t\t\t<key>Dark</key>\n\t\t\t<true/>\n\t\t\t<key>Path</key>\n\t\t\t<string>background.png</string>\n\t\t\t<key>Type</key>\n\t\t\t<string>Tile</string>\n\t\t</dict>\n\t\t<key>Badges</key>\n\t\t<dict>\n\t\t\t<key>Inline</key>\n\t\t\t<false/>\n\t\t\t<key>Scale</key>\n\t\t\t<integer>16</integer>\n\t\t\t<key>Show</key>\n\t\t\t<true/>\n\t\t\t<key>Swap</key>\n\t\t\t<true/>\n\t\t</dict>\n\t\t<key>Banner</key>\n\t\t<string>logo.png</string>\n\t\t<key>BootCampStyle</key>\n\t\t<false/>\n\t\t<key>Components</key>\n\t\t<dict>\n\t\t\t<key>Banner</key>\n\t\t\t<true/>\n\t\t\t<key>Functions</key>\n\t\t\t<true/>\n\t\t\t<key>Help</key>\n\t\t\t<true/>\n\t\t\t<key>Label</key>\n\t\t\t<true/>\n\t\t\t<key>MenuTitle</key>\n\t\t\t<true/>\n\t\t\t<key>MenuTitleImage</key>\n\t\t\t<true/>\n\t\t\t<key>Revision</key>\n\t\t\t<true/>\n\t\t</dict>\n\t\t<key>Font</key>\n\t\t<dict>\n\t\t\t<key>CharWidth</key>\n\t\t\t<integer>12</integer>\n\t\t\t<key>Path</key>\n\t\t\t<string>Font_Telegrama_16pt_White.png</string>\n\t\t\t<key>Proportional</key>\n\t\t\t<false/>\n\t\t\t<key>Type</key>\n\t\t\t<string>Load</string>\n\t\t</dict>\n\t\t<key>Layout</key>\n\t\t<dict>\n\t\t\t<key>BannerOffset</key>\n\t\t\t<integer>50</integer>\n\t\t\t<key>ButtonOffset</key>\n\t\t\t<integer>64</integer>\n\t\t\t<key>SelectionBigWidth</key>\n\t\t\t<integer>288</integer>\n\t\t\t<key>TextOffset</key>\n\t\t\t<integer>-100</integer>\n\t\t\t<key>TileXSpace</key>\n\t\t\t<integer>128</integer>\n\t\t\t<key>TileYSpace</key>\n\t\t\t<integer>128</integer>\n\t\t</dict>\n\t\t<key>Origination</key>\n\t\t<dict>\n\t\t\t<key>DesignHeight</key>\n\t\t\t<integer>1080</integer>\n\t\t\t<key>DesignWidth</key>\n\t\t\t<integer>1920</integer>\n\t\t</dict>\n\t\t<key>Selection</key>\n\t\t<dict>\n\t\t\t<key>Big</key>\n\t\t\t<string>Selection_big.png</string>\n\t\t\t<key>ChangeNonSelectedGrey</key>\n\t\t\t<false/>\n\t\t\t<key>Color</key>\n\t\t\t<string>0x183C77FF</string>\n\t\t\t<key>OnTop</key>\n\t\t\t<true/>\n\t\t\t<key>Small</key>\n\t\t\t<string>Selection_small.png</string>\n\t\t</dict>\n\t</dict>\n\t<key>Version</key>\n\t<string>1.6</string>\n\t<key>Year</key>\n\t<string>2018</string>\n</dict>\n</plist>\n"
  },
  {
    "path": "EFI/CLOVER/themes/SimpleThemeDark/.hash",
    "content": "340eb36af3f8e4066909df417c498a4bb6fcdf75\n"
  },
  {
    "path": "EFI/CLOVER/themes/SimpleThemeDark/theme.plist",
    "content": " <?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>Author</key>\n\t<string>Chang</string>\n\t<key>Description</key>\n\t<string>A Simple Theme</string>\n\t<key>Theme</key>\n\t<dict>\n\t\t<key>Background</key>\n\t\t<dict>\n\t\t\t<key>Path</key>\n\t\t\t<string>background.png</string>\n\t\t\t<key>Type</key>\n\t\t\t<string>Tile</string>\n\t\t</dict>\n\t\t<key>Badges</key>\n\t\t<dict>\n\t\t\t<key>Show</key>\n\t\t\t<true/>\n\t\t\t<key>Swap</key>\n\t\t\t<true/>\n\t\t\t<key>Inline</key>\n\t\t\t<false/>\n\t\t</dict>\n\t\t<key>Banner</key>\n\t\t<string>banner.png</string>\n\t\t<key>Font</key>\n\t\t<dict>\n\t\t\t<key>Path</key>\n\t\t\t<string>font.png</string>\n\t\t\t<key>Type</key>\n\t\t\t<string>Load</string>\n\t\t\t<key>CharWidth</key>\n\t\t\t<integer>10</integer>\n\t\t</dict>\n\t\t<key>Selection</key>\n\t\t<dict>\n\t\t\t<key>Big</key>\n\t\t\t<string>selection_big.png</string>\n\t\t\t<key>Color</key>\n\t\t\t<string>0x6C6C6CFF</string>\n\t\t\t<key>Small</key>\n\t\t\t<string>selection_small.png</string>\n\t\t\t<key>OnTop</key>\n\t\t\t<true/>\n\t\t</dict>\n\t</dict>\n\t<key>Year</key>\n\t<string>2014</string>\n</dict>\n</plist>\n"
  },
  {
    "path": "EFI/Clover_Install_Log.txt",
    "content": "\nClover EFI installer log - Sun Sep 23 16:08:36 CST 2018\nInstaller version: v2.4k r4672 EFI bootloader\n======================================================\n/dev/disk0 (internal, physical):\n   #:                       TYPE NAME                    SIZE       IDENTIFIER\n   0:      GUID_partition_scheme                        *512.1 GB   disk0\n   1:                        EFI ESP                     524.3 MB   disk0s1\n   2:       Microsoft Basic Data WINDOWS10               65.7 GB    disk0s2\n   3:                 Apple_APFS Container disk2         31.5 GB    disk0s3\n   4:                 Apple_APFS Container disk3         100.4 GB   disk0s4\n   5:                  Apple_HFS DATAS                   205.3 GB   disk0s5\n   6:       Apple_KernelCoreDump                         655.4 MB   disk0s6\n   7:                  Apple_HFS 10.12.6                 56.8 GB    disk0s7\n   8:                 Apple_Boot Recovery HD             650.0 MB   disk0s8\n   9:                  Apple_HFS Install macOS High S... 9.2 GB     disk0s9\n  10:           Linux Filesystem                         10.0 GB    disk0s10\n  11:                  Apple_HFS 10.14                   30.4 GB    disk0s11\n  12:                 Apple_Boot Recovery HD             650.0 MB   disk0s12\n\n/dev/disk1 (internal, physical):\n   #:                       TYPE NAME                    SIZE       IDENTIFIER\n   0:      GUID_partition_scheme                        *1.0 TB     disk1\n   1:                        EFI ESP_HDD                 209.7 MB   disk1s1\n   2:                FreeBSD UFS                         120.3 GB   disk1s2\n   3:       Microsoft Basic Data BackUp                  213.5 GB   disk1s3\n   4:       Microsoft Basic Data DATAS2                  285.8 GB   disk1s4\n   5:                  Apple_HFS TimeMachine             379.9 GB   disk1s5\n\n/dev/disk2 (synthesized):\n   #:                       TYPE NAME                    SIZE       IDENTIFIER\n   0:      APFS Container Scheme -                      +31.5 GB    disk2\n                                 Physical Store disk0s3\n   1:                APFS Volume 10.13.6_17G2112         15.3 GB    disk2s1\n   2:                APFS Volume Preboot                 21.8 MB    disk2s2\n   3:                APFS Volume Recovery                515.8 MB   disk2s3\n   4:                APFS Volume VM                      1.1 GB     disk2s4\n\n/dev/disk3 (synthesized):\n   #:                       TYPE NAME                    SIZE       IDENTIFIER\n   0:      APFS Container Scheme -                      +100.4 GB   disk3\n                                 Physical Store disk0s4\n   1:                APFS Volume MAC                     64.3 GB    disk3s1\n   2:                APFS Volume Preboot                 125.1 MB   disk3s2\n   3:                APFS Volume Recovery                2.6 GB     disk3s3\n   4:                APFS Volume VM                      20.5 KB    disk3s4\n\nTarget volume /Volumes/MAC on disk3 is APFS on physical store disk0s4\n======================================================\nBacking up EFI files\n\nBacking up /Volumes/MAC/EFIROOTDIR/EFI folder to /Volumes/MAC/EFI-Backups/r4672/2018-09-23-16h08/EFI\n======================================================\nInstalling BootSectors/BootLoader\n\nStage 0 - Don't write any of boot0af, boot0md, boot0ss to /\nStage 1 - Don't write any of boot1h2, boot1f32alt, boot1xalt to /\n======================================================\nInstalling RC Scripts\n\nInstalling RC scripts on target volume '/'\n\nActivating /etc/rc.boot.d/70.disable_sleep_proxy_client.local rc script\n\n======================================================\n=========== Clover EFI Installation Finish ===========\n======================================================\n"
  },
  {
    "path": "HIDPI/DisplayVendorID-dae/DisplayProductID-15e0",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>DisplayBacklight</key>\n\t<real>575.5</real>\n\t<key>DisplayBrightReflection</key>\n\t<real>573.10000000000002</real>\n\t<key>DisplayDarkReflection</key>\n\t<real>1.1000000000000001</real>\n\t<key>DisplayLeakage</key>\n\t<real>0.41899999999999998</real>\n\t<key>DisplayLowestLevel</key>\n\t<real>2</real>\n\t<key>DisplayLowestMeasured</key>\n\t<real>0.43230000000000002</real>\n\t<key>DisplayProductID</key>\n\t<integer>45061</integer>\n\t<key>DisplayProductName</key>\n\t<string>Color LCD</string>\n\t<key>DisplayVendorID</key>\n\t<integer>1552</integer>\n\t<key>IODisplayEDID</key>\n\t<data>\n\tAP///////wAGEBKgAAAAABwWAQS1MBt4Im+xp1VMniUMUFQAAAABAQEBAQEBAQEBAQEB\n\tAQEBtDuASnE4NEBQNmgAWMEQAAAawy+ASnE4NEBQNmgAWMEQAAAaAAAA/ABpTWFjCiAg\n\tICAgICAgAAAAAAAAQTGWARAAAAoBCiAgAIM=\n\t</data>\n\t<key>IOGFlags</key>\n\t<integer>4</integer>\n\t<key>scale-resolutions</key>\n\t<array>\n\t\t<data>\n\t\tAAAGQAAAA4QA\n\t\t</data>\n\t\t<data>\n\t\tAAALQAAABlQA\n\t\t</data>\n\t\t<data>\n\t\tAAAKAAAABaAA\n\t\t</data>\n\t</array>\n\t<key>target-default-ppmm</key>\n\t<real>10.069930100000001</real>\n</dict>\n</plist>\n"
  },
  {
    "path": "HIDPI/DisplayVendorID-dae/DisplayProductID-15e0_hidpi",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>DisplayProductID</key>\n\t<integer>45061</integer>\n\t<key>DisplayVendorID</key>\n\t<integer>1552</integer>\n\t<key>IODisplayEDID</key>\n\t<data>\n\tAP///////wAGEBKgAAAAABwWAQS1MBt4Im+xp1VMniUMUFQAAAABAQEBAQEBAQEBAQEB\n\tAQEBtDuASnE4NEBQNmgAWMEQAAAawy+ASnE4NEBQNmgAWMEQAAAaAAAA/ABpTWFjCiAg\n\tICAgICAgAAAAAAAAQTGWARAAAAoBCiAgAIM=\n\t</data>\n\t<key>scale-resolutions</key>\n\t<array>\n\t\t<data>\n\t\tAAAPAAAACHAAAAABACAAAA==\n\t\t</data>\n\t\t<data>\n\t\tAAAMgAAABwgAAAABACAAAA==\n\t\t</data>\n\t\t<data>\n\t\tAAALQAAABlQAAAABACAAAA==\n\t\t</data>\n\t\t<data>\n\t\tAAAHgAAABDgAAAABACAAAA==\n\t\t</data>\n\t\t<data>\n\t\tAAAGQAAAA4QAAAABACAAAA==\n\t\t</data>\n\t\t<data>\n\t\tAAAFoAAAAyoAAAABACAAAA==\n\t\t</data>\n\t</array>\n</dict>\n</plist>\n"
  },
  {
    "path": "HIDPI/DisplayVendorID-dae/Icons.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>board-ids</key>\n\t<dict>\n\t\t<key>Mac-189A3D4F975D5FFC</key>\n\t\t<dict>\n\t\t\t<key>display-resolution-preview-icon</key>\n\t\t\t<string>/System/Library/Displays/Contents/Resources/Overrides/Models/Mac-189A3D4F975D5FFC.tiff</string>\n\t\t\t<key>resolution-preview-height</key>\n\t\t\t<integer>83</integer>\n\t\t\t<key>resolution-preview-width</key>\n\t\t\t<integer>131</integer>\n\t\t\t<key>resolution-preview-x</key>\n\t\t\t<integer>47</integer>\n\t\t\t<key>resolution-preview-y</key>\n\t\t\t<integer>64</integer>\n\t\t</dict>\n\t\t<key>Mac-2BD1B31983FE1663</key>\n\t\t<dict>\n\t\t\t<key>display-resolution-preview-icon</key>\n\t\t\t<string>/System/Library/Displays/Contents/Resources/Overrides/Models/Mac-2BD1B31983FE1663.tiff</string>\n\t\t\t<key>resolution-preview-height</key>\n\t\t\t<integer>90</integer>\n\t\t\t<key>resolution-preview-width</key>\n\t\t\t<integer>144</integer>\n\t\t\t<key>resolution-preview-x</key>\n\t\t\t<integer>41</integer>\n\t\t\t<key>resolution-preview-y</key>\n\t\t\t<integer>67</integer>\n\t\t</dict>\n\t\t<key>Mac-3CBD00234E554E41</key>\n\t\t<dict>\n\t\t\t<key>display-resolution-preview-icon</key>\n\t\t\t<string>/System/Library/Displays/Contents/Resources/Overrides/Models/Mac-3CBD00234E554E41.tiff</string>\n\t\t\t<key>resolution-preview-height</key>\n\t\t\t<integer>90</integer>\n\t\t\t<key>resolution-preview-width</key>\n\t\t\t<integer>144</integer>\n\t\t\t<key>resolution-preview-x</key>\n\t\t\t<integer>41</integer>\n\t\t\t<key>resolution-preview-y</key>\n\t\t\t<integer>67</integer>\n\t\t</dict>\n\t\t<key>Mac-42FD25EABCABB274</key>\n\t\t<dict>\n\t\t\t<key>display-resolution-preview-icon</key>\n\t\t\t<string>/System/Library/Displays/Contents/Resources/Overrides/Models/Mac-42FD25EABCABB274.tiff</string>\n\t\t\t<key>resolution-preview-height</key>\n\t\t\t<integer>114</integer>\n\t\t\t<key>resolution-preview-width</key>\n\t\t\t<integer>202</integer>\n\t\t\t<key>resolution-preview-x</key>\n\t\t\t<integer>12</integer>\n\t\t\t<key>resolution-preview-y</key>\n\t\t\t<integer>71</integer>\n\t\t</dict>\n\t\t<key>Mac-4B682C642B45593E</key>\n\t\t<dict>\n\t\t\t<key>display-icon</key>\n\t\t\t<string>com.apple.imac-unibody-21</string>\n\t\t</dict>\n\t\t<key>Mac-65CE76090165799A</key>\n\t\t<dict>\n\t\t\t<key>display-resolution-preview-icon</key>\n\t\t\t<string>/System/Library/Displays/Contents/Resources/Overrides/Models/Mac-65CE76090165799A.tiff</string>\n\t\t\t<key>resolution-preview-height</key>\n\t\t\t<integer>114</integer>\n\t\t\t<key>resolution-preview-width</key>\n\t\t\t<integer>202</integer>\n\t\t\t<key>resolution-preview-x</key>\n\t\t\t<integer>12</integer>\n\t\t\t<key>resolution-preview-y</key>\n\t\t\t<integer>71</integer>\n\t\t</dict>\n\t\t<key>Mac-AFD8A9D944EA4843</key>\n\t\t<dict>\n\t\t\t<key>display-resolution-preview-icon</key>\n\t\t\t<string>/System/Library/Displays/Contents/Resources/Overrides/Models/Mac-AFD8A9D944EA4843.tiff</string>\n\t\t\t<key>resolution-preview-height</key>\n\t\t\t<integer>83</integer>\n\t\t\t<key>resolution-preview-width</key>\n\t\t\t<integer>131</integer>\n\t\t\t<key>resolution-preview-x</key>\n\t\t\t<integer>47</integer>\n\t\t\t<key>resolution-preview-y</key>\n\t\t\t<integer>64</integer>\n\t\t</dict>\n\t\t<key>Mac-B809C3757DA9BB8D</key>\n\t\t<dict>\n\t\t\t<key>display-resolution-preview-icon</key>\n\t\t\t<string>/System/Library/Displays/Contents/Resources/Overrides/Models/Mac-B809C3757DA9BB8D.tiff</string>\n\t\t\t<key>resolution-preview-height</key>\n\t\t\t<integer>114</integer>\n\t\t\t<key>resolution-preview-width</key>\n\t\t\t<integer>202</integer>\n\t\t\t<key>resolution-preview-x</key>\n\t\t\t<integer>12</integer>\n\t\t\t<key>resolution-preview-y</key>\n\t\t\t<integer>71</integer>\n\t\t</dict>\n\t\t<key>Mac-C3EC7CD22292981F</key>\n\t\t<dict>\n\t\t\t<key>display-resolution-preview-icon</key>\n\t\t\t<string>/System/Library/Displays/Contents/Resources/Overrides/Models/Mac-C3EC7CD22292981F.tiff</string>\n\t\t\t<key>resolution-preview-height</key>\n\t\t\t<integer>90</integer>\n\t\t\t<key>resolution-preview-width</key>\n\t\t\t<integer>144</integer>\n\t\t\t<key>resolution-preview-x</key>\n\t\t\t<integer>41</integer>\n\t\t\t<key>resolution-preview-y</key>\n\t\t\t<integer>67</integer>\n\t\t</dict>\n\t\t<key>Mac-DB15BD556843C820</key>\n\t\t<dict>\n\t\t\t<key>display-resolution-preview-icon</key>\n\t\t\t<string>/System/Library/Displays/Contents/Resources/Overrides/Models/Mac-DB15BD556843C820.tiff</string>\n\t\t\t<key>resolution-preview-height</key>\n\t\t\t<integer>114</integer>\n\t\t\t<key>resolution-preview-width</key>\n\t\t\t<integer>202</integer>\n\t\t\t<key>resolution-preview-x</key>\n\t\t\t<integer>12</integer>\n\t\t\t<key>resolution-preview-y</key>\n\t\t\t<integer>71</integer>\n\t\t</dict>\n\t\t<key>Mac-E43C1C25D4880AD6</key>\n\t\t<dict>\n\t\t\t<key>display-resolution-preview-icon</key>\n\t\t\t<string>/System/Library/Displays/Contents/Resources/Overrides/Models/Mac-E43C1C25D4880AD6.tiff</string>\n\t\t\t<key>resolution-preview-height</key>\n\t\t\t<integer>83</integer>\n\t\t\t<key>resolution-preview-width</key>\n\t\t\t<integer>131</integer>\n\t\t\t<key>resolution-preview-x</key>\n\t\t\t<integer>47</integer>\n\t\t\t<key>resolution-preview-y</key>\n\t\t\t<integer>64</integer>\n\t\t</dict>\n\t\t<key>Mac-FA842E06C61E91C5</key>\n\t\t<dict>\n\t\t\t<key>display-resolution-preview-icon</key>\n\t\t\t<string>/System/Library/Displays/Contents/Resources/Overrides/Models/Mac-FA842E06C61E91C5.tiff</string>\n\t\t\t<key>resolution-preview-height</key>\n\t\t\t<integer>114</integer>\n\t\t\t<key>resolution-preview-width</key>\n\t\t\t<integer>202</integer>\n\t\t\t<key>resolution-preview-x</key>\n\t\t\t<integer>12</integer>\n\t\t\t<key>resolution-preview-y</key>\n\t\t\t<integer>71</integer>\n\t\t</dict>\n\t</dict>\n\t<key>vendors</key>\n\t<dict>\n\t\t<key>1e6d</key>\n\t\t<dict>\n\t\t\t<key>products</key>\n\t\t\t<dict>\n\t\t\t\t<key>5b10</key>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>display-icon</key>\n\t\t\t\t\t<string>/System/Library/Displays/Contents/Resources/Overrides/DisplayVendorID-1e6d/DisplayProductID-5b10.icns</string>\n\t\t\t\t\t<key>display-resolution-preview-icon</key>\n\t\t\t\t\t<string>/System/Library/Displays/Contents/Resources/Overrides/DisplayVendorID-1e6d/DisplayProductID-5b10.tiff</string>\n\t\t\t\t\t<key>resolution-preview-height</key>\n\t\t\t\t\t<integer>90</integer>\n\t\t\t\t\t<key>resolution-preview-width</key>\n\t\t\t\t\t<integer>160</integer>\n\t\t\t\t\t<key>resolution-preview-x</key>\n\t\t\t\t\t<integer>33</integer>\n\t\t\t\t\t<key>resolution-preview-y</key>\n\t\t\t\t\t<integer>47</integer>\n\t\t\t\t</dict>\n\t\t\t\t<key>5b11</key>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>display-icon</key>\n\t\t\t\t\t<string>/System/Library/Displays/Contents/Resources/Overrides/DisplayVendorID-1e6d/DisplayProductID-5b11.icns</string>\n\t\t\t\t\t<key>display-resolution-preview-icon</key>\n\t\t\t\t\t<string>/System/Library/Displays/Contents/Resources/Overrides/DisplayVendorID-1e6d/DisplayProductID-5b11.tiff</string>\n\t\t\t\t\t<key>resolution-preview-height</key>\n\t\t\t\t\t<integer>114</integer>\n\t\t\t\t\t<key>resolution-preview-width</key>\n\t\t\t\t\t<integer>202</integer>\n\t\t\t\t\t<key>resolution-preview-x</key>\n\t\t\t\t\t<integer>11</integer>\n\t\t\t\t\t<key>resolution-preview-y</key>\n\t\t\t\t\t<integer>47</integer>\n\t\t\t\t</dict>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<key>610</key>\n\t\t<dict>\n\t\t\t<key>display-icon</key>\n\t\t\t<string>com.apple.cinema-display</string>\n\t\t\t<key>products</key>\n\t\t\t<dict>\n\t\t\t\t<key>9226</key>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>display-icon</key>\n\t\t\t\t\t<string>com.apple.led-cinema-display-27</string>\n\t\t\t\t</dict>\n\t\t\t\t<key>9227</key>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>display-icon</key>\n\t\t\t\t\t<string>com.apple.led-cinema-display-27</string>\n\t\t\t\t</dict>\n\t\t\t\t<key>9236</key>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>display-icon</key>\n\t\t\t\t\t<string>com.apple.led-cinema-display-24</string>\n\t\t\t\t</dict>\n\t\t\t\t<key>a027-9d9da0</key>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>display-resolution-preview-icon</key>\n\t\t\t\t\t<string>/System/Library/Displays/Contents/Resources/Overrides/DisplayVendorID-610/DisplayProductID-a027-9d9da0.tiff</string>\n\t\t\t\t\t<key>resolution-preview-height</key>\n\t\t\t\t\t<integer>76</integer>\n\t\t\t\t\t<key>resolution-preview-width</key>\n\t\t\t\t\t<integer>122</integer>\n\t\t\t\t\t<key>resolution-preview-x</key>\n\t\t\t\t\t<integer>52</integer>\n\t\t\t\t\t<key>resolution-preview-y</key>\n\t\t\t\t\t<integer>66</integer>\n\t\t\t\t</dict>\n\t\t\t\t<key>a027-e1e1df</key>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>display-resolution-preview-icon</key>\n\t\t\t\t\t<string>/System/Library/Displays/Contents/Resources/Overrides/DisplayVendorID-610/DisplayProductID-a027-e1e1df.tiff</string>\n\t\t\t\t\t<key>resolution-preview-height</key>\n\t\t\t\t\t<integer>76</integer>\n\t\t\t\t\t<key>resolution-preview-width</key>\n\t\t\t\t\t<integer>122</integer>\n\t\t\t\t\t<key>resolution-preview-x</key>\n\t\t\t\t\t<integer>52</integer>\n\t\t\t\t\t<key>resolution-preview-y</key>\n\t\t\t\t\t<integer>66</integer>\n\t\t\t\t</dict>\n\t\t\t\t<key>a027-e8c9c3</key>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>display-resolution-preview-icon</key>\n\t\t\t\t\t<string>/System/Library/Displays/Contents/Resources/Overrides/DisplayVendorID-610/DisplayProductID-a027-e8c9c3.tiff</string>\n\t\t\t\t\t<key>resolution-preview-height</key>\n\t\t\t\t\t<integer>76</integer>\n\t\t\t\t\t<key>resolution-preview-width</key>\n\t\t\t\t\t<integer>122</integer>\n\t\t\t\t\t<key>resolution-preview-x</key>\n\t\t\t\t\t<integer>52</integer>\n\t\t\t\t\t<key>resolution-preview-y</key>\n\t\t\t\t\t<integer>66</integer>\n\t\t\t\t</dict>\n\t\t\t\t<key>a027-ebd7bf</key>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>display-resolution-preview-icon</key>\n\t\t\t\t\t<string>/System/Library/Displays/Contents/Resources/Overrides/DisplayVendorID-610/DisplayProductID-a027-ebd7bf.tiff</string>\n\t\t\t\t\t<key>resolution-preview-height</key>\n\t\t\t\t\t<integer>76</integer>\n\t\t\t\t\t<key>resolution-preview-width</key>\n\t\t\t\t\t<integer>122</integer>\n\t\t\t\t\t<key>resolution-preview-x</key>\n\t\t\t\t\t<integer>52</integer>\n\t\t\t\t\t<key>resolution-preview-y</key>\n\t\t\t\t\t<integer>66</integer>\n\t\t\t\t</dict>\n\t\t\t\t<key>a028-9d9da0</key>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>display-resolution-preview-icon</key>\n\t\t\t\t\t<string>/System/Library/Displays/Contents/Resources/Overrides/DisplayVendorID-610/DisplayProductID-a028-9d9da0.tiff</string>\n\t\t\t\t\t<key>resolution-preview-height</key>\n\t\t\t\t\t<integer>76</integer>\n\t\t\t\t\t<key>resolution-preview-width</key>\n\t\t\t\t\t<integer>122</integer>\n\t\t\t\t\t<key>resolution-preview-x</key>\n\t\t\t\t\t<integer>52</integer>\n\t\t\t\t\t<key>resolution-preview-y</key>\n\t\t\t\t\t<integer>66</integer>\n\t\t\t\t</dict>\n\t\t\t\t<key>a028-e1e1df</key>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>display-resolution-preview-icon</key>\n\t\t\t\t\t<string>/System/Library/Displays/Contents/Resources/Overrides/DisplayVendorID-610/DisplayProductID-a028-e1e1df.tiff</string>\n\t\t\t\t\t<key>resolution-preview-height</key>\n\t\t\t\t\t<integer>76</integer>\n\t\t\t\t\t<key>resolution-preview-width</key>\n\t\t\t\t\t<integer>122</integer>\n\t\t\t\t\t<key>resolution-preview-x</key>\n\t\t\t\t\t<integer>52</integer>\n\t\t\t\t\t<key>resolution-preview-y</key>\n\t\t\t\t\t<integer>66</integer>\n\t\t\t\t</dict>\n\t\t\t\t<key>a028-e8c9c3</key>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>display-resolution-preview-icon</key>\n\t\t\t\t\t<string>/System/Library/Displays/Contents/Resources/Overrides/DisplayVendorID-610/DisplayProductID-a028-e8c9c3.tiff</string>\n\t\t\t\t\t<key>resolution-preview-height</key>\n\t\t\t\t\t<integer>76</integer>\n\t\t\t\t\t<key>resolution-preview-width</key>\n\t\t\t\t\t<integer>122</integer>\n\t\t\t\t\t<key>resolution-preview-x</key>\n\t\t\t\t\t<integer>52</integer>\n\t\t\t\t\t<key>resolution-preview-y</key>\n\t\t\t\t\t<integer>66</integer>\n\t\t\t\t</dict>\n\t\t\t\t<key>a028-ebd7bf</key>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>display-resolution-preview-icon</key>\n\t\t\t\t\t<string>/System/Library/Displays/Contents/Resources/Overrides/DisplayVendorID-610/DisplayProductID-a028-ebd7bf.tiff</string>\n\t\t\t\t\t<key>resolution-preview-height</key>\n\t\t\t\t\t<integer>76</integer>\n\t\t\t\t\t<key>resolution-preview-width</key>\n\t\t\t\t\t<integer>122</integer>\n\t\t\t\t\t<key>resolution-preview-x</key>\n\t\t\t\t\t<integer>52</integer>\n\t\t\t\t\t<key>resolution-preview-y</key>\n\t\t\t\t\t<integer>66</integer>\n\t\t\t\t</dict>\n\t\t\t\t<key>a029</key>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>display-resolution-preview-icon</key>\n\t\t\t\t\t<string>/System/Library/Displays/Contents/Resources/Overrides/DisplayVendorID-610/DisplayProductID-a029.tiff</string>\n\t\t\t\t\t<key>resolution-preview-height</key>\n\t\t\t\t\t<integer>83</integer>\n\t\t\t\t\t<key>resolution-preview-width</key>\n\t\t\t\t\t<integer>131</integer>\n\t\t\t\t\t<key>resolution-preview-x</key>\n\t\t\t\t\t<integer>47</integer>\n\t\t\t\t\t<key>resolution-preview-y</key>\n\t\t\t\t\t<integer>64</integer>\n\t\t\t\t</dict>\n\t\t\t\t<key>a02a</key>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>display-resolution-preview-icon</key>\n\t\t\t\t\t<string>/System/Library/Displays/Contents/Resources/Overrides/DisplayVendorID-610/DisplayProductID-a02a.tiff</string>\n\t\t\t\t\t<key>resolution-preview-height</key>\n\t\t\t\t\t<integer>83</integer>\n\t\t\t\t\t<key>resolution-preview-width</key>\n\t\t\t\t\t<integer>131</integer>\n\t\t\t\t\t<key>resolution-preview-x</key>\n\t\t\t\t\t<integer>47</integer>\n\t\t\t\t\t<key>resolution-preview-y</key>\n\t\t\t\t\t<integer>64</integer>\n\t\t\t\t</dict>\n\t\t\t\t<key>a02e</key>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>display-resolution-preview-icon</key>\n\t\t\t\t\t<string>/System/Library/Displays/Contents/Resources/Overrides/DisplayVendorID-610/DisplayProductID-a02e.tiff</string>\n\t\t\t\t\t<key>resolution-preview-height</key>\n\t\t\t\t\t<integer>90</integer>\n\t\t\t\t\t<key>resolution-preview-width</key>\n\t\t\t\t\t<integer>144</integer>\n\t\t\t\t\t<key>resolution-preview-x</key>\n\t\t\t\t\t<integer>41</integer>\n\t\t\t\t\t<key>resolution-preview-y</key>\n\t\t\t\t\t<integer>67</integer>\n\t\t\t\t</dict>\n\t\t\t\t<key>a02f</key>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>display-resolution-preview-icon</key>\n\t\t\t\t\t<string>/System/Library/Displays/Contents/Resources/Overrides/DisplayVendorID-610/DisplayProductID-a02f.tiff</string>\n\t\t\t\t\t<key>resolution-preview-height</key>\n\t\t\t\t\t<integer>90</integer>\n\t\t\t\t\t<key>resolution-preview-width</key>\n\t\t\t\t\t<integer>144</integer>\n\t\t\t\t\t<key>resolution-preview-x</key>\n\t\t\t\t\t<integer>41</integer>\n\t\t\t\t\t<key>resolution-preview-y</key>\n\t\t\t\t\t<integer>67</integer>\n\t\t\t\t</dict>\n\t\t\t\t<key>a030-9d9da0</key>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>display-resolution-preview-icon</key>\n\t\t\t\t\t<string>/System/Library/Displays/Contents/Resources/Overrides/DisplayVendorID-610/DisplayProductID-a030-9d9da0.tiff</string>\n\t\t\t\t\t<key>resolution-preview-height</key>\n\t\t\t\t\t<integer>92</integer>\n\t\t\t\t\t<key>resolution-preview-width</key>\n\t\t\t\t\t<integer>147</integer>\n\t\t\t\t\t<key>resolution-preview-x</key>\n\t\t\t\t\t<integer>40</integer>\n\t\t\t\t\t<key>resolution-preview-y</key>\n\t\t\t\t\t<integer>62</integer>\n\t\t\t\t</dict>\n\t\t\t\t<key>a030-e1e1df</key>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>display-resolution-preview-icon</key>\n\t\t\t\t\t<string>/System/Library/Displays/Contents/Resources/Overrides/DisplayVendorID-610/DisplayProductID-a030-e1e1df.tiff</string>\n\t\t\t\t\t<key>resolution-preview-height</key>\n\t\t\t\t\t<integer>92</integer>\n\t\t\t\t\t<key>resolution-preview-width</key>\n\t\t\t\t\t<integer>147</integer>\n\t\t\t\t\t<key>resolution-preview-x</key>\n\t\t\t\t\t<integer>40</integer>\n\t\t\t\t\t<key>resolution-preview-y</key>\n\t\t\t\t\t<integer>62</integer>\n\t\t\t\t</dict>\n\t\t\t\t<key>a031-9d9da0</key>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>display-resolution-preview-icon</key>\n\t\t\t\t\t<string>/System/Library/Displays/Contents/Resources/Overrides/DisplayVendorID-610/DisplayProductID-a030-9d9da0.tiff</string>\n\t\t\t\t\t<key>resolution-preview-height</key>\n\t\t\t\t\t<integer>92</integer>\n\t\t\t\t\t<key>resolution-preview-width</key>\n\t\t\t\t\t<integer>147</integer>\n\t\t\t\t\t<key>resolution-preview-x</key>\n\t\t\t\t\t<integer>40</integer>\n\t\t\t\t\t<key>resolution-preview-y</key>\n\t\t\t\t\t<integer>62</integer>\n\t\t\t\t</dict>\n\t\t\t\t<key>a031-e1e1df</key>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>display-resolution-preview-icon</key>\n\t\t\t\t\t<string>/System/Library/Displays/Contents/Resources/Overrides/DisplayVendorID-610/DisplayProductID-a030-e1e1df.tiff</string>\n\t\t\t\t\t<key>resolution-preview-height</key>\n\t\t\t\t\t<integer>92</integer>\n\t\t\t\t\t<key>resolution-preview-width</key>\n\t\t\t\t\t<integer>147</integer>\n\t\t\t\t\t<key>resolution-preview-x</key>\n\t\t\t\t\t<integer>40</integer>\n\t\t\t\t\t<key>resolution-preview-y</key>\n\t\t\t\t\t<integer>62</integer>\n\t\t\t\t</dict>\n\t\t\t\t<key>a032</key>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>display-resolution-preview-icon</key>\n\t\t\t\t\t<string>/System/Library/Displays/Contents/Resources/Overrides/DisplayVendorID-610/DisplayProductID-a032.tiff</string>\n\t\t\t\t\t<key>resolution-preview-height</key>\n\t\t\t\t\t<integer>90</integer>\n\t\t\t\t\t<key>resolution-preview-width</key>\n\t\t\t\t\t<integer>160</integer>\n\t\t\t\t\t<key>resolution-preview-x</key>\n\t\t\t\t\t<integer>33</integer>\n\t\t\t\t\t<key>resolution-preview-y</key>\n\t\t\t\t\t<integer>68</integer>\n\t\t\t\t</dict>\n\t\t\t\t<key>a033-9d9da0</key>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>display-resolution-preview-icon</key>\n\t\t\t\t\t<string>/System/Library/Displays/Contents/Resources/Overrides/DisplayVendorID-610/DisplayProductID-a033-9d9da0.tiff</string>\n\t\t\t\t\t<key>resolution-preview-height</key>\n\t\t\t\t\t<integer>83</integer>\n\t\t\t\t\t<key>resolution-preview-width</key>\n\t\t\t\t\t<integer>131</integer>\n\t\t\t\t\t<key>resolution-preview-x</key>\n\t\t\t\t\t<integer>48</integer>\n\t\t\t\t\t<key>resolution-preview-y</key>\n\t\t\t\t\t<integer>62</integer>\n\t\t\t\t</dict>\n\t\t\t\t<key>a033-e1e1df</key>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>display-resolution-preview-icon</key>\n\t\t\t\t\t<string>/System/Library/Displays/Contents/Resources/Overrides/DisplayVendorID-610/DisplayProductID-a033-e1e1df.tiff</string>\n\t\t\t\t\t<key>resolution-preview-height</key>\n\t\t\t\t\t<integer>83</integer>\n\t\t\t\t\t<key>resolution-preview-width</key>\n\t\t\t\t\t<integer>131</integer>\n\t\t\t\t\t<key>resolution-preview-x</key>\n\t\t\t\t\t<integer>48</integer>\n\t\t\t\t\t<key>resolution-preview-y</key>\n\t\t\t\t\t<integer>62</integer>\n\t\t\t\t</dict>\n\t\t\t\t<key>a034-9d9da0</key>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>display-resolution-preview-icon</key>\n\t\t\t\t\t<string>/System/Library/Displays/Contents/Resources/Overrides/DisplayVendorID-610/DisplayProductID-a033-9d9da0.tiff</string>\n\t\t\t\t\t<key>resolution-preview-height</key>\n\t\t\t\t\t<integer>83</integer>\n\t\t\t\t\t<key>resolution-preview-width</key>\n\t\t\t\t\t<integer>131</integer>\n\t\t\t\t\t<key>resolution-preview-x</key>\n\t\t\t\t\t<integer>48</integer>\n\t\t\t\t\t<key>resolution-preview-y</key>\n\t\t\t\t\t<integer>62</integer>\n\t\t\t\t</dict>\n\t\t\t\t<key>a034-e1e1df</key>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>display-resolution-preview-icon</key>\n\t\t\t\t\t<string>/System/Library/Displays/Contents/Resources/Overrides/DisplayVendorID-610/DisplayProductID-a033-e1e1df.tiff</string>\n\t\t\t\t\t<key>resolution-preview-height</key>\n\t\t\t\t\t<integer>83</integer>\n\t\t\t\t\t<key>resolution-preview-width</key>\n\t\t\t\t\t<integer>131</integer>\n\t\t\t\t\t<key>resolution-preview-x</key>\n\t\t\t\t\t<integer>48</integer>\n\t\t\t\t\t<key>resolution-preview-y</key>\n\t\t\t\t\t<integer>62</integer>\n\t\t\t\t</dict>\n\t\t\t\t<key>a037-9d9da0</key>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>display-resolution-preview-icon</key>\n\t\t\t\t\t<string>/System/Library/Displays/Contents/Resources/Overrides/DisplayVendorID-610/DisplayProductID-a033-9d9da0.tiff</string>\n\t\t\t\t\t<key>resolution-preview-height</key>\n\t\t\t\t\t<integer>83</integer>\n\t\t\t\t\t<key>resolution-preview-width</key>\n\t\t\t\t\t<integer>131</integer>\n\t\t\t\t\t<key>resolution-preview-x</key>\n\t\t\t\t\t<integer>48</integer>\n\t\t\t\t\t<key>resolution-preview-y</key>\n\t\t\t\t\t<integer>62</integer>\n\t\t\t\t</dict>\n\t\t\t\t<key>a037-e1e1df</key>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>display-resolution-preview-icon</key>\n\t\t\t\t\t<string>/System/Library/Displays/Contents/Resources/Overrides/DisplayVendorID-610/DisplayProductID-a033-e1e1df.tiff</string>\n\t\t\t\t\t<key>resolution-preview-height</key>\n\t\t\t\t\t<integer>83</integer>\n\t\t\t\t\t<key>resolution-preview-width</key>\n\t\t\t\t\t<integer>131</integer>\n\t\t\t\t\t<key>resolution-preview-x</key>\n\t\t\t\t\t<integer>48</integer>\n\t\t\t\t\t<key>resolution-preview-y</key>\n\t\t\t\t\t<integer>62</integer>\n\t\t\t\t</dict>\n\t\t\t\t<key>a038-9d9da0</key>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>display-resolution-preview-icon</key>\n\t\t\t\t\t<string>/System/Library/Displays/Contents/Resources/Overrides/DisplayVendorID-610/DisplayProductID-a030-9d9da0.tiff</string>\n\t\t\t\t\t<key>resolution-preview-height</key>\n\t\t\t\t\t<integer>92</integer>\n\t\t\t\t\t<key>resolution-preview-width</key>\n\t\t\t\t\t<integer>147</integer>\n\t\t\t\t\t<key>resolution-preview-x</key>\n\t\t\t\t\t<integer>40</integer>\n\t\t\t\t\t<key>resolution-preview-y</key>\n\t\t\t\t\t<integer>62</integer>\n\t\t\t\t</dict>\n\t\t\t\t<key>a038-e1e1df</key>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>display-resolution-preview-icon</key>\n\t\t\t\t\t<string>/System/Library/Displays/Contents/Resources/Overrides/DisplayVendorID-610/DisplayProductID-a030-e1e1df.tiff</string>\n\t\t\t\t\t<key>resolution-preview-height</key>\n\t\t\t\t\t<integer>92</integer>\n\t\t\t\t\t<key>resolution-preview-width</key>\n\t\t\t\t\t<integer>147</integer>\n\t\t\t\t\t<key>resolution-preview-x</key>\n\t\t\t\t\t<integer>40</integer>\n\t\t\t\t\t<key>resolution-preview-y</key>\n\t\t\t\t\t<integer>62</integer>\n\t\t\t\t</dict>\n\t\t\t\t<key>ae11</key>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>display-resolution-preview-icon</key>\n\t\t\t\t\t<string>/System/Library/Displays/Contents/Resources/Overrides/Models/Mac-65CE76090165799A.tiff</string>\n\t\t\t\t\t<key>resolution-preview-height</key>\n\t\t\t\t\t<integer>114</integer>\n\t\t\t\t\t<key>resolution-preview-width</key>\n\t\t\t\t\t<integer>202</integer>\n\t\t\t\t\t<key>resolution-preview-x</key>\n\t\t\t\t\t<integer>12</integer>\n\t\t\t\t\t<key>resolution-preview-y</key>\n\t\t\t\t\t<integer>71</integer>\n\t\t\t\t</dict>\n\t\t\t\t<key>ae12</key>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>display-resolution-preview-icon</key>\n\t\t\t\t\t<string>/System/Library/Displays/Contents/Resources/Overrides/Models/Mac-65CE76090165799A.tiff</string>\n\t\t\t\t\t<key>resolution-preview-height</key>\n\t\t\t\t\t<integer>114</integer>\n\t\t\t\t\t<key>resolution-preview-width</key>\n\t\t\t\t\t<integer>202</integer>\n\t\t\t\t\t<key>resolution-preview-x</key>\n\t\t\t\t\t<integer>12</integer>\n\t\t\t\t\t<key>resolution-preview-y</key>\n\t\t\t\t\t<integer>71</integer>\n\t\t\t\t</dict>\n\t\t\t\t<key>ae13</key>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>display-resolution-preview-icon</key>\n\t\t\t\t\t<string>/System/Library/Displays/Contents/Resources/Overrides/Models/Mac-65CE76090165799A.tiff</string>\n\t\t\t\t\t<key>resolution-preview-height</key>\n\t\t\t\t\t<integer>114</integer>\n\t\t\t\t\t<key>resolution-preview-width</key>\n\t\t\t\t\t<integer>202</integer>\n\t\t\t\t\t<key>resolution-preview-x</key>\n\t\t\t\t\t<integer>12</integer>\n\t\t\t\t\t<key>resolution-preview-y</key>\n\t\t\t\t\t<integer>71</integer>\n\t\t\t\t</dict>\n\t\t\t\t<key>ae15</key>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>display-resolution-preview-icon</key>\n\t\t\t\t\t<string>/System/Library/Displays/Contents/Resources/Overrides/Models/Mac-65CE76090165799A.tiff</string>\n\t\t\t\t\t<key>resolution-preview-height</key>\n\t\t\t\t\t<integer>114</integer>\n\t\t\t\t\t<key>resolution-preview-width</key>\n\t\t\t\t\t<integer>202</integer>\n\t\t\t\t\t<key>resolution-preview-x</key>\n\t\t\t\t\t<integer>12</integer>\n\t\t\t\t\t<key>resolution-preview-y</key>\n\t\t\t\t\t<integer>71</integer>\n\t\t\t\t</dict>\n\t\t\t\t<key>ae16</key>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>display-resolution-preview-icon</key>\n\t\t\t\t\t<string>/System/Library/Displays/Contents/Resources/Overrides/Models/Mac-65CE76090165799A.tiff</string>\n\t\t\t\t\t<key>resolution-preview-height</key>\n\t\t\t\t\t<integer>114</integer>\n\t\t\t\t\t<key>resolution-preview-width</key>\n\t\t\t\t\t<integer>202</integer>\n\t\t\t\t\t<key>resolution-preview-x</key>\n\t\t\t\t\t<integer>12</integer>\n\t\t\t\t\t<key>resolution-preview-y</key>\n\t\t\t\t\t<integer>71</integer>\n\t\t\t\t</dict>\n\t\t\t\t<key>ae17</key>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>display-resolution-preview-icon</key>\n\t\t\t\t\t<string>/System/Library/Displays/Contents/Resources/Overrides/Models/Mac-65CE76090165799A.tiff</string>\n\t\t\t\t\t<key>resolution-preview-height</key>\n\t\t\t\t\t<integer>114</integer>\n\t\t\t\t\t<key>resolution-preview-width</key>\n\t\t\t\t\t<integer>202</integer>\n\t\t\t\t\t<key>resolution-preview-x</key>\n\t\t\t\t\t<integer>12</integer>\n\t\t\t\t\t<key>resolution-preview-y</key>\n\t\t\t\t\t<integer>71</integer>\n\t\t\t\t</dict>\n\t\t\t\t<key>ae19</key>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>display-resolution-preview-icon</key>\n\t\t\t\t\t<string>/System/Library/Displays/Contents/Resources/Overrides/DisplayVendorID-610/DisplayProductID-a032.tiff</string>\n\t\t\t\t\t<key>resolution-preview-height</key>\n\t\t\t\t\t<integer>90</integer>\n\t\t\t\t\t<key>resolution-preview-width</key>\n\t\t\t\t\t<integer>160</integer>\n\t\t\t\t\t<key>resolution-preview-x</key>\n\t\t\t\t\t<integer>33</integer>\n\t\t\t\t\t<key>resolution-preview-y</key>\n\t\t\t\t\t<integer>68</integer>\n\t\t\t\t</dict>\n\t\t\t\t<key>ae1a</key>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>display-resolution-preview-icon</key>\n\t\t\t\t\t<string>/System/Library/Displays/Contents/Resources/Overrides/DisplayVendorID-610/DisplayProductID-a032.tiff</string>\n\t\t\t\t\t<key>resolution-preview-height</key>\n\t\t\t\t\t<integer>90</integer>\n\t\t\t\t\t<key>resolution-preview-width</key>\n\t\t\t\t\t<integer>160</integer>\n\t\t\t\t\t<key>resolution-preview-x</key>\n\t\t\t\t\t<integer>33</integer>\n\t\t\t\t\t<key>resolution-preview-y</key>\n\t\t\t\t\t<integer>68</integer>\n\t\t\t\t</dict>\n\t\t\t\t<key>ae1b</key>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>display-resolution-preview-icon</key>\n\t\t\t\t\t<string>/System/Library/Displays/Contents/Resources/Overrides/DisplayVendorID-610/DisplayProductID-a032.tiff</string>\n\t\t\t\t\t<key>resolution-preview-height</key>\n\t\t\t\t\t<integer>90</integer>\n\t\t\t\t\t<key>resolution-preview-width</key>\n\t\t\t\t\t<integer>160</integer>\n\t\t\t\t\t<key>resolution-preview-x</key>\n\t\t\t\t\t<integer>33</integer>\n\t\t\t\t\t<key>resolution-preview-y</key>\n\t\t\t\t\t<integer>68</integer>\n\t\t\t\t</dict>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<key>9e6d</key>\n\t\t<dict>\n\t\t\t<key>products</key>\n\t\t\t<dict>\n\t\t\t\t<key>5b11</key>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>display-icon</key>\n\t\t\t\t\t<string>/System/Library/Displays/Contents/Resources/Overrides/DisplayVendorID-1e6d/DisplayProductID-5b11.icns</string>\n\t\t\t\t\t<key>display-resolution-preview-icon</key>\n\t\t\t\t\t<string>/System/Library/Displays/Contents/Resources/Overrides/DisplayVendorID-1e6d/DisplayProductID-5b11.tiff</string>\n\t\t\t\t\t<key>resolution-preview-height</key>\n\t\t\t\t\t<integer>114</integer>\n\t\t\t\t\t<key>resolution-preview-width</key>\n\t\t\t\t\t<integer>202</integer>\n\t\t\t\t\t<key>resolution-preview-x</key>\n\t\t\t\t\t<integer>11</integer>\n\t\t\t\t\t<key>resolution-preview-y</key>\n\t\t\t\t\t<integer>47</integer>\n\t\t\t\t</dict>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<key>dae</key>\n\t\t<dict>\n\t\t\t<key>display-icon</key>\n\t\t\t<string>com.apple.cinema-display</string>\n\t\t\t<key>products</key>\n\t\t\t<dict>\n\t\t\t\t<key>15e0-9d9da0</key>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>display-resolution-preview-icon</key>\n\t\t\t\t\t<string>/System/Library/Displays/Contents/Resources/Overrides/DisplayVendorID-dae/DisplayProductID-15e0-9d9da0.tiff</string>\n\t\t\t\t\t<key>resolution-preview-height</key>\n\t\t\t\t\t<integer>83</integer>\n\t\t\t\t\t<key>resolution-preview-width</key>\n\t\t\t\t\t<integer>131</integer>\n\t\t\t\t\t<key>resolution-preview-x</key>\n\t\t\t\t\t<integer>48</integer>\n\t\t\t\t\t<key>resolution-preview-y</key>\n\t\t\t\t\t<integer>62</integer>\n\t\t\t\t</dict>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<key>display-icon</key>\n\t\t<string>public.display</string>\n\t</dict>\n</dict>\n</plist>\n"
  },
  {
    "path": "README.md",
    "content": "# Dell Inspiron 7000 I/II (7x60/7x72) for macOS Mojave/High Sierra\n\n这是我使用的Dell Inspiron 7000(7560)的CLOVER引导文件，它同样也适用于Dell Inspiron 7460/7472/7572等I代II代机型\n\n## 电脑配置\n\n| 规格     | 详细信息                                                     |\n| -------- | ------------------------------------------------------------ |\n| 电脑型号 | 戴尔 Inspiron 7560 笔记本电脑                                |\n| 操作系统 | macOS Mojave 18E226/macOS High Sierra 10.13.6 17G2208        |\n| 处理器   | 英特尔 Core i7-7500U @ 2.70GHz 双核                          |\n| 内存     | 16 GB ( 金士顿 DDR4 2400MHz )                                |\n| 硬盘     | 建兴 CV1-8B512 (512 GB / 固态硬盘 )                          |\n| 显卡     | 英特尔 HD Graphics 620 (platform-id:0x59160000)              |\n| 显示器   | 奇美 CMN15E0 FHD 1920x1080 (15.6 英寸)                       |\n| 声卡     | ALC256 (layout-id:2/56)                                      |\n| 网卡     | ~~英特尔7265已更换为Bcm94352z(14E4:43B1)/~~已更换为DW1820A(14E4:43A3)[5-20-2019] |\n\n## 安装镜像\n\n直接使用博客中的镜像进行安装：[【黑果小兵】macOS Mojave 10.14(18A389) with Clover 4670原版镜像](https://blog.daliansky.net/macOS-Mojave-10.14-18A389-Release-with-Clover-4670-original-mirror.html)\n\n## CLOVER\n\n* 支持Mojave/High Sierra/Sierra\n* CPU原生支持，变频正常\n* 睡眠唤醒正常，最新增加睡眠呼吸灯\n* 显卡原生支持，采用`Lilu+WhateverGreen`通过`Clover/device/Properties`方式注入，同时支持HDMI显示输出\n* 声卡为ALC256(ALC3246)，使用 `AppleALC` 仿冒，layout-id:2或者56，通过`Clover/device/Properties`方式注入，支持HDMI Audio声音输出\n* ~~无线网卡更换为bcm94352z，添加`SSDT-7560-DW1560.aml`以解决可能存在的睡眠唤醒后蓝牙失效的问题。~~已更换为DW-1820A\n* 显示器亮度调节正常；亮度调节快捷键：`f11/f12`\n* USB遮盖采用`INTEL FB-Patcher`生成`USBPower.kext`，它位于`Clover/kexts/Other`\n* 添加PCI设备信息\n* 其它 `ACPI` 补丁修复采用 `hotpatch` 方式，文件位于 `/CLOVER/ACPI/patched`\n\n## 系统截图\n\n![0About](./screenshot/0About.png)\n![0Displays](./screenshot/0Displays.png)\n![0Displays1](./screenshot/0Displays1.png)\n![0Memory](./screenshot/0Memory.png)\n![1Audio](./screenshot/1Audio.png)\n![1Audio2](./screenshot/1Audio2.png)\n![1AudioPatch](./screenshot/1AudioPatch.png)\n![2BlueTooth](./screenshot/2BlueTooth.png)\n![2BlueTooth2](./screenshot/2BlueTooth2.png)\n![3Wifi](./screenshot/3Wifi.png)\n![4Sata](./screenshot/4Sata.png)\n![5Ethernet](./screenshot/5Ethernet.png)\n![6USB](./screenshot/6USB.png)\n![6USBFinal](./screenshot/6USBFinal.png)\n![7Light](./screenshot/7Light.png)\n![8Volume](./screenshot/8Volume.png)\n![9Drivers](./screenshot/9Drivers.png)\n![Clover](./screenshot/Clover.png)\n\n\n\n\n## ALCPlugFix\n\n> 修复耳机切换及插入无声\n\n进入 `ALCPlugFix` 目录，双击 `install双击自动安装.command` 安装\n\n## HIDPI **感谢 @[冰水加劲Q](https://github.com/xzhih)**\n\n进入 `一键开启HIDPI并注入EDID` 目录，点击 `双击.command` 命令执行后以实现下面的效果：\n![hidpi](http://7.daliansky.net/hidpi.jpg)\n\n## 更新\n\n* 10-4-2017\n\n    * 加入显示器edid和HIDPI\n* 10-7-2017\n\n    * 修复bcm94352z在10.12下的WIFI驱动\n* 10-8-2017\n\n    * 添加一键开启HIDPI脚本，同时解决内屏黑屏问题，感谢 `冰水加劲Q` 提供的脚本\n* 10-17-2017\n    * EFI更新，修正显卡驱动\n    * 驱动更新：\n        * Lilu v1.2.0 \n        * AppleALC v1.2.1\n        * IntelGraphicsDVMTFixup v1.2.0\n        * AirportBrcmFixup v1.1.0\n    * 驱动修复：\n        * IntelGraphicsFixup v1.2.0 \n* 10-21-2017\n    * Clover 常规更新 Clover_v2.4k_r4259\n    * 驱动更新：\n        * FakeSMC v1765\n    * 修改BCM94352z驱动方式，将注入信息移动到FakeSMC，移除config.plist中的相关信息\n* 11-12-2017\n    * Clover 常规更新\n        * Clover_v2.4k_r4298\n    * ALC256声卡驱动更新\n        * 添加全新id:56\n        * 去除底噪\n    * ALCPlugFix更新,修复耳机插入状态\n* 3-13-2018\n\n    * 修改独显屏蔽模式，独显屏蔽更彻底，感谢@宪武\n    * Clover常规更新\n        * Clover_v2.4k_r4418\n        * drivers64UEFI更新\n            * 使用AptioMemoryFix.efi彻底解决内存分配不足卡+++问题\n            * Apfs.efi常规更新到10.13.4Beta5\n    * 驱动更新\n        * InterGraphicsFixup v1.2.5\n        * AppleALC v1.2.3\n        * Lilu v1.2.3\n        * Shiki v2.2.3\n        * AirportBrcmFixup v1.1.1\n* 4-9-2018\n\n    * Clover常规更新\n\n        * Clover_v2.4k_r4429 更新支持macOS 10.13.4\n        * Apfs.efi常规更新到10.13.5DB1\n    * 驱动更新\n\n      * InterGraphicsFixup v1.2.7\n      * AppleALC v1.2.6\n      * Shiki v2.2.6\n      * AirportBrcmFixup v1.1.2\n* 7-21-2018\n    * 支持`Mojave`/`High Sierra`/`Sierra`\n    * CLOVER常规更新\n        * Clover v2.4k r4618，支持10.13.6 17G2112\n        * 使用`ApfsDriverLoader-64.efi`，不需要再频繁地更新`apfs.efi`了\n    * 驱动更新\n        * Lilu v1.2.5\n        * AppleALC v1.3.0\n        * WhateverGreen v1.2.0\n* 8-4-2018\n    * CLOVER常规更新到v2.4k r4630\n        * 使用新的显卡驱动方式，更好地支持10.13/10.14\n    * 驱动更新\n        - Lilu v1.2.6\n        - AppleALC v1.3.1\n        - WhateverGreen v1.2.1\n* 8-6-2018\n    * Clover添加Disable minStolenSize less or equal fStolenMemorySize assertion，解决卡DVMT；另一种方法请移步：[通过修改DVMT Pre-Allocated解决AppleIntelKBLGraphicsFramebuffer问题](http://bbs.pcbeta.com/forum.php?mod=viewthread&tid=1730172&page=1#pid46869870)\n    * SMBIOS设置为MacBookPro15,2，它只支持10.13.6（17G2112/17G2208)以及10.14Beta版本，旧的系统请使用配置文件`config_MBP141.plist`\n* 8-8-2018\n\n    * 增加Brcm94352z/DW1560注入信息，解决10.13.6(17G2112/17G2208)/10.14蓝牙失效问题\n* 8-11-2018\n\n    * 加入了I2C触摸板的支持，开启更多手势\n* 9-22-2018\n    * 使用`FB Patcher`生成USBPower.kext，弃用`USBInjectAll.kext`和`SSDT-UIAC-ALL.aml`\n    * `VoodooI2C`更新到v2.0.1特别版，触摸板支持更多手势，支持双指捏合缩放，支持`Mojave`和`HighSierra`\n    * 声卡id注入:2，以解决部分机型无法驱动的问题\n    * 驱动常规更新\n        * Lilu v1.2.7\n        * WhatEverGreen v1.2.3\n        * AppleALC v1.3.2\n    * 修改主题文件，适配`Mojave`\n* 9-24-2018\n    * `config.plist`修正\n        * 删除`kextstopatch`里面关于`minStolen`的补丁\n        * 删除USB端口限制补丁\n    * 添加`USBPower.kext`驱动，删除`SSDT-UIAC-ALL.aml`\n    * 修正`SSDT-PCIList.aml`显示信息\n    * 修正自带主题`Hackintosh_ID`适配`Mojave`图标\n* 9-29-2018\n    * 增加睡眠呼吸灯\n    * 添加`DW1560`信息的注入，有效改善睡眠唤醒后蓝牙失效\n* 4-6-2019\n\n    * 更新支持到Mojave 10.14.4\n    * 常规驱动更新\n* 5-2-2019\n    * 更新`CLOVER`到v4924\n    * 修正`PCIList`信息\n    * 添加开机声音\n    * 修改电池驱动为`SMCBatteryManager.kext`\n* 5-19-2019\n    * 更新`CLOVER`到v4928\n    * 添加`ComboJack`，解决耳麦输入\n    * 修改`ALCPlugfix`，支持睡眠唤醒后`内置麦克风`和`耳麦`完美切换\n* 6-4-2019\n    * 更新 CLOVER 到 v4940\n    * 添加 macOS Catalina 支持\n    * WIFI工作正常，蓝牙暂时不工作\n    * 常规驱动更新\n\n\n\n\n## 如果你认可我的工作，可以通过 `打赏` 支持我后续的更新\n|微信|支付宝|\n| --- | --- |\n|![wechatpay_160](http://7.daliansky.net/wechatpay_160.jpg)|![alipay_160](http://7.daliansky.net/alipay_160.jpg)|\n\n\n## QQ群:\n331686786 [一起黑苹果](http://shang.qq.com/wpa/qunwpa?idkey=db511a29e856f37cbb871108ffa77a6e79dde47e491b8f2c8d8fe4d3c310de91)\n\n158976808 [燃7000黑苹果交流群](http://shang.qq.com/wpa/qunwpa?idkey=e2a57e954de694774549b675dda9cd9a6f5cf30db3a53d4d82a34b9013dde5e3)\n\n"
  },
  {
    "path": "README的副本.md",
    "content": "# Dell Inspiron 7000 (7x60) for macOS High Sierra/Sierra\n\n这是我使用的Dell Inspiron 7000(7560)的CLOVER引导文件\n## CLOVER\n* 支持Mojave/High Sierra/Sierra\n* CPU原生支持\n* 显卡原生支持，通过`WhateverGreen`自动侦测驱动\n* 声卡为ALC256(ALC3246)，使用 `AppleALC` 仿冒，layout-id:56\n* 无线网卡更换为bcm94352z，驱动信息位于 `FakeSMC` \n* 其它 `ACPI` 补丁修复采用 `hotpatch` 方式，文件位于 `/CLOVER/ACPI/patched`\n![screenshot18](http://7.daliansky.net/screenshot18.png)\n* 清理了下Drivers64UEFI目录，只保留需要的驱动程序\n![Clover](http://7.daliansky.net/dell/Clover.jpg)\n\n\n## ALCPlugFix\n\n> 修复耳机切换及插入无声\n\n进入 `ALCPlugFix` 目录，双击 `install双击自动安装.command` 安装\n\n## HIDPI **感谢 @[冰水加劲Q](https://github.com/xzhih)**\n进入 `一键开启HIDPI并注入EDID` 目录，点击 `双击.command` 命令执行后以实现下面的效果：\n![hidpi](http://7.daliansky.net/hidpi.jpg)\n\n## refind\n\n另一个BootLoader\n使用方法：将 `refind` 目录复制到 `/EFI` 下即可\n\n## 更新\n\n* 10-4-2017\n    * 加入显示器edid和HIDPI\n* 10-7-2017\n    * 修复bcm94352z在10.12下的WIFI驱动\n* 10-8-2017\n    * 添加一键开启HIDPI脚本，同时解决内屏黑屏问题，感谢 `冰水加劲Q` 提供的脚本\n* 10-17-2017\n    * EFI更新，修正显卡驱动\n    * 驱动更新：\n        * Lilu v1.2.0 \n        * AppleALC v1.2.1\n        * IntelGraphicsDVMTFixup v1.2.0\n        * AirportBrcmFixup v1.1.0\n    * 驱动修复：\n        * IntelGraphicsFixup v1.2.0 \n* 10-21-2017\n    * Clover 常规更新 Clover_v2.4k_r4259\n    * 驱动更新：\n        * FakeSMC v1765\n    * 修改BCM94352z驱动方式，将注入信息移动到FakeSMC，移除config.plist中的相关信息\n* 11-12-2017\n    * Clover 常规更新\n        * Clover_v2.4k_r4298\n    * ALC256声卡驱动更新\n        * 添加全新id:56\n        * 去除底噪\n    * ALCPlugFix更新,修复耳机插入状态\n* 3-13-2018\n\n    * 修改独显屏蔽模式，独显屏蔽更彻底，感谢@宪武\n    * Clover常规更新\n        * Clover_v2.4k_r4418\n        * drivers64UEFI更新\n            * 使用AptioMemoryFix.efi彻底解决内存分配不足卡+++问题\n            * Apfs.efi常规更新到10.13.4Beta5\n    * 驱动更新\n        * InterGraphicsFixup v1.2.5\n        * AppleALC v1.2.3\n        * Lilu v1.2.3\n        * Shiki v2.2.3\n        * AirportBrcmFixup v1.1.1\n* 4-9-2018\n\n    * Clover常规更新\n\n        * Clover_v2.4k_r4429 更新支持macOS 10.13.4\n        * Apfs.efi常规更新到10.13.5DB1\n    * 驱动更新\n\n      * InterGraphicsFixup v1.2.7\n      * AppleALC v1.2.6\n      * Shiki v2.2.6\n      * AirportBrcmFixup v1.1.2\n* 7-21-2018\n    * 支持`Mojave`/`High Sierra`/`Sierra`\n    * CLOVER常规更新\n        * Clover v2.4k r4618，支持10.13.6 17G2112\n        * 使用`ApfsDriverLoader-64.efi`，不需要再频繁地更新`apfs.efi`了\n    * 驱动更新\n        * Lilu v1.2.5\n        * AppleALC v1.3.0\n        * WhateverGreen v1.2.0\n* 8-4-2018\n    * CLOVER常规更新到v2.4k r4630\n        * 使用新的显卡驱动方式，更好地支持10.13/10.14\n    * 驱动更新\n        - Lilu v1.2.6\n        - AppleALC v1.3.1\n        - WhateverGreen v1.2.1\n* 8-6-2018\n    * Clover添加Disable minStolenSize less or equal fStolenMemorySize assertion，解决卡DVMT；另一种方法请移步：[通过修改DVMT Pre-Allocated解决AppleIntelKBLGraphicsFramebuffer问题](http://bbs.pcbeta.com/forum.php?mod=viewthread&tid=1730172&page=1#pid46869870)\n    * SMBIOS设置为MacBookPro15,2，它只支持10.13.6（17G2112/17G2208)以及10.14Beta版本，旧的系统请使用配置文件`config_MBP141.plist`\n* 8-8-2018\n    * 增加Brcm94352z/DW1560注入信息，解决10.13.6(17G2112/17G2208)/10.14蓝牙失效问题\n* 8-11-2018\n    * 加入了I2C触摸板的支持，开启更多手势\n* 9-22-2018\n    * 使用`FB Patcher`生成USBPower.kext，弃用`USBInjectAll.kext`和`SSDT-UIAC-ALL.aml`\n    * `VoodooI2C`更新到v2.0.1特别版，触摸板支持更多手势，支持双指捏合缩放，支持`Mojave`和`HighSierra`\n    * 声卡id注入:2，以解决部分机型无法驱动的问题\n    * 驱动常规更新\n        * Lilu v1.2.7\n        * WhatEverGreen v1.2.3\n        * AppleALC v1.3.2\n    * 修改主题文件，适配`Mojave`\n* 9-23-2018\n    * `config.plist`修正\n        * 删除`kextstopatch`里面关于`minStolen`的补丁\n        * 删除USB端口限制补丁\n    * 添加`USBPower.kext`驱动，删除`SSDT-UIAC-ALL.aml`\n    * 修正`SSDT-PCIList.aml`显示信息\n    * 修正自带主题`Hackintosh_ID`适配`Mojave`图标\n\n\n\n## 如果你认可我的工作，可以通过 `打赏` 支持我后续的更新\n|微信|支付宝|\n| --- | --- |\n|![wechatpay_160](http://7.daliansky.net/wechatpay_160.jpg)|![alipay_160](http://7.daliansky.net/alipay_160.jpg)|\n\n\n## QQ群:\n331686786 [一起黑苹果](http://shang.qq.com/wpa/qunwpa?idkey=db511a29e856f37cbb871108ffa77a6e79dde47e491b8f2c8d8fe4d3c310de91)\n\n158976808 [燃7000黑苹果交流群](http://shang.qq.com/wpa/qunwpa?idkey=e2a57e954de694774549b675dda9cd9a6f5cf30db3a53d4d82a34b9013dde5e3)\n\n"
  },
  {
    "path": "Tools/archey",
    "content": "#!/bin/bash\n# Modified: DalianSky(https://blog.daliansky.net)\n# 脚本中调用了bdmesg获取主板型号，所以使用前请勾选安装CLOVER的RC Scripts\n# updated: 2-15-2019\n\n# archey-osx 1.6.0 (https://github.com/obihann/archey-osx/)\n\n# test to see if bash supports arrays\narraytest[0]='test' || (echo 'Error: Arrays are not supported in this version of\nbash.' && exit 2)\n\n# Detect the packager.\nif [ -x /usr/local/bin/brew ]; then\n  detectedpackager=homebrew\nelif command -v port >/dev/null; then\n  detectedpackager=macports\nelse\n  detectedpackager=none\nfi\n\n# Get the command line options\nopt_nocolor=f\nopt_force_color=f\nopt_offline=f\nfor arg in \"$@\"\ndo\n  case \"${arg}\" in\n    -p|--packager)\n      packager=$detectedpackager\n      ;;\n    -m|--macports)\n      packager=macports\n      ;;\n    -b|--nocolor)\n      opt_nocolor=t\n      ;;\n    -c|--color)\n      opt_nocolor=f\n      opt_force_color=t\n      ;;\n    -o|--offline)\n        opt_offline=t\n      ;;\n    -h|--help)\n      echo \"Archey OS X 1.6.0\"\n      echo\n      echo \"Usage: $0 [options]\"\n      echo\n      echo \"  -p --packager  Use auto detected package system (default packager: ${detectedpackager}).\"\n      echo \"  -m --macports  Force use MacPorts as package system.\"\n      echo \"  -b --nocolor   Turn color off.\"\n      echo \"  -c --color     Force the color on (overrides --nocolor).\"\n      echo \"  -o --offline   Disable the IP address check.\"\n      exit 0\n      ;;\n    *)\n      echo \"Unknown argument: $1\" 1>&2\n      echo \"For help, use: $0 --help\" 1>&2\n      exit 1\n      ;;\n  esac\ndone\n\nosx_version=\"$(sw_vers -productVersion)\"\nosx_build=\"$(sw_vers -buildVersion)\"\n\n# define OS Short Version \n#case \"$osx_version\" in\n#  \"10.4\"*)  codename=\"Mac OS X Tiger\" ;;\n#  \"10.5\"*)  codename=\"Mac OS X Leopard\" ;;\n#  \"10.6\"*)  codename=\"Mac OS X Snow Leopard\" ;;\n#  \"10.7\"*)  codename=\"Mac OS X Lion\" ;;\n#  \"10.8\"*)  codename=\"OS X Mountain Lion\" ;;\n#  \"10.9\"*)  codename=\"OS X Mavericks\" ;;\n#  \"10.10\"*) codename=\"OS X Yosemite\" ;;\n#  \"10.11\"*) codename=\"OS X El Capitan\" ;;\n#  \"10.12\"*) codename=\"macOS Sierra\" ;;\n#  \"10.13\"*) codename=\"macOS High Sierra\" ;;\n#  \"10.14\"*) codename=\"macOS Mojave\" ;;\n#  *)        codename=\"macOS\" ;;\n#esac\n\n# define OS Short Version \ncodename=$(xxd -ps /Applications/Utilities/System\\ Information.app/Contents/MacOS/System\\ Information | tr -d '\\n' | perl -nle \"print $& if m{00$(sw_vers -productVersion | awk -F '.' '{printf $1\".\"$2}' | xxd -ps)00\\K.*?00}\" | xxd -r -p)\n\nmem_total=\"$(($(sysctl -n hw.memsize) / 1024 / 1024))\"\nmem_wired=\"$(vm_stat | awk '/wired/ { print $4 }')\"\nmem_active=\"$(vm_stat | awk '/active / { printf $3 }')\"\nmem_compressed=\"$(vm_stat | awk '/occupied/ { printf $5 }')\"\nmem_used=\"$(((${mem_wired//.} + ${mem_active//.} + ${mem_compressed//.}) * 4 / 1024))\"\n\ncores=\"$(sysctl -n hw.logicalcpu_max)\"\n\n# Uptime\nboot=\"$(sysctl -n kern.boottime)\"\nboot=\"${boot/'{ sec = '}\"\nboot=\"${boot/,*}\"\nnow=\"$(date +%s)\"\nseconds=\"$((now - boot))\"\ndays=\"$((seconds / 60 / 60 / 24)) days\"\nhours=\"$((seconds / 60 / 60 % 24)) hours\"\nmins=\"$((seconds / 60 % 60)) minutes\"\n\n# Format the days, hours and minutes.\nstrip_date() {\n  case \"$1\" in\n    \"0 \"*) unset \"${1/* }\" ;;\n    \"1 \"*) printf \"%s\" \"${1/s}\" ;;\n    *)     printf \"%s\" \"$1\" ;;\n  esac\n}\n\ndays=\"$(strip_date \"$days\")\"\nhours=\"$(strip_date \"$hours\")\"\nmins=\"$(strip_date \"$mins\")\"\n\nuptime=\"${days:+$days, }${hours:+$hours, }${mins}\"\nuptime=\"${uptime%', '}\"\nuptime=\"${uptime:-${seconds} seconds}\"\n\n# model\nif [[ \"$(kextstat | grep \"FakeSMC\")\" != \"\" ]]; then\n  #model=\"$(ioreg -c FakeSMCKeyStore | grep product-name | sed -e's/\"//g' | sed -e 's/|//g' | sed -e 's/product-name = //g' | sed -e 's/  //g') (SMBIOS: $(sysctl -n hw.model))\"\n  model=\"$(bdmesg | grep ProductName | grep ProductName | sed '{print $7}')\"\nelse\n  model=\"$(sysctl -n hw.model)\"\nfi\n\n# Mainboard\nmb=\"$(bdmesg | grep Z370 | awk '{print $8,$9,$10}' | sed \"s/'Z/Z/g\" | sed \"s/)'/)/g\")\"\n\n# System Variables\n# User=\"$(osascript -e \"computer name of (system info)\")\"\n# Hostname=$(osascript -e \"computer name of (system info)\")\n# Hostname=$(system_profiler SPSoftwareDataType | grep \"Computer\" | sed 's/      Computer Name: //g')\nUser=$(echo $(osascript -e \"computer name of (system info)\") | sed \"s/-/ /g\") \nDate=$(date | sed 's/CST//g')\n# IP=$(osascript -e \"IPv4 address of (system info)\")\n# IP=`echo $(ifconfig | grep 'inet.*netmask.*broadcast') | awk '{print $2}'`\nIntranet=$(osascript -e \"IPv4 address of (system info)\")\nPublic=$(dig +short myip.opendns.com @resolver1.opendns.com)\nSystem_version=\"$codename $osx_version $osx_build\"\nKernel_version=\"$(uname) $(uname -r)\"\nUptime=$(uptime | sed 's/.*up \\([^,]*\\), .*/\\1/')\nShell=\"$SHELL\"\nTerminal=\"$TERM by ${TERM_PROGRAM//_/ }\" \nCpu=\"$(sysctl -n machdep.cpu.brand_string | sed 's/(R)//g' | sed 's/(TM)//g' | sed 's/CPU @ //g') x (${cores})\"\nmemory=\"${mem_used}MB(Avai) / ${mem_total}MB(Total)\"\n\n# Battery\nBattery=$(ioreg -c AppleSmartBattery -r | awk '$1~/Capacity/{c[$1]=$3} END{OFMT=\"%.2f%\"; max=c[\"\\\"MaxCapacity\\\"\"]; if (max>0) { print 100*c[\"\\\"CurrentCapacity\\\"\"]/max;} }')\nbatterystatus=$(pmset -g batt | sed -n '2p' | awk '{print $4}' | sed 's/;//g')\nif [[ $batterystatus == discharging ]] ; then \n  batterystatus=\"未充电\"\nelif [[ $batterystatus == charging ]] ; then \n  batterystatus=\"充电中\"\nelse \n  batterystatus=\"充电完成\"\nfi\n\n# disk\ndisk_total=\"$(df -h | head -2 | tail -1 | awk '{print $2}' | sed 's/i/B/g')(Total)\"\ndisk_used=\"$(df -h | head -2 | tail -1 | awk '{print $4}' | sed 's/i/B/g')(Avai)\"\nDisk=\"$disk_used / $disk_total\"\n\n\n# GPU\n# main resolution\nresolution=\"$(system_profiler SPDisplaysDataType | grep Resolution | awk 'NF+=1' | sed 's/Resolution://g' | cut -b 12- | sed -e 's/, /\\n/g' | sed -n 1p)\"\ngpu=\"$(system_profiler SPDisplaysDataType | awk -F': ' '/^\\ *Chipset Model:/ {printf $2 \" \"}')\"\nvram=\"$(system_profiler SPDisplaysDataType | grep VRAM | cut -b 7-)\"\n# extension resolution\ndisplayext=\"$(system_profiler SPDisplaysDataType | grep Resolution | awk 'NF+=1' | sed 's/Resolution://g' | cut -b 12- | sed -e 's/, /\\n/g' | sed -n 2p)\"\n#if [[ -z $displayext ]] ; then \n#  displayext=$resolution\n#fi\n#if type -p screenresolution >/dev/null; then\n#  resolution=\"$(screenresolution get 2>&1 | awk '/Display/ {printf $6 \"Hz, \"}')\"\n#  resolution=\"${resolution//x??@/ @ }\"\n#\n#else\n#  resolution=\"$(system_profiler SPDisplaysDataType |\\\n#          awk '/Resolution:/ {printf $2\"x\"$4\" @ \"$6\"Hz, \"}')\"\n#fi\n#\n## If no refresh rate is empty.\n#[[ \"$resolution\" == *\"@ Hz\"* ]] && \\\n#  resolution=\"${resolution//@ Hz}\"\n#\n#[[ \"${scale_factor%.*}\" == 2 ]] && \\\n#  resolution=\"${resolution// @/@2x @}\"\n#\n#if [[ \"$refresh_rate\" == \"off\" ]]; then\n#  resolution=\"${resolution// @ [0-9][0-9]Hz}\"\n#  resolution=\"${resolution// @ [0-9][0-9][0-9]Hz}\"\n#fi\n#\n#[[ \"$resolution\" == *\"0Hz\"* ]] && \\\n#  resolution=\"${resolution// @ 0Hz}\"\n#resolution=\"${resolution%,*}\"\n\ncase \"$term\" in\n    \"Apple_Terminal\")\n      term_font=\"$(osascript <<END\n             tell application \"Terminal\" to font name of window frontmost\nEND\n)\"\n    ;;\n\n    \"iTerm2\")\n      # Unfortunately the profile name is not unique, but it seems to be the only thing\n      # that identifies an active profile. There is the \"id of current session of current win-\n      # dow\" though, but that does not match to a guid in the plist.\n      # So, be warned, collisions may occur!\n      # See: https://groups.google.com/forum/#!topic/iterm2-discuss/0tO3xZ4Zlwg\n      local current_profile_name profiles_count profile_name diff_font none_ascii\n\n      current_profile_name=\"$(osascript <<END\n                  tell application \"iTerm2\" to profile name \\\n                  of current session of current window\nEND\n)\"\n\n      # Warning: Dynamic profiles are not taken into account here!\n      # https://www.iterm2.com/documentation-dynamic-profiles.html\n      font_file=\"${HOME}/Library/Preferences/com.googlecode.iterm2.plist\"\n\n      # Count Guids in \"New Bookmarks\"; they should be unique\n      profiles_count=\"$(PlistBuddy -c \"Print :New\\ Bookmarks:\" \"$font_file\" | grep -c \"Guid\")\"\n\n      for ((i=0; i<=profiles_count; i++)); do\n        profile_name=\"$(PlistBuddy -c \"Print :New\\ Bookmarks:${i}:Name:\" \"$font_file\")\"\n\n        if [[ \"$profile_name\" == \"$current_profile_name\" ]]; then\n          # \"Normal Font\"\n          term_font=\"$(PlistBuddy -c \"Print :New\\ Bookmarks:${i}:Normal\\ Font:\" \\\n                 \"$font_file\")\"\n\n          # Font for non-ascii characters\n          # Only check for a different non-ascii font, if the user checked\n          # the \"use a different font for non-ascii text\" switch.\n          diff_font=\"$(PlistBuddy -c \"Print :New\\ Bookmarks:${i}:Use\\ Non-ASCII\\ Font:\" \\\n                 \"$font_file\")\"\n\n          if [[ \"$diff_font\" == \"true\" ]]; then\n            non_ascii=\"$(PlistBuddy -c \"Print :New\\ Bookmarks:${i}:Non\\ Ascii\\ Font:\" \\\n                   \"$font_file\")\"\n\n            [[ \"$term_font\" != \"$non_ascii\" ]] && \\\n              term_font=\"$term_font (normal) / $non_ascii (non-ascii)\"\n          fi\n        fi\n      done\n    ;;\nesac\n\n# Set up colors if:\n# * stdout is a tty\n# * the user hasn't turned it off\n# * or if we're forcing color\nif [[ ( -t 1  && \"${opt_nocolor}\" = f) || \"${opt_force_color}\" = t ]]\nthen\n  RED=$(tput       setaf 1 2>/dev/null)\n  GREEN=$(tput     setaf 2 2>/dev/null)\n  YELLOW=$(tput    setaf 3 2>/dev/null)\n  BLUE=$(tput      setaf 4 2>/dev/null)\n  PURPLE=$(tput    setaf 5 2>/dev/null)\n  textColor=$(tput setaf 6 2>/dev/null)\n  normal=$(tput    sgr0 2>/dev/null)\nfi\n\nfieldlist[${#fieldlist[@]}]=\"${textColor}主板型号 :${normal} ${mb}${normal}\"\nfieldlist[${#fieldlist[@]}]=\"${textColor}操作系统 :${normal} ${System_version}${normal}\"\nfieldlist[${#fieldlist[@]}]=\"${textColor}内核版本 :${normal} ${Kernel_version}${normal}\"\nfieldlist[${#fieldlist[@]}]=\"${textColor}开机时间 :${normal} ${uptime}${normal}\"\nfieldlist[${#fieldlist[@]}]=\"${textColor}Shell    :${normal} ${Shell}${normal}\"\nfieldlist[${#fieldlist[@]}]=\"${textColor}当前时间 :${normal} ${Date}${normal}\"\nfieldlist[${#fieldlist[@]}]=\"${textColor}处理器   :${normal} ${Cpu}${normal}\"\nfieldlist[${#fieldlist[@]}]=\"${textColor}内存     :${normal} ${memory}${normal}\"\nfieldlist[${#fieldlist[@]}]=\"${textColor}磁盘     :${normal} ${Disk}${normal}\"\nif [[ ! -z $Battery ]]; then\n    fieldlist[${#fieldlist[@]}]=\"${textColor}剩余电量 :${normal} ${Battery}%  /  ${batterystatus}${normal}\"\nfi\nfieldlist[${#fieldlist[@]}]=\"${textColor}IP 地址  :${normal} 公网 ${Public} / 内网 ${Intranet}${normal}\"\nfieldlist[${#fieldlist[@]}]=\"${textColor}当前终端 :${normal} ${Terminal}${normal}\"\nfieldlist[${#fieldlist[@]}]=\"${textColor}显卡设备 :${normal} ${gpu}/ $vram${normal}\"\nfieldlist[${#fieldlist[@]}]=\"${textColor}主显示器 :${normal} ${resolution}${normal}\"\nfieldlist[${#fieldlist[@]}]=\"${textColor}扩展显示 :${normal} ${displayext}${normal}\"\n\nlogofile=${ARCHEY_LOGO_FILE:-\"${HOME}/.config/archey-logo\"}\nif [ -a \"$logofile\" ]\n  then\n  source \"$logofile\"\nelse\n# The ${foo#  } is a cheat so that it lines up here as well\n# as when run.\n  echo -e \"\n${normal# }                                      ${User} ${model}\n${normal# }                                      ----------------------------------------------\n${GREEN#  }                                      ${fieldlist[0]}\n${GREEN#  }                 ###                  ${fieldlist[1]}\n${GREEN#  }               ####                   ${fieldlist[2]}\n${GREEN#  }               ###                    ${fieldlist[3]}\n${GREEN#  }       #######    #######             ${fieldlist[4]}\n${YELLOW# }     ######################           ${fieldlist[5]}\n${YELLOW# }    #####################             ${fieldlist[6]}\n${RED#    }    ####################              ${fieldlist[7]}\n${RED#    }    ####################              ${fieldlist[8]}\n${RED#    }    #####################             ${fieldlist[9]}\n${PURPLE# }     ######################           ${fieldlist[10]}\n${PURPLE# }      ####################            ${fieldlist[11]}\n${BLUE#   }        ################              ${fieldlist[12]}\n${BLUE#   }         ####     #####               ${fieldlist[13]}\n${BLUE#   }                                      ${fieldlist[14]}\n${normal}                                      \n\"\nfi\n"
  },
  {
    "path": "Tools/usb_Ports",
    "content": "#!/bin/sh\nioreg | grep @14 | awk '{print $3 $4 $5 $6}' | sed 's/<class//g' | sed 's/Root//g' | sed 's/-o/--/g' | sed 's/,//g' | sed 's/|||+--//g' | sed 's/||||//g' | sed '/^$/d'\n"
  },
  {
    "path": "hda-tools/Extract_ALC256/Platforms.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict/>\n</plist>\n"
  },
  {
    "path": "hda-tools/Extract_ALC256/ahhcd.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>HDAConfigDefault</key>\n\t<array>\n\t\t<dict>\n\t\t\t<key>AFGLowPowerState</key>\n\t\t\t<data>\n\t\t\tAwAAAA==\n\t\t\t</data>\n\t\t\t<key>Codec</key>\n\t\t\t<string>Rockjesus - Realtek ALC256 (3246) - dell 7559</string>\n\t\t\t<key>CodecID</key>\n\t\t\t<integer>283902550</integer>\n\t\t\t<key>ConfigData</key>\n\t\t\t<data>\n\t\t\tASccAAEnHQEBJx6mAScfmQFHHBABRx0BAUceFwFHH5kCFxwgAhcd\n\t\t\tEAIXHiECFx8BAbcMAg==\n\t\t\t</data>\n\t\t\t<key>FuncGroup</key>\n\t\t\t<integer>1</integer>\n\t\t\t<key>LayoutID</key>\n\t\t\t<integer>11</integer>\n\t\t\t<key>WakeConfigData</key>\n\t\t\t<data>\n\t\t\tAUcMAg==\n\t\t\t</data>\n\t\t\t<key>WakeVerbReinit</key>\n\t\t\t<true/>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>AFGLowPowerState</key>\n\t\t\t<data>\n\t\t\tAwAAAA==\n\t\t\t</data>\n\t\t\t<key>Codec</key>\n\t\t\t<string>Insanelydeepak - Realtek ALC256 (3246) for Dell Series</string>\n\t\t\t<key>CodecID</key>\n\t\t\t<integer>283902550</integer>\n\t\t\t<key>ConfigData</key>\n\t\t\t<data>\n\t\t\tASccEAEnHQABJx6gAScfkAFHHCABRx0AAUceFwFHH5ABlxwwAZcd\n\t\t\tEAGXHosBlx8CAhccUAIXHRACFx4rAhcfAgE3HPABNx0AATceAAE3\n\t\t\tH0ABhxzwAYcdAAGHHgABhx9AAacc8AGnHQABpx4AAacfQAG3HPAB\n\t\t\ttx0AAbceAAG3H0AB1xzwAdcdAAHXHgAB1x9AAecc8AHnHQAB5x4A\n\t\t\tAecfQAFHDAI=\n\t\t\t</data>\n\t\t\t<key>FuncGroup</key>\n\t\t\t<integer>1</integer>\n\t\t\t<key>LayoutID</key>\n\t\t\t<integer>13</integer>\n\t\t\t<key>WakeConfigData</key>\n\t\t\t<data>\n\t\t\tAUcMAg==\n\t\t\t</data>\n\t\t\t<key>WakeVerbReinit</key>\n\t\t\t<true/>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>AFGLowPowerState</key>\n\t\t\t<data>\n\t\t\tAwAAAA==\n\t\t\t</data>\n\t\t\t<key>CodecID</key>\n\t\t\t<integer>283902550</integer>\n\t\t\t<key>Comment</key>\n\t\t\t<string>vusun123 - ALC256 for Asus X555UJ</string>\n\t\t\t<key>ConfigData</key>\n\t\t\t<data>\n\t\t\tAUccUAFHHQABRx4XAUcfkAFHDAIBpxwwAacdAAGnHqABpx+QAhcc\n\t\t\tIAIXHRACFx4hAhcfAA==\n\t\t\t</data>\n\t\t\t<key>FuncGroup</key>\n\t\t\t<integer>1</integer>\n\t\t\t<key>LayoutID</key>\n\t\t\t<integer>28</integer>\n\t\t\t<key>WakeConfigData</key>\n\t\t\t<data>\n\t\t\tAUcMAg==\n\t\t\t</data>\n\t\t\t<key>WakeVerbReinit</key>\n\t\t\t<true/>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>AFGLowPowerState</key>\n\t\t\t<data>\n\t\t\tAwAAAA==\n\t\t\t</data>\n\t\t\t<key>Codec</key>\n\t\t\t<string>DalianSky - Realtek ALC256 (3246) for Dell 7000 Series</string>\n\t\t\t<key>CodecID</key>\n\t\t\t<integer>283902550</integer>\n\t\t\t<key>ConfigData</key>\n\t\t\t<data>\n\t\t\tASccMAEnHQEBJx6mAScfkAE3HPABNx0AATceAAE3H0ABRxwQAUcd\n\t\t\tAQFHHhcBRx+QAUcMAgGHHPABhx0AAYceAAGHH0ABlxxAAZcdEAGX\n\t\t\tHoEBlx8CAacc8AGnHQABpx4AAacfQAG3HPABtx0AAbceAAG3H0AB\n\t\t\t1xzwAdcdAAHXHgAB1x9AAecc8AHnHQAB5x4AAecfQAIXHCACFx0Q\n\t\t\tAhceIQIXHwICFwwC\n\t\t\t</data>\n\t\t\t<key>FuncGroup</key>\n\t\t\t<integer>1</integer>\n\t\t\t<key>LayoutID</key>\n\t\t\t<integer>56</integer>\n\t\t\t<key>WakeConfigData</key>\n\t\t\t<data>\n\t\t\tAUcMAg==\n\t\t\t</data>\n\t\t\t<key>WakeVerbReinit</key>\n\t\t\t<true/>\n\t\t</dict>\n\t</array>\n</dict>\n</plist>\n"
  },
  {
    "path": "hda-tools/ccc",
    "content": "#!/bin/sh\nsudo rm -rf /System/Library/Caches/com.apple.kext.caches/Startup/kernelcache\nsudo rm -rf /System/Library/PrelinkedKernels/prelinkedkernel\nsudo touch /System/Library/Extensions/ && sudo kextcache -u /\n"
  },
  {
    "path": "hda-tools/codecgraph",
    "content": "#!/bin/sh\n\nversion=\"1.0\"\nname=`basename $0`\ndir=`dirname $0`\nfmt=\"svg\"\nusage=\"Usage: $name [-f format] [-h] [-o name] [-v] [codecfile]\"\nhelp=\"Options:\n  -f format     Set output format (svg, ps, png), default is $fmt\n  -h            Display list of parameters and exit\n  -o name       Set output file name\n  -v            Display version information and exit\n\"\n\nwhile getopts hvf:o: opt\ndo\n    case \"$opt\" in\n    f)\t\t\t\t# specify output file format\n         fmt=\"$OPTARG\"\n         ;;\n    h)\n        echo \"$usage\" 1>&2\n        echo \"$help\" 1>&2\n        exit 0\n        ;;\n    o)\t\t\t\t# specify output file name\n         outfile=\"$OPTARG\"\n         ;;\n    v)\t\t\t\t# display version information\n\techo \"$name $version\"\n\texit 0\n        ;;\n    \\?)\t\n        echo \"$usage\" 1>&2\n        exit 1\n        ;;\n    esac\ndone\nshift `expr $OPTIND - 1`\n\n\ncodecfile=$1\n\nif [ -z \"$codecfile\" ]; then\n    codecfile=`ls /proc/asound/card*/codec*|head -1 2>/dev/null`\n    if [ -n \"$codecfile\" ]; then\n       echo \"Reading codec data from $codecfile\"\n    fi\nfi\n\nif [ -z \"$codecfile\" ]; then\n    echo \"error: codec file not specified\" >&2\n    exit 1\nfi\n\nif [ ! -x $dir/codecgraph.py ]; then\n    echo \"error: can't execute codecgraph.py (package corrupt?)\" >&2\n    exit 1\nfi\n\nif [ -z \"`which dot`\" ]; then\n    echo \"error: dot executable not found (did you install graphviz?)\" >&2\n    exit 1\nfi\n\nif [ ! -r \"$codecfile\" ]; then\n    echo \"error: can't read input file $codecfile\" >&2\n    exit 1\nfi\n\nif [ -z \"$outfile\" ]; then\n    outfile=\"`basename $codecfile`\"\nfi\n\ncat $codecfile | grep -v \"^[\\t ]*$\" | head -1 | grep ^Codec:\nif [ $? -ne 0 ]; then\n    echo \"error: $codecfile not a codec description\" 2>&1\n    exit 1\nfi\n\ndotfile=`mktemp -t codecgraph.XXXXXX`\n$dir/codecgraph.py $codecfile > $dotfile\necho Generating $outfile.$fmt\ndot -T$fmt -o$outfile.$fmt $dotfile\nrm $dotfile\n"
  },
  {
    "path": "hda-tools/codecgraph.1",
    "content": ".TH \"CODECGRAPH\" \"1\" \"Version 1\\&.0\" \"Jan 2008\" \"HDA tools\" \n.PP \n.SH \"NAME\" \ncodecgraph - hda-intel codec graph generator\n.PP \n.SH \"SYNOPSIS\" \n\\fBcodecgraph\\fP\n[\\fB-f\\fP \\fIformat\\fP]\n[\\fB-h\\fP]\n[\\fB-o\\fP \\fIname\\fP]\n[\\fB-v\\fP]\n[\\fIcodecfile\\fP]\n.PP \n.SH \"DESCRIPTION\" \n\\fBcodecgraph\\fP generates a graph based on the ALSA description of a\nHigh Definition Audio codec\\&. The generated graph depicts the HDA codec\nlayout and node connections, helping driver troubleshooting and\nmaintenance\\&. In Linux this description is available at\n\\f(CW/proc/asound/card*/codec#*\\fP\\&.\n.PP \n.SH \"OPTIONS\" \n.IP \"\\fB-f\\fP \\fIformat\\fP\" \nSpecify the format of the generated graph\\&. Valid formats are all\nformats accepted by \\fBdot(1)\\fP, including \\fBps\\fP (PostScript)\\&,\n\\fBsvg\\fP (Structured Vector Graphics)\\&, \\fBfig\\fP (XFIG graphics)\nand \\fBpng\\fP (Portable Network Graphics)\\&.\n.IP \"\\fB-h\\fP\"\nShow usage information and exit\\&.\n.IP \"\\fB-o\\fP \\fIname\\fP\" \nSet the output file name\\&.\n.IP \"\\fB-v\\fP\" \nPrint version information and exit\\&.\n.PP \n.SH \"EXAMPLES\" \nGenerate a graph from codec.txt in PNG format:\n.IP \"\" \n\\f(CWcodecgraph -f png codec.txt\\fP\n.PP \nGenerate a graph for the local host HDA codec data:\n.IP \"\" \n\\f(CWcodecgraph\\fP\n.PP \n.SH \"SEE ALSO\" \ndot(1)\n.PP \n.SH \"AUTHOR\" \nEduardo Habkost <ehabkost@raisama.net>\\&. Wrapper script\nby Claudio Matsuoka <cmatsuoka@gmail.com>\\&.\n.PP \n"
  },
  {
    "path": "hda-tools/codecgraph.py",
    "content": "#!/usr/bin/python\n#\n# Script to generate graphviz graphs from HDA-Intel codec information\n#\n# by Eduardo Habkost <ehabkost@mandriva.com>\n#\n# Copyright (c) 2006,2007 Eduardo Habkost <ehabkost@mandriva.com>\n# Copyright (c) 2006,2007 Mandriva Conectiva\n#\n#\n# This program is free software; you can redistribute it and/or modify\n# it under the terms of the GNU General Public License as published by\n# the Free Software Foundation; either version 2 of the License, or\n# (at your option) any later version.\n# \n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n# GNU General Public License for more details.\n# \n# You should have received a copy of the GNU General Public License\n# along with this program; if not, write to the Free Software\n# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.\n\nimport re, sys\n\nALL_NODES = False\n\ndef indentlevel(line):\n\t\"\"\"Return the indent level of a line\"\"\"\n\tm = re_indent.match(line)\n\tif not m:\n\t\treturn 0\n\treturn len(m.group(0))\n\ndef parse_item(level, lines):\n\t\"\"\"Read a line and corresponding indented lines\"\"\"\n\titem = lines.pop(0).rstrip(' \\r\\n').lstrip(' ')\n\tsubitems = list(parse_items(level, lines))\n\treturn item,subitems\n\ndef parse_items(level, lines):\n\t\"\"\"Parse a list of indented lines\"\"\"\n\twhile lines:\n\t\tl = lines[0]\n\t\tlinelvl = indentlevel(l)\n\t\tif linelvl <= level:\n\t\t\t# end of list\n\t\t\tbreak\n\t\tyield parse_item(linelvl, lines)\n\ndef coloravg(a, b, v):\n\tr = tuple([int(a[i]*(1-v) + b[i]*v) for i in 0,1,2])\n\treturn r\n\ndef formatcolor(c):\n\treturn '#%02x%02x%02x' % c\n\nclass Amplifier:\n\tdef __init__(self, ofs, nsteps, stepsize, mute):\n\t\tself.ofs = int(ofs, 16)\n\t\tself.nsteps = int(nsteps, 16)\n\t\tself.stepsize = stepsize\n\t\tself.mute = mute\n\n\tdef set_values(self, values):\n\t\tself.values = values\n\t\tself.gainvalues = [v & 0x7f for v in values]\n\t\tself.mutevalues = [(v & 0x80) <> 0 for v in values]\n\n\tdef color(self):\n\t\tif True in self.mutevalues:\n\t\t\tlevel = 0\n\t\telse:\n\t\t\taverage = sum(self.gainvalues)/len(self.gainvalues)\n\n\t\t\tif self.nsteps == 0:\n\t\t\t\tlevel = 1\n\t\t\telse:\n\t\t\t\t#XXX: confirm if this formula is correct\n\t\t\t\tlevel = 1-float(average-self.ofs)/(self.nsteps)\n\n\t\tif level < 0: level = 0\n\t\tif level > 1: level = 1\n\n\t\tzerocolor = (200, 200, 200)\n\t\tfullcolor = (0, 0, 255)\n\t\tcolor = coloravg(zerocolor, fullcolor, level)\n\n\t\treturn formatcolor(color)\n\nclass Node:\n\tnode_info_re = re.compile('^Node (0x[0-9a-f]*) \\[(.*?)\\] wcaps 0x[0-9a-f]*?: (.*)$')\n\tfinal_hex_re = re.compile(' *(0x[0-9a-f]*)$')\n\n\tdef __init__(self, codec, item, subitems):\n\t\tself.item = item\n\t\tself.subitems = subitems\n\t\tself.codec = codec\n\n\t\tfields = {}\n\n\t\t# split first line and get some fields\n\t\tdata = item.split(' ')\n\t\tm = self.node_info_re.match(item)\n\t\tself.nid = int(m.group(1), 16)\n\t\tself.type = m.group(2)\n\t\twcapstr = m.group(3)\n\n\t\tself.wcaps = wcapstr.split()\n\n\t\t# parse all items on the node information\n\t\tfor item,subitems in self.subitems:\n\t\t\t# Parse node fields\n\t\t\tif ':' in item:\n\t\t\t\tf,v = item.split(':', 1)\n\t\t\t\tv = v.lstrip()\n\n\t\t\t\t# strip hex number at the end.\n\t\t\t\t# some fields, such as Pincap & Pin Default,\n\t\t\t\t# have an hex number in the end\n\t\t\t\tm = self.final_hex_re.search(f)\n\t\t\t\tif m:\n\t\t\t\t\tf = self.final_hex_re.sub('', f)\n\n\t\t\t\t\t# store the hex value and the\n\t\t\t\t\t# string, on different keys\n\t\t\t\t\tfields[f+'-hex'] = m.group(1),subitems\n\t\t\t\t\tfields[f] = v,subitems\n\t\t\t\telse:\n\t\t\t\t\tfields[f] = v,subitems\n\t\t\telse:\n\t\t\t\tsys.stderr.write(\"Unknown node item: %s\\n\" % (item))\n\n\t\tself.fields = fields\n\n\t\t# parse connection info\n\t\tconn = fields.get('Connection', ('0', []))\n\n\t\tnumber,items = conn\n\t\tself.num_inputs = int(number)\n\t\tconns = []\n\t\tself.active_conn = None\n\t\tfor i,sub in items:\n\t\t\tfor j in i.split():\n\t\t\t\tactive = j.endswith('*')\n\t\t\t\tj = j.rstrip('*')\n\t\t\t\tnid = int(j, 16)\n\t\t\t\tconns.append(nid)\n\t\t\t\tif active:\n\t\t\t\t\tself.active_conn = nid\n\t\tassert len(conns) == self.num_inputs\n\t\tself.inputs = conns\n\n\t\tif not self.active_conn and self.num_inputs == 1:\n\t\t\tself.active_conn = self.inputs[0]\n\n\t\t# parse amplifier info\n\t\tdef parse_amps(name, count):\n\t\t\tcapstr = fields['%s caps' % (name)][0]\n\n\t\t\tif capstr == 'N/A':\n\t\t\t\tcapstr = 'ofs=0x00, nsteps=0x00, stepsize=0x00, mute=0'\n\n\t\t\tcapl = capstr.split(', ')\n\n\t\t\tcaps = {}\n\t\t\tfor cap in capl:\n\t\t\t\tcname,cval = cap.split('=', 1)\n\t\t\t\tcaps[cname] = cval\n\n\t\t\tvalstr = fields['%s vals' % (name)][0]\n\t\t\tvals = re.findall(r'\\[([^]]*)\\]', valstr)\n\n\t\t\t# warn if Amp-In vals field is broken\n\t\t\tif count != len(vals):\n\t\t\t\tsys.stderr.write(\"Node 0x%02x: Amp-In vals count is wrong: values found: %d. expected: %d\\n\" % (self.nid, len(vals), count))\n\n\t\t\tamps = []\n\t\t\tfor i in range(count):\n\t\t\t\tamp = Amplifier(caps['ofs'], caps['nsteps'],\n\t\t\t                        caps['stepsize'], caps['mute'])\n\t\t\t\tif len(vals) > i: intvals = [int(v, 16) for v in vals[i].split(' ')]\n\t\t\t\t# just in case the \"vals\" field is\n\t\t\t\t# broken in our input file\n\t\t\t\telse: intvals = [0, 0]\n\t\t\t\tamp.set_values(intvals)\n\t\t\t\tamps.append(amp)\n\n\t\t\treturn amps\n\n\t\tinamps = self.num_inamps()\n\t\tif inamps > 0:\n\t\t\tself.inamps = parse_amps('Amp-In', inamps)\n\t\tif self.has_outamp():\n\t\t\tself.outamp, = parse_amps('Amp-Out', 1)\n\n\t\tself.outputs = []\n\n\tdef new_output(self, nid):\n\t\tself.outputs.append(nid)\n\n\tdef input_nodes(self):\n\t\tfor c in self.inputs:\n\t\t\tyield self.codec.get_node(c)\n\n\tdef is_divided(self):\n\t\tif self.type == 'Pin Complex':\n\t\t\treturn True\n\t\t\n\t\treturn False\n\n\tdef idstring(self):\n\t\treturn 'nid-%02x' % (self.nid)\n\n\tdef has_outamp(self):\n\t\treturn 'Amp-Out' in self.wcaps\n\n\tdef outamp_id(self):\n\t\treturn '\"%s-ampout\"' % (self.idstring())\n\n\tdef out_id(self):\n\t\tif self.is_divided():\n\t\t\treturn self.main_output_id()\n\n\t\tif self.has_outamp():\n\t\t\treturn self.outamp_id()\n\n\t\treturn self.outamp_next_id()\n\n\tdef has_inamp(self):\n\t\treturn 'Amp-In' in self.wcaps\n\n\tdef many_ampins(self):\n\t\ttypes = ['Audio Mixer']\n\t\treturn self.type in types\n\n\tdef num_inamps(self):\n\t\tif not self.has_inamp(): return 0\n\t\telif self.many_ampins(): return self.num_inputs\n\t\telse: return 1\n\n\tdef inamp_id(self, orignid):\n\t\tif self.many_ampins():\n\t\t\treturn '\"%s-ampin-%s\"' % (self.idstring(), orignid)\n\t\treturn '\"%s-ampin\"' % (self.idstring())\n\n\tdef in_id(self, orignid):\n\t\tif self.is_divided():\n\t\t\treturn self.main_input_id()\n\n\t\tif self.has_inamp():\n\t\t\treturn self.inamp_id(orignid)\n\n\t\treturn self.inamp_next_id()\n\n\tdef main_id(self):\n\t\tassert not self.is_divided()\n\t\treturn '\"%s\"' % (self.idstring())\n\n\tdef main_input_id(self):\n\t\tassert self.is_divided()\n\t\treturn '\"%s-in\"' % (self.idstring())\n\n\tdef main_output_id(self):\n\t\tassert self.is_divided()\n\t\treturn '\"%s-out\"' % (self.idstring())\n\n\tdef inamp_next_id(self):\n\t\t\"\"\"ID of the node where the In-Amp would be connected\"\"\"\n\t\tif self.is_divided():\n\t\t\treturn self.main_output_id()\n\n\t\treturn self.main_id()\n\n\tdef outamp_next_id(self):\n\t\t\"\"\"ID of the node where the Out-Amp would be connected\"\"\"\n\t\tif self.is_divided():\n\t\t\treturn self.main_input_id()\n\n\t\treturn self.main_id()\n\n\tdef wcaps_label(self):\n\t\tnot_shown = ['Amp-In', 'Amp-Out']\n\t\tshow = [cap for cap in self.wcaps if not cap in not_shown]\n\t\treturn ' '.join(show)\n\n\tdef label(self):\n\t\tr = '0x%02x' % (self.nid)\n\t\tprint '// %r' % (self.fields)\n\t\tpdef = self.fields.get('Pin Default')\n\t\tif pdef:\n\t\t\tpdef,subdirs = pdef\n\t\t\tr += '\\\\n%s' % (pdef)\n\n\t\tr += '\\\\n%s' % (self.wcaps_label())\n\n\t\tpincap = self.fields.get('Pincap')\n\t\tif pincap:\n\t\t\tpincap,subdirs = pincap\n\t\t\tr += '\\\\n%s' % (pincap)\n\n\t\tr = '\"%s\"' % (r)\n\t\treturn r\n\n\tdef show_input(self):\n\t\treturn ALL_NODES or len(self.inputs) > 0\n\n\tdef show_output(self):\n\t\treturn ALL_NODES or len(self.outputs) > 0\n\n\tdef additional_attrs(self):\n\t\tdefault_attrs = [ ('shape', 'box'), ('color', 'black') ]\n\t\tshape_dict = {\n\t\t\t'Audio Input':[ ('color', 'red'),\n\t\t\t                ('shape', 'ellipse') ],\n\t\t\t'Audio Output':[ ('color', 'blue'),\n\t\t\t                 ('shape', 'ellipse') ],\n\t\t\t'Pin Complex':[ ('color', 'green'),\n\t\t\t                ('shape', 'box') ],\n\t\t\t'Audio Selector':[ ('shape', 'parallelogram'),\n\t\t\t                   ('orientation', '0')  ],\n\t\t\t'Audio Mixer':[ ('shape', 'hexagon') ],\n\t\t\t'Unknown Node':[ ('color', 'red'),\n\t\t\t                 ('shape', 'Mdiamond') ],\n\t\t}\n\t\treturn shape_dict.get(self.type, default_attrs)\n\n\tdef new_node(self, f, id, attrs):\n\t\tf.write(' %s ' % (id))\n\t\tif attrs:\n\t\t\tattrstr = ', '.join('%s=%s' % (f,v) for f,v in attrs)\n\t\t\tf.write('[%s]' % (attrstr))\n\t\tf.write('\\n')\n\n\tdef dump_main_input(self, f):\n\t\tif self.show_input():\n\t\t\tself.new_node(f, self.main_input_id(), self.get_attrs())\n\n\tdef dump_main_output(self, f):\n\t\tif self.show_output():\n\t\t\tself.new_node(f, self.main_output_id(), self.get_attrs())\n\n\tdef get_attrs(self):\n\t\tattrs = [ ('label', self.label()) ]\n\t\tattrs.extend(self.additional_attrs())\n\t\treturn attrs\n\n\tdef dump_main(self, f):\n\t\tif not self.is_divided():\n\t\t\tif self.show_input() or self.show_output():\n\t\t\t\tself.new_node(f, self.main_id(), self.get_attrs())\n\t\telse:\n\t\t\tself.dump_main_input()\n\t\t\tself.dump_main_output()\n\n\tdef show_amp(self, f, id, type, frm, to, label='', color=None):\n\t\tif color is None: fill = ''\n\t\telse: fill=' color=\"%s\"' % (color)\n\n\t\tf.write('  %s [label = \"%s\", shape=triangle orientation=-90%s];\\n' % (id, label, fill))\n\t\tf.write('  %s -> %s [arrowsize=0.5, arrowtail=dot, weight=2.0%s];\\n' % (frm, to, fill))\n\n\tdef dump_out_amps(self, f):\n\t\tif self.show_output() and self.has_outamp():\n\t\t\tself.show_amp(f, self.outamp_id(), \"Out\", self.outamp_next_id(), self.outamp_id(), '', self.outamp.color())\n\n\tdef dump_in_amps(self, f):\n\t\tif self.show_input() and self.has_inamp():\n\n\t\t\tif self.many_ampins():\n\t\t\t\tamporigins = [(\"%d (0x%02x)\" % (n, self.inputs[n]), self.inputs[n]) for n in range(len(self.inputs))]\n\t\t\telse:\n\t\t\t\tamporigins = [ ('', None) ]\n\n\t\t\tfor i in range(len(amporigins)):\n\t\t\t\tlabel,origin = amporigins[i]\n\t\t\t\tampid = self.inamp_id(origin)\n\t\t\t\tself.show_amp(f, ampid, \"In\", ampid, self.inamp_next_id(), label, self.inamps[i].color())\n\n\tdef dump_amps(self, f):\n\t\tself.dump_out_amps(f)\n\t\tself.dump_in_amps(f)\n\n\tdef is_conn_active(self, c):\n\t\tif self.type == 'Audio Mixer':\n\t\t\treturn True\n\t\tif c == self.active_conn:\n\t\t\treturn True\n\t\treturn False\n\n\tdef dump_graph(self, f):\n\t\tcodec = self.codec\n\t\tname = \"cluster-%s\" % (self.idstring())\n\t\tif self.is_divided():\n\t\t\tf.write('subgraph \"%s-in\" {\\n' % (name))\n\t\t\tf.write('  pencolor=\"gray80\"\\n')\n\t\t\tself.dump_main_input(f)\n\t\t\tself.dump_out_amps(f)\n\t\t\tf.write('}\\n')\n\n\t\t\tf.write('subgraph \"%s-out\" {\\n' % (name))\n\t\t\tf.write('  pencolor=\"gray80\"\\n')\n\t\t\tself.dump_main_output(f)\n\t\t\tself.dump_in_amps(f)\n\t\t\tf.write('}\\n')\n\t\telse: \n\t\t\tf.write('subgraph \"%s\" {\\n' % (name))\n\t\t\tf.write('  pencolor=\"gray80\"\\n')\n\t\t\tself.dump_main(f)\n\t\t\tself.dump_amps(f)\n\t\t\tf.write('}\\n')\n\n\t\tfor origin in self.input_nodes():\n\t\t\tif self.is_conn_active(origin.nid):\n\t\t\t\tattrs=\"[color=gray20]\"\n\t\t\telse:\n\t\t\t\tattrs=\"[color=gray style=dashed]\"\n\t\t\tf.write('%s -> %s %s;\\n' % (origin.out_id(), self.in_id(origin.nid), attrs))\n\t\t\n\nre_indent = re.compile(\"^ *\")\n \nclass CodecInfo:\n\tdef __init__(self, f):\n\t\tself.fields = {}\n\t\tself.nodes = {}\n\t\tlines = f.readlines()\n\t\ttotal_lines = len(lines)\n\n\t\tfor item,subitems in parse_items(-1, lines):\n\t\t\tline = total_lines-len(lines)\n\t\t\ttry:\n\t\t\t\tif not ': ' in item and item.endswith(':'):\n\t\t\t\t\t# special case where there is no \": \"\n\t\t\t\t\t# but we want to treat it like a \"key: value\"\n\t\t\t\t\t# line\n\t\t\t\t\t# (e.g. \"Default PCM:\" line)\n\t\t\t\t\titem += ' '\n\n\t\t\t\tif item.startswith('Node '):\n\t\t\t\t\tn = Node(self, item, subitems)\n\t\t\t\t\tself.nodes[n.nid] = n\n\t\t\t\tif item.startswith('No Modem Function Group found'):\n\t\t\t\t\t# ignore those lines\n\t\t\t\t\tpass\n\t\t\t\telif ': ' in item:\n\t\t\t\t\tf,v = item.split(': ', 1)\n\t\t\t\t\tself.fields[f] = v\n\t\t\t\telif item.strip() == '':\n\t\t\t\t\tcontinue\n\t\t\t\telse:\n\t\t\t\t\tsys.stderr.write(\"Warning: line %d ignored: %s\\n\" % (line, item))\n\t\t\texcept:\n\t\t\t\tsys.stderr.write('Exception around line %d\\n' % (line))\n\t\t\t\tsys.stderr.write('item: %r\\n' % (item))\n\t\t\t\tsys.stderr.write('subitems: %r\\n' % (subitems))\n\t\t\t\traise\n\n\t\tself.create_out_lists()\n\n\tdef get_node(self, nid):\n\t\tn = self.nodes.get(nid)\n\t\tif not n:\n\t\t\t# create a fake node\n\t\t\tn = Node(self, 'Node 0x%02x [Unknown Node] wcaps 0x0000: ' % (nid), [])\n\t\t\tself.nodes[nid] = n\n\t\t\tn.label = lambda: ('\"Unknown Node 0x%02x\"' % (nid))\n\t\treturn n\n\n\tdef create_out_lists(self):\n\t\tfor n in self.nodes.values():\n\t\t\tfor i in n.input_nodes():\n\t\t\t\ti.new_output(n.nid)\n\n\tdef dump(self):\n\t\tprint \"Codec: %s\" % (self.fields['Codec'])\n\t\tprint \"Nodes: %d\" % (len(self.nodes))\n\t\tfor n in self.nodes.values():\n\t\t\tprint \"Node: 0x%02x\" % (n.nid),\n\t\t\tprint \" %d conns\" % (n.num_inputs)\n\n\tdef dump_graph(self, f):\n\t\tf.write('digraph {\\n')\n\t\tf.write(\"\"\"rankdir=LR\n\t\tranksep=3.0\n\t\t\"\"\")\n\t\tfor n in self.nodes.values():\n\t\t\tn.dump_graph(f)\n\t\tf.write('}\\n')\n\ndef main(argv):\n\tf = open(argv[1], 'r')\n\tci = CodecInfo(f)\n\tci.dump_graph(sys.stdout)\n\nif __name__ == '__main__':\n\tmain(sys.argv)\n"
  },
  {
    "path": "hda-tools/config_dump.sh",
    "content": "#!/bin/bash\n\nHDA_AUDIO_AFG=0x01\nHDA_PIN_COMPLEX=0x04\n\ncmdResult=0\nfunction sendCommand()\n{\n    result=`hda-verb -q \"$1\" \"$2\" \"$3\"`\n    let cmdResult=result\n}\n\nfunction findAudioRootNode()\n{\n    local result=-1\n    sendCommand 0 PARAMETERS NODE_COUNT\n    start=$(( ($cmdResult >> 16) & 0xFF ))\n    end=$(( $start + (($cmdResult >> 0) & 0xFF) ))\n    #echo $start...$end\n    n=$start\n    while [[ $n -lt $end ]]; do\n        #echo Testing node $n\n        sendCommand $n PARAMETERS FUNCTION_TYPE\n        let type=$(($cmdResult & 0x7F))\n        if [[ $type -eq $HDA_AUDIO_AFG ]]; then\n            let result=$n\n            break\n        fi\n        ((n++))\n    done\n    echo $result\n}\n\nfunction shifty()\n{\n    local result=$(( ($1 >> $2) & ((1 << ($3-$2+1))-1) ))\n    echo $result\n}\n\nrgPortConnectivity=(Connected NotConnected FixedFunction Both)\nrgDefaultDevice=(LineOut Speaker HPOut CD SPDIFOut DigitalOtherOut ModemLineSide ModemHandsetSide LineIn AUX MicIn Telephony SPDIFIn DigitalOtherIn Reserved Other)\nrgConnectionType=(Unknown .125 .250 ATAPIInternal RCA Optical OtherDigital OtherAnalog MultichannelAnalog XLRPro RJ11 Combination Undef_C Undef_D Undef_E Other)\nrgColor=(Unknown Black Grey Blue Green Red Orange Yellow Purple Pink Reserved_A Reserved_B Reserved_C Reserved_D White Other)\nrgMisc=(NoJackOverride JackOverride)\n\nfunction parseConfig()\n{\n    local val=$(shifty $1 30 31)\n    printf \"\\tPort Connectivity: %s (0x%x)\\n\" ${rgPortConnectivity[$val]} $val\n    val=$(shifty $1 29 24)\n    printf \"\\tLocation: (0x%x)\\n\" $val\n    val=$(shifty $1 20 23)\n    printf \"\\tDefault Device: %s (0x%x)\\n\" ${rgDefaultDevice[$val]} $val\n    val=$(shifty $1 16 19)\n    printf \"\\tConnection Type: %s (0x%x)\\n\" ${rgConnectionType[$val]} $val\n    val=$(shifty $1 12 15)\n    printf \"\\tColor: %s (0x%x)\\n\" ${rgColor[$val]} $val\n    val=$(shifty $1 8 11)\n    printf \"\\tMisc: %s (0x%x)\\n\" ${rgMisc[$(shifty $val 0 0)]} $val\n    val=$(shifty $1 4 7)\n    printf \"\\tDefault Association: (0x%x)\\n\" $val\n    val=$(shifty $1 0 3)\n    printf \"\\tSequence: (0x%x)\\n\" $val\n}\n\nif [[ \"$1\" != \"\" ]]; then\n    parseConfig \"$1\"\n    exit\nfi\n\nrootNode=`findAudioRootNode`\n#echo $rootNode\n\nsendCommand $rootNode PARAMETERS NODE_COUNT\n#printf \"result=0x%08x\\n\" $cmdResult\nstart=$(( ($cmdResult >> 16) & 0xFF ))\nend=$(( $start + (($cmdResult >> 0) & 0xFF) ))\n#echo $start...$end\nn=$start\nwhile [[ $n -lt $end ]]; do\n    sendCommand $n PARAMETERS AUDIO_WIDGET_CAP\n    let type=$((($cmdResult >> 20) & 0x0F))\n    if [[ $type -eq $HDA_PIN_COMPLEX ]]; then\n        sendCommand $n GET_CONFIG_DEFAULT 0\n        let config=$cmdResult\n        printf \"Node 0x%02x [Pin Complex] : Pin Config 0x%08x\\n\" $n $config\n        parseConfig $config\n    fi\n    ((n = $n+1))\ndone\n\n"
  },
  {
    "path": "hda-tools/convert.sh",
    "content": "#!/bin/bash\n\nif [ -t 0 ]; then\n    echo \"usage:\"\n    echo \"  echo -n bytes | ./convert.sh [config|other]\"\n    echo \"or:\"\n    echo \"  pbpaste | ./convert.sh [config|other]\"\n    exit\nfi\n\ndeclare -a g_configDefault\ndeclare -a g_configFill\nfunction add_to_array()\n# $1 is node\n# $2 is payload\n# $3 is shift value\n{\n    if [[ -z \"${g_configDefault[$1]}\" ]]; then\n        #echo initial set node: $1\n        g_configDefault[$1]=0\n        g_configFill[$1]=0\n    fi\n    local cur=g_configDefault[$1]\n    g_configDefault[$1]=$(( $cur | ($2<<$3) ))\n    local fill=${g_configFill[$1]}\n    g_configFill[$1]=$(( $fill | (0x1<<$3) ))\n}\n\ndeclare -a g_unknownVerbs\nfunction add_to_unknown()\n# $1 is verb data\n{\n    local count=${#g_unkownVerbs[@]}\n    g_unkownVerbs[$count]=$1\n}\n\nfunction shifty()\n{\n    local result=$(( ($1 >> $2) & ((1 << ($3-$2+1))-1) ))\n    echo $result\n}\n\ninput=$(cat -)\nlet index=0\nwhile [[ index -lt ${#input} ]]; do\n    ch=${input:$index:1}\n    if [[ $ch =~ [a-fA-F0-9] ]]; then\n        verb=$verb$ch\n    fi\n    if [[ ${#verb} -eq 8 ]]; then\n        let verb_n=0x$verb\n        verb=\"\"\n        cmd=$(shifty $verb_n 8 19)\n        payload=$(shifty $verb_n 0 7)\n        node=$(shifty $verb_n 20 26)\n        if [[ $cmd -eq 0x71c ]]; then\n            #printf \"byte0: 0x%x, 0x%02x\\n\" $node $payload\n            add_to_array $node $payload 0\n        elif [[ $cmd -eq 0x71d ]]; then\n            #printf \"byte1: 0x%x, 0x%02x\\n\" $node $payload\n            add_to_array $node $payload 8\n        elif [[ $cmd -eq 0x71e ]]; then\n            #printf \"byte2: 0x%x, 0x%02x\\n\" $node $payload\n            add_to_array $node $payload 16\n        elif [[ $cmd -eq 0x71f ]]; then\n            #printf \"byte3: 0x%x, 0x%02x\\n\" $node $payload\n            add_to_array $node $payload 24\n        else\n            add_to_unknown $verb_n\n        fi\n    fi\n    ((index++))\ndone\n\n#echo ${g_configDefault[*]}\n\nif [[ -z \"$1\" && ${#g_configDefault[@]} -ne 0 ]]; then\n    echo Config Data:\nfi\nif [[ -z \"$1\" || \"$1\" == \"config\" ]]; then\n    let i_temp=0\n    while [[ $i_temp -lt 256 ]]; do\n    if [[ ! -z \"${g_configDefault[$i_temp]}\" && ${g_configFill[$i_temp]} -eq 0x01010101 ]]; then\n            printf \"  0x%02x, 0x%08x,\\n\" $i_temp ${g_configDefault[$i_temp]}\n        fi\n        ((i_temp++))\n    done\nfi\n\nlet extra_unknown=0\nlet i_temp=0\nwhile [[ $i_temp -lt 256 ]]; do\n    if [[ ! -z \"${g_configFill[$i_temp]}\" ]]; then\n        if [[ ${g_configFill[$i_temp]} -ne 0x1111 ]]; then\n            ((extra_unknown++))\n        fi\n    fi\n    ((i_temp++))\ndone\n\n\ncount_temp=${#g_unkownVerbs[@]}\ntotal_temp=$(($count_temp+$extra_unknown))\nif [[ -z \"$1\" && $total_temp -ne 0 ]]; then\n    echo Unknown Verbs:\nfi\nif [[ -z \"$1\" || \"$1\" == \"other\" ]]; then\n    # output incomplete configDefaults\n    let i_temp=0\n    while [[ $i_temp -lt 256 ]]; do\n        if [[ ! -z \"${g_configFill[$i_temp]}\" && ${g_configFill[$i_temp]} -ne 0x01010101 ]]; then\n            x=${g_configDefault[$i_temp]}\n            fill=${g_configFill[$i_temp]}\n            if [[ $(($fill & 0x01)) -ne 0 ]]; then\n                new=\"$(printf \"%08x\" $(( ($i_temp<<20) | (0x71c<<8) | (($x>>0)&0xFF) )))\"\n                if [[ -z \"$unknown\" ]]; then unknown=$new; else unknown=\"$unknown $new\"; fi\n            fi\n            if [[ $(($fill & 0x0100))  -ne 0 ]]; then\n                new=\"$(printf \"%08x\" $(( ($i_temp<<20) | (0x71d<<8) | (($x>>8)&0xFF) )))\"\n                if [[ -z \"$unknown\" ]]; then unknown=$new; else unknown=\"$unknown $new\"; fi\n            fi\n            if [[ $(($fill & 0x010000)) -ne 0 ]]; then\n                new=\"$(printf \"%08x\" $(( ($i_temp<<20) | (0x71e<<8) | (($x>>16)&0xFF) )))\"\n                if [[ -z \"$unknown\" ]]; then unknown=$new; else unknown=\"$unknown $new\"; fi\n            fi\n            if [[ $(($fill & 0x01000000)) -ne 0 ]]; then\n                new=\"$(printf \"%08x\" $(( ($i_temp<<20) | (0x71f<<8) | (($x>>24)&0xFF) )))\"\n                if [[ -z \"$unknown\" ]]; then unknown=$new; else unknown=\"$unknown $new\"; fi\n            fi\n        fi\n        ((i_temp++))\n    done\n    # output other verbs (non-config default)\n    let i_temp=0\n    while [[ $i_temp -lt $count_temp ]]; do\n        new=\"$(printf \"%08x\" ${g_unkownVerbs[$i_temp]})\"\n        if [[ -z \"$unknown\" ]]; then unknown=$new; else unknown=\"$unknown $new\"; fi\n        ((i_temp++))\n    done\n    if [[ $total_temp -gt 0 ]]; then\n        printf \"%s\\n\" \"$unknown\" | xxd -r -p | xxd -i -c 4\n    fi\nfi\n\n\n"
  },
  {
    "path": "hda-tools/eapd_dump.sh",
    "content": "#!/bin/bash\n\n# Get right input amp\n# 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 \n#  0  0  0  0  0  0 0 0 0 0 0 0 0 0 0 0 = 0x0\n# Get left input amp\n#  0  0  1  0  0 0 0  0 0 0 0 0 0 0 0 0 = 0x2000\n# Get right output amp\n#  1  0  0  0  0  0 0 0 0 0 0 0 0 0 0 0 = 0x8000\n# Get left output amp\n#  1  0  1  0  0  0 0 0 0 0 0 0 0 0 0 0 = 0xa000\n\n# Set both input amps\n# 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 \n#  0  1  1  1  0  0 0 0 0 0 0 0 0 0 1 1 = 0x7003\n\nfunction dump\n{\n\techo -e \"\\t\\tnid = $1 --> result `hda-verb $1 $2 $3 | tail -c 11`\"\n}\n\nfunction dump_all\n{\n\tdump 0x02 $1 $2\n\tdump 0x03 $1 $2\n\tdump 0x04 $1 $2\n\tdump 0x05 $1 $2\n\tdump 0x06 $1 $2\n\tdump 0x07 $1 $2\n\tdump 0x08 $1 $2\n\tdump 0x09 $1 $2\n\tdump 0x0a $1 $2\n\tdump 0x0b $1 $2\n\tdump 0x0c $1 $2\n\tdump 0x0d $1 $2\n\tdump 0x0e $1 $2\n\tdump 0x0f $1 $2\n\tdump 0x10 $1 $2\n\tdump 0x11 $1 $2\n\tdump 0x12 $1 $2\n\tdump 0x13 $1 $2\n\tdump 0x14 $1 $2\n\tdump 0x15 $1 $2\n\tdump 0x16 $1 $2\n\tdump 0x17 $1 $2\n\tdump 0x18 $1 $2\n\tdump 0x19 $1 $2\n\tdump 0x1a $1 $2\n\tdump 0x1b $1 $2\n\tdump 0x1c $1 $2\n\tdump 0x1d $1 $2\n\tdump 0x1e $1 $2\n\tdump 0x1f $1 $2\n\tdump 0x20 $1 $2\n\tdump 0x21 $1 $2\n\tdump 0x22 $1 $2\n\tdump 0x23 $1 $2\n\tdump 0x24 $1 $2\n}\n\n#echo -e \"\\tConnection Selector\"\n#dump_all GET_CONNECT_SEL 0x0\n\n#echo -e \"\\tProcessing State\"\n#dump_all GET_PROC_STATE 0x0\n\n#echo -e \"\\tPower State\"\n#dump_all GET_POWER_STATE 0x0\n\n#echo -e \"\\tPin Widget Control\"\n#dump_all GET_PIN_WIDGET_CONTROL 0x0\n\n#echo -e \"\\tPin Sense\"\n#dump_all GET_PIN_SENSE 0x0\n\necho -e \"\\tEAPD\"\ndump_all GET_EAPD_BTLENABLE 0x0\n\n#echo -e \"\\tAmp Mute (Right Input)\"\n#dump_all GET_AMP_GAIN_MUTE 0x0\n\n#echo -e \"\\tAmp Mute (Left Input)\"\n#dump_all GET_AMP_GAIN_MUTE 0x2000\n\n#echo -e \"\\tAmp Mute (Right Output)\"\n#dump_all GET_AMP_GAIN_MUTE 0x8000\n\n#echo -e \"\\tAmp Mute (Left Output)\"\n#dump_all GET_AMP_GAIN_MUTE 0xa000\n\n#echo -e \"\\tVolume Knob Control\"\n#dump_all GET_VOLUME_KNOB_CONTROL 0x0\n\n#echo -e \"\\tConfiguration Default\"\n#dump_all GET_CONFIG_DEFAULT 0x0\n"
  },
  {
    "path": "hda-tools/extract_hda.sh",
    "content": "#!/bin/bash\n\n#set -x\n\n# check arguments\nif [[ \"$#\" -lt 3 ]]; then\n    echo Usage: $0 {AppleHDA-path} {name} {codec-id-1} [codec-id-2 codec-id-n ...]\n    echo\n    echo \"{AppleHDA-path} is path of patched AppleHDA.kext or AppleHDA injector\"\n    echo \"{name} is \\\"Resources\\\" folder suffix to be created for extracted files (Extract_name)\"\n    echo \"Following the fixed arguments, are one or more codec ids, usually specified in hex, such as 0x10ec0892\"\n    echo \"Specifiying zero (0) for a codec id, will result in it matching all that are present\"\n    echo\n    echo \"Examples:\"\n    echo \"  $0 ~/Downloads/realtekALC.kext ALC892 0x10ec0892\"\n    echo \"  $0 ~/Downloads/AppleHDA.kext ALC280 0x10ec0892\"\n    echo \"  $0 ~/Projects/probook.git/AppleHDA_ProBook.kext ProBook 0x10ec0282 0x10ec0280\"\n    echo \"  $0 ~/Projects/probook.git/AppleHDA_ProBook.kext ProBook 0\"\n    exit\nfi\n\n# g_codecFilter array\ndeclare -a g_codecFilter\nfunction add_codec()\n# $1 is codec_id\n{\n    local count=${#g_codecFilter[@]}\n    g_codecFilter[$count]=$(($1))\n}\n\nfunction check_codec()\n# $1 is codec_id to check\n# echo true/false\n{\n    local count=${#g_codecFilter[@]}\n    local i\n    for((i=0; i<$count; i++)); do\n    if [[ \"$1\" -eq ${g_codecFilter[$i]} || ${g_codecFilter[$i]} -eq 0 ]]; then\n        break\n    fi\n    done\n    if [[ $i -eq $count ]]; then\n        echo false\n    else\n        echo true\n    fi\n}\n\n# g_layoutList\ndeclare -a g_layoutList\nfunction add_layout()\n# $1 is layout-id to add\n{\n    local count=${#g_layoutList[@]}\n    local i\n    for((i=0; i<$count; i++)); do\n        if [[ \"$1\" -eq ${g_layoutList[$i]} ]]; then\n            break\n        fi\n    done\n    if [[ $i == $count ]]; then\n        g_layoutList[$count]=$(($1))\n    fi\n}\n\n# g_layoutList\ndeclare -a g_pathmapList\nfunction add_pathmap()\n# $1 is pathmap-id to add\n{\n    local count=${#g_pathmapList[@]}\n    local i\n    for((i=0; i<$count; i++)); do\n        if [[ \"$1\" -eq ${g_pathmapList[$i]} ]]; then\n            break\n        fi\n    done\n    if [[ $i == $count ]]; then\n        g_pathmapList[$count]=$(($1))\n    fi\n}\n\nfunction check_pathmap()\n# $1 is pathmap_id to check\n# echo true/false\n{\n    local count=${#g_pathmapList[@]}\n    local i\n    for((i=0; i<$count; i++)); do\n    if [[ \"$1\" -eq ${g_pathmapList[$i]} ]]; then\n        break\n    fi\n    done\n    if [[ $i -eq $count ]]; then\n        echo false\n    else\n        echo true\n    fi\n}\n\nfunction merge_entry()\n# $1 is keypath to read\n# $2 is source plist\n# $3 is keypath to write\n# #4 is dest plist\n{\n    /usr/libexec/PlistBuddy -x -c \"Print \\\"$1\\\"\" \"$2\" >/tmp/org_rehabman_temp.plist\n    /usr/libexec/PlistBuddy -x -c \"Add \\\"$3\\\" dict\" \"$4\"\n    /usr/libexec/PlistBuddy -c \"Merge /tmp/org_rehabman_temp.plist \\\"$3\\\"\" \"$4\"\n}\n\nhda=\"$1\"\nextract=Extract_\"$2\"\n\n# build list of codecs to filter\nfor ((i=3; i<=$#; i++)); do\n    add_codec \"${!i}\"\ndone\n\n#echo [dbg] g_codecFilter: ${g_codecFilter[*]}\n\n# determine plist to scan\nplist=\"$hda\"/Contents/PlugIns/AppleHDAHardwareConfigDriver.kext/Contents/Info.plist\nif [[ ! -e \"$plist\" ]]; then\n    plist=\"$hda\"/Contents/Info.plist\nfi\nif [[ ! -e \"$plist\" ]]; then\n    plist=./Info.plist\nfi\n\n#echo [dbg] plist: \"$plist\"\n\nif [[ ! -e \"$plist\" ]]; then\n    if [[ ! -e \"./hdaconfig.txt\" ]]; then\n        echo \"Info.plist at $plist does not exist (and no hdaconfig.txt)\"\n        exit\n    fi\nfi\n\nif [[ ! -d \"$extract\" ]]; then\n    rm -rf \"$extract\"\n    mkdir \"$extract\"\nfi\nrm -f \"$extract\"/Platforms.plist\nrm -f \"$extract\"/layout*.plist\n\ncat >\"$extract\"/ahhcd.plist <<ahhcd_starter_plist\n<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n    <key>HDAConfigDefault</key>\n    <array/>\n</dict>\n</plist>\nahhcd_starter_plist\n\nahhcd_count=0\nif [[ -e \"$plist\" ]]; then\n    # use PlistBuddy to look at the Info.plist\n    for ((i=0; 1; i++)); do\n        prefix=\":IOKitPersonalities:HDA Hardware Config Resource:HDAConfigDefault:$i\"\n        codec=`/usr/libexec/PlistBuddy -c \"Print \\\"$prefix:CodecID\\\"\" $plist 2>&1`\n        if [[ \"$codec\" == *\"Does Not Exist\"* ]]; then\n            break\n        fi\n        if [[ `check_codec $codec` == 'true' ]]; then\n            merge_entry \"$prefix\" $plist \"HDAConfigDefault:$ahhcd_count\" \"$extract\"/ahhcd.plist\n            ((ahhcd_count++))\n            layout=`/usr/libexec/PlistBuddy -c \"Print \\\"$prefix:LayoutID\\\"\" $plist 2>&1`\n            if [[ \"$layout\" != *\"Does Not Exist\"* ]]; then\n                add_layout \"$layout\"\n            fi\n        fi\n        #printf \"[dbg] found codec: 0x%x\\n\" $codec\n    done\nfi\n\n# also look at the root (AppleHDAPatcher style hdaconfig.txt as Info.plist)\nplist=hdaconfig.txt\nprefix=\"\"\ncodec=`/usr/libexec/PlistBuddy -c \"Print \\\"$prefix:CodecID\\\"\" $plist 2>&1`\nif [[ \"$codec\" != *\"Does Not Exist\"* ]]; then\n    if [[ `check_codec $codec` == 'true' ]]; then\n        merge_entry \"$prefix\" $plist \"HDAConfigDefault:$ahhcd_count\" \"$extract\"/ahhcd.plist\n        ((ahhcd_count++))\n        layout=`/usr/libexec/PlistBuddy -c \"Print \\\"$prefix:LayoutID\\\"\" $plist 2>&1`\n    fi\n    if [[ \"$layout\" != *\"Does Not Exist\"* ]]; then\n        add_layout \"$layout\"\n    fi\nfi\n#printf \"[dbg] found codec: 0x%x\\n\" $codec\n\n\n# look at PostConstructionInitialization for additional layout-ids (and perhaps other data)\npci_count=0\nfor ((i=0; 1; i++)); do\n    prefix=\":IOKitPersonalities:HDA Hardware Config Resource:PostConstructionInitialization:$i\"\n    codec=`/usr/libexec/PlistBuddy -c \"Print \\\"$prefix:CodecID\\\"\" $plist 2>&1`\n    if [[ \"$codec\" == *\"Does Not Exist\"* ]]; then\n        break\n    fi\n    if [[ `check_codec $codec` == 'true' ]]; then\n        merge_entry \"$prefix\" $plist \"PostConstructionInitialization:$pci_count\" \"$extract\"/ahhcd.plist\n        ((pci_count++))\n        for((j=0; 1; j++)); do\n            layout=`/usr/libexec/PlistBuddy -c \"Print \\\"$prefix:Layouts:$j\\\"\" $plist 2>&1`\n            if [[ \"$layout\" == *\"Does Not Exist\"* ]]; then\n                break\n            fi\n            add_layout \"$layout\"\n        done\n    fi\ndone\n\necho [dbg] g_layoutList: ${g_layoutList[*]}\n\nfor ((i=0; i<${#g_layoutList[@]}; i++)); do\n    # copy available layout file\n    layout=${g_layoutList[$i]}\n    echo layout$layout.zml.zlib\n    if [[ -e layout$layout.zml.zlib ]]; then\n        zlib inflate layout$layout.zml.zlib >\"$extract\"/layout$layout.plist\n    elif [[ -e layout$layout.xml.zlib ]]; then\n        zlib inflate layout$layout.xml.zlib >\"$extract\"/layout$layout.plist\n    elif [[ -e $1/Contents/Resources/layout$layout.xml.zlib ]]; then\n        zlib inflate $1/Contents/Resources/layout$layout.xml.zlib >\"$extract\"/layout$layout.plist\n    elif [[ -e $1/Contents/Resources/layout$layout.xml ]]; then\n        cp $1/Contents/Resources/layout$layout.xml \"$extract\"/layout$layout.plist\n    fi\ndone\n\nif [ 0 -eq 1 ]; then\n    if [[ ! -e \"$extract\"/layout.bak ]]; then mkdir \"$extract\"/layout.bak; fi\n    rm -f \"$extract\"/layout.bak/*\n    cp \"$extract\"/layout*.plist \"$extract\"/layout.bak\nfi\n\n# clean each layout*.plist for codec filter\nfor layout in \"$extract\"/layout*.plist; do\n    for ((i=0; 1; i++)); do\n        prefix=\":PathMapRef:$i\"\n        pathmap=`/usr/libexec/PlistBuddy -c \"Print \\\"$prefix:PathMapID\\\"\" $layout 2>&1`\n        if [[ \"$pathmap\" == *\"Does Not Exist\"* ]]; then\n            break\n        fi\n        for ((j=0; 1; j++)); do\n            prefix=\":PathMapRef:$i:CodecID:$j\"\n            codec=`/usr/libexec/PlistBuddy -c \"Print \\\"$prefix\\\"\" $layout 2>&1`\n            if [[ \"$codec\" == *\"Does Not Exist\"* ]]; then\n                break\n            fi\n            if [[ `check_codec $codec` != \"true\" ]]; then\n                #echo [dbg] $layout: deleting \\\"$prefix\\\" for codec $codec\n                /usr/libexec/PlistBuddy -c \"Delete \\\"$prefix\\\"\" $layout\n                ((j--))\n            fi\n        done\n    done\ndone\n\n# now, delete any PathMapRef with an empty codec list\nfor layout in \"$extract\"/layout*.plist; do\n    for ((i=0; 1; i++)); do\n        prefix=\":PathMapRef:$i\"\n        pathmap=`/usr/libexec/PlistBuddy -c \"Print \\\"$prefix:PathMapID\\\"\" $layout 2>&1`\n        if [[ \"$pathmap\" == *\"Does Not Exist\"* ]]; then\n            break\n        fi\n        test=`/usr/libexec/PlistBuddy -c \"Print \\\"$prefix:CodecID:0\\\"\" $layout 2>&1`\n        if [[ \"$test\" == *\"Does Not Exist\"* ]]; then\n            #echo [dbg] $layout: deleting \\\"$prefix\\\" \\($pathmap\\)\n            /usr/libexec/PlistBuddy -c \"Delete \\\"$prefix\\\"\" $layout\n            ((i--))\n        else\n            add_pathmap \"$pathmap\"\n        fi\n    done\ndone\n\n#echo [dbg] g_pathmapList: ${g_pathmapList[*]}\n\n# copy available Platforms\nif [[ -e Platforms.zml.zlib ]]; then\n    zlib inflate Platforms.zml.zlib >\"$extract\"/Platforms.plist\nelif [[ -e Platforms.xml.zlib ]]; then\n    zlib inflate Platforms.xml.zlib >\"$extract\"/Platforms.plist\nelif [[ -e $1/Contents/Resources/Platforms.xml.zlib ]]; then\n    zlib inflate $1/Contents/Resources/Platforms.xml.zlib >\"$extract\"/Platforms.plist\nelif [[ -e $1/Contents/Resources/Platforms.xml ]]; then\n    cp $1/Contents/Resources/Platforms.xml \"$extract\"/Platforms.plist\nfi\n\n/usr/libexec/PlistBuddy -c \"Delete :CommonPeripheralDSP\" \"$extract\"/Platforms.plist\n\n# in Platforms.plist, remove any pathmap not in g_pathmapList\nplist=\"$extract\"/Platforms.plist\nfor ((i=0; 1; i++)); do\n    pathmap=`/usr/libexec/PlistBuddy -c \"Print :PathMaps:$i:PathMapID\" $plist 2>&1`\n    if [[ \"$pathmap\" == *\"Does Not Exist\"* ]]; then\n        break\n    fi\n    if [[ `check_pathmap $pathmap` != \"true\" ]]; then\n        #echo [dbg] Platforms.plist: deleting \\\":PathMaps:$i\\\" \\($pathmap\\)\n        /usr/libexec/PlistBuddy -c \"Delete :PathMaps:$i\" $plist\n        ((i--))\n    fi\ndone\n\necho \"Extracted files in $extract:\"\nls -l \"$extract\"\n"
  },
  {
    "path": "hda-tools/gen_ahhcd.sh",
    "content": "#!/bin/bash\n\n#set -x\n\nif [[ \"$1\" == \"\" ]]; then\n    echo \"Usage: $0 {codec}\"\n    echo\n    echo \"{codec} is a \\\"Resources\\\" directory suffix that contains ahhcd.plist, layout*.plist, Platforms.plist\"\n    echo\n    echo \"Examples:\"\n    echo \"  $0 ALC892\"\n    echo \"  $0 ProBook\"\n    exit\nfi\n\nout=\"SSDT-$1_out.dsl\"\nplist=\"Resources_$1/ahhcd.plist\"\nconvert_sh=`dirname \"$0\"`/convert.sh\n\nif [[ ! -e \"$plist\" ]]; then\n    echo Error: file \\\"$plist\\\" does not exist, aborting...\n    exit\nfi\n\n# g_layoutList\ndeclare -a g_codecList\nfunction add_codec()\n# $1 is codec-id to add\n{\n    local count=${#g_codecList[@]}\n    local i\n    for((i=0; i<$count; i++)); do\n        if [[ \"$1\" -eq ${g_codecList[$i]} ]]; then\n            break\n        fi\n    done\n    if [[ $i == $count ]]; then\n        g_codecList[$count]=$(($1))\n    fi\n}\n\nfunction generate_pinconfig()\n{\n    local count=0\n    for ((j=0; 1; j++)); do\n        prefix=\":HDAConfigDefault:$j\"\n        codec_test=`/usr/libexec/PlistBuddy -c \"Print \\\"$prefix:CodecID\\\"\" \"$plist\" 2>&1`\n        if [[ \"$codec_test\" == *\"Does Not Exist\"* ]]; then\n            break\n        fi\n        if [[ $codec_test -eq $codec ]]; then\n            layout=`/usr/libexec/PlistBuddy -c \"Print \\\"$prefix:LayoutID\\\"\" $plist 2>&1`\n            if [[ \"$layout\" == *\"Does Not Exist\"* ]]; then\n                echo Error: LayoutID not present at index $j for codec $codec\n                continue\n            fi\n            verbs=`/usr/libexec/PlistBuddy -x -c \"Print \\\"$prefix:ConfigData\\\"\" \"$plist\" 2>&1`\n            verbs=$([[ \"$verbs\" =~ \\<data\\>(.*)\\<\\/data\\> ]] && echo ${BASH_REMATCH[1]})\n            verbs=`echo $verbs | base64 --decode | xxd -p | tr '\\n' ' '`\n            verbs=`echo -n \"$verbs\" | \"$convert_sh\" config`\n            if [[ \"$verbs\" != \"\" ]]; then\n                ((count++))\n            fi\n        fi\n    done\n\n    if [[ $count -ne 0 ]]; then\n        printf \"                \\\"PinConfigDefault\\\", Package()\\n\" >>$out\n        printf \"                {\\n\" >>$out\n        printf \"                    Package(){},\\n\" >>$out\n        for ((j=0; 1; j++)); do\n            prefix=\":HDAConfigDefault:$j\"\n            codec_test=`/usr/libexec/PlistBuddy -c \"Print \\\"$prefix:CodecID\\\"\" \"$plist\" 2>&1`\n            if [[ \"$codec_test\" == *\"Does Not Exist\"* ]]; then\n                break\n            fi\n            if [[ $codec_test -eq $codec ]]; then\n                layout=`/usr/libexec/PlistBuddy -c \"Print \\\"$prefix:LayoutID\\\"\" \"$plist\" 2>&1`\n                if [[ \"$layout\" == *\"Does Not Exist\"* ]]; then\n                    echo Error: LayoutID not present at index $j for codec $codec\n                    continue\n                fi\n                verbs=`/usr/libexec/PlistBuddy -x -c \"Print \\\"$prefix:ConfigData\\\"\" \"$plist\" 2>&1`\n                verbs=$([[ \"$verbs\" =~ \\<data\\>(.*)\\<\\/data\\> ]] && echo ${BASH_REMATCH[1]})\n                verbs=`echo $verbs | base64 --decode | xxd -p | tr '\\n' ' '`\n                verbs_t=`echo -n \"$verbs\" | \"$convert_sh\" config`\n                if [[ \"$verbs_t\" != \"\" ]]; then\n                    printf \"                    Package()\\n\" >>$out\n                    printf \"                    {\\n\" >>$out\n                    printf \"                        \\\"LayoutID\\\", %d,\\n\" $layout >>$out\n                    printf \"                        \\\"PinConfigs\\\", Package()\\n\" >>$out\n                    printf \"                        {\\n\" >>$out\n                    printf \"                            Package(){},\\n\" >>$out\n                    echo -n \"$verbs\" | \"$convert_sh\" config | sed 's/^/                          /' >>$out\n                    printf \"                        },\\n\" >>$out\n                    printf \"                    },\\n\" >>$out\n                fi\n            fi\n        done\n        printf \"                },\\n\" >>$out\n    fi\n}\n\nfunction generate_commands()\n{\n# \"Custom Commands\"\n    local count=0\n    for ((j=0; 1; j++)); do\n        prefix=\":HDAConfigDefault:$j\"\n        codec_test=`/usr/libexec/PlistBuddy -c \"Print \\\"$prefix:CodecID\\\"\" \"$plist\" 2>&1`\n        if [[ \"$codec_test\" == *\"Does Not Exist\"* ]]; then\n            break\n        fi\n        if [[ $codec_test -eq $codec ]]; then\n            layout=`/usr/libexec/PlistBuddy -c \"Print \\\"$prefix:LayoutID\\\"\" $plist 2>&1`\n            if [[ \"$layout\" == *\"Does Not Exist\"* ]]; then\n                echo Error: LayoutID not present at index $j for codec $codec\n                continue\n            fi\n            verbs=`/usr/libexec/PlistBuddy -x -c \"Print \\\"$prefix:ConfigData\\\"\" \"$plist\" 2>&1`\n            verbs=$([[ \"$verbs\" =~ \\<data\\>(.*)\\<\\/data\\> ]] && echo ${BASH_REMATCH[1]})\n            verbs=`echo $verbs | base64 --decode | xxd -p | tr '\\n' ' '`\n            verbs_t=`echo -n \"$verbs\" | \"$convert_sh\" other`\n            if [[ \"$verbs_t\" != \"\" ]]; then\n                ((count++))\n            fi\n        fi\n    done\n\n    if [[ $count -ne 0 ]]; then\n        printf \"                \\\"Custom Commands\\\", Package()\\n\" >>$out\n        printf \"                {\\n\" >>$out\n        printf \"                    Package(){},\\n\" >>$out\n        for ((j=0; 1; j++)); do\n            prefix=\":HDAConfigDefault:$j\"\n            codec_test=`/usr/libexec/PlistBuddy -c \"Print \\\"$prefix:CodecID\\\"\" \"$plist\" 2>&1`\n            if [[ \"$codec_test\" == *\"Does Not Exist\"* ]]; then\n                break\n            fi\n            if [[ $codec_test -eq $codec ]]; then\n                layout=`/usr/libexec/PlistBuddy -c \"Print \\\"$prefix:LayoutID\\\"\" $plist 2>&1`\n                if [[ \"$layout\" == *\"Does Not Exist\"* ]]; then\n                    echo Error: LayoutID not present at index $j for codec $codec\n                    continue\n                fi\n                verbs=`/usr/libexec/PlistBuddy -x -c \"Print \\\"$prefix:ConfigData\\\"\" \"$plist\" 2>&1`\n                verbs=$([[ \"$verbs\" =~ \\<data\\>(.*)\\<\\/data\\> ]] && echo ${BASH_REMATCH[1]})\n                verbs=`echo $verbs | base64 --decode | xxd -p | tr '\\n' ' '`\n                verbs_t=`echo -n \"$verbs\" | \"$convert_sh\" other`\n                if [[ \"$verbs_t\" != \"\" ]]; then\n                    printf \"                    Package()\\n\" >>$out\n                    printf \"                    {\\n\" >>$out\n                    printf \"                        \\\"LayoutID\\\", %d,\\n\" $layout >>$out\n                    printf \"                        \\\"Command\\\", Buffer()\\n\" >>$out\n                    printf \"                        {\\n\" >>$out\n                    echo -n \"$verbs\" | \"$convert_sh\" other | sed 's/^/                          /' >>$out\n                    printf \"                        },\\n\" >>$out\n                    printf \"                    },\\n\" >>$out\n                fi\n            fi\n        done\n        printf \"                },\\n\" >>$out\n    fi\n}\n\n# find all codecs in ahhcd.plist\nfor ((i=0; 1; i++)); do\n    prefix=\":HDAConfigDefault:$i\"\n    codec=`/usr/libexec/PlistBuddy -c \"Print \\\"$prefix:CodecID\\\"\" \"$plist\" 2>&1`\n    if [[ \"$codec\" == *\"Does Not Exist\"* ]]; then\n        break\n    fi\n    add_codec \"$codec\"\ndone\n\n#echo [dbg] codecs: ${g_codecList[*]}\n\necho Generating \"$out\"...\n\n# generate SSDT header\ncat >$out <<ssdt_starter_dsl\n// generated from: $0 $1\nDefinitionBlock (\"\", \"SSDT\", 2, \"hack\", \"$1\", 0)\n{\n    External(_SB.PCI0.HDEF, DeviceObj)\n    Name(_SB.PCI0.HDEF.RMCF, Package()\n    {\n        \"CodecCommander\", Package()\n        {\n            \"Disable\", \">y\",\n        },\n        \"CodecCommanderPowerHook\", Package()\n        {\n            \"Disable\", \">y\",\n        },\n        \"CodecCommanderProbeInit\", Package()\n        {\n            \"Version\", 0x020600,\nssdt_starter_dsl\n\n# for each codec/layout in ahhcd.plist, generate pinconfigs/verbs\ncount=${#g_codecList[@]}\nfor((i=0; i<$count; i++)); do\n    codec=${g_codecList[$i]}\n    printf \"generating: \\\"%04x_%04x\\\"\\n\" $(($codec>>16)) $(($codec&0xFFFF))\n    printf \"            \\\"%04x_%04x\\\", Package()\\n\" $(($codec>>16)) $(($codec&0xFFFF)) >>$out\n    printf \"            {\\n\" >>$out\n    generate_pinconfig\n    generate_commands\n    printf \"            },\\n\" >>$out\ndone\n\n# generate SSDT footer\nprintf \"        },\\n\" >>$out\nprintf \"    })\\n\" >>$out\nprintf \"}\\n\" >>$out\nprintf \"//EOF\\n\" >>$out\n\n#EOF"
  },
  {
    "path": "hda-tools/node_dump.sh",
    "content": "#!/bin/bash\n\n# Get right input amp\n# 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 \n#  0  0  0  0  0  0 0 0 0 0 0 0 0 0 0 0 = 0x0\n# Get left input amp\n#  0  0  1  0  0 0 0  0 0 0 0 0 0 0 0 0 = 0x2000\n# Get right output amp\n#  1  0  0  0  0  0 0 0 0 0 0 0 0 0 0 0 = 0x8000\n# Get left output amp\n#  1  0  1  0  0  0 0 0 0 0 0 0 0 0 0 0 = 0xa000\n\n# Set both input amps\n# 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 \n#  0  1  1  1  0  0 0 0 0 0 0 0 0 0 1 1 = 0x7003\n\nfunction dump\n{\n\techo -e \"\\t\\tnid = $1 --> result `hda-verb $1 $2 $3 | tail -c 11`\"\n}\n\nfunction dump_all\n{\n\tdump 0x02 $1 $2\n\tdump 0x03 $1 $2\n\tdump 0x04 $1 $2\n\tdump 0x05 $1 $2\n\tdump 0x06 $1 $2\n\tdump 0x07 $1 $2\n\tdump 0x08 $1 $2\n\tdump 0x09 $1 $2\n\tdump 0x0a $1 $2\n\tdump 0x0b $1 $2\n\tdump 0x0c $1 $2\n\tdump 0x0d $1 $2\n\tdump 0x0e $1 $2\n\tdump 0x0f $1 $2\n\tdump 0x10 $1 $2\n\tdump 0x11 $1 $2\n\tdump 0x12 $1 $2\n\tdump 0x13 $1 $2\n\tdump 0x14 $1 $2\n\tdump 0x15 $1 $2\n\tdump 0x16 $1 $2\n\tdump 0x17 $1 $2\n\tdump 0x18 $1 $2\n\tdump 0x19 $1 $2\n\tdump 0x1a $1 $2\n\tdump 0x1b $1 $2\n\tdump 0x1c $1 $2\n\tdump 0x1d $1 $2\n\tdump 0x1e $1 $2\n\tdump 0x1f $1 $2\n\tdump 0x20 $1 $2\n\tdump 0x21 $1 $2\n\tdump 0x22 $1 $2\n\tdump 0x23 $1 $2\n\tdump 0x24 $1 $2\n}\n\necho -e \"\\tConnection Selector\"\ndump_all GET_CONNECT_SEL 0x0\n\necho -e \"\\tProcessing State\"\ndump_all GET_PROC_STATE 0x0\n\necho -e \"\\tPower State\"\ndump_all GET_POWER_STATE 0x0\n\necho -e \"\\tPin Widget Control\"\ndump_all GET_PIN_WIDGET_CONTROL 0x0\n\necho -e \"\\tPin Sense\"\ndump_all GET_PIN_SENSE 0x0\n\necho -e \"\\tEAPD\"\ndump_all GET_EAPD_BTLENABLE 0x0\n\necho -e \"\\tAmp Mute (Right Input)\"\ndump_all GET_AMP_GAIN_MUTE 0x0\n\necho -e \"\\tAmp Mute (Left Input)\"\ndump_all GET_AMP_GAIN_MUTE 0x2000\n\necho -e \"\\tAmp Mute (Right Output)\"\ndump_all GET_AMP_GAIN_MUTE 0x8000\n\necho -e \"\\tAmp Mute (Left Output)\"\ndump_all GET_AMP_GAIN_MUTE 0xa000\n\necho -e \"\\tVolume Knob Control\"\ndump_all GET_VOLUME_KNOB_CONTROL 0x0\n\necho -e \"\\tConfiguration Default\"\ndump_all GET_CONFIG_DEFAULT 0x0\n"
  },
  {
    "path": "hda-tools/print_version.sh",
    "content": "#set -x\n\n# extract minor version (eg. 10.9 vs. 10.10 vs. 10.11)\nMINOR_VER=$([[ \"$(sw_vers -productVersion)\" =~ [0-9]+\\.([0-9]+) ]] && echo ${BASH_REMATCH[1]})\nif [[ $MINOR_VER -ge 11 ]]; then\n    echo 10.11+\nelse\n    echo 10.10-\nfi\n"
  },
  {
    "path": "hda-tools/verbit.sh",
    "content": "#!/bin/bash\n\n# verbit - Utility to parse a Linux Alsa Codec Dump and display the verbs used.\n#          Some basic verb modifications needed for AppleHDA are displayed as well.\n#\n#          version 1.0 - This version assists with simple verb decoding and it is\n#                        up to the user to choose which nodes and any final modifications\n#                        to make.\n#\n# Many Thanks to THe KiNG  \n# Signal64                        \n\nblacklist[0]=\"411111f0\"\nblacklist[1]=\"400000f0\"\nblacklist[2]=\"CD at Int ATAPI\"\n\ncodecfile=$1\ndebug=$(dirname $1)/verbitdebug.txt\n\ntypeset -i i=0\ntypeset -i j=0\ntypeset -i verbcount=0\ntypeset -i nextassoc=0\n\nbrk=\"--------------------------------------------------------------------------------------------------------\"\n\nif [[ ! -f $codecfile ]];then\n   echo \"ERROR: Could not find codec dump file: $codecfile\"\n   exit\nfi\n\n# Simple check to see if this is a ALSA codec dump file\nchk=`head -4 $codecfile | sed '/AFG Function Id/d' | cut -f1 -d\":\" | tr \"\\n\" \" \" | tr -d \" \"`\n\nif [[ $chk != \"CodecAddressVendorId\" ]];then\n   echo \"ERROR: This doesn't appear to be an alsa codec dump file\"\n   head -4 $codecfile\n   exit\nfi\n\n####################################################################\n# Start - Parse and display original codec info from file\n\n> $debug\necho -e \"\\nVerbs from Linux Codec Dump File: $codecfile\"\n\ncodecname=`head $codecfile | grep Codec: | cut -f2 -d\":\" | cut -f2- -d\" \"`\ncodecaddr=`head $codecfile | grep Address: | cut -f2 -d\":\"`\ncodechex=`head $codecfile | grep \"Vendor Id:\" | cut -f2 -d\":\"`\ncodecdec=`printf \"%d\" $codechex`\n\nprintf \"\\nCodec: %s   Address: %s   DevID: %s (%s)\\n\" \"$codecname\" $codecaddr $codecdec $codechex\n\necho -e \"\\n   Jack   Color  Description                  Node     PinDefault             Original Verbs\\n$brk\"\n \n#addr=`grep Address $codecfile | cut -f2 -d\" \"`\n\ntypeset -i nidnum=0\n\nwhile read line;do\n \n   chknode=`echo $line | grep \"Node 0x\" | cut -f2 -d\" \"`\n   if [[ -n $chknode ]];then\n      hexnode=$chknode\n      vnode=`echo $hexnode | cut -f2 -d\"x\"` \n   fi\n\n   pin=`echo $line | grep \"Pin Default\" | cut -f2 -d\"x\" | cut -f1 -d\":\"`\n\n   if [[ -n $pin ]];then\n       \n      desc=`echo $line | cut -f2 -d\"]\"`\n      jack=`grep -A8 \"Node $hexnode\" $codecfile | grep -A2 \"$pin\" | grep Color | cut -f2 -d\"=\" | cut -f1 -d\",\"`\n      color=`grep -A8 \"Node $hexnode\" $codecfile | grep -A2 \"$pin\" | grep Color | cut -f3 -d\"=\"`\n      \n      # 71c Default Association/Sequence\n      verb1=$codecaddr$vnode\"71c\"`echo $pin | cut -c7,8`\n\n      # 71d Color/Misc \n      verb2=$codecaddr$vnode\"71d\"`echo $pin | cut -c5,6`\n       \n      # 71e Default Device/Connection Type\n      verb3=$codecaddr$vnode\"71e\"`echo $pin | cut -c3,4`\n\n      # 71f Port Connectivity/Location\n      verb4=$codecaddr$vnode\"71f\"`echo $pin | cut -c1,2`\n\n      printf \"%7s %7s %-27s %3d %-6s %-12s %s %s %s %s\\n\" $jack $color \"$desc\" $hexnode $hexnode \"0x\"$pin $verb1 $verb2 $verb3 $verb4\n\n      chkblklist=\"$jack $color $desc $hexnode 0x$pin\"\n\n      blklisted=0;i=0\n      while [ $i -lt ${#blacklist[@]} ];do\n         chk=`echo $chkblklist | grep \"${blacklist[i]}\"`\n         if [[ $chk ]];then\n            blklisted=1\n         fi\n         i=i+1\n      done\n         \n      if [[ $blklisted = 0 ]];then\n         vdesc[verbcount]=\"$desc\"\n         vjack[verbcount]=$jack\n         vcolor[verbcount]=$color\n         vhex[verbcount]=$hexnode\n         vpin[verbcount]=$pin\n         verbc[verbcount]=$verb1 \n         verbd[verbcount]=$verb2 \n         verbe[verbcount]=$verb3 \n         verbf[verbcount]=$verb4\n         verbcount=verbcount+1\n      else\n         blnodes=$blnodes$hexnode\" \"\n      fi\n\n   fi\n\ndone < $codecfile\n\necho -e \"$brk\\n\"\n\n# Show nodes that were blacklisted and removed\necho \"Blacklist:\" >> $debug\necho ${blacklist[*]} >> $debug\necho \"Removed Nodes: $blnodes\" >> $debug\n\n# Correct Verbs\n\n# Rules:\n# Pin Defaults of 0x411111f0 or 0x400000f0 are removed \n# Remove CD at INT ATAPI\n#     Taken Care of by blacklist array above, shouldn't be in current verb array\n# 71c Sequence should always be 0\n# 71c Association needs to be unique!\n# 71d Set all Misc to 0 (Jack Detect Enabled) and determine which should be 1 later \n# 71e - Not Processed in this version \n# 71f Location should not use 02 for Front Panel, use 01 instead \n\n#\n# Step 1 - Correct 71c Associations\n#\n\necho \"Checking 71c Associations\" >> $debug\necho -e \"\\nCurrent Associations\" >> $debug\n\ni=0\nwhile [ $i -lt $verbcount ]\ndo\n    note=\"\"\n    assoc[i]=`echo ${verbc[i]} | cut -c7`\n    if [[ ${assoc[i]} = 0 ]];then\n       assoc[i]=1\n       note=\" note: Changed 0 to 1\" \n    fi\n\n    # Debug\n    echo \"${verbc[i]} = ${assoc[i]} $note\" >> $debug\n\n    i=i+1\ndone\n\n# Determine unused association values\ni=1;j=0\nwhile (( i < 15 ));do \n\n   # convert to single hex digit \n   ihex=`printf \"%x\\n\" $i`\n   chk=`echo ${assoc[*]} | grep -w $ihex`\n\n      if [[ -z $chk ]];then \n         unused[j]=$ihex\n         j=j+1\n      fi\n\n   i=i+1\n\ndone\n\n# Debug\necho -e \"\\n  Used associations = \"${assoc[*]} >> $debug\necho \"Unused associations = \"${unused[*]} >> $debug\necho -e \"\\nCorrecting duplicate associations\\n\" >> $debug\n\ni=0;nextassoc=0\nwhile [ $i -lt $verbcount ]\ndo\n    #build a assoc list without current node being checked \n    j=0;assoclist=\"\"\n    while [ $j -lt $verbcount ]\n    do\n        if [[ $j != $i ]];then\n           assoclist=$assoclist${assoc[j]}\" \"\n        fi\n        j=j+1\n    done\n\n    echo \"Checking if ${assoc[i]} already exists in: $assoclist\" >> $debug\n\n    chkassoc=`echo $assoclist | grep -w ${assoc[i]}`\n\n    if [[ -n $chkassoc ]];then\n\n       #There is a duplicate\n       #Is this the first time we've seen this association?\n       \n       echo \"   duplicate found - Is this the first time we've seen this association?\" >> $debug\n       firstassoc=`echo $newassoclist | grep -w ${assoc[i]}`\n\n       if [[ -n $firstassoc ]];then \n          echo \"   no - replacing association with: ${unused[nextassoc]}\" >> $debug\n\n          assoc[i]=${unused[nextassoc]} \n          nverbc[i]=`echo ${verbc[i]} | cut -c1-6`${assoc[i]}\"0\"\n          nextassoc=nextassoc+1 \n\n       else\n          echo \"   yes - ignoring\" >> $debug\n\n          nverbc[i]=`echo ${verbc[i]} | cut -c1-7`\"0\"\n\n       fi\n\n    else\n\n       echo \"   no duplicate found\" >> $debug\n\n       nverbc[i]=`echo ${verbc[i]} | cut -c1-7`\"0\"\n\n    fi \n\n    newassoclist=$newassoclist${assoc[i]}\" \"\n    i=i+1\n    \ndone\n\necho -e \"\\nNew 71c Associations\" >> $debug\necho \" Before      After\" >> $debug\necho \"--------------------------------------------------\" >> $debug\n\ni=0\nwhile [ $i -lt $verbcount ]\ndo\n    echo ${verbc[i]}\"   \"${nverbc[i]}\" \"${verbd[i]}\" \"${verbe[i]}\" \"${verbf[i]} >> $debug\n    i=i+1\ndone\n\n#\n# Step 2 - Correcting 71d Misc\n#\n\necho -e \"\\nReset 71d Misc to 0\" >> $debug\n\ni=0\nwhile [ $i -lt $verbcount ]\ndo\n   nverbd[i]=`echo ${verbd[i]} | cut -c1-7`\"0\"\n   #verbd[i]=$verb$b\n   i=i+1\ndone\n   \n\necho -e \"New 71d Associations\" >> $debug\necho \" Before                After\" >> $debug\necho \"--------------------------------------------------\" >> $debug\ni=0\nwhile [ $i -lt $verbcount ]\ndo\n    echo ${verbd[i]}\"   \"${nverbc[i]}\"  \"${nverbd[i]}\" \"${verbe[i]}\" \"${verbf[i]} >> $debug\n    i=i+1\ndone\n\n#\n# Step 3 - Correct 71e \n#\n\n# Removed for now \n \n# \n# Step 4 - Correct 71f\n#\n\necho -e \"\\nCorrect 71f 02 FP to 01\" >> $debug\n\ni=0\nwhile [ $i -lt $verbcount ]\ndo\n   verb=`echo ${verbf[i]} | cut -c1-7`\n   misc=`echo ${verbf[i]} | cut -c8 | tr [a-z] [A-Z]`\n\n   if [[ $misc = \"2\" ]];then\n      misc=\"1\"\n   fi\n\n   if [[ $misc != \"1\" ]];then\n      misc=\"0\"\n   fi\n\n   nverbf[i]=$verb$misc\n\n   i=i+1\n\ndone\n\necho -e \"New 71f Associations\" >> $debug\necho \" Before                                    After\" >> $debug\necho \"--------------------------------------------------\" >> $debug\ni=0\nwhile [ $i -lt $verbcount ]\ndo\n    echo ${verbd[i]}\"   \"${nverbc[i]}\"  \"${nverbd[i]}\" \"${verbe[i]}\"  \"${nverbf[i]} >> $debug\n    i=i+1\ndone\necho \" \" >> $debug\n\n\n#\n# Step 5 - Show new verbs\n#\n\necho -e \"\\n   Jack   Color  Description                  Node     PinDefault             Modified Verbs\\n$brk\"\ni=0\nwhile [ $i -lt $verbcount ]\ndo\n    printf \"%7s %7s %-27s %3d %-6s %-12s %s %s %s %s\\n\" ${vjack[i]} ${vcolor[i]} \"${vdesc[i]}\" ${vhex[i]} ${vhex[i]} \"0x\"${vpin[i]} ${nverbc[i]} ${nverbd[i]} ${verbe[i]} ${nverbf[i]}\n    i=i+1\ndone\n\necho -e \"$brk\\n\"\n\n# verbs in one line\n\nprintf \"Modified Verbs in One Line:\"\ni=0\nwhile [ $i -lt $verbcount ]\ndo\n    printf \" %s %s %s %s\" ${nverbc[i]} ${nverbd[i]} ${verbe[i]} ${nverbf[i]}\n    i=i+1\ndone\n\necho -e \"\\n$brk\\n\"\n\n"
  },
  {
    "path": "hda-tools/widget_dump.sh",
    "content": "#!/bin/bash\n\n# Get right input amp\n# 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 \n#  0  0  0  0  0  0 0 0 0 0 0 0 0 0 0 0 = 0x0\n# Get left input amp\n#  0  0  1  0  0 0 0  0 0 0 0 0 0 0 0 0 = 0x2000\n# Get right output amp\n#  1  0  0  0  0  0 0 0 0 0 0 0 0 0 0 0 = 0x8000\n# Get left output amp\n#  1  0  1  0  0  0 0 0 0 0 0 0 0 0 0 0 = 0xa000\n\n# Set both input amps\n# 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 \n#  0  1  1  1  0  0 0 0 0 0 0 0 0 0 1 1 = 0x7003\n\nfunction dump\n{\n\techo -e \"\\t\\tnid = $1 --> result `hda-verb $1 $2 $3 | tail -c 11`\"\n}\n\nfunction dump_all\n{\n\tdump 0x02 $1 $2\n\tdump 0x03 $1 $2\n\tdump 0x04 $1 $2\n\tdump 0x05 $1 $2\n\tdump 0x06 $1 $2\n\tdump 0x07 $1 $2\n\tdump 0x08 $1 $2\n\tdump 0x09 $1 $2\n\tdump 0x0a $1 $2\n\tdump 0x0b $1 $2\n\tdump 0x0c $1 $2\n\tdump 0x0d $1 $2\n\tdump 0x0e $1 $2\n\tdump 0x0f $1 $2\n\tdump 0x10 $1 $2\n\tdump 0x11 $1 $2\n\tdump 0x12 $1 $2\n\tdump 0x13 $1 $2\n\tdump 0x14 $1 $2\n\tdump 0x15 $1 $2\n\tdump 0x16 $1 $2\n\tdump 0x17 $1 $2\n\tdump 0x18 $1 $2\n\tdump 0x19 $1 $2\n\tdump 0x1a $1 $2\n\tdump 0x1b $1 $2\n\tdump 0x1c $1 $2\n\tdump 0x1d $1 $2\n\tdump 0x1e $1 $2\n\tdump 0x1f $1 $2\n\tdump 0x20 $1 $2\n\tdump 0x21 $1 $2\n\tdump 0x22 $1 $2\n\tdump 0x23 $1 $2\n\tdump 0x24 $1 $2\n}\n\n#echo -e \"\\tConnection Selector\"\n#dump_all GET_CONNECT_SEL 0x0\n\n#echo -e \"\\tProcessing State\"\n#dump_all GET_PROC_STATE 0x0\n\n#echo -e \"\\tPower State\"\n#dump_all GET_POWER_STATE 0x0\n\necho -e \"\\tPin Widget Control\"\ndump_all GET_PIN_WIDGET_CONTROL 0x0\n\n#echo -e \"\\tPin Sense\"\n#dump_all GET_PIN_SENSE 0x0\n\n#echo -e \"\\tEAPD\"\n#dump_all GET_EAPD_BTLENABLE 0x0\n\n#echo -e \"\\tAmp Mute (Right Input)\"\n#dump_all GET_AMP_GAIN_MUTE 0x0\n\n#echo -e \"\\tAmp Mute (Left Input)\"\n#dump_all GET_AMP_GAIN_MUTE 0x2000\n\n#echo -e \"\\tAmp Mute (Right Output)\"\n#dump_all GET_AMP_GAIN_MUTE 0x8000\n\n#echo -e \"\\tAmp Mute (Left Output)\"\n#dump_all GET_AMP_GAIN_MUTE 0xa000\n\n#echo -e \"\\tVolume Knob Control\"\n#dump_all GET_VOLUME_KNOB_CONTROL 0x0\n\n#echo -e \"\\tConfiguration Default\"\n#dump_all GET_CONFIG_DEFAULT 0x0\n"
  },
  {
    "path": "refind/drivers_aa64/LICENSE.txt",
    "content": "Licensing for the filesystem drivers is complex. Three different licenses\napply to various parts of the code:\n\n* Christoph Pfisterer's original file system wrapper (FSW) code is covered\n  by a BSD-style license. Many of the source files with names that take the\n  form fsw_*.[ch] are so licensed, but this is NOT generally true of\n  filesystem-specific files (e.g., fsw_ext2.c or fsw_btrfs.c).\n\n* Certain filesystem drivers are licensed under the GPLv2, either because\n  they borrow code from the Linux kernel or because a developer (typically\n  Oracle) applied the GPLv2 license to them. This is true of the ext2fs,\n  ext4fs, ReiserFS, HFS+, and ISO-9660 drivers.\n\n* At least one filesystem driver (Btrfs) uses code taken from GRUB, and so\n  uses the GPLv3 (or later) license.\n\nNote that the GPLv2 and GPLv3 are, ironically, not compatible licenses.\nThus, code from GPLv2 and GPLv3 projects should not be mixed. The BSD\nlicense used by Pfisterer's original code is compatible with both versions\nof the GPL, so the fact that both GPLv2 and GPLv3 drivers is built upon it\nis OK. If you intend to contribute to this project's drivers or use the\ncode yourself, please keep this fact in mind.\n\nThe below was written by Christoph Pfisterer with respect to his original\ncode:\n\n File System Wrapper License\n=============================\n\nThe various parts of the File System Wrapper source code come from\ndifferent sources and may carry different licenses. Here's a quick\naccount of the situation:\n\n * The core code was written from scratch and is covered by a\n   BSD-style license.\n\n * The EFI host driver was written from scratch, possibly using code\n   from the TianoCore project and Intel's EFI Application Toolkit. It\n   is covered by a BSD-style license.\n\n * The ext2 and reiserfs file system drivers use definitions from the\n   Linux kernel source. The actual code was written from scratch,\n   using multiple sources for reference. These drivers are covered by\n   the GNU GPL.\n\nFor more details, see each file's boilerplate comment. The full text\nof the GNU GPL is in the file LICENSE_GPL.txt.\n"
  },
  {
    "path": "refind/drivers_aa64/LICENSE_GPL.txt",
    "content": "\t\t    GNU GENERAL PUBLIC LICENSE\n\t\t       Version 2, June 1991\n\n Copyright (C) 1989, 1991 Free Software Foundation, Inc.\n     59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n Everyone is permitted to copy and distribute verbatim copies\n of this license document, but changing it is not allowed.\n\n\t\t\t    Preamble\n\n  The licenses for most software are designed to take away your\nfreedom to share and change it.  By contrast, the GNU General Public\nLicense is intended to guarantee your freedom to share and change free\nsoftware--to make sure the software is free for all its users.  This\nGeneral Public License applies to most of the Free Software\nFoundation's software and to any other program whose authors commit to\nusing it.  (Some other Free Software Foundation software is covered by\nthe GNU Library General Public License instead.)  You can apply it to\nyour programs, too.\n\n  When we speak of free software, we are referring to freedom, not\nprice.  Our General Public Licenses are designed to make sure that you\nhave the freedom to distribute copies of free software (and charge for\nthis service if you wish), that you receive source code or can get it\nif you want it, that you can change the software or use pieces of it\nin new free programs; and that you know you can do these things.\n\n  To protect your rights, we need to make restrictions that forbid\nanyone to deny you these rights or to ask you to surrender the rights.\nThese restrictions translate to certain responsibilities for you if you\ndistribute copies of the software, or if you modify it.\n\n  For example, if you distribute copies of such a program, whether\ngratis or for a fee, you must give the recipients all the rights that\nyou have.  You must make sure that they, too, receive or can get the\nsource code.  And you must show them these terms so they know their\nrights.\n\n  We protect your rights with two steps: (1) copyright the software, and\n(2) offer you this license which gives you legal permission to copy,\ndistribute and/or modify the software.\n\n  Also, for each author's protection and ours, we want to make certain\nthat everyone understands that there is no warranty for this free\nsoftware.  If the software is modified by someone else and passed on, we\nwant its recipients to know that what they have is not the original, so\nthat any problems introduced by others will not reflect on the original\nauthors' reputations.\n\n  Finally, any free program is threatened constantly by software\npatents.  We wish to avoid the danger that redistributors of a free\nprogram will individually obtain patent licenses, in effect making the\nprogram proprietary.  To prevent this, we have made it clear that any\npatent must be licensed for everyone's free use or not licensed at all.\n\n  The precise terms and conditions for copying, distribution and\nmodification follow.\n\f\n\t\t    GNU GENERAL PUBLIC LICENSE\n   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION\n\n  0. This License applies to any program or other work which contains\na notice placed by the copyright holder saying it may be distributed\nunder the terms of this General Public License.  The \"Program\", below,\nrefers to any such program or work, and a \"work based on the Program\"\nmeans either the Program or any derivative work under copyright law:\nthat is to say, a work containing the Program or a portion of it,\neither verbatim or with modifications and/or translated into another\nlanguage.  (Hereinafter, translation is included without limitation in\nthe term \"modification\".)  Each licensee is addressed as \"you\".\n\nActivities other than copying, distribution and modification are not\ncovered by this License; they are outside its scope.  The act of\nrunning the Program is not restricted, and the output from the Program\nis covered only if its contents constitute a work based on the\nProgram (independent of having been made by running the Program).\nWhether that is true depends on what the Program does.\n\n  1. You may copy and distribute verbatim copies of the Program's\nsource code as you receive it, in any medium, provided that you\nconspicuously and appropriately publish on each copy an appropriate\ncopyright notice and disclaimer of warranty; keep intact all the\nnotices that refer to this License and to the absence of any warranty;\nand give any other recipients of the Program a copy of this License\nalong with the Program.\n\nYou may charge a fee for the physical act of transferring a copy, and\nyou may at your option offer warranty protection in exchange for a fee.\n\n  2. You may modify your copy or copies of the Program or any portion\nof it, thus forming a work based on the Program, and copy and\ndistribute such modifications or work under the terms of Section 1\nabove, provided that you also meet all of these conditions:\n\n    a) You must cause the modified files to carry prominent notices\n    stating that you changed the files and the date of any change.\n\n    b) You must cause any work that you distribute or publish, that in\n    whole or in part contains or is derived from the Program or any\n    part thereof, to be licensed as a whole at no charge to all third\n    parties under the terms of this License.\n\n    c) If the modified program normally reads commands interactively\n    when run, you must cause it, when started running for such\n    interactive use in the most ordinary way, to print or display an\n    announcement including an appropriate copyright notice and a\n    notice that there is no warranty (or else, saying that you provide\n    a warranty) and that users may redistribute the program under\n    these conditions, and telling the user how to view a copy of this\n    License.  (Exception: if the Program itself is interactive but\n    does not normally print such an announcement, your work based on\n    the Program is not required to print an announcement.)\n\f\nThese requirements apply to the modified work as a whole.  If\nidentifiable sections of that work are not derived from the Program,\nand can be reasonably considered independent and separate works in\nthemselves, then this License, and its terms, do not apply to those\nsections when you distribute them as separate works.  But when you\ndistribute the same sections as part of a whole which is a work based\non the Program, the distribution of the whole must be on the terms of\nthis License, whose permissions for other licensees extend to the\nentire whole, and thus to each and every part regardless of who wrote it.\n\nThus, it is not the intent of this section to claim rights or contest\nyour rights to work written entirely by you; rather, the intent is to\nexercise the right to control the distribution of derivative or\ncollective works based on the Program.\n\nIn addition, mere aggregation of another work not based on the Program\nwith the Program (or with a work based on the Program) on a volume of\na storage or distribution medium does not bring the other work under\nthe scope of this License.\n\n  3. You may copy and distribute the Program (or a work based on it,\nunder Section 2) in object code or executable form under the terms of\nSections 1 and 2 above provided that you also do one of the following:\n\n    a) Accompany it with the complete corresponding machine-readable\n    source code, which must be distributed under the terms of Sections\n    1 and 2 above on a medium customarily used for software interchange; or,\n\n    b) Accompany it with a written offer, valid for at least three\n    years, to give any third party, for a charge no more than your\n    cost of physically performing source distribution, a complete\n    machine-readable copy of the corresponding source code, to be\n    distributed under the terms of Sections 1 and 2 above on a medium\n    customarily used for software interchange; or,\n\n    c) Accompany it with the information you received as to the offer\n    to distribute corresponding source code.  (This alternative is\n    allowed only for noncommercial distribution and only if you\n    received the program in object code or executable form with such\n    an offer, in accord with Subsection b above.)\n\nThe source code for a work means the preferred form of the work for\nmaking modifications to it.  For an executable work, complete source\ncode means all the source code for all modules it contains, plus any\nassociated interface definition files, plus the scripts used to\ncontrol compilation and installation of the executable.  However, as a\nspecial exception, the source code distributed need not include\nanything that is normally distributed (in either source or binary\nform) with the major components (compiler, kernel, and so on) of the\noperating system on which the executable runs, unless that component\nitself accompanies the executable.\n\nIf distribution of executable or object code is made by offering\naccess to copy from a designated place, then offering equivalent\naccess to copy the source code from the same place counts as\ndistribution of the source code, even though third parties are not\ncompelled to copy the source along with the object code.\n\f\n  4. You may not copy, modify, sublicense, or distribute the Program\nexcept as expressly provided under this License.  Any attempt\notherwise to copy, modify, sublicense or distribute the Program is\nvoid, and will automatically terminate your rights under this License.\nHowever, parties who have received copies, or rights, from you under\nthis License will not have their licenses terminated so long as such\nparties remain in full compliance.\n\n  5. You are not required to accept this License, since you have not\nsigned it.  However, nothing else grants you permission to modify or\ndistribute the Program or its derivative works.  These actions are\nprohibited by law if you do not accept this License.  Therefore, by\nmodifying or distributing the Program (or any work based on the\nProgram), you indicate your acceptance of this License to do so, and\nall its terms and conditions for copying, distributing or modifying\nthe Program or works based on it.\n\n  6. Each time you redistribute the Program (or any work based on the\nProgram), the recipient automatically receives a license from the\noriginal licensor to copy, distribute or modify the Program subject to\nthese terms and conditions.  You may not impose any further\nrestrictions on the recipients' exercise of the rights granted herein.\nYou are not responsible for enforcing compliance by third parties to\nthis License.\n\n  7. If, as a consequence of a court judgment or allegation of patent\ninfringement or for any other reason (not limited to patent issues),\nconditions are imposed on you (whether by court order, agreement or\notherwise) that contradict the conditions of this License, they do not\nexcuse you from the conditions of this License.  If you cannot\ndistribute so as to satisfy simultaneously your obligations under this\nLicense and any other pertinent obligations, then as a consequence you\nmay not distribute the Program at all.  For example, if a patent\nlicense would not permit royalty-free redistribution of the Program by\nall those who receive copies directly or indirectly through you, then\nthe only way you could satisfy both it and this License would be to\nrefrain entirely from distribution of the Program.\n\nIf any portion of this section is held invalid or unenforceable under\nany particular circumstance, the balance of the section is intended to\napply and the section as a whole is intended to apply in other\ncircumstances.\n\nIt is not the purpose of this section to induce you to infringe any\npatents or other property right claims or to contest validity of any\nsuch claims; this section has the sole purpose of protecting the\nintegrity of the free software distribution system, which is\nimplemented by public license practices.  Many people have made\ngenerous contributions to the wide range of software distributed\nthrough that system in reliance on consistent application of that\nsystem; it is up to the author/donor to decide if he or she is willing\nto distribute software through any other system and a licensee cannot\nimpose that choice.\n\nThis section is intended to make thoroughly clear what is believed to\nbe a consequence of the rest of this License.\n\f\n  8. If the distribution and/or use of the Program is restricted in\ncertain countries either by patents or by copyrighted interfaces, the\noriginal copyright holder who places the Program under this License\nmay add an explicit geographical distribution limitation excluding\nthose countries, so that distribution is permitted only in or among\ncountries not thus excluded.  In such case, this License incorporates\nthe limitation as if written in the body of this License.\n\n  9. The Free Software Foundation may publish revised and/or new versions\nof the General Public License from time to time.  Such new versions will\nbe similar in spirit to the present version, but may differ in detail to\naddress new problems or concerns.\n\nEach version is given a distinguishing version number.  If the Program\nspecifies a version number of this License which applies to it and \"any\nlater version\", you have the option of following the terms and conditions\neither of that version or of any later version published by the Free\nSoftware Foundation.  If the Program does not specify a version number of\nthis License, you may choose any version ever published by the Free Software\nFoundation.\n\n  10. If you wish to incorporate parts of the Program into other free\nprograms whose distribution conditions are different, write to the author\nto ask for permission.  For software which is copyrighted by the Free\nSoftware Foundation, write to the Free Software Foundation; we sometimes\nmake exceptions for this.  Our decision will be guided by the two goals\nof preserving the free status of all derivatives of our free software and\nof promoting the sharing and reuse of software generally.\n\n\t\t\t    NO WARRANTY\n\n  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY\nFOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN\nOTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES\nPROVIDE THE PROGRAM \"AS IS\" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED\nOR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF\nMERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS\nTO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE\nPROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,\nREPAIR OR CORRECTION.\n\n  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING\nWILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR\nREDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,\nINCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING\nOUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED\nTO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY\nYOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER\nPROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE\nPOSSIBILITY OF SUCH DAMAGES.\n\n\t\t     END OF TERMS AND CONDITIONS\n\f\n\t    How to Apply These Terms to Your New Programs\n\n  If you develop a new program, and you want it to be of the greatest\npossible use to the public, the best way to achieve this is to make it\nfree software which everyone can redistribute and change under these terms.\n\n  To do so, attach the following notices to the program.  It is safest\nto attach them to the start of each source file to most effectively\nconvey the exclusion of warranty; and each file should have at least\nthe \"copyright\" line and a pointer to where the full notice is found.\n\n    <one line to give the program's name and a brief idea of what it does.>\n    Copyright (C) <year>  <name of author>\n\n    This program is free software; you can redistribute it and/or modify\n    it under the terms of the GNU General Public License as published by\n    the Free Software Foundation; either version 2 of the License, or\n    (at your option) any later version.\n\n    This program is distributed in the hope that it will be useful,\n    but WITHOUT ANY WARRANTY; without even the implied warranty of\n    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n    GNU General Public License for more details.\n\n    You should have received a copy of the GNU General Public License\n    along with this program; if not, write to the Free Software\n    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n\n\nAlso add information on how to contact you by electronic and paper mail.\n\nIf the program is interactive, make it output a short notice like this\nwhen it starts in an interactive mode:\n\n    Gnomovision version 69, Copyright (C) year  name of author\n    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.\n    This is free software, and you are welcome to redistribute it\n    under certain conditions; type `show c' for details.\n\nThe hypothetical commands `show w' and `show c' should show the appropriate\nparts of the General Public License.  Of course, the commands you use may\nbe called something other than `show w' and `show c'; they could even be\nmouse-clicks or menu items--whatever suits your program.\n\nYou should also get your employer (if you work as a programmer) or your\nschool, if any, to sign a \"copyright disclaimer\" for the program, if\nnecessary.  Here is a sample; alter the names:\n\n  Yoyodyne, Inc., hereby disclaims all copyright interest in the program\n  `Gnomovision' (which makes passes at compilers) written by James Hacker.\n\n  <signature of Ty Coon>, 1 April 1989\n  Ty Coon, President of Vice\n\nThis General Public License does not permit incorporating your program into\nproprietary programs.  If your program is a subroutine library, you may\nconsider it more useful to permit linking proprietary applications with the\nlibrary.  If this is what you want to do, use the GNU Library General\nPublic License instead of this License.\n"
  },
  {
    "path": "refind/drivers_ia32/LICENSE.txt",
    "content": "Licensing for the filesystem drivers is complex. Three different licenses\napply to various parts of the code:\n\n* Christoph Pfisterer's original file system wrapper (FSW) code is covered\n  by a BSD-style license. Many of the source files with names that take the\n  form fsw_*.[ch] are so licensed, but this is NOT generally true of\n  filesystem-specific files (e.g., fsw_ext2.c or fsw_btrfs.c).\n\n* Certain filesystem drivers are licensed under the GPLv2, either because\n  they borrow code from the Linux kernel or because a developer (typically\n  Oracle) applied the GPLv2 license to them. This is true of the ext2fs,\n  ext4fs, ReiserFS, HFS+, and ISO-9660 drivers.\n\n* At least one filesystem driver (Btrfs) uses code taken from GRUB, and so\n  uses the GPLv3 (or later) license.\n\nNote that the GPLv2 and GPLv3 are, ironically, not compatible licenses.\nThus, code from GPLv2 and GPLv3 projects should not be mixed. The BSD\nlicense used by Pfisterer's original code is compatible with both versions\nof the GPL, so the fact that both GPLv2 and GPLv3 drivers is built upon it\nis OK. If you intend to contribute to this project's drivers or use the\ncode yourself, please keep this fact in mind.\n\nThe below was written by Christoph Pfisterer with respect to his original\ncode:\n\n File System Wrapper License\n=============================\n\nThe various parts of the File System Wrapper source code come from\ndifferent sources and may carry different licenses. Here's a quick\naccount of the situation:\n\n * The core code was written from scratch and is covered by a\n   BSD-style license.\n\n * The EFI host driver was written from scratch, possibly using code\n   from the TianoCore project and Intel's EFI Application Toolkit. It\n   is covered by a BSD-style license.\n\n * The ext2 and reiserfs file system drivers use definitions from the\n   Linux kernel source. The actual code was written from scratch,\n   using multiple sources for reference. These drivers are covered by\n   the GNU GPL.\n\nFor more details, see each file's boilerplate comment. The full text\nof the GNU GPL is in the file LICENSE_GPL.txt.\n"
  },
  {
    "path": "refind/drivers_ia32/LICENSE_GPL.txt",
    "content": "\t\t    GNU GENERAL PUBLIC LICENSE\n\t\t       Version 2, June 1991\n\n Copyright (C) 1989, 1991 Free Software Foundation, Inc.\n     59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n Everyone is permitted to copy and distribute verbatim copies\n of this license document, but changing it is not allowed.\n\n\t\t\t    Preamble\n\n  The licenses for most software are designed to take away your\nfreedom to share and change it.  By contrast, the GNU General Public\nLicense is intended to guarantee your freedom to share and change free\nsoftware--to make sure the software is free for all its users.  This\nGeneral Public License applies to most of the Free Software\nFoundation's software and to any other program whose authors commit to\nusing it.  (Some other Free Software Foundation software is covered by\nthe GNU Library General Public License instead.)  You can apply it to\nyour programs, too.\n\n  When we speak of free software, we are referring to freedom, not\nprice.  Our General Public Licenses are designed to make sure that you\nhave the freedom to distribute copies of free software (and charge for\nthis service if you wish), that you receive source code or can get it\nif you want it, that you can change the software or use pieces of it\nin new free programs; and that you know you can do these things.\n\n  To protect your rights, we need to make restrictions that forbid\nanyone to deny you these rights or to ask you to surrender the rights.\nThese restrictions translate to certain responsibilities for you if you\ndistribute copies of the software, or if you modify it.\n\n  For example, if you distribute copies of such a program, whether\ngratis or for a fee, you must give the recipients all the rights that\nyou have.  You must make sure that they, too, receive or can get the\nsource code.  And you must show them these terms so they know their\nrights.\n\n  We protect your rights with two steps: (1) copyright the software, and\n(2) offer you this license which gives you legal permission to copy,\ndistribute and/or modify the software.\n\n  Also, for each author's protection and ours, we want to make certain\nthat everyone understands that there is no warranty for this free\nsoftware.  If the software is modified by someone else and passed on, we\nwant its recipients to know that what they have is not the original, so\nthat any problems introduced by others will not reflect on the original\nauthors' reputations.\n\n  Finally, any free program is threatened constantly by software\npatents.  We wish to avoid the danger that redistributors of a free\nprogram will individually obtain patent licenses, in effect making the\nprogram proprietary.  To prevent this, we have made it clear that any\npatent must be licensed for everyone's free use or not licensed at all.\n\n  The precise terms and conditions for copying, distribution and\nmodification follow.\n\f\n\t\t    GNU GENERAL PUBLIC LICENSE\n   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION\n\n  0. This License applies to any program or other work which contains\na notice placed by the copyright holder saying it may be distributed\nunder the terms of this General Public License.  The \"Program\", below,\nrefers to any such program or work, and a \"work based on the Program\"\nmeans either the Program or any derivative work under copyright law:\nthat is to say, a work containing the Program or a portion of it,\neither verbatim or with modifications and/or translated into another\nlanguage.  (Hereinafter, translation is included without limitation in\nthe term \"modification\".)  Each licensee is addressed as \"you\".\n\nActivities other than copying, distribution and modification are not\ncovered by this License; they are outside its scope.  The act of\nrunning the Program is not restricted, and the output from the Program\nis covered only if its contents constitute a work based on the\nProgram (independent of having been made by running the Program).\nWhether that is true depends on what the Program does.\n\n  1. You may copy and distribute verbatim copies of the Program's\nsource code as you receive it, in any medium, provided that you\nconspicuously and appropriately publish on each copy an appropriate\ncopyright notice and disclaimer of warranty; keep intact all the\nnotices that refer to this License and to the absence of any warranty;\nand give any other recipients of the Program a copy of this License\nalong with the Program.\n\nYou may charge a fee for the physical act of transferring a copy, and\nyou may at your option offer warranty protection in exchange for a fee.\n\n  2. You may modify your copy or copies of the Program or any portion\nof it, thus forming a work based on the Program, and copy and\ndistribute such modifications or work under the terms of Section 1\nabove, provided that you also meet all of these conditions:\n\n    a) You must cause the modified files to carry prominent notices\n    stating that you changed the files and the date of any change.\n\n    b) You must cause any work that you distribute or publish, that in\n    whole or in part contains or is derived from the Program or any\n    part thereof, to be licensed as a whole at no charge to all third\n    parties under the terms of this License.\n\n    c) If the modified program normally reads commands interactively\n    when run, you must cause it, when started running for such\n    interactive use in the most ordinary way, to print or display an\n    announcement including an appropriate copyright notice and a\n    notice that there is no warranty (or else, saying that you provide\n    a warranty) and that users may redistribute the program under\n    these conditions, and telling the user how to view a copy of this\n    License.  (Exception: if the Program itself is interactive but\n    does not normally print such an announcement, your work based on\n    the Program is not required to print an announcement.)\n\f\nThese requirements apply to the modified work as a whole.  If\nidentifiable sections of that work are not derived from the Program,\nand can be reasonably considered independent and separate works in\nthemselves, then this License, and its terms, do not apply to those\nsections when you distribute them as separate works.  But when you\ndistribute the same sections as part of a whole which is a work based\non the Program, the distribution of the whole must be on the terms of\nthis License, whose permissions for other licensees extend to the\nentire whole, and thus to each and every part regardless of who wrote it.\n\nThus, it is not the intent of this section to claim rights or contest\nyour rights to work written entirely by you; rather, the intent is to\nexercise the right to control the distribution of derivative or\ncollective works based on the Program.\n\nIn addition, mere aggregation of another work not based on the Program\nwith the Program (or with a work based on the Program) on a volume of\na storage or distribution medium does not bring the other work under\nthe scope of this License.\n\n  3. You may copy and distribute the Program (or a work based on it,\nunder Section 2) in object code or executable form under the terms of\nSections 1 and 2 above provided that you also do one of the following:\n\n    a) Accompany it with the complete corresponding machine-readable\n    source code, which must be distributed under the terms of Sections\n    1 and 2 above on a medium customarily used for software interchange; or,\n\n    b) Accompany it with a written offer, valid for at least three\n    years, to give any third party, for a charge no more than your\n    cost of physically performing source distribution, a complete\n    machine-readable copy of the corresponding source code, to be\n    distributed under the terms of Sections 1 and 2 above on a medium\n    customarily used for software interchange; or,\n\n    c) Accompany it with the information you received as to the offer\n    to distribute corresponding source code.  (This alternative is\n    allowed only for noncommercial distribution and only if you\n    received the program in object code or executable form with such\n    an offer, in accord with Subsection b above.)\n\nThe source code for a work means the preferred form of the work for\nmaking modifications to it.  For an executable work, complete source\ncode means all the source code for all modules it contains, plus any\nassociated interface definition files, plus the scripts used to\ncontrol compilation and installation of the executable.  However, as a\nspecial exception, the source code distributed need not include\nanything that is normally distributed (in either source or binary\nform) with the major components (compiler, kernel, and so on) of the\noperating system on which the executable runs, unless that component\nitself accompanies the executable.\n\nIf distribution of executable or object code is made by offering\naccess to copy from a designated place, then offering equivalent\naccess to copy the source code from the same place counts as\ndistribution of the source code, even though third parties are not\ncompelled to copy the source along with the object code.\n\f\n  4. You may not copy, modify, sublicense, or distribute the Program\nexcept as expressly provided under this License.  Any attempt\notherwise to copy, modify, sublicense or distribute the Program is\nvoid, and will automatically terminate your rights under this License.\nHowever, parties who have received copies, or rights, from you under\nthis License will not have their licenses terminated so long as such\nparties remain in full compliance.\n\n  5. You are not required to accept this License, since you have not\nsigned it.  However, nothing else grants you permission to modify or\ndistribute the Program or its derivative works.  These actions are\nprohibited by law if you do not accept this License.  Therefore, by\nmodifying or distributing the Program (or any work based on the\nProgram), you indicate your acceptance of this License to do so, and\nall its terms and conditions for copying, distributing or modifying\nthe Program or works based on it.\n\n  6. Each time you redistribute the Program (or any work based on the\nProgram), the recipient automatically receives a license from the\noriginal licensor to copy, distribute or modify the Program subject to\nthese terms and conditions.  You may not impose any further\nrestrictions on the recipients' exercise of the rights granted herein.\nYou are not responsible for enforcing compliance by third parties to\nthis License.\n\n  7. If, as a consequence of a court judgment or allegation of patent\ninfringement or for any other reason (not limited to patent issues),\nconditions are imposed on you (whether by court order, agreement or\notherwise) that contradict the conditions of this License, they do not\nexcuse you from the conditions of this License.  If you cannot\ndistribute so as to satisfy simultaneously your obligations under this\nLicense and any other pertinent obligations, then as a consequence you\nmay not distribute the Program at all.  For example, if a patent\nlicense would not permit royalty-free redistribution of the Program by\nall those who receive copies directly or indirectly through you, then\nthe only way you could satisfy both it and this License would be to\nrefrain entirely from distribution of the Program.\n\nIf any portion of this section is held invalid or unenforceable under\nany particular circumstance, the balance of the section is intended to\napply and the section as a whole is intended to apply in other\ncircumstances.\n\nIt is not the purpose of this section to induce you to infringe any\npatents or other property right claims or to contest validity of any\nsuch claims; this section has the sole purpose of protecting the\nintegrity of the free software distribution system, which is\nimplemented by public license practices.  Many people have made\ngenerous contributions to the wide range of software distributed\nthrough that system in reliance on consistent application of that\nsystem; it is up to the author/donor to decide if he or she is willing\nto distribute software through any other system and a licensee cannot\nimpose that choice.\n\nThis section is intended to make thoroughly clear what is believed to\nbe a consequence of the rest of this License.\n\f\n  8. If the distribution and/or use of the Program is restricted in\ncertain countries either by patents or by copyrighted interfaces, the\noriginal copyright holder who places the Program under this License\nmay add an explicit geographical distribution limitation excluding\nthose countries, so that distribution is permitted only in or among\ncountries not thus excluded.  In such case, this License incorporates\nthe limitation as if written in the body of this License.\n\n  9. The Free Software Foundation may publish revised and/or new versions\nof the General Public License from time to time.  Such new versions will\nbe similar in spirit to the present version, but may differ in detail to\naddress new problems or concerns.\n\nEach version is given a distinguishing version number.  If the Program\nspecifies a version number of this License which applies to it and \"any\nlater version\", you have the option of following the terms and conditions\neither of that version or of any later version published by the Free\nSoftware Foundation.  If the Program does not specify a version number of\nthis License, you may choose any version ever published by the Free Software\nFoundation.\n\n  10. If you wish to incorporate parts of the Program into other free\nprograms whose distribution conditions are different, write to the author\nto ask for permission.  For software which is copyrighted by the Free\nSoftware Foundation, write to the Free Software Foundation; we sometimes\nmake exceptions for this.  Our decision will be guided by the two goals\nof preserving the free status of all derivatives of our free software and\nof promoting the sharing and reuse of software generally.\n\n\t\t\t    NO WARRANTY\n\n  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY\nFOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN\nOTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES\nPROVIDE THE PROGRAM \"AS IS\" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED\nOR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF\nMERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS\nTO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE\nPROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,\nREPAIR OR CORRECTION.\n\n  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING\nWILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR\nREDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,\nINCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING\nOUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED\nTO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY\nYOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER\nPROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE\nPOSSIBILITY OF SUCH DAMAGES.\n\n\t\t     END OF TERMS AND CONDITIONS\n\f\n\t    How to Apply These Terms to Your New Programs\n\n  If you develop a new program, and you want it to be of the greatest\npossible use to the public, the best way to achieve this is to make it\nfree software which everyone can redistribute and change under these terms.\n\n  To do so, attach the following notices to the program.  It is safest\nto attach them to the start of each source file to most effectively\nconvey the exclusion of warranty; and each file should have at least\nthe \"copyright\" line and a pointer to where the full notice is found.\n\n    <one line to give the program's name and a brief idea of what it does.>\n    Copyright (C) <year>  <name of author>\n\n    This program is free software; you can redistribute it and/or modify\n    it under the terms of the GNU General Public License as published by\n    the Free Software Foundation; either version 2 of the License, or\n    (at your option) any later version.\n\n    This program is distributed in the hope that it will be useful,\n    but WITHOUT ANY WARRANTY; without even the implied warranty of\n    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n    GNU General Public License for more details.\n\n    You should have received a copy of the GNU General Public License\n    along with this program; if not, write to the Free Software\n    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n\n\nAlso add information on how to contact you by electronic and paper mail.\n\nIf the program is interactive, make it output a short notice like this\nwhen it starts in an interactive mode:\n\n    Gnomovision version 69, Copyright (C) year  name of author\n    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.\n    This is free software, and you are welcome to redistribute it\n    under certain conditions; type `show c' for details.\n\nThe hypothetical commands `show w' and `show c' should show the appropriate\nparts of the General Public License.  Of course, the commands you use may\nbe called something other than `show w' and `show c'; they could even be\nmouse-clicks or menu items--whatever suits your program.\n\nYou should also get your employer (if you work as a programmer) or your\nschool, if any, to sign a \"copyright disclaimer\" for the program, if\nnecessary.  Here is a sample; alter the names:\n\n  Yoyodyne, Inc., hereby disclaims all copyright interest in the program\n  `Gnomovision' (which makes passes at compilers) written by James Hacker.\n\n  <signature of Ty Coon>, 1 April 1989\n  Ty Coon, President of Vice\n\nThis General Public License does not permit incorporating your program into\nproprietary programs.  If your program is a subroutine library, you may\nconsider it more useful to permit linking proprietary applications with the\nlibrary.  If this is what you want to do, use the GNU Library General\nPublic License instead of this License.\n"
  },
  {
    "path": "refind/drivers_x64/LICENSE.txt",
    "content": "Licensing for the filesystem drivers is complex. Three different licenses\napply to various parts of the code:\n\n* Christoph Pfisterer's original file system wrapper (FSW) code is covered\n  by a BSD-style license. Many of the source files with names that take the\n  form fsw_*.[ch] are so licensed, but this is NOT generally true of\n  filesystem-specific files (e.g., fsw_ext2.c or fsw_btrfs.c).\n\n* Certain filesystem drivers are licensed under the GPLv2, either because\n  they borrow code from the Linux kernel or because a developer (typically\n  Oracle) applied the GPLv2 license to them. This is true of the ext2fs,\n  ext4fs, ReiserFS, HFS+, and ISO-9660 drivers.\n\n* At least one filesystem driver (Btrfs) uses code taken from GRUB, and so\n  uses the GPLv3 (or later) license.\n\nNote that the GPLv2 and GPLv3 are, ironically, not compatible licenses.\nThus, code from GPLv2 and GPLv3 projects should not be mixed. The BSD\nlicense used by Pfisterer's original code is compatible with both versions\nof the GPL, so the fact that both GPLv2 and GPLv3 drivers is built upon it\nis OK. If you intend to contribute to this project's drivers or use the\ncode yourself, please keep this fact in mind.\n\nThe below was written by Christoph Pfisterer with respect to his original\ncode:\n\n File System Wrapper License\n=============================\n\nThe various parts of the File System Wrapper source code come from\ndifferent sources and may carry different licenses. Here's a quick\naccount of the situation:\n\n * The core code was written from scratch and is covered by a\n   BSD-style license.\n\n * The EFI host driver was written from scratch, possibly using code\n   from the TianoCore project and Intel's EFI Application Toolkit. It\n   is covered by a BSD-style license.\n\n * The ext2 and reiserfs file system drivers use definitions from the\n   Linux kernel source. The actual code was written from scratch,\n   using multiple sources for reference. These drivers are covered by\n   the GNU GPL.\n\nFor more details, see each file's boilerplate comment. The full text\nof the GNU GPL is in the file LICENSE_GPL.txt.\n"
  },
  {
    "path": "refind/drivers_x64/LICENSE_GPL.txt",
    "content": "\t\t    GNU GENERAL PUBLIC LICENSE\n\t\t       Version 2, June 1991\n\n Copyright (C) 1989, 1991 Free Software Foundation, Inc.\n     59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n Everyone is permitted to copy and distribute verbatim copies\n of this license document, but changing it is not allowed.\n\n\t\t\t    Preamble\n\n  The licenses for most software are designed to take away your\nfreedom to share and change it.  By contrast, the GNU General Public\nLicense is intended to guarantee your freedom to share and change free\nsoftware--to make sure the software is free for all its users.  This\nGeneral Public License applies to most of the Free Software\nFoundation's software and to any other program whose authors commit to\nusing it.  (Some other Free Software Foundation software is covered by\nthe GNU Library General Public License instead.)  You can apply it to\nyour programs, too.\n\n  When we speak of free software, we are referring to freedom, not\nprice.  Our General Public Licenses are designed to make sure that you\nhave the freedom to distribute copies of free software (and charge for\nthis service if you wish), that you receive source code or can get it\nif you want it, that you can change the software or use pieces of it\nin new free programs; and that you know you can do these things.\n\n  To protect your rights, we need to make restrictions that forbid\nanyone to deny you these rights or to ask you to surrender the rights.\nThese restrictions translate to certain responsibilities for you if you\ndistribute copies of the software, or if you modify it.\n\n  For example, if you distribute copies of such a program, whether\ngratis or for a fee, you must give the recipients all the rights that\nyou have.  You must make sure that they, too, receive or can get the\nsource code.  And you must show them these terms so they know their\nrights.\n\n  We protect your rights with two steps: (1) copyright the software, and\n(2) offer you this license which gives you legal permission to copy,\ndistribute and/or modify the software.\n\n  Also, for each author's protection and ours, we want to make certain\nthat everyone understands that there is no warranty for this free\nsoftware.  If the software is modified by someone else and passed on, we\nwant its recipients to know that what they have is not the original, so\nthat any problems introduced by others will not reflect on the original\nauthors' reputations.\n\n  Finally, any free program is threatened constantly by software\npatents.  We wish to avoid the danger that redistributors of a free\nprogram will individually obtain patent licenses, in effect making the\nprogram proprietary.  To prevent this, we have made it clear that any\npatent must be licensed for everyone's free use or not licensed at all.\n\n  The precise terms and conditions for copying, distribution and\nmodification follow.\n\f\n\t\t    GNU GENERAL PUBLIC LICENSE\n   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION\n\n  0. This License applies to any program or other work which contains\na notice placed by the copyright holder saying it may be distributed\nunder the terms of this General Public License.  The \"Program\", below,\nrefers to any such program or work, and a \"work based on the Program\"\nmeans either the Program or any derivative work under copyright law:\nthat is to say, a work containing the Program or a portion of it,\neither verbatim or with modifications and/or translated into another\nlanguage.  (Hereinafter, translation is included without limitation in\nthe term \"modification\".)  Each licensee is addressed as \"you\".\n\nActivities other than copying, distribution and modification are not\ncovered by this License; they are outside its scope.  The act of\nrunning the Program is not restricted, and the output from the Program\nis covered only if its contents constitute a work based on the\nProgram (independent of having been made by running the Program).\nWhether that is true depends on what the Program does.\n\n  1. You may copy and distribute verbatim copies of the Program's\nsource code as you receive it, in any medium, provided that you\nconspicuously and appropriately publish on each copy an appropriate\ncopyright notice and disclaimer of warranty; keep intact all the\nnotices that refer to this License and to the absence of any warranty;\nand give any other recipients of the Program a copy of this License\nalong with the Program.\n\nYou may charge a fee for the physical act of transferring a copy, and\nyou may at your option offer warranty protection in exchange for a fee.\n\n  2. You may modify your copy or copies of the Program or any portion\nof it, thus forming a work based on the Program, and copy and\ndistribute such modifications or work under the terms of Section 1\nabove, provided that you also meet all of these conditions:\n\n    a) You must cause the modified files to carry prominent notices\n    stating that you changed the files and the date of any change.\n\n    b) You must cause any work that you distribute or publish, that in\n    whole or in part contains or is derived from the Program or any\n    part thereof, to be licensed as a whole at no charge to all third\n    parties under the terms of this License.\n\n    c) If the modified program normally reads commands interactively\n    when run, you must cause it, when started running for such\n    interactive use in the most ordinary way, to print or display an\n    announcement including an appropriate copyright notice and a\n    notice that there is no warranty (or else, saying that you provide\n    a warranty) and that users may redistribute the program under\n    these conditions, and telling the user how to view a copy of this\n    License.  (Exception: if the Program itself is interactive but\n    does not normally print such an announcement, your work based on\n    the Program is not required to print an announcement.)\n\f\nThese requirements apply to the modified work as a whole.  If\nidentifiable sections of that work are not derived from the Program,\nand can be reasonably considered independent and separate works in\nthemselves, then this License, and its terms, do not apply to those\nsections when you distribute them as separate works.  But when you\ndistribute the same sections as part of a whole which is a work based\non the Program, the distribution of the whole must be on the terms of\nthis License, whose permissions for other licensees extend to the\nentire whole, and thus to each and every part regardless of who wrote it.\n\nThus, it is not the intent of this section to claim rights or contest\nyour rights to work written entirely by you; rather, the intent is to\nexercise the right to control the distribution of derivative or\ncollective works based on the Program.\n\nIn addition, mere aggregation of another work not based on the Program\nwith the Program (or with a work based on the Program) on a volume of\na storage or distribution medium does not bring the other work under\nthe scope of this License.\n\n  3. You may copy and distribute the Program (or a work based on it,\nunder Section 2) in object code or executable form under the terms of\nSections 1 and 2 above provided that you also do one of the following:\n\n    a) Accompany it with the complete corresponding machine-readable\n    source code, which must be distributed under the terms of Sections\n    1 and 2 above on a medium customarily used for software interchange; or,\n\n    b) Accompany it with a written offer, valid for at least three\n    years, to give any third party, for a charge no more than your\n    cost of physically performing source distribution, a complete\n    machine-readable copy of the corresponding source code, to be\n    distributed under the terms of Sections 1 and 2 above on a medium\n    customarily used for software interchange; or,\n\n    c) Accompany it with the information you received as to the offer\n    to distribute corresponding source code.  (This alternative is\n    allowed only for noncommercial distribution and only if you\n    received the program in object code or executable form with such\n    an offer, in accord with Subsection b above.)\n\nThe source code for a work means the preferred form of the work for\nmaking modifications to it.  For an executable work, complete source\ncode means all the source code for all modules it contains, plus any\nassociated interface definition files, plus the scripts used to\ncontrol compilation and installation of the executable.  However, as a\nspecial exception, the source code distributed need not include\nanything that is normally distributed (in either source or binary\nform) with the major components (compiler, kernel, and so on) of the\noperating system on which the executable runs, unless that component\nitself accompanies the executable.\n\nIf distribution of executable or object code is made by offering\naccess to copy from a designated place, then offering equivalent\naccess to copy the source code from the same place counts as\ndistribution of the source code, even though third parties are not\ncompelled to copy the source along with the object code.\n\f\n  4. You may not copy, modify, sublicense, or distribute the Program\nexcept as expressly provided under this License.  Any attempt\notherwise to copy, modify, sublicense or distribute the Program is\nvoid, and will automatically terminate your rights under this License.\nHowever, parties who have received copies, or rights, from you under\nthis License will not have their licenses terminated so long as such\nparties remain in full compliance.\n\n  5. You are not required to accept this License, since you have not\nsigned it.  However, nothing else grants you permission to modify or\ndistribute the Program or its derivative works.  These actions are\nprohibited by law if you do not accept this License.  Therefore, by\nmodifying or distributing the Program (or any work based on the\nProgram), you indicate your acceptance of this License to do so, and\nall its terms and conditions for copying, distributing or modifying\nthe Program or works based on it.\n\n  6. Each time you redistribute the Program (or any work based on the\nProgram), the recipient automatically receives a license from the\noriginal licensor to copy, distribute or modify the Program subject to\nthese terms and conditions.  You may not impose any further\nrestrictions on the recipients' exercise of the rights granted herein.\nYou are not responsible for enforcing compliance by third parties to\nthis License.\n\n  7. If, as a consequence of a court judgment or allegation of patent\ninfringement or for any other reason (not limited to patent issues),\nconditions are imposed on you (whether by court order, agreement or\notherwise) that contradict the conditions of this License, they do not\nexcuse you from the conditions of this License.  If you cannot\ndistribute so as to satisfy simultaneously your obligations under this\nLicense and any other pertinent obligations, then as a consequence you\nmay not distribute the Program at all.  For example, if a patent\nlicense would not permit royalty-free redistribution of the Program by\nall those who receive copies directly or indirectly through you, then\nthe only way you could satisfy both it and this License would be to\nrefrain entirely from distribution of the Program.\n\nIf any portion of this section is held invalid or unenforceable under\nany particular circumstance, the balance of the section is intended to\napply and the section as a whole is intended to apply in other\ncircumstances.\n\nIt is not the purpose of this section to induce you to infringe any\npatents or other property right claims or to contest validity of any\nsuch claims; this section has the sole purpose of protecting the\nintegrity of the free software distribution system, which is\nimplemented by public license practices.  Many people have made\ngenerous contributions to the wide range of software distributed\nthrough that system in reliance on consistent application of that\nsystem; it is up to the author/donor to decide if he or she is willing\nto distribute software through any other system and a licensee cannot\nimpose that choice.\n\nThis section is intended to make thoroughly clear what is believed to\nbe a consequence of the rest of this License.\n\f\n  8. If the distribution and/or use of the Program is restricted in\ncertain countries either by patents or by copyrighted interfaces, the\noriginal copyright holder who places the Program under this License\nmay add an explicit geographical distribution limitation excluding\nthose countries, so that distribution is permitted only in or among\ncountries not thus excluded.  In such case, this License incorporates\nthe limitation as if written in the body of this License.\n\n  9. The Free Software Foundation may publish revised and/or new versions\nof the General Public License from time to time.  Such new versions will\nbe similar in spirit to the present version, but may differ in detail to\naddress new problems or concerns.\n\nEach version is given a distinguishing version number.  If the Program\nspecifies a version number of this License which applies to it and \"any\nlater version\", you have the option of following the terms and conditions\neither of that version or of any later version published by the Free\nSoftware Foundation.  If the Program does not specify a version number of\nthis License, you may choose any version ever published by the Free Software\nFoundation.\n\n  10. If you wish to incorporate parts of the Program into other free\nprograms whose distribution conditions are different, write to the author\nto ask for permission.  For software which is copyrighted by the Free\nSoftware Foundation, write to the Free Software Foundation; we sometimes\nmake exceptions for this.  Our decision will be guided by the two goals\nof preserving the free status of all derivatives of our free software and\nof promoting the sharing and reuse of software generally.\n\n\t\t\t    NO WARRANTY\n\n  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY\nFOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN\nOTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES\nPROVIDE THE PROGRAM \"AS IS\" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED\nOR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF\nMERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS\nTO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE\nPROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,\nREPAIR OR CORRECTION.\n\n  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING\nWILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR\nREDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,\nINCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING\nOUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED\nTO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY\nYOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER\nPROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE\nPOSSIBILITY OF SUCH DAMAGES.\n\n\t\t     END OF TERMS AND CONDITIONS\n\f\n\t    How to Apply These Terms to Your New Programs\n\n  If you develop a new program, and you want it to be of the greatest\npossible use to the public, the best way to achieve this is to make it\nfree software which everyone can redistribute and change under these terms.\n\n  To do so, attach the following notices to the program.  It is safest\nto attach them to the start of each source file to most effectively\nconvey the exclusion of warranty; and each file should have at least\nthe \"copyright\" line and a pointer to where the full notice is found.\n\n    <one line to give the program's name and a brief idea of what it does.>\n    Copyright (C) <year>  <name of author>\n\n    This program is free software; you can redistribute it and/or modify\n    it under the terms of the GNU General Public License as published by\n    the Free Software Foundation; either version 2 of the License, or\n    (at your option) any later version.\n\n    This program is distributed in the hope that it will be useful,\n    but WITHOUT ANY WARRANTY; without even the implied warranty of\n    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n    GNU General Public License for more details.\n\n    You should have received a copy of the GNU General Public License\n    along with this program; if not, write to the Free Software\n    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n\n\nAlso add information on how to contact you by electronic and paper mail.\n\nIf the program is interactive, make it output a short notice like this\nwhen it starts in an interactive mode:\n\n    Gnomovision version 69, Copyright (C) year  name of author\n    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.\n    This is free software, and you are welcome to redistribute it\n    under certain conditions; type `show c' for details.\n\nThe hypothetical commands `show w' and `show c' should show the appropriate\nparts of the General Public License.  Of course, the commands you use may\nbe called something other than `show w' and `show c'; they could even be\nmouse-clicks or menu items--whatever suits your program.\n\nYou should also get your employer (if you work as a programmer) or your\nschool, if any, to sign a \"copyright disclaimer\" for the program, if\nnecessary.  Here is a sample; alter the names:\n\n  Yoyodyne, Inc., hereby disclaims all copyright interest in the program\n  `Gnomovision' (which makes passes at compilers) written by James Hacker.\n\n  <signature of Ty Coon>, 1 April 1989\n  Ty Coon, President of Vice\n\nThis General Public License does not permit incorporating your program into\nproprietary programs.  If your program is a subroutine library, you may\nconsider it more useful to permit linking proprietary applications with the\nlibrary.  If this is what you want to do, use the GNU Library General\nPublic License instead of this License.\n"
  },
  {
    "path": "refind/icons/README",
    "content": "This directory holds icons used by rEFInd. This file describes their\nsources, both in overview and in file-by-file detail, and provides pointers\nto the relevant licenses under which the icons are distributed.\n\nIcon Sources (Overview)\n-----------------------\n\n- The AwOken 2.5 icon set\n  - Source: http://alecive.deviantart.com/art/AwOken-163570862\n  - Copyright (c) 2013 by Alessandro Roncone (aka alecive on DeviantArt)\n  - License: Creative Commons Attribution-Share Alike 3.0 (CC-SA 3.0)\n\n- Original work for rEFInd\n  - Source: https://sourceforge.net/p/refind (this archive)\n  - Copyright (c) 2015 by Roderick W. Smith\n  - License: LGPLv3+ or CC-SA 3.0\n\n- Debian OS icon\n  - Source: https://commons.wikimedia.org/wiki/File:Debian-OpenLogo.svg\n  - Copyright (c) 1999 Debian Project\n  - License: LGPLv3+ or CC-SA 3.0\n\n- Elementary OS icon\n  - Source: https://commons.wikimedia.org/wiki/File:Elementary_logo.svg\n  - Copyright (c) 2008 Dan Rabbit\n  - License: GPLv2+\n\nSome icons have been altered from their original forms -- normally\nconversion from SVG to PNG format, resizing, changes in coloration, or\naddition of \"drop shadow\" effects. Details follow....\n\nThe \"svg\" subdirectory holds SVG versions of some icons (notably absent are\nthose based on the AwOken icon set).\n\nIcon Sources (Detail)\n---------------------\n\nIcons unchanged from AwOken 2.5:\n\nos_centos.png -- AwOken/clear/128x128/start-here/start-here-centos.png\nos_chakra.png -- AwOken/clear/128x128/start-here/start-here-chakra.png\nos_chrome.png -- AwOken/clear/128x128/apps/google-chrome1.png\nos_crunchbang.png -- AwOken/clear/128x128/start-here/start-here-crunchbang3.png\nos_fedora.png -- AwOken/clear/128x128/start-here/start-here-fedora5.png\nos_frugalware.png -- AwOken/clear/128x128/start-here/start-here-frugalware1.png\nos_kubuntu.png -- AwOken/clear/128x128/start-here/start-here-kubuntu.png\nos_lubuntu.png -- AwOken/clear/128x128/start-here/start-here-lubuntu.png\nos_mageia.png -- AwOken/clear/128x128/start-here/start-here-mageia.png\nos_mandriva.png -- AwOken/clear/128x128/start-here/start-here-mandriva5.png\nos_network.png -- AwOken/clear/128x128/places/network-workgroup1.png\nos_ubuntu.png -- AwOken/clear/128x128/start-here/start-here-ubuntu.png\nos_unknown.png -- AwOken/clear/128x128/actions/color-line1.png\nos_win8.png -- AwOken/clear/128x128/apps/live1.png\n\n\nIcons modified from AwOken 2.5:\n\narrow_left.png -- AwOken/clear/128x128/actions/go-previous.png\narrow_right.png -- AwOken/clear/128x128/actions/go-next.png\nboot_linux.png -- AwOken/clear/128x128/apps/supertux.png\nfunc_about.png -- AwOkenWhite/clear/128x128/actions/info2.png\nfunc_exit.png -- AwOkenWhite/clear/128x128/actions/application-exit2.png\nfunc_firmware.png -- AwOkenWhite/clear/128x128/status/indicator-cpufreq.png\nfunc_reset.png -- AwOkenWhite/clear/128x128/apps/gnome-session-reboot2.png\nfunc_shutdown.png -- AwOkenWhite/clear/128x128/apps/gnome-session-halt2.png\nos_arch.png -- AwOkenWhite/clear/128x128/start-here/start-here-arch3.png\nos_clover.png -- AwOkenWhite/clear/128x128/actions/tools-wizard.png\nos_gentoo.png -- AwOken/clear/128x128/start-here/start-here-gentoo.png\nos_hwtest.png -- AwOkenWhite/clear/128x128/apps/hw.png\nos_linux.png -- AwOkenWhite/clear/128x128/apps/supertux.png\nos_linuxmint.png -- AwOkenWhite/clear/128x128/start-here/start-here-mint3.png\nos_opensuse.png -- AwOkenWhite/clear/128x128/start-here/start-here-suse3.png\nos_slackware.png -- AwOkenWhite/clear/128x128/start-here/start-here-slackware1.png\nos_suse.png -- AwOkenWhite/clear/128x128/start-here/start-here-suse3.png\nos_xubuntu.png -- AwOkenWhite/clear/128x128/start-here/start-here-xubuntu1.png\ntool_mok_tool.png -- AwOkenWhite/clear/128x128/apps/gnome-keyring-manager.png\ntool_netboot.png -- AwOken/clear/128x128/places/network-workgroup1.png\ntool_shell.png -- AwOken/clear/128x128/apps/terminal3.png\nvol_external.png -- AwOkenWhite/clear/128x128/devices/drive-removable-media-usb2.png\nvol_internal.png -- AwOken/clear/128/128/drive-harddisk/Internal.png\nvol_net.png -- AwOken/clear/128/128/drive-harddisk/Server.png\nvol_optical.png - AwOken/clear/128x128/devices/media-optical-cd1.png\n\n\nModified Elementary OS icon:\n\nos_elementary.png (GPLv2+)\n\n\nModified Debian OS icon:\n\nos_debian.png (LGPLv3+ or CC-BY-SA 3.0)\n\n\nIcons created by me (Roderick W. Smith):\n\nboot_win.png\nfunc_csr_rotate.png\nos_clover.png\nos_freebsd.png\nos_gummiboot.png\nos_haiku.png\nos_legacy.png\nos_mac.png\nos_netbsd.png\nos_redhat.png\nos_refind.png\nos_refit.png\nos_win.png\ntool_apple_rescue.png\ntool_fwupdate.png\ntool_memtest.png\ntool_rescue.png\ntransparent.png\n\n\nIn addition, some icons are combinations of two other icons from different\nsources:\n\ntool_part.png -- vol_internal.png with AwOken's gparted2.png\ntool_windows_rescue.png: os_win8.png with AwOken's gnome_network_preferences.png\n\n\nLicneses\n--------\n\nThe \"licenses\" subdirectory contains the text of the relevant licenses:\n\nCC-SA 3.0: Creative Commons Legal Code.html\n           (See also https://creativecommons.org/licenses/by-sa/3.0/us/)\n\nGPLv2: gpl-2.0.txt\n       (see also https://www.gnu.org/licenses/old-licenses/gpl-2.0.en.html)\n\nLGPLv3: lgpl-3.0.txt\n        (see also http://www.gnu.org/licenses/lgpl-3.0.en.html)\n"
  },
  {
    "path": "refind/icons/licenses/cc-3.0.txt",
    "content": "Creative Commons Legal Code\n\nAttribution-ShareAlike 3.0 Unported\n\n    CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE\n    LEGAL SERVICES. DISTRIBUTION OF THIS LICENSE DOES NOT CREATE AN\n    ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS\n    INFORMATION ON AN \"AS-IS\" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES\n    REGARDING THE INFORMATION PROVIDED, AND DISCLAIMS LIABILITY FOR\n    DAMAGES RESULTING FROM ITS USE.\n\nLicense\n\nTHE WORK (AS DEFINED BELOW) IS PROVIDED UNDER THE TERMS OF THIS CREATIVE\nCOMMONS PUBLIC LICENSE (\"CCPL\" OR \"LICENSE\"). THE WORK IS PROTECTED BY\nCOPYRIGHT AND/OR OTHER APPLICABLE LAW. ANY USE OF THE WORK OTHER THAN AS\nAUTHORIZED UNDER THIS LICENSE OR COPYRIGHT LAW IS PROHIBITED.\n\nBY EXERCISING ANY RIGHTS TO THE WORK PROVIDED HERE, YOU ACCEPT AND AGREE\nTO BE BOUND BY THE TERMS OF THIS LICENSE. TO THE EXTENT THIS LICENSE MAY\nBE CONSIDERED TO BE A CONTRACT, THE LICENSOR GRANTS YOU THE RIGHTS\nCONTAINED HERE IN CONSIDERATION OF YOUR ACCEPTANCE OF SUCH TERMS AND\nCONDITIONS.\n\n1. Definitions\n\n a. \"Adaptation\" means a work based upon the Work, or upon the Work and\n    other pre-existing works, such as a translation, adaptation,\n    derivative work, arrangement of music or other alterations of a\n    literary or artistic work, or phonogram or performance and includes\n    cinematographic adaptations or any other form in which the Work may be\n    recast, transformed, or adapted including in any form recognizably\n    derived from the original, except that a work that constitutes a\n    Collection will not be considered an Adaptation for the purpose of\n    this License. For the avoidance of doubt, where the Work is a musical\n    work, performance or phonogram, the synchronization of the Work in\n    timed-relation with a moving image (\"synching\") will be considered an\n    Adaptation for the purpose of this License.\n b. \"Collection\" means a collection of literary or artistic works, such as\n    encyclopedias and anthologies, or performances, phonograms or\n    broadcasts, or other works or subject matter other than works listed\n    in Section 1(f) below, which, by reason of the selection and\n    arrangement of their contents, constitute intellectual creations, in\n    which the Work is included in its entirety in unmodified form along\n    with one or more other contributions, each constituting separate and\n    independent works in themselves, which together are assembled into a\n    collective whole. A work that constitutes a Collection will not be\n    considered an Adaptation (as defined below) for the purposes of this\n    License.\n c. \"Creative Commons Compatible License\" means a license that is listed\n    at https://creativecommons.org/compatiblelicenses that has been\n    approved by Creative Commons as being essentially equivalent to this\n    License, including, at a minimum, because that license: (i) contains\n    terms that have the same purpose, meaning and effect as the License\n    Elements of this License; and, (ii) explicitly permits the relicensing\n    of adaptations of works made available under that license under this\n    License or a Creative Commons jurisdiction license with the same\n    License Elements as this License.\n d. \"Distribute\" means to make available to the public the original and\n    copies of the Work or Adaptation, as appropriate, through sale or\n    other transfer of ownership.\n e. \"License Elements\" means the following high-level license attributes\n    as selected by Licensor and indicated in the title of this License:\n    Attribution, ShareAlike.\n f. \"Licensor\" means the individual, individuals, entity or entities that\n    offer(s) the Work under the terms of this License.\n g. \"Original Author\" means, in the case of a literary or artistic work,\n    the individual, individuals, entity or entities who created the Work\n    or if no individual or entity can be identified, the publisher; and in\n    addition (i) in the case of a performance the actors, singers,\n    musicians, dancers, and other persons who act, sing, deliver, declaim,\n    play in, interpret or otherwise perform literary or artistic works or\n    expressions of folklore; (ii) in the case of a phonogram the producer\n    being the person or legal entity who first fixes the sounds of a\n    performance or other sounds; and, (iii) in the case of broadcasts, the\n    organization that transmits the broadcast.\n h. \"Work\" means the literary and/or artistic work offered under the terms\n    of this License including without limitation any production in the\n    literary, scientific and artistic domain, whatever may be the mode or\n    form of its expression including digital form, such as a book,\n    pamphlet and other writing; a lecture, address, sermon or other work\n    of the same nature; a dramatic or dramatico-musical work; a\n    choreographic work or entertainment in dumb show; a musical\n    composition with or without words; a cinematographic work to which are\n    assimilated works expressed by a process analogous to cinematography;\n    a work of drawing, painting, architecture, sculpture, engraving or\n    lithography; a photographic work to which are assimilated works\n    expressed by a process analogous to photography; a work of applied\n    art; an illustration, map, plan, sketch or three-dimensional work\n    relative to geography, topography, architecture or science; a\n    performance; a broadcast; a phonogram; a compilation of data to the\n    extent it is protected as a copyrightable work; or a work performed by\n    a variety or circus performer to the extent it is not otherwise\n    considered a literary or artistic work.\n i. \"You\" means an individual or entity exercising rights under this\n    License who has not previously violated the terms of this License with\n    respect to the Work, or who has received express permission from the\n    Licensor to exercise rights under this License despite a previous\n    violation.\n j. \"Publicly Perform\" means to perform public recitations of the Work and\n    to communicate to the public those public recitations, by any means or\n    process, including by wire or wireless means or public digital\n    performances; to make available to the public Works in such a way that\n    members of the public may access these Works from a place and at a\n    place individually chosen by them; to perform the Work to the public\n    by any means or process and the communication to the public of the\n    performances of the Work, including by public digital performance; to\n    broadcast and rebroadcast the Work by any means including signs,\n    sounds or images.\n k. \"Reproduce\" means to make copies of the Work by any means including\n    without limitation by sound or visual recordings and the right of\n    fixation and reproducing fixations of the Work, including storage of a\n    protected performance or phonogram in digital form or other electronic\n    medium.\n\n2. Fair Dealing Rights. Nothing in this License is intended to reduce,\nlimit, or restrict any uses free from copyright or rights arising from\nlimitations or exceptions that are provided for in connection with the\ncopyright protection under copyright law or other applicable laws.\n\n3. License Grant. Subject to the terms and conditions of this License,\nLicensor hereby grants You a worldwide, royalty-free, non-exclusive,\nperpetual (for the duration of the applicable copyright) license to\nexercise the rights in the Work as stated below:\n\n a. to Reproduce the Work, to incorporate the Work into one or more\n    Collections, and to Reproduce the Work as incorporated in the\n    Collections;\n b. to create and Reproduce Adaptations provided that any such Adaptation,\n    including any translation in any medium, takes reasonable steps to\n    clearly label, demarcate or otherwise identify that changes were made\n    to the original Work. For example, a translation could be marked \"The\n    original work was translated from English to Spanish,\" or a\n    modification could indicate \"The original work has been modified.\";\n c. to Distribute and Publicly Perform the Work including as incorporated\n    in Collections; and,\n d. to Distribute and Publicly Perform Adaptations.\n e. For the avoidance of doubt:\n\n     i. Non-waivable Compulsory License Schemes. In those jurisdictions in\n        which the right to collect royalties through any statutory or\n        compulsory licensing scheme cannot be waived, the Licensor\n        reserves the exclusive right to collect such royalties for any\n        exercise by You of the rights granted under this License;\n    ii. Waivable Compulsory License Schemes. In those jurisdictions in\n        which the right to collect royalties through any statutory or\n        compulsory licensing scheme can be waived, the Licensor waives the\n        exclusive right to collect such royalties for any exercise by You\n        of the rights granted under this License; and,\n   iii. Voluntary License Schemes. The Licensor waives the right to\n        collect royalties, whether individually or, in the event that the\n        Licensor is a member of a collecting society that administers\n        voluntary licensing schemes, via that society, from any exercise\n        by You of the rights granted under this License.\n\nThe above rights may be exercised in all media and formats whether now\nknown or hereafter devised. The above rights include the right to make\nsuch modifications as are technically necessary to exercise the rights in\nother media and formats. Subject to Section 8(f), all rights not expressly\ngranted by Licensor are hereby reserved.\n\n4. Restrictions. The license granted in Section 3 above is expressly made\nsubject to and limited by the following restrictions:\n\n a. You may Distribute or Publicly Perform the Work only under the terms\n    of this License. You must include a copy of, or the Uniform Resource\n    Identifier (URI) for, this License with every copy of the Work You\n    Distribute or Publicly Perform. You may not offer or impose any terms\n    on the Work that restrict the terms of this License or the ability of\n    the recipient of the Work to exercise the rights granted to that\n    recipient under the terms of the License. You may not sublicense the\n    Work. You must keep intact all notices that refer to this License and\n    to the disclaimer of warranties with every copy of the Work You\n    Distribute or Publicly Perform. When You Distribute or Publicly\n    Perform the Work, You may not impose any effective technological\n    measures on the Work that restrict the ability of a recipient of the\n    Work from You to exercise the rights granted to that recipient under\n    the terms of the License. This Section 4(a) applies to the Work as\n    incorporated in a Collection, but this does not require the Collection\n    apart from the Work itself to be made subject to the terms of this\n    License. If You create a Collection, upon notice from any Licensor You\n    must, to the extent practicable, remove from the Collection any credit\n    as required by Section 4(c), as requested. If You create an\n    Adaptation, upon notice from any Licensor You must, to the extent\n    practicable, remove from the Adaptation any credit as required by\n    Section 4(c), as requested.\n b. You may Distribute or Publicly Perform an Adaptation only under the\n    terms of: (i) this License; (ii) a later version of this License with\n    the same License Elements as this License; (iii) a Creative Commons\n    jurisdiction license (either this or a later license version) that\n    contains the same License Elements as this License (e.g.,\n    Attribution-ShareAlike 3.0 US)); (iv) a Creative Commons Compatible\n    License. If you license the Adaptation under one of the licenses\n    mentioned in (iv), you must comply with the terms of that license. If\n    you license the Adaptation under the terms of any of the licenses\n    mentioned in (i), (ii) or (iii) (the \"Applicable License\"), you must\n    comply with the terms of the Applicable License generally and the\n    following provisions: (I) You must include a copy of, or the URI for,\n    the Applicable License with every copy of each Adaptation You\n    Distribute or Publicly Perform; (II) You may not offer or impose any\n    terms on the Adaptation that restrict the terms of the Applicable\n    License or the ability of the recipient of the Adaptation to exercise\n    the rights granted to that recipient under the terms of the Applicable\n    License; (III) You must keep intact all notices that refer to the\n    Applicable License and to the disclaimer of warranties with every copy\n    of the Work as included in the Adaptation You Distribute or Publicly\n    Perform; (IV) when You Distribute or Publicly Perform the Adaptation,\n    You may not impose any effective technological measures on the\n    Adaptation that restrict the ability of a recipient of the Adaptation\n    from You to exercise the rights granted to that recipient under the\n    terms of the Applicable License. This Section 4(b) applies to the\n    Adaptation as incorporated in a Collection, but this does not require\n    the Collection apart from the Adaptation itself to be made subject to\n    the terms of the Applicable License.\n c. If You Distribute, or Publicly Perform the Work or any Adaptations or\n    Collections, You must, unless a request has been made pursuant to\n    Section 4(a), keep intact all copyright notices for the Work and\n    provide, reasonable to the medium or means You are utilizing: (i) the\n    name of the Original Author (or pseudonym, if applicable) if supplied,\n    and/or if the Original Author and/or Licensor designate another party\n    or parties (e.g., a sponsor institute, publishing entity, journal) for\n    attribution (\"Attribution Parties\") in Licensor's copyright notice,\n    terms of service or by other reasonable means, the name of such party\n    or parties; (ii) the title of the Work if supplied; (iii) to the\n    extent reasonably practicable, the URI, if any, that Licensor\n    specifies to be associated with the Work, unless such URI does not\n    refer to the copyright notice or licensing information for the Work;\n    and (iv) , consistent with Ssection 3(b), in the case of an\n    Adaptation, a credit identifying the use of the Work in the Adaptation\n    (e.g., \"French translation of the Work by Original Author,\" or\n    \"Screenplay based on original Work by Original Author\"). The credit\n    required by this Section 4(c) may be implemented in any reasonable\n    manner; provided, however, that in the case of a Adaptation or\n    Collection, at a minimum such credit will appear, if a credit for all\n    contributing authors of the Adaptation or Collection appears, then as\n    part of these credits and in a manner at least as prominent as the\n    credits for the other contributing authors. For the avoidance of\n    doubt, You may only use the credit required by this Section for the\n    purpose of attribution in the manner set out above and, by exercising\n    Your rights under this License, You may not implicitly or explicitly\n    assert or imply any connection with, sponsorship or endorsement by the\n    Original Author, Licensor and/or Attribution Parties, as appropriate,\n    of You or Your use of the Work, without the separate, express prior\n    written permission of the Original Author, Licensor and/or Attribution\n    Parties.\n d. Except as otherwise agreed in writing by the Licensor or as may be\n    otherwise permitted by applicable law, if You Reproduce, Distribute or\n    Publicly Perform the Work either by itself or as part of any\n    Adaptations or Collections, You must not distort, mutilate, modify or\n    take other derogatory action in relation to the Work which would be\n    prejudicial to the Original Author's honor or reputation. Licensor\n    agrees that in those jurisdictions (e.g. Japan), in which any exercise\n    of the right granted in Section 3(b) of this License (the right to\n    make Adaptations) would be deemed to be a distortion, mutilation,\n    modification or other derogatory action prejudicial to the Original\n    Author's honor and reputation, the Licensor will waive or not assert,\n    as appropriate, this Section, to the fullest extent permitted by the\n    applicable national law, to enable You to reasonably exercise Your\n    right under Section 3(b) of this License (right to make Adaptations)\n    but not otherwise.\n\n5. Representations, Warranties and Disclaimer\n\nUNLESS OTHERWISE MUTUALLY AGREED TO BY THE PARTIES IN WRITING, LICENSOR\nOFFERS THE WORK AS-IS AND MAKES NO REPRESENTATIONS OR WARRANTIES OF ANY\nKIND CONCERNING THE WORK, EXPRESS, IMPLIED, STATUTORY OR OTHERWISE,\nINCLUDING, WITHOUT LIMITATION, WARRANTIES OF TITLE, MERCHANTIBILITY,\nFITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT, OR THE ABSENCE OF\nLATENT OR OTHER DEFECTS, ACCURACY, OR THE PRESENCE OF ABSENCE OF ERRORS,\nWHETHER OR NOT DISCOVERABLE. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION\nOF IMPLIED WARRANTIES, SO SUCH EXCLUSION MAY NOT APPLY TO YOU.\n\n6. Limitation on Liability. EXCEPT TO THE EXTENT REQUIRED BY APPLICABLE\nLAW, IN NO EVENT WILL LICENSOR BE LIABLE TO YOU ON ANY LEGAL THEORY FOR\nANY SPECIAL, INCIDENTAL, CONSEQUENTIAL, PUNITIVE OR EXEMPLARY DAMAGES\nARISING OUT OF THIS LICENSE OR THE USE OF THE WORK, EVEN IF LICENSOR HAS\nBEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.\n\n7. Termination\n\n a. This License and the rights granted hereunder will terminate\n    automatically upon any breach by You of the terms of this License.\n    Individuals or entities who have received Adaptations or Collections\n    from You under this License, however, will not have their licenses\n    terminated provided such individuals or entities remain in full\n    compliance with those licenses. Sections 1, 2, 5, 6, 7, and 8 will\n    survive any termination of this License.\n b. Subject to the above terms and conditions, the license granted here is\n    perpetual (for the duration of the applicable copyright in the Work).\n    Notwithstanding the above, Licensor reserves the right to release the\n    Work under different license terms or to stop distributing the Work at\n    any time; provided, however that any such election will not serve to\n    withdraw this License (or any other license that has been, or is\n    required to be, granted under the terms of this License), and this\n    License will continue in full force and effect unless terminated as\n    stated above.\n\n8. Miscellaneous\n\n a. Each time You Distribute or Publicly Perform the Work or a Collection,\n    the Licensor offers to the recipient a license to the Work on the same\n    terms and conditions as the license granted to You under this License.\n b. Each time You Distribute or Publicly Perform an Adaptation, Licensor\n    offers to the recipient a license to the original Work on the same\n    terms and conditions as the license granted to You under this License.\n c. If any provision of this License is invalid or unenforceable under\n    applicable law, it shall not affect the validity or enforceability of\n    the remainder of the terms of this License, and without further action\n    by the parties to this agreement, such provision shall be reformed to\n    the minimum extent necessary to make such provision valid and\n    enforceable.\n d. No term or provision of this License shall be deemed waived and no\n    breach consented to unless such waiver or consent shall be in writing\n    and signed by the party to be charged with such waiver or consent.\n e. This License constitutes the entire agreement between the parties with\n    respect to the Work licensed here. There are no understandings,\n    agreements or representations with respect to the Work not specified\n    here. Licensor shall not be bound by any additional provisions that\n    may appear in any communication from You. This License may not be\n    modified without the mutual written agreement of the Licensor and You.\n f. The rights granted under, and the subject matter referenced, in this\n    License were drafted utilizing the terminology of the Berne Convention\n    for the Protection of Literary and Artistic Works (as amended on\n    September 28, 1979), the Rome Convention of 1961, the WIPO Copyright\n    Treaty of 1996, the WIPO Performances and Phonograms Treaty of 1996\n    and the Universal Copyright Convention (as revised on July 24, 1971).\n    These rights and subject matter take effect in the relevant\n    jurisdiction in which the License terms are sought to be enforced\n    according to the corresponding provisions of the implementation of\n    those treaty provisions in the applicable national law. If the\n    standard suite of rights granted under applicable copyright law\n    includes additional rights not granted under this License, such\n    additional rights are deemed to be included in the License; this\n    License is not intended to restrict the license of any rights under\n    applicable law.\n\n\nCreative Commons Notice\n\n    Creative Commons is not a party to this License, and makes no warranty\n    whatsoever in connection with the Work. Creative Commons will not be\n    liable to You or any party on any legal theory for any damages\n    whatsoever, including without limitation any general, special,\n    incidental or consequential damages arising in connection to this\n    license. Notwithstanding the foregoing two (2) sentences, if Creative\n    Commons has expressly identified itself as the Licensor hereunder, it\n    shall have all rights and obligations of Licensor.\n\n    Except for the limited purpose of indicating to the public that the\n    Work is licensed under the CCPL, Creative Commons does not authorize\n    the use by either party of the trademark \"Creative Commons\" or any\n    related trademark or logo of Creative Commons without the prior\n    written consent of Creative Commons. Any permitted use will be in\n    compliance with Creative Commons' then-current trademark usage\n    guidelines, as may be published on its website or otherwise made\n    available upon request from time to time. For the avoidance of doubt,\n    this trademark restriction does not form part of the License.\n\n    Creative Commons may be contacted at https://creativecommons.org/.\n"
  },
  {
    "path": "refind/icons/licenses/gpl-2.0.txt",
    "content": "                    GNU GENERAL PUBLIC LICENSE\n                       Version 2, June 1991\n\n Copyright (C) 1989, 1991 Free Software Foundation, Inc.,\n 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA\n Everyone is permitted to copy and distribute verbatim copies\n of this license document, but changing it is not allowed.\n\n                            Preamble\n\n  The licenses for most software are designed to take away your\nfreedom to share and change it.  By contrast, the GNU General Public\nLicense is intended to guarantee your freedom to share and change free\nsoftware--to make sure the software is free for all its users.  This\nGeneral Public License applies to most of the Free Software\nFoundation's software and to any other program whose authors commit to\nusing it.  (Some other Free Software Foundation software is covered by\nthe GNU Lesser General Public License instead.)  You can apply it to\nyour programs, too.\n\n  When we speak of free software, we are referring to freedom, not\nprice.  Our General Public Licenses are designed to make sure that you\nhave the freedom to distribute copies of free software (and charge for\nthis service if you wish), that you receive source code or can get it\nif you want it, that you can change the software or use pieces of it\nin new free programs; and that you know you can do these things.\n\n  To protect your rights, we need to make restrictions that forbid\nanyone to deny you these rights or to ask you to surrender the rights.\nThese restrictions translate to certain responsibilities for you if you\ndistribute copies of the software, or if you modify it.\n\n  For example, if you distribute copies of such a program, whether\ngratis or for a fee, you must give the recipients all the rights that\nyou have.  You must make sure that they, too, receive or can get the\nsource code.  And you must show them these terms so they know their\nrights.\n\n  We protect your rights with two steps: (1) copyright the software, and\n(2) offer you this license which gives you legal permission to copy,\ndistribute and/or modify the software.\n\n  Also, for each author's protection and ours, we want to make certain\nthat everyone understands that there is no warranty for this free\nsoftware.  If the software is modified by someone else and passed on, we\nwant its recipients to know that what they have is not the original, so\nthat any problems introduced by others will not reflect on the original\nauthors' reputations.\n\n  Finally, any free program is threatened constantly by software\npatents.  We wish to avoid the danger that redistributors of a free\nprogram will individually obtain patent licenses, in effect making the\nprogram proprietary.  To prevent this, we have made it clear that any\npatent must be licensed for everyone's free use or not licensed at all.\n\n  The precise terms and conditions for copying, distribution and\nmodification follow.\n\n                    GNU GENERAL PUBLIC LICENSE\n   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION\n\n  0. This License applies to any program or other work which contains\na notice placed by the copyright holder saying it may be distributed\nunder the terms of this General Public License.  The \"Program\", below,\nrefers to any such program or work, and a \"work based on the Program\"\nmeans either the Program or any derivative work under copyright law:\nthat is to say, a work containing the Program or a portion of it,\neither verbatim or with modifications and/or translated into another\nlanguage.  (Hereinafter, translation is included without limitation in\nthe term \"modification\".)  Each licensee is addressed as \"you\".\n\nActivities other than copying, distribution and modification are not\ncovered by this License; they are outside its scope.  The act of\nrunning the Program is not restricted, and the output from the Program\nis covered only if its contents constitute a work based on the\nProgram (independent of having been made by running the Program).\nWhether that is true depends on what the Program does.\n\n  1. You may copy and distribute verbatim copies of the Program's\nsource code as you receive it, in any medium, provided that you\nconspicuously and appropriately publish on each copy an appropriate\ncopyright notice and disclaimer of warranty; keep intact all the\nnotices that refer to this License and to the absence of any warranty;\nand give any other recipients of the Program a copy of this License\nalong with the Program.\n\nYou may charge a fee for the physical act of transferring a copy, and\nyou may at your option offer warranty protection in exchange for a fee.\n\n  2. You may modify your copy or copies of the Program or any portion\nof it, thus forming a work based on the Program, and copy and\ndistribute such modifications or work under the terms of Section 1\nabove, provided that you also meet all of these conditions:\n\n    a) You must cause the modified files to carry prominent notices\n    stating that you changed the files and the date of any change.\n\n    b) You must cause any work that you distribute or publish, that in\n    whole or in part contains or is derived from the Program or any\n    part thereof, to be licensed as a whole at no charge to all third\n    parties under the terms of this License.\n\n    c) If the modified program normally reads commands interactively\n    when run, you must cause it, when started running for such\n    interactive use in the most ordinary way, to print or display an\n    announcement including an appropriate copyright notice and a\n    notice that there is no warranty (or else, saying that you provide\n    a warranty) and that users may redistribute the program under\n    these conditions, and telling the user how to view a copy of this\n    License.  (Exception: if the Program itself is interactive but\n    does not normally print such an announcement, your work based on\n    the Program is not required to print an announcement.)\n\nThese requirements apply to the modified work as a whole.  If\nidentifiable sections of that work are not derived from the Program,\nand can be reasonably considered independent and separate works in\nthemselves, then this License, and its terms, do not apply to those\nsections when you distribute them as separate works.  But when you\ndistribute the same sections as part of a whole which is a work based\non the Program, the distribution of the whole must be on the terms of\nthis License, whose permissions for other licensees extend to the\nentire whole, and thus to each and every part regardless of who wrote it.\n\nThus, it is not the intent of this section to claim rights or contest\nyour rights to work written entirely by you; rather, the intent is to\nexercise the right to control the distribution of derivative or\ncollective works based on the Program.\n\nIn addition, mere aggregation of another work not based on the Program\nwith the Program (or with a work based on the Program) on a volume of\na storage or distribution medium does not bring the other work under\nthe scope of this License.\n\n  3. You may copy and distribute the Program (or a work based on it,\nunder Section 2) in object code or executable form under the terms of\nSections 1 and 2 above provided that you also do one of the following:\n\n    a) Accompany it with the complete corresponding machine-readable\n    source code, which must be distributed under the terms of Sections\n    1 and 2 above on a medium customarily used for software interchange; or,\n\n    b) Accompany it with a written offer, valid for at least three\n    years, to give any third party, for a charge no more than your\n    cost of physically performing source distribution, a complete\n    machine-readable copy of the corresponding source code, to be\n    distributed under the terms of Sections 1 and 2 above on a medium\n    customarily used for software interchange; or,\n\n    c) Accompany it with the information you received as to the offer\n    to distribute corresponding source code.  (This alternative is\n    allowed only for noncommercial distribution and only if you\n    received the program in object code or executable form with such\n    an offer, in accord with Subsection b above.)\n\nThe source code for a work means the preferred form of the work for\nmaking modifications to it.  For an executable work, complete source\ncode means all the source code for all modules it contains, plus any\nassociated interface definition files, plus the scripts used to\ncontrol compilation and installation of the executable.  However, as a\nspecial exception, the source code distributed need not include\nanything that is normally distributed (in either source or binary\nform) with the major components (compiler, kernel, and so on) of the\noperating system on which the executable runs, unless that component\nitself accompanies the executable.\n\nIf distribution of executable or object code is made by offering\naccess to copy from a designated place, then offering equivalent\naccess to copy the source code from the same place counts as\ndistribution of the source code, even though third parties are not\ncompelled to copy the source along with the object code.\n\n  4. You may not copy, modify, sublicense, or distribute the Program\nexcept as expressly provided under this License.  Any attempt\notherwise to copy, modify, sublicense or distribute the Program is\nvoid, and will automatically terminate your rights under this License.\nHowever, parties who have received copies, or rights, from you under\nthis License will not have their licenses terminated so long as such\nparties remain in full compliance.\n\n  5. You are not required to accept this License, since you have not\nsigned it.  However, nothing else grants you permission to modify or\ndistribute the Program or its derivative works.  These actions are\nprohibited by law if you do not accept this License.  Therefore, by\nmodifying or distributing the Program (or any work based on the\nProgram), you indicate your acceptance of this License to do so, and\nall its terms and conditions for copying, distributing or modifying\nthe Program or works based on it.\n\n  6. Each time you redistribute the Program (or any work based on the\nProgram), the recipient automatically receives a license from the\noriginal licensor to copy, distribute or modify the Program subject to\nthese terms and conditions.  You may not impose any further\nrestrictions on the recipients' exercise of the rights granted herein.\nYou are not responsible for enforcing compliance by third parties to\nthis License.\n\n  7. If, as a consequence of a court judgment or allegation of patent\ninfringement or for any other reason (not limited to patent issues),\nconditions are imposed on you (whether by court order, agreement or\notherwise) that contradict the conditions of this License, they do not\nexcuse you from the conditions of this License.  If you cannot\ndistribute so as to satisfy simultaneously your obligations under this\nLicense and any other pertinent obligations, then as a consequence you\nmay not distribute the Program at all.  For example, if a patent\nlicense would not permit royalty-free redistribution of the Program by\nall those who receive copies directly or indirectly through you, then\nthe only way you could satisfy both it and this License would be to\nrefrain entirely from distribution of the Program.\n\nIf any portion of this section is held invalid or unenforceable under\nany particular circumstance, the balance of the section is intended to\napply and the section as a whole is intended to apply in other\ncircumstances.\n\nIt is not the purpose of this section to induce you to infringe any\npatents or other property right claims or to contest validity of any\nsuch claims; this section has the sole purpose of protecting the\nintegrity of the free software distribution system, which is\nimplemented by public license practices.  Many people have made\ngenerous contributions to the wide range of software distributed\nthrough that system in reliance on consistent application of that\nsystem; it is up to the author/donor to decide if he or she is willing\nto distribute software through any other system and a licensee cannot\nimpose that choice.\n\nThis section is intended to make thoroughly clear what is believed to\nbe a consequence of the rest of this License.\n\n  8. If the distribution and/or use of the Program is restricted in\ncertain countries either by patents or by copyrighted interfaces, the\noriginal copyright holder who places the Program under this License\nmay add an explicit geographical distribution limitation excluding\nthose countries, so that distribution is permitted only in or among\ncountries not thus excluded.  In such case, this License incorporates\nthe limitation as if written in the body of this License.\n\n  9. The Free Software Foundation may publish revised and/or new versions\nof the General Public License from time to time.  Such new versions will\nbe similar in spirit to the present version, but may differ in detail to\naddress new problems or concerns.\n\nEach version is given a distinguishing version number.  If the Program\nspecifies a version number of this License which applies to it and \"any\nlater version\", you have the option of following the terms and conditions\neither of that version or of any later version published by the Free\nSoftware Foundation.  If the Program does not specify a version number of\nthis License, you may choose any version ever published by the Free Software\nFoundation.\n\n  10. If you wish to incorporate parts of the Program into other free\nprograms whose distribution conditions are different, write to the author\nto ask for permission.  For software which is copyrighted by the Free\nSoftware Foundation, write to the Free Software Foundation; we sometimes\nmake exceptions for this.  Our decision will be guided by the two goals\nof preserving the free status of all derivatives of our free software and\nof promoting the sharing and reuse of software generally.\n\n                            NO WARRANTY\n\n  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY\nFOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN\nOTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES\nPROVIDE THE PROGRAM \"AS IS\" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED\nOR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF\nMERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS\nTO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE\nPROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,\nREPAIR OR CORRECTION.\n\n  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING\nWILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR\nREDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,\nINCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING\nOUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED\nTO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY\nYOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER\nPROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE\nPOSSIBILITY OF SUCH DAMAGES.\n\n                     END OF TERMS AND CONDITIONS\n\n            How to Apply These Terms to Your New Programs\n\n  If you develop a new program, and you want it to be of the greatest\npossible use to the public, the best way to achieve this is to make it\nfree software which everyone can redistribute and change under these terms.\n\n  To do so, attach the following notices to the program.  It is safest\nto attach them to the start of each source file to most effectively\nconvey the exclusion of warranty; and each file should have at least\nthe \"copyright\" line and a pointer to where the full notice is found.\n\n    <one line to give the program's name and a brief idea of what it does.>\n    Copyright (C) <year>  <name of author>\n\n    This program is free software; you can redistribute it and/or modify\n    it under the terms of the GNU General Public License as published by\n    the Free Software Foundation; either version 2 of the License, or\n    (at your option) any later version.\n\n    This program is distributed in the hope that it will be useful,\n    but WITHOUT ANY WARRANTY; without even the implied warranty of\n    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n    GNU General Public License for more details.\n\n    You should have received a copy of the GNU General Public License along\n    with this program; if not, write to the Free Software Foundation, Inc.,\n    51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.\n\nAlso add information on how to contact you by electronic and paper mail.\n\nIf the program is interactive, make it output a short notice like this\nwhen it starts in an interactive mode:\n\n    Gnomovision version 69, Copyright (C) year name of author\n    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.\n    This is free software, and you are welcome to redistribute it\n    under certain conditions; type `show c' for details.\n\nThe hypothetical commands `show w' and `show c' should show the appropriate\nparts of the General Public License.  Of course, the commands you use may\nbe called something other than `show w' and `show c'; they could even be\nmouse-clicks or menu items--whatever suits your program.\n\nYou should also get your employer (if you work as a programmer) or your\nschool, if any, to sign a \"copyright disclaimer\" for the program, if\nnecessary.  Here is a sample; alter the names:\n\n  Yoyodyne, Inc., hereby disclaims all copyright interest in the program\n  `Gnomovision' (which makes passes at compilers) written by James Hacker.\n\n  <signature of Ty Coon>, 1 April 1989\n  Ty Coon, President of Vice\n\nThis General Public License does not permit incorporating your program into\nproprietary programs.  If your program is a subroutine library, you may\nconsider it more useful to permit linking proprietary applications with the\nlibrary.  If this is what you want to do, use the GNU Lesser General\nPublic License instead of this License.\n"
  },
  {
    "path": "refind/icons/licenses/lgpl-3.0.txt",
    "content": "                   GNU LESSER GENERAL PUBLIC LICENSE\n                       Version 3, 29 June 2007\n\n Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>\n Everyone is permitted to copy and distribute verbatim copies\n of this license document, but changing it is not allowed.\n\n\n  This version of the GNU Lesser General Public License incorporates\nthe terms and conditions of version 3 of the GNU General Public\nLicense, supplemented by the additional permissions listed below.\n\n  0. Additional Definitions.\n\n  As used herein, \"this License\" refers to version 3 of the GNU Lesser\nGeneral Public License, and the \"GNU GPL\" refers to version 3 of the GNU\nGeneral Public License.\n\n  \"The Library\" refers to a covered work governed by this License,\nother than an Application or a Combined Work as defined below.\n\n  An \"Application\" is any work that makes use of an interface provided\nby the Library, but which is not otherwise based on the Library.\nDefining a subclass of a class defined by the Library is deemed a mode\nof using an interface provided by the Library.\n\n  A \"Combined Work\" is a work produced by combining or linking an\nApplication with the Library.  The particular version of the Library\nwith which the Combined Work was made is also called the \"Linked\nVersion\".\n\n  The \"Minimal Corresponding Source\" for a Combined Work means the\nCorresponding Source for the Combined Work, excluding any source code\nfor portions of the Combined Work that, considered in isolation, are\nbased on the Application, and not on the Linked Version.\n\n  The \"Corresponding Application Code\" for a Combined Work means the\nobject code and/or source code for the Application, including any data\nand utility programs needed for reproducing the Combined Work from the\nApplication, but excluding the System Libraries of the Combined Work.\n\n  1. Exception to Section 3 of the GNU GPL.\n\n  You may convey a covered work under sections 3 and 4 of this License\nwithout being bound by section 3 of the GNU GPL.\n\n  2. Conveying Modified Versions.\n\n  If you modify a copy of the Library, and, in your modifications, a\nfacility refers to a function or data to be supplied by an Application\nthat uses the facility (other than as an argument passed when the\nfacility is invoked), then you may convey a copy of the modified\nversion:\n\n   a) under this License, provided that you make a good faith effort to\n   ensure that, in the event an Application does not supply the\n   function or data, the facility still operates, and performs\n   whatever part of its purpose remains meaningful, or\n\n   b) under the GNU GPL, with none of the additional permissions of\n   this License applicable to that copy.\n\n  3. Object Code Incorporating Material from Library Header Files.\n\n  The object code form of an Application may incorporate material from\na header file that is part of the Library.  You may convey such object\ncode under terms of your choice, provided that, if the incorporated\nmaterial is not limited to numerical parameters, data structure\nlayouts and accessors, or small macros, inline functions and templates\n(ten or fewer lines in length), you do both of the following:\n\n   a) Give prominent notice with each copy of the object code that the\n   Library is used in it and that the Library and its use are\n   covered by this License.\n\n   b) Accompany the object code with a copy of the GNU GPL and this license\n   document.\n\n  4. Combined Works.\n\n  You may convey a Combined Work under terms of your choice that,\ntaken together, effectively do not restrict modification of the\nportions of the Library contained in the Combined Work and reverse\nengineering for debugging such modifications, if you also do each of\nthe following:\n\n   a) Give prominent notice with each copy of the Combined Work that\n   the Library is used in it and that the Library and its use are\n   covered by this License.\n\n   b) Accompany the Combined Work with a copy of the GNU GPL and this license\n   document.\n\n   c) For a Combined Work that displays copyright notices during\n   execution, include the copyright notice for the Library among\n   these notices, as well as a reference directing the user to the\n   copies of the GNU GPL and this license document.\n\n   d) Do one of the following:\n\n       0) Convey the Minimal Corresponding Source under the terms of this\n       License, and the Corresponding Application Code in a form\n       suitable for, and under terms that permit, the user to\n       recombine or relink the Application with a modified version of\n       the Linked Version to produce a modified Combined Work, in the\n       manner specified by section 6 of the GNU GPL for conveying\n       Corresponding Source.\n\n       1) Use a suitable shared library mechanism for linking with the\n       Library.  A suitable mechanism is one that (a) uses at run time\n       a copy of the Library already present on the user's computer\n       system, and (b) will operate properly with a modified version\n       of the Library that is interface-compatible with the Linked\n       Version.\n\n   e) Provide Installation Information, but only if you would otherwise\n   be required to provide such information under section 6 of the\n   GNU GPL, and only to the extent that such information is\n   necessary to install and execute a modified version of the\n   Combined Work produced by recombining or relinking the\n   Application with a modified version of the Linked Version. (If\n   you use option 4d0, the Installation Information must accompany\n   the Minimal Corresponding Source and Corresponding Application\n   Code. If you use option 4d1, you must provide the Installation\n   Information in the manner specified by section 6 of the GNU GPL\n   for conveying Corresponding Source.)\n\n  5. Combined Libraries.\n\n  You may place library facilities that are a work based on the\nLibrary side by side in a single library together with other library\nfacilities that are not Applications and are not covered by this\nLicense, and convey such a combined library under terms of your\nchoice, if you do both of the following:\n\n   a) Accompany the combined library with a copy of the same work based\n   on the Library, uncombined with any other library facilities,\n   conveyed under the terms of this License.\n\n   b) Give prominent notice with the combined library that part of it\n   is a work based on the Library, and explaining where to find the\n   accompanying uncombined form of the same work.\n\n  6. Revised Versions of the GNU Lesser General Public License.\n\n  The Free Software Foundation may publish revised and/or new versions\nof the GNU Lesser General Public License from time to time. Such new\nversions will be similar in spirit to the present version, but may\ndiffer in detail to address new problems or concerns.\n\n  Each version is given a distinguishing version number. If the\nLibrary as you received it specifies that a certain numbered version\nof the GNU Lesser General Public License \"or any later version\"\napplies to it, you have the option of following the terms and\nconditions either of that published version or of any later version\npublished by the Free Software Foundation. If the Library as you\nreceived it does not specify a version number of the GNU Lesser\nGeneral Public License, you may choose any version of the GNU Lesser\nGeneral Public License ever published by the Free Software Foundation.\n\n  If the Library as you received it specifies that a proxy can decide\nwhether future versions of the GNU Lesser General Public License shall\napply, that proxy's public statement of acceptance of any version is\npermanent authorization for you to choose that version for the\nLibrary.\n"
  },
  {
    "path": "refind/icons-backup/README",
    "content": "This directory holds icons used by rEFInd. This file describes their\nsources, both in overview and in file-by-file detail, and provides pointers\nto the relevant licenses under which the icons are distributed.\n\nIcon Sources (Overview)\n-----------------------\n\n- The AwOken 2.5 icon set\n  - Source: http://alecive.deviantart.com/art/AwOken-163570862\n  - Copyright (c) 2013 by Alessandro Roncone (aka alecive on DeviantArt)\n  - License: Creative Commons Attribution-Share Alike 3.0 (CC-SA 3.0)\n\n- Original work for rEFInd\n  - Source: https://sourceforge.net/p/refind (this archive)\n  - Copyright (c) 2015 by Roderick W. Smith\n  - License: LGPLv3+ or CC-SA 3.0\n\n- Debian OS icon\n  - Source: https://commons.wikimedia.org/wiki/File:Debian-OpenLogo.svg\n  - Copyright (c) 1999 Debian Project\n  - License: LGPLv3+ or CC-SA 3.0\n\n- Elementary OS icon\n  - Source: https://commons.wikimedia.org/wiki/File:Elementary_logo.svg\n  - Copyright (c) 2008 Dan Rabbit\n  - License: GPLv2+\n\nSome icons have been altered from their original forms -- normally\nconversion from SVG to PNG format, resizing, changes in coloration, or\naddition of \"drop shadow\" effects. Details follow....\n\nThe \"svg\" subdirectory holds SVG versions of some icons (notably absent are\nthose based on the AwOken icon set).\n\nIcon Sources (Detail)\n---------------------\n\nIcons unchanged from AwOken 2.5:\n\nos_centos.png -- AwOken/clear/128x128/start-here/start-here-centos.png\nos_chakra.png -- AwOken/clear/128x128/start-here/start-here-chakra.png\nos_chrome.png -- AwOken/clear/128x128/apps/google-chrome1.png\nos_crunchbang.png -- AwOken/clear/128x128/start-here/start-here-crunchbang3.png\nos_fedora.png -- AwOken/clear/128x128/start-here/start-here-fedora5.png\nos_frugalware.png -- AwOken/clear/128x128/start-here/start-here-frugalware1.png\nos_kubuntu.png -- AwOken/clear/128x128/start-here/start-here-kubuntu.png\nos_lubuntu.png -- AwOken/clear/128x128/start-here/start-here-lubuntu.png\nos_mageia.png -- AwOken/clear/128x128/start-here/start-here-mageia.png\nos_mandriva.png -- AwOken/clear/128x128/start-here/start-here-mandriva5.png\nos_network.png -- AwOken/clear/128x128/places/network-workgroup1.png\nos_ubuntu.png -- AwOken/clear/128x128/start-here/start-here-ubuntu.png\nos_unknown.png -- AwOken/clear/128x128/actions/color-line1.png\nos_win8.png -- AwOken/clear/128x128/apps/live1.png\n\n\nIcons modified from AwOken 2.5:\n\narrow_left.png -- AwOken/clear/128x128/actions/go-previous.png\narrow_right.png -- AwOken/clear/128x128/actions/go-next.png\nboot_linux.png -- AwOken/clear/128x128/apps/supertux.png\nfunc_about.png -- AwOkenWhite/clear/128x128/actions/info2.png\nfunc_exit.png -- AwOkenWhite/clear/128x128/actions/application-exit2.png\nfunc_firmware.png -- AwOkenWhite/clear/128x128/status/indicator-cpufreq.png\nfunc_reset.png -- AwOkenWhite/clear/128x128/apps/gnome-session-reboot2.png\nfunc_shutdown.png -- AwOkenWhite/clear/128x128/apps/gnome-session-halt2.png\nos_arch.png -- AwOkenWhite/clear/128x128/start-here/start-here-arch3.png\nos_clover.png -- AwOkenWhite/clear/128x128/actions/tools-wizard.png\nos_gentoo.png -- AwOken/clear/128x128/start-here/start-here-gentoo.png\nos_hwtest.png -- AwOkenWhite/clear/128x128/apps/hw.png\nos_linux.png -- AwOkenWhite/clear/128x128/apps/supertux.png\nos_linuxmint.png -- AwOkenWhite/clear/128x128/start-here/start-here-mint3.png\nos_opensuse.png -- AwOkenWhite/clear/128x128/start-here/start-here-suse3.png\nos_slackware.png -- AwOkenWhite/clear/128x128/start-here/start-here-slackware1.png\nos_suse.png -- AwOkenWhite/clear/128x128/start-here/start-here-suse3.png\nos_xubuntu.png -- AwOkenWhite/clear/128x128/start-here/start-here-xubuntu1.png\ntool_mok_tool.png -- AwOkenWhite/clear/128x128/apps/gnome-keyring-manager.png\ntool_netboot.png -- AwOken/clear/128x128/places/network-workgroup1.png\ntool_shell.png -- AwOken/clear/128x128/apps/terminal3.png\nvol_external.png -- AwOkenWhite/clear/128x128/devices/drive-removable-media-usb2.png\nvol_internal.png -- AwOken/clear/128/128/drive-harddisk/Internal.png\nvol_net.png -- AwOken/clear/128/128/drive-harddisk/Server.png\nvol_optical.png - AwOken/clear/128x128/devices/media-optical-cd1.png\n\n\nModified Elementary OS icon:\n\nos_elementary.png (GPLv2+)\n\n\nModified Debian OS icon:\n\nos_debian.png (LGPLv3+ or CC-BY-SA 3.0)\n\n\nIcons created by me (Roderick W. Smith):\n\nboot_win.png\nfunc_csr_rotate.png\nos_clover.png\nos_freebsd.png\nos_gummiboot.png\nos_haiku.png\nos_legacy.png\nos_mac.png\nos_netbsd.png\nos_redhat.png\nos_refind.png\nos_refit.png\nos_win.png\ntool_apple_rescue.png\ntool_fwupdate.png\ntool_memtest.png\ntool_rescue.png\ntransparent.png\n\n\nIn addition, some icons are combinations of two other icons from different\nsources:\n\ntool_part.png -- vol_internal.png with AwOken's gparted2.png\ntool_windows_rescue.png: os_win8.png with AwOken's gnome_network_preferences.png\n\n\nLicneses\n--------\n\nThe \"licenses\" subdirectory contains the text of the relevant licenses:\n\nCC-SA 3.0: Creative Commons Legal Code.html\n           (See also https://creativecommons.org/licenses/by-sa/3.0/us/)\n\nGPLv2: gpl-2.0.txt\n       (see also https://www.gnu.org/licenses/old-licenses/gpl-2.0.en.html)\n\nLGPLv3: lgpl-3.0.txt\n        (see also http://www.gnu.org/licenses/lgpl-3.0.en.html)\n"
  },
  {
    "path": "refind/icons-backup/licenses/cc-3.0.txt",
    "content": "Creative Commons Legal Code\n\nAttribution-ShareAlike 3.0 Unported\n\n    CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE\n    LEGAL SERVICES. DISTRIBUTION OF THIS LICENSE DOES NOT CREATE AN\n    ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS\n    INFORMATION ON AN \"AS-IS\" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES\n    REGARDING THE INFORMATION PROVIDED, AND DISCLAIMS LIABILITY FOR\n    DAMAGES RESULTING FROM ITS USE.\n\nLicense\n\nTHE WORK (AS DEFINED BELOW) IS PROVIDED UNDER THE TERMS OF THIS CREATIVE\nCOMMONS PUBLIC LICENSE (\"CCPL\" OR \"LICENSE\"). THE WORK IS PROTECTED BY\nCOPYRIGHT AND/OR OTHER APPLICABLE LAW. ANY USE OF THE WORK OTHER THAN AS\nAUTHORIZED UNDER THIS LICENSE OR COPYRIGHT LAW IS PROHIBITED.\n\nBY EXERCISING ANY RIGHTS TO THE WORK PROVIDED HERE, YOU ACCEPT AND AGREE\nTO BE BOUND BY THE TERMS OF THIS LICENSE. TO THE EXTENT THIS LICENSE MAY\nBE CONSIDERED TO BE A CONTRACT, THE LICENSOR GRANTS YOU THE RIGHTS\nCONTAINED HERE IN CONSIDERATION OF YOUR ACCEPTANCE OF SUCH TERMS AND\nCONDITIONS.\n\n1. Definitions\n\n a. \"Adaptation\" means a work based upon the Work, or upon the Work and\n    other pre-existing works, such as a translation, adaptation,\n    derivative work, arrangement of music or other alterations of a\n    literary or artistic work, or phonogram or performance and includes\n    cinematographic adaptations or any other form in which the Work may be\n    recast, transformed, or adapted including in any form recognizably\n    derived from the original, except that a work that constitutes a\n    Collection will not be considered an Adaptation for the purpose of\n    this License. For the avoidance of doubt, where the Work is a musical\n    work, performance or phonogram, the synchronization of the Work in\n    timed-relation with a moving image (\"synching\") will be considered an\n    Adaptation for the purpose of this License.\n b. \"Collection\" means a collection of literary or artistic works, such as\n    encyclopedias and anthologies, or performances, phonograms or\n    broadcasts, or other works or subject matter other than works listed\n    in Section 1(f) below, which, by reason of the selection and\n    arrangement of their contents, constitute intellectual creations, in\n    which the Work is included in its entirety in unmodified form along\n    with one or more other contributions, each constituting separate and\n    independent works in themselves, which together are assembled into a\n    collective whole. A work that constitutes a Collection will not be\n    considered an Adaptation (as defined below) for the purposes of this\n    License.\n c. \"Creative Commons Compatible License\" means a license that is listed\n    at https://creativecommons.org/compatiblelicenses that has been\n    approved by Creative Commons as being essentially equivalent to this\n    License, including, at a minimum, because that license: (i) contains\n    terms that have the same purpose, meaning and effect as the License\n    Elements of this License; and, (ii) explicitly permits the relicensing\n    of adaptations of works made available under that license under this\n    License or a Creative Commons jurisdiction license with the same\n    License Elements as this License.\n d. \"Distribute\" means to make available to the public the original and\n    copies of the Work or Adaptation, as appropriate, through sale or\n    other transfer of ownership.\n e. \"License Elements\" means the following high-level license attributes\n    as selected by Licensor and indicated in the title of this License:\n    Attribution, ShareAlike.\n f. \"Licensor\" means the individual, individuals, entity or entities that\n    offer(s) the Work under the terms of this License.\n g. \"Original Author\" means, in the case of a literary or artistic work,\n    the individual, individuals, entity or entities who created the Work\n    or if no individual or entity can be identified, the publisher; and in\n    addition (i) in the case of a performance the actors, singers,\n    musicians, dancers, and other persons who act, sing, deliver, declaim,\n    play in, interpret or otherwise perform literary or artistic works or\n    expressions of folklore; (ii) in the case of a phonogram the producer\n    being the person or legal entity who first fixes the sounds of a\n    performance or other sounds; and, (iii) in the case of broadcasts, the\n    organization that transmits the broadcast.\n h. \"Work\" means the literary and/or artistic work offered under the terms\n    of this License including without limitation any production in the\n    literary, scientific and artistic domain, whatever may be the mode or\n    form of its expression including digital form, such as a book,\n    pamphlet and other writing; a lecture, address, sermon or other work\n    of the same nature; a dramatic or dramatico-musical work; a\n    choreographic work or entertainment in dumb show; a musical\n    composition with or without words; a cinematographic work to which are\n    assimilated works expressed by a process analogous to cinematography;\n    a work of drawing, painting, architecture, sculpture, engraving or\n    lithography; a photographic work to which are assimilated works\n    expressed by a process analogous to photography; a work of applied\n    art; an illustration, map, plan, sketch or three-dimensional work\n    relative to geography, topography, architecture or science; a\n    performance; a broadcast; a phonogram; a compilation of data to the\n    extent it is protected as a copyrightable work; or a work performed by\n    a variety or circus performer to the extent it is not otherwise\n    considered a literary or artistic work.\n i. \"You\" means an individual or entity exercising rights under this\n    License who has not previously violated the terms of this License with\n    respect to the Work, or who has received express permission from the\n    Licensor to exercise rights under this License despite a previous\n    violation.\n j. \"Publicly Perform\" means to perform public recitations of the Work and\n    to communicate to the public those public recitations, by any means or\n    process, including by wire or wireless means or public digital\n    performances; to make available to the public Works in such a way that\n    members of the public may access these Works from a place and at a\n    place individually chosen by them; to perform the Work to the public\n    by any means or process and the communication to the public of the\n    performances of the Work, including by public digital performance; to\n    broadcast and rebroadcast the Work by any means including signs,\n    sounds or images.\n k. \"Reproduce\" means to make copies of the Work by any means including\n    without limitation by sound or visual recordings and the right of\n    fixation and reproducing fixations of the Work, including storage of a\n    protected performance or phonogram in digital form or other electronic\n    medium.\n\n2. Fair Dealing Rights. Nothing in this License is intended to reduce,\nlimit, or restrict any uses free from copyright or rights arising from\nlimitations or exceptions that are provided for in connection with the\ncopyright protection under copyright law or other applicable laws.\n\n3. License Grant. Subject to the terms and conditions of this License,\nLicensor hereby grants You a worldwide, royalty-free, non-exclusive,\nperpetual (for the duration of the applicable copyright) license to\nexercise the rights in the Work as stated below:\n\n a. to Reproduce the Work, to incorporate the Work into one or more\n    Collections, and to Reproduce the Work as incorporated in the\n    Collections;\n b. to create and Reproduce Adaptations provided that any such Adaptation,\n    including any translation in any medium, takes reasonable steps to\n    clearly label, demarcate or otherwise identify that changes were made\n    to the original Work. For example, a translation could be marked \"The\n    original work was translated from English to Spanish,\" or a\n    modification could indicate \"The original work has been modified.\";\n c. to Distribute and Publicly Perform the Work including as incorporated\n    in Collections; and,\n d. to Distribute and Publicly Perform Adaptations.\n e. For the avoidance of doubt:\n\n     i. Non-waivable Compulsory License Schemes. In those jurisdictions in\n        which the right to collect royalties through any statutory or\n        compulsory licensing scheme cannot be waived, the Licensor\n        reserves the exclusive right to collect such royalties for any\n        exercise by You of the rights granted under this License;\n    ii. Waivable Compulsory License Schemes. In those jurisdictions in\n        which the right to collect royalties through any statutory or\n        compulsory licensing scheme can be waived, the Licensor waives the\n        exclusive right to collect such royalties for any exercise by You\n        of the rights granted under this License; and,\n   iii. Voluntary License Schemes. The Licensor waives the right to\n        collect royalties, whether individually or, in the event that the\n        Licensor is a member of a collecting society that administers\n        voluntary licensing schemes, via that society, from any exercise\n        by You of the rights granted under this License.\n\nThe above rights may be exercised in all media and formats whether now\nknown or hereafter devised. The above rights include the right to make\nsuch modifications as are technically necessary to exercise the rights in\nother media and formats. Subject to Section 8(f), all rights not expressly\ngranted by Licensor are hereby reserved.\n\n4. Restrictions. The license granted in Section 3 above is expressly made\nsubject to and limited by the following restrictions:\n\n a. You may Distribute or Publicly Perform the Work only under the terms\n    of this License. You must include a copy of, or the Uniform Resource\n    Identifier (URI) for, this License with every copy of the Work You\n    Distribute or Publicly Perform. You may not offer or impose any terms\n    on the Work that restrict the terms of this License or the ability of\n    the recipient of the Work to exercise the rights granted to that\n    recipient under the terms of the License. You may not sublicense the\n    Work. You must keep intact all notices that refer to this License and\n    to the disclaimer of warranties with every copy of the Work You\n    Distribute or Publicly Perform. When You Distribute or Publicly\n    Perform the Work, You may not impose any effective technological\n    measures on the Work that restrict the ability of a recipient of the\n    Work from You to exercise the rights granted to that recipient under\n    the terms of the License. This Section 4(a) applies to the Work as\n    incorporated in a Collection, but this does not require the Collection\n    apart from the Work itself to be made subject to the terms of this\n    License. If You create a Collection, upon notice from any Licensor You\n    must, to the extent practicable, remove from the Collection any credit\n    as required by Section 4(c), as requested. If You create an\n    Adaptation, upon notice from any Licensor You must, to the extent\n    practicable, remove from the Adaptation any credit as required by\n    Section 4(c), as requested.\n b. You may Distribute or Publicly Perform an Adaptation only under the\n    terms of: (i) this License; (ii) a later version of this License with\n    the same License Elements as this License; (iii) a Creative Commons\n    jurisdiction license (either this or a later license version) that\n    contains the same License Elements as this License (e.g.,\n    Attribution-ShareAlike 3.0 US)); (iv) a Creative Commons Compatible\n    License. If you license the Adaptation under one of the licenses\n    mentioned in (iv), you must comply with the terms of that license. If\n    you license the Adaptation under the terms of any of the licenses\n    mentioned in (i), (ii) or (iii) (the \"Applicable License\"), you must\n    comply with the terms of the Applicable License generally and the\n    following provisions: (I) You must include a copy of, or the URI for,\n    the Applicable License with every copy of each Adaptation You\n    Distribute or Publicly Perform; (II) You may not offer or impose any\n    terms on the Adaptation that restrict the terms of the Applicable\n    License or the ability of the recipient of the Adaptation to exercise\n    the rights granted to that recipient under the terms of the Applicable\n    License; (III) You must keep intact all notices that refer to the\n    Applicable License and to the disclaimer of warranties with every copy\n    of the Work as included in the Adaptation You Distribute or Publicly\n    Perform; (IV) when You Distribute or Publicly Perform the Adaptation,\n    You may not impose any effective technological measures on the\n    Adaptation that restrict the ability of a recipient of the Adaptation\n    from You to exercise the rights granted to that recipient under the\n    terms of the Applicable License. This Section 4(b) applies to the\n    Adaptation as incorporated in a Collection, but this does not require\n    the Collection apart from the Adaptation itself to be made subject to\n    the terms of the Applicable License.\n c. If You Distribute, or Publicly Perform the Work or any Adaptations or\n    Collections, You must, unless a request has been made pursuant to\n    Section 4(a), keep intact all copyright notices for the Work and\n    provide, reasonable to the medium or means You are utilizing: (i) the\n    name of the Original Author (or pseudonym, if applicable) if supplied,\n    and/or if the Original Author and/or Licensor designate another party\n    or parties (e.g., a sponsor institute, publishing entity, journal) for\n    attribution (\"Attribution Parties\") in Licensor's copyright notice,\n    terms of service or by other reasonable means, the name of such party\n    or parties; (ii) the title of the Work if supplied; (iii) to the\n    extent reasonably practicable, the URI, if any, that Licensor\n    specifies to be associated with the Work, unless such URI does not\n    refer to the copyright notice or licensing information for the Work;\n    and (iv) , consistent with Ssection 3(b), in the case of an\n    Adaptation, a credit identifying the use of the Work in the Adaptation\n    (e.g., \"French translation of the Work by Original Author,\" or\n    \"Screenplay based on original Work by Original Author\"). The credit\n    required by this Section 4(c) may be implemented in any reasonable\n    manner; provided, however, that in the case of a Adaptation or\n    Collection, at a minimum such credit will appear, if a credit for all\n    contributing authors of the Adaptation or Collection appears, then as\n    part of these credits and in a manner at least as prominent as the\n    credits for the other contributing authors. For the avoidance of\n    doubt, You may only use the credit required by this Section for the\n    purpose of attribution in the manner set out above and, by exercising\n    Your rights under this License, You may not implicitly or explicitly\n    assert or imply any connection with, sponsorship or endorsement by the\n    Original Author, Licensor and/or Attribution Parties, as appropriate,\n    of You or Your use of the Work, without the separate, express prior\n    written permission of the Original Author, Licensor and/or Attribution\n    Parties.\n d. Except as otherwise agreed in writing by the Licensor or as may be\n    otherwise permitted by applicable law, if You Reproduce, Distribute or\n    Publicly Perform the Work either by itself or as part of any\n    Adaptations or Collections, You must not distort, mutilate, modify or\n    take other derogatory action in relation to the Work which would be\n    prejudicial to the Original Author's honor or reputation. Licensor\n    agrees that in those jurisdictions (e.g. Japan), in which any exercise\n    of the right granted in Section 3(b) of this License (the right to\n    make Adaptations) would be deemed to be a distortion, mutilation,\n    modification or other derogatory action prejudicial to the Original\n    Author's honor and reputation, the Licensor will waive or not assert,\n    as appropriate, this Section, to the fullest extent permitted by the\n    applicable national law, to enable You to reasonably exercise Your\n    right under Section 3(b) of this License (right to make Adaptations)\n    but not otherwise.\n\n5. Representations, Warranties and Disclaimer\n\nUNLESS OTHERWISE MUTUALLY AGREED TO BY THE PARTIES IN WRITING, LICENSOR\nOFFERS THE WORK AS-IS AND MAKES NO REPRESENTATIONS OR WARRANTIES OF ANY\nKIND CONCERNING THE WORK, EXPRESS, IMPLIED, STATUTORY OR OTHERWISE,\nINCLUDING, WITHOUT LIMITATION, WARRANTIES OF TITLE, MERCHANTIBILITY,\nFITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT, OR THE ABSENCE OF\nLATENT OR OTHER DEFECTS, ACCURACY, OR THE PRESENCE OF ABSENCE OF ERRORS,\nWHETHER OR NOT DISCOVERABLE. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION\nOF IMPLIED WARRANTIES, SO SUCH EXCLUSION MAY NOT APPLY TO YOU.\n\n6. Limitation on Liability. EXCEPT TO THE EXTENT REQUIRED BY APPLICABLE\nLAW, IN NO EVENT WILL LICENSOR BE LIABLE TO YOU ON ANY LEGAL THEORY FOR\nANY SPECIAL, INCIDENTAL, CONSEQUENTIAL, PUNITIVE OR EXEMPLARY DAMAGES\nARISING OUT OF THIS LICENSE OR THE USE OF THE WORK, EVEN IF LICENSOR HAS\nBEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.\n\n7. Termination\n\n a. This License and the rights granted hereunder will terminate\n    automatically upon any breach by You of the terms of this License.\n    Individuals or entities who have received Adaptations or Collections\n    from You under this License, however, will not have their licenses\n    terminated provided such individuals or entities remain in full\n    compliance with those licenses. Sections 1, 2, 5, 6, 7, and 8 will\n    survive any termination of this License.\n b. Subject to the above terms and conditions, the license granted here is\n    perpetual (for the duration of the applicable copyright in the Work).\n    Notwithstanding the above, Licensor reserves the right to release the\n    Work under different license terms or to stop distributing the Work at\n    any time; provided, however that any such election will not serve to\n    withdraw this License (or any other license that has been, or is\n    required to be, granted under the terms of this License), and this\n    License will continue in full force and effect unless terminated as\n    stated above.\n\n8. Miscellaneous\n\n a. Each time You Distribute or Publicly Perform the Work or a Collection,\n    the Licensor offers to the recipient a license to the Work on the same\n    terms and conditions as the license granted to You under this License.\n b. Each time You Distribute or Publicly Perform an Adaptation, Licensor\n    offers to the recipient a license to the original Work on the same\n    terms and conditions as the license granted to You under this License.\n c. If any provision of this License is invalid or unenforceable under\n    applicable law, it shall not affect the validity or enforceability of\n    the remainder of the terms of this License, and without further action\n    by the parties to this agreement, such provision shall be reformed to\n    the minimum extent necessary to make such provision valid and\n    enforceable.\n d. No term or provision of this License shall be deemed waived and no\n    breach consented to unless such waiver or consent shall be in writing\n    and signed by the party to be charged with such waiver or consent.\n e. This License constitutes the entire agreement between the parties with\n    respect to the Work licensed here. There are no understandings,\n    agreements or representations with respect to the Work not specified\n    here. Licensor shall not be bound by any additional provisions that\n    may appear in any communication from You. This License may not be\n    modified without the mutual written agreement of the Licensor and You.\n f. The rights granted under, and the subject matter referenced, in this\n    License were drafted utilizing the terminology of the Berne Convention\n    for the Protection of Literary and Artistic Works (as amended on\n    September 28, 1979), the Rome Convention of 1961, the WIPO Copyright\n    Treaty of 1996, the WIPO Performances and Phonograms Treaty of 1996\n    and the Universal Copyright Convention (as revised on July 24, 1971).\n    These rights and subject matter take effect in the relevant\n    jurisdiction in which the License terms are sought to be enforced\n    according to the corresponding provisions of the implementation of\n    those treaty provisions in the applicable national law. If the\n    standard suite of rights granted under applicable copyright law\n    includes additional rights not granted under this License, such\n    additional rights are deemed to be included in the License; this\n    License is not intended to restrict the license of any rights under\n    applicable law.\n\n\nCreative Commons Notice\n\n    Creative Commons is not a party to this License, and makes no warranty\n    whatsoever in connection with the Work. Creative Commons will not be\n    liable to You or any party on any legal theory for any damages\n    whatsoever, including without limitation any general, special,\n    incidental or consequential damages arising in connection to this\n    license. Notwithstanding the foregoing two (2) sentences, if Creative\n    Commons has expressly identified itself as the Licensor hereunder, it\n    shall have all rights and obligations of Licensor.\n\n    Except for the limited purpose of indicating to the public that the\n    Work is licensed under the CCPL, Creative Commons does not authorize\n    the use by either party of the trademark \"Creative Commons\" or any\n    related trademark or logo of Creative Commons without the prior\n    written consent of Creative Commons. Any permitted use will be in\n    compliance with Creative Commons' then-current trademark usage\n    guidelines, as may be published on its website or otherwise made\n    available upon request from time to time. For the avoidance of doubt,\n    this trademark restriction does not form part of the License.\n\n    Creative Commons may be contacted at https://creativecommons.org/.\n"
  },
  {
    "path": "refind/icons-backup/licenses/gpl-2.0.txt",
    "content": "                    GNU GENERAL PUBLIC LICENSE\n                       Version 2, June 1991\n\n Copyright (C) 1989, 1991 Free Software Foundation, Inc.,\n 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA\n Everyone is permitted to copy and distribute verbatim copies\n of this license document, but changing it is not allowed.\n\n                            Preamble\n\n  The licenses for most software are designed to take away your\nfreedom to share and change it.  By contrast, the GNU General Public\nLicense is intended to guarantee your freedom to share and change free\nsoftware--to make sure the software is free for all its users.  This\nGeneral Public License applies to most of the Free Software\nFoundation's software and to any other program whose authors commit to\nusing it.  (Some other Free Software Foundation software is covered by\nthe GNU Lesser General Public License instead.)  You can apply it to\nyour programs, too.\n\n  When we speak of free software, we are referring to freedom, not\nprice.  Our General Public Licenses are designed to make sure that you\nhave the freedom to distribute copies of free software (and charge for\nthis service if you wish), that you receive source code or can get it\nif you want it, that you can change the software or use pieces of it\nin new free programs; and that you know you can do these things.\n\n  To protect your rights, we need to make restrictions that forbid\nanyone to deny you these rights or to ask you to surrender the rights.\nThese restrictions translate to certain responsibilities for you if you\ndistribute copies of the software, or if you modify it.\n\n  For example, if you distribute copies of such a program, whether\ngratis or for a fee, you must give the recipients all the rights that\nyou have.  You must make sure that they, too, receive or can get the\nsource code.  And you must show them these terms so they know their\nrights.\n\n  We protect your rights with two steps: (1) copyright the software, and\n(2) offer you this license which gives you legal permission to copy,\ndistribute and/or modify the software.\n\n  Also, for each author's protection and ours, we want to make certain\nthat everyone understands that there is no warranty for this free\nsoftware.  If the software is modified by someone else and passed on, we\nwant its recipients to know that what they have is not the original, so\nthat any problems introduced by others will not reflect on the original\nauthors' reputations.\n\n  Finally, any free program is threatened constantly by software\npatents.  We wish to avoid the danger that redistributors of a free\nprogram will individually obtain patent licenses, in effect making the\nprogram proprietary.  To prevent this, we have made it clear that any\npatent must be licensed for everyone's free use or not licensed at all.\n\n  The precise terms and conditions for copying, distribution and\nmodification follow.\n\n                    GNU GENERAL PUBLIC LICENSE\n   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION\n\n  0. This License applies to any program or other work which contains\na notice placed by the copyright holder saying it may be distributed\nunder the terms of this General Public License.  The \"Program\", below,\nrefers to any such program or work, and a \"work based on the Program\"\nmeans either the Program or any derivative work under copyright law:\nthat is to say, a work containing the Program or a portion of it,\neither verbatim or with modifications and/or translated into another\nlanguage.  (Hereinafter, translation is included without limitation in\nthe term \"modification\".)  Each licensee is addressed as \"you\".\n\nActivities other than copying, distribution and modification are not\ncovered by this License; they are outside its scope.  The act of\nrunning the Program is not restricted, and the output from the Program\nis covered only if its contents constitute a work based on the\nProgram (independent of having been made by running the Program).\nWhether that is true depends on what the Program does.\n\n  1. You may copy and distribute verbatim copies of the Program's\nsource code as you receive it, in any medium, provided that you\nconspicuously and appropriately publish on each copy an appropriate\ncopyright notice and disclaimer of warranty; keep intact all the\nnotices that refer to this License and to the absence of any warranty;\nand give any other recipients of the Program a copy of this License\nalong with the Program.\n\nYou may charge a fee for the physical act of transferring a copy, and\nyou may at your option offer warranty protection in exchange for a fee.\n\n  2. You may modify your copy or copies of the Program or any portion\nof it, thus forming a work based on the Program, and copy and\ndistribute such modifications or work under the terms of Section 1\nabove, provided that you also meet all of these conditions:\n\n    a) You must cause the modified files to carry prominent notices\n    stating that you changed the files and the date of any change.\n\n    b) You must cause any work that you distribute or publish, that in\n    whole or in part contains or is derived from the Program or any\n    part thereof, to be licensed as a whole at no charge to all third\n    parties under the terms of this License.\n\n    c) If the modified program normally reads commands interactively\n    when run, you must cause it, when started running for such\n    interactive use in the most ordinary way, to print or display an\n    announcement including an appropriate copyright notice and a\n    notice that there is no warranty (or else, saying that you provide\n    a warranty) and that users may redistribute the program under\n    these conditions, and telling the user how to view a copy of this\n    License.  (Exception: if the Program itself is interactive but\n    does not normally print such an announcement, your work based on\n    the Program is not required to print an announcement.)\n\nThese requirements apply to the modified work as a whole.  If\nidentifiable sections of that work are not derived from the Program,\nand can be reasonably considered independent and separate works in\nthemselves, then this License, and its terms, do not apply to those\nsections when you distribute them as separate works.  But when you\ndistribute the same sections as part of a whole which is a work based\non the Program, the distribution of the whole must be on the terms of\nthis License, whose permissions for other licensees extend to the\nentire whole, and thus to each and every part regardless of who wrote it.\n\nThus, it is not the intent of this section to claim rights or contest\nyour rights to work written entirely by you; rather, the intent is to\nexercise the right to control the distribution of derivative or\ncollective works based on the Program.\n\nIn addition, mere aggregation of another work not based on the Program\nwith the Program (or with a work based on the Program) on a volume of\na storage or distribution medium does not bring the other work under\nthe scope of this License.\n\n  3. You may copy and distribute the Program (or a work based on it,\nunder Section 2) in object code or executable form under the terms of\nSections 1 and 2 above provided that you also do one of the following:\n\n    a) Accompany it with the complete corresponding machine-readable\n    source code, which must be distributed under the terms of Sections\n    1 and 2 above on a medium customarily used for software interchange; or,\n\n    b) Accompany it with a written offer, valid for at least three\n    years, to give any third party, for a charge no more than your\n    cost of physically performing source distribution, a complete\n    machine-readable copy of the corresponding source code, to be\n    distributed under the terms of Sections 1 and 2 above on a medium\n    customarily used for software interchange; or,\n\n    c) Accompany it with the information you received as to the offer\n    to distribute corresponding source code.  (This alternative is\n    allowed only for noncommercial distribution and only if you\n    received the program in object code or executable form with such\n    an offer, in accord with Subsection b above.)\n\nThe source code for a work means the preferred form of the work for\nmaking modifications to it.  For an executable work, complete source\ncode means all the source code for all modules it contains, plus any\nassociated interface definition files, plus the scripts used to\ncontrol compilation and installation of the executable.  However, as a\nspecial exception, the source code distributed need not include\nanything that is normally distributed (in either source or binary\nform) with the major components (compiler, kernel, and so on) of the\noperating system on which the executable runs, unless that component\nitself accompanies the executable.\n\nIf distribution of executable or object code is made by offering\naccess to copy from a designated place, then offering equivalent\naccess to copy the source code from the same place counts as\ndistribution of the source code, even though third parties are not\ncompelled to copy the source along with the object code.\n\n  4. You may not copy, modify, sublicense, or distribute the Program\nexcept as expressly provided under this License.  Any attempt\notherwise to copy, modify, sublicense or distribute the Program is\nvoid, and will automatically terminate your rights under this License.\nHowever, parties who have received copies, or rights, from you under\nthis License will not have their licenses terminated so long as such\nparties remain in full compliance.\n\n  5. You are not required to accept this License, since you have not\nsigned it.  However, nothing else grants you permission to modify or\ndistribute the Program or its derivative works.  These actions are\nprohibited by law if you do not accept this License.  Therefore, by\nmodifying or distributing the Program (or any work based on the\nProgram), you indicate your acceptance of this License to do so, and\nall its terms and conditions for copying, distributing or modifying\nthe Program or works based on it.\n\n  6. Each time you redistribute the Program (or any work based on the\nProgram), the recipient automatically receives a license from the\noriginal licensor to copy, distribute or modify the Program subject to\nthese terms and conditions.  You may not impose any further\nrestrictions on the recipients' exercise of the rights granted herein.\nYou are not responsible for enforcing compliance by third parties to\nthis License.\n\n  7. If, as a consequence of a court judgment or allegation of patent\ninfringement or for any other reason (not limited to patent issues),\nconditions are imposed on you (whether by court order, agreement or\notherwise) that contradict the conditions of this License, they do not\nexcuse you from the conditions of this License.  If you cannot\ndistribute so as to satisfy simultaneously your obligations under this\nLicense and any other pertinent obligations, then as a consequence you\nmay not distribute the Program at all.  For example, if a patent\nlicense would not permit royalty-free redistribution of the Program by\nall those who receive copies directly or indirectly through you, then\nthe only way you could satisfy both it and this License would be to\nrefrain entirely from distribution of the Program.\n\nIf any portion of this section is held invalid or unenforceable under\nany particular circumstance, the balance of the section is intended to\napply and the section as a whole is intended to apply in other\ncircumstances.\n\nIt is not the purpose of this section to induce you to infringe any\npatents or other property right claims or to contest validity of any\nsuch claims; this section has the sole purpose of protecting the\nintegrity of the free software distribution system, which is\nimplemented by public license practices.  Many people have made\ngenerous contributions to the wide range of software distributed\nthrough that system in reliance on consistent application of that\nsystem; it is up to the author/donor to decide if he or she is willing\nto distribute software through any other system and a licensee cannot\nimpose that choice.\n\nThis section is intended to make thoroughly clear what is believed to\nbe a consequence of the rest of this License.\n\n  8. If the distribution and/or use of the Program is restricted in\ncertain countries either by patents or by copyrighted interfaces, the\noriginal copyright holder who places the Program under this License\nmay add an explicit geographical distribution limitation excluding\nthose countries, so that distribution is permitted only in or among\ncountries not thus excluded.  In such case, this License incorporates\nthe limitation as if written in the body of this License.\n\n  9. The Free Software Foundation may publish revised and/or new versions\nof the General Public License from time to time.  Such new versions will\nbe similar in spirit to the present version, but may differ in detail to\naddress new problems or concerns.\n\nEach version is given a distinguishing version number.  If the Program\nspecifies a version number of this License which applies to it and \"any\nlater version\", you have the option of following the terms and conditions\neither of that version or of any later version published by the Free\nSoftware Foundation.  If the Program does not specify a version number of\nthis License, you may choose any version ever published by the Free Software\nFoundation.\n\n  10. If you wish to incorporate parts of the Program into other free\nprograms whose distribution conditions are different, write to the author\nto ask for permission.  For software which is copyrighted by the Free\nSoftware Foundation, write to the Free Software Foundation; we sometimes\nmake exceptions for this.  Our decision will be guided by the two goals\nof preserving the free status of all derivatives of our free software and\nof promoting the sharing and reuse of software generally.\n\n                            NO WARRANTY\n\n  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY\nFOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN\nOTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES\nPROVIDE THE PROGRAM \"AS IS\" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED\nOR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF\nMERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS\nTO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE\nPROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,\nREPAIR OR CORRECTION.\n\n  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING\nWILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR\nREDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,\nINCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING\nOUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED\nTO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY\nYOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER\nPROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE\nPOSSIBILITY OF SUCH DAMAGES.\n\n                     END OF TERMS AND CONDITIONS\n\n            How to Apply These Terms to Your New Programs\n\n  If you develop a new program, and you want it to be of the greatest\npossible use to the public, the best way to achieve this is to make it\nfree software which everyone can redistribute and change under these terms.\n\n  To do so, attach the following notices to the program.  It is safest\nto attach them to the start of each source file to most effectively\nconvey the exclusion of warranty; and each file should have at least\nthe \"copyright\" line and a pointer to where the full notice is found.\n\n    <one line to give the program's name and a brief idea of what it does.>\n    Copyright (C) <year>  <name of author>\n\n    This program is free software; you can redistribute it and/or modify\n    it under the terms of the GNU General Public License as published by\n    the Free Software Foundation; either version 2 of the License, or\n    (at your option) any later version.\n\n    This program is distributed in the hope that it will be useful,\n    but WITHOUT ANY WARRANTY; without even the implied warranty of\n    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n    GNU General Public License for more details.\n\n    You should have received a copy of the GNU General Public License along\n    with this program; if not, write to the Free Software Foundation, Inc.,\n    51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.\n\nAlso add information on how to contact you by electronic and paper mail.\n\nIf the program is interactive, make it output a short notice like this\nwhen it starts in an interactive mode:\n\n    Gnomovision version 69, Copyright (C) year name of author\n    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.\n    This is free software, and you are welcome to redistribute it\n    under certain conditions; type `show c' for details.\n\nThe hypothetical commands `show w' and `show c' should show the appropriate\nparts of the General Public License.  Of course, the commands you use may\nbe called something other than `show w' and `show c'; they could even be\nmouse-clicks or menu items--whatever suits your program.\n\nYou should also get your employer (if you work as a programmer) or your\nschool, if any, to sign a \"copyright disclaimer\" for the program, if\nnecessary.  Here is a sample; alter the names:\n\n  Yoyodyne, Inc., hereby disclaims all copyright interest in the program\n  `Gnomovision' (which makes passes at compilers) written by James Hacker.\n\n  <signature of Ty Coon>, 1 April 1989\n  Ty Coon, President of Vice\n\nThis General Public License does not permit incorporating your program into\nproprietary programs.  If your program is a subroutine library, you may\nconsider it more useful to permit linking proprietary applications with the\nlibrary.  If this is what you want to do, use the GNU Lesser General\nPublic License instead of this License.\n"
  },
  {
    "path": "refind/icons-backup/licenses/lgpl-3.0.txt",
    "content": "                   GNU LESSER GENERAL PUBLIC LICENSE\n                       Version 3, 29 June 2007\n\n Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>\n Everyone is permitted to copy and distribute verbatim copies\n of this license document, but changing it is not allowed.\n\n\n  This version of the GNU Lesser General Public License incorporates\nthe terms and conditions of version 3 of the GNU General Public\nLicense, supplemented by the additional permissions listed below.\n\n  0. Additional Definitions.\n\n  As used herein, \"this License\" refers to version 3 of the GNU Lesser\nGeneral Public License, and the \"GNU GPL\" refers to version 3 of the GNU\nGeneral Public License.\n\n  \"The Library\" refers to a covered work governed by this License,\nother than an Application or a Combined Work as defined below.\n\n  An \"Application\" is any work that makes use of an interface provided\nby the Library, but which is not otherwise based on the Library.\nDefining a subclass of a class defined by the Library is deemed a mode\nof using an interface provided by the Library.\n\n  A \"Combined Work\" is a work produced by combining or linking an\nApplication with the Library.  The particular version of the Library\nwith which the Combined Work was made is also called the \"Linked\nVersion\".\n\n  The \"Minimal Corresponding Source\" for a Combined Work means the\nCorresponding Source for the Combined Work, excluding any source code\nfor portions of the Combined Work that, considered in isolation, are\nbased on the Application, and not on the Linked Version.\n\n  The \"Corresponding Application Code\" for a Combined Work means the\nobject code and/or source code for the Application, including any data\nand utility programs needed for reproducing the Combined Work from the\nApplication, but excluding the System Libraries of the Combined Work.\n\n  1. Exception to Section 3 of the GNU GPL.\n\n  You may convey a covered work under sections 3 and 4 of this License\nwithout being bound by section 3 of the GNU GPL.\n\n  2. Conveying Modified Versions.\n\n  If you modify a copy of the Library, and, in your modifications, a\nfacility refers to a function or data to be supplied by an Application\nthat uses the facility (other than as an argument passed when the\nfacility is invoked), then you may convey a copy of the modified\nversion:\n\n   a) under this License, provided that you make a good faith effort to\n   ensure that, in the event an Application does not supply the\n   function or data, the facility still operates, and performs\n   whatever part of its purpose remains meaningful, or\n\n   b) under the GNU GPL, with none of the additional permissions of\n   this License applicable to that copy.\n\n  3. Object Code Incorporating Material from Library Header Files.\n\n  The object code form of an Application may incorporate material from\na header file that is part of the Library.  You may convey such object\ncode under terms of your choice, provided that, if the incorporated\nmaterial is not limited to numerical parameters, data structure\nlayouts and accessors, or small macros, inline functions and templates\n(ten or fewer lines in length), you do both of the following:\n\n   a) Give prominent notice with each copy of the object code that the\n   Library is used in it and that the Library and its use are\n   covered by this License.\n\n   b) Accompany the object code with a copy of the GNU GPL and this license\n   document.\n\n  4. Combined Works.\n\n  You may convey a Combined Work under terms of your choice that,\ntaken together, effectively do not restrict modification of the\nportions of the Library contained in the Combined Work and reverse\nengineering for debugging such modifications, if you also do each of\nthe following:\n\n   a) Give prominent notice with each copy of the Combined Work that\n   the Library is used in it and that the Library and its use are\n   covered by this License.\n\n   b) Accompany the Combined Work with a copy of the GNU GPL and this license\n   document.\n\n   c) For a Combined Work that displays copyright notices during\n   execution, include the copyright notice for the Library among\n   these notices, as well as a reference directing the user to the\n   copies of the GNU GPL and this license document.\n\n   d) Do one of the following:\n\n       0) Convey the Minimal Corresponding Source under the terms of this\n       License, and the Corresponding Application Code in a form\n       suitable for, and under terms that permit, the user to\n       recombine or relink the Application with a modified version of\n       the Linked Version to produce a modified Combined Work, in the\n       manner specified by section 6 of the GNU GPL for conveying\n       Corresponding Source.\n\n       1) Use a suitable shared library mechanism for linking with the\n       Library.  A suitable mechanism is one that (a) uses at run time\n       a copy of the Library already present on the user's computer\n       system, and (b) will operate properly with a modified version\n       of the Library that is interface-compatible with the Linked\n       Version.\n\n   e) Provide Installation Information, but only if you would otherwise\n   be required to provide such information under section 6 of the\n   GNU GPL, and only to the extent that such information is\n   necessary to install and execute a modified version of the\n   Combined Work produced by recombining or relinking the\n   Application with a modified version of the Linked Version. (If\n   you use option 4d0, the Installation Information must accompany\n   the Minimal Corresponding Source and Corresponding Application\n   Code. If you use option 4d1, you must provide the Installation\n   Information in the manner specified by section 6 of the GNU GPL\n   for conveying Corresponding Source.)\n\n  5. Combined Libraries.\n\n  You may place library facilities that are a work based on the\nLibrary side by side in a single library together with other library\nfacilities that are not Applications and are not covered by this\nLicense, and convey such a combined library under terms of your\nchoice, if you do both of the following:\n\n   a) Accompany the combined library with a copy of the same work based\n   on the Library, uncombined with any other library facilities,\n   conveyed under the terms of this License.\n\n   b) Give prominent notice with the combined library that part of it\n   is a work based on the Library, and explaining where to find the\n   accompanying uncombined form of the same work.\n\n  6. Revised Versions of the GNU Lesser General Public License.\n\n  The Free Software Foundation may publish revised and/or new versions\nof the GNU Lesser General Public License from time to time. Such new\nversions will be similar in spirit to the present version, but may\ndiffer in detail to address new problems or concerns.\n\n  Each version is given a distinguishing version number. If the\nLibrary as you received it specifies that a certain numbered version\nof the GNU Lesser General Public License \"or any later version\"\napplies to it, you have the option of following the terms and\nconditions either of that published version or of any later version\npublished by the Free Software Foundation. If the Library as you\nreceived it does not specify a version number of the GNU Lesser\nGeneral Public License, you may choose any version of the GNU Lesser\nGeneral Public License ever published by the Free Software Foundation.\n\n  If the Library as you received it specifies that a proxy can decide\nwhether future versions of the GNU Lesser General Public License shall\napply, that proxy's public statement of acceptance of any version is\npermanent authorization for you to choose that version for the\nLibrary.\n"
  },
  {
    "path": "refind/refind.conf",
    "content": "#\n# refind.conf\n# Configuration file for the rEFInd boot menu\n#\n\n# Timeout in seconds for the main menu screen. Setting the timeout to 0\n# disables automatic booting (i.e., no timeout). Setting it to -1 causes\n# an immediate boot to the default OS *UNLESS* a keypress is in the buffer\n# when rEFInd launches, in which case that keypress is interpreted as a\n# shortcut key. If no matching shortcut is found, rEFInd displays its\n# menu with no timeout.\n#\ntimeout 20\n\n# Screen saver timeout; the screen blanks after the specified number of\n# seconds with no keyboard input. The screen returns after most keypresses\n# (unfortunately, not including modifier keys such as Shift, Control, Alt,\n# or Option). Setting a value of \"-1\" causes rEFInd to start up with its\n# screen saver active. The default is 0, which disables the screen saver.\n#screensaver 300\n\n# Hide user interface elements for personal preference or to increase\n# security:\n#  banner      - the rEFInd title banner (built-in or loaded via \"banner\")\n#  label       - boot option text label in the menu\n#  singleuser  - remove the submenu options to boot Mac OS X in single-user\n#                or verbose modes; affects ONLY MacOS X\n#  safemode    - remove the submenu option to boot Mac OS X in \"safe mode\"\n#  hwtest      - the submenu option to run Apple's hardware test\n#  arrows      - scroll arrows on the OS selection tag line\n#  hints       - brief command summary in the menu\n#  editor      - the options editor (+, F2, or Insert on boot options menu)\n#  badges      - device-type badges for boot options\n#  all         - all of the above\n# Default is none of these (all elements active)\n#\n#hideui singleuser\n#hideui all\n\n# Set the name of a subdirectory in which icons are stored. Icons must\n# have the same names they have in the standard directory. The directory\n# name is specified relative to the main rEFInd binary's directory. If\n# an icon can't be found in the specified directory, an attempt is made\n# to load it from the default directory; thus, you can replace just some\n# icons in your own directory and rely on the default for others.\n# Default is \"icons\".\n#\n#icons_dir myicons\n#icons_dir icons/snowy\n\n# Use a custom title banner instead of the rEFInd icon and name. The file\n# path is relative to the directory where refind.efi is located. The color\n# in the top left corner of the image is used as the background color\n# for the menu screens. Currently uncompressed BMP images with color\n# depths of 24, 8, 4 or 1 bits are supported, as well as PNG images.\n#\n#banner hostname.bmp\n#banner mybanner.png\n#banner icons/snowy/banner-snowy.png\n\n# Specify how to handle banners that aren't exactly the same as the screen\n# size:\n#  noscale     - Crop if too big, show with border if too small\n#  fillscreen  - Fill the screen\n# Default is noscale\n#\n#banner_scale fillscreen\n\n# Icon sizes. All icons are square, so just one value is specified. The\n# big icons are used for OS selectors in the first row and the small\n# icons are used for tools on the second row. Drive-type badges are 1/4\n# the size of the big icons. Legal values are 32 and above. If the icon\n# files do not hold icons of the proper size, the icons are scaled to\n# the specified size. The default values are 48 and 128 for small and\n# big icons, respectively.\n#\n#small_icon_size 96\n#big_icon_size 256\n\n# Custom images for the selection background. There is a big one (144 x 144)\n# for the OS icons, and a small one (64 x 64) for the function icons in the\n# second row. If only a small image is given, that one is also used for\n# the big icons by stretching it in the middle. If only a big one is given,\n# the built-in default will be used for the small icons.\n#\n# Like the banner option above, these options take a filename of an\n# uncompressed BMP image file with a color depth of 24, 8, 4, or 1 bits,\n# or a PNG image. The PNG format is required if you need transparency\n# support (to let you \"see through\" to a full-screen banner).\n#\n#selection_big   selection-big.bmp\n#selection_small selection-small.bmp\n\n# Set the font to be used for all textual displays in graphics mode.\n# The font must be a PNG file with alpha channel transparency. It must\n# contain ASCII characters 32-126 (space through tilde), inclusive, plus\n# a glyph to be displayed in place of characters outside of this range,\n# for a total of 96 glyphs. Only monospaced fonts are supported. Fonts\n# may be of any size, although large fonts can produce display\n# irregularities.\n# The default is rEFInd's built-in font, Luxi Mono Regular 12 point.\n#\n#font myfont.png\n\n# Use text mode only. When enabled, this option forces rEFInd into text mode.\n# Passing this option a \"0\" value causes graphics mode to be used. Pasing\n# it no value or any non-0 value causes text mode to be used.\n# Default is to use graphics mode.\n#\n#textonly\n\n# Set the EFI text mode to be used for textual displays. This option\n# takes a single digit that refers to a mode number. Mode 0 is normally\n# 80x25, 1 is sometimes 80x50, and higher numbers are system-specific\n# modes. Mode 1024 is a special code that tells rEFInd to not set the\n# text mode; it uses whatever was in use when the program was launched.\n# If you specify an invalid mode, rEFInd pauses during boot to inform\n# you of valid modes.\n# CAUTION: On VirtualBox, and perhaps on some real computers, specifying\n# a text mode and uncommenting the \"textonly\" option while NOT specifying\n# a resolution can result in an unusable display in the booted OS.\n# Default is 1024 (no change)\n#\n#textmode 2\n\n# Set the screen's video resolution. Pass this option either:\n#  * two values, corresponding to the X and Y resolutions\n#  * one value, corresponding to a GOP (UEFI) video mode\n# Note that not all resolutions are supported. On UEFI systems, passing\n# an incorrect value results in a message being shown on the screen to\n# that effect, along with a list of supported modes. On EFI 1.x systems\n# (e.g., Macintoshes), setting an incorrect mode silently fails. On both\n# types of systems, setting an incorrect resolution results in the default\n# resolution being used. A resolution of 1024x768 usually works, but higher\n# values often don't.\n# Default is \"0 0\" (use the system default resolution, usually 800x600).\n#\n#resolution 1024 768\n#resolution 1440 900\n#resolution 3\n\n# Enable touch screen support. If active, this feature enables use of\n# touch screen controls (as on tablets). Note, however, that not all\n# tablets' EFIs provide the necessary underlying support, so this\n# feature may not work for you. If it does work, you should be able\n# to launch an OS or tool by touching it. In a submenu, touching\n# anywhere launches the currently-selection item; there is, at present,\n# no way to select a specific submenu item.\n#\n#enable_touch\n\n# Launch specified OSes in graphics mode. By default, rEFInd switches\n# to text mode and displays basic pre-launch information when launching\n# all OSes except OS X. Using graphics mode can produce a more seamless\n# transition, but displays no information, which can make matters\n# difficult if you must debug a problem. Also, on at least one known\n# computer, using graphics mode prevents a crash when using the Linux\n# kernel's EFI stub loader. You can specify an empty list to boot all\n# OSes in text mode.\n# Valid options:\n#   osx     - Mac OS X\n#   linux   - A Linux kernel with EFI stub loader\n#   elilo   - The ELILO boot loader\n#   grub    - The GRUB (Legacy or 2) boot loader\n#   windows - Microsoft Windows\n# Default value: osx\n#\n#use_graphics_for osx,linux\n\n# Which non-bootloader tools to show on the tools line, and in what\n# order to display them:\n#  shell            - the EFI shell (requires external program; see rEFInd\n#                     documentation for details)\n#  memtest          - the memtest86 program, in EFI/tools, EFI/memtest86,\n#                     EFI/memtest, EFI/tools/memtest86, or EFI/tools/memtest\n#  gptsync          - the (dangerous) gptsync.efi utility (requires external\n#                     program; see rEFInd documentation for details)\n#  gdisk            - the gdisk partitioning program\n#  apple_recovery   - boots the Apple Recovery HD partition, if present\n#  windows_recovery - boots an OEM Windows recovery tool, if present\n#                     (see also the windows_recovery_files option)\n#  mok_tool         - makes available the Machine Owner Key (MOK) maintenance\n#                     tool, MokManager.efi, used on Secure Boot systems\n#  csr_rotate       - adjusts Apple System Integrity Protection (SIP)\n#                     policy. Requires \"csr_values\" to be set.\n#  about            - an \"about this program\" option\n#  exit             - a tag to exit from rEFInd\n#  shutdown         - shuts down the computer (a bug causes this to reboot\n#                     many UEFI systems)\n#  reboot           - a tag to reboot the computer\n#  firmware         - a tag to reboot the computer into the firmware's\n#                     user interface (ignored on older computers)\n#  fwupdate         - a tag to update the firmware; launches the fwupx64.efi\n#                     (or similar) program\n#  netboot          - launch the ipxe.efi tool for network (PXE) booting\n# Default is shell,memtest,gdisk,apple_recovery,windows_recovery,mok_tool,about,shutdown,reboot,firmware,fwupdate\n#\n#showtools shell, gdisk, memtest, mok_tool, apple_recovery, windows_recovery, about, reboot, exit, firmware, fwupdate\n\n# Boot loaders that can launch a Windows restore or emergency system.\n# These tend to be OEM-specific.\n# Default is LRS_ESP:/EFI/Microsoft/Boot/LrsBootmgr.efi\n#\n#windows_recovery_files LRS_ESP:/EFI/Microsoft/Boot/LrsBootmgr.efi\n\n# Directories in which to search for EFI drivers. These drivers can\n# provide filesystem support, give access to hard disks on plug-in\n# controllers, etc. In most cases none are needed, but if you add\n# EFI drivers and you want rEFInd to automatically load them, you\n# should specify one or more paths here. rEFInd always scans the\n# \"drivers\" and \"drivers_{arch}\" subdirectories of its own installation\n# directory (where \"{arch}\" is your architecture code); this option\n# specifies ADDITIONAL directories to scan.\n# Default is to scan no additional directories for EFI drivers\n#\n#scan_driver_dirs EFI/tools/drivers,drivers\n\n# Which types of boot loaders to search, and in what order to display them:\n#  internal      - internal EFI disk-based boot loaders\n#  external      - external EFI disk-based boot loaders\n#  optical       - EFI optical discs (CD, DVD, etc.)\n#  netboot       - EFI network (PXE) boot options\n#  hdbios        - BIOS disk-based boot loaders\n#  biosexternal  - BIOS external boot loaders (USB, eSATA, etc.)\n#  cd            - BIOS optical-disc boot loaders\n#  manual        - use stanzas later in this configuration file\n# Note that the legacy BIOS options require firmware support, which is\n# not present on all computers.\n# The netboot option is experimental and relies on the ipxe.efi and\n# ipxe_discover.efi program files.\n# On UEFI PCs, default is internal,external,optical,manual\n# On Macs, default is internal,hdbios,external,biosexternal,optical,cd,manual\n#\n#scanfor internal,external,optical,manual\n\n# By default, rEFInd relies on the UEFI firmware to detect BIOS-mode boot\n# devices. This sometimes doesn't detect all the available devices, though.\n# For these cases, uefi_deep_legacy_scan results in a forced scan and\n# modification of NVRAM variables on each boot. Adding \"0\", \"off\", or\n# \"false\" resets to the default value. This token has no effect on Macs or\n# when no BIOS-mode options are set via scanfor.\n# Default is unset (or \"uefi_deep_legacy_scan false\")\n#\n#uefi_deep_legacy_scan\n\n# Delay for the specified number of seconds before scanning disks.\n# This can help some users who find that some of their disks\n# (usually external or optical discs) aren't detected initially,\n# but are detected after pressing Esc.\n# The default is 0.\n#\n#scan_delay 5\n\n# When scanning volumes for EFI boot loaders, rEFInd always looks for\n# Mac OS X's and Microsoft Windows' boot loaders in their normal locations,\n# and scans the root directory and every subdirectory of the /EFI directory\n# for additional boot loaders, but it doesn't recurse into these directories.\n# The also_scan_dirs token adds more directories to the scan list.\n# Directories are specified relative to the volume's root directory. This\n# option applies to ALL the volumes that rEFInd scans UNLESS you include\n# a volume name and colon before the directory name, as in \"myvol:/somedir\"\n# to scan the somedir directory only on the filesystem named myvol. If a\n# specified directory doesn't exist, it's ignored (no error condition\n# results). The default is to scan the \"boot\" directory in addition to\n# various hard-coded directories.\n#\n#also_scan_dirs boot,ESP2:EFI/linux/kernels\n\n# Partitions (or whole disks, for legacy-mode boots) to omit from scans.\n# For EFI-mode scans, you must specify a volume by its label, which you\n# can obtain in an EFI shell by typing \"vol\", from Linux by typing\n# \"blkid /dev/{devicename}\", or by examining the disk's label in various\n# OSes' file browsers.\n# For legacy-mode scans, you can specify any subset of the boot loader\n# description shown when you highlight the option in rEFInd.\n# The default is \"LRS_ESP\".\n#\n#dont_scan_volumes \"Recovery HD\"\n\n# Directories that should NOT be scanned for boot loaders. By default,\n# rEFInd doesn't scan its own directory, the EFI/tools directory, the\n# EFI/memtest directory, the EFI/memtest86 directory, or the\n# com.apple.recovery.boot directory. Using the dont_scan_dirs option\n# enables you to \"blacklist\" other directories; but be sure to use \"+\"\n# as the first element if you want to continue blacklisting existing\n# directories. You might use this token to keep EFI/boot/bootx64.efi out\n# of the menu if that's a duplicate of another boot loader or to exclude\n# a directory that holds drivers or non-bootloader utilities provided by\n# a hardware manufacturer. If a directory is listed both here and in\n# also_scan_dirs, dont_scan_dirs takes precedence. Note that this\n# blacklist applies to ALL the filesystems that rEFInd scans, not just\n# the ESP, unless you precede the directory name by a filesystem name,\n# as in \"myvol:EFI/somedir\" to exclude EFI/somedir from the scan on the\n# myvol volume but not on other volumes.\n#\n#dont_scan_dirs ESP:/EFI/boot,EFI/Dell,EFI/memtest86\n\n# Files that should NOT be included as EFI boot loaders (on the\n# first line of the display). If you're using a boot loader that\n# relies on support programs or drivers that are installed alongside\n# the main binary or if you want to \"blacklist\" certain loaders by\n# name rather than location, use this option. Note that this will\n# NOT prevent certain binaries from showing up in the second-row\n# set of tools. Most notably, various Secure Boot and recovery\n# tools are present in this list, but may appear as second-row\n# items.\n# The file may be specified as a bare name (e.g., \"notme.efi\"), as\n# a complete filename (e.g., \"/EFI/somedir/notme.efi\"), or as a\n# complete filename with volume (e.g., \"SOMEDISK:/EFI/somedir/notme.efi\").\n# The default is shim.efi,shim-fedora.efi,shimx64.efi,PreLoader.efi,\n# TextMode.efi,ebounce.efi,GraphicsConsole.efi,MokManager.efi,HashTool.efi,\n# HashTool-signed.efi,bootmgr.efi,fb{arch}.efi\n# (where \"{arch}\" is the architecture code, like \"x64\").\n#\n#dont_scan_files shim.efi,MokManager.efi\n\n# Scan for Linux kernels that lack a \".efi\" filename extension. This is\n# useful for better integration with Linux distributions that provide\n# kernels with EFI stub loaders but that don't give those kernels filenames\n# that end in \".efi\", particularly if the kernels are stored on a\n# filesystem that the EFI can read. When set to \"1\", \"true\", or \"on\", this\n# option causes all files in scanned directories with names that begin with\n# \"vmlinuz\" or \"bzImage\" to be included as loaders, even if they lack \".efi\"\n# extensions. Passing this option a \"0\", \"false\", or \"off\" value causes\n# kernels without \".efi\" extensions to NOT be scanned.\n# Default is \"true\" -- to scan for kernels without \".efi\" extensions.\n#\n#scan_all_linux_kernels false\n\n# Combine all Linux kernels in a given directory into a single entry.\n# When so set, the kernel with the most recent time stamp will be launched\n# by default, and its filename will appear in the entry's description.\n# To launch other kernels, the user must press F2 or Insert; alternate\n# kernels then appear as options on the sub-menu.\n# Default is \"true\" -- kernels are \"folded\" into a single menu entry.\n#\n#fold_linux_kernels false\n\n# Comma-delimited list of strings to treat as if they were numbers for the\n# purpose of kernel version number detection. These strings are matched on a\n# first-found basis; that is, if you want to treat both \"linux-lts\" and\n# \"linux\" as version strings, they MUST be specified as \"linux-lts,linux\",\n# since if you specify it the other way, both vmlinuz-linux and\n# vmlinuz-linux-lts will return with \"linux\" as the \"version string,\" which\n# is not what you'd want. Also, if the kernel or initrd file includes both a\n# specified string and digits, the \"version string\" includes both. For\n# instance, \"vmlinuz-linux-4.8\" would yield a version string of \"linux-4.8\".\n# This option is intended for Arch and other distributions that don't include\n# version numbers in their kernel filenames, but may provide other uniquely\n# identifying strings for multiple kernels. If this feature causes problems\n# (say, if your kernel filename includes \"linux\" but the initrd filename\n# doesn't), be sure this is set to an empty string\n# (extra_kernel_version_strings \"\") or comment out the option to disable it.\n# Default is no extra version strings\n#\n#extra_kernel_version_strings linux-lts,linux\n\n# Set the maximum number of tags that can be displayed on the screen at\n# any time. If more loaders are discovered than this value, rEFInd shows\n# a subset in a scrolling list. If this value is set too high for the\n# screen to handle, it's reduced to the value that the screen can manage.\n# If this value is set to 0 (the default), it's adjusted to the number\n# that the screen can handle.\n#\n#max_tags 0\n\n# Set the default menu selection.  The available arguments match the\n# keyboard accelerators available within rEFInd.  You may select the\n# default loader using:\n#  - A digit between 1 and 9, in which case the Nth loader in the menu\n#    will be the default. \n#  - A \"+\" symbol at the start of the string, which refers to the most\n#    recently booted loader.\n#  - Any substring that corresponds to a portion of the loader's title\n#    (usually the OS's name, boot loader's path, or a volume or\n#    filesystem title).\n# You may also specify multiple selectors by separating them with commas\n# and enclosing the list in quotes. (The \"+\" option is only meaningful in\n# this context.)\n# If you follow the selector(s) with two times, in 24-hour format, the\n# default will apply only between those times. The times are in the\n# motherboard's time standard, whether that's UTC or local time, so if\n# you use UTC, you'll need to adjust this from local time manually.\n# Times may span midnight as in \"23:30 00:30\", which applies to 11:30 PM\n# to 12:30 AM. You may specify multiple default_selection lines, in which\n# case the last one to match takes precedence. Thus, you can set a main\n# option without a time followed by one or more that include times to\n# set different defaults for different times of day.\n# The default behavior is to boot the previously-booted OS.\n#\n#default_selection 1\n#default_selection Microsoft\n#default_selection \"+,bzImage,vmlinuz\"\n#default_selection Maintenance 23:30 2:00\n#default_selection \"Maintenance,OS X\" 1:00 2:30\n\n# Enable VMX bit and lock the CPU MSR if unlocked.\n# On some Intel Apple computers, the firmware does not lock the MSR 0x3A.\n# The symptom on Windows is Hyper-V not working even if the CPU\n# meets the minimum requirements (HW assisted virtualization and SLAT)\n# DO NOT SET THIS EXCEPT ON INTEL CPUs THAT SUPPORT VMX! See\n# http://www.thomas-krenn.com/en/wiki/Activating_the_Intel_VT_Virtualization_Feature!\n# for more on this subject.\n# The default is false: Don't try to enable and lock the MSR.\n#\n#enable_and_lock_vmx false\n\n# Tell a Mac's EFI that OS X is about to be launched, even when it's not.\n# This option causes some Macs to initialize their hardware differently than\n# when a third-party OS is launched normally. In some cases (particularly on\n# Macs with multiple video cards), using this option can cause hardware to\n# work that would not otherwise work. On the other hand, using this option\n# when it is not necessary can cause hardware (such as keyboards and mice) to\n# become inaccessible. Therefore, you should not enable this option if your\n# non-Apple OSes work correctly; enable it only if you have problems with\n# some hardware devices. When needed, a value of \"10.9\" usually works, but\n# you can experiment with other values. This feature has no effect on\n# non-Apple computers.\n# The default is inactive (no OS X spoofing is done).\n#\n#spoof_osx_version 10.9\n\n# Set the CSR values for Apple's System Integrity Protection (SIP) feature.\n# Values are one-byte (two-character) hexadecimal numbers. These values\n# define which specific security features are enabled. Below are the codes\n# for what the values mean. Add them up (in hexadecimal!) to set new values.\n# Apple's \"csrutil enable\" and \"csrutil disable\" commands set values of 10\n# and 77, respectively.\n#   CSR_ALLOW_UNTRUSTED_KEXTS       0x01\n#   CSR_ALLOW_UNRESTRICTED_FS       0x02\n#   CSR_ALLOW_TASK_FOR_PID          0x04\n#   CSR_ALLOW_KERNEL_DEBUGGER       0x08\n#   CSR_ALLOW_APPLE_INTERNAL        0x10\n#   CSR_ALLOW_UNRESTRICTED_DTRACE   0x20\n#   CSR_ALLOW_UNRESTRICTED_NVRAM    0x40\n#\n#csr_values 10,77\n\n# Include a secondary configuration file within this one. This secondary\n# file is loaded as if its options appeared at the point of the \"include\"\n# token itself, so if you want to override a setting in the main file,\n# the secondary file must be referenced AFTER the setting you want to\n# override. Note that the secondary file may NOT load a tertiary file.\n#\n#include manual.conf\n\n# Sample manual configuration stanzas. Each begins with the \"menuentry\"\n# keyword followed by a name that's to appear in the menu (use quotes\n# if you want the name to contain a space) and an open curly brace\n# (\"{\"). Each entry ends with a close curly brace (\"}\"). Common\n# keywords within each stanza include:\n#\n#  volume    - identifies the filesystem from which subsequent files\n#              are loaded. You can specify the volume by filesystem\n#              label, by partition label, or by partition GUID number\n#              (but NOT yet by filesystem UUID number).\n#  loader    - identifies the boot loader file\n#  initrd    - Specifies an initial RAM disk file\n#  icon      - specifies a custom boot loader icon\n#  ostype    - OS type code to determine boot options available by\n#              pressing Insert. Valid values are \"MacOS\", \"Linux\",\n#              \"Windows\", and \"XOM\". Case-sensitive.\n#  graphics  - set to \"on\" to enable graphics-mode boot (useful\n#              mainly for MacOS) or \"off\" for text-mode boot.\n#              Default is auto-detected from loader filename.\n#  options   - sets options to be passed to the boot loader; use\n#              quotes if more than one option should be passed or\n#              if any options use characters that might be changed\n#              by rEFInd parsing procedures (=, /, #, or tab).\n#  disabled  - use alone or set to \"yes\" to disable this entry.\n#\n# Note that you can use either DOS/Windows/EFI-style backslashes (\\)\n# or Unix-style forward slashes (/) as directory separators. Either\n# way, all file references are on the ESP from which rEFInd was\n# launched.\n# Use of quotes around parameters causes them to be interpreted as\n# one keyword, and for parsing of special characters (spaces, =, /,\n# and #) to be disabled. This is useful mainly with the \"options\"\n# keyword. Use of quotes around parameters that specify filenames is\n# permissible, but you must then use backslashes instead of slashes,\n# except when you must pass a forward slash to the loader, as when\n# passing a root= option to a Linux kernel.\n\n# Below are several sample boot stanzas. All are disabled by default.\n# Find one similar to what you need, copy it, remove the \"disabled\" line,\n# and adjust the entries to suit your needs.\n\n# A sample entry for a Linux 3.13 kernel with EFI boot stub support\n# on a partition with a GUID of 904404F8-B481-440C-A1E3-11A5A954E601.\n# This entry includes Linux-specific boot options and specification\n# of an initial RAM disk. Note uses of Linux-style forward slashes.\n# Also note that a leading slash is optional in file specifications.\nmenuentry Linux {\n    icon EFI/refind/icons/os_linux.png\n    volume 904404F8-B481-440C-A1E3-11A5A954E601\n    loader bzImage-3.3.0-rc7\n    initrd initrd-3.3.0.img\n    options \"ro root=UUID=5f96cafa-e0a7-4057-b18f-fa709db5b837\"\n    disabled\n}\n\n# Below is a more complex Linux example, specifically for Arch Linux.\n# This example MUST be modified for your specific installation; if nothing\n# else, the PARTUUID code must be changed for your disk. Because Arch Linux\n# does not include version numbers in its kernel and initrd filenames, you\n# may need to use manual boot stanzas when using fallback initrds or\n# multiple kernels with Arch. This example is modified from one in the Arch\n# wiki page on rEFInd (https://wiki.archlinux.org/index.php/rEFInd).\nmenuentry \"Arch Linux\" {\n    icon     /EFI/refind/icons/os_arch.png\n    volume   \"Arch Linux\"\n    loader   /boot/vmlinuz-linux\n    initrd   /boot/initramfs-linux.img\n    options  \"root=PARTUUID=5028fa50-0079-4c40-b240-abfaf28693ea rw add_efi_memmap\"\n    submenuentry \"Boot using fallback initramfs\" {\n        initrd /boot/initramfs-linux-fallback.img\n    }\n    submenuentry \"Boot to terminal\" {\n        add_options \"systemd.unit=multi-user.target\"\n    }\n    disabled\n}\n\n# A sample entry for loading Ubuntu using its standard name for\n# its GRUB 2 boot loader. Note uses of Linux-style forward slashes\nmenuentry Ubuntu {\n    loader /EFI/ubuntu/grubx64.efi\n    icon /EFI/refind/icons/os_linux.png\n    disabled\n}\n\n# A minimal ELILO entry, which probably offers nothing that\n# auto-detection can't accomplish.\nmenuentry \"ELILO\" {\n    loader \\EFI\\elilo\\elilo.efi\n    disabled\n}\n\n# Like the ELILO entry, this one offers nothing that auto-detection\n# can't do; but you might use it if you want to disable auto-detection\n# but still boot Windows....\nmenuentry \"Windows 7\" {\n    loader \\EFI\\Microsoft\\Boot\\bootmgfw.efi\n    disabled\n}\n\n# EFI shells are programs just like boot loaders, and can be\n# launched in the same way. You can pass a shell the name of a\n# script that it's to run on the \"options\" line. The script\n# could initialize hardware and then launch an OS, or it could\n# do something entirely different.\nmenuentry \"Windows via shell script\" {\n    icon \\EFI\\refind\\icons\\os_win.png\n    loader \\EFI\\tools\\shell.efi\n    options \"fs0:\\EFI\\tools\\launch_windows.nsh\"\n    disabled\n}\n\n# Mac OS is normally detected and run automatically; however,\n# if you want to do something unusual, a manual boot stanza may\n# be the way to do it. This one does nothing very unusual, but\n# it may serve as a starting point. Note that you'll almost\n# certainly need to change the \"volume\" line for this example\n# to work.\nmenuentry \"My Mac OS X\" {\n    icon \\EFI\\refind\\icons\\os_mac.png\n    volume \"OS X boot\"\n    loader \\System\\Library\\CoreServices\\boot.efi\n    disabled\n}\n"
  },
  {
    "path": "refind/refind.conf-sample",
    "content": "#\n# refind.conf\n# Configuration file for the rEFInd boot menu\n#\n\n# Timeout in seconds for the main menu screen. Setting the timeout to 0\n# disables automatic booting (i.e., no timeout). Setting it to -1 causes\n# an immediate boot to the default OS *UNLESS* a keypress is in the buffer\n# when rEFInd launches, in which case that keypress is interpreted as a\n# shortcut key. If no matching shortcut is found, rEFInd displays its\n# menu with no timeout.\n#\ntimeout 20\n\n# Screen saver timeout; the screen blanks after the specified number of\n# seconds with no keyboard input. The screen returns after most keypresses\n# (unfortunately, not including modifier keys such as Shift, Control, Alt,\n# or Option). Setting a value of \"-1\" causes rEFInd to start up with its\n# screen saver active. The default is 0, which disables the screen saver.\n#screensaver 300\n\n# Hide user interface elements for personal preference or to increase\n# security:\n#  banner      - the rEFInd title banner (built-in or loaded via \"banner\")\n#  label       - boot option text label in the menu\n#  singleuser  - remove the submenu options to boot Mac OS X in single-user\n#                or verbose modes; affects ONLY MacOS X\n#  safemode    - remove the submenu option to boot Mac OS X in \"safe mode\"\n#  hwtest      - the submenu option to run Apple's hardware test\n#  arrows      - scroll arrows on the OS selection tag line\n#  hints       - brief command summary in the menu\n#  editor      - the options editor (+, F2, or Insert on boot options menu)\n#  badges      - device-type badges for boot options\n#  all         - all of the above\n# Default is none of these (all elements active)\n#\n#hideui singleuser\n#hideui all\n\n# Set the name of a subdirectory in which icons are stored. Icons must\n# have the same names they have in the standard directory. The directory\n# name is specified relative to the main rEFInd binary's directory. If\n# an icon can't be found in the specified directory, an attempt is made\n# to load it from the default directory; thus, you can replace just some\n# icons in your own directory and rely on the default for others.\n# Default is \"icons\".\n#\n#icons_dir myicons\n#icons_dir icons/snowy\n\n# Use a custom title banner instead of the rEFInd icon and name. The file\n# path is relative to the directory where refind.efi is located. The color\n# in the top left corner of the image is used as the background color\n# for the menu screens. Currently uncompressed BMP images with color\n# depths of 24, 8, 4 or 1 bits are supported, as well as PNG images.\n#\n#banner hostname.bmp\n#banner mybanner.png\n#banner icons/snowy/banner-snowy.png\n\n# Specify how to handle banners that aren't exactly the same as the screen\n# size:\n#  noscale     - Crop if too big, show with border if too small\n#  fillscreen  - Fill the screen\n# Default is noscale\n#\n#banner_scale fillscreen\n\n# Icon sizes. All icons are square, so just one value is specified. The\n# big icons are used for OS selectors in the first row and the small\n# icons are used for tools on the second row. Drive-type badges are 1/4\n# the size of the big icons. Legal values are 32 and above. If the icon\n# files do not hold icons of the proper size, the icons are scaled to\n# the specified size. The default values are 48 and 128 for small and\n# big icons, respectively.\n#\n#small_icon_size 96\n#big_icon_size 256\n\n# Custom images for the selection background. There is a big one (144 x 144)\n# for the OS icons, and a small one (64 x 64) for the function icons in the\n# second row. If only a small image is given, that one is also used for\n# the big icons by stretching it in the middle. If only a big one is given,\n# the built-in default will be used for the small icons.\n#\n# Like the banner option above, these options take a filename of an\n# uncompressed BMP image file with a color depth of 24, 8, 4, or 1 bits,\n# or a PNG image. The PNG format is required if you need transparency\n# support (to let you \"see through\" to a full-screen banner).\n#\n#selection_big   selection-big.bmp\n#selection_small selection-small.bmp\n\n# Set the font to be used for all textual displays in graphics mode.\n# The font must be a PNG file with alpha channel transparency. It must\n# contain ASCII characters 32-126 (space through tilde), inclusive, plus\n# a glyph to be displayed in place of characters outside of this range,\n# for a total of 96 glyphs. Only monospaced fonts are supported. Fonts\n# may be of any size, although large fonts can produce display\n# irregularities.\n# The default is rEFInd's built-in font, Luxi Mono Regular 12 point.\n#\n#font myfont.png\n\n# Use text mode only. When enabled, this option forces rEFInd into text mode.\n# Passing this option a \"0\" value causes graphics mode to be used. Pasing\n# it no value or any non-0 value causes text mode to be used.\n# Default is to use graphics mode.\n#\n#textonly\n\n# Set the EFI text mode to be used for textual displays. This option\n# takes a single digit that refers to a mode number. Mode 0 is normally\n# 80x25, 1 is sometimes 80x50, and higher numbers are system-specific\n# modes. Mode 1024 is a special code that tells rEFInd to not set the\n# text mode; it uses whatever was in use when the program was launched.\n# If you specify an invalid mode, rEFInd pauses during boot to inform\n# you of valid modes.\n# CAUTION: On VirtualBox, and perhaps on some real computers, specifying\n# a text mode and uncommenting the \"textonly\" option while NOT specifying\n# a resolution can result in an unusable display in the booted OS.\n# Default is 1024 (no change)\n#\n#textmode 2\n\n# Set the screen's video resolution. Pass this option either:\n#  * two values, corresponding to the X and Y resolutions\n#  * one value, corresponding to a GOP (UEFI) video mode\n# Note that not all resolutions are supported. On UEFI systems, passing\n# an incorrect value results in a message being shown on the screen to\n# that effect, along with a list of supported modes. On EFI 1.x systems\n# (e.g., Macintoshes), setting an incorrect mode silently fails. On both\n# types of systems, setting an incorrect resolution results in the default\n# resolution being used. A resolution of 1024x768 usually works, but higher\n# values often don't.\n# Default is \"0 0\" (use the system default resolution, usually 800x600).\n#\n#resolution 1024 768\n#resolution 1440 900\n#resolution 3\n\n# Enable touch screen support. If active, this feature enables use of\n# touch screen controls (as on tablets). Note, however, that not all\n# tablets' EFIs provide the necessary underlying support, so this\n# feature may not work for you. If it does work, you should be able\n# to launch an OS or tool by touching it. In a submenu, touching\n# anywhere launches the currently-selection item; there is, at present,\n# no way to select a specific submenu item.\n#\n#enable_touch\n\n# Launch specified OSes in graphics mode. By default, rEFInd switches\n# to text mode and displays basic pre-launch information when launching\n# all OSes except OS X. Using graphics mode can produce a more seamless\n# transition, but displays no information, which can make matters\n# difficult if you must debug a problem. Also, on at least one known\n# computer, using graphics mode prevents a crash when using the Linux\n# kernel's EFI stub loader. You can specify an empty list to boot all\n# OSes in text mode.\n# Valid options:\n#   osx     - Mac OS X\n#   linux   - A Linux kernel with EFI stub loader\n#   elilo   - The ELILO boot loader\n#   grub    - The GRUB (Legacy or 2) boot loader\n#   windows - Microsoft Windows\n# Default value: osx\n#\n#use_graphics_for osx,linux\n\n# Which non-bootloader tools to show on the tools line, and in what\n# order to display them:\n#  shell            - the EFI shell (requires external program; see rEFInd\n#                     documentation for details)\n#  memtest          - the memtest86 program, in EFI/tools, EFI/memtest86,\n#                     EFI/memtest, EFI/tools/memtest86, or EFI/tools/memtest\n#  gptsync          - the (dangerous) gptsync.efi utility (requires external\n#                     program; see rEFInd documentation for details)\n#  gdisk            - the gdisk partitioning program\n#  apple_recovery   - boots the Apple Recovery HD partition, if present\n#  windows_recovery - boots an OEM Windows recovery tool, if present\n#                     (see also the windows_recovery_files option)\n#  mok_tool         - makes available the Machine Owner Key (MOK) maintenance\n#                     tool, MokManager.efi, used on Secure Boot systems\n#  csr_rotate       - adjusts Apple System Integrity Protection (SIP)\n#                     policy. Requires \"csr_values\" to be set.\n#  about            - an \"about this program\" option\n#  exit             - a tag to exit from rEFInd\n#  shutdown         - shuts down the computer (a bug causes this to reboot\n#                     many UEFI systems)\n#  reboot           - a tag to reboot the computer\n#  firmware         - a tag to reboot the computer into the firmware's\n#                     user interface (ignored on older computers)\n#  fwupdate         - a tag to update the firmware; launches the fwupx64.efi\n#                     (or similar) program\n#  netboot          - launch the ipxe.efi tool for network (PXE) booting\n# Default is shell,memtest,gdisk,apple_recovery,windows_recovery,mok_tool,about,shutdown,reboot,firmware,fwupdate\n#\n#showtools shell, gdisk, memtest, mok_tool, apple_recovery, windows_recovery, about, reboot, exit, firmware, fwupdate\n\n# Boot loaders that can launch a Windows restore or emergency system.\n# These tend to be OEM-specific.\n# Default is LRS_ESP:/EFI/Microsoft/Boot/LrsBootmgr.efi\n#\n#windows_recovery_files LRS_ESP:/EFI/Microsoft/Boot/LrsBootmgr.efi\n\n# Directories in which to search for EFI drivers. These drivers can\n# provide filesystem support, give access to hard disks on plug-in\n# controllers, etc. In most cases none are needed, but if you add\n# EFI drivers and you want rEFInd to automatically load them, you\n# should specify one or more paths here. rEFInd always scans the\n# \"drivers\" and \"drivers_{arch}\" subdirectories of its own installation\n# directory (where \"{arch}\" is your architecture code); this option\n# specifies ADDITIONAL directories to scan.\n# Default is to scan no additional directories for EFI drivers\n#\n#scan_driver_dirs EFI/tools/drivers,drivers\n\n# Which types of boot loaders to search, and in what order to display them:\n#  internal      - internal EFI disk-based boot loaders\n#  external      - external EFI disk-based boot loaders\n#  optical       - EFI optical discs (CD, DVD, etc.)\n#  netboot       - EFI network (PXE) boot options\n#  hdbios        - BIOS disk-based boot loaders\n#  biosexternal  - BIOS external boot loaders (USB, eSATA, etc.)\n#  cd            - BIOS optical-disc boot loaders\n#  manual        - use stanzas later in this configuration file\n# Note that the legacy BIOS options require firmware support, which is\n# not present on all computers.\n# The netboot option is experimental and relies on the ipxe.efi and\n# ipxe_discover.efi program files.\n# On UEFI PCs, default is internal,external,optical,manual\n# On Macs, default is internal,hdbios,external,biosexternal,optical,cd,manual\n#\n#scanfor internal,external,optical,manual\n\n# By default, rEFInd relies on the UEFI firmware to detect BIOS-mode boot\n# devices. This sometimes doesn't detect all the available devices, though.\n# For these cases, uefi_deep_legacy_scan results in a forced scan and\n# modification of NVRAM variables on each boot. Adding \"0\", \"off\", or\n# \"false\" resets to the default value. This token has no effect on Macs or\n# when no BIOS-mode options are set via scanfor.\n# Default is unset (or \"uefi_deep_legacy_scan false\")\n#\n#uefi_deep_legacy_scan\n\n# Delay for the specified number of seconds before scanning disks.\n# This can help some users who find that some of their disks\n# (usually external or optical discs) aren't detected initially,\n# but are detected after pressing Esc.\n# The default is 0.\n#\n#scan_delay 5\n\n# When scanning volumes for EFI boot loaders, rEFInd always looks for\n# Mac OS X's and Microsoft Windows' boot loaders in their normal locations,\n# and scans the root directory and every subdirectory of the /EFI directory\n# for additional boot loaders, but it doesn't recurse into these directories.\n# The also_scan_dirs token adds more directories to the scan list.\n# Directories are specified relative to the volume's root directory. This\n# option applies to ALL the volumes that rEFInd scans UNLESS you include\n# a volume name and colon before the directory name, as in \"myvol:/somedir\"\n# to scan the somedir directory only on the filesystem named myvol. If a\n# specified directory doesn't exist, it's ignored (no error condition\n# results). The default is to scan the \"boot\" directory in addition to\n# various hard-coded directories.\n#\n#also_scan_dirs boot,ESP2:EFI/linux/kernels\n\n# Partitions (or whole disks, for legacy-mode boots) to omit from scans.\n# For EFI-mode scans, you must specify a volume by its label, which you\n# can obtain in an EFI shell by typing \"vol\", from Linux by typing\n# \"blkid /dev/{devicename}\", or by examining the disk's label in various\n# OSes' file browsers.\n# For legacy-mode scans, you can specify any subset of the boot loader\n# description shown when you highlight the option in rEFInd.\n# The default is \"LRS_ESP\".\n#\n#dont_scan_volumes \"Recovery HD\"\n\n# Directories that should NOT be scanned for boot loaders. By default,\n# rEFInd doesn't scan its own directory, the EFI/tools directory, the\n# EFI/memtest directory, the EFI/memtest86 directory, or the\n# com.apple.recovery.boot directory. Using the dont_scan_dirs option\n# enables you to \"blacklist\" other directories; but be sure to use \"+\"\n# as the first element if you want to continue blacklisting existing\n# directories. You might use this token to keep EFI/boot/bootx64.efi out\n# of the menu if that's a duplicate of another boot loader or to exclude\n# a directory that holds drivers or non-bootloader utilities provided by\n# a hardware manufacturer. If a directory is listed both here and in\n# also_scan_dirs, dont_scan_dirs takes precedence. Note that this\n# blacklist applies to ALL the filesystems that rEFInd scans, not just\n# the ESP, unless you precede the directory name by a filesystem name,\n# as in \"myvol:EFI/somedir\" to exclude EFI/somedir from the scan on the\n# myvol volume but not on other volumes.\n#\n#dont_scan_dirs ESP:/EFI/boot,EFI/Dell,EFI/memtest86\n\n# Files that should NOT be included as EFI boot loaders (on the\n# first line of the display). If you're using a boot loader that\n# relies on support programs or drivers that are installed alongside\n# the main binary or if you want to \"blacklist\" certain loaders by\n# name rather than location, use this option. Note that this will\n# NOT prevent certain binaries from showing up in the second-row\n# set of tools. Most notably, various Secure Boot and recovery\n# tools are present in this list, but may appear as second-row\n# items.\n# The file may be specified as a bare name (e.g., \"notme.efi\"), as\n# a complete filename (e.g., \"/EFI/somedir/notme.efi\"), or as a\n# complete filename with volume (e.g., \"SOMEDISK:/EFI/somedir/notme.efi\").\n# The default is shim.efi,shim-fedora.efi,shimx64.efi,PreLoader.efi,\n# TextMode.efi,ebounce.efi,GraphicsConsole.efi,MokManager.efi,HashTool.efi,\n# HashTool-signed.efi,bootmgr.efi,fb{arch}.efi\n# (where \"{arch}\" is the architecture code, like \"x64\").\n#\n#dont_scan_files shim.efi,MokManager.efi\n\n# Scan for Linux kernels that lack a \".efi\" filename extension. This is\n# useful for better integration with Linux distributions that provide\n# kernels with EFI stub loaders but that don't give those kernels filenames\n# that end in \".efi\", particularly if the kernels are stored on a\n# filesystem that the EFI can read. When set to \"1\", \"true\", or \"on\", this\n# option causes all files in scanned directories with names that begin with\n# \"vmlinuz\" or \"bzImage\" to be included as loaders, even if they lack \".efi\"\n# extensions. Passing this option a \"0\", \"false\", or \"off\" value causes\n# kernels without \".efi\" extensions to NOT be scanned.\n# Default is \"true\" -- to scan for kernels without \".efi\" extensions.\n#\n#scan_all_linux_kernels false\n\n# Combine all Linux kernels in a given directory into a single entry.\n# When so set, the kernel with the most recent time stamp will be launched\n# by default, and its filename will appear in the entry's description.\n# To launch other kernels, the user must press F2 or Insert; alternate\n# kernels then appear as options on the sub-menu.\n# Default is \"true\" -- kernels are \"folded\" into a single menu entry.\n#\n#fold_linux_kernels false\n\n# Comma-delimited list of strings to treat as if they were numbers for the\n# purpose of kernel version number detection. These strings are matched on a\n# first-found basis; that is, if you want to treat both \"linux-lts\" and\n# \"linux\" as version strings, they MUST be specified as \"linux-lts,linux\",\n# since if you specify it the other way, both vmlinuz-linux and\n# vmlinuz-linux-lts will return with \"linux\" as the \"version string,\" which\n# is not what you'd want. Also, if the kernel or initrd file includes both a\n# specified string and digits, the \"version string\" includes both. For\n# instance, \"vmlinuz-linux-4.8\" would yield a version string of \"linux-4.8\".\n# This option is intended for Arch and other distributions that don't include\n# version numbers in their kernel filenames, but may provide other uniquely\n# identifying strings for multiple kernels. If this feature causes problems\n# (say, if your kernel filename includes \"linux\" but the initrd filename\n# doesn't), be sure this is set to an empty string\n# (extra_kernel_version_strings \"\") or comment out the option to disable it.\n# Default is no extra version strings\n#\n#extra_kernel_version_strings linux-lts,linux\n\n# Set the maximum number of tags that can be displayed on the screen at\n# any time. If more loaders are discovered than this value, rEFInd shows\n# a subset in a scrolling list. If this value is set too high for the\n# screen to handle, it's reduced to the value that the screen can manage.\n# If this value is set to 0 (the default), it's adjusted to the number\n# that the screen can handle.\n#\n#max_tags 0\n\n# Set the default menu selection.  The available arguments match the\n# keyboard accelerators available within rEFInd.  You may select the\n# default loader using:\n#  - A digit between 1 and 9, in which case the Nth loader in the menu\n#    will be the default. \n#  - A \"+\" symbol at the start of the string, which refers to the most\n#    recently booted loader.\n#  - Any substring that corresponds to a portion of the loader's title\n#    (usually the OS's name, boot loader's path, or a volume or\n#    filesystem title).\n# You may also specify multiple selectors by separating them with commas\n# and enclosing the list in quotes. (The \"+\" option is only meaningful in\n# this context.)\n# If you follow the selector(s) with two times, in 24-hour format, the\n# default will apply only between those times. The times are in the\n# motherboard's time standard, whether that's UTC or local time, so if\n# you use UTC, you'll need to adjust this from local time manually.\n# Times may span midnight as in \"23:30 00:30\", which applies to 11:30 PM\n# to 12:30 AM. You may specify multiple default_selection lines, in which\n# case the last one to match takes precedence. Thus, you can set a main\n# option without a time followed by one or more that include times to\n# set different defaults for different times of day.\n# The default behavior is to boot the previously-booted OS.\n#\n#default_selection 1\n#default_selection Microsoft\n#default_selection \"+,bzImage,vmlinuz\"\n#default_selection Maintenance 23:30 2:00\n#default_selection \"Maintenance,OS X\" 1:00 2:30\n\n# Enable VMX bit and lock the CPU MSR if unlocked.\n# On some Intel Apple computers, the firmware does not lock the MSR 0x3A.\n# The symptom on Windows is Hyper-V not working even if the CPU\n# meets the minimum requirements (HW assisted virtualization and SLAT)\n# DO NOT SET THIS EXCEPT ON INTEL CPUs THAT SUPPORT VMX! See\n# http://www.thomas-krenn.com/en/wiki/Activating_the_Intel_VT_Virtualization_Feature!\n# for more on this subject.\n# The default is false: Don't try to enable and lock the MSR.\n#\n#enable_and_lock_vmx false\n\n# Tell a Mac's EFI that OS X is about to be launched, even when it's not.\n# This option causes some Macs to initialize their hardware differently than\n# when a third-party OS is launched normally. In some cases (particularly on\n# Macs with multiple video cards), using this option can cause hardware to\n# work that would not otherwise work. On the other hand, using this option\n# when it is not necessary can cause hardware (such as keyboards and mice) to\n# become inaccessible. Therefore, you should not enable this option if your\n# non-Apple OSes work correctly; enable it only if you have problems with\n# some hardware devices. When needed, a value of \"10.9\" usually works, but\n# you can experiment with other values. This feature has no effect on\n# non-Apple computers.\n# The default is inactive (no OS X spoofing is done).\n#\n#spoof_osx_version 10.9\n\n# Set the CSR values for Apple's System Integrity Protection (SIP) feature.\n# Values are one-byte (two-character) hexadecimal numbers. These values\n# define which specific security features are enabled. Below are the codes\n# for what the values mean. Add them up (in hexadecimal!) to set new values.\n# Apple's \"csrutil enable\" and \"csrutil disable\" commands set values of 10\n# and 77, respectively.\n#   CSR_ALLOW_UNTRUSTED_KEXTS       0x01\n#   CSR_ALLOW_UNRESTRICTED_FS       0x02\n#   CSR_ALLOW_TASK_FOR_PID          0x04\n#   CSR_ALLOW_KERNEL_DEBUGGER       0x08\n#   CSR_ALLOW_APPLE_INTERNAL        0x10\n#   CSR_ALLOW_UNRESTRICTED_DTRACE   0x20\n#   CSR_ALLOW_UNRESTRICTED_NVRAM    0x40\n#\n#csr_values 10,77\n\n# Include a secondary configuration file within this one. This secondary\n# file is loaded as if its options appeared at the point of the \"include\"\n# token itself, so if you want to override a setting in the main file,\n# the secondary file must be referenced AFTER the setting you want to\n# override. Note that the secondary file may NOT load a tertiary file.\n#\n#include manual.conf\n\n# Sample manual configuration stanzas. Each begins with the \"menuentry\"\n# keyword followed by a name that's to appear in the menu (use quotes\n# if you want the name to contain a space) and an open curly brace\n# (\"{\"). Each entry ends with a close curly brace (\"}\"). Common\n# keywords within each stanza include:\n#\n#  volume    - identifies the filesystem from which subsequent files\n#              are loaded. You can specify the volume by filesystem\n#              label, by partition label, or by partition GUID number\n#              (but NOT yet by filesystem UUID number).\n#  loader    - identifies the boot loader file\n#  initrd    - Specifies an initial RAM disk file\n#  icon      - specifies a custom boot loader icon\n#  ostype    - OS type code to determine boot options available by\n#              pressing Insert. Valid values are \"MacOS\", \"Linux\",\n#              \"Windows\", and \"XOM\". Case-sensitive.\n#  graphics  - set to \"on\" to enable graphics-mode boot (useful\n#              mainly for MacOS) or \"off\" for text-mode boot.\n#              Default is auto-detected from loader filename.\n#  options   - sets options to be passed to the boot loader; use\n#              quotes if more than one option should be passed or\n#              if any options use characters that might be changed\n#              by rEFInd parsing procedures (=, /, #, or tab).\n#  disabled  - use alone or set to \"yes\" to disable this entry.\n#\n# Note that you can use either DOS/Windows/EFI-style backslashes (\\)\n# or Unix-style forward slashes (/) as directory separators. Either\n# way, all file references are on the ESP from which rEFInd was\n# launched.\n# Use of quotes around parameters causes them to be interpreted as\n# one keyword, and for parsing of special characters (spaces, =, /,\n# and #) to be disabled. This is useful mainly with the \"options\"\n# keyword. Use of quotes around parameters that specify filenames is\n# permissible, but you must then use backslashes instead of slashes,\n# except when you must pass a forward slash to the loader, as when\n# passing a root= option to a Linux kernel.\n\n# Below are several sample boot stanzas. All are disabled by default.\n# Find one similar to what you need, copy it, remove the \"disabled\" line,\n# and adjust the entries to suit your needs.\n\n# A sample entry for a Linux 3.13 kernel with EFI boot stub support\n# on a partition with a GUID of 904404F8-B481-440C-A1E3-11A5A954E601.\n# This entry includes Linux-specific boot options and specification\n# of an initial RAM disk. Note uses of Linux-style forward slashes.\n# Also note that a leading slash is optional in file specifications.\nmenuentry Linux {\n    icon EFI/refind/icons/os_linux.png\n    volume 904404F8-B481-440C-A1E3-11A5A954E601\n    loader bzImage-3.3.0-rc7\n    initrd initrd-3.3.0.img\n    options \"ro root=UUID=5f96cafa-e0a7-4057-b18f-fa709db5b837\"\n    disabled\n}\n\n# Below is a more complex Linux example, specifically for Arch Linux.\n# This example MUST be modified for your specific installation; if nothing\n# else, the PARTUUID code must be changed for your disk. Because Arch Linux\n# does not include version numbers in its kernel and initrd filenames, you\n# may need to use manual boot stanzas when using fallback initrds or\n# multiple kernels with Arch. This example is modified from one in the Arch\n# wiki page on rEFInd (https://wiki.archlinux.org/index.php/rEFInd).\nmenuentry \"Arch Linux\" {\n    icon     /EFI/refind/icons/os_arch.png\n    volume   \"Arch Linux\"\n    loader   /boot/vmlinuz-linux\n    initrd   /boot/initramfs-linux.img\n    options  \"root=PARTUUID=5028fa50-0079-4c40-b240-abfaf28693ea rw add_efi_memmap\"\n    submenuentry \"Boot using fallback initramfs\" {\n        initrd /boot/initramfs-linux-fallback.img\n    }\n    submenuentry \"Boot to terminal\" {\n        add_options \"systemd.unit=multi-user.target\"\n    }\n    disabled\n}\n\n# A sample entry for loading Ubuntu using its standard name for\n# its GRUB 2 boot loader. Note uses of Linux-style forward slashes\nmenuentry Ubuntu {\n    loader /EFI/ubuntu/grubx64.efi\n    icon /EFI/refind/icons/os_linux.png\n    disabled\n}\n\n# A minimal ELILO entry, which probably offers nothing that\n# auto-detection can't accomplish.\nmenuentry \"ELILO\" {\n    loader \\EFI\\elilo\\elilo.efi\n    disabled\n}\n\n# Like the ELILO entry, this one offers nothing that auto-detection\n# can't do; but you might use it if you want to disable auto-detection\n# but still boot Windows....\nmenuentry \"Windows 7\" {\n    loader \\EFI\\Microsoft\\Boot\\bootmgfw.efi\n    disabled\n}\n\n# EFI shells are programs just like boot loaders, and can be\n# launched in the same way. You can pass a shell the name of a\n# script that it's to run on the \"options\" line. The script\n# could initialize hardware and then launch an OS, or it could\n# do something entirely different.\nmenuentry \"Windows via shell script\" {\n    icon \\EFI\\refind\\icons\\os_win.png\n    loader \\EFI\\tools\\shell.efi\n    options \"fs0:\\EFI\\tools\\launch_windows.nsh\"\n    disabled\n}\n\n# Mac OS is normally detected and run automatically; however,\n# if you want to do something unusual, a manual boot stanza may\n# be the way to do it. This one does nothing very unusual, but\n# it may serve as a starting point. Note that you'll almost\n# certainly need to change the \"volume\" line for this example\n# to work.\nmenuentry \"My Mac OS X\" {\n    icon \\EFI\\refind\\icons\\os_mac.png\n    volume \"OS X boot\"\n    loader \\System\\Library\\CoreServices\\boot.efi\n    disabled\n}\n"
  },
  {
    "path": "ubuntu/grub.cfg",
    "content": "search.fs_uuid 18f16d5a-8dea-483f-80e4-04c1685bce78 root hd0,gpt10 \nset prefix=($root)'/boot/grub'\nconfigfile $prefix/grub.cfg\n"
  }
]