From mboxrd@z Thu Jan 1 00:00:00 1970 From: Neil Armstrong Subject: [PATCH v2 06/13] drm/meson: Add support for HDMI venc modes and settings Date: Tue, 21 Mar 2017 16:25:43 +0100 Message-ID: <1490109950-21421-7-git-send-email-narmstrong@baylibre.com> References: <1490109950-21421-1-git-send-email-narmstrong@baylibre.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-wm0-x22b.google.com (mail-wm0-x22b.google.com [IPv6:2a00:1450:400c:c09::22b]) by gabe.freedesktop.org (Postfix) with ESMTPS id 416BA6E72C for ; Tue, 21 Mar 2017 15:26:03 +0000 (UTC) Received: by mail-wm0-x22b.google.com with SMTP id v203so3428552wmg.0 for ; Tue, 21 Mar 2017 08:26:03 -0700 (PDT) In-Reply-To: <1490109950-21421-1-git-send-email-narmstrong@baylibre.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: airlied@linux.ie Cc: linux-amlogic@lists.infradead.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, dri-devel@lists.freedesktop.org, Neil Armstrong List-Id: dri-devel@lists.freedesktop.org VGhpcyBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIHRoZSBzdXBwb3J0ZWQgSERNSSBWZW5jIG1vZGVz IGFuZCBhZGQgdGhlIFZQUCBtdXgKdmFsdWUgdG8gc3dpdGNoIHRvIEVOQ1AgZW5jb2Rlci4KClNp Z25lZC1vZmYtYnk6IE5laWwgQXJtc3Ryb25nIDxuYXJtc3Ryb25nQGJheWxpYnJlLmNvbT4KLS0t CiBkcml2ZXJzL2dwdS9kcm0vbWVzb24vbWVzb25fdmVuYy5jIHwgMTI0NSArKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKy0KIGRyaXZlcnMvZ3B1L2RybS9tZXNvbi9tZXNvbl92ZW5j LmggfCAgICA3ICsKIGRyaXZlcnMvZ3B1L2RybS9tZXNvbi9tZXNvbl92cHAuaCAgfCAgICAyICsK IDMgZmlsZXMgY2hhbmdlZCwgMTI0OSBpbnNlcnRpb25zKCspLCA1IGRlbGV0aW9ucygtKQoKZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tZXNvbi9tZXNvbl92ZW5jLmMgYi9kcml2ZXJzL2dw dS9kcm0vbWVzb24vbWVzb25fdmVuYy5jCmluZGV4IGY3Yzg3MDE3Li4zMWRjMjc1IDEwMDY0NAot LS0gYS9kcml2ZXJzL2dwdS9kcm0vbWVzb24vbWVzb25fdmVuYy5jCisrKyBiL2RyaXZlcnMvZ3B1 L2RybS9tZXNvbi9tZXNvbl92ZW5jLmMKQEAgLTMwLDEyICszMCwzNyBAQAogICogVkVOQyBIYW5k bGUgdGhlIHBpeGVscyBlbmNvZGluZyB0byB0aGUgb3V0cHV0IGZvcm1hdHMuCiAgKiBXZSBoYW5k bGUgdGhlIGZvbGxvd2luZyBlbmNvZGluZ3MgOgogICogLSBDVkJTIEVuY29kaW5nIHZpYSB0aGUg RU5DSSBlbmNvZGVyIGFuZCBWREFDIGRpZ2l0YWwgdG8gYW5hbG9nIGNvbnZlcnRlcgotICoKLSAq IFdoYXQgaXMgbWlzc2luZyA6CiAgKiAtIFRNRFMvSERNSSBFbmNvZGluZyB2aWEgRU5DSV9ESVYg YW5kIEVOQ1AKICAqIC0gU2V0dXAgb2YgbW9yZSBjbG9jayByYXRlcyBmb3IgSERNSSBtb2Rlcwor ICoKKyAqIFdoYXQgaXMgbWlzc2luZyA6CiAgKiAtIExDRCBQYW5lbCBlbmNvZGluZyB2aWEgRU5D TAogICogLSBUViBQYW5lbCBlbmNvZGluZyB2aWEgRU5DVAorICoKKyAqIFZFTkMgcGF0aHMgOgor ICogICAgICAgIF9fX19fICAgX19fX18gICBfX19fX19fX19fX19fX19fX19fXworICogdmQxLS0t fCAgICAgfC18ICAgICB8IHwgVkVOQyAgICAgLy0tLS0tLS0tLXwtLS0tVkRBQworICogdmQyLS0t fCBWSVUgfC18IFZQUCB8LXwtLS0tLUVOQ0kvLUVOQ0lfRFZJLXxcCisgKiBvc2QxLS18ICAgICB8 LXwgICAgIHwgfCBcICAgICAgICAgICAgICAgICAgfCBYLS1IRE1JLVRYCisgKiBvc2QyLS18X19f X198LXxfX19fX3wgfCAgfFwtRU5DUC0tRU5DUF9EVkktfC8KKyAqICAgICAgICAgICAgICAgICAg ICAgICB8ICB8ICAgICAgICAgICAgICAgICB8CisgKiAgICAgICAgICAgICAgICAgICAgICAgfCAg XC0tRU5DTC0tLS0tLS0tLS0tfC0tLS1MVkRTCisgKiAgICAgICAgICAgICAgICAgICAgICAgfF9f X19fX19fX19fX19fX19fX19ffAorICoKKyAqIFRoZSBFTkNJIGlzIGRlc2lnbmVkIGZvciBQQWwg b3IgTlRTQyBlbmNvZGluZyBhbmQgY2FuIGdvIHRocm91Z2ggdGhlIFZEQUMKKyAqIGRpcmVjdGx5 IGZvciBDVkJTIGVuY29kaW5nIG9yIHRocm91Z2ggdGhlIEVOQ0lfRFZJIGVuY29kZXIgZm9yIEhE TUkuCisgKiBUaGUgRU5DUCBpcyBkZXNpZ25lZCBmb3IgUHJvZ3Jlc3NpdmUgZW5jb2RpbmcgYnV0 IGNhbiBhbHNvIGdlbmVyYXRlCisgKiAxMDgwaSBpbnRlcmxhY2VkIHBpeGVscywgYW5kIHdhcyBp bml0aWFseSBkZXNpbmVkIHRvIGVuY29kZSBwaXhlbHMgZm9yCisgKiBWREFDIHRvIG91dHB1dCBS R0Igb3UgWVVWIGFuYWxvZyBvdXRwdXRzLgorICogSXQncyBvdXRwdXQgaXMgb25seSB1c2VkIHRo cm91Z2ggdGhlIEVOQ1BfRFZJIGVuY29kZXIgZm9yIEhETUkuCisgKiBUaGUgRU5DTCBMVkRTIGVu Y29kZXIgaXMgbm90IGltcGxlbWVudGVkLgorICoKKyAqIFRoZSBFTkNJIGFuZCBFTkNQIGVuY29k ZXJzIG5lZWRzIHNwZWNpYWxseSBkZWZpbmVkIHBhcmFtZXRlcnMgZm9yIGVhY2gKKyAqIHN1cHBv cnRlZCBtb2RlIGFuZCB0aHVzIGNhbm5vdCBiZSBkZXRlcm1pbmVkIGZyb20gc3RhbmRhcmQgdmlk ZW8gdGltaW5ncy4KKyAqCisgKiBUaGUgRU5DSSBlbmQgRU5DUCBEVkkgZW5jb2RlcnMgYXJlIG1v cmUgZ2VuZXJpYyBhbmQgY2FuIGdlbmVyYXRlIGFueSB0aW1pbmdzCisgKiBmcm9tIHRoZSBwaXhl bCBkYXRhIGdlbmVyYXRlZCBieSBFTkNJIG9yIEVOQ1AsIHNvIGNhbiB1c2UgdGhlIHN0YW5kYXJk IHZpZGVvCisgKiB0aW1pbmdzIGFyZSBzb3VyY2UgZm9yIEhXIHBhcmFtZXRlcnMuCiAgKi8KIAog LyogSEhJIFJlZ2lzdGVycyAqLwpAQCAtOTEsNiArMTE2LDEyMTkgQEAgc3RydWN0IG1lc29uX2N2 YnNfZW5jaV9tb2RlIG1lc29uX2N2YnNfZW5jaV9udHNjID0gewogCS5hbmFsb2dfc3luY19hZGog PSAweDljMDAsCiB9OwogCit1bmlvbiBtZXNvbl9oZG1pX3ZlbmNfbW9kZSB7CisJc3RydWN0IHsK KwkJdW5zaWduZWQgaW50IG1vZGVfdGFnOworCQl1bnNpZ25lZCBpbnQgaHNvX2JlZ2luOworCQl1 bnNpZ25lZCBpbnQgaHNvX2VuZDsKKwkJdW5zaWduZWQgaW50IHZzb19ldmVuOworCQl1bnNpZ25l ZCBpbnQgdnNvX29kZDsKKwkJdW5zaWduZWQgaW50IG1hY3ZfbWF4X2FtcDsKKwkJdW5zaWduZWQg aW50IHZpZGVvX3Byb2dfbW9kZTsKKwkJdW5zaWduZWQgaW50IHZpZGVvX21vZGU7CisJCXVuc2ln bmVkIGludCBzY2hfYWRqdXN0OworCQl1bnNpZ25lZCBpbnQgeWNfZGVsYXk7CisJCXVuc2lnbmVk IGludCBwaXhlbF9zdGFydDsKKwkJdW5zaWduZWQgaW50IHBpeGVsX2VuZDsKKwkJdW5zaWduZWQg aW50IHRvcF9maWVsZF9saW5lX3N0YXJ0OworCQl1bnNpZ25lZCBpbnQgdG9wX2ZpZWxkX2xpbmVf ZW5kOworCQl1bnNpZ25lZCBpbnQgYm90dG9tX2ZpZWxkX2xpbmVfc3RhcnQ7CisJCXVuc2lnbmVk IGludCBib3R0b21fZmllbGRfbGluZV9lbmQ7CisJfSBlbmNpOworCXN0cnVjdCB7CisJCXVuc2ln bmVkIGludCBkdmlfc2V0dGluZ3M7CisJCXVuc2lnbmVkIGludCB2aWRlb19tb2RlOworCQl1bnNp Z25lZCBpbnQgdmlkZW9fbW9kZV9hZHY7CisJCXVuc2lnbmVkIGludCB2aWRlb19wcm9nX21vZGU7 CisJCWJvb2wgdmlkZW9fcHJvZ19tb2RlX3ByZXNlbnQ7CisJCXVuc2lnbmVkIGludCB2aWRlb19z eW5jX21vZGU7CisJCWJvb2wgdmlkZW9fc3luY19tb2RlX3ByZXNlbnQ7CisJCXVuc2lnbmVkIGlu dCB2aWRlb195Y19kbHk7CisJCWJvb2wgdmlkZW9feWNfZGx5X3ByZXNlbnQ7CisJCXVuc2lnbmVk IGludCB2aWRlb19yZ2JfY3RybDsKKwkJYm9vbCB2aWRlb19yZ2JfY3RybF9wcmVzZW50OworCQl1 bnNpZ25lZCBpbnQgdmlkZW9fZmlsdF9jdHJsOworCQlib29sIHZpZGVvX2ZpbHRfY3RybF9wcmVz ZW50OworCQl1bnNpZ25lZCBpbnQgdmlkZW9fb2ZsZF92b2F2X29mc3Q7CisJCWJvb2wgdmlkZW9f b2ZsZF92b2F2X29mc3RfcHJlc2VudDsKKwkJdW5zaWduZWQgaW50IHlmcDFfaHRpbWU7CisJCXVu c2lnbmVkIGludCB5ZnAyX2h0aW1lOworCQl1bnNpZ25lZCBpbnQgbWF4X3B4Y250OworCQl1bnNp Z25lZCBpbnQgaHNwdWxzX2JlZ2luOworCQl1bnNpZ25lZCBpbnQgaHNwdWxzX2VuZDsKKwkJdW5z aWduZWQgaW50IGhzcHVsc19zd2l0Y2g7CisJCXVuc2lnbmVkIGludCB2c3B1bHNfYmVnaW47CisJ CXVuc2lnbmVkIGludCB2c3B1bHNfZW5kOworCQl1bnNpZ25lZCBpbnQgdnNwdWxzX2JsaW5lOwor CQl1bnNpZ25lZCBpbnQgdnNwdWxzX2VsaW5lOworCQl1bnNpZ25lZCBpbnQgZXFwdWxzX2JlZ2lu OworCQlib29sIGVxcHVsc19iZWdpbl9wcmVzZW50OworCQl1bnNpZ25lZCBpbnQgZXFwdWxzX2Vu ZDsKKwkJYm9vbCBlcXB1bHNfZW5kX3ByZXNlbnQ7CisJCXVuc2lnbmVkIGludCBlcXB1bHNfYmxp bmU7CisJCWJvb2wgZXFwdWxzX2JsaW5lX3ByZXNlbnQ7CisJCXVuc2lnbmVkIGludCBlcXB1bHNf ZWxpbmU7CisJCWJvb2wgZXFwdWxzX2VsaW5lX3ByZXNlbnQ7CisJCXVuc2lnbmVkIGludCBoYXZv bl9iZWdpbjsKKwkJdW5zaWduZWQgaW50IGhhdm9uX2VuZDsKKwkJdW5zaWduZWQgaW50IHZhdm9u X2JsaW5lOworCQl1bnNpZ25lZCBpbnQgdmF2b25fZWxpbmU7CisJCXVuc2lnbmVkIGludCBoc29f YmVnaW47CisJCXVuc2lnbmVkIGludCBoc29fZW5kOworCQl1bnNpZ25lZCBpbnQgdnNvX2JlZ2lu OworCQl1bnNpZ25lZCBpbnQgdnNvX2VuZDsKKwkJdW5zaWduZWQgaW50IHZzb19ibGluZTsKKwkJ dW5zaWduZWQgaW50IHZzb19lbGluZTsKKwkJYm9vbCB2c29fZWxpbmVfcHJlc2VudDsKKwkJdW5z aWduZWQgaW50IHN5X3ZhbDsKKwkJYm9vbCBzeV92YWxfcHJlc2VudDsKKwkJdW5zaWduZWQgaW50 IHN5Ml92YWw7CisJCWJvb2wgc3kyX3ZhbF9wcmVzZW50OworCQl1bnNpZ25lZCBpbnQgbWF4X2xu Y250OworCX0gZW5jcDsKK307CisKK3VuaW9uIG1lc29uX2hkbWlfdmVuY19tb2RlIG1lc29uX2hk bWlfZW5jaV9tb2RlXzQ4MGkgPSB7CisJLmVuY2kgPSB7CisJCS5oc29fYmVnaW4gPSA1LAorCQku aHNvX2VuZCA9IDEyOSwKKwkJLnZzb19ldmVuID0gMywKKwkJLnZzb19vZGQgPSAyNjAsCisJCS5t YWN2X21heF9hbXAgPSAweDgxMGIsCisJCS52aWRlb19wcm9nX21vZGUgPSAweGYwLAorCQkudmlk ZW9fbW9kZSA9IDB4OCwKKwkJLnNjaF9hZGp1c3QgPSAweDIwLAorCQkueWNfZGVsYXkgPSAwLAor CQkucGl4ZWxfc3RhcnQgPSAyMjcsCisJCS5waXhlbF9lbmQgPSAxNjY3LAorCQkudG9wX2ZpZWxk X2xpbmVfc3RhcnQgPSAxOCwKKwkJLnRvcF9maWVsZF9saW5lX2VuZCA9IDI1OCwKKwkJLmJvdHRv bV9maWVsZF9saW5lX3N0YXJ0ID0gMTksCisJCS5ib3R0b21fZmllbGRfbGluZV9lbmQgPSAyNTks CisJfSwKK307CisKK3VuaW9uIG1lc29uX2hkbWlfdmVuY19tb2RlIG1lc29uX2hkbWlfZW5jaV9t b2RlXzU3NmkgPSB7CisJLmVuY2kgPSB7CisJCS5oc29fYmVnaW4gPSAzLAorCQkuaHNvX2VuZCA9 IDEyOSwKKwkJLnZzb19ldmVuID0gMywKKwkJLnZzb19vZGQgPSAyNjAsCisJCS5tYWN2X21heF9h bXAgPSA4MTA3LAorCQkudmlkZW9fcHJvZ19tb2RlID0gMHhmZiwKKwkJLnZpZGVvX21vZGUgPSAw eDEzLAorCQkuc2NoX2FkanVzdCA9IDB4MjgsCisJCS55Y19kZWxheSA9IDB4MzMzLAorCQkucGl4 ZWxfc3RhcnQgPSAyNTEsCisJCS5waXhlbF9lbmQgPSAxNjkxLAorCQkudG9wX2ZpZWxkX2xpbmVf c3RhcnQgPSAyMiwKKwkJLnRvcF9maWVsZF9saW5lX2VuZCA9IDMxMCwKKwkJLmJvdHRvbV9maWVs ZF9saW5lX3N0YXJ0ID0gMjMsCisJCS5ib3R0b21fZmllbGRfbGluZV9lbmQgPSAzMTEsCisJfSwK K307CisKK3VuaW9uIG1lc29uX2hkbWlfdmVuY19tb2RlIG1lc29uX2hkbWlfZW5jcF9tb2RlXzQ4 MHAgPSB7CisJLmVuY3AgPSB7CisJCS5kdmlfc2V0dGluZ3MgPSAweDIxLAorCQkudmlkZW9fbW9k ZSA9IDB4NDAwMCwKKwkJLnZpZGVvX21vZGVfYWR2ID0gMHg5LAorCQkudmlkZW9fcHJvZ19tb2Rl ID0gMCwKKwkJLnZpZGVvX3Byb2dfbW9kZV9wcmVzZW50ID0gdHJ1ZSwKKwkJLnZpZGVvX3N5bmNf bW9kZSA9IDcsCisJCS52aWRlb19zeW5jX21vZGVfcHJlc2VudCA9IHRydWUsCisJCS8qIHZpZGVv X3ljX2RseSAqLworCQkvKiB2aWRlb19yZ2JfY3RybCAqLworCQkudmlkZW9fZmlsdF9jdHJsID0g MHgyMDUyLAorCQkudmlkZW9fZmlsdF9jdHJsX3ByZXNlbnQgPSB0cnVlLAorCQkvKiB2aWRlb19v ZmxkX3ZvYXZfb2ZzdCAqLworCQkueWZwMV9odGltZSA9IDI0NCwKKwkJLnlmcDJfaHRpbWUgPSAx NjMwLAorCQkubWF4X3B4Y250ID0gMTcxNSwKKwkJLmhzcHVsc19iZWdpbiA9IDB4MjIsCisJCS5o c3B1bHNfZW5kID0gMHhhMCwKKwkJLmhzcHVsc19zd2l0Y2ggPSA4OCwKKwkJLnZzcHVsc19iZWdp biA9IDAsCisJCS52c3B1bHNfZW5kID0gMTU4OSwKKwkJLnZzcHVsc19ibGluZSA9IDAsCisJCS52 c3B1bHNfZWxpbmUgPSA1LAorCQkuaGF2b25fYmVnaW4gPSAyNDksCisJCS5oYXZvbl9lbmQgPSAx Njg5LAorCQkudmF2b25fYmxpbmUgPSA0MiwKKwkJLnZhdm9uX2VsaW5lID0gNTIxLAorCQkvKiBl cXB1bHNfYmVnaW4gKi8KKwkJLyogZXFwdWxzX2VuZCAqLworCQkvKiBlcXB1bHNfYmxpbmUgKi8K KwkJLyogZXFwdWxzX2VsaW5lICovCisJCS5oc29fYmVnaW4gPSAzLAorCQkuaHNvX2VuZCA9IDUs CisJCS52c29fYmVnaW4gPSAzLAorCQkudnNvX2VuZCA9IDUsCisJCS52c29fYmxpbmUgPSAwLAor CQkvKiB2c29fZWxpbmUgKi8KKwkJLnN5X3ZhbAk9IDgsCisJCS5zeV92YWxfcHJlc2VudCA9IHRy dWUsCisJCS5zeTJfdmFsID0gMHgxZDgsCisJCS5zeTJfdmFsX3ByZXNlbnQgPSB0cnVlLAorCQku bWF4X2xuY250ID0gNTI0LAorCX0sCit9OworCit1bmlvbiBtZXNvbl9oZG1pX3ZlbmNfbW9kZSBt ZXNvbl9oZG1pX2VuY3BfbW9kZV81NzZwID0geworCS5lbmNwID0geworCQkuZHZpX3NldHRpbmdz ID0gMHgyMSwKKwkJLnZpZGVvX21vZGUgPSAweDQwMDAsCisJCS52aWRlb19tb2RlX2FkdiA9IDB4 OSwKKwkJLnZpZGVvX3Byb2dfbW9kZSA9IDAsCisJCS52aWRlb19wcm9nX21vZGVfcHJlc2VudCA9 IHRydWUsCisJCS52aWRlb19zeW5jX21vZGUgPSA3LAorCQkudmlkZW9fc3luY19tb2RlX3ByZXNl bnQgPSB0cnVlLAorCQkvKiB2aWRlb195Y19kbHkgKi8KKwkJLyogdmlkZW9fcmdiX2N0cmwgKi8K KwkJLnZpZGVvX2ZpbHRfY3RybCA9IDB4NTIsCisJCS52aWRlb19maWx0X2N0cmxfcHJlc2VudCA9 IHRydWUsCisJCS8qIHZpZGVvX29mbGRfdm9hdl9vZnN0ICovCisJCS55ZnAxX2h0aW1lID0gMjM1 LAorCQkueWZwMl9odGltZSA9IDE2NzQsCisJCS5tYXhfcHhjbnQgPSAxNzI3LAorCQkuaHNwdWxz X2JlZ2luID0gMCwKKwkJLmhzcHVsc19lbmQgPSAweDgwLAorCQkuaHNwdWxzX3N3aXRjaCA9IDg4 LAorCQkudnNwdWxzX2JlZ2luID0gMCwKKwkJLnZzcHVsc19lbmQgPSAxNTk5LAorCQkudnNwdWxz X2JsaW5lID0gMCwKKwkJLnZzcHVsc19lbGluZSA9IDQsCisJCS5oYXZvbl9iZWdpbiA9IDIzNSwK KwkJLmhhdm9uX2VuZCA9IDE2NzQsCisJCS52YXZvbl9ibGluZSA9IDQ0LAorCQkudmF2b25fZWxp bmUgPSA2MTksCisJCS8qIGVxcHVsc19iZWdpbiAqLworCQkvKiBlcXB1bHNfZW5kICovCisJCS8q IGVxcHVsc19ibGluZSAqLworCQkvKiBlcXB1bHNfZWxpbmUgKi8KKwkJLmhzb19iZWdpbiA9IDB4 ODAsCisJCS5oc29fZW5kID0gMCwKKwkJLnZzb19iZWdpbiA9IDAsCisJCS52c29fZW5kID0gNSwK KwkJLnZzb19ibGluZSA9IDAsCisJCS8qIHZzb19lbGluZSAqLworCQkuc3lfdmFsCT0gOCwKKwkJ LnN5X3ZhbF9wcmVzZW50ID0gdHJ1ZSwKKwkJLnN5Ml92YWwgPSAweDFkOCwKKwkJLnN5Ml92YWxf cHJlc2VudCA9IHRydWUsCisJCS5tYXhfbG5jbnQgPSA2MjQsCisJfSwKK307CisKK3VuaW9uIG1l c29uX2hkbWlfdmVuY19tb2RlIG1lc29uX2hkbWlfZW5jcF9tb2RlXzcyMHA2MCA9IHsKKwkuZW5j cCA9IHsKKwkJLmR2aV9zZXR0aW5ncyA9IDB4MjAyOSwKKwkJLnZpZGVvX21vZGUgPSAweDQwNDAs CisJCS52aWRlb19tb2RlX2FkdiA9IDB4MTksCisJCS8qIHZpZGVvX3Byb2dfbW9kZSAqLworCQkv KiB2aWRlb19zeW5jX21vZGUgKi8KKwkJLyogdmlkZW9feWNfZGx5ICovCisJCS8qIHZpZGVvX3Jn Yl9jdHJsICovCisJCS8qIHZpZGVvX2ZpbHRfY3RybCAqLworCQkvKiB2aWRlb19vZmxkX3ZvYXZf b2ZzdCAqLworCQkueWZwMV9odGltZSA9IDY0OCwKKwkJLnlmcDJfaHRpbWUgPSAzMjA3LAorCQku bWF4X3B4Y250ID0gMzI5OSwKKwkJLmhzcHVsc19iZWdpbiA9IDgwLAorCQkuaHNwdWxzX2VuZCA9 IDI0MCwKKwkJLmhzcHVsc19zd2l0Y2ggPSA4MCwKKwkJLnZzcHVsc19iZWdpbiA9IDY4OCwKKwkJ LnZzcHVsc19lbmQgPSAzMjQ4LAorCQkudnNwdWxzX2JsaW5lID0gNCwKKwkJLnZzcHVsc19lbGlu ZSA9IDgsCisJCS5oYXZvbl9iZWdpbiA9IDY0OCwKKwkJLmhhdm9uX2VuZCA9IDMyMDcsCisJCS52 YXZvbl9ibGluZSA9IDI5LAorCQkudmF2b25fZWxpbmUgPSA3NDgsCisJCS8qIGVxcHVsc19iZWdp biAqLworCQkvKiBlcXB1bHNfZW5kICovCisJCS8qIGVxcHVsc19ibGluZSAqLworCQkvKiBlcXB1 bHNfZWxpbmUgKi8KKwkJLmhzb19iZWdpbiA9IDI1NiwKKwkJLmhzb19lbmQgPSAxNjgsCisJCS52 c29fYmVnaW4gPSAxNjgsCisJCS52c29fZW5kID0gMjU2LAorCQkudnNvX2JsaW5lID0gMCwKKwkJ LnZzb19lbGluZSA9IDUsCisJCS52c29fZWxpbmVfcHJlc2VudCA9IHRydWUsCisJCS8qIHN5X3Zh bCAqLworCQkvKiBzeTJfdmFsICovCisJCS5tYXhfbG5jbnQgPSA3NDksCisJfSwKK307CisKK3Vu aW9uIG1lc29uX2hkbWlfdmVuY19tb2RlIG1lc29uX2hkbWlfZW5jcF9tb2RlXzcyMHA1MCA9IHsK KwkuZW5jcCA9IHsKKwkJLmR2aV9zZXR0aW5ncyA9IDB4MjAyZCwKKwkJLnZpZGVvX21vZGUgPSAw eDQwNDAsCisJCS52aWRlb19tb2RlX2FkdiA9IDB4MTksCisJCS52aWRlb19wcm9nX21vZGUgPSAw eDEwMCwKKwkJLnZpZGVvX3Byb2dfbW9kZV9wcmVzZW50ID0gdHJ1ZSwKKwkJLnZpZGVvX3N5bmNf bW9kZSA9IDB4NDA3LAorCQkudmlkZW9fc3luY19tb2RlX3ByZXNlbnQgPSB0cnVlLAorCQkudmlk ZW9feWNfZGx5ID0gMCwKKwkJLnZpZGVvX3ljX2RseV9wcmVzZW50ID0gdHJ1ZSwKKwkJLyogdmlk ZW9fcmdiX2N0cmwgKi8KKwkJLyogdmlkZW9fZmlsdF9jdHJsICovCisJCS8qIHZpZGVvX29mbGRf dm9hdl9vZnN0ICovCisJCS55ZnAxX2h0aW1lID0gNjQ4LAorCQkueWZwMl9odGltZSA9IDMyMDcs CisJCS5tYXhfcHhjbnQgPSAzOTU5LAorCQkuaHNwdWxzX2JlZ2luID0gODAsCisJCS5oc3B1bHNf ZW5kID0gMjQwLAorCQkuaHNwdWxzX3N3aXRjaCA9IDgwLAorCQkudnNwdWxzX2JlZ2luID0gNjg4 LAorCQkudnNwdWxzX2VuZCA9IDMyNDgsCisJCS52c3B1bHNfYmxpbmUgPSA0LAorCQkudnNwdWxz X2VsaW5lID0gOCwKKwkJLmhhdm9uX2JlZ2luID0gNjQ4LAorCQkuaGF2b25fZW5kID0gMzIwNywK KwkJLnZhdm9uX2JsaW5lID0gMjksCisJCS52YXZvbl9lbGluZSA9IDc0OCwKKwkJLyogZXFwdWxz X2JlZ2luICovCisJCS8qIGVxcHVsc19lbmQgKi8KKwkJLyogZXFwdWxzX2JsaW5lICovCisJCS8q IGVxcHVsc19lbGluZSAqLworCQkuaHNvX2JlZ2luID0gMTI4LAorCQkuaHNvX2VuZCA9IDIwOCwK KwkJLnZzb19iZWdpbiA9IDEyOCwKKwkJLnZzb19lbmQgPSAxMjgsCisJCS52c29fYmxpbmUgPSAw LAorCQkudnNvX2VsaW5lID0gNSwKKwkJLnZzb19lbGluZV9wcmVzZW50ID0gdHJ1ZSwKKwkJLyog c3lfdmFsICovCisJCS8qIHN5Ml92YWwgKi8KKwkJLm1heF9sbmNudCA9IDc0OSwKKwl9LAorfTsK KwordW5pb24gbWVzb25faGRtaV92ZW5jX21vZGUgbWVzb25faGRtaV9lbmNwX21vZGVfMTA4MGk2 MCA9IHsKKwkuZW5jcCA9IHsKKwkJLmR2aV9zZXR0aW5ncyA9IDB4MjAyOSwKKwkJLnZpZGVvX21v ZGUgPSAweDVmZmMsCisJCS52aWRlb19tb2RlX2FkdiA9IDB4MTksCisJCS52aWRlb19wcm9nX21v ZGUgPSAweDEwMCwKKwkJLnZpZGVvX3Byb2dfbW9kZV9wcmVzZW50ID0gdHJ1ZSwKKwkJLnZpZGVv X3N5bmNfbW9kZSA9IDB4MjA3LAorCQkudmlkZW9fc3luY19tb2RlX3ByZXNlbnQgPSB0cnVlLAor CQkvKiB2aWRlb195Y19kbHkgKi8KKwkJLyogdmlkZW9fcmdiX2N0cmwgKi8KKwkJLyogdmlkZW9f ZmlsdF9jdHJsICovCisJCS52aWRlb19vZmxkX3ZvYXZfb2ZzdCA9IDB4MTEsCisJCS52aWRlb19v ZmxkX3ZvYXZfb2ZzdF9wcmVzZW50ID0gdHJ1ZSwKKwkJLnlmcDFfaHRpbWUgPSA1MTYsCisJCS55 ZnAyX2h0aW1lID0gNDM1NSwKKwkJLm1heF9weGNudCA9IDQzOTksCisJCS5oc3B1bHNfYmVnaW4g PSA4OCwKKwkJLmhzcHVsc19lbmQgPSAyNjQsCisJCS5oc3B1bHNfc3dpdGNoID0gODgsCisJCS52 c3B1bHNfYmVnaW4gPSA0NDAsCisJCS52c3B1bHNfZW5kID0gMjIwMCwKKwkJLnZzcHVsc19ibGlu ZSA9IDAsCisJCS52c3B1bHNfZWxpbmUgPSA0LAorCQkuaGF2b25fYmVnaW4gPSA1MTYsCisJCS5o YXZvbl9lbmQgPSA0MzU1LAorCQkudmF2b25fYmxpbmUgPSAyMCwKKwkJLnZhdm9uX2VsaW5lID0g NTU5LAorCQkuZXFwdWxzX2JlZ2luID0gMjI4OCwKKwkJLmVxcHVsc19iZWdpbl9wcmVzZW50ID0g dHJ1ZSwKKwkJLmVxcHVsc19lbmQgPSAyNDY0LAorCQkuZXFwdWxzX2VuZF9wcmVzZW50ID0gdHJ1 ZSwKKwkJLmVxcHVsc19ibGluZSA9IDAsCisJCS5lcXB1bHNfYmxpbmVfcHJlc2VudCA9IHRydWUs CisJCS5lcXB1bHNfZWxpbmUgPSA0LAorCQkuZXFwdWxzX2VsaW5lX3ByZXNlbnQgPSB0cnVlLAor CQkuaHNvX2JlZ2luID0gMjY0LAorCQkuaHNvX2VuZCA9IDE3NiwKKwkJLnZzb19iZWdpbiA9IDg4 LAorCQkudnNvX2VuZCA9IDg4LAorCQkudnNvX2JsaW5lID0gMCwKKwkJLnZzb19lbGluZSA9IDUs CisJCS52c29fZWxpbmVfcHJlc2VudCA9IHRydWUsCisJCS8qIHN5X3ZhbCAqLworCQkvKiBzeTJf dmFsICovCisJCS5tYXhfbG5jbnQgPSAxMTI0LAorCX0sCit9OworCit1bmlvbiBtZXNvbl9oZG1p X3ZlbmNfbW9kZSBtZXNvbl9oZG1pX2VuY3BfbW9kZV8xMDgwaTUwID0geworCS5lbmNwID0gewor CQkuZHZpX3NldHRpbmdzID0gMHgyMDJkLAorCQkudmlkZW9fbW9kZSA9IDB4NWZmYywKKwkJLnZp ZGVvX21vZGVfYWR2ID0gMHgxOSwKKwkJLnZpZGVvX3Byb2dfbW9kZSA9IDB4MTAwLAorCQkudmlk ZW9fcHJvZ19tb2RlX3ByZXNlbnQgPSB0cnVlLAorCQkudmlkZW9fc3luY19tb2RlID0gMHg3LAor CQkudmlkZW9fc3luY19tb2RlX3ByZXNlbnQgPSB0cnVlLAorCQkvKiB2aWRlb195Y19kbHkgKi8K KwkJLyogdmlkZW9fcmdiX2N0cmwgKi8KKwkJLyogdmlkZW9fZmlsdF9jdHJsICovCisJCS52aWRl b19vZmxkX3ZvYXZfb2ZzdCA9IDB4MTEsCisJCS52aWRlb19vZmxkX3ZvYXZfb2ZzdF9wcmVzZW50 ID0gdHJ1ZSwKKwkJLnlmcDFfaHRpbWUgPSA1MjYsCisJCS55ZnAyX2h0aW1lID0gNDM2NSwKKwkJ Lm1heF9weGNudCA9IDUyNzksCisJCS5oc3B1bHNfYmVnaW4gPSA4OCwKKwkJLmhzcHVsc19lbmQg PSAyNjQsCisJCS5oc3B1bHNfc3dpdGNoID0gODgsCisJCS52c3B1bHNfYmVnaW4gPSA0NDAsCisJ CS52c3B1bHNfZW5kID0gMjIwMCwKKwkJLnZzcHVsc19ibGluZSA9IDAsCisJCS52c3B1bHNfZWxp bmUgPSA0LAorCQkuaGF2b25fYmVnaW4gPSA1MjYsCisJCS5oYXZvbl9lbmQgPSA0MzY1LAorCQku dmF2b25fYmxpbmUgPSAyMCwKKwkJLnZhdm9uX2VsaW5lID0gNTU5LAorCQkuZXFwdWxzX2JlZ2lu ID0gMjI4OCwKKwkJLmVxcHVsc19iZWdpbl9wcmVzZW50ID0gdHJ1ZSwKKwkJLmVxcHVsc19lbmQg PSAyNDY0LAorCQkuZXFwdWxzX2VuZF9wcmVzZW50ID0gdHJ1ZSwKKwkJLmVxcHVsc19ibGluZSA9 IDAsCisJCS5lcXB1bHNfYmxpbmVfcHJlc2VudCA9IHRydWUsCisJCS5lcXB1bHNfZWxpbmUgPSA0 LAorCQkuZXFwdWxzX2VsaW5lX3ByZXNlbnQgPSB0cnVlLAorCQkuaHNvX2JlZ2luID0gMTQyLAor CQkuaHNvX2VuZCA9IDIzMCwKKwkJLnZzb19iZWdpbiA9IDE0MiwKKwkJLnZzb19lbmQgPSAxNDIs CisJCS52c29fYmxpbmUgPSAwLAorCQkudnNvX2VsaW5lID0gNSwKKwkJLnZzb19lbGluZV9wcmVz ZW50ID0gdHJ1ZSwKKwkJLyogc3lfdmFsICovCisJCS8qIHN5Ml92YWwgKi8KKwkJLm1heF9sbmNu dCA9IDExMjQsCisJfSwKK307CisKK3VuaW9uIG1lc29uX2hkbWlfdmVuY19tb2RlIG1lc29uX2hk bWlfZW5jcF9tb2RlXzEwODBwMjQgPSB7CisJLmVuY3AgPSB7CisJCS5kdmlfc2V0dGluZ3MgPSAw eGQsCisJCS52aWRlb19tb2RlID0gMHg0MDQwLAorCQkudmlkZW9fbW9kZV9hZHYgPSAweDE4LAor CQkudmlkZW9fcHJvZ19tb2RlID0gMHgxMDAsCisJCS52aWRlb19wcm9nX21vZGVfcHJlc2VudCA9 IHRydWUsCisJCS52aWRlb19zeW5jX21vZGUgPSAweDcsCisJCS52aWRlb19zeW5jX21vZGVfcHJl c2VudCA9IHRydWUsCisJCS52aWRlb195Y19kbHkgPSAwLAorCQkudmlkZW9feWNfZGx5X3ByZXNl bnQgPSB0cnVlLAorCQkudmlkZW9fcmdiX2N0cmwgPSAyLAorCQkudmlkZW9fcmdiX2N0cmxfcHJl c2VudCA9IHRydWUsCisJCS52aWRlb19maWx0X2N0cmwgPSAweDEwNTIsCisJCS52aWRlb19maWx0 X2N0cmxfcHJlc2VudCA9IHRydWUsCisJCS8qIHZpZGVvX29mbGRfdm9hdl9vZnN0ICovCisJCS55 ZnAxX2h0aW1lID0gMjcxLAorCQkueWZwMl9odGltZSA9IDIxOTAsCisJCS5tYXhfcHhjbnQgPSAy NzQ5LAorCQkuaHNwdWxzX2JlZ2luID0gNDQsCisJCS5oc3B1bHNfZW5kID0gMTMyLAorCQkuaHNw dWxzX3N3aXRjaCA9IDQ0LAorCQkudnNwdWxzX2JlZ2luID0gMjIwLAorCQkudnNwdWxzX2VuZCA9 IDIxNDAsCisJCS52c3B1bHNfYmxpbmUgPSAwLAorCQkudnNwdWxzX2VsaW5lID0gNCwKKwkJLmhh dm9uX2JlZ2luID0gMjcxLAorCQkuaGF2b25fZW5kID0gMjE5MCwKKwkJLnZhdm9uX2JsaW5lID0g NDEsCisJCS52YXZvbl9lbGluZSA9IDExMjAsCisJCS8qIGVxcHVsc19iZWdpbiAqLworCQkvKiBl cXB1bHNfZW5kICovCisJCS5lcXB1bHNfYmxpbmUgPSAwLAorCQkuZXFwdWxzX2JsaW5lX3ByZXNl bnQgPSB0cnVlLAorCQkuZXFwdWxzX2VsaW5lID0gNCwKKwkJLmVxcHVsc19lbGluZV9wcmVzZW50 ID0gdHJ1ZSwKKwkJLmhzb19iZWdpbiA9IDc5LAorCQkuaHNvX2VuZCA9IDEyMywKKwkJLnZzb19i ZWdpbiA9IDc5LAorCQkudnNvX2VuZCA9IDc5LAorCQkudnNvX2JsaW5lID0gMCwKKwkJLnZzb19l bGluZSA9IDUsCisJCS52c29fZWxpbmVfcHJlc2VudCA9IHRydWUsCisJCS8qIHN5X3ZhbCAqLwor CQkvKiBzeTJfdmFsICovCisJCS5tYXhfbG5jbnQgPSAxMTI0LAorCX0sCit9OworCit1bmlvbiBt ZXNvbl9oZG1pX3ZlbmNfbW9kZSBtZXNvbl9oZG1pX2VuY3BfbW9kZV8xMDgwcDMwID0geworCS5l bmNwID0geworCQkuZHZpX3NldHRpbmdzID0gMHgxLAorCQkudmlkZW9fbW9kZSA9IDB4NDA0MCwK KwkJLnZpZGVvX21vZGVfYWR2ID0gMHgxOCwKKwkJLnZpZGVvX3Byb2dfbW9kZSA9IDB4MTAwLAor CQkudmlkZW9fcHJvZ19tb2RlX3ByZXNlbnQgPSB0cnVlLAorCQkvKiB2aWRlb19zeW5jX21vZGUg Ki8KKwkJLyogdmlkZW9feWNfZGx5ICovCisJCS8qIHZpZGVvX3JnYl9jdHJsICovCisJCS52aWRl b19maWx0X2N0cmwgPSAweDEwNTIsCisJCS52aWRlb19maWx0X2N0cmxfcHJlc2VudCA9IHRydWUs CisJCS8qIHZpZGVvX29mbGRfdm9hdl9vZnN0ICovCisJCS55ZnAxX2h0aW1lID0gMTQwLAorCQku eWZwMl9odGltZSA9IDIwNjAsCisJCS5tYXhfcHhjbnQgPSAyMTk5LAorCQkuaHNwdWxzX2JlZ2lu ID0gMjE1NiwKKwkJLmhzcHVsc19lbmQgPSA0NCwKKwkJLmhzcHVsc19zd2l0Y2ggPSA0NCwKKwkJ LnZzcHVsc19iZWdpbiA9IDE0MCwKKwkJLnZzcHVsc19lbmQgPSAyMDU5LAorCQkudnNwdWxzX2Js aW5lID0gMCwKKwkJLnZzcHVsc19lbGluZSA9IDQsCisJCS5oYXZvbl9iZWdpbiA9IDE0OCwKKwkJ Lmhhdm9uX2VuZCA9IDIwNjcsCisJCS52YXZvbl9ibGluZSA9IDQxLAorCQkudmF2b25fZWxpbmUg PSAxMTIwLAorCQkvKiBlcXB1bHNfYmVnaW4gKi8KKwkJLyogZXFwdWxzX2VuZCAqLworCQkvKiBl cXB1bHNfYmxpbmUgKi8KKwkJLyogZXFwdWxzX2VsaW5lICovCisJCS5oc29fYmVnaW4gPSA0NCwK KwkJLmhzb19lbmQgPSAyMTU2LAorCQkudnNvX2JlZ2luID0gMjEwMCwKKwkJLnZzb19lbmQgPSAy MTY0LAorCQkudnNvX2JsaW5lID0gMCwKKwkJLnZzb19lbGluZSA9IDUsCisJCS52c29fZWxpbmVf cHJlc2VudCA9IHRydWUsCisJCS8qIHN5X3ZhbCAqLworCQkvKiBzeTJfdmFsICovCisJCS5tYXhf bG5jbnQgPSAxMTI0LAorCX0sCit9OworCit1bmlvbiBtZXNvbl9oZG1pX3ZlbmNfbW9kZSBtZXNv bl9oZG1pX2VuY3BfbW9kZV8xMDgwcDUwID0geworCS5lbmNwID0geworCQkuZHZpX3NldHRpbmdz ID0gMHhkLAorCQkudmlkZW9fbW9kZSA9IDB4NDA0MCwKKwkJLnZpZGVvX21vZGVfYWR2ID0gMHgx OCwKKwkJLnZpZGVvX3Byb2dfbW9kZSA9IDB4MTAwLAorCQkudmlkZW9fcHJvZ19tb2RlX3ByZXNl bnQgPSB0cnVlLAorCQkudmlkZW9fc3luY19tb2RlID0gMHg3LAorCQkudmlkZW9fc3luY19tb2Rl X3ByZXNlbnQgPSB0cnVlLAorCQkudmlkZW9feWNfZGx5ID0gMCwKKwkJLnZpZGVvX3ljX2RseV9w cmVzZW50ID0gdHJ1ZSwKKwkJLnZpZGVvX3JnYl9jdHJsID0gMiwKKwkJLnZpZGVvX3JnYl9jdHJs X3ByZXNlbnQgPSB0cnVlLAorCQkvKiB2aWRlb19maWx0X2N0cmwgKi8KKwkJLyogdmlkZW9fb2Zs ZF92b2F2X29mc3QgKi8KKwkJLnlmcDFfaHRpbWUgPSAyNzEsCisJCS55ZnAyX2h0aW1lID0gMjE5 MCwKKwkJLm1heF9weGNudCA9IDI2MzksCisJCS5oc3B1bHNfYmVnaW4gPSA0NCwKKwkJLmhzcHVs c19lbmQgPSAxMzIsCisJCS5oc3B1bHNfc3dpdGNoID0gNDQsCisJCS52c3B1bHNfYmVnaW4gPSAy MjAsCisJCS52c3B1bHNfZW5kID0gMjE0MCwKKwkJLnZzcHVsc19ibGluZSA9IDAsCisJCS52c3B1 bHNfZWxpbmUgPSA0LAorCQkuaGF2b25fYmVnaW4gPSAyNzEsCisJCS5oYXZvbl9lbmQgPSAyMTkw LAorCQkudmF2b25fYmxpbmUgPSA0MSwKKwkJLnZhdm9uX2VsaW5lID0gMTEyMCwKKwkJLyogZXFw dWxzX2JlZ2luICovCisJCS8qIGVxcHVsc19lbmQgKi8KKwkJLmVxcHVsc19ibGluZSA9IDAsCisJ CS5lcXB1bHNfYmxpbmVfcHJlc2VudCA9IHRydWUsCisJCS5lcXB1bHNfZWxpbmUgPSA0LAorCQku ZXFwdWxzX2VsaW5lX3ByZXNlbnQgPSB0cnVlLAorCQkuaHNvX2JlZ2luID0gNzksCisJCS5oc29f ZW5kID0gMTIzLAorCQkudnNvX2JlZ2luID0gNzksCisJCS52c29fZW5kID0gNzksCisJCS52c29f YmxpbmUgPSAwLAorCQkudnNvX2VsaW5lID0gNSwKKwkJLnZzb19lbGluZV9wcmVzZW50ID0gdHJ1 ZSwKKwkJLyogc3lfdmFsICovCisJCS8qIHN5Ml92YWwgKi8KKwkJLm1heF9sbmNudCA9IDExMjQs CisJfSwKK307CisKK3VuaW9uIG1lc29uX2hkbWlfdmVuY19tb2RlIG1lc29uX2hkbWlfZW5jcF9t b2RlXzEwODBwNjAgPSB7CisJLmVuY3AgPSB7CisJCS5kdmlfc2V0dGluZ3MgPSAweDEsCisJCS52 aWRlb19tb2RlID0gMHg0MDQwLAorCQkudmlkZW9fbW9kZV9hZHYgPSAweDE4LAorCQkudmlkZW9f cHJvZ19tb2RlID0gMHgxMDAsCisJCS52aWRlb19wcm9nX21vZGVfcHJlc2VudCA9IHRydWUsCisJ CS8qIHZpZGVvX3N5bmNfbW9kZSAqLworCQkvKiB2aWRlb195Y19kbHkgKi8KKwkJLyogdmlkZW9f cmdiX2N0cmwgKi8KKwkJLnZpZGVvX2ZpbHRfY3RybCA9IDB4MTA1MiwKKwkJLnZpZGVvX2ZpbHRf Y3RybF9wcmVzZW50ID0gdHJ1ZSwKKwkJLyogdmlkZW9fb2ZsZF92b2F2X29mc3QgKi8KKwkJLnlm cDFfaHRpbWUgPSAxNDAsCisJCS55ZnAyX2h0aW1lID0gMjA2MCwKKwkJLm1heF9weGNudCA9IDIx OTksCisJCS5oc3B1bHNfYmVnaW4gPSAyMTU2LAorCQkuaHNwdWxzX2VuZCA9IDQ0LAorCQkuaHNw dWxzX3N3aXRjaCA9IDQ0LAorCQkudnNwdWxzX2JlZ2luID0gMTQwLAorCQkudnNwdWxzX2VuZCA9 IDIwNTksCisJCS52c3B1bHNfYmxpbmUgPSAwLAorCQkudnNwdWxzX2VsaW5lID0gNCwKKwkJLmhh dm9uX2JlZ2luID0gMTQ4LAorCQkuaGF2b25fZW5kID0gMjA2NywKKwkJLnZhdm9uX2JsaW5lID0g NDEsCisJCS52YXZvbl9lbGluZSA9IDExMjAsCisJCS8qIGVxcHVsc19iZWdpbiAqLworCQkvKiBl cXB1bHNfZW5kICovCisJCS8qIGVxcHVsc19ibGluZSAqLworCQkvKiBlcXB1bHNfZWxpbmUgKi8K KwkJLmhzb19iZWdpbiA9IDQ0LAorCQkuaHNvX2VuZCA9IDIxNTYsCisJCS52c29fYmVnaW4gPSAy MTAwLAorCQkudnNvX2VuZCA9IDIxNjQsCisJCS52c29fYmxpbmUgPSAwLAorCQkudnNvX2VsaW5l ID0gNSwKKwkJLnZzb19lbGluZV9wcmVzZW50ID0gdHJ1ZSwKKwkJLyogc3lfdmFsICovCisJCS8q IHN5Ml92YWwgKi8KKwkJLm1heF9sbmNudCA9IDExMjQsCisJfSwKK307CisKK3N0cnVjdCBtZXNv bl9oZG1pX3ZlbmNfdmljX21vZGUgeworCXVuc2lnbmVkIGludCB2aWM7CisJdW5pb24gbWVzb25f aGRtaV92ZW5jX21vZGUgKm1vZGU7Cit9IG1lc29uX2hkbWlfdmVuY192aWNfbW9kZXNbXSA9IHsK Kwl7IDYsICZtZXNvbl9oZG1pX2VuY2lfbW9kZV80ODBpIH0sCisJeyA3LCAmbWVzb25faGRtaV9l bmNpX21vZGVfNDgwaSB9LAorCXsgMjEsICZtZXNvbl9oZG1pX2VuY2lfbW9kZV81NzZpIH0sCisJ eyAyMiwgJm1lc29uX2hkbWlfZW5jaV9tb2RlXzU3NmkgfSwKKwl7IDIsICZtZXNvbl9oZG1pX2Vu Y3BfbW9kZV80ODBwIH0sCisJeyAzLCAmbWVzb25faGRtaV9lbmNwX21vZGVfNDgwcCB9LAorCXsg MTcsICZtZXNvbl9oZG1pX2VuY3BfbW9kZV81NzZwIH0sCisJeyAxOCwgJm1lc29uX2hkbWlfZW5j cF9tb2RlXzU3NnAgfSwKKwl7IDQsICZtZXNvbl9oZG1pX2VuY3BfbW9kZV83MjBwNjAgfSwKKwl7 IDE5LCAmbWVzb25faGRtaV9lbmNwX21vZGVfNzIwcDUwIH0sCisJeyA1LCAmbWVzb25faGRtaV9l bmNwX21vZGVfMTA4MGk2MCB9LAorCXsgMjAsICZtZXNvbl9oZG1pX2VuY3BfbW9kZV8xMDgwaTUw IH0sCisJeyAzMiwgJm1lc29uX2hkbWlfZW5jcF9tb2RlXzEwODBwMjQgfSwKKwl7IDM0LCAmbWVz b25faGRtaV9lbmNwX21vZGVfMTA4MHAzMCB9LAorCXsgMzEsICZtZXNvbl9oZG1pX2VuY3BfbW9k ZV8xMDgwcDUwIH0sCisJeyAxNiwgJm1lc29uX2hkbWlfZW5jcF9tb2RlXzEwODBwNjAgfSwKKwl7 IDAsIE5VTEx9LCAvKiBzZW50aW5lbCAqLworfTsKKworc3RhdGljIHNpZ25lZCBpbnQgdG9fc2ln bmVkKHVuc2lnbmVkIGludCBhKQoreworCWlmIChhIDw9IDcpCisJCXJldHVybiBhOworCWVsc2UK KwkJcmV0dXJuIGEgLSAxNjsKK30KKworc3RhdGljIHVuc2lnbmVkIGxvbmcgbW9kdWxvKHVuc2ln bmVkIGxvbmcgYSwgdW5zaWduZWQgbG9uZyBiKQoreworCWlmIChhID49IGIpCisJCXJldHVybiBh IC0gYjsKKwllbHNlCisJCXJldHVybiBhOworfQorCitib29sIG1lc29uX3ZlbmNfaGRtaV9zdXBw b3J0ZWRfdmljKGludCB2aWMpCit7CisJc3RydWN0IG1lc29uX2hkbWlfdmVuY192aWNfbW9kZSAq dm1vZGUgPSBtZXNvbl9oZG1pX3ZlbmNfdmljX21vZGVzOworCisJd2hpbGUgKHZtb2RlLT52aWMg JiYgdm1vZGUtPm1vZGUpIHsKKwkJaWYgKHZtb2RlLT52aWMgPT0gdmljKQorCQkJcmV0dXJuIHRy dWU7CisJCXZtb2RlKys7CisJfQorCisJcmV0dXJuIGZhbHNlOworfQorRVhQT1JUX1NZTUJPTF9H UEwobWVzb25fdmVuY19oZG1pX3N1cHBvcnRlZF92aWMpOworCitzdGF0aWMgdW5pb24gbWVzb25f aGRtaV92ZW5jX21vZGUgKm1lc29uX3ZlbmNfaGRtaV9nZXRfdmljX3Ztb2RlKGludCB2aWMpCit7 CisJc3RydWN0IG1lc29uX2hkbWlfdmVuY192aWNfbW9kZSAqdm1vZGUgPSBtZXNvbl9oZG1pX3Zl bmNfdmljX21vZGVzOworCisJd2hpbGUgKHZtb2RlLT52aWMgJiYgdm1vZGUtPm1vZGUpIHsKKwkJ aWYgKHZtb2RlLT52aWMgPT0gdmljKQorCQkJcmV0dXJuIHZtb2RlLT5tb2RlOworCQl2bW9kZSsr OworCX0KKworCXJldHVybiBOVUxMOworfQorCitib29sIG1lc29uX3ZlbmNfaGRtaV92ZW5jX3Jl cGVhdChpbnQgdmljKQoreworCS8qIFJlcGVhdCBWRU5DIHBpeGVscyBmb3IgNDgwLzU3NmkvcCwg NzIwcDUwLzYwIGFuZCAxMDgwcDUwLzYwICovCisJaWYgKHZpYyA9PSA2IHx8IHZpYyA9PSA3IHx8 IC8qIDQ4MGkgKi8KKwkgICAgdmljID09IDIxIHx8IHZpYyA9PSAyMiB8fCAvKiA1NzZpICovCisJ ICAgIHZpYyA9PSAxNyB8fCB2aWMgPT0gMTggfHwgLyogNTc2cCAqLworCSAgICB2aWMgPT0gMiB8 fCB2aWMgPT0gMyB8fCAvKiA0ODBwICovCisJICAgIHZpYyA9PSA0IHx8IC8qIDcyMHA2MCAqLwor CSAgICB2aWMgPT0gMTkgfHwgLyogNzIwcDUwICovCisJICAgIHZpYyA9PSA1IHx8IC8qIDEwODBp NjAgKi8KKwkgICAgdmljID09IDIwKQkvKiAxMDgwaTUwICovCisJCXJldHVybiB0cnVlOworCisJ cmV0dXJuIGZhbHNlOworfQorRVhQT1JUX1NZTUJPTF9HUEwobWVzb25fdmVuY19oZG1pX3ZlbmNf cmVwZWF0KTsKKwordm9pZCBtZXNvbl92ZW5jX2hkbWlfbW9kZV9zZXQoc3RydWN0IG1lc29uX2Ry bSAqcHJpdiwgaW50IHZpYywKKwkJCSAgICAgIHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICptb2Rl KQoreworCXVuaW9uIG1lc29uX2hkbWlfdmVuY19tb2RlICp2bW9kZSA9IE5VTEw7CisJYm9vbCB1 c2VfZW5jaSA9IGZhbHNlOworCWJvb2wgdmVuY19yZXBlYXQgPSBmYWxzZTsKKwlib29sIGhkbWlf cmVwZWF0ID0gZmFsc2U7CisJdW5zaWduZWQgaW50IHZlbmNfaGRtaV9sYXRlbmN5ID0gMjsKKwl1 bnNpZ25lZCBsb25nIHRvdGFsX3BpeGVsc192ZW5jID0gMDsKKwl1bnNpZ25lZCBsb25nIGFjdGl2 ZV9waXhlbHNfdmVuYyA9IDA7CisJdW5zaWduZWQgbG9uZyBmcm9udF9wb3JjaF92ZW5jID0gMDsK Kwl1bnNpZ25lZCBsb25nIGhzeW5jX3BpeGVsc192ZW5jID0gMDsKKwl1bnNpZ25lZCBsb25nIGRl X2hfYmVnaW4gPSAwOworCXVuc2lnbmVkIGxvbmcgZGVfaF9lbmQgPSAwOworCXVuc2lnbmVkIGxv bmcgZGVfdl9iZWdpbl9ldmVuID0gMDsKKwl1bnNpZ25lZCBsb25nIGRlX3ZfZW5kX2V2ZW4gPSAw OworCXVuc2lnbmVkIGxvbmcgZGVfdl9iZWdpbl9vZGQgPSAwOworCXVuc2lnbmVkIGxvbmcgZGVf dl9lbmRfb2RkID0gMDsKKwl1bnNpZ25lZCBsb25nIGhzX2JlZ2luID0gMDsKKwl1bnNpZ25lZCBs b25nIGhzX2VuZCA9IDA7CisJdW5zaWduZWQgbG9uZyB2c19hZGp1c3QgPSAwOworCXVuc2lnbmVk IGxvbmcgdnNfYmxpbmVfZXZuID0gMDsKKwl1bnNpZ25lZCBsb25nIHZzX2VsaW5lX2V2biA9IDA7 CisJdW5zaWduZWQgbG9uZyB2c19ibGluZV9vZGQgPSAwOworCXVuc2lnbmVkIGxvbmcgdnNfZWxp bmVfb2RkID0gMDsKKwl1bnNpZ25lZCBsb25nIHZzb19iZWdpbl9ldm4gPSAwOworCXVuc2lnbmVk IGxvbmcgdnNvX2JlZ2luX29kZCA9IDA7CisJdW5zaWduZWQgaW50IGVvZl9saW5lczsKKwl1bnNp Z25lZCBpbnQgc29mX2xpbmVzOworCXVuc2lnbmVkIGludCB2c3luY19saW5lczsKKworCXZtb2Rl ID0gbWVzb25fdmVuY19oZG1pX2dldF92aWNfdm1vZGUodmljKTsKKwlpZiAoIXZtb2RlKSB7CisJ CWRldl9lcnIocHJpdi0+ZGV2LCAiJXM6IEZhdGFsIEVycm9yLCB1bnN1cHBvcnRlZCB2aWMgJWRc biIsCisJCQlfX2Z1bmNfXywgdmljKTsKKwkJcmV0dXJuOworCX0KKworCS8qIFVzZSBWRU5DSSBm b3IgNDgwaSBhbmQgNTc2aSBhbmQgZG91YmxlIEhETUkgcGl4ZWxzICovCisJaWYgKG1vZGUtPmZs YWdzICYgRFJNX01PREVfRkxBR19EQkxDTEspIHsKKwkJaGRtaV9yZXBlYXQgPSB0cnVlOworCQl1 c2VfZW5jaSA9IHRydWU7CisJCXZlbmNfaGRtaV9sYXRlbmN5ID0gMTsKKwl9CisKKwkvKiBSZXBl YXQgVkVOQyBwaXhlbHMgZm9yIDQ4MC81NzZpL3AsIDcyMHA1MC82MCBhbmQgMTA4MHA1MC82MCAq LworCWlmIChtZXNvbl92ZW5jX2hkbWlfdmVuY19yZXBlYXQodmljKSkKKwkJdmVuY19yZXBlYXQg PSB0cnVlOworCisJZW9mX2xpbmVzID0gbW9kZS0+dnN5bmNfc3RhcnQgLSBtb2RlLT52ZGlzcGxh eTsKKwlpZiAobW9kZS0+ZmxhZ3MgJiBEUk1fTU9ERV9GTEFHX0lOVEVSTEFDRSkKKwkJZW9mX2xp bmVzIC89IDI7CisJc29mX2xpbmVzID0gbW9kZS0+dnRvdGFsIC0gbW9kZS0+dnN5bmNfZW5kOwor CWlmIChtb2RlLT5mbGFncyAmIERSTV9NT0RFX0ZMQUdfSU5URVJMQUNFKQorCQlzb2ZfbGluZXMg Lz0gMjsKKwl2c3luY19saW5lcyA9IG1vZGUtPnZzeW5jX2VuZCAtIG1vZGUtPnZzeW5jX3N0YXJ0 OworCWlmIChtb2RlLT5mbGFncyAmIERSTV9NT0RFX0ZMQUdfSU5URVJMQUNFKQorCQl2c3luY19s aW5lcyAvPSAyOworCisJdG90YWxfcGl4ZWxzX3ZlbmMgPSBtb2RlLT5odG90YWw7CisJaWYgKGhk bWlfcmVwZWF0KQorCQl0b3RhbF9waXhlbHNfdmVuYyAvPSAyOworCWlmICh2ZW5jX3JlcGVhdCkK KwkJdG90YWxfcGl4ZWxzX3ZlbmMgKj0gMjsKKworCWFjdGl2ZV9waXhlbHNfdmVuYyA9IG1vZGUt PmhkaXNwbGF5OworCWlmIChoZG1pX3JlcGVhdCkKKwkJYWN0aXZlX3BpeGVsc192ZW5jIC89IDI7 CisJaWYgKHZlbmNfcmVwZWF0KQorCQlhY3RpdmVfcGl4ZWxzX3ZlbmMgKj0gMjsKKworCWZyb250 X3BvcmNoX3ZlbmMgPSAobW9kZS0+aHN5bmNfc3RhcnQgLSBtb2RlLT5oZGlzcGxheSk7CisJaWYg KGhkbWlfcmVwZWF0KQorCQlmcm9udF9wb3JjaF92ZW5jIC89IDI7CisJaWYgKHZlbmNfcmVwZWF0 KQorCQlmcm9udF9wb3JjaF92ZW5jICo9IDI7CisKKwloc3luY19waXhlbHNfdmVuYyA9IChtb2Rl LT5oc3luY19lbmQgLSBtb2RlLT5oc3luY19zdGFydCk7CisJaWYgKGhkbWlfcmVwZWF0KQorCQlo c3luY19waXhlbHNfdmVuYyAvPSAyOworCWlmICh2ZW5jX3JlcGVhdCkKKwkJaHN5bmNfcGl4ZWxz X3ZlbmMgKj0gMjsKKworCS8qIERpc2FibGUgVkRBQ3MgKi8KKwl3cml0ZWxfYml0c19yZWxheGVk KDB4MWYsIDB4MWYsCisJCQlwcml2LT5pb19iYXNlICsgX1JFRyhWRU5DX1ZEQUNfU0VUVElORykp OworCisJd3JpdGVsX3JlbGF4ZWQoMCwgcHJpdi0+aW9fYmFzZSArIF9SRUcoRU5DSV9WSURFT19F TikpOworCXdyaXRlbF9yZWxheGVkKDAsIHByaXYtPmlvX2Jhc2UgKyBfUkVHKEVOQ1BfVklERU9f RU4pKTsKKworCWlmICh1c2VfZW5jaSkgeworCQl1bnNpZ25lZCBpbnQgbGluZXNfZjA7CisJCXVu c2lnbmVkIGludCBsaW5lc19mMTsKKworCQkvKiBDVkJTIEZpbHRlciBzZXR0aW5ncyAqLworCQl3 cml0ZWxfcmVsYXhlZCgweDEyLCBwcml2LT5pb19iYXNlICsgX1JFRyhFTkNJX0NGSUxUX0NUUkwp KTsKKwkJd3JpdGVsX3JlbGF4ZWQoMHgxMiwgcHJpdi0+aW9fYmFzZSArIF9SRUcoRU5DSV9DRklM VF9DVFJMMikpOworCisJCS8qIERpZ2l0YWwgVmlkZW8gU2VsZWN0IDogSW50ZXJsYWNlLCBjbGsy NyBjbGssIGV4dGVybmFsICovCisJCXdyaXRlbF9yZWxheGVkKDAsIHByaXYtPmlvX2Jhc2UgKyBf UkVHKFZFTkNfRFZJX1NFVFRJTkcpKTsKKworCQkvKiBSZXNldCBWaWRlbyBNb2RlICovCisJCXdy aXRlbF9yZWxheGVkKDAsIHByaXYtPmlvX2Jhc2UgKyBfUkVHKEVOQ0lfVklERU9fTU9ERSkpOwor CQl3cml0ZWxfcmVsYXhlZCgwLCBwcml2LT5pb19iYXNlICsgX1JFRyhFTkNJX1ZJREVPX01PREVf QURWKSk7CisKKwkJLyogSG9yaXpvbnRhbCBzeW5jIHNpZ25hbCBvdXRwdXQgKi8KKwkJd3JpdGVs X3JlbGF4ZWQodm1vZGUtPmVuY2kuaHNvX2JlZ2luLAorCQkJCXByaXYtPmlvX2Jhc2UgKyBfUkVH KEVOQ0lfU1lOQ19IU09fQkVHSU4pKTsKKwkJd3JpdGVsX3JlbGF4ZWQodm1vZGUtPmVuY2kuaHNv X2VuZCwKKwkJCQlwcml2LT5pb19iYXNlICsgX1JFRyhFTkNJX1NZTkNfSFNPX0VORCkpOworCisJ CS8qIFZlcnRpY2FsIFN5bmMgbGluZXMgKi8KKwkJd3JpdGVsX3JlbGF4ZWQodm1vZGUtPmVuY2ku dnNvX2V2ZW4sCisJCQkJcHJpdi0+aW9fYmFzZSArIF9SRUcoRU5DSV9TWU5DX1ZTT19FVk5MTikp OworCQl3cml0ZWxfcmVsYXhlZCh2bW9kZS0+ZW5jaS52c29fb2RkLAorCQkJCXByaXYtPmlvX2Jh c2UgKyBfUkVHKEVOQ0lfU1lOQ19WU09fT0RETE4pKTsKKworCQkvKiBNYWNyb3Zpc2lvbiBtYXgg YW1wbGl0dWRlIGNoYW5nZSAqLworCQl3cml0ZWxfcmVsYXhlZCh2bW9kZS0+ZW5jaS5tYWN2X21h eF9hbXAsCisJCQkJcHJpdi0+aW9fYmFzZSArIF9SRUcoRU5DSV9NQUNWX01BWF9BTVApKTsKKwor CQkvKiBWaWRlbyBtb2RlICovCisJCXdyaXRlbF9yZWxheGVkKHZtb2RlLT5lbmNpLnZpZGVvX3By b2dfbW9kZSwKKwkJCQlwcml2LT5pb19iYXNlICsgX1JFRyhWRU5DX1ZJREVPX1BST0dfTU9ERSkp OworCQl3cml0ZWxfcmVsYXhlZCh2bW9kZS0+ZW5jaS52aWRlb19tb2RlLAorCQkJCXByaXYtPmlv X2Jhc2UgKyBfUkVHKEVOQ0lfVklERU9fTU9ERSkpOworCisJCS8qIEFkdmFuY2VkIFZpZGVvIE1v ZGUgOgorCQkgKiBEZW11eCBzaGlmdGluZyAweDIKKwkJICogQmxhbmsgbGluZSBlbmQgYXQgbGlu ZTE3LzIyCisJCSAqIEhpZ2ggYmFuZHdpZHRoIEx1bWEgRmlsdGVyCisJCSAqIExvdyBiYW5kd2lk dGggQ2hyb21hIEZpbHRlcgorCQkgKiBCeXBhc3MgbHVtYSBsb3cgcGFzcyBmaWx0ZXIKKwkJICog Tm8gbWFjcm92aXNpb24gb24gQ1NZTkMKKwkJICovCisJCXdyaXRlbF9yZWxheGVkKDB4MjYsIHBy aXYtPmlvX2Jhc2UgKyBfUkVHKEVOQ0lfVklERU9fTU9ERV9BRFYpKTsKKworCQl3cml0ZWwodm1v ZGUtPmVuY2kuc2NoX2FkanVzdCwKKwkJCQlwcml2LT5pb19iYXNlICsgX1JFRyhFTkNJX1ZJREVP X1NDSCkpOworCisJCS8qIFN5bmMgbW9kZSA6IE1BU1RFUiBNYXN0ZXIgbW9kZSwgZnJlZSBydW4s IHNlbmQgSFNPL1ZTTyBvdXQgKi8KKwkJd3JpdGVsX3JlbGF4ZWQoMHgwNywgcHJpdi0+aW9fYmFz ZSArIF9SRUcoRU5DSV9TWU5DX01PREUpKTsKKworCQlpZiAodm1vZGUtPmVuY2kueWNfZGVsYXkp CisJCQl3cml0ZWxfcmVsYXhlZCh2bW9kZS0+ZW5jaS55Y19kZWxheSwKKwkJCQkJcHJpdi0+aW9f YmFzZSArIF9SRUcoRU5DSV9ZQ19ERUxBWSkpOworCisKKwkJLyogVU5yZXNldCBJbnRlcmxhY2Vk IFRWIEVuY29kZXIgKi8KKwkJd3JpdGVsX3JlbGF4ZWQoMCwgcHJpdi0+aW9fYmFzZSArIF9SRUco RU5DSV9EQkdfUFhfUlNUKSk7CisKKwkJLyogRW5hYmxlIFZmaWZvMnZkLCBZX0NiX1lfQ3Igc2Vs ZWN0ICovCisJCXdyaXRlbF9yZWxheGVkKDB4NGUwMSwgcHJpdi0+aW9fYmFzZSArIF9SRUcoRU5D SV9WRklGTzJWRF9DVEwpKTsKKworCQkvKiBUaW1pbmdzICovCisJCXdyaXRlbF9yZWxheGVkKHZt b2RlLT5lbmNpLnBpeGVsX3N0YXJ0LAorCQkJcHJpdi0+aW9fYmFzZSArIF9SRUcoRU5DSV9WRklG TzJWRF9QSVhFTF9TVEFSVCkpOworCQl3cml0ZWxfcmVsYXhlZCh2bW9kZS0+ZW5jaS5waXhlbF9l bmQsCisJCQlwcml2LT5pb19iYXNlICsgX1JFRyhFTkNJX1ZGSUZPMlZEX1BJWEVMX0VORCkpOwor CisJCXdyaXRlbF9yZWxheGVkKHZtb2RlLT5lbmNpLnRvcF9maWVsZF9saW5lX3N0YXJ0LAorCQkJ cHJpdi0+aW9fYmFzZSArIF9SRUcoRU5DSV9WRklGTzJWRF9MSU5FX1RPUF9TVEFSVCkpOworCQl3 cml0ZWxfcmVsYXhlZCh2bW9kZS0+ZW5jaS50b3BfZmllbGRfbGluZV9lbmQsCisJCQlwcml2LT5p b19iYXNlICsgX1JFRyhFTkNJX1ZGSUZPMlZEX0xJTkVfVE9QX0VORCkpOworCisJCXdyaXRlbF9y ZWxheGVkKHZtb2RlLT5lbmNpLmJvdHRvbV9maWVsZF9saW5lX3N0YXJ0LAorCQkJcHJpdi0+aW9f YmFzZSArIF9SRUcoRU5DSV9WRklGTzJWRF9MSU5FX0JPVF9TVEFSVCkpOworCQl3cml0ZWxfcmVs YXhlZCh2bW9kZS0+ZW5jaS5ib3R0b21fZmllbGRfbGluZV9lbmQsCisJCQlwcml2LT5pb19iYXNl ICsgX1JFRyhFTkNJX1ZGSUZPMlZEX0xJTkVfQk9UX0VORCkpOworCisJCS8qIFNlbGVjdCBFTkNJ IGZvciBWSVUgKi8KKwkJbWVzb25fdnBwX3NldHVwX211eChwcml2LCBNRVNPTl9WSVVfVlBQX01V WF9FTkNJKTsKKworCQkvKiBJbnRlcmxhY2UgdmlkZW8gZW5hYmxlICovCisJCXdyaXRlbF9yZWxh eGVkKDEsIHByaXYtPmlvX2Jhc2UgKyBfUkVHKEVOQ0lfVklERU9fRU4pKTsKKworCQlsaW5lc19m MCA9IG1vZGUtPnZ0b3RhbCA+PiAxOworCQlsaW5lc19mMSA9IGxpbmVzX2YwICsgMTsKKworCQlk ZV9oX2JlZ2luID0gbW9kdWxvKHJlYWRsX3JlbGF4ZWQocHJpdi0+aW9fYmFzZSArCisJCQkJCV9S RUcoRU5DSV9WRklGTzJWRF9QSVhFTF9TVEFSVCkpCisJCQkJCSsgdmVuY19oZG1pX2xhdGVuY3ks CisJCQkJICAgIHRvdGFsX3BpeGVsc192ZW5jKTsKKwkJZGVfaF9lbmQgID0gbW9kdWxvKGRlX2hf YmVnaW4gKyBhY3RpdmVfcGl4ZWxzX3ZlbmMsCisJCQkJICAgdG90YWxfcGl4ZWxzX3ZlbmMpOwor CisJCXdyaXRlbF9yZWxheGVkKGRlX2hfYmVnaW4sCisJCQkJcHJpdi0+aW9fYmFzZSArIF9SRUco RU5DSV9ERV9IX0JFR0lOKSk7CisJCXdyaXRlbF9yZWxheGVkKGRlX2hfZW5kLAorCQkJCXByaXYt PmlvX2Jhc2UgKyBfUkVHKEVOQ0lfREVfSF9FTkQpKTsKKworCQlkZV92X2JlZ2luX2V2ZW4gPSBy ZWFkbF9yZWxheGVkKHByaXYtPmlvX2Jhc2UgKworCQkJCQlfUkVHKEVOQ0lfVkZJRk8yVkRfTElO RV9UT1BfU1RBUlQpKTsKKwkJZGVfdl9lbmRfZXZlbiAgPSBkZV92X2JlZ2luX2V2ZW4gKyBtb2Rl LT52ZGlzcGxheTsKKwkJZGVfdl9iZWdpbl9vZGQgPSByZWFkbF9yZWxheGVkKHByaXYtPmlvX2Jh c2UgKworCQkJCQlfUkVHKEVOQ0lfVkZJRk8yVkRfTElORV9CT1RfU1RBUlQpKTsKKwkJZGVfdl9l bmRfb2RkID0gZGVfdl9iZWdpbl9vZGQgKyBtb2RlLT52ZGlzcGxheTsKKworCQl3cml0ZWxfcmVs YXhlZChkZV92X2JlZ2luX2V2ZW4sCisJCQkJcHJpdi0+aW9fYmFzZSArIF9SRUcoRU5DSV9ERV9W X0JFR0lOX0VWRU4pKTsKKwkJd3JpdGVsX3JlbGF4ZWQoZGVfdl9lbmRfZXZlbiwKKwkJCQlwcml2 LT5pb19iYXNlICsgX1JFRyhFTkNJX0RFX1ZfRU5EX0VWRU4pKTsKKwkJd3JpdGVsX3JlbGF4ZWQo ZGVfdl9iZWdpbl9vZGQsCisJCQkJcHJpdi0+aW9fYmFzZSArIF9SRUcoRU5DSV9ERV9WX0JFR0lO X09ERCkpOworCQl3cml0ZWxfcmVsYXhlZChkZV92X2VuZF9vZGQsCisJCQkJcHJpdi0+aW9fYmFz ZSArIF9SRUcoRU5DSV9ERV9WX0VORF9PREQpKTsKKworCQkvKiBQcm9ncmFtIEhzeW5jIHRpbWlu ZyAqLworCQloc19iZWdpbiA9IGRlX2hfZW5kICsgZnJvbnRfcG9yY2hfdmVuYzsKKwkJaWYgKGRl X2hfZW5kICsgZnJvbnRfcG9yY2hfdmVuYyA+PSB0b3RhbF9waXhlbHNfdmVuYykgeworCQkJaHNf YmVnaW4gLT0gdG90YWxfcGl4ZWxzX3ZlbmM7CisJCQl2c19hZGp1c3QgID0gMTsKKwkJfSBlbHNl IHsKKwkJCWhzX2JlZ2luID0gZGVfaF9lbmQgKyBmcm9udF9wb3JjaF92ZW5jOworCQkJdnNfYWRq dXN0ICA9IDA7CisJCX0KKworCQloc19lbmQgPSBtb2R1bG8oaHNfYmVnaW4gKyBoc3luY19waXhl bHNfdmVuYywKKwkJCQl0b3RhbF9waXhlbHNfdmVuYyk7CisJCXdyaXRlbF9yZWxheGVkKGhzX2Jl Z2luLAorCQkJCXByaXYtPmlvX2Jhc2UgKyBfUkVHKEVOQ0lfRFZJX0hTT19CRUdJTikpOworCQl3 cml0ZWxfcmVsYXhlZChoc19lbmQsCisJCQkJcHJpdi0+aW9fYmFzZSArIF9SRUcoRU5DSV9EVklf SFNPX0VORCkpOworCisJCS8qIFByb2dyYW0gVnN5bmMgdGltaW5nIGZvciBldmVuIGZpZWxkICov CisJCWlmICgoKGRlX3ZfZW5kX29kZCAtIDEpICsgZW9mX2xpbmVzICsgdnNfYWRqdXN0KSA+PSBs aW5lc19mMSkgeworCQkJdnNfYmxpbmVfZXZuID0gKGRlX3ZfZW5kX29kZCAtIDEpCisJCQkJCSsg ZW9mX2xpbmVzCisJCQkJCSsgdnNfYWRqdXN0CisJCQkJCS0gbGluZXNfZjE7CisJCQl2c19lbGlu ZV9ldm4gPSB2c19ibGluZV9ldm4gKyB2c3luY19saW5lczsKKworCQkJd3JpdGVsX3JlbGF4ZWQo dnNfYmxpbmVfZXZuLAorCQkJCXByaXYtPmlvX2Jhc2UgKyBfUkVHKEVOQ0lfRFZJX1ZTT19CTElO RV9FVk4pKTsKKworCQkJd3JpdGVsX3JlbGF4ZWQodnNfZWxpbmVfZXZuLAorCQkJCXByaXYtPmlv X2Jhc2UgKyBfUkVHKEVOQ0lfRFZJX1ZTT19FTElORV9FVk4pKTsKKworCQkJd3JpdGVsX3JlbGF4 ZWQoaHNfYmVnaW4sCisJCQkJcHJpdi0+aW9fYmFzZSArIF9SRUcoRU5DSV9EVklfVlNPX0JFR0lO X0VWTikpOworCQkJd3JpdGVsX3JlbGF4ZWQoaHNfYmVnaW4sCisJCQkJcHJpdi0+aW9fYmFzZSAr IF9SRUcoRU5DSV9EVklfVlNPX0VORF9FVk4pKTsKKwkJfSBlbHNlIHsKKwkJCXZzX2JsaW5lX29k ZCA9IChkZV92X2VuZF9vZGQgLSAxKQorCQkJCQkrIGVvZl9saW5lcworCQkJCQkrIHZzX2FkanVz dDsKKworCQkJd3JpdGVsX3JlbGF4ZWQodnNfYmxpbmVfb2RkLAorCQkJCXByaXYtPmlvX2Jhc2Ug KyBfUkVHKEVOQ0lfRFZJX1ZTT19CTElORV9PREQpKTsKKworCQkJd3JpdGVsX3JlbGF4ZWQoaHNf YmVnaW4sCisJCQkJcHJpdi0+aW9fYmFzZSArIF9SRUcoRU5DSV9EVklfVlNPX0JFR0lOX09ERCkp OworCisJCQlpZiAoKHZzX2JsaW5lX29kZCArIHZzeW5jX2xpbmVzKSA+PSBsaW5lc19mMSkgewor CQkJCXZzX2VsaW5lX2V2biA9IHZzX2JsaW5lX29kZAorCQkJCQkJKyB2c3luY19saW5lcworCQkJ CQkJLSBsaW5lc19mMTsKKworCQkJCXdyaXRlbF9yZWxheGVkKHZzX2VsaW5lX2V2biwgcHJpdi0+ aW9fYmFzZQorCQkJCQkJKyBfUkVHKEVOQ0lfRFZJX1ZTT19FTElORV9FVk4pKTsKKworCQkJCXdy aXRlbF9yZWxheGVkKGhzX2JlZ2luLCBwcml2LT5pb19iYXNlCisJCQkJCQkrIF9SRUcoRU5DSV9E VklfVlNPX0VORF9FVk4pKTsKKwkJCX0gZWxzZSB7CisJCQkJdnNfZWxpbmVfb2RkID0gdnNfYmxp bmVfb2RkCisJCQkJCQkrIHZzeW5jX2xpbmVzOworCisJCQkJd3JpdGVsX3JlbGF4ZWQodnNfZWxp bmVfb2RkLCBwcml2LT5pb19iYXNlCisJCQkJCQkrIF9SRUcoRU5DSV9EVklfVlNPX0VMSU5FX09E RCkpOworCisJCQkJd3JpdGVsX3JlbGF4ZWQoaHNfYmVnaW4sIHByaXYtPmlvX2Jhc2UKKwkJCQkJ CSsgX1JFRyhFTkNJX0RWSV9WU09fRU5EX09ERCkpOworCQkJfQorCQl9CisKKwkJLyogUHJvZ3Jh bSBWc3luYyB0aW1pbmcgZm9yIG9kZCBmaWVsZCAqLworCQlpZiAoKChkZV92X2VuZF9ldmVuIC0g MSkgKyAoZW9mX2xpbmVzICsgMSkpID49IGxpbmVzX2YwKSB7CisJCQl2c19ibGluZV9vZGQgPSAo ZGVfdl9lbmRfZXZlbiAtIDEpCisJCQkJCSsgKGVvZl9saW5lcyArIDEpCisJCQkJCS0gbGluZXNf ZjA7CisJCQl2c19lbGluZV9vZGQgPSB2c19ibGluZV9vZGQgKyB2c3luY19saW5lczsKKworCQkJ d3JpdGVsX3JlbGF4ZWQodnNfYmxpbmVfb2RkLAorCQkJCXByaXYtPmlvX2Jhc2UgKyBfUkVHKEVO Q0lfRFZJX1ZTT19CTElORV9PREQpKTsKKworCQkJd3JpdGVsX3JlbGF4ZWQodnNfZWxpbmVfb2Rk LAorCQkJCXByaXYtPmlvX2Jhc2UgKyBfUkVHKEVOQ0lfRFZJX1ZTT19FTElORV9PREQpKTsKKwor CQkJdnNvX2JlZ2luX29kZCAgPSBtb2R1bG8oaHNfYmVnaW4KKwkJCQkJCSsgKHRvdGFsX3BpeGVs c192ZW5jID4+IDEpLAorCQkJCQkJdG90YWxfcGl4ZWxzX3ZlbmMpOworCisJCQl3cml0ZWxfcmVs YXhlZCh2c29fYmVnaW5fb2RkLAorCQkJCXByaXYtPmlvX2Jhc2UgKyBfUkVHKEVOQ0lfRFZJX1ZT T19CRUdJTl9PREQpKTsKKwkJCXdyaXRlbF9yZWxheGVkKHZzb19iZWdpbl9vZGQsCisJCQkJcHJp di0+aW9fYmFzZSArIF9SRUcoRU5DSV9EVklfVlNPX0VORF9PREQpKTsKKwkJfSBlbHNlIHsKKwkJ CXZzX2JsaW5lX2V2biA9IChkZV92X2VuZF9ldmVuIC0gMSkKKwkJCQkJKyAoZW9mX2xpbmVzICsg MSk7CisKKwkJCXdyaXRlbF9yZWxheGVkKHZzX2JsaW5lX2V2biwKKwkJCQlwcml2LT5pb19iYXNl ICsgX1JFRyhFTkNJX0RWSV9WU09fQkxJTkVfRVZOKSk7CisKKwkJCXZzb19iZWdpbl9ldm4gID0g bW9kdWxvKGhzX2JlZ2luCisJCQkJCQkrICh0b3RhbF9waXhlbHNfdmVuYyA+PiAxKSwKKwkJCQkJ CXRvdGFsX3BpeGVsc192ZW5jKTsKKworCQkJd3JpdGVsX3JlbGF4ZWQodnNvX2JlZ2luX2V2biwg cHJpdi0+aW9fYmFzZQorCQkJCQkrIF9SRUcoRU5DSV9EVklfVlNPX0JFR0lOX0VWTikpOworCisJ CQlpZiAodnNfYmxpbmVfZXZuICsgdnN5bmNfbGluZXMgPj0gbGluZXNfZjApIHsKKwkJCQl2c19l bGluZV9vZGQgPSB2c19ibGluZV9ldm4KKwkJCQkJCSsgdnN5bmNfbGluZXMKKwkJCQkJCS0gbGlu ZXNfZjA7CisKKwkJCQl3cml0ZWxfcmVsYXhlZCh2c19lbGluZV9vZGQsIHByaXYtPmlvX2Jhc2UK KwkJCQkJCSsgX1JFRyhFTkNJX0RWSV9WU09fRUxJTkVfT0REKSk7CisKKwkJCQl3cml0ZWxfcmVs YXhlZCh2c29fYmVnaW5fZXZuLCBwcml2LT5pb19iYXNlCisJCQkJCQkrIF9SRUcoRU5DSV9EVklf VlNPX0VORF9PREQpKTsKKwkJCX0gZWxzZSB7CisJCQkJdnNfZWxpbmVfZXZuID0gdnNfYmxpbmVf ZXZuICsgdnN5bmNfbGluZXM7CisKKwkJCQl3cml0ZWxfcmVsYXhlZCh2c19lbGluZV9ldm4sIHBy aXYtPmlvX2Jhc2UKKwkJCQkJCSsgX1JFRyhFTkNJX0RWSV9WU09fRUxJTkVfRVZOKSk7CisKKwkJ CQl3cml0ZWxfcmVsYXhlZCh2c29fYmVnaW5fZXZuLCBwcml2LT5pb19iYXNlCisJCQkJCQkrIF9S RUcoRU5DSV9EVklfVlNPX0VORF9FVk4pKTsKKwkJCX0KKwkJfQorCX0gZWxzZSB7CisJCXdyaXRl bF9yZWxheGVkKHZtb2RlLT5lbmNwLmR2aV9zZXR0aW5ncywKKwkJCQlwcml2LT5pb19iYXNlICsg X1JFRyhWRU5DX0RWSV9TRVRUSU5HKSk7CisJCXdyaXRlbF9yZWxheGVkKHZtb2RlLT5lbmNwLnZp ZGVvX21vZGUsCisJCQkJcHJpdi0+aW9fYmFzZSArIF9SRUcoRU5DUF9WSURFT19NT0RFKSk7CisJ CXdyaXRlbF9yZWxheGVkKHZtb2RlLT5lbmNwLnZpZGVvX21vZGVfYWR2LAorCQkJCXByaXYtPmlv X2Jhc2UgKyBfUkVHKEVOQ1BfVklERU9fTU9ERV9BRFYpKTsKKwkJaWYgKHZtb2RlLT5lbmNwLnZp ZGVvX3Byb2dfbW9kZV9wcmVzZW50KQorCQkJd3JpdGVsX3JlbGF4ZWQodm1vZGUtPmVuY3Audmlk ZW9fcHJvZ19tb2RlLAorCQkJCXByaXYtPmlvX2Jhc2UgKyBfUkVHKFZFTkNfVklERU9fUFJPR19N T0RFKSk7CisJCWlmICh2bW9kZS0+ZW5jcC52aWRlb19zeW5jX21vZGVfcHJlc2VudCkKKwkJCXdy aXRlbF9yZWxheGVkKHZtb2RlLT5lbmNwLnZpZGVvX3N5bmNfbW9kZSwKKwkJCQlwcml2LT5pb19i YXNlICsgX1JFRyhFTkNQX1ZJREVPX1NZTkNfTU9ERSkpOworCQlpZiAodm1vZGUtPmVuY3Audmlk ZW9feWNfZGx5X3ByZXNlbnQpCisJCQl3cml0ZWxfcmVsYXhlZCh2bW9kZS0+ZW5jcC52aWRlb195 Y19kbHksCisJCQkJcHJpdi0+aW9fYmFzZSArIF9SRUcoRU5DUF9WSURFT19ZQ19ETFkpKTsKKwkJ aWYgKHZtb2RlLT5lbmNwLnZpZGVvX3JnYl9jdHJsX3ByZXNlbnQpCisJCQl3cml0ZWxfcmVsYXhl ZCh2bW9kZS0+ZW5jcC52aWRlb19yZ2JfY3RybCwKKwkJCQlwcml2LT5pb19iYXNlICsgX1JFRyhF TkNQX1ZJREVPX1JHQl9DVFJMKSk7CisJCWlmICh2bW9kZS0+ZW5jcC52aWRlb19maWx0X2N0cmxf cHJlc2VudCkKKwkJCXdyaXRlbF9yZWxheGVkKHZtb2RlLT5lbmNwLnZpZGVvX2ZpbHRfY3RybCwK KwkJCQlwcml2LT5pb19iYXNlICsgX1JFRyhFTkNQX1ZJREVPX0ZJTFRfQ1RSTCkpOworCQlpZiAo dm1vZGUtPmVuY3AudmlkZW9fb2ZsZF92b2F2X29mc3RfcHJlc2VudCkKKwkJCXdyaXRlbF9yZWxh eGVkKHZtb2RlLT5lbmNwLnZpZGVvX29mbGRfdm9hdl9vZnN0LAorCQkJCXByaXYtPmlvX2Jhc2UK KwkJCQkrIF9SRUcoRU5DUF9WSURFT19PRkxEX1ZPQVZfT0ZTVCkpOworCQl3cml0ZWxfcmVsYXhl ZCh2bW9kZS0+ZW5jcC55ZnAxX2h0aW1lLAorCQkJCXByaXYtPmlvX2Jhc2UgKyBfUkVHKEVOQ1Bf VklERU9fWUZQMV9IVElNRSkpOworCQl3cml0ZWxfcmVsYXhlZCh2bW9kZS0+ZW5jcC55ZnAyX2h0 aW1lLAorCQkJCXByaXYtPmlvX2Jhc2UgKyBfUkVHKEVOQ1BfVklERU9fWUZQMl9IVElNRSkpOwor CQl3cml0ZWxfcmVsYXhlZCh2bW9kZS0+ZW5jcC5tYXhfcHhjbnQsCisJCQkJcHJpdi0+aW9fYmFz ZSArIF9SRUcoRU5DUF9WSURFT19NQVhfUFhDTlQpKTsKKwkJd3JpdGVsX3JlbGF4ZWQodm1vZGUt PmVuY3AuaHNwdWxzX2JlZ2luLAorCQkJCXByaXYtPmlvX2Jhc2UgKyBfUkVHKEVOQ1BfVklERU9f SFNQVUxTX0JFR0lOKSk7CisJCXdyaXRlbF9yZWxheGVkKHZtb2RlLT5lbmNwLmhzcHVsc19lbmQs CisJCQkJcHJpdi0+aW9fYmFzZSArIF9SRUcoRU5DUF9WSURFT19IU1BVTFNfRU5EKSk7CisJCXdy aXRlbF9yZWxheGVkKHZtb2RlLT5lbmNwLmhzcHVsc19zd2l0Y2gsCisJCQkJcHJpdi0+aW9fYmFz ZSArIF9SRUcoRU5DUF9WSURFT19IU1BVTFNfU1dJVENIKSk7CisJCXdyaXRlbF9yZWxheGVkKHZt b2RlLT5lbmNwLnZzcHVsc19iZWdpbiwKKwkJCQlwcml2LT5pb19iYXNlICsgX1JFRyhFTkNQX1ZJ REVPX1ZTUFVMU19CRUdJTikpOworCQl3cml0ZWxfcmVsYXhlZCh2bW9kZS0+ZW5jcC52c3B1bHNf ZW5kLAorCQkJCXByaXYtPmlvX2Jhc2UgKyBfUkVHKEVOQ1BfVklERU9fVlNQVUxTX0VORCkpOwor CQl3cml0ZWxfcmVsYXhlZCh2bW9kZS0+ZW5jcC52c3B1bHNfYmxpbmUsCisJCQkJcHJpdi0+aW9f YmFzZSArIF9SRUcoRU5DUF9WSURFT19WU1BVTFNfQkxJTkUpKTsKKwkJd3JpdGVsX3JlbGF4ZWQo dm1vZGUtPmVuY3AudnNwdWxzX2VsaW5lLAorCQkJCXByaXYtPmlvX2Jhc2UgKyBfUkVHKEVOQ1Bf VklERU9fVlNQVUxTX0VMSU5FKSk7CisJCWlmICh2bW9kZS0+ZW5jcC5lcXB1bHNfYmVnaW5fcHJl c2VudCkKKwkJCXdyaXRlbF9yZWxheGVkKHZtb2RlLT5lbmNwLmVxcHVsc19iZWdpbiwKKwkJCQlw cml2LT5pb19iYXNlICsgX1JFRyhFTkNQX1ZJREVPX0VRUFVMU19CRUdJTikpOworCQlpZiAodm1v ZGUtPmVuY3AuZXFwdWxzX2VuZF9wcmVzZW50KQorCQkJd3JpdGVsX3JlbGF4ZWQodm1vZGUtPmVu Y3AuZXFwdWxzX2VuZCwKKwkJCQlwcml2LT5pb19iYXNlICsgX1JFRyhFTkNQX1ZJREVPX0VRUFVM U19FTkQpKTsKKwkJaWYgKHZtb2RlLT5lbmNwLmVxcHVsc19ibGluZV9wcmVzZW50KQorCQkJd3Jp dGVsX3JlbGF4ZWQodm1vZGUtPmVuY3AuZXFwdWxzX2JsaW5lLAorCQkJCXByaXYtPmlvX2Jhc2Ug KyBfUkVHKEVOQ1BfVklERU9fRVFQVUxTX0JMSU5FKSk7CisJCWlmICh2bW9kZS0+ZW5jcC5lcXB1 bHNfZWxpbmVfcHJlc2VudCkKKwkJCXdyaXRlbF9yZWxheGVkKHZtb2RlLT5lbmNwLmVxcHVsc19l bGluZSwKKwkJCQlwcml2LT5pb19iYXNlICsgX1JFRyhFTkNQX1ZJREVPX0VRUFVMU19FTElORSkp OworCQl3cml0ZWxfcmVsYXhlZCh2bW9kZS0+ZW5jcC5oYXZvbl9iZWdpbiwKKwkJCQlwcml2LT5p b19iYXNlICsgX1JFRyhFTkNQX1ZJREVPX0hBVk9OX0JFR0lOKSk7CisJCXdyaXRlbF9yZWxheGVk KHZtb2RlLT5lbmNwLmhhdm9uX2VuZCwKKwkJCQlwcml2LT5pb19iYXNlICsgX1JFRyhFTkNQX1ZJ REVPX0hBVk9OX0VORCkpOworCQl3cml0ZWxfcmVsYXhlZCh2bW9kZS0+ZW5jcC52YXZvbl9ibGlu ZSwKKwkJCQlwcml2LT5pb19iYXNlICsgX1JFRyhFTkNQX1ZJREVPX1ZBVk9OX0JMSU5FKSk7CisJ CXdyaXRlbF9yZWxheGVkKHZtb2RlLT5lbmNwLnZhdm9uX2VsaW5lLAorCQkJCXByaXYtPmlvX2Jh c2UgKyBfUkVHKEVOQ1BfVklERU9fVkFWT05fRUxJTkUpKTsKKwkJd3JpdGVsX3JlbGF4ZWQodm1v ZGUtPmVuY3AuaHNvX2JlZ2luLAorCQkJCXByaXYtPmlvX2Jhc2UgKyBfUkVHKEVOQ1BfVklERU9f SFNPX0JFR0lOKSk7CisJCXdyaXRlbF9yZWxheGVkKHZtb2RlLT5lbmNwLmhzb19lbmQsCisJCQkJ cHJpdi0+aW9fYmFzZSArIF9SRUcoRU5DUF9WSURFT19IU09fRU5EKSk7CisJCXdyaXRlbF9yZWxh eGVkKHZtb2RlLT5lbmNwLnZzb19iZWdpbiwKKwkJCQlwcml2LT5pb19iYXNlICsgX1JFRyhFTkNQ X1ZJREVPX1ZTT19CRUdJTikpOworCQl3cml0ZWxfcmVsYXhlZCh2bW9kZS0+ZW5jcC52c29fZW5k LAorCQkJCXByaXYtPmlvX2Jhc2UgKyBfUkVHKEVOQ1BfVklERU9fVlNPX0VORCkpOworCQl3cml0 ZWxfcmVsYXhlZCh2bW9kZS0+ZW5jcC52c29fYmxpbmUsCisJCQkJcHJpdi0+aW9fYmFzZSArIF9S RUcoRU5DUF9WSURFT19WU09fQkxJTkUpKTsKKwkJaWYgKHZtb2RlLT5lbmNwLnZzb19lbGluZV9w cmVzZW50KQorCQkJd3JpdGVsX3JlbGF4ZWQodm1vZGUtPmVuY3AudnNvX2VsaW5lLAorCQkJCXBy aXYtPmlvX2Jhc2UgKyBfUkVHKEVOQ1BfVklERU9fVlNPX0VMSU5FKSk7CisJCWlmICh2bW9kZS0+ ZW5jcC5zeV92YWxfcHJlc2VudCkKKwkJCXdyaXRlbF9yZWxheGVkKHZtb2RlLT5lbmNwLnN5X3Zh bCwKKwkJCQlwcml2LT5pb19iYXNlICsgX1JFRyhFTkNQX1ZJREVPX1NZX1ZBTCkpOworCQlpZiAo dm1vZGUtPmVuY3Auc3kyX3ZhbF9wcmVzZW50KQorCQkJd3JpdGVsX3JlbGF4ZWQodm1vZGUtPmVu Y3Auc3kyX3ZhbCwKKwkJCQlwcml2LT5pb19iYXNlICsgX1JFRyhFTkNQX1ZJREVPX1NZMl9WQUwp KTsKKwkJd3JpdGVsX3JlbGF4ZWQodm1vZGUtPmVuY3AubWF4X2xuY250LAorCQkJCXByaXYtPmlv X2Jhc2UgKyBfUkVHKEVOQ1BfVklERU9fTUFYX0xOQ05UKSk7CisKKwkJd3JpdGVsX3JlbGF4ZWQo MSwgcHJpdi0+aW9fYmFzZSArIF9SRUcoRU5DUF9WSURFT19FTikpOworCisJCS8qIFNldCBERSBz aWduYWzigJlzIHBvbGFyaXR5IGlzIGFjdGl2ZSBoaWdoICovCisJCXdyaXRlbF9iaXRzX3JlbGF4 ZWQoQklUKDE0KSwgQklUKDE0KSwKKwkJCQkgICAgcHJpdi0+aW9fYmFzZSArIF9SRUcoRU5DUF9W SURFT19NT0RFKSk7CisKKwkJLyogUHJvZ3JhbSBERSB0aW1pbmcgKi8KKwkJZGVfaF9iZWdpbiA9 IG1vZHVsbyhyZWFkbF9yZWxheGVkKHByaXYtPmlvX2Jhc2UgKworCQkJCQlfUkVHKEVOQ1BfVklE RU9fSEFWT05fQkVHSU4pKQorCQkJCQkrIHZlbmNfaGRtaV9sYXRlbmN5LAorCQkJCSAgICB0b3Rh bF9waXhlbHNfdmVuYyk7CisJCWRlX2hfZW5kID0gbW9kdWxvKGRlX2hfYmVnaW4gKyBhY3RpdmVf cGl4ZWxzX3ZlbmMsCisJCQkJICB0b3RhbF9waXhlbHNfdmVuYyk7CisKKwkJd3JpdGVsX3JlbGF4 ZWQoZGVfaF9iZWdpbiwKKwkJCQlwcml2LT5pb19iYXNlICsgX1JFRyhFTkNQX0RFX0hfQkVHSU4p KTsKKwkJd3JpdGVsX3JlbGF4ZWQoZGVfaF9lbmQsCisJCQkJcHJpdi0+aW9fYmFzZSArIF9SRUco RU5DUF9ERV9IX0VORCkpOworCisJCS8qIFByb2dyYW0gREUgdGltaW5nIGZvciBldmVuIGZpZWxk ICovCisJCWRlX3ZfYmVnaW5fZXZlbiA9IHJlYWRsX3JlbGF4ZWQocHJpdi0+aW9fYmFzZQorCQkJ CQkJKyBfUkVHKEVOQ1BfVklERU9fVkFWT05fQkxJTkUpKTsKKwkJaWYgKG1vZGUtPmZsYWdzICYg RFJNX01PREVfRkxBR19JTlRFUkxBQ0UpCisJCQlkZV92X2VuZF9ldmVuID0gZGVfdl9iZWdpbl9l dmVuICsKKwkJCQkJKG1vZGUtPnZkaXNwbGF5IC8gMik7CisJCWVsc2UKKwkJCWRlX3ZfZW5kX2V2 ZW4gPSBkZV92X2JlZ2luX2V2ZW4gKyBtb2RlLT52ZGlzcGxheTsKKworCQl3cml0ZWxfcmVsYXhl ZChkZV92X2JlZ2luX2V2ZW4sCisJCQkJcHJpdi0+aW9fYmFzZSArIF9SRUcoRU5DUF9ERV9WX0JF R0lOX0VWRU4pKTsKKwkJd3JpdGVsX3JlbGF4ZWQoZGVfdl9lbmRfZXZlbiwKKwkJCQlwcml2LT5p b19iYXNlICsgX1JFRyhFTkNQX0RFX1ZfRU5EX0VWRU4pKTsKKworCQkvKiBQcm9ncmFtIERFIHRp bWluZyBmb3Igb2RkIGZpZWxkIGlmIG5lZWRlZCAqLworCQlpZiAobW9kZS0+ZmxhZ3MgJiBEUk1f TU9ERV9GTEFHX0lOVEVSTEFDRSkgeworCQkJdW5zaWduZWQgaW50IG9mbGRfdm9hdl9vZnN0ID0K KwkJCQlyZWFkbF9yZWxheGVkKHByaXYtPmlvX2Jhc2UgKworCQkJCQlfUkVHKEVOQ1BfVklERU9f T0ZMRF9WT0FWX09GU1QpKTsKKwkJCWRlX3ZfYmVnaW5fb2RkID0gdG9fc2lnbmVkKChvZmxkX3Zv YXZfb2ZzdCAmIDB4ZjApID4+IDQpCisJCQkJCQkrIGRlX3ZfYmVnaW5fZXZlbgorCQkJCQkJKyAo KG1vZGUtPnZ0b3RhbCAtIDEpIC8gMik7CisJCQlkZV92X2VuZF9vZGQgPSBkZV92X2JlZ2luX29k ZCArIChtb2RlLT52ZGlzcGxheSAvIDIpOworCisJCQl3cml0ZWxfcmVsYXhlZChkZV92X2JlZ2lu X29kZCwKKwkJCQlwcml2LT5pb19iYXNlICsgX1JFRyhFTkNQX0RFX1ZfQkVHSU5fT0REKSk7CisJ CQl3cml0ZWxfcmVsYXhlZChkZV92X2VuZF9vZGQsCisJCQkJcHJpdi0+aW9fYmFzZSArIF9SRUco RU5DUF9ERV9WX0VORF9PREQpKTsKKwkJfQorCisJCS8qIFByb2dyYW0gSHN5bmMgdGltaW5nICov CisJCWlmICgoZGVfaF9lbmQgKyBmcm9udF9wb3JjaF92ZW5jKSA+PSB0b3RhbF9waXhlbHNfdmVu YykgeworCQkJaHNfYmVnaW4gPSBkZV9oX2VuZAorCQkJCSAgICsgZnJvbnRfcG9yY2hfdmVuYwor CQkJCSAgIC0gdG90YWxfcGl4ZWxzX3ZlbmM7CisJCQl2c19hZGp1c3QgID0gMTsKKwkJfSBlbHNl IHsKKwkJCWhzX2JlZ2luID0gZGVfaF9lbmQKKwkJCQkgICArIGZyb250X3BvcmNoX3ZlbmM7CisJ CQl2c19hZGp1c3QgID0gMDsKKwkJfQorCisJCWhzX2VuZCA9IG1vZHVsbyhoc19iZWdpbiArIGhz eW5jX3BpeGVsc192ZW5jLAorCQkJCXRvdGFsX3BpeGVsc192ZW5jKTsKKworCQl3cml0ZWxfcmVs YXhlZChoc19iZWdpbiwKKwkJCQlwcml2LT5pb19iYXNlICsgX1JFRyhFTkNQX0RWSV9IU09fQkVH SU4pKTsKKwkJd3JpdGVsX3JlbGF4ZWQoaHNfZW5kLAorCQkJCXByaXYtPmlvX2Jhc2UgKyBfUkVH KEVOQ1BfRFZJX0hTT19FTkQpKTsKKworCQkvKiBQcm9ncmFtIFZzeW5jIHRpbWluZyBmb3IgZXZl biBmaWVsZCAqLworCQlpZiAoZGVfdl9iZWdpbl9ldmVuID49CisJCQkJKHNvZl9saW5lcyArIHZz eW5jX2xpbmVzICsgKDEgLSB2c19hZGp1c3QpKSkKKwkJCXZzX2JsaW5lX2V2biA9IGRlX3ZfYmVn aW5fZXZlbgorCQkJCQktIHNvZl9saW5lcworCQkJCQktIHZzeW5jX2xpbmVzCisJCQkJCS0gKDEg LSB2c19hZGp1c3QpOworCQllbHNlCisJCQl2c19ibGluZV9ldm4gPSBtb2RlLT52dG90YWwKKwkJ CQkJKyBkZV92X2JlZ2luX2V2ZW4KKwkJCQkJLSBzb2ZfbGluZXMKKwkJCQkJLSB2c3luY19saW5l cworCQkJCQktICgxIC0gdnNfYWRqdXN0KTsKKworCQl2c19lbGluZV9ldm4gPSBtb2R1bG8odnNf YmxpbmVfZXZuICsgdnN5bmNfbGluZXMsCisJCQkJCW1vZGUtPnZ0b3RhbCk7CisKKwkJd3JpdGVs X3JlbGF4ZWQodnNfYmxpbmVfZXZuLAorCQkJCXByaXYtPmlvX2Jhc2UgKyBfUkVHKEVOQ1BfRFZJ X1ZTT19CTElORV9FVk4pKTsKKwkJd3JpdGVsX3JlbGF4ZWQodnNfZWxpbmVfZXZuLAorCQkJCXBy aXYtPmlvX2Jhc2UgKyBfUkVHKEVOQ1BfRFZJX1ZTT19FTElORV9FVk4pKTsKKworCQl2c29fYmVn aW5fZXZuID0gaHNfYmVnaW47CisJCXdyaXRlbF9yZWxheGVkKHZzb19iZWdpbl9ldm4sCisJCQkJ cHJpdi0+aW9fYmFzZSArIF9SRUcoRU5DUF9EVklfVlNPX0JFR0lOX0VWTikpOworCQl3cml0ZWxf cmVsYXhlZCh2c29fYmVnaW5fZXZuLAorCQkJCXByaXYtPmlvX2Jhc2UgKyBfUkVHKEVOQ1BfRFZJ X1ZTT19FTkRfRVZOKSk7CisKKwkJLyogUHJvZ3JhbSBWc3luYyB0aW1pbmcgZm9yIG9kZCBmaWVs ZCBpZiBuZWVkZWQgKi8KKwkJaWYgKG1vZGUtPmZsYWdzICYgRFJNX01PREVfRkxBR19JTlRFUkxB Q0UpIHsKKwkJCXZzX2JsaW5lX29kZCA9IChkZV92X2JlZ2luX29kZCAtIDEpCisJCQkJCS0gc29m X2xpbmVzCisJCQkJCS0gdnN5bmNfbGluZXM7CisJCQl2c19lbGluZV9vZGQgPSAoZGVfdl9iZWdp bl9vZGQgLSAxKQorCQkJCQktIHZzeW5jX2xpbmVzOworCQkJdnNvX2JlZ2luX29kZCAgPSBtb2R1 bG8oaHNfYmVnaW4KKwkJCQkJCSsgKHRvdGFsX3BpeGVsc192ZW5jID4+IDEpLAorCQkJCQkJdG90 YWxfcGl4ZWxzX3ZlbmMpOworCisJCQl3cml0ZWxfcmVsYXhlZCh2c19ibGluZV9vZGQsCisJCQkJ cHJpdi0+aW9fYmFzZSArIF9SRUcoRU5DUF9EVklfVlNPX0JMSU5FX09ERCkpOworCQkJd3JpdGVs X3JlbGF4ZWQodnNfZWxpbmVfb2RkLAorCQkJCXByaXYtPmlvX2Jhc2UgKyBfUkVHKEVOQ1BfRFZJ X1ZTT19FTElORV9PREQpKTsKKwkJCXdyaXRlbF9yZWxheGVkKHZzb19iZWdpbl9vZGQsCisJCQkJ cHJpdi0+aW9fYmFzZSArIF9SRUcoRU5DUF9EVklfVlNPX0JFR0lOX09ERCkpOworCQkJd3JpdGVs X3JlbGF4ZWQodnNvX2JlZ2luX29kZCwKKwkJCQlwcml2LT5pb19iYXNlICsgX1JFRyhFTkNQX0RW SV9WU09fRU5EX09ERCkpOworCQl9CisKKwkJLyogU2VsZWN0IEVOQ1AgZm9yIFZJVSAqLworCQlt ZXNvbl92cHBfc2V0dXBfbXV4KHByaXYsIE1FU09OX1ZJVV9WUFBfTVVYX0VOQ1ApOworCX0KKwor CXdyaXRlbF9yZWxheGVkKCh1c2VfZW5jaSA/IDEgOiAyKSB8CisJCSAgICAgICAobW9kZS0+Zmxh Z3MgJiBEUk1fTU9ERV9GTEFHX1BIU1lOQyA/IDEgPDwgMiA6IDApIHwKKwkJICAgICAgIChtb2Rl LT5mbGFncyAmIERSTV9NT0RFX0ZMQUdfUFZTWU5DID8gMSA8PCAzIDogMCkgfAorCQkgICAgICAg NCA8PCA1IHwKKwkJICAgICAgICh2ZW5jX3JlcGVhdCA/IDEgPDwgOCA6IDApIHwKKwkJICAgICAg IChoZG1pX3JlcGVhdCA/IDEgPDwgMTIgOiAwKSwKKwkJICAgICAgIHByaXYtPmlvX2Jhc2UgKyBf UkVHKFZQVV9IRE1JX1NFVFRJTkcpKTsKKworCXByaXYtPnZlbmMuaGRtaV9yZXBlYXQgPSBoZG1p X3JlcGVhdDsKKwlwcml2LT52ZW5jLnZlbmNfcmVwZWF0ID0gdmVuY19yZXBlYXQ7CisJcHJpdi0+ dmVuYy5oZG1pX3VzZV9lbmNpID0gdXNlX2VuY2k7CisKKwlwcml2LT52ZW5jLmN1cnJlbnRfbW9k ZSA9IE1FU09OX1ZFTkNfTU9ERV9IRE1JOworfQorRVhQT1JUX1NZTUJPTF9HUEwobWVzb25fdmVu Y19oZG1pX21vZGVfc2V0KTsKKwogdm9pZCBtZXNvbl92ZW5jaV9jdmJzX21vZGVfc2V0KHN0cnVj dCBtZXNvbl9kcm0gKnByaXYsCiAJCQkgICAgICAgc3RydWN0IG1lc29uX2N2YnNfZW5jaV9tb2Rl ICptb2RlKQogewpAQCAtMjIzLDkgKzE0NjEsNiBAQCB2b2lkIG1lc29uX3ZlbmNpX2N2YnNfbW9k ZV9zZXQoc3RydWN0IG1lc29uX2RybSAqcHJpdiwKIAl3cml0ZWxfcmVsYXhlZChtb2RlLT5hbmFs b2dfc3luY19hZGosCiAJCQlwcml2LT5pb19iYXNlICsgX1JFRyhFTkNJX1NZTkNfQURKKSk7CiAK LQkvKiBTZXR1cCAyN01IeiB2Y2xrMiBmb3IgRU5DSSBhbmQgVkRBQyAqLwotCW1lc29uX3ZjbGtf c2V0dXAocHJpdiwgTUVTT05fVkNMS19UQVJHRVRfQ1ZCUywgTUVTT05fVkNMS19DVkJTKTsKLQog CXByaXYtPnZlbmMuY3VycmVudF9tb2RlID0gbW9kZS0+bW9kZV90YWc7CiB9CiAKZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9tZXNvbi9tZXNvbl92ZW5jLmggYi9kcml2ZXJzL2dwdS9kcm0v bWVzb24vbWVzb25fdmVuYy5oCmluZGV4IDc3ZDRhN2QuLmExYjk2ZTggMTAwNjQ0Ci0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9tZXNvbi9tZXNvbl92ZW5jLmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL21l c29uL21lc29uX3ZlbmMuaApAQCAtMzAsNiArMzAsNyBAQCBlbnVtIHsKIAlNRVNPTl9WRU5DX01P REVfTk9ORSA9IDAsCiAJTUVTT05fVkVOQ19NT0RFX0NWQlNfUEFMLAogCU1FU09OX1ZFTkNfTU9E RV9DVkJTX05UU0MsCisJTUVTT05fVkVOQ19NT0RFX0hETUksCiB9OwogCiBzdHJ1Y3QgbWVzb25f Y3Zic19lbmNpX21vZGUgewpAQCAtNTYsMTIgKzU3LDE4IEBAIHN0cnVjdCBtZXNvbl9jdmJzX2Vu Y2lfbW9kZSB7CiAJdW5zaWduZWQgaW50IGFuYWxvZ19zeW5jX2FkajsKIH07CiAKKy8qIEhETUkg Q2xvY2sgcGFyYW1ldGVycyAqLworYm9vbCBtZXNvbl92ZW5jX2hkbWlfc3VwcG9ydGVkX3ZpYyhp bnQgdmljKTsKK2Jvb2wgbWVzb25fdmVuY19oZG1pX3ZlbmNfcmVwZWF0KGludCB2aWMpOworCiAv KiBDVkJTIFRpbWluZ3MgYW5kIFBhcmFtZXRlcnMgKi8KIGV4dGVybiBzdHJ1Y3QgbWVzb25fY3Zi c19lbmNpX21vZGUgbWVzb25fY3Zic19lbmNpX3BhbDsKIGV4dGVybiBzdHJ1Y3QgbWVzb25fY3Zi c19lbmNpX21vZGUgbWVzb25fY3Zic19lbmNpX250c2M7CiAKIHZvaWQgbWVzb25fdmVuY2lfY3Zi c19tb2RlX3NldChzdHJ1Y3QgbWVzb25fZHJtICpwcml2LAogCQkJICAgICAgIHN0cnVjdCBtZXNv bl9jdmJzX2VuY2lfbW9kZSAqbW9kZSk7Cit2b2lkIG1lc29uX3ZlbmNfaGRtaV9tb2RlX3NldChz dHJ1Y3QgbWVzb25fZHJtICpwcml2LCBpbnQgdmljLAorCQkJICAgICAgc3RydWN0IGRybV9kaXNw bGF5X21vZGUgKm1vZGUpOwogdW5zaWduZWQgaW50IG1lc29uX3ZlbmNpX2dldF9maWVsZChzdHJ1 Y3QgbWVzb25fZHJtICpwcml2KTsKIAogdm9pZCBtZXNvbl92ZW5jX2VuYWJsZV92c3luYyhzdHJ1 Y3QgbWVzb25fZHJtICpwcml2KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tZXNvbi9t ZXNvbl92cHAuaCBiL2RyaXZlcnMvZ3B1L2RybS9tZXNvbi9tZXNvbl92cHAuaAppbmRleCBlZGUz YjI2Li44MTUxNzdjIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vbWVzb24vbWVzb25fdnBw LmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL21lc29uL21lc29uX3ZwcC5oCkBAIC0yMyw2ICsyMyw4 IEBACiAKIC8qIE11eCBWSVUvVlBQIHRvIEVOQ0kgKi8KICNkZWZpbmUgTUVTT05fVklVX1ZQUF9N VVhfRU5DSQkweDUKKy8qIE11eCBWSVUvVlBQIHRvIEVOQ1AgKi8KKyNkZWZpbmUgTUVTT05fVklV X1ZQUF9NVVhfRU5DUAkweEEKIAogdm9pZCBtZXNvbl92cHBfc2V0dXBfbXV4KHN0cnVjdCBtZXNv bl9kcm0gKnByaXYsIHVuc2lnbmVkIGludCBtdXgpOwogCi0tIAoxLjkuMQoKX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlz dApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0 b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCg==