************************************************************
************************************************************
*
*  Command Line Utility Readme.
*
*  This document makes references to products developed by
*  Intel. There are some restrictions on how these products
*  may be used, and what information may be disclosed to
*  others. Please read the Disclaimer section at the bottom
*  of this document, and contact your Intel field
*  representative if you would like more information.
*
************************************************************
************************************************************

************************************************************
*  
*  Intel is making no claims of usability, efficacy or 
*  warranty. The INTEL SOFTWARE LICENSE AGREEMENT contained
*  herein completely defines the license and use of this
*  software.
*
************************************************************

************************************************************
*  CONTENTS OF THIS DOCUMENT
************************************************************

This document contains the following sections:

1.  OVERVIEW
2.  SYSTEM REQUIREMENTS
3.  ENTERING THE COMMAND LINE UTILITY USER INTERFACE
4.  COMMAND LINE UTILITY USAGE
5.  USAGE SCENARIOS EXAMPLES
6.  COMMAND LINE RETURN CODES
7.  MIDDLEWARE ERROR CODES REFERENCE


************************************************************
* 1.  OVERVIEW
************************************************************

Intel(R) Rapid Storage Technology (Intel(R) RST) CLI "Pro" is 
a command line utility used to perform basic operations
on Intel(R) Optane(TM) memory-enabled systems.

Intel(R) RST CLI "Pro" supports the following functionality :
  - Enabling and disabling Intel(R) Optane(TM) memory acceleration
  - Viewing properties of disks and the Intel(R) Optane(TM) memory volume
  - Resetting Intel(R) Optane(TM) volume metadata

************************************************************
* 2.  SYSTEM REQUIREMENTS
************************************************************

Refer to Intel(R) Rapid Storage Technology product system
requirements.

**IMPORTANT NOTES**
The rstclipro binaries should be unzipped to a secured folder
to prevent unauthorized users from making unintended changes to
the system's Optane(TM) volume.


************************************************************
* 3.  ENTERING THE COMMAND LINE UTILITY USER INTERFACE
************************************************************

Use the following steps to enter command line utility:
1.  Boot the system to Windows. 
2.  Open command prompt as administrator.
3.  Run rstclipro.exe with appropriate command line parameters.


************************************************************
* 4.  COMMAND LINE UTILITY USAGE
************************************************************

   Information Options:
   ------------------------
   | Flag | Name          |
   ------------------------
   | -I   | --information |
   ------------------------

   Information Usage:
   Displays disk, volume, array, and controller information.
    --information

   Information Examples:
    --information
    --information --help
    -I


   Manage Options:
   --------------------------------
   | Flag | Name                  |
   --------------------------------
   |      | --forceAction         |
   | -Z   | --delete-all-metadata |
   | -M   | --manage              |
   --------------------------------

   Manage Usage:
   Manages arrays, volumes and disks present in the storage system.
    --manage --delete-all-metadata

   Manage Examples:
    --manage --delete-all-metadata
    -M -Z


   OptaneMemory Options:
   ---------------------------
   | Flag | Name             |
   ---------------------------
   |      | --OptaneMemory   |
   |      | --disable        |
   |      | --drive-to-accel |
   |      | --enable         |
   |      | --forceAction    |
   |      | --progress       |
   |      | --info           |
   |      | --fast-drive     |
   ---------------------------

   OptaneMemory Usage:
   Manage Optane Memory configuration.
    --OptaneMemory --enable [--fast-drive <driveId> --drive-to-accel <driveId>]
                  [--forceAction]
    --OptaneMemory --disable
                  [--forceAction]
    --OptaneMemory --progress
    --OptaneMemory --info

   OptaneMemory Examples:
    --OptaneMemory --enable
    --OptaneMemory --enable --fast-drive 0-3-0-0 --drive-to-accel 0-5-0-0
    --OptaneMemory --disable
    --OptaneMemory --help
    --OptaneMemory --info


   Version Options:
   --------------------
   | Flag | Name      |
   --------------------
   | -V   | --version |
   --------------------

   Version Usage:
   Displays version information.
    --version

   Version Examples:
    --version


   Vmd Options:
   ----------------------
   | Flag | Name        |
   ----------------------
   |      | --remap-all |
   |      | --vmd       |
   |      | --remap     |
   ----------------------

   Vmd Usage:
   Volume management device (VMD) configuration.
    --vmd --remap <scsiX>
    --vmd --remap-all

   Vmd Examples:
    --vmd --remap scsi2
    --vmd --remap-all


   DlrmStatus Options:
   -----------------------
   | Flag | Name         |
   -----------------------
   |      | --DlrmStatus |
   -----------------------

   DlrmStatus Usage:
   Displays Dlrm Status information.
    --DlrmStatus

   DlrmStatus Examples:
    --DlrmStatus


   Dlrm Options:
   -----------------
   | Flag | Name   |
   -----------------
   |      | --dlrm |
   -----------------

   Dlrm Usage:
   DLRM management
    --clear-stats
    --get-config-and-status
    --set-config
    --link-info
   Dlrm Examples:
    --get-config-and-status 0-2-0-0
    --clear-stats 0-2-0-0
    --link-info 0-2-0-0 
    --set-config 0-2-0-0 --scaling-policy 0 --min-gen 2 --max-gen 5 --slice-up-time-target 20000 --slice-down-time-target 500000 --scaling-up-factor 14 --scaling-down-factor 5


OPTIONS:

   --disable
     Separate Optane Memory into Optane drive and capacity drive.

   --disableVersionCheck
     Disables the check that verifies the major release version of the 
     command-line interface matches that of the Intel(R) Rapid Storage 
     Technology driver. Warning! Bypassing this check may lead to unexpected 
     software behavior.

   --dlrm
     DLRM management

   --DlrmStatus
     Displays Dlrm Status information.

   --drive-to-accel <<host>-<bus>-<target>-<lun>>
     Specifies a drive if accelerating a pass-through drive.

   --enable
     Create Optane Memory

   --fast-drive <<host>-<bus>-<target>-<lun>>
     Specifies fast drive that will be used as cache/accelerator. If another 
     fast is being used as cache, then that volume needs to be deleted to use 
     a new fast drive.

   --forceAction
     Forces an action to be executed

   -h,  --help
     Displays help documentation for command line utility modes, options, 
     usage, examples, and return codes. When used with a mode switch (create, 
     information, mange, modify, or accelerate), instructions for that mode 
     display. For example, --create --help displays Create option help.

   -I,  --information
     Displays disk, volume, array, and controller information.

   --info
     Lists information about Optane Memory settings.

   -M,  --manage
     Manages arrays, volumes and disks present in the storage system.

   --OptaneMemory
     Manage Optane Memory configuration.

   --progress
     Displays the progress of file cache migration.

   --remap <ScsiX>
     Pulls specified controller under VMD on next computer reboot.

   --remap-all
     Pulls all eligible controllers under VMD on next computer reboot.

   --vmd
     Volume management device (VMD) configuration.

   -V,  --version
     Displays version information.

   -Z,  --delete-all-metadata
     Deletes the metadata from all disks on the system.

************************************************************
* 5.  USAGE SCENARIOS EXAMPLES
************************************************************
The following are examples of how to use RSTCLI Pro tool to manage
Intel(R) Optane(TM) Memory volume in a system.

************************************************************
* 5.1  Usage Scenario #1
************************************************************
Description:
    The end user wants to enable Intel(R) Optane(TM) Memory volume in a Windows 10 OS system

Prerequisite:
    - Intel(R) Optane(TM) Memory M10 installed in supported M.2 NVME slot.
    - BIOS Settings:
        - SATA Mode is set to "RAID / Intel RST Premium".
        - Intel(R) Optane(TM) Memory M10 M.2 NVME slot is set to "RST Controlled".
        - (Optional) If the OS is installed on Intel(R) SSD 660p that is attached to an NVME M.2 slot,
            Then the NVME M.2 slot should also be set to "RST Controlled" if this option is availble.
    - Windows 10 x64 OS RS5 or later installed on SATA SSD/HDD drive or Intel(R) SSD 660p NVME drive.
    - Intel(R) RST driver version 17.7.x or later installed.

Procedure:
    1.    Launch CMD windows as Administrator.
    2.    Change the working directory to the directory where RSTCLI Pro executable (RstCliPro.exe) is or 
        make sure the path to the RSTCLIPro executable is added in system path.
    3.    (Optional) Check for the version of the Intel(R) RST driver currently installed.
        Command:
            RstCliPro.exe --version
        Example Output:
            Intel(R) RSTCLI
            Middleware Version: 17.7.0.1000
            Controller Intel(R) Chipset SATA/PCIe RST Premium Controller \\Scsi0 Driver Version: 17.7.0.1000
            Controller Intel(R) Chipset SATA/PCIe RST Premium Controller \\Scsi0 OROM Version: 15.7.0.3054
        Note:
            - Intel(R) RST driver and middleware version must match.
            - Intel(R) RST driver must be 17.7.0.1000 or later for the RSTCLI Pro to work.
            
    3.    Find the ID for the SATA SSD/HDD drive where the OS installed and the ID of the Intel(R) Optane(TM) Memory M10.
        Command: 
            RstCliPro.exe -I
        Below is the example output of the above command:
            ID:                              0-0-0-0
            Type:                            Disk
            Disk Type:                       SATA Disk
            Disk Link Speed:                 6 Gb/s
            State:                           Normal
            ...
            System Disk:                     True
            ...
            Usage:                           Pass through
            ...
        
            ID:                              0-3-0-0
            Type:                            Disk
            Disk Type:                       PCIE SSD
            Port Interface:                  NVMe
            Bus Width:                       X2
            Bus Speed:                       GEN3
            Host Memory Buffer supported:    No
            State:                           Normal
            ...
            System Disk:                     False
            ...
            Usage:                           Pass through
            ...
            Model:                           INTEL SSDPEK1W120GA
        
        Note:
            - The example output shows only some relavant information. Omitted information is replaced with (...)
            - Intel(R) Optane(TM) Memory M10 is referred to as "fast drive"
            - SATA SSD/HDD or Intel(R) SSD 660p NVME is referred to as "slow drive"     
            
    4.    (Optional) Delete any Intel RST metadata on fast drive and slow drive to ensure that enabling process 
        starts from a fresh point.
        Command:
            RstCliPro.exe --manage --delete-all-metadata
                or
            RstCliPro.exe -M -Z

    5.    Enable Optane Volume with the ID information found in previous command.
        Command:
            RstCliPro.exe --OptaneMemory --enable --fast-drive 0-3-0-0 --drive-to-accel 0-0-0-0
        Note:         
            - The command will take some time to complete. It should block the process until enabling process is completed.
            - If the Optane Volume is already enabled, the operation will return a non Zero code.
            
    6.    (Optional) Check for return code. Refer to section above for Return Code information
    7.    Reboot/Restart (not shutdown) the system to complete the enabling process

************************************************************
* 5.2  Usage Scenario #2
************************************************************
Description:
    The end user wants to enable Intel(R) Optane(TM) Memory volume on a system and deploy a pre-configured (IT configured) Windows 10 OS image 
    to the system's Intel Optane Memory Volume in Windows Preinstallation Environment (WinPE).
    
Prerequisite:
    - Intel(R) Optane(TM) Memory M10 installed in supported M.2 NVME slot.
    - SATA SSD/HDD connected to SATA Port or Intel(R) SSD 660p that is attached to an NVME M.2 slot.
    - BIOS Settings:
        - SATA Mode is set to "RAID / Intel RST Premium".
        - Intel(R) Optane(TM) Memory M10 M.2 NVME slot is set to "RST Controlled".
        - (Optional) If the OS is installed to Intel(R) SSD 660p that is attached to an NVME M.2 slot,
            Then the NVME M.2 slot should also be set to "RST Controlled" if this option is availble.
    - IMPORTANT information regarding installation media:
        - WinPE USB drive that has Intel(R) RST driver version 17.7.x or later injected into "boot.wim" file.
        Refer https://docs.microsoft.com/en-us/windows-hardware/manufacture/desktop/winpe-mount-and-customize
        for help on how to add Intel(R) RST driver to WinPE.
        - Intel RSTCLI Pro executable is placed on the same customized WinPE USB drive.
    - Deployed Windows OS Image must already has Intel(R) RST driver version 17.7.x or later integrated into it. 

Procedure:
    1.    Boot the system into the customized (with injected Intel RST driver) WinPE.
    2.    Use "diskpart" to create the required Windows OS partition on the SATA SSD/HDD or Intel(R) SSD 660p where the Windows OS image will be deployed.
    3.    Deploy the Windows OS Image that already has Intel(R) RST driver version 17.7.x or later integrated into it; onto the SATA SSD/HDD or Intel(R) SSD 660p.
    4.    Change the working directory to the drive and directory where RSTCLI Pro executable (RstCliPro.exe) is.
    5.    Find the ID for the SATA SSD/HDD or Intel(R) SSD 660p and the ID of the Intel(R) Optane(TM) Memory M10.
        Command: 
            RstCliPro.exe -I
        Below is the example output of the above command:
            ID:                              0-0-0-0
            Type:                            Disk
            Disk Type:                       SATA Disk
            Disk Link Speed:                 6 Gb/s
            State:                           Normal
            ...
            System Disk:                     True
            ...
            Usage:                           Pass through
            ...
            
            ID:                              0-3-0-0
            Type:                            Disk
            Disk Type:                       PCIE SSD
            Port Interface:                  NVMe
            Bus Width:                       X2
            Bus Speed:                       GEN3
            Host Memory Buffer supported:    No
            State:                           Normal
            ...
            System Disk:                     False
            ...
            Usage:                           Pass through
            ...
            Model:                           INTEL SSDPEK1W120GA
        
        Note:
            - The example output shows only some relavant information. Omitted information is replaced with (...)
            - Intel(R) Optane(TM) Memory M10 is referred to as "fast drive"
            - SATA SSD/HDD or Intel(R) SSD 660p NVME is referred to as "slow drive"     
            
    6.    Enable Optane Volume with the ID information found in previous command.
        Command:
            RstCliPro.exe --OptaneMemory --enable --fast-drive 0-3-0-0 --drive-to-accel 0-0-0-0
        Note:         
            - The command will take some time to complete. It should block the process until enabling process is completed.
            
    7.    (Optional) Check for return code. Refer to section above for Return Code information
    8.    Reboot/Restart (not shutdown) the system to complete the process.

************************************************************
* 5.3  Usage Scenario #3
************************************************************
Description:
    The end user wants to upgrade SATA SSD/HDD or Intel(R) SSD 660p NVME that is a part of an Intel Optane Memory volume 
    on the current system to a higher capacity one.

Prerequisite:
    - Assume that the system has already met all the HW and BIOS requirements for Intel(R) Optane(TM) Memory volume to be enabled in the first place.
    - Windows 10 x64 OS RS5 or later installed on SATA SSD/HDD drive or Intel(R) SSD 660p NVME drive.
    - Intel(R) RST driver version 17.7.x or later installed.
    
Procedure:
    1.    Back up all the data.
    2.    Disable Intel(R) Optane(TM) Memory volume.
        Command:
            RstCliPro.exe --OptaneMemory --disable
        Note:
            - The command will take some time to complete. It should block the process until enabling process is completed.
    3.    Reboot/Restart (not shutdown) the system to complete disabling process.
    4.    Use cloning software to clone the image on the SATA SSD/HDD or Intel(R) SSD 660p NVME drive to a bigger drive.
        Please note that for NVME SSD, only Intel(R) SSD 660p NVME is supported.
    5.    Start the system with the new drive.
    6.    Follow the steps in section 6.1 to enable Intel(R) Optane(TM) Memory volume again.
    
************************************************************
* 5.4  Usage Scenario #4
************************************************************
Description:
    The end user wants to enable Intel Optane Memory volume on a system, equipped with Intel Optane Memory H10 with Solid State Drive,
    and deploy a pre-configured (IT configured) Windows 10 OS image to the system's Intel Optane Memory Volume in Windows Preinstallation Environment (WinPE).
    
Prerequisite:
    - Intel Optane Memory H10 installed in supported M.2 NVME slot.
    - BIOS Settings:
        - SATA Mode is set to "RAID / Intel RST Premium".
        - Intel Optane Memory H10's M.2 NVME slot is set to "Not RST Controlled".
    - IMPORTANT information regarding installation media:
        - WinPE USB drive that has Intel RST driver version 17.7.x or later injected into "boot.wim" file.
        Refer https://docs.microsoft.com/en-us/windows-hardware/manufacture/desktop/winpe-mount-and-customize
        for help on how to add Intel RST driver to WinPE.
        - Intel RSTCLI Pro executable is placed on the same customized WinPE USB drive.
    - Deployed Windows OS Image must already has Intel RST driver version 17.7.x or later integrated into it. 

Procedure:
    1.    Boot the system into the customized (with injected Intel RST driver) WinPE.
    2.    Use "diskpart" to create the required Windows OS partition on the Intel Optane Memory H10's QLC NAND device where the Windows OS image will be deployed.
            Below example is diskpart output of a 256GB/1TB Intel Optane Memory H10 device. The OS is installed on Disk 1.
      =====
            Microsoft DiskPart version 10.0.17763.1

            Copyright (C) Microsoft Corporation.
            On computer: MININT-F9FTMHO

              Disk ###  Status         Size     Free     Dyn  Gpt
              --------  -------------  -------  -------  ---  ---
              Disk 0    Online           27 GB    27 GB         
              Disk 1    Online          953 GB   715 GB        *
              Disk 2    Online           14 GB      0 B        *
      =====
    3.    Deploy the Windows OS Image that already has Intel RST driver version 17.7.x or later integrated into it; onto the .
    4.    Change the working directory to the drive and directory where RSTCLI Pro executable (RstCliPro.exe) is.
    5.    Find the ID for the SATA SSD/HDD or Intel SSD 660p and the ID of the Intel Optane Memory M10.
        Command: 
            RstCliPro.exe -I
        Below is the example output of the above command:
            ID:                              0-13-0-0
            Type:                            Disk
            Disk Type:                       PCIE SSD
            Port Interface:                  NVMe
            Bus Width:                       X2
            Bus Speed:                       GEN3
            ...
            State:                           Normal
            Size:                            27 GB
            Space available for new volumes: 27 GB
            ...
            Model:                           INTEL HBRPEKNX0203AO                    

            ID:                              0-14-0-0
            Type:                            Disk
            Disk Type:                       PCIE SSD
            Port Interface:                  NVMe
            Bus Width:                       X2
            Bus Speed:                       GEN3
            ...
            State:                           Normal
            Size:                            954 GB
            Space available for new volumes: 954 GB
            ...
            Usage:                           Pass through
            Model:                           INTEL HBRPEKNX0203A                     
        
        Note:
            - The example output shows only some relavant information. Omitted information is replaced with (...)
            - Intel Optane Memory H10's Optane device is referred to as "fast drive"
            - Intel Optane Memory H10's QLC NAND device is referred to as "slow drive"
            
    6.    Enable Optane Volume with the ID information found in previous command.
        Command:
            RstCliPro.exe --OptaneMemory --enable --fast-drive 0-13-0-0 --drive-to-accel 0-14-0-0
        Note:         
            - The command will take some time to complete. It should block the process until enabling process is completed.
            
    7.    (Optional) Check for return code. Refer to section above for Return Code information
    8.    Reboot/Restart (not shutdown) the system to complete the process.


************************************************************
* 6.  COMMAND LINE RETURN CODES
************************************************************


   0,  Success 
    Request completed successfully. 

   1,  Request Failed 
    Request is formatted correctly but failed to execute. 

   2,  Invalid Request
    Unrecognized command, request was formatted incorrectly. 

   3,  Invalid Device
    Request not formatted correctly, device passed in does not exist. 

   4,  Request Unsupported
    Request is not supported with the current configuration. 

   5,  Device State Invalid
    Request is not supported with the current device state.
 
   51, Specify Optane member disks
    There are too many valid pairs for Optane enable, please specify pair using --fastDrive and --drive-to-accel. 

   52, Optane feature not supported
    Intel(R) Optane(TM) memory feature is not supported on this system.

   54, Intel(R) Optane(TM) memory M-series support is discontinued
    System Acceleration with Intel(R) Optane(TM) memory M-series is not supported in this version
    of the Intel(R) Rapid Storage Technology driver.

   55, Intel(R) Optane(TM) memory M-series used in Intel(R) Optane(TM) memory volume
    System Acceleration with Intel(R) Optane(TM) memory M-series is not supported in this version of
    the Intel(R) Rapid Storage Technology driver and will be disabled.
    Once disabled, it will not be possible to re-able the Intel(R) Optane(TM) memory volume.
    To continue, please use the '--forceAction' command line parameter.

