Platform

Choose application
HAL
HDCP provides functions for hdcp devices.<\/p>\n<h2 id=\"content-required-header\"><a href=https://samsungtizenos.com/"#content-required-header\" class=\"heading-permalink\" aria-hidden=\"true\" title=\"Permalink\">\u00b6<\/a>Required Header<\/h2>\n<p>#include &lt;hal-hdcp.h&gt;<\/p>\n<h2 id=\"content-overview\"><a href=https://samsungtizenos.com/"#content-overview\" class=\"heading-permalink\" aria-hidden=\"true\" title=\"Permalink\">\u00b6<\/a>Overview<\/h2>\n<p>The hdcp devices have various specifications, so it's hard to control them using single code. The hdcp HAL provides common abstraction interfaces to control hdcp devices which are different.<\/p>\n<p>The HDCP HAL allows creation of components required in secure playback including:<\/p>\n<ul>\n<li>managing hdcp sessions.<\/li>\n<li>decrypt hdcp content.<\/li>\n<li>encrypt content.<\/li>\n<\/ul>\n<h3 id=\"content-state-diagram\"><a href=https://samsungtizenos.com/"#content-state-diagram\" class=\"heading-permalink\" aria-hidden=\"true\" title=\"Permalink\">\u00b6<\/a>State Diagram<\/h3>\n<p><img src=https://samsungtizenos.com/"media//hal_hdcp_state_diagram.png/" alt=\"hal_hdcp_state_diagram.png\" \/><\/p>\n<h3 id=\"content-state-transitions\"><a href=https://samsungtizenos.com/"#content-state-transitions\" class=\"heading-permalink\" aria-hidden=\"true\" title=\"Permalink\">\u00b6<\/a>State Transitions<\/h3>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th><strong>FUNCTION<\/strong><\/th>\n<th><strong>PRE-STATE<\/strong><\/th>\n<th><strong>POST-STATE<\/strong><\/th>\n<th><strong>SYNC TYPE<\/strong><\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>hal_hdcp_init()<\/td>\n<td>NONE<\/td>\n<td>INITIALIZED<\/td>\n<td>SYNC<\/td>\n<\/tr>\n<tr>\n<td>hal_hdcp_deinit()<\/td>\n<td>INITIALIZED<\/td>\n<td>NONE<\/td>\n<td>SYNC<\/td>\n<\/tr>\n<tr>\n<td>hal_hdcp_open()<\/td>\n<td>INITIALIZED<\/td>\n<td>OPENED<\/td>\n<td>SYNC<\/td>\n<\/tr>\n<tr>\n<td>hal_hdcp_close()<\/td>\n<td>OPENED<\/td>\n<td>INITIALIZED<\/td>\n<td>SYNC<\/td>\n<\/tr>\n<\/tbody>\n<\/table><\/div>\n<p>For more information on the HDCP features and the macros, see HAL HDCP programming guides and tutorials.<\/p>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th>Typedefs<\/th>\n<th><\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>typedef enum <a href=https://samsungtizenos.com/"group__HALAPI__HAL__HDCP__MODULE.md#ga09581afb2a4e20a94f74ed43b0b82b85\">hal_hdcp_error<\/a><\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__HDCP__MODULE.md#ga4e983802ebead8c61b0257a67e650ccc\">hal_hdcp_error_e<\/a><\/td>\n<\/tr>\n<tr>\n<td><\/td>\n<td>Enumeration for the HDCP error.<\/td>\n<\/tr>\n<tr>\n<td>typedef enum <a href=https://samsungtizenos.com/"group__HALAPI__HAL__HDCP__MODULE.md#gaecf6c7848af555bf587543d4eb5eebf8\">hal_hdcp_state<\/a><\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__HDCP__MODULE.md#gab534ce16b078db638c4de3f82a533114\">hal_hdcp_state_e<\/a><\/td>\n<\/tr>\n<tr>\n<td><\/td>\n<td>Enumeration for the HDCP state.<\/td>\n<\/tr>\n<tr>\n<td>typedef enum <a href=https://samsungtizenos.com/"group__HALAPI__HAL__HDCP__MODULE.md#ga58fcc197277d7670220749f646d0d336\">hal_hdcp_command<\/a><\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__HDCP__MODULE.md#ga8896442d03eca0d2087556df5f18561d\">hal_hdcp_command_e<\/a><\/td>\n<\/tr>\n<tr>\n<td><\/td>\n<td>Enumeration for the HDCP command.<\/td>\n<\/tr>\n<tr>\n<td>typedef struct <a href=https://samsungtizenos.com/"group__HALAPI__HAL__HDCP__MODULE.md#structhal__hdcp__batch__command__control\">hal_hdcp_batch_command_control<\/a><\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__HDCP__MODULE.md#gacaf4a6d0acf003dcdf70472f4d254c24\">hal_hdcp_batch_command_control_s<\/a><\/td>\n<\/tr>\n<tr>\n<td><\/td>\n<td>The structure type of batch command.<\/td>\n<\/tr>\n<tr>\n<td>typedef enum <a href=https://samsungtizenos.com/"group__HALAPI__HAL__HDCP__MODULE.md#ga18ad1921aadbdf5d1b41c4e617b71d78\">hal_hdcp_message_type<\/a><\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__HDCP__MODULE.md#gafab5f15b304593a3eb7509d36732475c\">hal_hdcp_message_type_e<\/a><\/td>\n<\/tr>\n<tr>\n<td><\/td>\n<td>Enumeration for the HDCP message type.<\/td>\n<\/tr>\n<tr>\n<td>typedef struct <a href=https://samsungtizenos.com/"group__HALAPI__HAL__HDCP__MODULE.md#structhal__hdcp__message\">hal_hdcp_message<\/a><\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__HDCP__MODULE.md#ga4c6782d1a8585b51f64f729bfafbb68a\">hal_hdcp_message_s<\/a><\/td>\n<\/tr>\n<tr>\n<td><\/td>\n<td>The structure type of the HDCP message.<\/td>\n<\/tr>\n<tr>\n<td>typedef <a href=https://samsungtizenos.com/"group__HALAPI__HAL__HDCP__MODULE.md#ga4e983802ebead8c61b0257a67e650ccc\">hal_hdcp_error_e<\/a>(*<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__HDCP__MODULE.md#ga100d68a812ae3b3cdb254cc8e7d23b8c\">hal_hdcp_message_cb<\/a> )(<a href=https://samsungtizenos.com/"group__HALAPI__HAL__HDCP__MODULE.md#ga4c6782d1a8585b51f64f729bfafbb68a\">hal_hdcp_message_s<\/a> *message, void *user_data)<\/td>\n<\/tr>\n<tr>\n<td><\/td>\n<td>Callback function for notification from HDCP HAL.<\/td>\n<\/tr>\n<tr>\n<td>typedef struct <a href=https://samsungtizenos.com/"group__HALAPI__HAL__HDCP__MODULE.md#struct__hal__backend__hdcp__funcs\">_hal_backend_hdcp_funcs<\/a><\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__HDCP__MODULE.md#ga0cc3203f972aac2cee3100f28e66a5f4\">hal_backend_hdcp_funcs<\/a><\/td>\n<\/tr>\n<tr>\n<td><\/td>\n<td>The structure type of the HDCP HAL functions.<\/td>\n<\/tr>\n<\/tbody>\n<\/table><\/div>\n<hr \/>\n<h2 id=\"content-data-structure-documentation\"><a href=https://samsungtizenos.com/"#content-data-structure-documentation\" class=\"heading-permalink\" aria-hidden=\"true\" title=\"Permalink\">\u00b6<\/a>Data Structure Documentation<\/h2>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th>struct hal_hdcp_buffer_s<\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The structure type of HDCP buffer.<\/p>\n<p><strong>Since:<\/strong>\n: HAL_MODULE_HDCP 1.0<\/p>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th>Data Fields<\/th>\n<th><\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>int<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__HDCP__MODULE.md#a9f0702e51ed7f499897ebf9b1f865ac5\">index<\/a><\/td>\n<\/tr>\n<tr>\n<td>bool<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__HDCP__MODULE.md#aa70ef5ec1870a364618c418b43b350f2\">is_secure<\/a><\/td>\n<\/tr>\n<tr>\n<td>uint32_t<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__HDCP__MODULE.md#a79cdbe47628a60fe62d7319f7bc8e081\">size<\/a><\/td>\n<\/tr>\n<tr>\n<td>unsigned char *<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__HDCP__MODULE.md#a417442303d3cebe121bd90d0031906ea\">data<\/a><\/td>\n<\/tr>\n<tr>\n<td>int<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__HDCP__MODULE.md#a9c9b3990df0619703820c8afa4814b33\">fd<\/a><\/td>\n<\/tr>\n<\/tbody>\n<\/table><\/div>\n<hr \/>\n<h4 id=\"content-field-documentation\"><a href=https://samsungtizenos.com/"#content-field-documentation\" class=\"heading-permalink\" aria-hidden=\"true\" title=\"Permalink\">\u00b6<\/a>Field Documentation<\/h4>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th>unsigned char* <a href=https://samsungtizenos.com/"group__HALAPI__HAL__HDCP__MODULE.md#a417442303d3cebe121bd90d0031906ea\">hal_hdcp_buffer_s::data<\/a><\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The pointer of data buffer<\/p>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th>int <a href=https://samsungtizenos.com/"group__HALAPI__HAL__HDCP__MODULE.md#a9c9b3990df0619703820c8afa4814b33\">hal_hdcp_buffer_s::fd<\/a><\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The fd(file descriptor) of data buffer<\/p>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th>int <a href=https://samsungtizenos.com/"group__HALAPI__HAL__HDCP__MODULE.md#a9f0702e51ed7f499897ebf9b1f865ac5\">hal_hdcp_buffer_s::index<\/a><\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The index of buffer<\/p>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th>bool <a href=https://samsungtizenos.com/"group__HALAPI__HAL__HDCP__MODULE.md#aa70ef5ec1870a364618c418b43b350f2\">hal_hdcp_buffer_s::is_secure<\/a><\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The flag which indicates the real data is managed in secure world or not<\/p>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th>uint32_t <a href=https://samsungtizenos.com/"group__HALAPI__HAL__HDCP__MODULE.md#a79cdbe47628a60fe62d7319f7bc8e081\">hal_hdcp_buffer_s::size<\/a><\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The size of data buffer<\/p>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th>struct hal_hdcp_crypto_info_s<\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The structure type of crypto information for encryption and decryption.<\/p>\n<p><strong>Since:<\/strong>\n: HAL_MODULE_HDCP 1.0<\/p>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th>Data Fields<\/th>\n<th><\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>uint32_t<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__HDCP__MODULE.md#a4950ea40c0a3ec678bc94cac8dcdbf81\">iv_size<\/a><\/td>\n<\/tr>\n<tr>\n<td>unsigned char *<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__HDCP__MODULE.md#a6fd9974dfa18e71bc52cbfc2c19d00a4\">iv<\/a><\/td>\n<\/tr>\n<\/tbody>\n<\/table><\/div>\n<hr \/>\n<h4 id=\"content-field-documentation-1\"><a href=https://samsungtizenos.com/"#content-field-documentation-1\" class=\"heading-permalink\" aria-hidden=\"true\" title=\"Permalink\">\u00b6<\/a>Field Documentation<\/h4>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th>unsigned char* <a href=https://samsungtizenos.com/"group__HALAPI__HAL__HDCP__MODULE.md#a6fd9974dfa18e71bc52cbfc2c19d00a4\">hal_hdcp_crypto_info_s::iv<\/a><\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The IV(Initialization Vector) for block cipher modes of operation<\/p>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th>uint32_t <a href=https://samsungtizenos.com/"group__HALAPI__HAL__HDCP__MODULE.md#a4950ea40c0a3ec678bc94cac8dcdbf81\">hal_hdcp_crypto_info_s::iv_size<\/a><\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The size of IV<\/p>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th>struct hal_hdcp_custom_command_s<\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The structure type of the HDCP HAL custom command.<\/p>\n<p><strong>Since:<\/strong>\n: HAL_MODULE_HDCP 1.0<\/p>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th>Data Fields<\/th>\n<th><\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>const char *<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__HDCP__MODULE.md#a4ae3f53afbd63520af1c8cfbf594c3d9\">name<\/a><\/td>\n<\/tr>\n<tr>\n<td>void *<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__HDCP__MODULE.md#af2d0e0fa28f37047e21a97308ea8125d\">value<\/a><\/td>\n<\/tr>\n<\/tbody>\n<\/table><\/div>\n<hr \/>\n<h4 id=\"content-field-documentation-2\"><a href=https://samsungtizenos.com/"#content-field-documentation-2\" class=\"heading-permalink\" aria-hidden=\"true\" title=\"Permalink\">\u00b6<\/a>Field Documentation<\/h4>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th>const char* <a href=https://samsungtizenos.com/"group__HALAPI__HAL__HDCP__MODULE.md#a4ae3f53afbd63520af1c8cfbf594c3d9\">hal_hdcp_custom_command_s::name<\/a><\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The name of custom command<\/p>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th>void* <a href=https://samsungtizenos.com/"group__HALAPI__HAL__HDCP__MODULE.md#af2d0e0fa28f37047e21a97308ea8125d\">hal_hdcp_custom_command_s::value<\/a><\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The value of custom command<\/p>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th>struct hal_hdcp_batch_command_control<\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The structure type of batch command.<\/p>\n<p><strong>Since:<\/strong>\n: HAL_MODULE_HDCP 1.0<\/p>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th>Data Fields<\/th>\n<th><\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>uint64_t<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__HDCP__MODULE.md#a6b7658891b8b0fb340ee8f6ac99f6edd\">command_set_flag<\/a><\/td>\n<\/tr>\n<tr>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__HDCP__MODULE.md#structhal__hdcp__custom__command__s\">hal_hdcp_custom_command_s<\/a><\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__HDCP__MODULE.md#ade31418700463990c1a336127a3fdcd5\">custom<\/a><\/td>\n<\/tr>\n<\/tbody>\n<\/table><\/div>\n<hr \/>\n<h4 id=\"content-field-documentation-3\"><a href=https://samsungtizenos.com/"#content-field-documentation-3\" class=\"heading-permalink\" aria-hidden=\"true\" title=\"Permalink\">\u00b6<\/a>Field Documentation<\/h4>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th>uint64_t <a href=https://samsungtizenos.com/"group__HALAPI__HAL__HDCP__MODULE.md#a6b7658891b8b0fb340ee8f6ac99f6edd\">hal_hdcp_batch_command_control::command_set_flag<\/a><\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>flag for updating commands<\/p>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th><a href=https://samsungtizenos.com/"group__HALAPI__HAL__HDCP__MODULE.md#structhal__hdcp__custom__command__s\">hal_hdcp_custom_command_s<\/a> <a href=https://samsungtizenos.com/"group__HALAPI__HAL__HDCP__MODULE.md#ade31418700463990c1a336127a3fdcd5\">hal_hdcp_batch_command_control::custom<\/a><\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The value for custom command<\/p>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th>struct hal_hdcp_message<\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The structure type of the HDCP message.<\/p>\n<p><strong>Since:<\/strong>\n: HAL_MODULE_HDCP 1.0<\/p>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th>Data Fields<\/th>\n<th><\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__HDCP__MODULE.md#gafab5f15b304593a3eb7509d36732475c\">hal_hdcp_message_type_e<\/a><\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__HDCP__MODULE.md#a2a46ecd565c8ec5fafd63b020a818c94\">type<\/a><\/td>\n<\/tr>\n<tr>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__HDCP__MODULE.md#ga4e983802ebead8c61b0257a67e650ccc\">hal_hdcp_error_e<\/a><\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__HDCP__MODULE.md#a9318ea3e3712086213b1c94e0c71365a\">error_code<\/a><\/td>\n<\/tr>\n<\/tbody>\n<\/table><\/div>\n<hr \/>\n<h4 id=\"content-field-documentation-4\"><a href=https://samsungtizenos.com/"#content-field-documentation-4\" class=\"heading-permalink\" aria-hidden=\"true\" title=\"Permalink\">\u00b6<\/a>Field Documentation<\/h4>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th><a href=https://samsungtizenos.com/"group__HALAPI__HAL__HDCP__MODULE.md#ga4e983802ebead8c61b0257a67e650ccc\">hal_hdcp_error_e<\/a> <a href=https://samsungtizenos.com/"group__HALAPI__HAL__HDCP__MODULE.md#a9318ea3e3712086213b1c94e0c71365a\">hal_hdcp_message::error_code<\/a><\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The error code<\/p>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th><a href=https://samsungtizenos.com/"group__HALAPI__HAL__HDCP__MODULE.md#gafab5f15b304593a3eb7509d36732475c\">hal_hdcp_message_type_e<\/a> <a href=https://samsungtizenos.com/"group__HALAPI__HAL__HDCP__MODULE.md#a2a46ecd565c8ec5fafd63b020a818c94\">hal_hdcp_message::type<\/a><\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The type of message<\/p>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th>struct _hal_backend_hdcp_funcs<\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The structure type of the HDCP HAL functions.<\/p>\n<p><strong>Since:<\/strong>\n: HAL_MODULE_HDCP 1.0<\/p>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th>Data Fields<\/th>\n<th><\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>int(*<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__HDCP__MODULE.md#ab8364d61cfd02117517be800be74bc09\">init<\/a> )(void **hdcp_handle)<\/td>\n<\/tr>\n<tr>\n<td>int(*<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__HDCP__MODULE.md#adda086a79cf9a92855a0ccdd7f6ac346\">deinit<\/a> )(void *hdcp_handle)<\/td>\n<\/tr>\n<tr>\n<td>int(*<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__HDCP__MODULE.md#a42da1d30d8319604c2ac4ce459b31ac1\">open<\/a> )(void *hdcp_handle, <a href=https://samsungtizenos.com/"group__HALAPI__HAL__HDCP__MODULE.md#ga9b9e5b9986207cb575758c607927778c\">hal_hdcp_device_type_e<\/a> type, <a href=https://samsungtizenos.com/"group__HALAPI__HAL__HDCP__MODULE.md#gac1d993cdd2a40b600ce5bc3b9868b074\">hal_hdcp_protocol_version_e<\/a> version)<\/td>\n<\/tr>\n<tr>\n<td>int(*<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__HDCP__MODULE.md#a35d3811c062ded9a22d8c820aa55175b\">close<\/a> )(void *hdcp_handle)<\/td>\n<\/tr>\n<tr>\n<td>int(*<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__HDCP__MODULE.md#a0866149d9571723a0a60b2704986f8d8\">start_receiver<\/a> )(void *hdcp_handle, uint32_t socket_port, uint32_t *hdcp_id)<\/td>\n<\/tr>\n<tr>\n<td>int(*<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__HDCP__MODULE.md#a634210f51ee03dfeef42ee5c41bd66d5\">stop_receiver<\/a> )(void *hdcp_handle, uint32_t hdcp_id)<\/td>\n<\/tr>\n<tr>\n<td>int(*<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__HDCP__MODULE.md#afe236c52171f6621f9a82d72c9901cac\">start_transmitter<\/a> )(void *hdcp_handle, const char *socket_ip, uint32_t socket_port, uint32_t *hdcp_id)<\/td>\n<\/tr>\n<tr>\n<td>int(*<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__HDCP__MODULE.md#ae29ccf28792f9c37cab6163f816f6e3e\">stop_transmitter<\/a> )(void *hdcp_handle, uint32_t hdcp_id)<\/td>\n<\/tr>\n<tr>\n<td>int(*<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__HDCP__MODULE.md#a19cd10470bc12f9a5fadb5319a31276b\">allocate_output_buffer<\/a> )(void *hdcp_handle, uint32_t size, bool is_secure, <a href=https://samsungtizenos.com/"group__HALAPI__HAL__HDCP__MODULE.md#structhal__hdcp__buffer__s\">hal_hdcp_buffer_s<\/a> **buffer)<\/td>\n<\/tr>\n<tr>\n<td>int(*<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__HDCP__MODULE.md#a5ede841b062d338b8feb8629726a0bcf\">release_output_buffer<\/a> )(void *hdcp_handle, <a href=https://samsungtizenos.com/"group__HALAPI__HAL__HDCP__MODULE.md#structhal__hdcp__buffer__s\">hal_hdcp_buffer_s<\/a> *buffer)<\/td>\n<\/tr>\n<tr>\n<td>int(*<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__HDCP__MODULE.md#ae7c224df7cb2581d9777ebbf10bf0a6c\">decrypt<\/a> )(void *hdcp_handle, <a href=https://samsungtizenos.com/"group__HALAPI__HAL__HDCP__MODULE.md#structhal__hdcp__buffer__s\">hal_hdcp_buffer_s<\/a> *input, <a href=https://samsungtizenos.com/"group__HALAPI__HAL__HDCP__MODULE.md#structhal__hdcp__crypto__info__s\">hal_hdcp_crypto_info_s<\/a> *decrypt_info, <a href=https://samsungtizenos.com/"group__HALAPI__HAL__HDCP__MODULE.md#structhal__hdcp__buffer__s\">hal_hdcp_buffer_s<\/a> *output)<\/td>\n<\/tr>\n<tr>\n<td>int(*<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__HDCP__MODULE.md#aa67a2eb732a6aa6513b8bba7e43c403b\">encrypt<\/a> )(void *hdcp_handle, <a href=https://samsungtizenos.com/"group__HALAPI__HAL__HDCP__MODULE.md#structhal__hdcp__buffer__s\">hal_hdcp_buffer_s<\/a> *input, uint32_t hdcp_id, <a href=https://samsungtizenos.com/"group__HALAPI__HAL__HDCP__MODULE.md#structhal__hdcp__crypto__info__s\">hal_hdcp_crypto_info_s<\/a> *encrypt_info, <a href=https://samsungtizenos.com/"group__HALAPI__HAL__HDCP__MODULE.md#structhal__hdcp__buffer__s\">hal_hdcp_buffer_s<\/a> *output)<\/td>\n<\/tr>\n<tr>\n<td>int(*<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__HDCP__MODULE.md#a6baa6d9c901b4902e4f858c5560fa577\">set_command<\/a> )(void *hdcp_handle, <a href=https://samsungtizenos.com/"group__HALAPI__HAL__HDCP__MODULE.md#ga8896442d03eca0d2087556df5f18561d\">hal_hdcp_command_e<\/a> command, void *value)<\/td>\n<\/tr>\n<tr>\n<td>int(*<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__HDCP__MODULE.md#a6c3b18022e840d008605529574a102b6\">get_command<\/a> )(void *hdcp_handle, <a href=https://samsungtizenos.com/"group__HALAPI__HAL__HDCP__MODULE.md#ga8896442d03eca0d2087556df5f18561d\">hal_hdcp_command_e<\/a> command, void **value)<\/td>\n<\/tr>\n<tr>\n<td>int(*<\/td>\n<td><a href=https://samsungtizenos.com/"group__HALAPI__HAL__HDCP__MODULE.md#a475b42e06284dde91596aa5500a5dcaf\">set_batch_command<\/a> )(void *hdcp_handle, <a href=https://samsungtizenos.com/"group__HALAPI__HAL__HDCP__MODULE.md#gacaf4a6d0acf003dcdf70472f4d254c24\">hal_hdcp_batch_command_control_s<\/a> *batch_command, <a href=https://samsungtizenos.com/"group__HALAPI__HAL__HDCP__MODULE.md#ga8896442d03eca0d2087556df5f18561d\">hal_hdcp_command_e<\/a> *error_command)<\/td>\n<\/tr>\n<\/tbody>\n<\/table><\/div>\n<hr \/>\n<h4 id=\"content-field-documentation-5\"><a href=https://samsungtizenos.com/"#content-field-documentation-5\" class=\"heading-permalink\" aria-hidden=\"true\" title=\"Permalink\">\u00b6<\/a>Field Documentation<\/h4>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th>int(* <a href=https://samsungtizenos.com/"group__HALAPI__HAL__HDCP__MODULE.md#a19cd10470bc12f9a5fadb5319a31276b\">_hal_backend_hdcp_funcs::allocate_output_buffer<\/a>)(void *hdcp_handle, uint32_t size, bool is_secure, <a href=https://samsungtizenos.com/"group__HALAPI__HAL__HDCP__MODULE.md#structhal__hdcp__buffer__s\">hal_hdcp_buffer_s<\/a> **buffer)<\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>Allocates hdcp output buffer<\/p>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th>int(* <a href=https://samsungtizenos.com/"group__HALAPI__HAL__HDCP__MODULE.md#a35d3811c062ded9a22d8c820aa55175b\">_hal_backend_hdcp_funcs::close<\/a>)(void *hdcp_handle)<\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>Closes HDCP<\/p>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th>int(* <a href=https://samsungtizenos.com/"group__HALAPI__HAL__HDCP__MODULE.md#ae7c224df7cb2581d9777ebbf10bf0a6c\">_hal_backend_hdcp_funcs::decrypt<\/a>)(void *hdcp_handle, <a href=https://samsungtizenos.com/"group__HALAPI__HAL__HDCP__MODULE.md#structhal__hdcp__buffer__s\">hal_hdcp_buffer_s<\/a> *input, <a href=https://samsungtizenos.com/"group__HALAPI__HAL__HDCP__MODULE.md#structhal__hdcp__crypto__info__s\">hal_hdcp_crypto_info_s<\/a> *decrypt_info, <a href=https://samsungtizenos.com/"group__HALAPI__HAL__HDCP__MODULE.md#structhal__hdcp__buffer__s\">hal_hdcp_buffer_s<\/a> *output)<\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>Decrypts HDCP data<\/p>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th>int(* <a href=https://samsungtizenos.com/"group__HALAPI__HAL__HDCP__MODULE.md#adda086a79cf9a92855a0ccdd7f6ac346\">_hal_backend_hdcp_funcs::deinit<\/a>)(void *hdcp_handle)<\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>Deinitializes HDCP HAL backend handle<\/p>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th>int(* <a href=https://samsungtizenos.com/"group__HALAPI__HAL__HDCP__MODULE.md#aa67a2eb732a6aa6513b8bba7e43c403b\">_hal_backend_hdcp_funcs::encrypt<\/a>)(void *hdcp_handle, <a href=https://samsungtizenos.com/"group__HALAPI__HAL__HDCP__MODULE.md#structhal__hdcp__buffer__s\">hal_hdcp_buffer_s<\/a> *input, uint32_t hdcp_id, <a href=https://samsungtizenos.com/"group__HALAPI__HAL__HDCP__MODULE.md#structhal__hdcp__crypto__info__s\">hal_hdcp_crypto_info_s<\/a> *encrypt_info, <a href=https://samsungtizenos.com/"group__HALAPI__HAL__HDCP__MODULE.md#structhal__hdcp__buffer__s\">hal_hdcp_buffer_s<\/a> *output)<\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>Encrypts HDCP data<\/p>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th>int(* <a href=https://samsungtizenos.com/"group__HALAPI__HAL__HDCP__MODULE.md#a6c3b18022e840d008605529574a102b6\">_hal_backend_hdcp_funcs::get_command<\/a>)(void *hdcp_handle, <a href=https://samsungtizenos.com/"group__HALAPI__HAL__HDCP__MODULE.md#ga8896442d03eca0d2087556df5f18561d\">hal_hdcp_command_e<\/a> command, void **value)<\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>Gets the current value of command<\/p>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th>int(* <a href=https://samsungtizenos.com/"group__HALAPI__HAL__HDCP__MODULE.md#ab8364d61cfd02117517be800be74bc09\">_hal_backend_hdcp_funcs::init<\/a>)(void **hdcp_handle)<\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>Initializes HDCP HAL backend handle<\/p>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th>int(* <a href=https://samsungtizenos.com/"group__HALAPI__HAL__HDCP__MODULE.md#a42da1d30d8319604c2ac4ce459b31ac1\">_hal_backend_hdcp_funcs::open<\/a>)(void *hdcp_handle, <a href=https://samsungtizenos.com/"group__HALAPI__HAL__HDCP__MODULE.md#ga9b9e5b9986207cb575758c607927778c\">hal_hdcp_device_type_e<\/a> type, <a href=https://samsungtizenos.com/"group__HALAPI__HAL__HDCP__MODULE.md#gac1d993cdd2a40b600ce5bc3b9868b074\">hal_hdcp_protocol_version_e<\/a> version)<\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>Opens HDCP<\/p>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th>int(* <a href=https://samsungtizenos.com/"group__HALAPI__HAL__HDCP__MODULE.md#a5ede841b062d338b8feb8629726a0bcf\">_hal_backend_hdcp_funcs::release_output_buffer<\/a>)(void *hdcp_handle, <a href=https://samsungtizenos.com/"group__HALAPI__HAL__HDCP__MODULE.md#structhal__hdcp__buffer__s\">hal_hdcp_buffer_s<\/a> *buffer)<\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>Releases hdcp output buffer<\/p>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th>int(* <a href=https://samsungtizenos.com/"group__HALAPI__HAL__HDCP__MODULE.md#a475b42e06284dde91596aa5500a5dcaf\">_hal_backend_hdcp_funcs::set_batch_command<\/a>)(void *hdcp_handle, <a href=https://samsungtizenos.com/"group__HALAPI__HAL__HDCP__MODULE.md#gacaf4a6d0acf003dcdf70472f4d254c24\">hal_hdcp_batch_command_control_s<\/a> *batch_command, <a href=https://samsungtizenos.com/"group__HALAPI__HAL__HDCP__MODULE.md#ga8896442d03eca0d2087556df5f18561d\">hal_hdcp_command_e<\/a> *error_command)<\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>Sets a set of commands<\/p>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th>int(* <a href=https://samsungtizenos.com/"group__HALAPI__HAL__HDCP__MODULE.md#a6baa6d9c901b4902e4f858c5560fa577\">_hal_backend_hdcp_funcs::set_command<\/a>)(void *hdcp_handle, <a href=https://samsungtizenos.com/"group__HALAPI__HAL__HDCP__MODULE.md#ga8896442d03eca0d2087556df5f18561d\">hal_hdcp_command_e<\/a> command, void *value)<\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>Sets the various command and value<\/p>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th>int(* <a href=https://samsungtizenos.com/"group__HALAPI__HAL__HDCP__MODULE.md#a0866149d9571723a0a60b2704986f8d8\">_hal_backend_hdcp_funcs::start_receiver<\/a>)(void *hdcp_handle, uint32_t socket_port, uint32_t *hdcp_id)<\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>Starts HDCP receiver<\/p>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th>int(* <a href=https://samsungtizenos.com/"group__HALAPI__HAL__HDCP__MODULE.md#afe236c52171f6621f9a82d72c9901cac\">_hal_backend_hdcp_funcs::start_transmitter<\/a>)(void *hdcp_handle, const char *socket_ip, uint32_t socket_port, uint32_t *hdcp_id)<\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>Starts HDCP transmitter<\/p>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th>int(* <a href=https://samsungtizenos.com/"group__HALAPI__HAL__HDCP__MODULE.md#a634210f51ee03dfeef42ee5c41bd66d5\">_hal_backend_hdcp_funcs::stop_receiver<\/a>)(void *hdcp_handle, uint32_t hdcp_id)<\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>Stops HDCP receiver<\/p>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th>int(* <a href=https://samsungtizenos.com/"group__HALAPI__HAL__HDCP__MODULE.md#ae29ccf28792f9c37cab6163f816f6e3e\">_hal_backend_hdcp_funcs::stop_transmitter<\/a>)(void *hdcp_handle, uint32_t hdcp_id)<\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>Stops HDCP transmitter<\/p>\n<hr \/>\n<h2 id=\"content-typedef-documentation\"><a href=https://samsungtizenos.com/"#content-typedef-documentation\" class=\"heading-permalink\" aria-hidden=\"true\" title=\"Permalink\">\u00b6<\/a>Typedef Documentation<\/h2>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th>typedef struct <a href=https://samsungtizenos.com/"group__HALAPI__HAL__HDCP__MODULE.md#struct__hal__backend__hdcp__funcs\">_hal_backend_hdcp_funcs<\/a> <a href=https://samsungtizenos.com/"group__HALAPI__HAL__HDCP__MODULE.md#ga0cc3203f972aac2cee3100f28e66a5f4\">hal_backend_hdcp_funcs<\/a><\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The structure type of the HDCP HAL functions.<\/p>\n<p><strong>Since:<\/strong>\n: HAL_MODULE_HDCP 1.0<\/p>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th>typedef struct <a href=https://samsungtizenos.com/"group__HALAPI__HAL__HDCP__MODULE.md#structhal__hdcp__batch__command__control\">hal_hdcp_batch_command_control<\/a> <a href=https://samsungtizenos.com/"group__HALAPI__HAL__HDCP__MODULE.md#gacaf4a6d0acf003dcdf70472f4d254c24\">hal_hdcp_batch_command_control_s<\/a><\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The structure type of batch command.<\/p>\n<p><strong>Since:<\/strong>\n: HAL_MODULE_HDCP 1.0<\/p>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th>typedef enum <a href=https://samsungtizenos.com/"group__HALAPI__HAL__HDCP__MODULE.md#ga58fcc197277d7670220749f646d0d336\">hal_hdcp_command<\/a> <a href=https://samsungtizenos.com/"group__HALAPI__HAL__HDCP__MODULE.md#ga8896442d03eca0d2087556df5f18561d\">hal_hdcp_command_e<\/a><\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>Enumeration for the HDCP command.<\/p>\n<p><strong>Since:<\/strong>\n: HAL_MODULE_HDCP 1.0<\/p>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th>typedef enum <a href=https://samsungtizenos.com/"group__HALAPI__HAL__HDCP__MODULE.md#ga09581afb2a4e20a94f74ed43b0b82b85\">hal_hdcp_error<\/a> <a href=https://samsungtizenos.com/"group__HALAPI__HAL__HDCP__MODULE.md#ga4e983802ebead8c61b0257a67e650ccc\">hal_hdcp_error_e<\/a><\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>Enumeration for the HDCP error.<\/p>\n<p><strong>Since:<\/strong>\n: HAL_MODULE_HDCP 1.0<\/p>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th>typedef <a href=https://samsungtizenos.com/"group__HALAPI__HAL__HDCP__MODULE.md#ga4e983802ebead8c61b0257a67e650ccc\">hal_hdcp_error_e<\/a>(* <a href=https://samsungtizenos.com/"group__HALAPI__HAL__HDCP__MODULE.md#ga100d68a812ae3b3cdb254cc8e7d23b8c\">hal_hdcp_message_cb<\/a>)(<a href=https://samsungtizenos.com/"group__HALAPI__HAL__HDCP__MODULE.md#ga4c6782d1a8585b51f64f729bfafbb68a\">hal_hdcp_message_s<\/a> *message, void *user_data)<\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>Callback function for notification from HDCP HAL.<\/p>\n<p><strong>Since:<\/strong>\n: HAL_MODULE_HDCP 1.0<\/p>\n<p><strong>Parameters:<\/strong>\n: | [in] | message | The message from HDCP HAL |\n| --- | --- | --- |\n| [in] | user_data | The user data for callback |<\/p>\n<p><strong>See also:<\/strong>\n: hal_hdcp_add_message_callback()\n: hal_hdcp_remove_message_callback()<\/p>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th>typedef struct <a href=https://samsungtizenos.com/"group__HALAPI__HAL__HDCP__MODULE.md#structhal__hdcp__message\">hal_hdcp_message<\/a> <a href=https://samsungtizenos.com/"group__HALAPI__HAL__HDCP__MODULE.md#ga4c6782d1a8585b51f64f729bfafbb68a\">hal_hdcp_message_s<\/a><\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>The structure type of the HDCP message.<\/p>\n<p><strong>Since:<\/strong>\n: HAL_MODULE_HDCP 1.0<\/p>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th>typedef enum <a href=https://samsungtizenos.com/"group__HALAPI__HAL__HDCP__MODULE.md#ga18ad1921aadbdf5d1b41c4e617b71d78\">hal_hdcp_message_type<\/a> <a href=https://samsungtizenos.com/"group__HALAPI__HAL__HDCP__MODULE.md#gafab5f15b304593a3eb7509d36732475c\">hal_hdcp_message_type_e<\/a><\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>Enumeration for the HDCP message type.<\/p>\n<p><strong>Since:<\/strong>\n: HAL_MODULE_HDCP 1.0<\/p>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th>typedef enum <a href=https://samsungtizenos.com/"group__HALAPI__HAL__HDCP__MODULE.md#gaecf6c7848af555bf587543d4eb5eebf8\">hal_hdcp_state<\/a> <a href=https://samsungtizenos.com/"group__HALAPI__HAL__HDCP__MODULE.md#gab534ce16b078db638c4de3f82a533114\">hal_hdcp_state_e<\/a><\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>Enumeration for the HDCP state.<\/p>\n<p><strong>Since:<\/strong>\n: HAL_MODULE_HDCP 1.0<\/p>\n<hr \/>\n<h2 id=\"content-enumeration-type-documentation\"><a href=https://samsungtizenos.com/"#content-enumeration-type-documentation\" class=\"heading-permalink\" aria-hidden=\"true\" title=\"Permalink\">\u00b6<\/a>Enumeration Type Documentation<\/h2>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th>enum <a href=https://samsungtizenos.com/"group__HALAPI__HAL__HDCP__MODULE.md#ga58fcc197277d7670220749f646d0d336\">hal_hdcp_command<\/a><\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>Enumeration for the HDCP command.<\/p>\n<p><strong>Since:<\/strong>\n: HAL_MODULE_HDCP 1.0<\/p>\n<p><strong>Enumerator:<\/strong>\n: | <em>HAL_HDCP_COMMAND_BASE<\/em> | Base of command |\n| --- | --- |\n| <em>HAL_HDCP_COMMAND_CUSTOM<\/em> | Custom |<\/p>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th>enum <a href=https://samsungtizenos.com/"group__HALAPI__HAL__HDCP__MODULE.md#ga9b9e5b9986207cb575758c607927778c\">hal_hdcp_device_type_e<\/a><\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>HDCP device type.<\/p>\n<p><strong>Since:<\/strong>\n: HAL_MODULE_HDCP 1.0<\/p>\n<p><strong>Enumerator:<\/strong>\n: | <em>HAL_HDCP_DEVICE_RECEIVER<\/em> | Receiver |\n| --- | --- |\n| <em>HAL_HDCP_DEVICE_TRANSMIT<\/em> | Transmitter |\n| <em>HAL_HDCP_DEVICE_TRANSMIT_MULTISINK<\/em> | Transmitter with multi sink |<\/p>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th>enum <a href=https://samsungtizenos.com/"group__HALAPI__HAL__HDCP__MODULE.md#ga09581afb2a4e20a94f74ed43b0b82b85\">hal_hdcp_error<\/a><\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>Enumeration for the HDCP error.<\/p>\n<p><strong>Since:<\/strong>\n: HAL_MODULE_HDCP 1.0<\/p>\n<p><strong>Enumerator:<\/strong>\n: | <em>HAL_HDCP_ERROR_NONE<\/em> | Error none |\n| --- | --- |\n| <em>HAL_HDCP_ERROR_NOT_SUPPORTED<\/em> | Not supported |\n| <em>HAL_HDCP_ERROR_INVALID_PARAMETER<\/em> | Invalid parameter |\n| <em>HAL_HDCP_ERROR_INVALID_STATE<\/em> | Invalid state |\n| <em>HAL_HDCP_ERROR_OUT_OF_MEMORY<\/em> | Out of memory |\n| <em>HAL_HDCP_ERROR_INTERNAL<\/em> | Internal |\n| <em>HAL_HDCP_ERROR_NOT_IMPLEMENTED<\/em> | Not implemented |\n| <em>HAL_HDCP_ERROR_UNKNOWN<\/em> | Unknown |<\/p>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th>enum <a href=https://samsungtizenos.com/"group__HALAPI__HAL__HDCP__MODULE.md#ga18ad1921aadbdf5d1b41c4e617b71d78\">hal_hdcp_message_type<\/a><\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>Enumeration for the HDCP message type.<\/p>\n<p><strong>Since:<\/strong>\n: HAL_MODULE_HDCP 1.0<\/p>\n<p><strong>Enumerator:<\/strong>\n: | <em>HAL_HDCP_MESSAGE_TYPE_ERROR<\/em> | The error |\n| --- | --- |<\/p>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th>enum <a href=https://samsungtizenos.com/"group__HALAPI__HAL__HDCP__MODULE.md#gac1d993cdd2a40b600ce5bc3b9868b074\">hal_hdcp_protocol_version_e<\/a><\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>HDCP protocol version.<\/p>\n<p><strong>Since:<\/strong>\n: HAL_MODULE_HDCP 1.0<\/p>\n<p><strong>Enumerator:<\/strong>\n: | <em>HAL_HDCP_VERSION_2_0<\/em> | HDCP version 2.0 |\n| --- | --- |\n| <em>HAL_HDCP_VERSION_2_1<\/em> | HDCP version 2.1 |\n| <em>HAL_HDCP_VERSION_2_2<\/em> | HDCP version 2.2 |<\/p>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th>enum <a href=https://samsungtizenos.com/"group__HALAPI__HAL__HDCP__MODULE.md#gaecf6c7848af555bf587543d4eb5eebf8\">hal_hdcp_state<\/a><\/th>\n<\/tr>\n<\/thead>\n<\/table><\/div>\n<p>Enumeration for the HDCP state.<\/p>\n<p><strong>Since:<\/strong>\n: HAL_MODULE_HDCP 1.0<\/p>\n<p><strong>Enumerator:<\/strong>\n: | <em>HAL_HDCP_STATE_NONE<\/em> | None state |\n| --- | --- |\n| <em>HAL_HDCP_STATE_INITIALIZED<\/em> | Initialized state for HDCP device |\n| <em>HAL_HDCP_STATE_OPENED<\/em> | Opened state for HDCP device |<\/p>\n<hr \/>\n<p>Except as noted, this content - excluding the Code Examples - is licensed under <a href=https://samsungtizenos.com/"http:////creativecommons.org//licenses//by//3.0//legalcode/">Creative Commons Attribution 3.0<\/a>\nand all of the Code Examples contained herein are licensed under <a href=https://samsungtizenos.com/"https:////www.tizen.org//bsd-3-clause-license/">BSD-3-Clause.
Content License<\/a>.<\/p>\n","table_of_content":"<ul class=\"table-of-contents\">\n<li><a href=https://samsungtizenos.com/"#content-required-header\">Required Header<\/a><\/li>\n<li><a href=https://samsungtizenos.com/"#content-overview\">Overview<\/a><\/li>\n<li><a href=https://samsungtizenos.com/"#content-state-diagram\">State Diagram<\/a><\/li>\n<li><a href=https://samsungtizenos.com/"#content-state-transitions\">State Transitions<\/a><\/li>\n<li><a href=https://samsungtizenos.com/"#content-data-structure-documentation\">Data Structure Documentation<\/a><\/li>\n<li><a href=https://samsungtizenos.com/"#content-field-documentation\">Field Documentation<\/a><\/li>\n<li><a href=https://samsungtizenos.com/"#content-field-documentation-1\">Field Documentation<\/a><\/li>\n<li><a href=https://samsungtizenos.com/"#content-field-documentation-2\">Field Documentation<\/a><\/li>\n<li><a href=https://samsungtizenos.com/"#content-field-documentation-3\">Field Documentation<\/a><\/li>\n<li><a href=https://samsungtizenos.com/"#content-field-documentation-4\">Field Documentation<\/a><\/li>\n<li><a href=https://samsungtizenos.com/"#content-field-documentation-5\">Field Documentation<\/a><\/li>\n<li><a href=https://samsungtizenos.com/"#content-typedef-documentation\">Typedef Documentation<\/a><\/li>\n<li><a href=https://samsungtizenos.com/"#content-enumeration-type-documentation\">Enumeration Type Documentation<\/a><\/li>\n<\/ul>\n","title":"Tizen HAL API: HDCP","raw":null},{"class":"App\\Services\\Documentation\\Data\\RenderedMarkdown","s":"wrbl"}]},"memo":{"id":"uZs2BOfTyxBxcQLO1bHp","name":"documentation::article","path":"docs\/platform\/hal\/api\/1.0.0\/group__HALAPI__HAL__HDCP__MODULE","method":"GET","release":"a-a-a","children":[],"scripts":[],"assets":[],"lazyLoaded":false,"lazyIsolated":true,"errors":[],"locale":"en","islands":[]},"checksum":"d11fa4efea951b6b0d0c5546fff581a94c8935659cb94432ed658b47c1d57a72"}" wire:effects="[]" wire:id="uZs2BOfTyxBxcQLO1bHp" wire:name="documentation::article" x-init="$wire.__lazyLoad('eyJkYXRhIjp7ImZvck1vdW50IjpbeyJtYXJrZG93biI6W3siYm9keSI6IjxoMSBpZD1cImNvbnRlbnQtdGl6ZW4taGFsLWFwaS1oZGNwXCI+PGEgaHJlZj1cIiNjb250ZW50LXRpemVuLWhhbC1hcGktaGRjcFwiIGNsYXNzPVwiaGVhZGluZy1wZXJtYWxpbmtcIiBhcmlhLWhpZGRlbj1cInRydWVcIiB0aXRsZT1cIlBlcm1hbGlua1wiPlx1MDBiNjxcL2E+VGl6ZW4gSEFMIEFQSTogSERDUDxcL2gxPjxkaXYgZGF0YS1rbm93bGVkZ2UtYmFzZS1tZXRhZGF0YT48XC9kaXY+XG48aHIgXC8+XG48cD5UaGUgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fSERDUF9fTU9EVUxFLm1kXCI+SERDUDxcL2E+IHByb3ZpZGVzIGZ1bmN0aW9ucyBmb3IgaGRjcCBkZXZpY2VzLjxcL3A+XG48aDIgaWQ9XCJjb250ZW50LXJlcXVpcmVkLWhlYWRlclwiPjxhIGhyZWY9XCIjY29udGVudC1yZXF1aXJlZC1oZWFkZXJcIiBjbGFzcz1cImhlYWRpbmctcGVybWFsaW5rXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCIgdGl0bGU9XCJQZXJtYWxpbmtcIj5cdTAwYjY8XC9hPlJlcXVpcmVkIEhlYWRlcjxcL2gyPlxuPHA+I2luY2x1ZGUgJmx0O2hhbC1oZGNwLmgmZ3Q7PFwvcD5cbjxoMiBpZD1cImNvbnRlbnQtb3ZlcnZpZXdcIj48YSBocmVmPVwiI2NvbnRlbnQtb3ZlcnZpZXdcIiBjbGFzcz1cImhlYWRpbmctcGVybWFsaW5rXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCIgdGl0bGU9XCJQZXJtYWxpbmtcIj5cdTAwYjY8XC9hPk92ZXJ2aWV3PFwvaDI+XG48cD5UaGUgaGRjcCBkZXZpY2VzIGhhdmUgdmFyaW91cyBzcGVjaWZpY2F0aW9ucywgc28gaXQncyBoYXJkIHRvIGNvbnRyb2wgdGhlbSB1c2luZyBzaW5nbGUgY29kZS4gVGhlIGhkY3AgSEFMIHByb3ZpZGVzIGNvbW1vbiBhYnN0cmFjdGlvbiBpbnRlcmZhY2VzIHRvIGNvbnRyb2wgaGRjcCBkZXZpY2VzIHdoaWNoIGFyZSBkaWZmZXJlbnQuPFwvcD5cbjxwPlRoZSBIRENQIEhBTCBhbGxvd3MgY3JlYXRpb24gb2YgY29tcG9uZW50cyByZXF1aXJlZCBpbiBzZWN1cmUgcGxheWJhY2sgaW5jbHVkaW5nOjxcL3A+XG48dWw+XG48bGk+bWFuYWdpbmcgaGRjcCBzZXNzaW9ucy48XC9saT5cbjxsaT5kZWNyeXB0IGhkY3AgY29udGVudC48XC9saT5cbjxsaT5lbmNyeXB0IGNvbnRlbnQuPFwvbGk+XG48XC91bD5cbjxoMyBpZD1cImNvbnRlbnQtc3RhdGUtZGlhZ3JhbVwiPjxhIGhyZWY9XCIjY29udGVudC1zdGF0ZS1kaWFncmFtXCIgY2xhc3M9XCJoZWFkaW5nLXBlcm1hbGlua1wiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIHRpdGxlPVwiUGVybWFsaW5rXCI+XHUwMGI2PFwvYT5TdGF0ZSBEaWFncmFtPFwvaDM+XG48cD48aW1nIHNyYz1cIm1lZGlhXC9oYWxfaGRjcF9zdGF0ZV9kaWFncmFtLnBuZ1wiIGFsdD1cImhhbF9oZGNwX3N0YXRlX2RpYWdyYW0ucG5nXCIgXC8+PFwvcD5cbjxoMyBpZD1cImNvbnRlbnQtc3RhdGUtdHJhbnNpdGlvbnNcIj48YSBocmVmPVwiI2NvbnRlbnQtc3RhdGUtdHJhbnNpdGlvbnNcIiBjbGFzcz1cImhlYWRpbmctcGVybWFsaW5rXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCIgdGl0bGU9XCJQZXJtYWxpbmtcIj5cdTAwYjY8XC9hPlN0YXRlIFRyYW5zaXRpb25zPFwvaDM+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD48c3Ryb25nPkZVTkNUSU9OPFwvc3Ryb25nPjxcL3RoPlxuPHRoPjxzdHJvbmc+UFJFLVNUQVRFPFwvc3Ryb25nPjxcL3RoPlxuPHRoPjxzdHJvbmc+UE9TVC1TVEFURTxcL3N0cm9uZz48XC90aD5cbjx0aD48c3Ryb25nPlNZTkMgVFlQRTxcL3N0cm9uZz48XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48dGJvZHk+XG48dHI+XG48dGQ+aGFsX2hkY3BfaW5pdCgpPFwvdGQ+XG48dGQ+Tk9ORTxcL3RkPlxuPHRkPklOSVRJQUxJWkVEPFwvdGQ+XG48dGQ+U1lOQzxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+aGFsX2hkY3BfZGVpbml0KCk8XC90ZD5cbjx0ZD5JTklUSUFMSVpFRDxcL3RkPlxuPHRkPk5PTkU8XC90ZD5cbjx0ZD5TWU5DPFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD5oYWxfaGRjcF9vcGVuKCk8XC90ZD5cbjx0ZD5JTklUSUFMSVpFRDxcL3RkPlxuPHRkPk9QRU5FRDxcL3RkPlxuPHRkPlNZTkM8XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPmhhbF9oZGNwX2Nsb3NlKCk8XC90ZD5cbjx0ZD5PUEVORUQ8XC90ZD5cbjx0ZD5JTklUSUFMSVpFRDxcL3RkPlxuPHRkPlNZTkM8XC90ZD5cbjxcL3RyPlxuPFwvdGJvZHk+XG48XC90YWJsZT48XC9kaXY+XG48cD5Gb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiB0aGUgSERDUCBmZWF0dXJlcyBhbmQgdGhlIG1hY3Jvcywgc2VlIEhBTCBIRENQIHByb2dyYW1taW5nIGd1aWRlcyBhbmQgdHV0b3JpYWxzLjxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD5UeXBlZGVmczxcL3RoPlxuPHRoPjxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjx0Ym9keT5cbjx0cj5cbjx0ZD50eXBlZGVmIGVudW0gPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fSERDUF9fTU9EVUxFLm1kI2dhMDk1ODFhZmIyYTRlMjBhOTRmNzRlZDQzYjBiODJiODVcIj5oYWxfaGRjcF9lcnJvcjxcL2E+PFwvdGQ+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fSERDUF9fTU9EVUxFLm1kI2dhNGU5ODM4MDJlYmVhZDhjNjFiMDI1N2E2N2U2NTBjY2NcIj5oYWxfaGRjcF9lcnJvcl9lPFwvYT48XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPjxcL3RkPlxuPHRkPkVudW1lcmF0aW9uIGZvciB0aGUgSERDUCBlcnJvci48XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPnR5cGVkZWYgZW51bSA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19IRENQX19NT0RVTEUubWQjZ2FlY2Y2Yzc4NDhhZjU1NWJmNTg3NTQzZDRlYjVlZWJmOFwiPmhhbF9oZGNwX3N0YXRlPFwvYT48XC90ZD5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19IRENQX19NT0RVTEUubWQjZ2FiNTM0Y2UxNmIwNzhkYjYzOGM0ZGUzZjgyYTUzMzExNFwiPmhhbF9oZGNwX3N0YXRlX2U8XC9hPjxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+PFwvdGQ+XG48dGQ+RW51bWVyYXRpb24gZm9yIHRoZSBIRENQIHN0YXRlLjxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+dHlwZWRlZiBlbnVtIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX0hEQ1BfX01PRFVMRS5tZCNnYTU4ZmNjMTk3Mjc3ZDc2NzAyMjA3NDlmNjQ2ZDBkMzM2XCI+aGFsX2hkY3BfY29tbWFuZDxcL2E+PFwvdGQ+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fSERDUF9fTU9EVUxFLm1kI2dhODg5NjQ0MmQwM2VjYTBkMjA4NzU1NmRmNWYxODU2MWRcIj5oYWxfaGRjcF9jb21tYW5kX2U8XC9hPjxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+PFwvdGQ+XG48dGQ+RW51bWVyYXRpb24gZm9yIHRoZSBIRENQIGNvbW1hbmQuPFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD50eXBlZGVmIHN0cnVjdCAgIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX0hEQ1BfX01PRFVMRS5tZCNzdHJ1Y3RoYWxfX2hkY3BfX2JhdGNoX19jb21tYW5kX19jb250cm9sXCI+aGFsX2hkY3BfYmF0Y2hfY29tbWFuZF9jb250cm9sPFwvYT48XC90ZD5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19IRENQX19NT0RVTEUubWQjZ2FjYWY0YTZkMGFjZjAwM2RjZGY3MDQ3MmY0ZDI1NGMyNFwiPmhhbF9oZGNwX2JhdGNoX2NvbW1hbmRfY29udHJvbF9zPFwvYT48XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPjxcL3RkPlxuPHRkPlRoZSBzdHJ1Y3R1cmUgdHlwZSBvZiBiYXRjaCBjb21tYW5kLjxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+dHlwZWRlZiBlbnVtIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX0hEQ1BfX01PRFVMRS5tZCNnYTE4YWQxOTIxYWFkYmRmNWQxYjQxYzRlNjE3YjcxZDc4XCI+aGFsX2hkY3BfbWVzc2FnZV90eXBlPFwvYT48XC90ZD5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19IRENQX19NT0RVTEUubWQjZ2FmYWI1ZjE1YjMwNDU5M2EzZWI3NTA5ZDM2NzMyNDc1Y1wiPmhhbF9oZGNwX21lc3NhZ2VfdHlwZV9lPFwvYT48XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPjxcL3RkPlxuPHRkPkVudW1lcmF0aW9uIGZvciB0aGUgSERDUCBtZXNzYWdlIHR5cGUuPFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD50eXBlZGVmIHN0cnVjdCA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19IRENQX19NT0RVTEUubWQjc3RydWN0aGFsX19oZGNwX19tZXNzYWdlXCI+aGFsX2hkY3BfbWVzc2FnZTxcL2E+PFwvdGQ+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fSERDUF9fTU9EVUxFLm1kI2dhNGM2NzgyZDFhODU4NWI1MWY2NGY3MjliZmFmYmI2OGFcIj5oYWxfaGRjcF9tZXNzYWdlX3M8XC9hPjxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+PFwvdGQ+XG48dGQ+VGhlIHN0cnVjdHVyZSB0eXBlIG9mIHRoZSBIRENQIG1lc3NhZ2UuPFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD50eXBlZGVmIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX0hEQ1BfX01PRFVMRS5tZCNnYTRlOTgzODAyZWJlYWQ4YzYxYjAyNTdhNjdlNjUwY2NjXCI+aGFsX2hkY3BfZXJyb3JfZTxcL2E+KCo8XC90ZD5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19IRENQX19NT0RVTEUubWQjZ2ExMDBkNjhhODEyYWUzYjNjZGIyNTRjYzhlN2QyM2I4Y1wiPmhhbF9oZGNwX21lc3NhZ2VfY2I8XC9hPiApKDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX0hEQ1BfX01PRFVMRS5tZCNnYTRjNjc4MmQxYTg1ODViNTFmNjRmNzI5YmZhZmJiNjhhXCI+aGFsX2hkY3BfbWVzc2FnZV9zPFwvYT4gKm1lc3NhZ2UsIHZvaWQgKnVzZXJfZGF0YSk8XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPjxcL3RkPlxuPHRkPkNhbGxiYWNrIGZ1bmN0aW9uIGZvciBub3RpZmljYXRpb24gZnJvbSBIRENQIEhBTC48XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPnR5cGVkZWYgc3RydWN0ICAgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fSERDUF9fTU9EVUxFLm1kI3N0cnVjdF9faGFsX19iYWNrZW5kX19oZGNwX19mdW5jc1wiPl9oYWxfYmFja2VuZF9oZGNwX2Z1bmNzPFwvYT48XC90ZD5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19IRENQX19NT0RVTEUubWQjZ2EwY2MzMjAzZjk3MmFhYzJjZWUzMTAwZjI4ZTY2YTVmNFwiPmhhbF9iYWNrZW5kX2hkY3BfZnVuY3M8XC9hPjxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+PFwvdGQ+XG48dGQ+VGhlIHN0cnVjdHVyZSB0eXBlIG9mIHRoZSBIRENQIEhBTCBmdW5jdGlvbnMuPFwvdGQ+XG48XC90cj5cbjxcL3Rib2R5PlxuPFwvdGFibGU+PFwvZGl2PlxuPGhyIFwvPlxuPGgyIGlkPVwiY29udGVudC1kYXRhLXN0cnVjdHVyZS1kb2N1bWVudGF0aW9uXCI+PGEgaHJlZj1cIiNjb250ZW50LWRhdGEtc3RydWN0dXJlLWRvY3VtZW50YXRpb25cIiBjbGFzcz1cImhlYWRpbmctcGVybWFsaW5rXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCIgdGl0bGU9XCJQZXJtYWxpbmtcIj5cdTAwYjY8XC9hPkRhdGEgU3RydWN0dXJlIERvY3VtZW50YXRpb248XC9oMj5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPnN0cnVjdCBoYWxfaGRjcF9idWZmZXJfczxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPlRoZSBzdHJ1Y3R1cmUgdHlwZSBvZiBIRENQIGJ1ZmZlci48XC9wPlxuPHA+PHN0cm9uZz5TaW5jZTo8XC9zdHJvbmc+XG46ICAgSEFMX01PRFVMRV9IRENQIDEuMDxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD5EYXRhIEZpZWxkczxcL3RoPlxuPHRoPjxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjx0Ym9keT5cbjx0cj5cbjx0ZD5pbnQ8XC90ZD5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19IRENQX19NT0RVTEUubWQjYTlmMDcwMmU1MWVkN2Y0OTk4OTdlYmY5YjFmODY1YWM1XCI+aW5kZXg8XC9hPjxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+Ym9vbDxcL3RkPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX0hEQ1BfX01PRFVMRS5tZCNhYTcwZWY1ZWMxODcwYTM2NDYxOGM0MThiNDNiMzUwZjJcIj5pc19zZWN1cmU8XC9hPjxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+dWludDMyX3Q8XC90ZD5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19IRENQX19NT0RVTEUubWQjYTc5Y2RiZTQ3NjI4YTYwZmU2MmQ3MzE5ZjdiYzhlMDgxXCI+c2l6ZTxcL2E+PFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD51bnNpZ25lZCBjaGFyICo8XC90ZD5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19IRENQX19NT0RVTEUubWQjYTQxNzQ0MjMwM2QzY2ViZTEyMWJkOTBkMDAzMTkwNmVhXCI+ZGF0YTxcL2E+PFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD5pbnQ8XC90ZD5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19IRENQX19NT0RVTEUubWQjYTljOWIzOTkwZGYwNjE5NzAzODIwYzhhZmE0ODE0YjMzXCI+ZmQ8XC9hPjxcL3RkPlxuPFwvdHI+XG48XC90Ym9keT5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxociBcLz5cbjxoNCBpZD1cImNvbnRlbnQtZmllbGQtZG9jdW1lbnRhdGlvblwiPjxhIGhyZWY9XCIjY29udGVudC1maWVsZC1kb2N1bWVudGF0aW9uXCIgY2xhc3M9XCJoZWFkaW5nLXBlcm1hbGlua1wiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIHRpdGxlPVwiUGVybWFsaW5rXCI+XHUwMGI2PFwvYT5GaWVsZCBEb2N1bWVudGF0aW9uPFwvaDQ+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD51bnNpZ25lZCBjaGFyKiA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19IRENQX19NT0RVTEUubWQjYTQxNzQ0MjMwM2QzY2ViZTEyMWJkOTBkMDAzMTkwNmVhXCI+aGFsX2hkY3BfYnVmZmVyX3M6OmRhdGE8XC9hPjxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPlRoZSBwb2ludGVyIG9mIGRhdGEgYnVmZmVyPFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPmludCA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19IRENQX19NT0RVTEUubWQjYTljOWIzOTkwZGYwNjE5NzAzODIwYzhhZmE0ODE0YjMzXCI+aGFsX2hkY3BfYnVmZmVyX3M6OmZkPFwvYT48XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48XC90YWJsZT48XC9kaXY+XG48cD5UaGUgZmQoZmlsZSBkZXNjcmlwdG9yKSBvZiBkYXRhIGJ1ZmZlcjxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD5pbnQgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fSERDUF9fTU9EVUxFLm1kI2E5ZjA3MDJlNTFlZDdmNDk5ODk3ZWJmOWIxZjg2NWFjNVwiPmhhbF9oZGNwX2J1ZmZlcl9zOjppbmRleDxcL2E+PFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+VGhlIGluZGV4IG9mIGJ1ZmZlcjxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD5ib29sIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX0hEQ1BfX01PRFVMRS5tZCNhYTcwZWY1ZWMxODcwYTM2NDYxOGM0MThiNDNiMzUwZjJcIj5oYWxfaGRjcF9idWZmZXJfczo6aXNfc2VjdXJlPFwvYT48XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48XC90YWJsZT48XC9kaXY+XG48cD5UaGUgZmxhZyB3aGljaCBpbmRpY2F0ZXMgdGhlIHJlYWwgZGF0YSBpcyBtYW5hZ2VkIGluIHNlY3VyZSB3b3JsZCBvciBub3Q8XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+dWludDMyX3QgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fSERDUF9fTU9EVUxFLm1kI2E3OWNkYmU0NzYyOGE2MGZlNjJkNzMxOWY3YmM4ZTA4MVwiPmhhbF9oZGNwX2J1ZmZlcl9zOjpzaXplPFwvYT48XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48XC90YWJsZT48XC9kaXY+XG48cD5UaGUgc2l6ZSBvZiBkYXRhIGJ1ZmZlcjxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD5zdHJ1Y3QgaGFsX2hkY3BfY3J5cHRvX2luZm9fczxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPlRoZSBzdHJ1Y3R1cmUgdHlwZSBvZiBjcnlwdG8gaW5mb3JtYXRpb24gZm9yIGVuY3J5cHRpb24gYW5kIGRlY3J5cHRpb24uPFwvcD5cbjxwPjxzdHJvbmc+U2luY2U6PFwvc3Ryb25nPlxuOiAgIEhBTF9NT0RVTEVfSERDUCAxLjA8XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+RGF0YSBGaWVsZHM8XC90aD5cbjx0aD48XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48dGJvZHk+XG48dHI+XG48dGQ+dWludDMyX3Q8XC90ZD5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19IRENQX19NT0RVTEUubWQjYTQ5NTBlYTQwYzBhM2VjNjc4YmM5NGNhYzhkY2RiZjgxXCI+aXZfc2l6ZTxcL2E+PFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD51bnNpZ25lZCBjaGFyICo8XC90ZD5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19IRENQX19NT0RVTEUubWQjYTZmZDk5NzRkZmExOGU3MWJjNTJjYmZjMmMxOWQwMGE0XCI+aXY8XC9hPjxcL3RkPlxuPFwvdHI+XG48XC90Ym9keT5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxociBcLz5cbjxoNCBpZD1cImNvbnRlbnQtZmllbGQtZG9jdW1lbnRhdGlvbi0xXCI+PGEgaHJlZj1cIiNjb250ZW50LWZpZWxkLWRvY3VtZW50YXRpb24tMVwiIGNsYXNzPVwiaGVhZGluZy1wZXJtYWxpbmtcIiBhcmlhLWhpZGRlbj1cInRydWVcIiB0aXRsZT1cIlBlcm1hbGlua1wiPlx1MDBiNjxcL2E+RmllbGQgRG9jdW1lbnRhdGlvbjxcL2g0PlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+dW5zaWduZWQgY2hhciogPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fSERDUF9fTU9EVUxFLm1kI2E2ZmQ5OTc0ZGZhMThlNzFiYzUyY2JmYzJjMTlkMDBhNFwiPmhhbF9oZGNwX2NyeXB0b19pbmZvX3M6Oml2PFwvYT48XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48XC90YWJsZT48XC9kaXY+XG48cD5UaGUgSVYoSW5pdGlhbGl6YXRpb24gVmVjdG9yKSBmb3IgYmxvY2sgY2lwaGVyIG1vZGVzIG9mIG9wZXJhdGlvbjxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD51aW50MzJfdCA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19IRENQX19NT0RVTEUubWQjYTQ5NTBlYTQwYzBhM2VjNjc4YmM5NGNhYzhkY2RiZjgxXCI+aGFsX2hkY3BfY3J5cHRvX2luZm9fczo6aXZfc2l6ZTxcL2E+PFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+VGhlIHNpemUgb2YgSVY8XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+c3RydWN0IGhhbF9oZGNwX2N1c3RvbV9jb21tYW5kX3M8XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48XC90YWJsZT48XC9kaXY+XG48cD5UaGUgc3RydWN0dXJlIHR5cGUgb2YgdGhlIEhEQ1AgSEFMIGN1c3RvbSBjb21tYW5kLjxcL3A+XG48cD48c3Ryb25nPlNpbmNlOjxcL3N0cm9uZz5cbjogICBIQUxfTU9EVUxFX0hEQ1AgMS4wPFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPkRhdGEgRmllbGRzPFwvdGg+XG48dGg+PFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPHRib2R5PlxuPHRyPlxuPHRkPmNvbnN0IGNoYXIgKjxcL3RkPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX0hEQ1BfX01PRFVMRS5tZCNhNGFlM2Y1M2FmYmQ2MzUyMGFmMWM4Y2ZiZjU5NGMzZDlcIj5uYW1lPFwvYT48XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPnZvaWQgKjxcL3RkPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX0hEQ1BfX01PRFVMRS5tZCNhZjJkMGUwZmEyOGYzNzA0N2UyMWE5NzMwOGVhODEyNWRcIj52YWx1ZTxcL2E+PFwvdGQ+XG48XC90cj5cbjxcL3Rib2R5PlxuPFwvdGFibGU+PFwvZGl2PlxuPGhyIFwvPlxuPGg0IGlkPVwiY29udGVudC1maWVsZC1kb2N1bWVudGF0aW9uLTJcIj48YSBocmVmPVwiI2NvbnRlbnQtZmllbGQtZG9jdW1lbnRhdGlvbi0yXCIgY2xhc3M9XCJoZWFkaW5nLXBlcm1hbGlua1wiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIHRpdGxlPVwiUGVybWFsaW5rXCI+XHUwMGI2PFwvYT5GaWVsZCBEb2N1bWVudGF0aW9uPFwvaDQ+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD5jb25zdCBjaGFyKiA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19IRENQX19NT0RVTEUubWQjYTRhZTNmNTNhZmJkNjM1MjBhZjFjOGNmYmY1OTRjM2Q5XCI+aGFsX2hkY3BfY3VzdG9tX2NvbW1hbmRfczo6bmFtZTxcL2E+PFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+VGhlIG5hbWUgb2YgY3VzdG9tIGNvbW1hbmQ8XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+dm9pZCogPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fSERDUF9fTU9EVUxFLm1kI2FmMmQwZTBmYTI4ZjM3MDQ3ZTIxYTk3MzA4ZWE4MTI1ZFwiPmhhbF9oZGNwX2N1c3RvbV9jb21tYW5kX3M6OnZhbHVlPFwvYT48XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48XC90YWJsZT48XC9kaXY+XG48cD5UaGUgdmFsdWUgb2YgY3VzdG9tIGNvbW1hbmQ8XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+c3RydWN0IGhhbF9oZGNwX2JhdGNoX2NvbW1hbmRfY29udHJvbDxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPlRoZSBzdHJ1Y3R1cmUgdHlwZSBvZiBiYXRjaCBjb21tYW5kLjxcL3A+XG48cD48c3Ryb25nPlNpbmNlOjxcL3N0cm9uZz5cbjogICBIQUxfTU9EVUxFX0hEQ1AgMS4wPFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPkRhdGEgRmllbGRzPFwvdGg+XG48dGg+PFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPHRib2R5PlxuPHRyPlxuPHRkPnVpbnQ2NF90PFwvdGQ+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fSERDUF9fTU9EVUxFLm1kI2E2Yjc2NTg4OTFiOGIwZmIzNDBlZThmNmFjOTlmNmVkZFwiPmNvbW1hbmRfc2V0X2ZsYWc8XC9hPjxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fSERDUF9fTU9EVUxFLm1kI3N0cnVjdGhhbF9faGRjcF9fY3VzdG9tX19jb21tYW5kX19zXCI+aGFsX2hkY3BfY3VzdG9tX2NvbW1hbmRfczxcL2E+PFwvdGQ+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fSERDUF9fTU9EVUxFLm1kI2FkZTMxNDE4NzAwNDYzOTkwYzFhMzM2MTI3YTNmZGNkNVwiPmN1c3RvbTxcL2E+PFwvdGQ+XG48XC90cj5cbjxcL3Rib2R5PlxuPFwvdGFibGU+PFwvZGl2PlxuPGhyIFwvPlxuPGg0IGlkPVwiY29udGVudC1maWVsZC1kb2N1bWVudGF0aW9uLTNcIj48YSBocmVmPVwiI2NvbnRlbnQtZmllbGQtZG9jdW1lbnRhdGlvbi0zXCIgY2xhc3M9XCJoZWFkaW5nLXBlcm1hbGlua1wiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIHRpdGxlPVwiUGVybWFsaW5rXCI+XHUwMGI2PFwvYT5GaWVsZCBEb2N1bWVudGF0aW9uPFwvaDQ+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD51aW50NjRfdCA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19IRENQX19NT0RVTEUubWQjYTZiNzY1ODg5MWI4YjBmYjM0MGVlOGY2YWM5OWY2ZWRkXCI+aGFsX2hkY3BfYmF0Y2hfY29tbWFuZF9jb250cm9sOjpjb21tYW5kX3NldF9mbGFnPFwvYT48XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48XC90YWJsZT48XC9kaXY+XG48cD5mbGFnIGZvciB1cGRhdGluZyBjb21tYW5kczxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19IRENQX19NT0RVTEUubWQjc3RydWN0aGFsX19oZGNwX19jdXN0b21fX2NvbW1hbmRfX3NcIj5oYWxfaGRjcF9jdXN0b21fY29tbWFuZF9zPFwvYT4gPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fSERDUF9fTU9EVUxFLm1kI2FkZTMxNDE4NzAwNDYzOTkwYzFhMzM2MTI3YTNmZGNkNVwiPmhhbF9oZGNwX2JhdGNoX2NvbW1hbmRfY29udHJvbDo6Y3VzdG9tPFwvYT48XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48XC90YWJsZT48XC9kaXY+XG48cD5UaGUgdmFsdWUgZm9yIGN1c3RvbSBjb21tYW5kPFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPnN0cnVjdCBoYWxfaGRjcF9tZXNzYWdlPFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+VGhlIHN0cnVjdHVyZSB0eXBlIG9mIHRoZSBIRENQIG1lc3NhZ2UuPFwvcD5cbjxwPjxzdHJvbmc+U2luY2U6PFwvc3Ryb25nPlxuOiAgIEhBTF9NT0RVTEVfSERDUCAxLjA8XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+RGF0YSBGaWVsZHM8XC90aD5cbjx0aD48XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48dGJvZHk+XG48dHI+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fSERDUF9fTU9EVUxFLm1kI2dhZmFiNWYxNWIzMDQ1OTNhM2ViNzUwOWQzNjczMjQ3NWNcIj5oYWxfaGRjcF9tZXNzYWdlX3R5cGVfZTxcL2E+PFwvdGQ+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fSERDUF9fTU9EVUxFLm1kI2EyYTQ2ZWNkNTY1YzhlYzVmYWZkNjNiMDIwYTgxOGM5NFwiPnR5cGU8XC9hPjxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fSERDUF9fTU9EVUxFLm1kI2dhNGU5ODM4MDJlYmVhZDhjNjFiMDI1N2E2N2U2NTBjY2NcIj5oYWxfaGRjcF9lcnJvcl9lPFwvYT48XC90ZD5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19IRENQX19NT0RVTEUubWQjYTkzMThlYTNlMzcxMjA4NjIxM2IxYzk0ZTBjNzEzNjVhXCI+ZXJyb3JfY29kZTxcL2E+PFwvdGQ+XG48XC90cj5cbjxcL3Rib2R5PlxuPFwvdGFibGU+PFwvZGl2PlxuPGhyIFwvPlxuPGg0IGlkPVwiY29udGVudC1maWVsZC1kb2N1bWVudGF0aW9uLTRcIj48YSBocmVmPVwiI2NvbnRlbnQtZmllbGQtZG9jdW1lbnRhdGlvbi00XCIgY2xhc3M9XCJoZWFkaW5nLXBlcm1hbGlua1wiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIHRpdGxlPVwiUGVybWFsaW5rXCI+XHUwMGI2PFwvYT5GaWVsZCBEb2N1bWVudGF0aW9uPFwvaDQ+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19IRENQX19NT0RVTEUubWQjZ2E0ZTk4MzgwMmViZWFkOGM2MWIwMjU3YTY3ZTY1MGNjY1wiPmhhbF9oZGNwX2Vycm9yX2U8XC9hPiA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19IRENQX19NT0RVTEUubWQjYTkzMThlYTNlMzcxMjA4NjIxM2IxYzk0ZTBjNzEzNjVhXCI+aGFsX2hkY3BfbWVzc2FnZTo6ZXJyb3JfY29kZTxcL2E+PFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+VGhlIGVycm9yIGNvZGU8XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fSERDUF9fTU9EVUxFLm1kI2dhZmFiNWYxNWIzMDQ1OTNhM2ViNzUwOWQzNjczMjQ3NWNcIj5oYWxfaGRjcF9tZXNzYWdlX3R5cGVfZTxcL2E+IDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX0hEQ1BfX01PRFVMRS5tZCNhMmE0NmVjZDU2NWM4ZWM1ZmFmZDYzYjAyMGE4MThjOTRcIj5oYWxfaGRjcF9tZXNzYWdlOjp0eXBlPFwvYT48XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48XC90YWJsZT48XC9kaXY+XG48cD5UaGUgdHlwZSBvZiBtZXNzYWdlPFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPnN0cnVjdCBfaGFsX2JhY2tlbmRfaGRjcF9mdW5jczxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPlRoZSBzdHJ1Y3R1cmUgdHlwZSBvZiB0aGUgSERDUCBIQUwgZnVuY3Rpb25zLjxcL3A+XG48cD48c3Ryb25nPlNpbmNlOjxcL3N0cm9uZz5cbjogICBIQUxfTU9EVUxFX0hEQ1AgMS4wPFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPkRhdGEgRmllbGRzPFwvdGg+XG48dGg+PFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPHRib2R5PlxuPHRyPlxuPHRkPmludCgqPFwvdGQ+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fSERDUF9fTU9EVUxFLm1kI2FiODM2NGQ2MWNmZDAyMTE3NTE3YmU4MDBiZTc0YmMwOVwiPmluaXQ8XC9hPiApKHZvaWQgKipoZGNwX2hhbmRsZSk8XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPmludCgqPFwvdGQ+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fSERDUF9fTU9EVUxFLm1kI2FkZGEwODZhNzljZjlhOTI4NTVhMGNjZGQ3ZjZhYzM0NlwiPmRlaW5pdDxcL2E+ICkodm9pZCAqaGRjcF9oYW5kbGUpPFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD5pbnQoKjxcL3RkPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX0hEQ1BfX01PRFVMRS5tZCNhNDJkYTFkMzBkODMxOTYwNGMyYWM0Y2U0NTliMzFhYzFcIj5vcGVuPFwvYT4gKSh2b2lkICpoZGNwX2hhbmRsZSwgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fSERDUF9fTU9EVUxFLm1kI2dhOWI5ZTViOTk4NjIwN2NiNTc1NzU4YzYwNzkyNzc3OGNcIj5oYWxfaGRjcF9kZXZpY2VfdHlwZV9lPFwvYT4gdHlwZSwgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fSERDUF9fTU9EVUxFLm1kI2dhYzFkOTkzY2RkMmE0MGI2MDBjZTViYzNiOTg2OGIwNzRcIj5oYWxfaGRjcF9wcm90b2NvbF92ZXJzaW9uX2U8XC9hPiB2ZXJzaW9uKTxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+aW50KCo8XC90ZD5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19IRENQX19NT0RVTEUubWQjYTM1ZDM4MTFjMDYyZGVkOWEyMmQ4YzgyMGFhNTUxNzViXCI+Y2xvc2U8XC9hPiApKHZvaWQgKmhkY3BfaGFuZGxlKTxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+aW50KCo8XC90ZD5cbjx0ZD48YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19IRENQX19NT0RVTEUubWQjYTA4NjYxNDlkOTU3MTcyM2EwYTYwYjI3MDQ5ODZmOGQ4XCI+c3RhcnRfcmVjZWl2ZXI8XC9hPiApKHZvaWQgKmhkY3BfaGFuZGxlLCB1aW50MzJfdCBzb2NrZXRfcG9ydCwgdWludDMyX3QgKmhkY3BfaWQpPFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD5pbnQoKjxcL3RkPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX0hEQ1BfX01PRFVMRS5tZCNhNjM0MjEwZjUxZWUwM2RmZWVmNDJlZTVjNDFiZDY2ZDVcIj5zdG9wX3JlY2VpdmVyPFwvYT4gKSh2b2lkICpoZGNwX2hhbmRsZSwgdWludDMyX3QgaGRjcF9pZCk8XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPmludCgqPFwvdGQ+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fSERDUF9fTU9EVUxFLm1kI2FmZTIzNmM1MjE3MWY2NjIxZjlhODJkNzJjOTkwMWNhY1wiPnN0YXJ0X3RyYW5zbWl0dGVyPFwvYT4gKSh2b2lkICpoZGNwX2hhbmRsZSwgY29uc3QgY2hhciAqc29ja2V0X2lwLCB1aW50MzJfdCBzb2NrZXRfcG9ydCwgdWludDMyX3QgKmhkY3BfaWQpPFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD5pbnQoKjxcL3RkPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX0hEQ1BfX01PRFVMRS5tZCNhZTI5Y2NmMjg3OTJmOWMzN2NhYjYxNjNmODE2ZjZlM2VcIj5zdG9wX3RyYW5zbWl0dGVyPFwvYT4gKSh2b2lkICpoZGNwX2hhbmRsZSwgdWludDMyX3QgaGRjcF9pZCk8XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPmludCgqPFwvdGQ+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fSERDUF9fTU9EVUxFLm1kI2ExOWNkMTA0NzBiYzEyZjlhNWZhZGI1MzE5YTMxMjc2YlwiPmFsbG9jYXRlX291dHB1dF9idWZmZXI8XC9hPiApKHZvaWQgKmhkY3BfaGFuZGxlLCB1aW50MzJfdCBzaXplLCBib29sIGlzX3NlY3VyZSwgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fSERDUF9fTU9EVUxFLm1kI3N0cnVjdGhhbF9faGRjcF9fYnVmZmVyX19zXCI+aGFsX2hkY3BfYnVmZmVyX3M8XC9hPiAqKmJ1ZmZlcik8XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPmludCgqPFwvdGQ+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fSERDUF9fTU9EVUxFLm1kI2E1ZWRlODQxYjA2MmQzMzhiOGZlYjg2Mjk3MjZhMGJjZlwiPnJlbGVhc2Vfb3V0cHV0X2J1ZmZlcjxcL2E+ICkodm9pZCAqaGRjcF9oYW5kbGUsIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX0hEQ1BfX01PRFVMRS5tZCNzdHJ1Y3RoYWxfX2hkY3BfX2J1ZmZlcl9fc1wiPmhhbF9oZGNwX2J1ZmZlcl9zPFwvYT4gKmJ1ZmZlcik8XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPmludCgqPFwvdGQ+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fSERDUF9fTU9EVUxFLm1kI2FlN2MyMjRkZjdjYjI1ODFkOTc3N2ViYmYxMGJmMGE2Y1wiPmRlY3J5cHQ8XC9hPiApKHZvaWQgKmhkY3BfaGFuZGxlLCA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19IRENQX19NT0RVTEUubWQjc3RydWN0aGFsX19oZGNwX19idWZmZXJfX3NcIj5oYWxfaGRjcF9idWZmZXJfczxcL2E+ICppbnB1dCwgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fSERDUF9fTU9EVUxFLm1kI3N0cnVjdGhhbF9faGRjcF9fY3J5cHRvX19pbmZvX19zXCI+aGFsX2hkY3BfY3J5cHRvX2luZm9fczxcL2E+ICpkZWNyeXB0X2luZm8sIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX0hEQ1BfX01PRFVMRS5tZCNzdHJ1Y3RoYWxfX2hkY3BfX2J1ZmZlcl9fc1wiPmhhbF9oZGNwX2J1ZmZlcl9zPFwvYT4gKm91dHB1dCk8XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPmludCgqPFwvdGQ+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fSERDUF9fTU9EVUxFLm1kI2FhNjdhMmViNzMyYTZhYTY1MTNiOGJiYTdlNDNjNDAzYlwiPmVuY3J5cHQ8XC9hPiApKHZvaWQgKmhkY3BfaGFuZGxlLCA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19IRENQX19NT0RVTEUubWQjc3RydWN0aGFsX19oZGNwX19idWZmZXJfX3NcIj5oYWxfaGRjcF9idWZmZXJfczxcL2E+ICppbnB1dCwgdWludDMyX3QgaGRjcF9pZCwgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fSERDUF9fTU9EVUxFLm1kI3N0cnVjdGhhbF9faGRjcF9fY3J5cHRvX19pbmZvX19zXCI+aGFsX2hkY3BfY3J5cHRvX2luZm9fczxcL2E+ICplbmNyeXB0X2luZm8sIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX0hEQ1BfX01PRFVMRS5tZCNzdHJ1Y3RoYWxfX2hkY3BfX2J1ZmZlcl9fc1wiPmhhbF9oZGNwX2J1ZmZlcl9zPFwvYT4gKm91dHB1dCk8XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPmludCgqPFwvdGQ+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fSERDUF9fTU9EVUxFLm1kI2E2YmFhNmQ5YzkwMWI0OTAyZTRmODU4YzU1NjBmYTU3N1wiPnNldF9jb21tYW5kPFwvYT4gKSh2b2lkICpoZGNwX2hhbmRsZSwgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fSERDUF9fTU9EVUxFLm1kI2dhODg5NjQ0MmQwM2VjYTBkMjA4NzU1NmRmNWYxODU2MWRcIj5oYWxfaGRjcF9jb21tYW5kX2U8XC9hPiBjb21tYW5kLCB2b2lkICp2YWx1ZSk8XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPmludCgqPFwvdGQ+XG48dGQ+PGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fSERDUF9fTU9EVUxFLm1kI2E2YzNiMTgwMjJlODQwZDAwODYwNTUyOTU3NGExMDJiNlwiPmdldF9jb21tYW5kPFwvYT4gKSh2b2lkICpoZGNwX2hhbmRsZSwgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fSERDUF9fTU9EVUxFLm1kI2dhODg5NjQ0MmQwM2VjYTBkMjA4NzU1NmRmNWYxODU2MWRcIj5oYWxfaGRjcF9jb21tYW5kX2U8XC9hPiBjb21tYW5kLCB2b2lkICoqdmFsdWUpPFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD5pbnQoKjxcL3RkPlxuPHRkPjxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX0hEQ1BfX01PRFVMRS5tZCNhNDc1YjQyZTA2Mjg0ZGRlOTE1OTZhYTU1MDBhNWRjYWZcIj5zZXRfYmF0Y2hfY29tbWFuZDxcL2E+ICkodm9pZCAqaGRjcF9oYW5kbGUsIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX0hEQ1BfX01PRFVMRS5tZCNnYWNhZjRhNmQwYWNmMDAzZGNkZjcwNDcyZjRkMjU0YzI0XCI+aGFsX2hkY3BfYmF0Y2hfY29tbWFuZF9jb250cm9sX3M8XC9hPiAqYmF0Y2hfY29tbWFuZCwgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fSERDUF9fTU9EVUxFLm1kI2dhODg5NjQ0MmQwM2VjYTBkMjA4NzU1NmRmNWYxODU2MWRcIj5oYWxfaGRjcF9jb21tYW5kX2U8XC9hPiAqZXJyb3JfY29tbWFuZCk8XC90ZD5cbjxcL3RyPlxuPFwvdGJvZHk+XG48XC90YWJsZT48XC9kaXY+XG48aHIgXC8+XG48aDQgaWQ9XCJjb250ZW50LWZpZWxkLWRvY3VtZW50YXRpb24tNVwiPjxhIGhyZWY9XCIjY29udGVudC1maWVsZC1kb2N1bWVudGF0aW9uLTVcIiBjbGFzcz1cImhlYWRpbmctcGVybWFsaW5rXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCIgdGl0bGU9XCJQZXJtYWxpbmtcIj5cdTAwYjY8XC9hPkZpZWxkIERvY3VtZW50YXRpb248XC9oND5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPmludCgqIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX0hEQ1BfX01PRFVMRS5tZCNhMTljZDEwNDcwYmMxMmY5YTVmYWRiNTMxOWEzMTI3NmJcIj5faGFsX2JhY2tlbmRfaGRjcF9mdW5jczo6YWxsb2NhdGVfb3V0cHV0X2J1ZmZlcjxcL2E+KSh2b2lkICpoZGNwX2hhbmRsZSwgdWludDMyX3Qgc2l6ZSwgYm9vbCBpc19zZWN1cmUsIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX0hEQ1BfX01PRFVMRS5tZCNzdHJ1Y3RoYWxfX2hkY3BfX2J1ZmZlcl9fc1wiPmhhbF9oZGNwX2J1ZmZlcl9zPFwvYT4gKipidWZmZXIpPFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+QWxsb2NhdGVzIGhkY3Agb3V0cHV0IGJ1ZmZlcjxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD5pbnQoKiA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19IRENQX19NT0RVTEUubWQjYTM1ZDM4MTFjMDYyZGVkOWEyMmQ4YzgyMGFhNTUxNzViXCI+X2hhbF9iYWNrZW5kX2hkY3BfZnVuY3M6OmNsb3NlPFwvYT4pKHZvaWQgKmhkY3BfaGFuZGxlKTxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPkNsb3NlcyBIRENQPFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPmludCgqIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX0hEQ1BfX01PRFVMRS5tZCNhZTdjMjI0ZGY3Y2IyNTgxZDk3NzdlYmJmMTBiZjBhNmNcIj5faGFsX2JhY2tlbmRfaGRjcF9mdW5jczo6ZGVjcnlwdDxcL2E+KSh2b2lkICpoZGNwX2hhbmRsZSwgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fSERDUF9fTU9EVUxFLm1kI3N0cnVjdGhhbF9faGRjcF9fYnVmZmVyX19zXCI+aGFsX2hkY3BfYnVmZmVyX3M8XC9hPiAqaW5wdXQsIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX0hEQ1BfX01PRFVMRS5tZCNzdHJ1Y3RoYWxfX2hkY3BfX2NyeXB0b19faW5mb19fc1wiPmhhbF9oZGNwX2NyeXB0b19pbmZvX3M8XC9hPiAqZGVjcnlwdF9pbmZvLCA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19IRENQX19NT0RVTEUubWQjc3RydWN0aGFsX19oZGNwX19idWZmZXJfX3NcIj5oYWxfaGRjcF9idWZmZXJfczxcL2E+ICpvdXRwdXQpPFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+RGVjcnlwdHMgSERDUCBkYXRhPFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPmludCgqIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX0hEQ1BfX01PRFVMRS5tZCNhZGRhMDg2YTc5Y2Y5YTkyODU1YTBjY2RkN2Y2YWMzNDZcIj5faGFsX2JhY2tlbmRfaGRjcF9mdW5jczo6ZGVpbml0PFwvYT4pKHZvaWQgKmhkY3BfaGFuZGxlKTxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPkRlaW5pdGlhbGl6ZXMgSERDUCBIQUwgYmFja2VuZCBoYW5kbGU8XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+aW50KCogPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fSERDUF9fTU9EVUxFLm1kI2FhNjdhMmViNzMyYTZhYTY1MTNiOGJiYTdlNDNjNDAzYlwiPl9oYWxfYmFja2VuZF9oZGNwX2Z1bmNzOjplbmNyeXB0PFwvYT4pKHZvaWQgKmhkY3BfaGFuZGxlLCA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19IRENQX19NT0RVTEUubWQjc3RydWN0aGFsX19oZGNwX19idWZmZXJfX3NcIj5oYWxfaGRjcF9idWZmZXJfczxcL2E+ICppbnB1dCwgdWludDMyX3QgaGRjcF9pZCwgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fSERDUF9fTU9EVUxFLm1kI3N0cnVjdGhhbF9faGRjcF9fY3J5cHRvX19pbmZvX19zXCI+aGFsX2hkY3BfY3J5cHRvX2luZm9fczxcL2E+ICplbmNyeXB0X2luZm8sIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX0hEQ1BfX01PRFVMRS5tZCNzdHJ1Y3RoYWxfX2hkY3BfX2J1ZmZlcl9fc1wiPmhhbF9oZGNwX2J1ZmZlcl9zPFwvYT4gKm91dHB1dCk8XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48XC90YWJsZT48XC9kaXY+XG48cD5FbmNyeXB0cyBIRENQIGRhdGE8XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+aW50KCogPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fSERDUF9fTU9EVUxFLm1kI2E2YzNiMTgwMjJlODQwZDAwODYwNTUyOTU3NGExMDJiNlwiPl9oYWxfYmFja2VuZF9oZGNwX2Z1bmNzOjpnZXRfY29tbWFuZDxcL2E+KSh2b2lkICpoZGNwX2hhbmRsZSwgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fSERDUF9fTU9EVUxFLm1kI2dhODg5NjQ0MmQwM2VjYTBkMjA4NzU1NmRmNWYxODU2MWRcIj5oYWxfaGRjcF9jb21tYW5kX2U8XC9hPiBjb21tYW5kLCB2b2lkICoqdmFsdWUpPFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+R2V0cyB0aGUgY3VycmVudCB2YWx1ZSBvZiBjb21tYW5kPFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPmludCgqIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX0hEQ1BfX01PRFVMRS5tZCNhYjgzNjRkNjFjZmQwMjExNzUxN2JlODAwYmU3NGJjMDlcIj5faGFsX2JhY2tlbmRfaGRjcF9mdW5jczo6aW5pdDxcL2E+KSh2b2lkICoqaGRjcF9oYW5kbGUpPFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+SW5pdGlhbGl6ZXMgSERDUCBIQUwgYmFja2VuZCBoYW5kbGU8XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+aW50KCogPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fSERDUF9fTU9EVUxFLm1kI2E0MmRhMWQzMGQ4MzE5NjA0YzJhYzRjZTQ1OWIzMWFjMVwiPl9oYWxfYmFja2VuZF9oZGNwX2Z1bmNzOjpvcGVuPFwvYT4pKHZvaWQgKmhkY3BfaGFuZGxlLCA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19IRENQX19NT0RVTEUubWQjZ2E5YjllNWI5OTg2MjA3Y2I1NzU3NThjNjA3OTI3Nzc4Y1wiPmhhbF9oZGNwX2RldmljZV90eXBlX2U8XC9hPiB0eXBlLCA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19IRENQX19NT0RVTEUubWQjZ2FjMWQ5OTNjZGQyYTQwYjYwMGNlNWJjM2I5ODY4YjA3NFwiPmhhbF9oZGNwX3Byb3RvY29sX3ZlcnNpb25fZTxcL2E+IHZlcnNpb24pPFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+T3BlbnMgSERDUDxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD5pbnQoKiA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19IRENQX19NT0RVTEUubWQjYTVlZGU4NDFiMDYyZDMzOGI4ZmViODYyOTcyNmEwYmNmXCI+X2hhbF9iYWNrZW5kX2hkY3BfZnVuY3M6OnJlbGVhc2Vfb3V0cHV0X2J1ZmZlcjxcL2E+KSh2b2lkICpoZGNwX2hhbmRsZSwgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fSERDUF9fTU9EVUxFLm1kI3N0cnVjdGhhbF9faGRjcF9fYnVmZmVyX19zXCI+aGFsX2hkY3BfYnVmZmVyX3M8XC9hPiAqYnVmZmVyKTxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPlJlbGVhc2VzIGhkY3Agb3V0cHV0IGJ1ZmZlcjxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD5pbnQoKiA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19IRENQX19NT0RVTEUubWQjYTQ3NWI0MmUwNjI4NGRkZTkxNTk2YWE1NTAwYTVkY2FmXCI+X2hhbF9iYWNrZW5kX2hkY3BfZnVuY3M6OnNldF9iYXRjaF9jb21tYW5kPFwvYT4pKHZvaWQgKmhkY3BfaGFuZGxlLCA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19IRENQX19NT0RVTEUubWQjZ2FjYWY0YTZkMGFjZjAwM2RjZGY3MDQ3MmY0ZDI1NGMyNFwiPmhhbF9oZGNwX2JhdGNoX2NvbW1hbmRfY29udHJvbF9zPFwvYT4gKmJhdGNoX2NvbW1hbmQsIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX0hEQ1BfX01PRFVMRS5tZCNnYTg4OTY0NDJkMDNlY2EwZDIwODc1NTZkZjVmMTg1NjFkXCI+aGFsX2hkY3BfY29tbWFuZF9lPFwvYT4gKmVycm9yX2NvbW1hbmQpPFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+U2V0cyBhIHNldCBvZiBjb21tYW5kczxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD5pbnQoKiA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19IRENQX19NT0RVTEUubWQjYTZiYWE2ZDljOTAxYjQ5MDJlNGY4NThjNTU2MGZhNTc3XCI+X2hhbF9iYWNrZW5kX2hkY3BfZnVuY3M6OnNldF9jb21tYW5kPFwvYT4pKHZvaWQgKmhkY3BfaGFuZGxlLCA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19IRENQX19NT0RVTEUubWQjZ2E4ODk2NDQyZDAzZWNhMGQyMDg3NTU2ZGY1ZjE4NTYxZFwiPmhhbF9oZGNwX2NvbW1hbmRfZTxcL2E+IGNvbW1hbmQsIHZvaWQgKnZhbHVlKTxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPlNldHMgdGhlIHZhcmlvdXMgY29tbWFuZCBhbmQgdmFsdWU8XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+aW50KCogPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fSERDUF9fTU9EVUxFLm1kI2EwODY2MTQ5ZDk1NzE3MjNhMGE2MGIyNzA0OTg2ZjhkOFwiPl9oYWxfYmFja2VuZF9oZGNwX2Z1bmNzOjpzdGFydF9yZWNlaXZlcjxcL2E+KSh2b2lkICpoZGNwX2hhbmRsZSwgdWludDMyX3Qgc29ja2V0X3BvcnQsIHVpbnQzMl90ICpoZGNwX2lkKTxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPlN0YXJ0cyBIRENQIHJlY2VpdmVyPFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPmludCgqIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX0hEQ1BfX01PRFVMRS5tZCNhZmUyMzZjNTIxNzFmNjYyMWY5YTgyZDcyYzk5MDFjYWNcIj5faGFsX2JhY2tlbmRfaGRjcF9mdW5jczo6c3RhcnRfdHJhbnNtaXR0ZXI8XC9hPikodm9pZCAqaGRjcF9oYW5kbGUsIGNvbnN0IGNoYXIgKnNvY2tldF9pcCwgdWludDMyX3Qgc29ja2V0X3BvcnQsIHVpbnQzMl90ICpoZGNwX2lkKTxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPlN0YXJ0cyBIRENQIHRyYW5zbWl0dGVyPFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPmludCgqIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX0hEQ1BfX01PRFVMRS5tZCNhNjM0MjEwZjUxZWUwM2RmZWVmNDJlZTVjNDFiZDY2ZDVcIj5faGFsX2JhY2tlbmRfaGRjcF9mdW5jczo6c3RvcF9yZWNlaXZlcjxcL2E+KSh2b2lkICpoZGNwX2hhbmRsZSwgdWludDMyX3QgaGRjcF9pZCk8XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48XC90YWJsZT48XC9kaXY+XG48cD5TdG9wcyBIRENQIHJlY2VpdmVyPFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPmludCgqIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX0hEQ1BfX01PRFVMRS5tZCNhZTI5Y2NmMjg3OTJmOWMzN2NhYjYxNjNmODE2ZjZlM2VcIj5faGFsX2JhY2tlbmRfaGRjcF9mdW5jczo6c3RvcF90cmFuc21pdHRlcjxcL2E+KSh2b2lkICpoZGNwX2hhbmRsZSwgdWludDMyX3QgaGRjcF9pZCk8XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48XC90YWJsZT48XC9kaXY+XG48cD5TdG9wcyBIRENQIHRyYW5zbWl0dGVyPFwvcD5cbjxociBcLz5cbjxoMiBpZD1cImNvbnRlbnQtdHlwZWRlZi1kb2N1bWVudGF0aW9uXCI+PGEgaHJlZj1cIiNjb250ZW50LXR5cGVkZWYtZG9jdW1lbnRhdGlvblwiIGNsYXNzPVwiaGVhZGluZy1wZXJtYWxpbmtcIiBhcmlhLWhpZGRlbj1cInRydWVcIiB0aXRsZT1cIlBlcm1hbGlua1wiPlx1MDBiNjxcL2E+VHlwZWRlZiBEb2N1bWVudGF0aW9uPFwvaDI+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD50eXBlZGVmIHN0cnVjdCA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19IRENQX19NT0RVTEUubWQjc3RydWN0X19oYWxfX2JhY2tlbmRfX2hkY3BfX2Z1bmNzXCI+X2hhbF9iYWNrZW5kX2hkY3BfZnVuY3M8XC9hPiA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19IRENQX19NT0RVTEUubWQjZ2EwY2MzMjAzZjk3MmFhYzJjZWUzMTAwZjI4ZTY2YTVmNFwiPmhhbF9iYWNrZW5kX2hkY3BfZnVuY3M8XC9hPjxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPlRoZSBzdHJ1Y3R1cmUgdHlwZSBvZiB0aGUgSERDUCBIQUwgZnVuY3Rpb25zLjxcL3A+XG48cD48c3Ryb25nPlNpbmNlOjxcL3N0cm9uZz5cbjogICBIQUxfTU9EVUxFX0hEQ1AgMS4wPFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPnR5cGVkZWYgc3RydWN0IDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX0hEQ1BfX01PRFVMRS5tZCNzdHJ1Y3RoYWxfX2hkY3BfX2JhdGNoX19jb21tYW5kX19jb250cm9sXCI+aGFsX2hkY3BfYmF0Y2hfY29tbWFuZF9jb250cm9sPFwvYT4gPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fSERDUF9fTU9EVUxFLm1kI2dhY2FmNGE2ZDBhY2YwMDNkY2RmNzA0NzJmNGQyNTRjMjRcIj5oYWxfaGRjcF9iYXRjaF9jb21tYW5kX2NvbnRyb2xfczxcL2E+PFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+VGhlIHN0cnVjdHVyZSB0eXBlIG9mIGJhdGNoIGNvbW1hbmQuPFwvcD5cbjxwPjxzdHJvbmc+U2luY2U6PFwvc3Ryb25nPlxuOiAgIEhBTF9NT0RVTEVfSERDUCAxLjA8XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+dHlwZWRlZiBlbnVtIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX0hEQ1BfX01PRFVMRS5tZCNnYTU4ZmNjMTk3Mjc3ZDc2NzAyMjA3NDlmNjQ2ZDBkMzM2XCI+aGFsX2hkY3BfY29tbWFuZDxcL2E+IDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX0hEQ1BfX01PRFVMRS5tZCNnYTg4OTY0NDJkMDNlY2EwZDIwODc1NTZkZjVmMTg1NjFkXCI+aGFsX2hkY3BfY29tbWFuZF9lPFwvYT48XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48XC90YWJsZT48XC9kaXY+XG48cD5FbnVtZXJhdGlvbiBmb3IgdGhlIEhEQ1AgY29tbWFuZC48XC9wPlxuPHA+PHN0cm9uZz5TaW5jZTo8XC9zdHJvbmc+XG46ICAgSEFMX01PRFVMRV9IRENQIDEuMDxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD50eXBlZGVmIGVudW0gPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fSERDUF9fTU9EVUxFLm1kI2dhMDk1ODFhZmIyYTRlMjBhOTRmNzRlZDQzYjBiODJiODVcIj5oYWxfaGRjcF9lcnJvcjxcL2E+IDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX0hEQ1BfX01PRFVMRS5tZCNnYTRlOTgzODAyZWJlYWQ4YzYxYjAyNTdhNjdlNjUwY2NjXCI+aGFsX2hkY3BfZXJyb3JfZTxcL2E+PFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+RW51bWVyYXRpb24gZm9yIHRoZSBIRENQIGVycm9yLjxcL3A+XG48cD48c3Ryb25nPlNpbmNlOjxcL3N0cm9uZz5cbjogICBIQUxfTU9EVUxFX0hEQ1AgMS4wPFwvcD5cbjxkaXYgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyaWQgdGFibGUtZml4ZWRcIiBkYXRhLXRhYmxlLWNvbnRhaW5lcj1cImRhdGEtdGFibGUtY29udGFpbmVyXCI+PHRhYmxlPlxuPHRoZWFkPlxuPHRyPlxuPHRoPnR5cGVkZWYgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fSERDUF9fTU9EVUxFLm1kI2dhNGU5ODM4MDJlYmVhZDhjNjFiMDI1N2E2N2U2NTBjY2NcIj5oYWxfaGRjcF9lcnJvcl9lPFwvYT4oKiA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19IRENQX19NT0RVTEUubWQjZ2ExMDBkNjhhODEyYWUzYjNjZGIyNTRjYzhlN2QyM2I4Y1wiPmhhbF9oZGNwX21lc3NhZ2VfY2I8XC9hPikoPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fSERDUF9fTU9EVUxFLm1kI2dhNGM2NzgyZDFhODU4NWI1MWY2NGY3MjliZmFmYmI2OGFcIj5oYWxfaGRjcF9tZXNzYWdlX3M8XC9hPiAqbWVzc2FnZSwgdm9pZCAqdXNlcl9kYXRhKTxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPkNhbGxiYWNrIGZ1bmN0aW9uIGZvciBub3RpZmljYXRpb24gZnJvbSBIRENQIEhBTC48XC9wPlxuPHA+PHN0cm9uZz5TaW5jZTo8XC9zdHJvbmc+XG46ICAgSEFMX01PRFVMRV9IRENQIDEuMDxcL3A+XG48cD48c3Ryb25nPlBhcmFtZXRlcnM6PFwvc3Ryb25nPlxuOiAgIHwgW2luXSB8IG1lc3NhZ2UgfCBUaGUgbWVzc2FnZSBmcm9tIEhEQ1AgSEFMIHxcbnwgLS0tIHwgLS0tIHwgLS0tIHxcbnwgW2luXSB8IHVzZXJfZGF0YSB8IFRoZSB1c2VyIGRhdGEgZm9yIGNhbGxiYWNrIHw8XC9wPlxuPHA+PHN0cm9uZz5TZWUgYWxzbzo8XC9zdHJvbmc+XG46ICAgaGFsX2hkY3BfYWRkX21lc3NhZ2VfY2FsbGJhY2soKVxuOiAgIGhhbF9oZGNwX3JlbW92ZV9tZXNzYWdlX2NhbGxiYWNrKCk8XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+dHlwZWRlZiBzdHJ1Y3QgPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fSERDUF9fTU9EVUxFLm1kI3N0cnVjdGhhbF9faGRjcF9fbWVzc2FnZVwiPmhhbF9oZGNwX21lc3NhZ2U8XC9hPiA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19IRENQX19NT0RVTEUubWQjZ2E0YzY3ODJkMWE4NTg1YjUxZjY0ZjcyOWJmYWZiYjY4YVwiPmhhbF9oZGNwX21lc3NhZ2VfczxcL2E+PFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+VGhlIHN0cnVjdHVyZSB0eXBlIG9mIHRoZSBIRENQIG1lc3NhZ2UuPFwvcD5cbjxwPjxzdHJvbmc+U2luY2U6PFwvc3Ryb25nPlxuOiAgIEhBTF9NT0RVTEVfSERDUCAxLjA8XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+dHlwZWRlZiBlbnVtIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX0hEQ1BfX01PRFVMRS5tZCNnYTE4YWQxOTIxYWFkYmRmNWQxYjQxYzRlNjE3YjcxZDc4XCI+aGFsX2hkY3BfbWVzc2FnZV90eXBlPFwvYT4gPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fSERDUF9fTU9EVUxFLm1kI2dhZmFiNWYxNWIzMDQ1OTNhM2ViNzUwOWQzNjczMjQ3NWNcIj5oYWxfaGRjcF9tZXNzYWdlX3R5cGVfZTxcL2E+PFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+RW51bWVyYXRpb24gZm9yIHRoZSBIRENQIG1lc3NhZ2UgdHlwZS48XC9wPlxuPHA+PHN0cm9uZz5TaW5jZTo8XC9zdHJvbmc+XG46ICAgSEFMX01PRFVMRV9IRENQIDEuMDxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD50eXBlZGVmIGVudW0gPGEgaHJlZj1cImdyb3VwX19IQUxBUElfX0hBTF9fSERDUF9fTU9EVUxFLm1kI2dhZWNmNmM3ODQ4YWY1NTViZjU4NzU0M2Q0ZWI1ZWViZjhcIj5oYWxfaGRjcF9zdGF0ZTxcL2E+IDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX0hEQ1BfX01PRFVMRS5tZCNnYWI1MzRjZTE2YjA3OGRiNjM4YzRkZTNmODJhNTMzMTE0XCI+aGFsX2hkY3Bfc3RhdGVfZTxcL2E+PFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+RW51bWVyYXRpb24gZm9yIHRoZSBIRENQIHN0YXRlLjxcL3A+XG48cD48c3Ryb25nPlNpbmNlOjxcL3N0cm9uZz5cbjogICBIQUxfTU9EVUxFX0hEQ1AgMS4wPFwvcD5cbjxociBcLz5cbjxoMiBpZD1cImNvbnRlbnQtZW51bWVyYXRpb24tdHlwZS1kb2N1bWVudGF0aW9uXCI+PGEgaHJlZj1cIiNjb250ZW50LWVudW1lcmF0aW9uLXR5cGUtZG9jdW1lbnRhdGlvblwiIGNsYXNzPVwiaGVhZGluZy1wZXJtYWxpbmtcIiBhcmlhLWhpZGRlbj1cInRydWVcIiB0aXRsZT1cIlBlcm1hbGlua1wiPlx1MDBiNjxcL2E+RW51bWVyYXRpb24gVHlwZSBEb2N1bWVudGF0aW9uPFwvaDI+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD5lbnVtIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX0hEQ1BfX01PRFVMRS5tZCNnYTU4ZmNjMTk3Mjc3ZDc2NzAyMjA3NDlmNjQ2ZDBkMzM2XCI+aGFsX2hkY3BfY29tbWFuZDxcL2E+PFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+RW51bWVyYXRpb24gZm9yIHRoZSBIRENQIGNvbW1hbmQuPFwvcD5cbjxwPjxzdHJvbmc+U2luY2U6PFwvc3Ryb25nPlxuOiAgIEhBTF9NT0RVTEVfSERDUCAxLjA8XC9wPlxuPHA+PHN0cm9uZz5FbnVtZXJhdG9yOjxcL3N0cm9uZz5cbjogICB8IDxlbT5IQUxfSERDUF9DT01NQU5EX0JBU0U8XC9lbT4gfCBCYXNlIG9mIGNvbW1hbmQgfFxufCAtLS0gfCAtLS0gfFxufCA8ZW0+SEFMX0hEQ1BfQ09NTUFORF9DVVNUT008XC9lbT4gfCBDdXN0b20gfDxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD5lbnVtIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX0hEQ1BfX01PRFVMRS5tZCNnYTliOWU1Yjk5ODYyMDdjYjU3NTc1OGM2MDc5Mjc3NzhjXCI+aGFsX2hkY3BfZGV2aWNlX3R5cGVfZTxcL2E+PFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+SERDUCBkZXZpY2UgdHlwZS48XC9wPlxuPHA+PHN0cm9uZz5TaW5jZTo8XC9zdHJvbmc+XG46ICAgSEFMX01PRFVMRV9IRENQIDEuMDxcL3A+XG48cD48c3Ryb25nPkVudW1lcmF0b3I6PFwvc3Ryb25nPlxuOiAgIHwgPGVtPkhBTF9IRENQX0RFVklDRV9SRUNFSVZFUjxcL2VtPiB8IFJlY2VpdmVyIHxcbnwgLS0tIHwgLS0tIHxcbnwgPGVtPkhBTF9IRENQX0RFVklDRV9UUkFOU01JVDxcL2VtPiB8IFRyYW5zbWl0dGVyIHxcbnwgPGVtPkhBTF9IRENQX0RFVklDRV9UUkFOU01JVF9NVUxUSVNJTks8XC9lbT4gfCBUcmFuc21pdHRlciB3aXRoIG11bHRpIHNpbmsgfDxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD5lbnVtIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX0hEQ1BfX01PRFVMRS5tZCNnYTA5NTgxYWZiMmE0ZTIwYTk0Zjc0ZWQ0M2IwYjgyYjg1XCI+aGFsX2hkY3BfZXJyb3I8XC9hPjxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPkVudW1lcmF0aW9uIGZvciB0aGUgSERDUCBlcnJvci48XC9wPlxuPHA+PHN0cm9uZz5TaW5jZTo8XC9zdHJvbmc+XG46ICAgSEFMX01PRFVMRV9IRENQIDEuMDxcL3A+XG48cD48c3Ryb25nPkVudW1lcmF0b3I6PFwvc3Ryb25nPlxuOiAgIHwgPGVtPkhBTF9IRENQX0VSUk9SX05PTkU8XC9lbT4gfCBFcnJvciBub25lIHxcbnwgLS0tIHwgLS0tIHxcbnwgPGVtPkhBTF9IRENQX0VSUk9SX05PVF9TVVBQT1JURUQ8XC9lbT4gfCBOb3Qgc3VwcG9ydGVkIHxcbnwgPGVtPkhBTF9IRENQX0VSUk9SX0lOVkFMSURfUEFSQU1FVEVSPFwvZW0+IHwgSW52YWxpZCBwYXJhbWV0ZXIgfFxufCA8ZW0+SEFMX0hEQ1BfRVJST1JfSU5WQUxJRF9TVEFURTxcL2VtPiB8IEludmFsaWQgc3RhdGUgfFxufCA8ZW0+SEFMX0hEQ1BfRVJST1JfT1VUX09GX01FTU9SWTxcL2VtPiB8IE91dCBvZiBtZW1vcnkgfFxufCA8ZW0+SEFMX0hEQ1BfRVJST1JfSU5URVJOQUw8XC9lbT4gfCBJbnRlcm5hbCB8XG58IDxlbT5IQUxfSERDUF9FUlJPUl9OT1RfSU1QTEVNRU5URUQ8XC9lbT4gfCBOb3QgaW1wbGVtZW50ZWQgfFxufCA8ZW0+SEFMX0hEQ1BfRVJST1JfVU5LTk9XTjxcL2VtPiB8IFVua25vd24gfDxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD5lbnVtIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX0hEQ1BfX01PRFVMRS5tZCNnYTE4YWQxOTIxYWFkYmRmNWQxYjQxYzRlNjE3YjcxZDc4XCI+aGFsX2hkY3BfbWVzc2FnZV90eXBlPFwvYT48XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48XC90YWJsZT48XC9kaXY+XG48cD5FbnVtZXJhdGlvbiBmb3IgdGhlIEhEQ1AgbWVzc2FnZSB0eXBlLjxcL3A+XG48cD48c3Ryb25nPlNpbmNlOjxcL3N0cm9uZz5cbjogICBIQUxfTU9EVUxFX0hEQ1AgMS4wPFwvcD5cbjxwPjxzdHJvbmc+RW51bWVyYXRvcjo8XC9zdHJvbmc+XG46ICAgfCA8ZW0+SEFMX0hEQ1BfTUVTU0FHRV9UWVBFX0VSUk9SPFwvZW0+IHwgVGhlIGVycm9yIHxcbnwgLS0tIHwgLS0tIHw8XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+ZW51bSA8YSBocmVmPVwiZ3JvdXBfX0hBTEFQSV9fSEFMX19IRENQX19NT0RVTEUubWQjZ2FjMWQ5OTNjZGQyYTQwYjYwMGNlNWJjM2I5ODY4YjA3NFwiPmhhbF9oZGNwX3Byb3RvY29sX3ZlcnNpb25fZTxcL2E+PFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+SERDUCBwcm90b2NvbCB2ZXJzaW9uLjxcL3A+XG48cD48c3Ryb25nPlNpbmNlOjxcL3N0cm9uZz5cbjogICBIQUxfTU9EVUxFX0hEQ1AgMS4wPFwvcD5cbjxwPjxzdHJvbmc+RW51bWVyYXRvcjo8XC9zdHJvbmc+XG46ICAgfCA8ZW0+SEFMX0hEQ1BfVkVSU0lPTl8yXzA8XC9lbT4gfCBIRENQIHZlcnNpb24gMi4wIHxcbnwgLS0tIHwgLS0tIHxcbnwgPGVtPkhBTF9IRENQX1ZFUlNJT05fMl8xPFwvZW0+IHwgSERDUCB2ZXJzaW9uIDIuMSB8XG58IDxlbT5IQUxfSERDUF9WRVJTSU9OXzJfMjxcL2VtPiB8IEhEQ1AgdmVyc2lvbiAyLjIgfDxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD5lbnVtIDxhIGhyZWY9XCJncm91cF9fSEFMQVBJX19IQUxfX0hEQ1BfX01PRFVMRS5tZCNnYWVjZjZjNzg0OGFmNTU1YmY1ODc1NDNkNGViNWVlYmY4XCI+aGFsX2hkY3Bfc3RhdGU8XC9hPjxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjxcL3RhYmxlPjxcL2Rpdj5cbjxwPkVudW1lcmF0aW9uIGZvciB0aGUgSERDUCBzdGF0ZS48XC9wPlxuPHA+PHN0cm9uZz5TaW5jZTo8XC9zdHJvbmc+XG46ICAgSEFMX01PRFVMRV9IRENQIDEuMDxcL3A+XG48cD48c3Ryb25nPkVudW1lcmF0b3I6PFwvc3Ryb25nPlxuOiAgIHwgPGVtPkhBTF9IRENQX1NUQVRFX05PTkU8XC9lbT4gfCBOb25lIHN0YXRlIHxcbnwgLS0tIHwgLS0tIHxcbnwgPGVtPkhBTF9IRENQX1NUQVRFX0lOSVRJQUxJWkVEPFwvZW0+IHwgSW5pdGlhbGl6ZWQgc3RhdGUgZm9yIEhEQ1AgZGV2aWNlIHxcbnwgPGVtPkhBTF9IRENQX1NUQVRFX09QRU5FRDxcL2VtPiB8IE9wZW5lZCBzdGF0ZSBmb3IgSERDUCBkZXZpY2UgfDxcL3A+XG48aHIgXC8+XG48cD5FeGNlcHQgYXMgbm90ZWQsIHRoaXMgY29udGVudCAtIGV4Y2x1ZGluZyB0aGUgQ29kZSBFeGFtcGxlcyAtIGlzIGxpY2Vuc2VkIHVuZGVyIDxhIGhyZWY9XCJodHRwOlwvXC9jcmVhdGl2ZWNvbW1vbnMub3JnXC9saWNlbnNlc1wvYnlcLzMuMFwvbGVnYWxjb2RlXCI+Q3JlYXRpdmUgQ29tbW9ucyBBdHRyaWJ1dGlvbiAzLjA8XC9hPlxuYW5kIGFsbCBvZiB0aGUgQ29kZSBFeGFtcGxlcyBjb250YWluZWQgaGVyZWluIGFyZSBsaWNlbnNlZCB1bmRlciA8YSBocmVmPVwiaHR0cHM6XC9cL3d3dy50aXplbi5vcmdcL2JzZC0zLWNsYXVzZS1saWNlbnNlXCI+QlNELTMtQ2xhdXNlPFwvYT4uPGJyIFwvPlxuRm9yIGRldGFpbHMsIHNlZSB0aGUgPGEgaHJlZj1cImh0dHBzOlwvXC93d3cudGl6ZW4ub3JnXC9jb250ZW50LWxpY2Vuc2VcIj5Db250ZW50IExpY2Vuc2U8XC9hPi48XC9wPlxuIiwidGFibGVfb2ZfY29udGVudCI6Ijx1bCBjbGFzcz1cInRhYmxlLW9mLWNvbnRlbnRzXCI+XG48bGk+PGEgaHJlZj1cIiNjb250ZW50LXJlcXVpcmVkLWhlYWRlclwiPlJlcXVpcmVkIEhlYWRlcjxcL2E+PFwvbGk+XG48bGk+PGEgaHJlZj1cIiNjb250ZW50LW92ZXJ2aWV3XCI+T3ZlcnZpZXc8XC9hPjxcL2xpPlxuPGxpPjxhIGhyZWY9XCIjY29udGVudC1zdGF0ZS1kaWFncmFtXCI+U3RhdGUgRGlhZ3JhbTxcL2E+PFwvbGk+XG48bGk+PGEgaHJlZj1cIiNjb250ZW50LXN0YXRlLXRyYW5zaXRpb25zXCI+U3RhdGUgVHJhbnNpdGlvbnM8XC9hPjxcL2xpPlxuPGxpPjxhIGhyZWY9XCIjY29udGVudC1kYXRhLXN0cnVjdHVyZS1kb2N1bWVudGF0aW9uXCI+RGF0YSBTdHJ1Y3R1cmUgRG9jdW1lbnRhdGlvbjxcL2E+PFwvbGk+XG48bGk+PGEgaHJlZj1cIiNjb250ZW50LWZpZWxkLWRvY3VtZW50YXRpb25cIj5GaWVsZCBEb2N1bWVudGF0aW9uPFwvYT48XC9saT5cbjxsaT48YSBocmVmPVwiI2NvbnRlbnQtZmllbGQtZG9jdW1lbnRhdGlvbi0xXCI+RmllbGQgRG9jdW1lbnRhdGlvbjxcL2E+PFwvbGk+XG48bGk+PGEgaHJlZj1cIiNjb250ZW50LWZpZWxkLWRvY3VtZW50YXRpb24tMlwiPkZpZWxkIERvY3VtZW50YXRpb248XC9hPjxcL2xpPlxuPGxpPjxhIGhyZWY9XCIjY29udGVudC1maWVsZC1kb2N1bWVudGF0aW9uLTNcIj5GaWVsZCBEb2N1bWVudGF0aW9uPFwvYT48XC9saT5cbjxsaT48YSBocmVmPVwiI2NvbnRlbnQtZmllbGQtZG9jdW1lbnRhdGlvbi00XCI+RmllbGQgRG9jdW1lbnRhdGlvbjxcL2E+PFwvbGk+XG48bGk+PGEgaHJlZj1cIiNjb250ZW50LWZpZWxkLWRvY3VtZW50YXRpb24tNVwiPkZpZWxkIERvY3VtZW50YXRpb248XC9hPjxcL2xpPlxuPGxpPjxhIGhyZWY9XCIjY29udGVudC10eXBlZGVmLWRvY3VtZW50YXRpb25cIj5UeXBlZGVmIERvY3VtZW50YXRpb248XC9hPjxcL2xpPlxuPGxpPjxhIGhyZWY9XCIjY29udGVudC1lbnVtZXJhdGlvbi10eXBlLWRvY3VtZW50YXRpb25cIj5FbnVtZXJhdGlvbiBUeXBlIERvY3VtZW50YXRpb248XC9hPjxcL2xpPlxuPFwvdWw+XG4iLCJ0aXRsZSI6IlRpemVuIEhBTCBBUEk6IEhEQ1AiLCJyYXciOm51bGx9LHsiY2xhc3MiOiJBcHBcXFNlcnZpY2VzXFxEb2N1bWVudGF0aW9uXFxEYXRhXFxSZW5kZXJlZE1hcmtkb3duIiwicyI6IndyYmwifV19LHsicyI6ImFyciJ9XX0sIm1lbW8iOnsiaWQiOiI0VkdDOUtSRmR6ZnpWdFZoYUtKbCIsIm5hbWUiOiJfX21vdW50UGFyYW1zQ29udGFpbmVyIiwicGF0aCI6ImRvY3NcL3BsYXRmb3JtXC9oYWxcL2FwaVwvMS4wLjBcL2dyb3VwX19IQUxBUElfX0hBTF9fSERDUF9fTU9EVUxFIiwibWV0aG9kIjoiR0VUIiwicmVsZWFzZSI6ImEtYS1hIn0sImNoZWNrc3VtIjoiMTFhZThlNjQ4ODAyYzI1YTIyY2Y2NWRjMTU4OTU3YTc3N2VkMzE4YzQ2N2QyMGQyNzdiNmM5MTA3ZDY4MWM5NCJ9')" >

For the best experience,
Please visit us from a computer

Copyright © 2026 SAMSUNG. All rights reserved.

Customize your cookie preferences

You can enable or disable non-essential cookies. Essential cookies are always on to ensure the site works properly and to keep you signed in.

Necessary

These cookies are necessary for the website to function properly and cannot be switched off. They help with things like logging in and setting your privacy preferences.

Always on

Analytics

These cookies help us improve the site by tracking which pages are most popular and how visitors move around the site.

Enable analytics cookies
Public Forum Public Forum
Employees only. Please sign in with your company account.