************************************************************
* 7.  MIDDLEWARE ERROR CODES REFERENCE
************************************************************

   0x20000000     SUCCESS | No error result
   0x20000001     WIN32_ERROR | Win32 error
   0xA0000002     GENERAL_FAULT
   0xA0000003     GENERAL_UNKNOWN_ERROR
   0xA0000004     GENERAL_INVALID_VALUE
   0xA0000006     GENERAL_NULL_PARAMETER
   0xA0000008     GENERAL_INVALID_STATE
   0xA000000E     GENERAL_INSUFF_MEM
   0xA0000032     GENERAL_NOT_IMPLEMENTED
   0xA00000AA     DRIVER_BUSY
   0xA0010001     ISI_INSUFFICIENTRESOURCES | ISI Status: Insufficient Resources
   0xA0010002     ISI_INVALIDPARAMETER | ISI Status: Invalid Parameter
   0xA0010003     ISI_INVALIDHANDLE | ISI Status: Invalid Handle
   0xA0010004     ISI_INVALIDSTRIPSIZE | ISI Status: Invalid Strip Size
   0xA0010005     ISI_INVALIDSTRING | ISI Status: Invalid String
   0xA0010006     ISI_INVALIDSIZE | ISI Status: Invalid Size
   0xA0010007     ISI_INVALIDRAIDLEVEL | ISI Status: Invalid Raid Level
   0xA0010008     ISI_INVALIDSESSION | ISI Status: Invalid Session
   0xA0010009     ISI_TIMEOUT | ISI Status: Timeout
   0xA001000A     ISI_NOTIMPLEMENTED | ISI Status: Not Implemented
   0xA001000B     ISI_DUPLICATE | ISI Status: Duplicate
   0xA001000C     ISI_NOTINITIALIZED | ISI Status: Not Initialized
   0xA001000D     ISI_BUFFERTOOSMALL | ISI Status: Buffer Too Small
   0xA001000E     ISI_NOTSUPPORTED | ISI Status: Not Supported
   0xA001000F     ISI_FAILED | ISI Status: Failed
   0xA0010010     ISI_INTERNALERROR | ISI Status: Internal Error
   0xA0010011     ISI_INVALIDSCOPE | ISI Status: Invalid Scope
   0xA0010012     ISI_INVALIDSTATE | ISI Status: Invalid State
   0xA0010013     ISI_RETRIESEXCEEDED | ISI Status: Retries Exceeded
   0xA0010014     ISI_WRONGPASSWORD | ISI Status: Wrong Password
   0xA0010015     ISI_DATAEXCEEDSLIMITS | ISI Status: Data Exceeds Limits
   0xA0010016     ISI_INSUFFICIENTPRIVILEGES | ISI Status: Insufficient Privileges
   0xA0010018     ISI_INVALID_REQUEST | Inappropriate request for current driver or device state
   0xA001004B     ISI_SHRINK_FAILED_GENERIC
   0xA001004C     ISI_SHRINK_LAST_PARTITION_NOT_DATA
   0xA001004D     ISI_SHRINK_LAST_PARTITION_TOO_SMALL
   0xA001004E     ISI_SHRINK_NOT_ENOUGH_SPACE
   0xA0010050     ISI_NO_CONTROLLER_FOUND
   0xA0010051     ISI_SHRINK_REQUESTED_SIZE_LESS_THAN_MIN
   0xA0010053     ISI_SHRINK_LAST_PARTITION_NOT_SHRINKABLE
   0xA0010054     ISI_SHRINK_NOT_ENOUGH_FREE_SPACE
   0xA0010055     ISI_SHRINK_WINRE_REQUIREMENT_FAILED
   0xA0010056     ISI_SHRINK_QUERY_DISK_FOR_GPT_ATTRIBUTE_CHANGE_FAILED
   0xA0010057     ISI_SHRINK_QUERY_DISK_FOR_PARTITION_TYPE_CHANGE_FAILED
   0xA0010058     ISI_SHRINK_GET_PARTITION_PROPS_FAILED
   0xA0010059     ISI_SHRINK_INCORRECT_PARTITION_TYPE
   0xA001005A     ISI_SHRINK_CHANGE_PARTITION_TYPE_FAILED
   0xA001005B     ISI_SHRINK_CHANGE_GPT_ATTRIBUTES_FAILED
   0xA001005C     ISI_SHRINK_QUERY_DISK_FOR_FILE_SYSTEM_CHECK_FAILED
   0xA001005D     ISI_SHRINK_FILE_SYSTEM_CHECK_FAILED
   0xA001005F     ISI_EVENT_WAITINGONRESULT
   0xA0010060     ISI_EVENT_SYNCFAULT
   0xA0010061     ISI_EVENT_TIMEOUT
   0xA0010062     ISI_EVENT_WAIT_FAILED
   0xA0010063     ISI_ACTION_VALIDATOR_HAS_USER_DATA
   0xA0010064     ISI_ACTION_VALIDATOR_REBOOT_ACTION_DENIED
   0xA0010065     ISI_ACTION_VALIDATOR_ROHI_CANT_ENABLE
   0xA0010066     ISI_ACTION_VALIDATOR_CLEAR_MD_ACTION_DENIED
   0xA0010067     ISI_ACTION_VALIDATOR_DENIED
   0xA0010068     ISI_ACTION_VALIDATOR_RAID_ACTION_ON_TG
   0xA0010069     ISI_ACTION_VALIDATOR_SUB_CC_SWITCH_FEATURE_NOT_SUPPORTED | preOS or Driver does not support SubClassCode switch feature
   0xA001006A     ISI_ACTION_VALIDATOR_SUB_CC_SWITCH_FEATURE_NOT_SUPPORTED_DISK | Disk does not support SubClassCode switch feature
   0xA001006B     ISI_ACTION_VALIDATOR_DISK_NOT_PASS_THRU | Disk is not pass thru, it has iRST metadata or is otherwise claimed
   0xA001006C     ISI_DISK_IS_WINDOWS_DYNAMIC | Disk is a Windows dynamic disk - not usable by RST solution
   0xA001006D     ISI_ACTION_VMD_REMAP_UNSUPPORTED_CONTROLLER | Controller can't be remapped
   0xA001006E     ISI_ACTION_VMD_REMAP_UNSUPPORTED_REMAP_OPERATION | Remaping a scheduled controller
   0xA001006F     ISI_ACTION_VMD_REMAP_UNSUPPORTED_REVERT_OPERATION | Reverting remap on a controller that is not currently scheduled for remap
   0xA0010070     ISI_ACTION_VMD_REMAP_NOTHING_TO_REMAP | Remap all action did nothing
   0xA0010071     ISI_ACTION_VMD_REMAP_NOTHING_TO_REVERT | Revert remap all action did nothing
   0xA0010072     ISI_ACTION_VMD_REMAP_OPERATION_FAILED_READ | Reading BIOS VMD remap EFI variable failed
   0xA0010073     ISI_ACTION_VMD_REMAP_OPERATION_FAILED_WRITE | Saving to BIOS VMD remap EFI variable failed
   0xA0010074     ISI_ACTION_VMD_REMAP_OPERATION_NO_VMD_ON_SYSTEM | VMD not on system. Can't perform remap operation
   0xA0010075     ISI_ACTION_VMD_REMAP_OPERATION_FAILED_READ_TOO_SMALL | BIOS VMD remap EFI variable failed - read less bytes than expected
   0xA0010076     ISI_ACTION_VMD_REMAP_NOT_SUPPORTED | BIOS VMD remap function not supported
   0xA0010077     ISI_ACTION_VMD_REMAP_HYBRID_NOT_ALL_MEMBERS | Must remap all members of Hybrid Drive in one operation
   0xA0010078     ISI_ACTION_VMD_REMAP_HYBRID_MISSING_MEMBER | Hybrid disk cannot have only 1 member - detection error
   0xA0010079     ISI_ACTION_VMD_REMAP_PCI_SWITCH_NOT_ALL_MEMBERS | Must remap all controllers under a PCI switch in one operation
   0xA001007A     ISI_ACTION_VALIDATOR_DISK_SHADOW_MBR_ENABLED | RAID or caching operations cannot use a disk with Shadow MBR enabled
   0xA001007B     ISI_ACTION_VALIDATOR_DISK_DISCRETE_OPTANE_EOL | Discrete Optane (M-Series) support is discontinued and it's not allowed to enable NGSA with it as caching drive
   0xA001007C     ISI_ACTION_VALIDATOR_OPTANE_DISABLE_LAST_TIME | Discrete Optane (M-Series) support is discontinued. After disable there will be no way to enable NGSA with that drive as cache
   0xA001007D     ISI_ACTION_VALIDATOR_MMG_ACTION_FORBIDDEN | Mammoth glacier can't be used for RAID nor NGSA. It is compatible only with BNCM.
   0xA001007E     ISI_ACTION_VALIDATOR_DISK_LUN_NOT_0 | RST supports RAID members with LUN 0 only. Additional NVMe namespaces are an example of disks with LUN other than 0.
   0xA00100C9     ISI_FAULT | Fault in ISI
   0xA003012D     IOCTL_FAULT | IOCTL Error: Fault in IOCTL code.
   0xA003012E     IOCTL_NOT_PERFORMED | IOCTL Error: IOCTL not invoked.
   0xA003012F     IOCTL_PREVIOUSLY_PERFORMED | IOCTL Error: IOCTL was previously performed, must call reset() to reuse instance.
   0xA0030130     IOCTL_NO_ASYNC_INVOKE | IOCTL Error: Asynchronous invoke not permitted in this class.
   0xA0030131     IOCTL_PENDING | IOCTL Error: Asynchronous invoke pending.
   0xA0030132     IOCTL_IOCTL_ERROR | IOCTL Error: Error in IOCTL call.
   0xA0030133     IOCTL_BAD_RESULTS | IOCTL Error: Results from driver failed verification.
   0xA0030134     IOCTL_LOCK_TIMEOUT | IOCTL Error: Thread failed to acquire the lock before timeout.
   0xA0030135     IOCTL_LOCK_BAD_FREE | IOCTL Error: Invalid unlock attempted.
   0xA0030136     IOCTL_LOCK_RELOCK | IOCTL Error: Owining thread attempted to relock.
   0xA0030137     IOCTL_IN_BUFFER_SIZE | IOCTL Error: Input buffer size is incorrect (usually too small).
   0xA0030138     IOCTL_OUT_BUFFER_SIZE | IOCTL Error: Output buffer size is incorrect (usually too small).
   0xA0030139     IOCTL_CONFIG_BUFFER_SIZE | IOCTL Error: RAID Get Set Config buffer size is too small (DataTransferLength).
   0xA003013A     IOCTL_BAD_RAID_CONFIG_GROUP | IOCTL Error: RAID Config Group has not been set.
   0xA003013B     IOCTL_BAD_RAID_DIRECTION | IOCTL Error: RAID Direction (Get or Set has not been set.
   0xA003013C     IOCTL_NEW_VALUE_NOT_SET | IOCTL Error: RAID Set Config value has not been set.
   0xA003013D     IOCTL_ZERO_LEN_SERIALNO | IOCTL Error: Volume name (Serial Number) cannot be empty string.
   0xA003013E     IOCTL_SERIALNO_TOO_LONG | IOCTL Error: Volume name (Serial Number) is too long.
   0xA003013F     IOCTL_SERIALNO_WHITESPACE | IOCTL Error: Volume name (Serial Number) cannot start with whitespace.
   0xA0030140     IOCTL_SERIALNO_INVALID | IOCTL Error: Volume name (Serial Number) contains invalid character(s).
   0xA0030141     IOCTL_SIMULATOR_NOT_FOUND | IOCTL Error: Driver Simulator not found.
   0xA0030142     IOCTL_INTERFACE_NOT_SUPPORTED | IOCTL Error: Interface version not supported
   0xA0040400     DRIVER_FAULT | DRIVER Error: Fault in Driver Code.
   0xA0040401     DRIVER_UNEXPECTED | DRIVER Error: Unexpected Driver Response.
   0xA0040402     DRIVER_BUFFER_OVERRUN | DRIVER Error: Driver response overran output buffer.
   0xA0040403     DRIVER_SHORT_RESPONSE | DRIVER Error: Driver response too short.
   0xA0040404     DRIVER_SRB_IO_RESPONSE | DRIVER Error: SRB_IO_CONTROL.ReturnCode indicates error.
   0xA0040405     DRIVER_ISM_VALIDATION_ERR | DRIVER Error: RAID ISM response buffer failed field-level validation.
   0xA0040406     DRIVER_CSMI_ERROR_STATUS | DRIVER Error: CSMI SSP Passthru returned error status.
   0xA0040407     DRIVER_CSMI_CRITICAL_ERROR | DRIVER Error: CSMI SSP Passthru returned error on mandatory command.
   0xA0050000     RAID_ISM_STS_OK | RAID ISM Status: No Error
   0xA0050001     RAID_ISM_STS_ERROR | RAID ISM Status: STS Error
   0xA0050002     RAID_ISM_BAD_KEY_CONTINUE | RAID ISM Status: Bad Key - Continue
   0xA0050003     RAID_ISM_BAD_KEY_ABORT | RAID ISM Status: Bad Key - Abort
   0xA0050004     RAID_ISM_SCALAR_ERROR | RAID ISM Status: Scalar Error
   0xA0050005     RAID_ISM_INVALID_GROUP_ID | RAID ISM Status: Invalid Group ID
   0xA0050006     RAID_ISM_NO_SUCH_FIELD | RAID ISM Status: No Such Field
   0xA0050007     RAID_ISM_TABLE_ERROR | RAID ISM Status: Table Error
   0xA0050008     RAID_ISM_DISK_TABLE_FULL | RAID ISM Status: Disk Table Full
   0xA0050009     RAID_ISM_PENDING | RAID ISM Status: Pending
   0xA005000A     RAID_ISM_INVALID_REQUEST | RAID ISM Status: Invalid Request
   0xA005000B     RAID_ISM_INVALID_PARAMETER | RAID ISM Status: Inavalid Parameter
   0xA005000C     RAID_ISM_AOAC_NOT_CONFIGURED
   0xA0060000     CFG_OK | RAID Config Status: Ok
   0xA0060001     CFG_HELP | RAID Config Status: Help
   0xA0060002     CFG_VOLUME_TABLE_FULL | RAID Config Status: Volume Table Full.
   0xA0060003     CFG_VOLUME_NAME_EMBEDDED_SPACES | RAID Config Status: Volume Name has embedded spaces.
   0xA0060004     CFG_DISK_TABLE_FULL | RAID Config Status: Disk Table Full.
   0xA0060005     CFG_VOLUME_NAME_TOO_SHORT | RAID Config Status: Volume Name too Short.
   0xA0060006     CFG_VOLUME_NAME_TOO_LONG | RAID Config Status: Volume Name too Long.
   0xA0060007     CFG_VOLUME_NAME_NOT_UNIQUE | RAID Config Status: Volume Name Not Unique.
   0xA0060008     CFG_NO_MEMBERS_SELECTED | RAID Config Status: No Members Selected.
   0xA0060009     CFG_TOO_FEW_MEMBERS_SELECTED | RAID Config Status: Too Few Members Selected.
   0xA006000A     CFG_TOO_MANY_MEMBERS_SELECTED | RAID Config Status: Too Many Members Selected.
   0xA006000B     CFG_VOLUME_NEEDS_THREE_MEMBERS | RAID Config Status: Volume Needs At Least Three Members.
   0xA006000C     CFG_TOO_MANY_DISKS_ONLINE | RAID Config Status: Too Many Disks Online.
   0xA006000D     CFG_ARRAY_NOT_STABLE | RAID Config Status: Array Not Stable.
   0xA006000E     CFG_NOT_ENOUGH_DISK_SPACE | RAID Config Status: Not Enough Available DiskS pace.
   0xA006000F     CFG_RAID3_STRIPE_TOO_BIG | RAID Config Status: Raid3 Stripe Too Big.
   0xA0060010     CFG_VOLUME_NAME_ALL_NUMERIC | RAID Config Status: Volume Name All Numeric.
   0xA0060011     CFG_DISK_TOO_SMALL_FOR_ARRAY | RAID Config Status: Disk Too Small For Array.
   0xA0060012     CFG_VOLUME_NOT_FOUND | RAID Config Status: Volume Not Found.
   0xA0060013     CFG_OPERATION_NOT_IMPLEMENTED | RAID Config Status: Operation Not Implemented.
   0xA0060014     CFG_VOLUME_NAME_ILLEGAL_CHARACTERS | RAID Config Status: Volume Name has Illegal Characters.
   0xA0060015     CFG_VOLUME_NAME_MUST_START_ALPHA | RAID Config Status: Volume Name Must Start Alpha.
   0xA0060016     CFG_VOL_ACTIONS_IN_PROGRESS | RAID Config Status: Volume Actions Still in Progress.
   0xA0060017     CFG_NOT_ENOUGH_RESOURCES | RAID Config Status: Not Enough Resources.
   0xA0060018     CFG_ABORT_MIGRATION_FAILED | RAID Config Status: Abort Migration Failed.
   0xA0060019     CFG_INITIALIZE_PARITY_FAILED | RAID Config Status: Initialize Parity Failed.
   0xA006001A     CFG_VERIFY_PARITY_FAILED | RAID Config Status: Verify Parity Failed.
   0xA006001B     CFG_CONFIG_HAS_CHANGED | RAID Config Status: Config has Changed.
   0xA006001C     CFG_REQUEST_OVERLAP | RAID Config Status: Request Overlap.
   0xA006001D     CFG_UNSPECIFIED_ERROR | RAID Config Status: Unspecified Error.
   0xA006001E     CFG_VOLUME_ALREADY_MIGRATING | RAID Config Status: Volume Already Migrating.
   0xA006001F     CFG_VOLUME_RSV_REL_RESET_ERROR | RAID Config Status: Volume Rsv Rel Reset Error.
   0xA0060020     CFG_VOLUME_DELETED_ACTION_NOT_DONE | RAID Config Status: Volume Deleted Action Not Done.
   0xA0060021     CFG_DISK_DELETED_ACTION_NOT_DONE | RAID Config Status: Disk Deleted Action Not Done.
   0xA0060022     CFG_DISK_NOT_FOUND | RAID Config Status: Disk Not Found.
   0xA0060023     CFG_DISK_ACTIONS_STILL_IN_PROGRESS | RAID Config Status: Disk Actions Still in Progress.
   0xA0060024     CFG_ILLEGAL_DISK_ACTION | RAID Config Status: Illegal Disk Action.
   0xA0060025     CFG_RAID_STRIP_SIZE_INVALID | RAID Config Status: RAID Strip Size Invalid.
   0xA0060026     CFG_ACTION_IGNORED_DISK_FAILURE | RAID Config Status: Action Ignored Disk Failure.
   0xA0060027     CFG_ACTION_IGNORED_ARRAY_REBUILD | RAID Config Status: Action Ignored Array Rebuilding.
   0xA0060028     CFG_ARRAY_NOT_NORMAL | RAID Config Status: Array is not in normal state.
   0xA0060029     CFG_RAID_LEVEL_INVALID | RAID Config Status: RAID level is invalid.
   0xA006002A     CFG_ARRAY_HAS_MULTIPLE_VOLUMES | RAID Config Status: Array has multiple volumes.
   0xA006002B     CFG_INVALID_PARAMETER | RAID Config Status: Invalid Parameter
   0xA006002C     CFG_NV_CACHE_IN_USE | RAID Config Status: NVM Cache In Use
   0xA006002D     CFG_NV_CACHE_NOT_PRESENT | RAID Config Status: NVM Cache Not Present
   0xA006002E     CFG_NV_CACHE_TOO_BIG | NVM Cache too big
   0xA006002F     CFG_AOAC_ERROR
   0xA0060030     CFG_INVALID_SPINDOWN_POLICY
   0xA0060031     CFG_INVALID_ERROR_CODE | RAID Config Status: Invalid Error Code
   0xA0070000     OPTANE_UNKNOWN
   0xA0070001     OPTANE_CONCATENATE_DRIVER_DISKSARENOTVALID
   0xA0070002     OPTANE_CONCATENATE_DRIVER_VOLUMENOTEXIST
   0xA0070003     OPTANE_CONCATENATE_DRIVER_PLATFORMNOTSUPPORTED
   0xA0070004     OPTANE_CONCATENATE_DRIVER_CONCATENATIONVOLUMEALREADYEXIST
   0xA0070005     OPTANE_CONCATENATE_DRIVER_OSONWRONGDISK
   0xA0070006     OPTANE_CONCATENATE_DRIVER_FILECACHESIZETOOBIG
   0xA0070007     OPTANE_CONCATENATE_DRIVER_FILECACHESIZETOOSMALL
   0xA0070008     OPTANE_CONCATENATE_DRIVER_NOSPACEFORMETADATA
   0xA0070009     OPTANE_CONCATENATE_DRIVER_INTERNALERROR
   0xA007000A     OPTANE_CONCATENATE_DRIVER_CONFIGURATIONNOTSUPPORTED
   0xA007000B     OPTANE_CONCATENATE_DRIVER_STARTBOUNDARYTOOSMALL
   0xA007000C     OPTANE_CONCATENATE_ISDI2_ALREADYENABLED
   0xA007000D     OPTANE_CONCATENATE_ISDI2_FASTMEDIANOTCLEAN
   0xA007000E     OPTANE_BLOCK_CACHEVOLUMEALREADYPRESENT
   0xA007000F     OPTANE_FASTMEDIAINVALIDFORCACHE
   0xA0070010     OPTANE_FASTMEDIATOOSMALLFORCACHE
   0xA0070011     OPTANE_UNALLOCATEDSPACEINVALID
   0xA0070012     OPTANE_BLOCK_CACHE_SIZEINVALID
   0xA0070013     OPTANE_BLOCKCACHECREATIONFAILED
   0xA0070014     OPTANE_SET_BLOCKCACHE_ACCELERATEMODEFAILED
   0xA0070015     OPTANE_CONCATENATE_ISDI2_ACCELERATEWITHBLOCKCACHEFAILED
   0xA0070016     OPTANE_CONCATENATE_ISDI2_SPECIFIEDFILECACHETOOBIG
   0xA0070017     OPTANE_CONCATENATE_ISDI2_NODISKPAIRFOUND
   0xA0070018     OPTANE_CONCATENATE_ISDI2_MANYDISKPAIRFOUND
   0xA0070019     OPTANE_DRIVER_FEATURENOTSUPPORTED
   0xA007001A     OPTANE_CONCATENATE_DRIVER_DISKPAIRDISKIDAREEQUAL
   0xA007001B     OPTANE_CONCATENATE_DRIVER_DISKPAIRFASTDISKNOTSUPPORTED
   0xA007001C     OPTANE_CONCATENATE_DRIVER_DISKPAIRSLOWDISKNOTSUPPORTED
   0xA007001D     OPTANE_CONCATENATE_DRIVER_DISKPAIRFASTDISKISTOOBIG
   0xA007001E     OPTANE_CONCATENATE_DRIVER_DISKPAIRINTERNALERROR
   0xA007001F     OPTANE_ISDI2_SERVICECOMMANDNOTCREATED
   0xA0070020     OPTANE_ISDI2_MIGRATIONSERVICENOTFOUND
   0xA0070021     OPTANE_ISDI2_MINIFILTERSERVICENOTFOUND
   0xA0070022     OPTANE_SEPARATE_DRIVER_CONCATENATEDVOLUMENOTEXIST
   0xA0070023     OPTANE_SEPARATE_DRIVER_MIGRATIONALREADYRUNNING
   0xA0070024     OPTANE_SEPARATE_ISDI2_OPTANEVOLUMENOTFOUND
   0xA0070025     OPTANE_DEACCELERATEFROMBLOCKCACHEFAILED
   0xA0070026     OPTANE_SEPARATE_ISDI2_DEACCELERATEFROMBLOCKCACHEFAILED
   0xA0070027     OPTANE_SEPARATE_ISDI2_DESTROYINGBLOCKCACHEFAILED
   0xA0070028     OPTANE_CONCATENATE_DRIVER_DISKINTERNALERROR
   0xA0070029     OPTANE_CONCATENATE_DRIVER_DISKVOLUMENOTEXIST
   0xA007002A     OPTANE_CONCATENATE_DRIVER_DISKISNOTDISK
   0xA007002B     OPTANE_CONCATENATE_DRIVER_DISKINCORRECTBLOCKSIZE
   0xA007002C     OPTANE_CONCATENATE_DRIVER_DISKTOOSMALL
   0xA007002D     OPTANE_CONCATENATE_DRIVER_DISKINCORRECTDISKTYPE
   0xA007002E     OPTANE_CONCATENATE_DRIVER_DISKINCORRECTPARTITIONTYPE
   0xA007002F     OPTANE_DRIVER_METADATAOPERATION_DISKNOTEXIST
   0xA0070030     OPTANE_DRIVER_METADATAOPERATION_FAILED
   0xA0070031     OPTANE_ISDI2_SETTING_BLOCK_CACHE_TO_SAFE_FAILED
   0xA0070032     OPTANE_CONCATENATE_ISDI2_DISKCONTAINSSYSTEMCOMPONENTS
   0xA0070033     OPTANE_SMART_EVENT_ON_SLOW
   0xA0070034     OPTANE_SMART_EVENT_ON_FAST
   0xA0070035     OPTANE_BAD_BLOCK_DETECTED
   0xA0070036     OPTANE_MIGRATION_FAILURE_ROLLBACK
   0xA0070037     OPTANE_CRITICAL_SECTION_NOT_OBTAINED
   0xA0070038     OPTANE_CRITICAL_SECTION_RE_ENTRY
   0xA00A0000     PINNING_UNAVALIABLE
   0xA00A0001     PINNING_PICK_FILE
   0xA00A0002     PINNING_PICK_FOLDER
   0xA00A0003     PINNING_PICK_APP
   0xA00A000B     PINNING_FILES_AND_FOLDERS_REFRESH
   0xA00A000D     PINNING_APPS_REFRESH
   0xA00A0015     PINNING_PIN_FILE_OR_FOLDER
   0xA00A0017     PINNING_PIN_APP
   0xA00A001F     PINNING_UNPIN_FILE_OR_FOLDER
   0xA00A0021     PINNING_UNPIN_APP
   0xA00A0029     PINNING_AVAIL_COMMUNICATION_ERROR
   0xA00A002A     PINNING_AVAIL_IN_PROGRESS
   0xA00A002B     PINNING_AVAIL_OPTANE_DISABLED
   0xA00A002C     PINNING_AVAIL_SMALL_CACHE
   0xA00A002D     PINNING_AVAIL_UNKNOWN_ISSUE
   0xA00A002E     PINNING_AVAIL_CONTROLLER_UNSUPPORTED
   0xA00A002F     PINNING_AVAIL_DATA_DRIVE_UNSUPPORTED
   0xA00A0030     PINNING_AVAIL_SMALL_SKU
   0xA00A0031     PINNING_FILE_CACHE_FULL
   0xA00A0032     PINNING_FILE_CACHE_ALMOST_FULL
   0xA00A0033     PINNING_DIRECTORY_NOT_FOUND
   0xA00A0034     PINNING_APP_NOT_FOUND
   0xA00A0035     PINNING_ACCESS_DENIED
   0xA00A0036     PINNING_FILE_CACHE_DISABLED

************************************************************
* Boost Software License - Version 1.0 - August 17th, 2003
************************************************************

Permission is hereby granted, free of charge, to any person or organization
obtaining a copy of the software and accompanying documentation covered by
this license (the "Software") to use, reproduce, display, distribute,
execute, and transmit the Software, and to prepare derivative works of the
Software, and to permit third-parties to whom the Software is furnished to
do so, all subject to the following:

The copyright notices in the Software and this entire statement, including
the above license grant, this restriction and the following disclaimer,
must be included in all copies of the Software, in whole or in part, and
all derivative works of the Software, unless such copies or derivative
works are solely in the form of machine-executable object code generated by
a source language processor.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
DEALINGS IN THE SOFTWARE.


************************************************************
* DISCLAIMER
************************************************************

INFORMATION IN THIS DOCUMENT IS PROVIDED IN CONNECTION WITH INTEL PRODUCTS.
NO LICENSE, EXPRESS OR IMPLIED, BY ESTOPPEL OR OTHERWISE, TO ANY
INTELLECTUAL PROPERTY RIGHTS IS GRANTED BY THIS DOCUMENT. EXCEPT AS
PROVIDED IN INTEL'S TERMS AND CONDITIONS OF SALE FOR SUCH PRODUCTS, INTEL
ASSUMES NO LIABILITY WHATSOEVER AND INTEL DISCLAIMS ANY EXPRESS OR IMPLIED
WARRANTY, RELATING TO SALE AND/OR USE OF INTEL PRODUCTS INCLUDING LIABILITY
OR WARRANTIES RELATING TO FITNESS FOR A PARTICULAR PURPOSE,
MERCHANTABILITY, OR INFRINGEMENT OF ANY PATENT, COPYRIGHT OR OTHER
INTELLECTUAL PROPERTY RIGHT.

UNLESS OTHERWISE AGREED IN WRITING BY INTEL, THE INTEL PRODUCTS ARE NOT 
DESIGNED NOR INTENDED FOR ANY APPLICATION IN WHICH THE FAILURE OF THE INTEL
PRODUCT COULD CREATE A SITUATION WHERE PERSONAL INJURY OR DEATH MAY OCCUR.

Intel may make changes to specifications and product descriptions at any
time, without notice. Designers must not rely on the absence or 
characteristics of any features or instructions marked "reserved" or "undefined". 
Intel reserves these for future definition and shall have no
responsibility whatsoever for conflicts or incompatibilities arising from 
future changes to them. The information here is subject to change without 
notice. Do not finalize a design with this information.

The products described in this document may contain design defects or
errors known as errata which may cause the product to deviate from 
published specifications. Current characterized errata are available on 
request.

Contact your local Intel sales office or your distributor to obtain the 
latest specifications and before placing your product order.

Copies of documents which have an order number and are referenced in this
document, or other Intel literature, may be obtained by calling 
1-800-548-4725, or go to: http://www.intel.com/#/en_us_01

Intel(R) is a trademark of Intel Corporation in the U.S. and other 
countries.

* Other names and brands may be claimed as the property of others
        
Copyright (C), Intel Corporation. All rights reserved.
************************************************************
* INTEL SOFTWARE LICENSE AGREEMENT
************************************************************

SOFTWARE LICENSE AGREEMENT

DO NOT DOWNLOAD, INSTALL, ACCESS, COPY, OR USE ANY PORTION OF THE SOFTWARE UNTIL YOU HAVE READ AND ACCEPTED THE TERMS AND CONDITIONS OF THIS AGREEMENT. BY INSTALLING, COPYING, ACCESSING, OR USING THE SOFTWARE, YOU AGREE TO BE LEGALLY BOUND BY THE TERMS AND CONDITIONS OF THIS AGREEMENT. If You do not agree to be bound by, or the entity for whose benefit You act has not authorized You to accept, these terms and conditions, do not install, access, copy, or use the Software and destroy all copies of the Software in Your possession.

This SOFTWARE LICENSE AGREEMENT (this “Agreement”) is entered into between Intel Corporation, a Delaware corporation (“Intel”) and You. “You” refers to you or your employer or other entity for whose benefit you act, as applicable. If you are agreeing to the terms and conditions of this Agreement on behalf of a company or other legal entity, you represent and warrant that you have the legal authority to bind that legal entity to the Agreement, in which case, "You" or "Your" shall be in reference to such entity. Intel and You are referred to herein individually as a “Party” or, together, as the “Parties”.

The Parties, in consideration of the mutual covenants contained in this Agreement, and for other good and valuable consideration, the receipt and sufficiency of which they acknowledge, and intending to be legally bound, agree as follows: 

1. PURPOSE. You seek to obtain, and Intel desires to provide You, under the terms of this Agreement, Software solely for Your efforts to develop and distribute products integrating Intel hardware and Intel software. “Software” refers to certain software or other collateral, including, but not limited to, related components, operating system, application program interfaces, device drivers, associated media, printed or electronic documentation and any updates, upgrades or releases thereto associated with Intel product(s), software or service(s). “Intel-based product” refers to a device that includes, incorporates, or implements Intel product(s), software or service(s).

2. LIMITED LICENSE. Conditioned on Your compliance with the terms and conditions of this Agreement, Intel grants to You a limited, nonexclusive, nontransferable, revocable, worldwide, fully paid-up license during the term of this Agreement, without the right to sublicense, under Intel’s copyrights (subject to any third party licensing requirements), to (i) internally prepare derivative works (as defined in 17 U.S.C. § 101) of the Software (“Derivatives”), if provided or otherwise made available by Intel in source code form, and reproduce the Software, including Derivatives, in each case only for Your own internal evaluation, testing, validation, and development of Intel-based products and any associated maintenance thereof; (ii) reproduce, display, and publicly perform an object code representation of the Software, including Your Derivatives, in each case only when integrated with and executed by an Intel-based product, subject to any third party licensing requirements; and (iii) distribute an object code representation of the Software, provided by Intel, or of any Derivatives created by You, solely as embedded in or for execution on an Intel-based product, and if to an end user, pursuant to a license agreement with terms and conditions at least as restrictive as those contained in the Intel End User Software License Agreement in Appendix A hereto.

If You are not the final manufacturer or vendor of an Intel-based product incorporating or designed to incorporate the Software, You may transfer a copy of the Software, including any Derivatives (and related end user documentation) created by You to Your Original Equipment Manufacturer (OEM), Original Device Manufacturer (ODM), distributors, or system integration partners (“Your Partner”) for use in accordance with the terms and conditions of this Agreement, provided Your Partner agrees to be fully bound by the terms hereof and provided that You will remain fully liable to Intel for the actions and inactions of Your Partner(s).

3. LICENSE RESTRICTIONS. All right, title and interest in and to the Software and associated documentation are and will remain the exclusive property of Intel and its licensors or suppliers. Unless expressly permitted under the Agreement, You will not, and will not allow any third party to (i) use, copy, distribute, sell or offer to sell the Software or associated documentation; (ii) modify, adapt, enhance, disassemble, decompile, reverse engineer, change or create derivative works from the Software except and only to the extent as specifically required by mandatory applicable laws or any applicable third party license terms accompanying the Software; (iii) use or make the Software available for the use or benefit of third parties; or (iv) use the Software on Your products other than those that include the Intel hardware product(s), platform(s), or software identified in the Software; or (v) publish or provide any Software benchmark or comparison test results. You acknowledge that an essential basis of the bargain in this Agreement is that Intel grants You no licenses or other rights including, but not limited to, patent, copyright, trade secret, trademark, trade name, service mark or other intellectual property licenses or rights with respect to the Software and associated documentation, by implication, estoppel or otherwise, except for the licenses expressly granted above. You acknowledge there are significant uses of the Software in its original, unmodified and uncombined form. You may not remove any copyright notices from the Software.

4. LICENSE TO FEEDBACK. This Agreement does not obligate You to provide Intel with materials, information, comments, suggestions, Your Derivatives or other communication regarding the features, functions, performance or use of the Software (“Feedback”). If any portion of the Software is provided or otherwise made available by Intel in source code form, to the extent You provide Intel with Feedback in a tangible form, You grant to Intel and its affiliates a non-exclusive, perpetual, sublicenseable, irrevocable, worldwide, royalty-free, fully paid-up and transferable license, to and under all of Your intellectual property rights, whether perfected or not, to publicly perform, publicly display, reproduce, use, make, have made, sell, offer for sale, distribute, import, create derivative works of and otherwise exploit any comments, suggestions, descriptions, ideas, Your Derivatives or other feedback regarding the Software provided by You or on Your behalf.

5. OPEN SOURCE STATEMENT. The Software may include Open Source Software (OSS) licensed pursuant to OSS license agreement(s) identified in the OSS comments in the applicable source code file(s) or file header(s) provided with or otherwise associated with the Software. Neither You nor any OEM, ODM, customer, or distributor may subject any proprietary portion of the Software to any OSS license obligations including, without limitation, combining or distributing the Software with OSS in a manner that subjects Intel, the Software or any portion thereof to any OSS license obligation. Nothing in this Agreement limits any rights under, or grants rights that supersede, the terms of any applicable OSS license.

6. THIRD PARTY SOFTWARE. Certain third party software provided with or within the Software may only be used (a) upon securing a license directly from the owner of the software or (b) in combination with hardware components purchased from such third party and (c) subject to further license limitations by the software owner. A listing of any such third party limitations is in one or more text files accompanying the Software. You acknowledge Intel is not providing You with a license to such third party software and further that it is Your responsibility to obtain appropriate licenses from such third parties directly.

7. CONFIDENTIALITY. The terms and conditions of this Agreement, exchanged confidential information, as well as the Software are subject to the terms and conditions of the Non-Disclosure Agreement(s) or Intel Pre-Release Loan Agreement(s) (referred to herein collectively or individually as “NDA”) entered into by and in force between Intel and You, and in any case no less confidentiality protection than You apply to Your information of similar sensitivity. If You would like to have a contractor perform work on Your behalf that requires any access to or use of Software, You must obtain a written confidentiality agreement from the contractor which contains terms and conditions with respect to access to or use of Software no less restrictive than those set forth in this Agreement, excluding any distribution rights and use for any other purpose, and You will remain fully liable to Intel for the actions and inactions of those contractors. You may not use Intel's name in any publications, advertisements, or other announcements without Intel's prior written consent.

8. NO OBLIGATION; NO AGENCY. Intel may make changes to the Software, or items referenced therein, at any time without notice. Intel is not obligated to support, update, provide training for, or develop any further version of the Software or to grant any license thereto. No agency, franchise, partnership, joint-venture, or employee-employer relationship is intended or created by this Agreement.

9. EXCLUSION OF WARRANTIES. THE SOFTWARE IS PROVIDED "AS IS" WITHOUT ANY EXPRESS OR IMPLIED WARRANTY OF ANY KIND INCLUDING WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT, OR FITNESS FOR A PARTICULAR PURPOSE. Intel does not warrant or assume responsibility for the accuracy or completeness of any information, text, graphics, links or other items within the Software.

10. LIMITATION OF LIABILITY. IN NO EVENT WILL INTEL OR ITS AFFILIATES, LICENSORS OR SUPPLIERS (INCLUDING THEIR RESPECTIVE DIRECTORS, OFFICERS, EMPLOYEES, AND AGENTS) BE LIABLE FOR ANY DAMAGES WHATSOEVER (INCLUDING, WITHOUT LIMITATION, LOST PROFITS, BUSINESS INTERRUPTION, OR LOST DATA) ARISING OUT OF OR IN RELATION TO THIS AGREEMENT, INCLUDING THE USE OF OR INABILITY TO USE THE SOFTWARE, EVEN IF INTEL HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. SOME JURISDICTIONS PROHIBIT EXCLUSION OR LIMITATION OF LIABILITY FOR IMPLIED WARRANTIES OR CONSEQUENTIAL OR INCIDENTAL DAMAGES, SO THE ABOVE LIMITATION MAY IN PART NOT APPLY TO YOU. THE SOFTWARE LICENSED HEREUNDER IS NOT DESIGNED OR INTENDED FOR USE IN ANY MEDICAL, LIFE SAVING OR LIFE SUSTAINING SYSTEMS, TRANSPORTATION SYSTEMS, NUCLEAR SYSTEMS, OR FOR ANY OTHER MISSION CRITICAL APPLICATION IN WHICH THE FAILURE OF THE SOFTWARE COULD LEAD TO PERSONAL INJURY OR DEATH. YOU MAY ALSO HAVE OTHER LEGAL RIGHTS THAT VARY FROM JURISDICTION TO JURISDICTION. THE LIMITED REMEDIES, WARRANTY DISCLAIMER AND LIMITED LIABILITY ARE FUNDAMENTAL ELEMENTS OF THE BASIS OF THE BARGAIN BETWEEN INTEL AND YOU. YOU ACKNOWLEDGE INTEL WOULD BE UNABLE TO PROVIDE THE SOFTWARE WITHOUT SUCH LIMITATIONS. YOU WILL INDEMNIFY AND HOLD INTEL AND ITS AFFILIATES, LICENSORS AND SUPPLIERS (INCLUDING THEIR RESPECTIVE DIRECTORS, OFFICERS, EMPLOYEES, AND AGENTS) HARMLESS AGAINST ALL CLAIMS, LIABILITIES, LOSSES, COSTS, DAMAGES, AND EXPENSES (INCLUDING REASONABLE ATTORNEY FEES), ARISING OUT OF, DIRECTLY OR INDIRECTLY, THE DISTRIBUTION OF THE SOFTWARE AND ANY CLAIM OF PRODUCT LIABILITY, PERSONAL INJURY OR DEATH ASSOCIATED WITH ANY UNINTENDED USE, EVEN IF SUCH CLAIM ALLEGES THAT INTEL OR AN INTEL AFFILIATE, LICENSORS OR SUPPLIER WAS NEGLIGENT REGARDING THE DESIGN OR MANUFACTURE OF THE SOFTWARE.

11. TERMINATION AND SURVIVAL. Intel may terminate this Agreement for any reason with thirty (30) days’ notice and immediately if You or someone acting on Your behalf or at Your behest violates any of its terms or conditions. Upon termination, You will immediately destroy and ensure the destruction of the Software or return all copies of the Software to Intel (including providing certification of such destruction or return back to Intel). Upon termination of this Agreement, all licenses granted to You hereunder terminate immediately. All Sections of this Agreement, except Section 2, will survive termination.

12. GOVERNING LAW AND JURISDICTION. This Agreement and any dispute arising out of or relating to it will be governed by the laws of the U.S.A. and Delaware, without regard to conflict of laws principles. The Parties exclude the application of the United Nations Convention on Contracts for the International Sale of Goods (1980). The state and federal courts sitting in Delaware, U.S.A. will have exclusive jurisdiction over any dispute arising out of or relating to this Agreement. The Parties consent to personal jurisdiction and venue in those courts. A Party that obtains a judgment against the other Party in the courts identified in this section may enforce that judgment in any court that has jurisdiction over the Parties.

13. EXPORT REGULATIONS/EXPORT CONTROL. You agree that neither You nor Your subsidiaries will export/re-export the Software, directly or indirectly, to any country for which the U.S. Department of Commerce or any other agency or department of the U.S. Government or the foreign government from where it is shipping requires an export license, or other governmental approval, without first obtaining any such required license or approval. In the event the Software is exported from the U.S.A. or re-exported from a foreign destination by You or Your subsidiary, You will ensure that the distribution and export/re-export or import of the Software complies with all laws, regulations, orders, or other restrictions of the U.S. Export Administration Regulations and the appropriate foreign government.

14. GOVERNMENT RESTRICTED RIGHTS. The Software is a commercial item (as defined in 48 C.F.R. 2.101) consisting of commercial computer software and commercial computer software documentation (as those terms are used in 48 C.F.R. 12.212). Consistent with 48 C.F.R. 12.212 and 48 C.F.R 227.7202-1 through 227.7202-4, You will not provide the Software to the U.S. Government. Contractor or Manufacturer is Intel Corporation, 2200 Mission College Blvd., Santa Clara, CA 95054.

15. ASSIGNMENT. You may not delegate, assign or transfer this Agreement, the license(s) granted or any of Your rights or duties hereunder, expressly, by implication, by operation of law, or otherwise and any attempt to do so, without Intel’s express prior written consent, will be null and void. Intel may assign, delegate and transfer this Agreement, and its rights and obligations hereunder, in its sole discretion.

16. ENTIRE AGREEMENT; SEVERABILITY. The terms and conditions of this Agreement and any NDA with Intel constitute the entire agreement between the parties with respect to the subject matter hereof, and merge and supersede all prior or contemporaneous agreements, understandings, negotiations and discussions. Neither Party will be bound by any terms, conditions, definitions, warranties, understandings, or representations with respect to the subject matter hereof other than as expressly provided herein. In the event any provision of this Agreement is unenforceable or invalid under any applicable law or applicable court decision, such unenforceability or invalidity will not render this Agreement unenforceable or invalid as a whole, instead such provision will be changed and interpreted so as to best accomplish the objectives of such provision within legal limits.

17. WAIVER. The failure of a Party to require performance by the other Party of any provision hereof will not affect the full right to require such performance at any time thereafter; nor will waiver by a Party of a breach of any provision hereof constitute a waiver of the provision itself.

18. PRIVACY. YOUR PRIVACY RIGHTS ARE SET FORTH IN INTEL’S PRIVACY NOTICE, WHICH FORMS A PART OF THIS AGREEMENT. PLEASE REVIEW THE PRIVACY NOTICE AT HTTP://WWW.INTEL.COM/PRIVACY TO LEARN HOW INTEL COLLECTS, USES AND SHARES INFORMATION ABOUT YOU.

APPENDIX A

INTEL END USER SOFTWARE LICENSE AGREEMENT

IMPORTANT - READ BEFORE COPYING, INSTALLING OR USING.

THE FOLLOWING NOTICE, OR TERMS AND CONDITIONS SUBSTANTIALLY IDENTICAL IN NATURE AND EFFECT, MUST APPEAR IN THE DOCUMENTATION ASSOCIATED WITH THE INTEL-BASED PRODUCT INTO WHICH THE SOFTWARE IS INSTALLED. MINIMALLY, SUCH NOTICE MUST APPEAR IN THE USER GUIDE FOR THE PRODUCT. THE TERM “LICENSEE” IN THIS TEXT REFERS TO THE END USER OF THE PRODUCT.

LICENSE. Licensee has a license under Intel’s copyrights to reproduce Intel’s Software only in its unmodified and binary form, (with the accompanying documentation, the “Software”) for Licensee’s personal use only, and not commercial use, in connection with Intel-based products for which the Software has been provided, subject to the following conditions:

(a)                Licensee may not disclose, distribute or transfer any part of the Software, and You agree to prevent unauthorized copying of the Software.

(b)               Licensee may not reverse engineer, decompile, or disassemble the Software.

(c)                Licensee may not sublicense the Software.

(d)               The Software may contain the software and other intellectual property of third party suppliers, some of which may be identified in, and licensed in accordance with, an enclosed license.txt file or other text or file.

(e)                Intel has no obligation to provide any support, technical assistance or updates for the Software.

OWNERSHIP OF SOFTWARE AND COPYRIGHTS. Title to all copies of the Software remains with Intel or its licensors or suppliers. The Software is copyrighted and protected by the laws of the United States and other countries, and international treaty provisions. Licensee may not remove any copyright notices from the Software. Except as otherwise expressly provided above, Intel grants no express or implied right under Intel patents, copyrights, trademarks, or other intellectual property rights. Transfer of the license terminates Licensee’s right to use the Software.

DISCLAIMER OF WARRANTY. The Software is provided “AS IS” without warranty of any kind, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION, WARRANTIES OF MERCHANTABILITY OR FITNESS FOR ANY PARTICULAR PURPOSE.

LIMITATION OF LIABILITY. NEITHER INTEL NOR ITS LICENSORS OR SUPPLIERS WILL BE LIABLE FOR ANY LOSS OF PROFITS, LOSS OF USE, INTERRUPTION OF BUSINESS, OR INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY KIND WHETHER UNDER THIS AGREEMENT OR OTHERWISE, EVEN IF INTEL HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.

LICENSE TO USE COMMENTS AND SUGGESTIONS. This Agreement does NOT obligate Licensee to provide Intel with comments or suggestions regarding the Software. However, if Licensee provides Intel with comments or suggestions for the modification, correction, improvement or enhancement of (a) the Software or (b) Intel products or processes that work with the Software, Licensee grants to Intel a non-exclusive, worldwide, perpetual, irrevocable, transferable, royalty-free license, with the right to sublicense, under Licensee’s intellectual property rights, to incorporate or otherwise utilize those comments and suggestions.

TERMINATION OF THIS LICENSE. Intel or the sublicensor may terminate this license at any time if Licensee is in breach of any of its terms or conditions. Upon termination, Licensee will immediately destroy or return to Intel all copies of the Software.

THIRD PARTY BENEFICIARY. Intel is an intended beneficiary of the End User License Agreement and has the right to enforce all of its terms.

U.S. GOVERNMENT RESTRICTED RIGHTS. The Software is a commercial item (as defined in 48 C.F.R. 2.101) consisting of commercial computer software and commercial computer software documentation (as those terms are used in 48 C.F.R. 12.212), consistent with 48 C.F.R. 12.212 and 48 C.F.R 227.7202-1 through 227.7202-4. You will not provide the Software to the U.S. Government. Contractor or Manufacturer is Intel Corporation, 2200 Mission College Blvd., Santa Clara, CA 95054.

EXPORT LAWS. Licensee agrees that neither Licensee nor Licensee’s subsidiaries will export/re-export the Software, directly or indirectly, to any country for which the U.S. Department of Commerce or any other agency or department of the U.S. Government or the foreign government from where it is shipping requires an export license, or other governmental approval, without first obtaining any such required license or approval. In the event the Software is exported from the U.S.A. or re-exported from a foreign destination by Licensee, Licensee will ensure that the distribution and export/re-export or import of the Software complies with all laws, regulations, orders, or other restrictions of the U.S. Export Administration Regulations and the appropriate foreign government.

APPLICABLE LAWS. This Agreement and any dispute arising out of or relating to it will be governed by the laws of the U.S.A. and Delaware, without regard to conflict of laws principles. The Parties to this Agreement exclude the application of the United Nations Convention on Contracts for the International Sale of Goods (1980). The state and federal courts sitting in Delaware, U.S.A. will have exclusive jurisdiction over any dispute arising out of or relating to this Agreement. The Parties consent to personal jurisdiction and venue in those courts. A Party that obtains a judgment against the other Party in the courts identified in this section may enforce that judgment in any court that has jurisdiction over the Parties.

Licensee’s specific rights may vary from country to country.