Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1vabHO-00AjEE-2Q for pgsql-hackers@arkaria.postgresql.org; Tue, 30 Dec 2025 15:05:00 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vabHN-004HeM-2D for pgsql-hackers@arkaria.postgresql.org; Tue, 30 Dec 2025 15:04:58 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1vabHM-004HeD-2S for pgsql-hackers@lists.postgresql.org; Tue, 30 Dec 2025 15:04:58 +0000 Received: from mail-pf1-x42e.google.com ([2607:f8b0:4864:20::42e]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1vabHI-003M2u-0R for pgsql-hackers@postgresql.org; Tue, 30 Dec 2025 15:04:56 +0000 Received: by mail-pf1-x42e.google.com with SMTP id d2e1a72fcca58-7ba55660769so7788850b3a.1 for ; Tue, 30 Dec 2025 07:04:51 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1767107091; x=1767711891; darn=postgresql.org; h=in-reply-to:references:to:from:subject:cc:message-id:date :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=OexV13SL6ijQATW4OebNYvlccuGlhYuN1OyhvgZyDaY=; b=fhN3FKS4mFM6ZtGFivExu9dImwPWEn/1eqDqAv8rsWC/K55q1/T7IMJkhevtI7ZQts ciZHac7NDNH1CxcOt1RPYJa+m9Z1JJRm7aMsOoe1GPab8tyf8LFlgPJQfxVhPBx3Xj0k ws0B8GdYl3n9W6erji2XVwH6JjftQ6msLQeaj58i6JIDyKMradeM5k48sDDNNaph1bE5 B4MZtVrCC6KmkhxDlOjkVOZRtxPHFjH1E7OAqy+ywvoP4ywjd058E2vZeXHmaf4I6Hur Jccknu865sCyW2TkUgpmRxmRMcxDbGQbTdO0G/IgEZcdu97mtNk0jIUes0BTBnKVTKK5 irOw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1767107091; x=1767711891; h=in-reply-to:references:to:from:subject:cc:message-id:date :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=OexV13SL6ijQATW4OebNYvlccuGlhYuN1OyhvgZyDaY=; b=rb26sTUxBRr5dhxb763Ul/YYdjLkZxnTmsW4mfJiX72zg4Ks2AFwZp0kUcaoh5QMsc A/ICIVPNamqwYZhsZVI6S8h8JTSZgebDInVT1wwNYkVEStm5vdAUvdU+F6WtcSnBqDBm joA/zw2aAa5xX7R7rsTCk0AHovSIyrAx25qeiYz1CIH97PN9POEwERZehnIcCxYVKdgz ngJxyEMe2EQJor8T8ATSSu7Byba0epjUY3z4s3r3PTDq4okmneDLe/2pJV8rW3Dt2IFU xKlcJqOhQllNzzBxF69PUMzg10EpIVy4/t6IYvgarVrE+c0HymPoWtMfyr+xfmKp1PYR HajA== X-Forwarded-Encrypted: i=1; AJvYcCUYx1P+qFqpMDzkCUinkgYE3nSavRMCL4YcH/CPo5vOyb/qPQgNuYKrFWLEhpTybn0T4h9nWA8NQpNoKf0Z@postgresql.org X-Gm-Message-State: AOJu0YwCYJtVkGzsSIe2nacHj+N9wy5gdi6ITKFw34Ig8KS6w80pUeyI i1orgmmxsKwLz0drnb/zCZkwFJFq1SOTi9i7VEj6fU6iMBH9VYCgrb1d X-Gm-Gg: AY/fxX4AodzyZVd30V7N4Z4BbuJlYiDzjjQd7cVHwlmEw+5dd4fdi+yR46RdHmRszDc xNoApiYUtXW/0/3XOhedDgDR5uA2V9CaVN7mayMCdLMWvdVtchx4G5TPqGElpe3uGT44yT+upRZ UNPkznyEwGJ8F2hPB09QFOYlKqhlnr5u+d9pwiWY1V4OlsjENEu6eJVTS3XghnsV8FAjGAcI60U MoYYFyD2wJ0kQrLc5Moc35COI9U+ZLqdSTxhn6MzdoqLWEWevv31nX5/J82VhgjrqcaXdQPlVCJ 91nOq6SC1m3SVQ+3F5FHDplcHStxUgfUPrUAKDF1VhhHwK7T1oAZ0aLF+d5n8jJGm4D/p6qhx36 4pyFkUs4RuQP+roxFIwOK3COg4VAkcEx45wXmx3Xh/rkiypLF4oDE1oANiyX+IDtFtHY6Z5Biu2 Ybg7aPq9zPz80LQTHijpPGgx1jaW7MXSTf X-Google-Smtp-Source: AGHT+IG4V/4Wi7t8b1/5hOk9nemWnSQgnXkH4tpj63E1LjFPkBcXXwKhFHmamuuvVSVOXvB+/JQgAw== X-Received: by 2002:a05:701b:230a:b0:11b:9386:8254 with SMTP id a92af1059eb24-121722ec414mr31622492c88.41.1767107090320; Tue, 30 Dec 2025 07:04:50 -0800 (PST) Received: from localhost ([2804:14d:328a:a59c:b462:a9bf:21d4:109]) by smtp.gmail.com with ESMTPSA id a92af1059eb24-121724de25dsm95938685c88.7.2025.12.30.07.04.47 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 30 Dec 2025 07:04:49 -0800 (PST) Content-Type: multipart/mixed; boundary=e147d251f115bb34b72810d838043cc88f341e4e2ed82c30478cd353a0b1 Mime-Version: 1.0 Date: Tue, 30 Dec 2025 12:04:45 -0300 Message-Id: Cc: "Alena Rybakina" , "Pgsql Hackers" Subject: Re: Asynchronous MergeAppend From: "Matheus Alcantara" To: "Alexander Pyhalov" , "Matheus Alcantara" X-Mailer: aerc 0.21.0 References: <59be194c5a409fb9fc9f2031581b8a44@postgrespro.ru> <764dd8b8-6374-4f5a-aac7-d8e3f6ebe5fd@postgrespro.ru> <159b591411bb2c81332018927acbd509@postgrespro.ru> <2fb1d9923b6995492e7b163e6cb95402@postgrespro.ru> In-Reply-To: List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --e147d251f115bb34b72810d838043cc88f341e4e2ed82c30478cd353a0b1 Content-Type: multipart/alternative; boundary=7e63de9a9c35b546d05e9f5ddeeb3cef1d236f4af94eaa336dfd6fc5ac47 --7e63de9a9c35b546d05e9f5ddeeb3cef1d236f4af94eaa336dfd6fc5ac47 Content-Transfer-Encoding: quoted-printable Content-Disposition: inline Content-Type: text/plain; charset=UTF-8 On Tue Dec 30, 2025 at 10:15 AM -03, Alexander Pyhalov wrote: > Looks good. What do you think about classify_matching_subplans_common()?= =20 > Should it stay where it is or should we hide it to > src/include/executor/execAppend.h ? > Yeah, sounds better to me to move classify_matching_subplans_common to execAppend.h since it very specific for the MergeAppend and Append execution. I've declared the function as static inline on execAppend.h but I'm not sure if it's the best approach. I've also wrote a proper commit message for this new version. -- Matheus Alcantara EDB: https://www.enterprisedb.com --7e63de9a9c35b546d05e9f5ddeeb3cef1d236f4af94eaa336dfd6fc5ac47-- --e147d251f115bb34b72810d838043cc88f341e4e2ed82c30478cd353a0b1 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=v12-0001-mark_async_capable-subpath-should-match-subplan.patch Content-Type: text/plain; charset=utf-8; name=v12-0001-mark_async_capable-subpath-should-match-subplan.patch RnJvbSAxNGE1MWUyM2E1MDZkYzdkNDEyZGM3MTMwYzI2YjY3OWZlZDUyMGI5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGV4YW5kZXIgUHloYWxvdiA8YS5weWhhbG92QHBvc3RncmVz cHJvLnJ1PgpEYXRlOiBTYXQsIDE1IE5vdiAyMDI1IDEwOjE2OjI1ICswMzAwClN1YmplY3Q6IFtQ QVRDSCB2MTIgMS8zXSBtYXJrX2FzeW5jX2NhcGFibGUoKTogc3VicGF0aCBzaG91bGQgbWF0Y2gg c3VicGxhbgoKbWFya19hc3luY19jYXBhYmxlKCkgYmVsaWV2ZXMgdGhhdCBwYXRoIGNvcnJlc3Bv bmRzIHRvIHBsYW4uIFRoaXMgaXMKbm90IHRydWUgd2hlbiBjcmVhdGVfW21lcmdlX11hcHBlbmRf cGxhbigpIGluc2VydHMgc29ydCBub2RlLiBJbgp0aGlzIGNhc2UgbWFya19hc3luY19jYXBhYmxl KCkgY2FuIHRyZWF0IFNvcnQgcGxhbiBub2RlIGFzIHNvbWUKb3RoZXIgYW5kIGNyYXNoLiBGaXgg dGhpcyBieSBoYW5kbGluZyB0aGUgU29ydCBub2RlIHNlcGFyYXRlbHkuCgpUaGlzIGlzIG5lZWRl ZCB0byBtYWtlIE1lcmdlQXBwZW5kIG5vZGUgYXN5bmMtY2FwYWJsZSB0aGF0IHdpbGwKYmUgaW1w bGVtZW50ZWQgaW4gYSBuZXh0IGNvbW1pdC4KLS0tCiBzcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxh bi9jcmVhdGVwbGFuLmMgfCAxOCArKysrKysrKysrLS0tLS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCAx MCBpbnNlcnRpb25zKCspLCA4IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L29wdGltaXplci9wbGFuL2NyZWF0ZXBsYW4uYyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFu L2NyZWF0ZXBsYW4uYwppbmRleCBmMWEwMWNmYzU0NC4uMDVmYWM2OTM5ODkgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL2NyZWF0ZXBsYW4uYworKysgYi9zcmMvYmFja2Vu ZC9vcHRpbWl6ZXIvcGxhbi9jcmVhdGVwbGFuLmMKQEAgLTExMzksMTAgKzExMzksMTIgQEAgbWFy a19hc3luY19jYXBhYmxlX3BsYW4oUGxhbiAqcGxhbiwgUGF0aCAqcGF0aCkKIAkJCQlTdWJxdWVy eVNjYW4gKnNjYW5fcGxhbiA9IChTdWJxdWVyeVNjYW4gKikgcGxhbjsKIAogCQkJCS8qCi0JCQkJ ICogSWYgdGhlIGdlbmVyYXRlZCBwbGFuIG5vZGUgaW5jbHVkZXMgYSBnYXRpbmcgUmVzdWx0IG5v ZGUsCi0JCQkJICogd2UgY2FuJ3QgZXhlY3V0ZSBpdCBhc3luY2hyb25vdXNseS4KKwkJCQkgKiBD aGVjayB0aGF0IHBsYW4gaXMgcmVhbGx5IGEgU3VicXVlcnlTY2FuIGJlZm9yZSB1c2luZyBpdC4K KwkJCQkgKiBJdCBjYW4gYmUgbm90IHRydWUsIGlmIHRoZSBnZW5lcmF0ZWQgcGxhbiBub2RlIGlu Y2x1ZGVzIGEKKwkJCQkgKiBnYXRpbmcgUmVzdWx0IG5vZGUgb3IgYSBTb3J0IG5vZGUuIEluIHN1 Y2ggY2FzZSB3ZSBjYW4ndAorCQkJCSAqIGV4ZWN1dGUgaXQgYXN5bmNocm9ub3VzbHkuCiAJCQkJ ICovCi0JCQkJaWYgKElzQShwbGFuLCBSZXN1bHQpKQorCQkJCWlmICghSXNBKHBsYW4sIFN1YnF1 ZXJ5U2NhbikpCiAJCQkJCXJldHVybiBmYWxzZTsKIAogCQkJCS8qCkBAIC0xMTYwLDEwICsxMTYy LDEwIEBAIG1hcmtfYXN5bmNfY2FwYWJsZV9wbGFuKFBsYW4gKnBsYW4sIFBhdGggKnBhdGgpCiAJ CQkJRmR3Um91dGluZSAqZmR3cm91dGluZSA9IHBhdGgtPnBhcmVudC0+ZmR3cm91dGluZTsKIAog CQkJCS8qCi0JCQkJICogSWYgdGhlIGdlbmVyYXRlZCBwbGFuIG5vZGUgaW5jbHVkZXMgYSBnYXRp bmcgUmVzdWx0IG5vZGUsCi0JCQkJICogd2UgY2FuJ3QgZXhlY3V0ZSBpdCBhc3luY2hyb25vdXNs eS4KKwkJCQkgKiBJZiB0aGUgZ2VuZXJhdGVkIHBsYW4gbm9kZSBpbmNsdWRlcyBhIGdhdGluZyBS ZXN1bHQgbm9kZSBvcgorCQkJCSAqIGEgU29ydCBub2RlLCB3ZSBjYW4ndCBleGVjdXRlIGl0IGFz eW5jaHJvbm91c2x5LgogCQkJCSAqLwotCQkJCWlmIChJc0EocGxhbiwgUmVzdWx0KSkKKwkJCQlp ZiAoSXNBKHBsYW4sIFJlc3VsdCkgfHwgSXNBKHBsYW4sIFNvcnQpKQogCQkJCQlyZXR1cm4gZmFs c2U7CiAKIAkJCQlBc3NlcnQoZmR3cm91dGluZSAhPSBOVUxMKTsKQEAgLTExNzYsOSArMTE3OCw5 IEBAIG1hcmtfYXN5bmNfY2FwYWJsZV9wbGFuKFBsYW4gKnBsYW4sIFBhdGggKnBhdGgpCiAKIAkJ CS8qCiAJCQkgKiBJZiB0aGUgZ2VuZXJhdGVkIHBsYW4gbm9kZSBpbmNsdWRlcyBhIFJlc3VsdCBu b2RlIGZvciB0aGUKLQkJCSAqIHByb2plY3Rpb24sIHdlIGNhbid0IGV4ZWN1dGUgaXQgYXN5bmNo cm9ub3VzbHkuCisJCQkgKiBwcm9qZWN0aW9uIG9yIGEgU29ydCBub2RlLCB3ZSBjYW4ndCBleGVj dXRlIGl0IGFzeW5jaHJvbm91c2x5LgogCQkJICovCi0JCQlpZiAoSXNBKHBsYW4sIFJlc3VsdCkp CisJCQlpZiAoSXNBKHBsYW4sIFJlc3VsdCkgfHwgSXNBKHBsYW4sIFNvcnQpKQogCQkJCXJldHVy biBmYWxzZTsKIAogCQkJLyoKLS0gCjIuNTEuMgoK --e147d251f115bb34b72810d838043cc88f341e4e2ed82c30478cd353a0b1 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=v12-0002-MergeAppend-should-support-Async-Foreign-Scan-su.patch Content-Type: text/plain; charset=utf-8; name=v12-0002-MergeAppend-should-support-Async-Foreign-Scan-su.patch RnJvbSBjMTMxODBmMTg2YTkyNGQzZWM2OTg3ZWE4YzE0ZWViNjFiYWIxMGQ3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGV4YW5kZXIgUHloYWxvdiA8YS5weWhhbG92QHBvc3RncmVz cHJvLnJ1PgpEYXRlOiBTYXQsIDE1IE5vdiAyMDI1IDEwOjIzOjQ3ICswMzAwClN1YmplY3Q6IFtQ QVRDSCB2MTIgMi8zXSBNZXJnZUFwcGVuZCBzaG91bGQgc3VwcG9ydCBBc3luYyBGb3JlaWduIFNj YW4KIHN1YnBsYW5zCgotLS0KIC4uLi9wb3N0Z3Jlc19mZHcvZXhwZWN0ZWQvcG9zdGdyZXNfZmR3 Lm91dCAgICB8IDI4OCArKysrKysrKysrKwogY29udHJpYi9wb3N0Z3Jlc19mZHcvcG9zdGdyZXNf ZmR3LmMgICAgICAgICAgIHwgIDEwICstCiBjb250cmliL3Bvc3RncmVzX2Zkdy9zcWwvcG9zdGdy ZXNfZmR3LnNxbCAgICAgfCAgODcgKysrKwogZG9jL3NyYy9zZ21sL2NvbmZpZy5zZ21sICAgICAg ICAgICAgICAgICAgICAgIHwgIDE0ICsKIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNBc3luYy5j ICAgICAgICAgICAgICB8ICAgNCArCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQXBwZW5kLmMg ICAgICAgICAgICAgfCAgMjQgKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNZXJnZUFwcGVu ZC5jICAgICAgICB8IDQ3MSArKysrKysrKysrKysrKysrKy0KIHNyYy9iYWNrZW5kL29wdGltaXpl ci9wYXRoL2Nvc3RzaXplLmMgICAgICAgICB8ICAgMSArCiBzcmMvYmFja2VuZC9vcHRpbWl6ZXIv cGxhbi9jcmVhdGVwbGFuLmMgICAgICAgfCAgIDkgKwogc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9n dWNfcGFyYW1ldGVycy5kYXQgICAgIHwgICA4ICsKIHNyYy9iYWNrZW5kL3V0aWxzL21pc2MvcG9z dGdyZXNxbC5jb25mLnNhbXBsZSB8ICAgMSArCiBzcmMvaW5jbHVkZS9leGVjdXRvci9ub2RlTWVy Z2VBcHBlbmQuaCAgICAgICAgfCAgIDEgKwogc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmgg ICAgICAgICAgICAgICAgIHwgIDU5ICsrKwogc3JjL2luY2x1ZGUvb3B0aW1pemVyL2Nvc3QuaCAg ICAgICAgICAgICAgICAgIHwgICAxICsKIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvc3lzdmll d3Mub3V0ICAgICAgICB8ICAgMyArLQogMTUgZmlsZXMgY2hhbmdlZCwgOTUxIGluc2VydGlvbnMo KyksIDMwIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2NvbnRyaWIvcG9zdGdyZXNfZmR3L2V4 cGVjdGVkL3Bvc3RncmVzX2Zkdy5vdXQgYi9jb250cmliL3Bvc3RncmVzX2Zkdy9leHBlY3RlZC9w b3N0Z3Jlc19mZHcub3V0CmluZGV4IDYwNjY1MTBjN2MwLi4xYjM1OTkwYjRjMCAxMDA2NDQKLS0t IGEvY29udHJpYi9wb3N0Z3Jlc19mZHcvZXhwZWN0ZWQvcG9zdGdyZXNfZmR3Lm91dAorKysgYi9j b250cmliL3Bvc3RncmVzX2Zkdy9leHBlY3RlZC9wb3N0Z3Jlc19mZHcub3V0CkBAIC0xMTU1Niw2 ICsxMTU1Niw0NiBAQCBTRUxFQ1QgKiBGUk9NIHJlc3VsdF90YmwgT1JERVIgQlkgYTsKICgyIHJv d3MpCiAKIERFTEVURSBGUk9NIHJlc3VsdF90Ymw7CistLSBUZXN0IE1lcmdlIEFwcGVuZAorRVhQ TEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKQorU0VMRUNUICogRlJPTSBhc3luY19wdCBXSEVSRSBi ICUgMTAwID0gMCBPUkRFUiBCWSBiLCBhOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBN ZXJnZSBBcHBlbmQKKyAgIFNvcnQgS2V5OiBhc3luY19wdC5iLCBhc3luY19wdC5hCisgICAtPiAg QXN5bmMgRm9yZWlnbiBTY2FuIG9uIHB1YmxpYy5hc3luY19wMSBhc3luY19wdF8xCisgICAgICAg ICBPdXRwdXQ6IGFzeW5jX3B0XzEuYSwgYXN5bmNfcHRfMS5iLCBhc3luY19wdF8xLmMKKyAgICAg ICAgIFJlbW90ZSBTUUw6IFNFTEVDVCBhLCBiLCBjIEZST00gcHVibGljLmJhc2VfdGJsMSBXSEVS RSAoKChiICUgMTAwKSA9IDApKSBPUkRFUiBCWSBiIEFTQyBOVUxMUyBMQVNULCBhIEFTQyBOVUxM UyBMQVNUCisgICAtPiAgQXN5bmMgRm9yZWlnbiBTY2FuIG9uIHB1YmxpYy5hc3luY19wMiBhc3lu Y19wdF8yCisgICAgICAgICBPdXRwdXQ6IGFzeW5jX3B0XzIuYSwgYXN5bmNfcHRfMi5iLCBhc3lu Y19wdF8yLmMKKyAgICAgICAgIFJlbW90ZSBTUUw6IFNFTEVDVCBhLCBiLCBjIEZST00gcHVibGlj LmJhc2VfdGJsMiBXSEVSRSAoKChiICUgMTAwKSA9IDApKSBPUkRFUiBCWSBiIEFTQyBOVUxMUyBM QVNULCBhIEFTQyBOVUxMUyBMQVNUCisoOCByb3dzKQorCitTRUxFQ1QgKiBGUk9NIGFzeW5jX3B0 IFdIRVJFIGIgJSAxMDAgPSAwIE9SREVSIEJZIGIsIGE7CisgIGEgICB8ICBiICB8ICBjICAgCist LS0tLS0rLS0tLS0rLS0tLS0tCisgMTAwMCB8ICAgMCB8IDAwMDAKKyAyMDAwIHwgICAwIHwgMDAw MAorIDExMDAgfCAxMDAgfCAwMTAwCisgMjEwMCB8IDEwMCB8IDAxMDAKKyAxMjAwIHwgMjAwIHwg MDIwMAorIDIyMDAgfCAyMDAgfCAwMjAwCisgMTMwMCB8IDMwMCB8IDAzMDAKKyAyMzAwIHwgMzAw IHwgMDMwMAorIDE0MDAgfCA0MDAgfCAwNDAwCisgMjQwMCB8IDQwMCB8IDA0MDAKKyAxNTAwIHwg NTAwIHwgMDUwMAorIDI1MDAgfCA1MDAgfCAwNTAwCisgMTYwMCB8IDYwMCB8IDA2MDAKKyAyNjAw IHwgNjAwIHwgMDYwMAorIDE3MDAgfCA3MDAgfCAwNzAwCisgMjcwMCB8IDcwMCB8IDA3MDAKKyAx ODAwIHwgODAwIHwgMDgwMAorIDI4MDAgfCA4MDAgfCAwODAwCisgMTkwMCB8IDkwMCB8IDA5MDAK KyAyOTAwIHwgOTAwIHwgMDkwMAorKDIwIHJvd3MpCisKIC0tIFRlc3QgZXJyb3IgaGFuZGxpbmcs IGlmIGFjY2Vzc2luZyBvbmUgb2YgdGhlIGZvcmVpZ24gcGFydGl0aW9ucyBlcnJvcnMgb3V0CiBD UkVBVEUgRk9SRUlHTiBUQUJMRSBhc3luY19wX2Jyb2tlbiBQQVJUSVRJT04gT0YgYXN5bmNfcHQg Rk9SIFZBTFVFUyBGUk9NICgxMDAwMCkgVE8gKDEwMDAxKQogICBTRVJWRVIgbG9vcGJhY2sgT1BU SU9OUyAodGFibGVfbmFtZSAnbm9uX2V4aXN0ZW50X3RhYmxlJyk7CkBAIC0xMTYwNCw2ICsxMTY0 NCw3NiBAQCBDT1BZIGFzeW5jX3B0IFRPIHN0ZG91dDsgLS1lcnJvcgogRVJST1I6ICBjYW5ub3Qg Y29weSBmcm9tIGZvcmVpZ24gdGFibGUgImFzeW5jX3AxIgogREVUQUlMOiAgUGFydGl0aW9uICJh c3luY19wMSIgaXMgYSBmb3JlaWduIHRhYmxlIGluIHBhcnRpdGlvbmVkIHRhYmxlICJhc3luY19w dCIKIEhJTlQ6ICBUcnkgdGhlIENPUFkgKFNFTEVDVCAuLi4pIFRPIHZhcmlhbnQuCistLSBUZXN0 IE1lcmdlIEFwcGVuZAorRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKQorU0VMRUNUICogRlJP TSBhc3luY19wdCBXSEVSRSBiID09PSA1MDUgT1JERVIgQlkgYiwgYTsKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgTWVyZ2UgQXBwZW5kCisgICBTb3J0IEtleTogYXN5bmNf cHQuYiwgYXN5bmNfcHQuYQorICAgLT4gIEFzeW5jIEZvcmVpZ24gU2NhbiBvbiBwdWJsaWMuYXN5 bmNfcDEgYXN5bmNfcHRfMQorICAgICAgICAgT3V0cHV0OiBhc3luY19wdF8xLmEsIGFzeW5jX3B0 XzEuYiwgYXN5bmNfcHRfMS5jCisgICAgICAgICBGaWx0ZXI6IChhc3luY19wdF8xLmIgPT09IDUw NSkKKyAgICAgICAgIFJlbW90ZSBTUUw6IFNFTEVDVCBhLCBiLCBjIEZST00gcHVibGljLmJhc2Vf dGJsMSBPUkRFUiBCWSBiIEFTQyBOVUxMUyBMQVNULCBhIEFTQyBOVUxMUyBMQVNUCisgICAtPiAg QXN5bmMgRm9yZWlnbiBTY2FuIG9uIHB1YmxpYy5hc3luY19wMiBhc3luY19wdF8yCisgICAgICAg ICBPdXRwdXQ6IGFzeW5jX3B0XzIuYSwgYXN5bmNfcHRfMi5iLCBhc3luY19wdF8yLmMKKyAgICAg ICAgIEZpbHRlcjogKGFzeW5jX3B0XzIuYiA9PT0gNTA1KQorICAgICAgICAgUmVtb3RlIFNRTDog U0VMRUNUIGEsIGIsIGMgRlJPTSBwdWJsaWMuYmFzZV90YmwyIE9SREVSIEJZIGIgQVNDIE5VTExT IExBU1QsIGEgQVNDIE5VTExTIExBU1QKKyAgIC0+ICBBc3luYyBGb3JlaWduIFNjYW4gb24gcHVi bGljLmFzeW5jX3AzIGFzeW5jX3B0XzMKKyAgICAgICAgIE91dHB1dDogYXN5bmNfcHRfMy5hLCBh c3luY19wdF8zLmIsIGFzeW5jX3B0XzMuYworICAgICAgICAgRmlsdGVyOiAoYXN5bmNfcHRfMy5i ID09PSA1MDUpCisgICAgICAgICBSZW1vdGUgU1FMOiBTRUxFQ1QgYSwgYiwgYyBGUk9NIHB1Ymxp Yy5iYXNlX3RibDMgT1JERVIgQlkgYiBBU0MgTlVMTFMgTEFTVCwgYSBBU0MgTlVMTFMgTEFTVAor KDE0IHJvd3MpCisKK1NFTEVDVCAqIEZST00gYXN5bmNfcHQgV0hFUkUgYiA9PT0gNTA1IE9SREVS IEJZIGIsIGE7CisgIGEgICB8ICBiICB8ICBjICAgCistLS0tLS0rLS0tLS0rLS0tLS0tCisgMTUw NSB8IDUwNSB8IDA1MDUKKyAyNTA1IHwgNTA1IHwgMDUwNQorIDM1MDUgfCA1MDUgfCAwNTA1Ciso MyByb3dzKQorCistLSBUZXN0IGFzeW5jIE1lcmdlIEFwcGVuZCByZXNjYW4KK0VYUExBSU4gKFZF UkJPU0UsIENPU1RTIE9GRikKK1NFTEVDVAorCUFSUkFZKFNFTEVDVCBmLmkgRlJPTSAoU0VMRUNU IGIgKyBnLmkgRlJPTSBhc3luY19wdCBXSEVSRSBhID4gZy5pIE9SREVSIEJZIGIpIGYoaSkgT1JE RVIgQlkgZi5pIExJTUlUIDEwKQorRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMykgZyhpKTsKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBGdW5jdGlvbiBTY2FuIG9uIHBnX2Nh dGFsb2cuZ2VuZXJhdGVfc2VyaWVzIGcKKyAgIE91dHB1dDogQVJSQVkoU3ViUGxhbiBhcnJheV8x KQorICAgRnVuY3Rpb24gQ2FsbDogZ2VuZXJhdGVfc2VyaWVzKDEsIDMpCisgICBTdWJQbGFuIGFy cmF5XzEKKyAgICAgLT4gIExpbWl0CisgICAgICAgICAgIE91dHB1dDogZi5pCisgICAgICAgICAg IC0+ICBTb3J0CisgICAgICAgICAgICAgICAgIE91dHB1dDogZi5pCisgICAgICAgICAgICAgICAg IFNvcnQgS2V5OiBmLmkKKyAgICAgICAgICAgICAgICAgLT4gIFN1YnF1ZXJ5IFNjYW4gb24gZgor ICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IGYuaQorICAgICAgICAgICAgICAgICAgICAg ICAtPiAgTWVyZ2UgQXBwZW5kCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNvcnQgS2V5 OiBhc3luY19wdC5iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBBc3luYyBGb3Jl aWduIFNjYW4gb24gcHVibGljLmFzeW5jX3AxIGFzeW5jX3B0XzEKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgT3V0cHV0OiAoYXN5bmNfcHRfMS5iICsgZy5pKSwgYXN5bmNfcHRf MS5iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlbW90ZSBTUUw6IFNFTEVD VCBiIEZST00gcHVibGljLmJhc2VfdGJsMSBXSEVSRSAoKGEgPiAkMTo6aW50ZWdlcikpIE9SREVS IEJZIGIgQVNDIE5VTExTIExBU1QKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIEFz eW5jIEZvcmVpZ24gU2NhbiBvbiBwdWJsaWMuYXN5bmNfcDIgYXN5bmNfcHRfMgorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IChhc3luY19wdF8yLmIgKyBnLmkpLCBh c3luY19wdF8yLmIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVtb3RlIFNR TDogU0VMRUNUIGIgRlJPTSBwdWJsaWMuYmFzZV90YmwyIFdIRVJFICgoYSA+ICQxOjppbnRlZ2Vy KSkgT1JERVIgQlkgYiBBU0MgTlVMTFMgTEFTVAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAtPiAgQXN5bmMgRm9yZWlnbiBTY2FuIG9uIHB1YmxpYy5hc3luY19wMyBhc3luY19wdF8zCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogKGFzeW5jX3B0XzMuYiAr IGcuaSksIGFzeW5jX3B0XzMuYgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBS ZW1vdGUgU1FMOiBTRUxFQ1QgYiBGUk9NIHB1YmxpYy5iYXNlX3RibDMgV0hFUkUgKChhID4gJDE6 OmludGVnZXIpKSBPUkRFUiBCWSBiIEFTQyBOVUxMUyBMQVNUCisoMjIgcm93cykKKworU0VMRUNU CisJQVJSQVkoU0VMRUNUIGYuaSBGUk9NIChTRUxFQ1QgYiArIGcuaSBGUk9NIGFzeW5jX3B0IFdI RVJFIGEgPiBnLmkgT1JERVIgQlkgYikgZihpKSBPUkRFUiBCWSBmLmkgTElNSVQgMTApCitGUk9N IGdlbmVyYXRlX3NlcmllcygxLCAzKSBnKGkpOworICAgICAgICAgICBhcnJheSAgICAgICAgICAg CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyB7MSwxLDEsNiw2LDYsMTEsMTEsMTEsMTZ9 CisgezIsMiwyLDcsNyw3LDEyLDEyLDEyLDE3fQorIHszLDMsMyw4LDgsOCwxMywxMywxMywxOH0K KygzIHJvd3MpCisKIERST1AgRk9SRUlHTiBUQUJMRSBhc3luY19wMzsKIERST1AgVEFCTEUgYmFz ZV90YmwzOwogLS0gQ2hlY2sgY2FzZSB3aGVyZSB0aGUgcGFydGl0aW9uZWQgdGFibGUgaGFzIGxv Y2FsL3JlbW90ZSBwYXJ0aXRpb25zCkBAIC0xMTYzOSw2ICsxMTc0OSwzNyBAQCBTRUxFQ1QgKiBG Uk9NIHJlc3VsdF90YmwgT1JERVIgQlkgYTsKICgzIHJvd3MpCiAKIERFTEVURSBGUk9NIHJlc3Vs dF90Ymw7CistLSBUZXN0IE1lcmdlIEFwcGVuZAorRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZG KQorU0VMRUNUICogRlJPTSBhc3luY19wdCBXSEVSRSBiID09PSA1MDUgT1JERVIgQlkgYiwgYTsK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFO ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgTWVyZ2UgQXBwZW5kCisgICBT b3J0IEtleTogYXN5bmNfcHQuYiwgYXN5bmNfcHQuYQorICAgLT4gIEFzeW5jIEZvcmVpZ24gU2Nh biBvbiBwdWJsaWMuYXN5bmNfcDEgYXN5bmNfcHRfMQorICAgICAgICAgT3V0cHV0OiBhc3luY19w dF8xLmEsIGFzeW5jX3B0XzEuYiwgYXN5bmNfcHRfMS5jCisgICAgICAgICBGaWx0ZXI6IChhc3lu Y19wdF8xLmIgPT09IDUwNSkKKyAgICAgICAgIFJlbW90ZSBTUUw6IFNFTEVDVCBhLCBiLCBjIEZS T00gcHVibGljLmJhc2VfdGJsMSBPUkRFUiBCWSBiIEFTQyBOVUxMUyBMQVNULCBhIEFTQyBOVUxM UyBMQVNUCisgICAtPiAgQXN5bmMgRm9yZWlnbiBTY2FuIG9uIHB1YmxpYy5hc3luY19wMiBhc3lu Y19wdF8yCisgICAgICAgICBPdXRwdXQ6IGFzeW5jX3B0XzIuYSwgYXN5bmNfcHRfMi5iLCBhc3lu Y19wdF8yLmMKKyAgICAgICAgIEZpbHRlcjogKGFzeW5jX3B0XzIuYiA9PT0gNTA1KQorICAgICAg ICAgUmVtb3RlIFNRTDogU0VMRUNUIGEsIGIsIGMgRlJPTSBwdWJsaWMuYmFzZV90YmwyIE9SREVS IEJZIGIgQVNDIE5VTExTIExBU1QsIGEgQVNDIE5VTExTIExBU1QKKyAgIC0+ICBTb3J0CisgICAg ICAgICBPdXRwdXQ6IGFzeW5jX3B0XzMuYSwgYXN5bmNfcHRfMy5iLCBhc3luY19wdF8zLmMKKyAg ICAgICAgIFNvcnQgS2V5OiBhc3luY19wdF8zLmIsIGFzeW5jX3B0XzMuYQorICAgICAgICAgLT4g IFNlcSBTY2FuIG9uIHB1YmxpYy5hc3luY19wMyBhc3luY19wdF8zCisgICAgICAgICAgICAgICBP dXRwdXQ6IGFzeW5jX3B0XzMuYSwgYXN5bmNfcHRfMy5iLCBhc3luY19wdF8zLmMKKyAgICAgICAg ICAgICAgIEZpbHRlcjogKGFzeW5jX3B0XzMuYiA9PT0gNTA1KQorKDE2IHJvd3MpCisKK1NFTEVD VCAqIEZST00gYXN5bmNfcHQgV0hFUkUgYiA9PT0gNTA1IE9SREVSIEJZIGIsIGE7CisgIGEgICB8 ICBiICB8ICBjICAgCistLS0tLS0rLS0tLS0rLS0tLS0tCisgMTUwNSB8IDUwNSB8IDA1MDUKKyAy NTA1IHwgNTA1IHwgMDUwNQorIDM1MDUgfCA1MDUgfCAwNTA1CisoMyByb3dzKQorCiAtLSBwYXJ0 aXRpb253aXNlIGpvaW5zCiBTRVQgZW5hYmxlX3BhcnRpdGlvbndpc2Vfam9pbiBUTyB0cnVlOwog Q1JFQVRFIFRBQkxFIGpvaW5fdGJsIChhMSBpbnQsIGIxIGludCwgYzEgdGV4dCwgYTIgaW50LCBi MiBpbnQsIGMyIHRleHQpOwpAQCAtMTI0MjEsNiArMTI1NjIsMTUzIEBAIFNFTEVDVCBhIEZST00g YmFzZV90YmwgV0hFUkUgKGEsIHJhbmRvbSgpID4gMCkgSU4gKFNFTEVDVCBhLCByYW5kb20oKSA+ IDAgRlJPTSBmCiBEUk9QIEZPUkVJR04gVEFCTEUgZm9yZWlnbl90YmwgQ0FTQ0FERTsKIE5PVElD RTogIGRyb3AgY2FzY2FkZXMgdG8gZm9yZWlnbiB0YWJsZSBmb3JlaWduX3RibDIKIERST1AgVEFC TEUgYmFzZV90Ymw7CistLSBUZXN0IGFzeW5jIE1lcmdlIEFwcGVuZAorQ1JFQVRFIFRBQkxFIGRp c3RyMSAoaSBpbnQsIGogaW50LCBrIHRleHQpIFBBUlRJVElPTiBCWSBIQVNIIChpKTsKK0NSRUFU RSBUQUJMRSBiYXNlMSAoaSBpbnQsIGogaW50LCBrIHRleHQpOworQ1JFQVRFIFRBQkxFIGJhc2Uy IChpIGludCwgaiBpbnQsIGsgdGV4dCk7CitDUkVBVEUgRk9SRUlHTiBUQUJMRSBkaXN0cjFfcDEg UEFSVElUSU9OIE9GIGRpc3RyMSBGT1IgVkFMVUVTIFdJVEggKE1PRFVMVVMgMiwgUkVNQUlOREVS IDApCitTRVJWRVIgbG9vcGJhY2sgT1BUSU9OUyAodGFibGVfbmFtZSAnYmFzZTEnKTsKK0NSRUFU RSBGT1JFSUdOIFRBQkxFIGRpc3RyMV9wMiBQQVJUSVRJT04gT0YgZGlzdHIxIEZPUiBWQUxVRVMg V0lUSCAoTU9EVUxVUyAyLCBSRU1BSU5ERVIgMSkKK1NFUlZFUiBsb29wYmFjayBPUFRJT05TICh0 YWJsZV9uYW1lICdiYXNlMicpOworQ1JFQVRFIFRBQkxFIGRpc3RyMiAoaSBpbnQsIGogaW50LCBr IHRleHQpIFBBUlRJVElPTiBCWSBIQVNIIChpKTsKK0NSRUFURSBUQUJMRSBiYXNlMyAoaSBpbnQs IGogaW50LCBrIHRleHQpOworQ1JFQVRFIFRBQkxFIGJhc2U0IChpIGludCwgaiBpbnQsIGsgdGV4 dCk7CitDUkVBVEUgRk9SRUlHTiBUQUJMRSBkaXN0cjJfcDEgUEFSVElUSU9OIE9GIGRpc3RyMiBG T1IgVkFMVUVTIFdJVEggKE1PRFVMVVMgMiwgUkVNQUlOREVSIDApCitTRVJWRVIgbG9vcGJhY2sg T1BUSU9OUyAodGFibGVfbmFtZSAnYmFzZTMnKTsKK0NSRUFURSBGT1JFSUdOIFRBQkxFIGRpc3Ry Ml9wMiBQQVJUSVRJT04gT0YgZGlzdHIyIEZPUiBWQUxVRVMgV0lUSCAoTU9EVUxVUyAyLCBSRU1B SU5ERVIgMSkKK1NFUlZFUiBsb29wYmFjayBPUFRJT05TICh0YWJsZV9uYW1lICdiYXNlNCcpOwor SU5TRVJUIElOVE8gZGlzdHIxCitTRUxFQ1QgaSwgaSoxMCwgJ2RhdGFfJyB8fCBpIEZST00gZ2Vu ZXJhdGVfc2VyaWVzKDEsIDEwMDApIGk7CitJTlNFUlQgSU5UTyBkaXN0cjIKK1NFTEVDVCBpLCBp KjEwLCAnZGF0YV8nIHx8IGkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMTAwKSBpOworQU5BTFla RSBkaXN0cjFfcDE7CitBTkFMWVpFIGRpc3RyMV9wMjsKK0FOQUxZWkUgZGlzdHIyX3AxOworQU5B TFlaRSBkaXN0cjJfcDI7CitTRVQgZW5hYmxlX3BhcnRpdGlvbndpc2Vfam9pbiBUTyBPTjsKKy0t IFRlc3Qgam9pbnMgd2l0aCBhc3luYyBNZXJnZSBBcHBlbmQKK0VYUExBSU4gKFZFUkJPU0UsIENP U1RTIE9GRikKK1NFTEVDVCAqIEZST00gZGlzdHIxLCBkaXN0cjIgV0hFUkUgZGlzdHIxLmk9ZGlz dHIyLmkgQU5EIGRpc3RyMi5qID4gOTAgYW5kIGRpc3RyMi5rIGxpa2UgJ2RhdGElJworT1JERVIg QlkgZGlzdHIyLmkgTElNSVQgMTA7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgTGltaXQK KyAgIE91dHB1dDogZGlzdHIxLmksIGRpc3RyMS5qLCBkaXN0cjEuaywgZGlzdHIyLmksIGRpc3Ry Mi5qLCBkaXN0cjIuaworICAgLT4gIE1lcmdlIEFwcGVuZAorICAgICAgICAgU29ydCBLZXk6IGRp c3RyMS5pCisgICAgICAgICAtPiAgQXN5bmMgRm9yZWlnbiBTY2FuCisgICAgICAgICAgICAgICBP dXRwdXQ6IGRpc3RyMV8xLmksIGRpc3RyMV8xLmosIGRpc3RyMV8xLmssIGRpc3RyMl8xLmksIGRp c3RyMl8xLmosIGRpc3RyMl8xLmsKKyAgICAgICAgICAgICAgIFJlbGF0aW9uczogKHB1YmxpYy5k aXN0cjFfcDEgZGlzdHIxXzEpIElOTkVSIEpPSU4gKHB1YmxpYy5kaXN0cjJfcDEgZGlzdHIyXzEp CisgICAgICAgICAgICAgICBSZW1vdGUgU1FMOiBTRUxFQ1QgcjMuaSwgcjMuaiwgcjMuaywgcjUu aSwgcjUuaiwgcjUuayBGUk9NIChwdWJsaWMuYmFzZTEgcjMgSU5ORVIgSk9JTiBwdWJsaWMuYmFz ZTMgcjUgT04gKCgocjMuaSA9IHI1LmkpKSBBTkQgKChyNS5qID4gOTApKSBBTkQgKChyNS5rIH5+ ICdkYXRhJScpKSkpIE9SREVSIEJZIHIzLmkgQVNDIE5VTExTIExBU1QKKyAgICAgICAgIC0+ICBB c3luYyBGb3JlaWduIFNjYW4KKyAgICAgICAgICAgICAgIE91dHB1dDogZGlzdHIxXzIuaSwgZGlz dHIxXzIuaiwgZGlzdHIxXzIuaywgZGlzdHIyXzIuaSwgZGlzdHIyXzIuaiwgZGlzdHIyXzIuawor ICAgICAgICAgICAgICAgUmVsYXRpb25zOiAocHVibGljLmRpc3RyMV9wMiBkaXN0cjFfMikgSU5O RVIgSk9JTiAocHVibGljLmRpc3RyMl9wMiBkaXN0cjJfMikKKyAgICAgICAgICAgICAgIFJlbW90 ZSBTUUw6IFNFTEVDVCByNC5pLCByNC5qLCByNC5rLCByNi5pLCByNi5qLCByNi5rIEZST00gKHB1 YmxpYy5iYXNlMiByNCBJTk5FUiBKT0lOIHB1YmxpYy5iYXNlNCByNiBPTiAoKChyNC5pID0gcjYu aSkpIEFORCAoKHI2LmogPiA5MCkpIEFORCAoKHI2Lmsgfn4gJ2RhdGElJykpKSkgT1JERVIgQlkg cjQuaSBBU0MgTlVMTFMgTEFTVAorKDEyIHJvd3MpCisKK1NFTEVDVCAqIEZST00gZGlzdHIxLCBk aXN0cjIgV0hFUkUgZGlzdHIxLmk9ZGlzdHIyLmkgQU5EIGRpc3RyMi5qID4gOTAgYW5kIGRpc3Ry Mi5rIGxpa2UgJ2RhdGElJworT1JERVIgQlkgZGlzdHIyLmkgTElNSVQgMTA7CisgaSAgfCAgaiAg fCAgICBrICAgIHwgaSAgfCAgaiAgfCAgICBrICAgIAorLS0tLSstLS0tLSstLS0tLS0tLS0rLS0t LSstLS0tLSstLS0tLS0tLS0KKyAxMCB8IDEwMCB8IGRhdGFfMTAgfCAxMCB8IDEwMCB8IGRhdGFf MTAKKyAxMSB8IDExMCB8IGRhdGFfMTEgfCAxMSB8IDExMCB8IGRhdGFfMTEKKyAxMiB8IDEyMCB8 IGRhdGFfMTIgfCAxMiB8IDEyMCB8IGRhdGFfMTIKKyAxMyB8IDEzMCB8IGRhdGFfMTMgfCAxMyB8 IDEzMCB8IGRhdGFfMTMKKyAxNCB8IDE0MCB8IGRhdGFfMTQgfCAxNCB8IDE0MCB8IGRhdGFfMTQK KyAxNSB8IDE1MCB8IGRhdGFfMTUgfCAxNSB8IDE1MCB8IGRhdGFfMTUKKyAxNiB8IDE2MCB8IGRh dGFfMTYgfCAxNiB8IDE2MCB8IGRhdGFfMTYKKyAxNyB8IDE3MCB8IGRhdGFfMTcgfCAxNyB8IDE3 MCB8IGRhdGFfMTcKKyAxOCB8IDE4MCB8IGRhdGFfMTggfCAxOCB8IDE4MCB8IGRhdGFfMTgKKyAx OSB8IDE5MCB8IGRhdGFfMTkgfCAxOSB8IDE5MCB8IGRhdGFfMTkKKygxMCByb3dzKQorCitFWFBM QUlOIChWRVJCT1NFLCBDT1NUUyBPRkYpCitTRUxFQ1QgKiBGUk9NIGRpc3RyMSBMRUZUIEpPSU4g ZGlzdHIyIE9OIGRpc3RyMS5pPWRpc3RyMi5pIEFORCBkaXN0cjIuayBsaWtlICdkYXRhJScgV0hF UkUgIGRpc3RyMS5pID4gOTAKK09SREVSIEJZIGRpc3RyMS5pIExJTUlUIDIwOworICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCisgTGltaXQKKyAgIE91dHB1dDogZGlzdHIxLmksIGRpc3RyMS5q LCBkaXN0cjEuaywgZGlzdHIyLmksIGRpc3RyMi5qLCBkaXN0cjIuaworICAgLT4gIE1lcmdlIEFw cGVuZAorICAgICAgICAgU29ydCBLZXk6IGRpc3RyMS5pCisgICAgICAgICAtPiAgQXN5bmMgRm9y ZWlnbiBTY2FuCisgICAgICAgICAgICAgICBPdXRwdXQ6IGRpc3RyMV8xLmksIGRpc3RyMV8xLmos IGRpc3RyMV8xLmssIGRpc3RyMl8xLmksIGRpc3RyMl8xLmosIGRpc3RyMl8xLmsKKyAgICAgICAg ICAgICAgIFJlbGF0aW9uczogKHB1YmxpYy5kaXN0cjFfcDEgZGlzdHIxXzEpIExFRlQgSk9JTiAo cHVibGljLmRpc3RyMl9wMSBkaXN0cjJfMSkKKyAgICAgICAgICAgICAgIFJlbW90ZSBTUUw6IFNF TEVDVCByNC5pLCByNC5qLCByNC5rLCByNi5pLCByNi5qLCByNi5rIEZST00gKHB1YmxpYy5iYXNl MSByNCBMRUZUIEpPSU4gcHVibGljLmJhc2UzIHI2IE9OICgoKHI0LmkgPSByNi5pKSkgQU5EICgo cjYuayB+fiAnZGF0YSUnKSkpKSBXSEVSRSAoKHI0LmkgPiA5MCkpIE9SREVSIEJZIHI0LmkgQVND IE5VTExTIExBU1QKKyAgICAgICAgIC0+ICBBc3luYyBGb3JlaWduIFNjYW4KKyAgICAgICAgICAg ICAgIE91dHB1dDogZGlzdHIxXzIuaSwgZGlzdHIxXzIuaiwgZGlzdHIxXzIuaywgZGlzdHIyXzIu aSwgZGlzdHIyXzIuaiwgZGlzdHIyXzIuaworICAgICAgICAgICAgICAgUmVsYXRpb25zOiAocHVi bGljLmRpc3RyMV9wMiBkaXN0cjFfMikgTEVGVCBKT0lOIChwdWJsaWMuZGlzdHIyX3AyIGRpc3Ry Ml8yKQorICAgICAgICAgICAgICAgUmVtb3RlIFNRTDogU0VMRUNUIHI1LmksIHI1LmosIHI1Lmss IHI3LmksIHI3LmosIHI3LmsgRlJPTSAocHVibGljLmJhc2UyIHI1IExFRlQgSk9JTiBwdWJsaWMu YmFzZTQgcjcgT04gKCgocjUuaSA9IHI3LmkpKSBBTkQgKChyNy5rIH5+ICdkYXRhJScpKSkpIFdI RVJFICgocjUuaSA+IDkwKSkgT1JERVIgQlkgcjUuaSBBU0MgTlVMTFMgTEFTVAorKDEyIHJvd3Mp CisKK1NFTEVDVCAqIEZST00gZGlzdHIxIExFRlQgSk9JTiBkaXN0cjIgT04gIGRpc3RyMS5pPWRp c3RyMi5pIEFORCBkaXN0cjIuayBsaWtlICdkYXRhJScgV0hFUkUgZGlzdHIxLmkgPiA5MAorT1JE RVIgQlkgZGlzdHIxLmkgTElNSVQgMjA7CisgIGkgIHwgIGogICB8ICAgIGsgICAgIHwgIGkgIHwg IGogICB8ICAgIGsgICAgIAorLS0tLS0rLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0rLS0tLS0tKy0t LS0tLS0tLS0KKyAgOTEgfCAgOTEwIHwgZGF0YV85MSAgfCAgOTEgfCAgOTEwIHwgZGF0YV85MQor ICA5MiB8ICA5MjAgfCBkYXRhXzkyICB8ICA5MiB8ICA5MjAgfCBkYXRhXzkyCisgIDkzIHwgIDkz MCB8IGRhdGFfOTMgIHwgIDkzIHwgIDkzMCB8IGRhdGFfOTMKKyAgOTQgfCAgOTQwIHwgZGF0YV85 NCAgfCAgOTQgfCAgOTQwIHwgZGF0YV85NAorICA5NSB8ICA5NTAgfCBkYXRhXzk1ICB8ICA5NSB8 ICA5NTAgfCBkYXRhXzk1CisgIDk2IHwgIDk2MCB8IGRhdGFfOTYgIHwgIDk2IHwgIDk2MCB8IGRh dGFfOTYKKyAgOTcgfCAgOTcwIHwgZGF0YV85NyAgfCAgOTcgfCAgOTcwIHwgZGF0YV85NworICA5 OCB8ICA5ODAgfCBkYXRhXzk4ICB8ICA5OCB8ICA5ODAgfCBkYXRhXzk4CisgIDk5IHwgIDk5MCB8 IGRhdGFfOTkgIHwgIDk5IHwgIDk5MCB8IGRhdGFfOTkKKyAxMDAgfCAxMDAwIHwgZGF0YV8xMDAg fCAxMDAgfCAxMDAwIHwgZGF0YV8xMDAKKyAxMDEgfCAxMDEwIHwgZGF0YV8xMDEgfCAgICAgfCAg ICAgIHwgCisgMTAyIHwgMTAyMCB8IGRhdGFfMTAyIHwgICAgIHwgICAgICB8IAorIDEwMyB8IDEw MzAgfCBkYXRhXzEwMyB8ICAgICB8ICAgICAgfCAKKyAxMDQgfCAxMDQwIHwgZGF0YV8xMDQgfCAg ICAgfCAgICAgIHwgCisgMTA1IHwgMTA1MCB8IGRhdGFfMTA1IHwgICAgIHwgICAgICB8IAorIDEw NiB8IDEwNjAgfCBkYXRhXzEwNiB8ICAgICB8ICAgICAgfCAKKyAxMDcgfCAxMDcwIHwgZGF0YV8x MDcgfCAgICAgfCAgICAgIHwgCisgMTA4IHwgMTA4MCB8IGRhdGFfMTA4IHwgICAgIHwgICAgICB8 IAorIDEwOSB8IDEwOTAgfCBkYXRhXzEwOSB8ICAgICB8ICAgICAgfCAKKyAxMTAgfCAxMTAwIHwg ZGF0YV8xMTAgfCAgICAgfCAgICAgIHwgCisoMjAgcm93cykKKworLS0gVGVzdCBwcnVuaW5nIHdp dGggYXN5bmMgTWVyZ2UgQXBwZW5kCitERUxFVEUgRlJPTSBkaXN0cjI7CitJTlNFUlQgSU5UTyBk aXN0cjIKK1NFTEVDVCBpJTEwLCBpKjEwLCAnZGF0YV8nIHx8IGkgRlJPTSBnZW5lcmF0ZV9zZXJp ZXMoMSwgMTAwMCkgaTsKK0RFQUxMT0NBVEUgQUxMOworU0VUIHBsYW5fY2FjaGVfbW9kZSBUTyBm b3JjZV9nZW5lcmljX3BsYW47CitQUkVQQVJFIGFzeW5jX3B0X3F1ZXJ5IChpbnQsIGludCkgQVMK KyAgU0VMRUNUICogRlJPTSBkaXN0cjIgV0hFUkUgaSA9IEFOWShBUlJBWVskMSwgJDJdKQorICBP UkRFUiBCWSBpLGoKKyAgTElNSVQgMTA7CitFWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBPRkYpCisJ RVhFQ1VURSBhc3luY19wdF9xdWVyeSgxLCAxKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFO ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCisgTGltaXQKKyAgIE91dHB1dDogZGlzdHIyLmksIGRpc3RyMi5qLCBkaXN0cjIuaworICAg LT4gIE1lcmdlIEFwcGVuZAorICAgICAgICAgU29ydCBLZXk6IGRpc3RyMi5pLCBkaXN0cjIuagor ICAgICAgICAgU3VicGxhbnMgUmVtb3ZlZDogMQorICAgICAgICAgLT4gIEFzeW5jIEZvcmVpZ24g U2NhbiBvbiBwdWJsaWMuZGlzdHIyX3AxIGRpc3RyMl8xCisgICAgICAgICAgICAgICBPdXRwdXQ6 IGRpc3RyMl8xLmksIGRpc3RyMl8xLmosIGRpc3RyMl8xLmsKKyAgICAgICAgICAgICAgIFJlbW90 ZSBTUUw6IFNFTEVDVCBpLCBqLCBrIEZST00gcHVibGljLmJhc2UzIFdIRVJFICgoaSA9IEFOWSAo QVJSQVlbJDE6OmludGVnZXIsICQyOjppbnRlZ2VyXSkpKSBPUkRFUiBCWSBpIEFTQyBOVUxMUyBM QVNULCBqIEFTQyBOVUxMUyBMQVNUCisoOCByb3dzKQorCitFWEVDVVRFIGFzeW5jX3B0X3F1ZXJ5 KDEsIDEpOworIGkgfCAgaiAgfCAgICBrICAgIAorLS0tKy0tLS0tKy0tLS0tLS0tLQorIDEgfCAg MTAgfCBkYXRhXzEKKyAxIHwgMTEwIHwgZGF0YV8xMQorIDEgfCAyMTAgfCBkYXRhXzIxCisgMSB8 IDMxMCB8IGRhdGFfMzEKKyAxIHwgNDEwIHwgZGF0YV80MQorIDEgfCA1MTAgfCBkYXRhXzUxCisg MSB8IDYxMCB8IGRhdGFfNjEKKyAxIHwgNzEwIHwgZGF0YV83MQorIDEgfCA4MTAgfCBkYXRhXzgx CisgMSB8IDkxMCB8IGRhdGFfOTEKKygxMCByb3dzKQorCitSRVNFVCBwbGFuX2NhY2hlX21vZGU7 CitSRVNFVCBlbmFibGVfcGFydGl0aW9ud2lzZV9qb2luOworRFJPUCBUQUJMRSBkaXN0cjEsIGRp c3RyMiwgYmFzZTEsIGJhc2UyLCBiYXNlMywgYmFzZTQ7CiBBTFRFUiBTRVJWRVIgbG9vcGJhY2sg T1BUSU9OUyAoRFJPUCBhc3luY19jYXBhYmxlKTsKIEFMVEVSIFNFUlZFUiBsb29wYmFjazIgT1BU SU9OUyAoRFJPUCBhc3luY19jYXBhYmxlKTsKIC0tID09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KZGlmZiAtLWdpdCBhL2Nv bnRyaWIvcG9zdGdyZXNfZmR3L3Bvc3RncmVzX2Zkdy5jIGIvY29udHJpYi9wb3N0Z3Jlc19mZHcv cG9zdGdyZXNfZmR3LmMKaW5kZXggNWUxNzhjMjFiMzkuLmJkNTUxYTFkYjcyIDEwMDY0NAotLS0g YS9jb250cmliL3Bvc3RncmVzX2Zkdy9wb3N0Z3Jlc19mZHcuYworKysgYi9jb250cmliL3Bvc3Rn cmVzX2Zkdy9wb3N0Z3Jlc19mZHcuYwpAQCAtNzIxMywxMiArNzIxMywxNiBAQCBwb3N0Z3Jlc0Zv cmVpZ25Bc3luY0NvbmZpZ3VyZVdhaXQoQXN5bmNSZXF1ZXN0ICphcmVxKQogCUZvcmVpZ25TY2Fu U3RhdGUgKm5vZGUgPSAoRm9yZWlnblNjYW5TdGF0ZSAqKSBhcmVxLT5yZXF1ZXN0ZWU7CiAJUGdG ZHdTY2FuU3RhdGUgKmZzc3RhdGUgPSAoUGdGZHdTY2FuU3RhdGUgKikgbm9kZS0+ZmR3X3N0YXRl OwogCUFzeW5jUmVxdWVzdCAqcGVuZGluZ0FyZXEgPSBmc3N0YXRlLT5jb25uX3N0YXRlLT5wZW5k aW5nQXJlcTsKLQlBcHBlbmRTdGF0ZSAqcmVxdWVzdG9yID0gKEFwcGVuZFN0YXRlICopIGFyZXEt PnJlcXVlc3RvcjsKLQlXYWl0RXZlbnRTZXQgKnNldCA9IHJlcXVlc3Rvci0+YXNfZXZlbnRzZXQ7 CisJUGxhblN0YXRlICAqcmVxdWVzdG9yID0gYXJlcS0+cmVxdWVzdG9yOworCVdhaXRFdmVudFNl dCAqc2V0OworCUJpdG1hcHNldCAgKm5lZWRyZXF1ZXN0OwogCiAJLyogVGhpcyBzaG91bGQgbm90 IGJlIGNhbGxlZCB1bmxlc3MgY2FsbGJhY2tfcGVuZGluZyAqLwogCUFzc2VydChhcmVxLT5jYWxs YmFja19wZW5kaW5nKTsKIAorCXNldCA9IEdldEFwcGVuZEV2ZW50U2V0KHJlcXVlc3Rvcik7CisJ bmVlZHJlcXVlc3QgPSBHZXROZWVkUmVxdWVzdChyZXF1ZXN0b3IpOworCiAJLyoKIAkgKiBJZiBw cm9jZXNzX3BlbmRpbmdfcmVxdWVzdCgpIGhhcyBiZWVuIGludm9rZWQgb24gdGhlIGdpdmVuIHJl cXVlc3QKIAkgKiBiZWZvcmUgd2UgZ2V0IGhlcmUsIHdlIG1pZ2h0IGhhdmUgc29tZSB0dXBsZXMg YWxyZWFkeTsgaW4gd2hpY2ggY2FzZQpAQCAtNzI1Niw3ICs3MjYwLDcgQEAgcG9zdGdyZXNGb3Jl aWduQXN5bmNDb25maWd1cmVXYWl0KEFzeW5jUmVxdWVzdCAqYXJlcSkKIAkJICogYmVsb3csIGJl Y2F1c2Ugd2UgbWlnaHQgb3RoZXJ3aXNlIGVuZCB1cCB3aXRoIG5vIGNvbmZpZ3VyZWQgZXZlbnRz CiAJCSAqIG90aGVyIHRoYW4gdGhlIHBvc3RtYXN0ZXIgZGVhdGggZXZlbnQuCiAJCSAqLwotCQlp ZiAoIWJtc19pc19lbXB0eShyZXF1ZXN0b3ItPmFzX25lZWRyZXF1ZXN0KSkKKwkJaWYgKCFibXNf aXNfZW1wdHkobmVlZHJlcXVlc3QpKQogCQkJcmV0dXJuOwogCQlpZiAoR2V0TnVtUmVnaXN0ZXJl ZFdhaXRFdmVudHMoc2V0KSA+IDEpCiAJCQlyZXR1cm47CmRpZmYgLS1naXQgYS9jb250cmliL3Bv c3RncmVzX2Zkdy9zcWwvcG9zdGdyZXNfZmR3LnNxbCBiL2NvbnRyaWIvcG9zdGdyZXNfZmR3L3Nx bC9wb3N0Z3Jlc19mZHcuc3FsCmluZGV4IDRmN2FiMmVkMGFjLi44OTE4OGRmZjc4MyAxMDA2NDQK LS0tIGEvY29udHJpYi9wb3N0Z3Jlc19mZHcvc3FsL3Bvc3RncmVzX2Zkdy5zcWwKKysrIGIvY29u dHJpYi9wb3N0Z3Jlc19mZHcvc3FsL3Bvc3RncmVzX2Zkdy5zcWwKQEAgLTM5MjksNiArMzkyOSwx MSBAQCBJTlNFUlQgSU5UTyByZXN1bHRfdGJsIFNFTEVDVCBhLCBiLCAnQUFBJyB8fCBjIEZST00g YXN5bmNfcHQgV0hFUkUgYiA9PT0gNTA1OwogU0VMRUNUICogRlJPTSByZXN1bHRfdGJsIE9SREVS IEJZIGE7CiBERUxFVEUgRlJPTSByZXN1bHRfdGJsOwogCistLSBUZXN0IE1lcmdlIEFwcGVuZAor RVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKQorU0VMRUNUICogRlJPTSBhc3luY19wdCBXSEVS RSBiICUgMTAwID0gMCBPUkRFUiBCWSBiLCBhOworU0VMRUNUICogRlJPTSBhc3luY19wdCBXSEVS RSBiICUgMTAwID0gMCBPUkRFUiBCWSBiLCBhOworCiAtLSBUZXN0IGVycm9yIGhhbmRsaW5nLCBp ZiBhY2Nlc3Npbmcgb25lIG9mIHRoZSBmb3JlaWduIHBhcnRpdGlvbnMgZXJyb3JzIG91dAogQ1JF QVRFIEZPUkVJR04gVEFCTEUgYXN5bmNfcF9icm9rZW4gUEFSVElUSU9OIE9GIGFzeW5jX3B0IEZP UiBWQUxVRVMgRlJPTSAoMTAwMDApIFRPICgxMDAwMSkKICAgU0VSVkVSIGxvb3BiYWNrIE9QVElP TlMgKHRhYmxlX25hbWUgJ25vbl9leGlzdGVudF90YWJsZScpOwpAQCAtMzk1Miw2ICszOTU3LDIw IEBAIERFTEVURSBGUk9NIHJlc3VsdF90Ymw7CiAtLSBUZXN0IENPUFkgVE8gd2hlbiBmb3JlaWdu IHRhYmxlIGlzIHBhcnRpdGlvbgogQ09QWSBhc3luY19wdCBUTyBzdGRvdXQ7IC0tZXJyb3IKIAor LS0gVGVzdCBNZXJnZSBBcHBlbmQKK0VYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikKK1NFTEVD VCAqIEZST00gYXN5bmNfcHQgV0hFUkUgYiA9PT0gNTA1IE9SREVSIEJZIGIsIGE7CitTRUxFQ1Qg KiBGUk9NIGFzeW5jX3B0IFdIRVJFIGIgPT09IDUwNSBPUkRFUiBCWSBiLCBhOworCistLSBUZXN0 IGFzeW5jIE1lcmdlIEFwcGVuZCByZXNjYW4KK0VYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikK K1NFTEVDVAorCUFSUkFZKFNFTEVDVCBmLmkgRlJPTSAoU0VMRUNUIGIgKyBnLmkgRlJPTSBhc3lu Y19wdCBXSEVSRSBhID4gZy5pIE9SREVSIEJZIGIpIGYoaSkgT1JERVIgQlkgZi5pIExJTUlUIDEw KQorRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMykgZyhpKTsKK1NFTEVDVAorCUFSUkFZKFNFTEVD VCBmLmkgRlJPTSAoU0VMRUNUIGIgKyBnLmkgRlJPTSBhc3luY19wdCBXSEVSRSBhID4gZy5pIE9S REVSIEJZIGIpIGYoaSkgT1JERVIgQlkgZi5pIExJTUlUIDEwKQorRlJPTSBnZW5lcmF0ZV9zZXJp ZXMoMSwgMykgZyhpKTsKKwogRFJPUCBGT1JFSUdOIFRBQkxFIGFzeW5jX3AzOwogRFJPUCBUQUJM RSBiYXNlX3RibDM7CiAKQEAgLTM5NjcsNiArMzk4NiwxMSBAQCBJTlNFUlQgSU5UTyByZXN1bHRf dGJsIFNFTEVDVCAqIEZST00gYXN5bmNfcHQgV0hFUkUgYiA9PT0gNTA1OwogU0VMRUNUICogRlJP TSByZXN1bHRfdGJsIE9SREVSIEJZIGE7CiBERUxFVEUgRlJPTSByZXN1bHRfdGJsOwogCistLSBU ZXN0IE1lcmdlIEFwcGVuZAorRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKQorU0VMRUNUICog RlJPTSBhc3luY19wdCBXSEVSRSBiID09PSA1MDUgT1JERVIgQlkgYiwgYTsKK1NFTEVDVCAqIEZS T00gYXN5bmNfcHQgV0hFUkUgYiA9PT0gNTA1IE9SREVSIEJZIGIsIGE7CisKIC0tIHBhcnRpdGlv bndpc2Ugam9pbnMKIFNFVCBlbmFibGVfcGFydGl0aW9ud2lzZV9qb2luIFRPIHRydWU7CiAKQEAg LTQyMDUsNiArNDIyOSw2OSBAQCBTRUxFQ1QgYSBGUk9NIGJhc2VfdGJsIFdIRVJFIChhLCByYW5k b20oKSA+IDApIElOIChTRUxFQ1QgYSwgcmFuZG9tKCkgPiAwIEZST00gZgogRFJPUCBGT1JFSUdO IFRBQkxFIGZvcmVpZ25fdGJsIENBU0NBREU7CiBEUk9QIFRBQkxFIGJhc2VfdGJsOwogCistLSBU ZXN0IGFzeW5jIE1lcmdlIEFwcGVuZAorQ1JFQVRFIFRBQkxFIGRpc3RyMSAoaSBpbnQsIGogaW50 LCBrIHRleHQpIFBBUlRJVElPTiBCWSBIQVNIIChpKTsKK0NSRUFURSBUQUJMRSBiYXNlMSAoaSBp bnQsIGogaW50LCBrIHRleHQpOworQ1JFQVRFIFRBQkxFIGJhc2UyIChpIGludCwgaiBpbnQsIGsg dGV4dCk7CitDUkVBVEUgRk9SRUlHTiBUQUJMRSBkaXN0cjFfcDEgUEFSVElUSU9OIE9GIGRpc3Ry MSBGT1IgVkFMVUVTIFdJVEggKE1PRFVMVVMgMiwgUkVNQUlOREVSIDApCitTRVJWRVIgbG9vcGJh Y2sgT1BUSU9OUyAodGFibGVfbmFtZSAnYmFzZTEnKTsKK0NSRUFURSBGT1JFSUdOIFRBQkxFIGRp c3RyMV9wMiBQQVJUSVRJT04gT0YgZGlzdHIxIEZPUiBWQUxVRVMgV0lUSCAoTU9EVUxVUyAyLCBS RU1BSU5ERVIgMSkKK1NFUlZFUiBsb29wYmFjayBPUFRJT05TICh0YWJsZV9uYW1lICdiYXNlMicp OworCitDUkVBVEUgVEFCTEUgZGlzdHIyIChpIGludCwgaiBpbnQsIGsgdGV4dCkgUEFSVElUSU9O IEJZIEhBU0ggKGkpOworQ1JFQVRFIFRBQkxFIGJhc2UzIChpIGludCwgaiBpbnQsIGsgdGV4dCk7 CitDUkVBVEUgVEFCTEUgYmFzZTQgKGkgaW50LCBqIGludCwgayB0ZXh0KTsKK0NSRUFURSBGT1JF SUdOIFRBQkxFIGRpc3RyMl9wMSBQQVJUSVRJT04gT0YgZGlzdHIyIEZPUiBWQUxVRVMgV0lUSCAo TU9EVUxVUyAyLCBSRU1BSU5ERVIgMCkKK1NFUlZFUiBsb29wYmFjayBPUFRJT05TICh0YWJsZV9u YW1lICdiYXNlMycpOworQ1JFQVRFIEZPUkVJR04gVEFCTEUgZGlzdHIyX3AyIFBBUlRJVElPTiBP RiBkaXN0cjIgRk9SIFZBTFVFUyBXSVRIIChNT0RVTFVTIDIsIFJFTUFJTkRFUiAxKQorU0VSVkVS IGxvb3BiYWNrIE9QVElPTlMgKHRhYmxlX25hbWUgJ2Jhc2U0Jyk7CisKK0lOU0VSVCBJTlRPIGRp c3RyMQorU0VMRUNUIGksIGkqMTAsICdkYXRhXycgfHwgaSBGUk9NIGdlbmVyYXRlX3Nlcmllcygx LCAxMDAwKSBpOworCitJTlNFUlQgSU5UTyBkaXN0cjIKK1NFTEVDVCBpLCBpKjEwLCAnZGF0YV8n IHx8IGkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMTAwKSBpOworCitBTkFMWVpFIGRpc3RyMV9w MTsKK0FOQUxZWkUgZGlzdHIxX3AyOworQU5BTFlaRSBkaXN0cjJfcDE7CitBTkFMWVpFIGRpc3Ry Ml9wMjsKKworU0VUIGVuYWJsZV9wYXJ0aXRpb253aXNlX2pvaW4gVE8gT047CisKKy0tIFRlc3Qg am9pbnMgd2l0aCBhc3luYyBNZXJnZSBBcHBlbmQKK0VYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9G RikKK1NFTEVDVCAqIEZST00gZGlzdHIxLCBkaXN0cjIgV0hFUkUgZGlzdHIxLmk9ZGlzdHIyLmkg QU5EIGRpc3RyMi5qID4gOTAgYW5kIGRpc3RyMi5rIGxpa2UgJ2RhdGElJworT1JERVIgQlkgZGlz dHIyLmkgTElNSVQgMTA7CitTRUxFQ1QgKiBGUk9NIGRpc3RyMSwgZGlzdHIyIFdIRVJFIGRpc3Ry MS5pPWRpc3RyMi5pIEFORCBkaXN0cjIuaiA+IDkwIGFuZCBkaXN0cjIuayBsaWtlICdkYXRhJScK K09SREVSIEJZIGRpc3RyMi5pIExJTUlUIDEwOworCitFWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBP RkYpCitTRUxFQ1QgKiBGUk9NIGRpc3RyMSBMRUZUIEpPSU4gZGlzdHIyIE9OIGRpc3RyMS5pPWRp c3RyMi5pIEFORCBkaXN0cjIuayBsaWtlICdkYXRhJScgV0hFUkUgIGRpc3RyMS5pID4gOTAKK09S REVSIEJZIGRpc3RyMS5pIExJTUlUIDIwOworU0VMRUNUICogRlJPTSBkaXN0cjEgTEVGVCBKT0lO IGRpc3RyMiBPTiAgZGlzdHIxLmk9ZGlzdHIyLmkgQU5EIGRpc3RyMi5rIGxpa2UgJ2RhdGElJyBX SEVSRSBkaXN0cjEuaSA+IDkwCitPUkRFUiBCWSBkaXN0cjEuaSBMSU1JVCAyMDsKKworLS0gVGVz dCBwcnVuaW5nIHdpdGggYXN5bmMgTWVyZ2UgQXBwZW5kCitERUxFVEUgRlJPTSBkaXN0cjI7CitJ TlNFUlQgSU5UTyBkaXN0cjIKK1NFTEVDVCBpJTEwLCBpKjEwLCAnZGF0YV8nIHx8IGkgRlJPTSBn ZW5lcmF0ZV9zZXJpZXMoMSwgMTAwMCkgaTsKKworREVBTExPQ0FURSBBTEw7CitTRVQgcGxhbl9j YWNoZV9tb2RlIFRPIGZvcmNlX2dlbmVyaWNfcGxhbjsKK1BSRVBBUkUgYXN5bmNfcHRfcXVlcnkg KGludCwgaW50KSBBUworICBTRUxFQ1QgKiBGUk9NIGRpc3RyMiBXSEVSRSBpID0gQU5ZKEFSUkFZ WyQxLCAkMl0pCisgIE9SREVSIEJZIGksagorICBMSU1JVCAxMDsKK0VYUExBSU4gKFZFUkJPU0Us IENPU1RTIE9GRikKKwlFWEVDVVRFIGFzeW5jX3B0X3F1ZXJ5KDEsIDEpOworRVhFQ1VURSBhc3lu Y19wdF9xdWVyeSgxLCAxKTsKK1JFU0VUIHBsYW5fY2FjaGVfbW9kZTsKKworUkVTRVQgZW5hYmxl X3BhcnRpdGlvbndpc2Vfam9pbjsKKworRFJPUCBUQUJMRSBkaXN0cjEsIGRpc3RyMiwgYmFzZTEs IGJhc2UyLCBiYXNlMywgYmFzZTQ7CisKIEFMVEVSIFNFUlZFUiBsb29wYmFjayBPUFRJT05TIChE Uk9QIGFzeW5jX2NhcGFibGUpOwogQUxURVIgU0VSVkVSIGxvb3BiYWNrMiBPUFRJT05TIChEUk9Q IGFzeW5jX2NhcGFibGUpOwogCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvY29uZmlnLnNnbWwg Yi9kb2Mvc3JjL3NnbWwvY29uZmlnLnNnbWwKaW5kZXggY2RmZThlMzc2ZjAuLmY3ZjdlMzNjZWU2 IDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvY29uZmlnLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21s L2NvbmZpZy5zZ21sCkBAIC01NDczLDYgKzU0NzMsMjAgQEAgQU5ZIDxyZXBsYWNlYWJsZSBjbGFz cz0icGFyYW1ldGVyIj5udW1fc3luYzwvcmVwbGFjZWFibGU+ICggPHJlcGxhY2VhYmxlIGNsYXNz PSIKICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgIDwvdmFybGlzdGVudHJ5PgogCisgICAgIDx2YXJs aXN0ZW50cnkgaWQ9Imd1Yy1lbmFibGUtYXN5bmMtbWVyZ2UtYXBwZW5kIiB4cmVmbGFiZWw9ImVu YWJsZV9hc3luY19tZXJnZV9hcHBlbmQiPgorICAgICAgPHRlcm0+PHZhcm5hbWU+ZW5hYmxlX2Fz eW5jX21lcmdlX2FwcGVuZDwvdmFybmFtZT4gKDx0eXBlPmJvb2xlYW48L3R5cGU+KQorICAgICAg PGluZGV4dGVybT4KKyAgICAgICA8cHJpbWFyeT48dmFybmFtZT5lbmFibGVfYXN5bmNfbWVyZ2Vf YXBwZW5kPC92YXJuYW1lPiBjb25maWd1cmF0aW9uIHBhcmFtZXRlcjwvcHJpbWFyeT4KKyAgICAg IDwvaW5kZXh0ZXJtPgorICAgICAgPC90ZXJtPgorICAgICAgPGxpc3RpdGVtPgorICAgICAgIDxw YXJhPgorICAgICAgICBFbmFibGVzIG9yIGRpc2FibGVzIHRoZSBxdWVyeSBwbGFubmVyJ3MgdXNl IG9mIGFzeW5jLWF3YXJlCisgICAgICAgIG1lcmdlIGFwcGVuZCBwbGFuIHR5cGVzLiBUaGUgZGVm YXVsdCBpcyA8bGl0ZXJhbD5vbjwvbGl0ZXJhbD4uCisgICAgICAgPC9wYXJhPgorICAgICAgPC9s aXN0aXRlbT4KKyAgICAgPC92YXJsaXN0ZW50cnk+CisKICAgICAgPHZhcmxpc3RlbnRyeSBpZD0i Z3VjLWVuYWJsZS1iaXRtYXBzY2FuIiB4cmVmbGFiZWw9ImVuYWJsZV9iaXRtYXBzY2FuIj4KICAg ICAgIDx0ZXJtPjx2YXJuYW1lPmVuYWJsZV9iaXRtYXBzY2FuPC92YXJuYW1lPiAoPHR5cGU+Ym9v bGVhbjwvdHlwZT4pCiAgICAgICA8aW5kZXh0ZXJtPgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv ZXhlY3V0b3IvZXhlY0FzeW5jLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjQXN5bmMuYwpp bmRleCA1ZDNjYWJlNzNlMy4uNmRjMTllYmMzNzQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4 ZWN1dG9yL2V4ZWNBc3luYy5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNBc3luYy5j CkBAIC0xNyw2ICsxNyw3IEBACiAjaW5jbHVkZSAiZXhlY3V0b3IvZXhlY0FzeW5jLmgiCiAjaW5j bHVkZSAiZXhlY3V0b3IvZXhlY3V0b3IuaCIKICNpbmNsdWRlICJleGVjdXRvci9ub2RlQXBwZW5k LmgiCisjaW5jbHVkZSAiZXhlY3V0b3Ivbm9kZU1lcmdlQXBwZW5kLmgiCiAjaW5jbHVkZSAiZXhl Y3V0b3Ivbm9kZUZvcmVpZ25zY2FuLmgiCiAKIC8qCkBAIC0xMjEsNiArMTIyLDkgQEAgRXhlY0Fz eW5jUmVzcG9uc2UoQXN5bmNSZXF1ZXN0ICphcmVxKQogCQljYXNlIFRfQXBwZW5kU3RhdGU6CiAJ CQlFeGVjQXN5bmNBcHBlbmRSZXNwb25zZShhcmVxKTsKIAkJCWJyZWFrOworCQljYXNlIFRfTWVy Z2VBcHBlbmRTdGF0ZToKKwkJCUV4ZWNBc3luY01lcmdlQXBwZW5kUmVzcG9uc2UoYXJlcSk7CisJ CQlicmVhazsKIAkJZGVmYXVsdDoKIAkJCS8qIElmIHRoZSBub2RlIGRvZXNuJ3Qgc3VwcG9ydCBh c3luYywgY2FsbGVyIG1lc3NlZCB1cC4gKi8KIAkJCWVsb2coRVJST1IsICJ1bnJlY29nbml6ZWQg bm9kZSB0eXBlOiAlZCIsCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQXBw ZW5kLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQXBwZW5kLmMKaW5kZXggNzdjNGRkOWU0 YjEuLmRmYmM3YjUxMGM0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQXBw ZW5kLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUFwcGVuZC5jCkBAIC0xMTg3LDEw ICsxMTg3LDcgQEAgRXhlY0FzeW5jQXBwZW5kUmVzcG9uc2UoQXN5bmNSZXF1ZXN0ICphcmVxKQog c3RhdGljIHZvaWQKIGNsYXNzaWZ5X21hdGNoaW5nX3N1YnBsYW5zKEFwcGVuZFN0YXRlICpub2Rl KQogewotCUJpdG1hcHNldCAgKnZhbGlkX2FzeW5jcGxhbnM7Ci0KIAlBc3NlcnQobm9kZS0+YXNf dmFsaWRfc3VicGxhbnNfaWRlbnRpZmllZCk7Ci0JQXNzZXJ0KG5vZGUtPmFzX3ZhbGlkX2FzeW5j cGxhbnMgPT0gTlVMTCk7CiAKIAkvKiBOb3RoaW5nIHRvIGRvIGlmIHRoZXJlIGFyZSBubyB2YWxp ZCBzdWJwbGFucy4gKi8KIAlpZiAoYm1zX2lzX2VtcHR5KG5vZGUtPmFzX3ZhbGlkX3N1YnBsYW5z KSkKQEAgLTEyMDAsMjEgKzExOTcsMTAgQEAgY2xhc3NpZnlfbWF0Y2hpbmdfc3VicGxhbnMoQXBw ZW5kU3RhdGUgKm5vZGUpCiAJCXJldHVybjsKIAl9CiAKLQkvKiBOb3RoaW5nIHRvIGRvIGlmIHRo ZXJlIGFyZSBubyB2YWxpZCBhc3luYyBzdWJwbGFucy4gKi8KLQlpZiAoIWJtc19vdmVybGFwKG5v ZGUtPmFzX3ZhbGlkX3N1YnBsYW5zLCBub2RlLT5hc19hc3luY3BsYW5zKSkKLQl7CisJLyogTm8g dmFsaWQgYXN5bmMgc3VicGxhbnMgaWRlbnRpZmllZC4gKi8KKwlpZiAoIWNsYXNzaWZ5X21hdGNo aW5nX3N1YnBsYW5zX2NvbW1vbigKKwkJCQkJCQkJCQkgICAmbm9kZS0+YXNfdmFsaWRfc3VicGxh bnMsCisJCQkJCQkJCQkJICAgbm9kZS0+YXNfYXN5bmNwbGFucywKKwkJCQkJCQkJCQkgICAmbm9k ZS0+YXNfdmFsaWRfYXN5bmNwbGFucykpCiAJCW5vZGUtPmFzX25hc3luY3JlbWFpbiA9IDA7Ci0J CXJldHVybjsKLQl9Ci0KLQkvKiBHZXQgdmFsaWQgYXN5bmMgc3VicGxhbnMuICovCi0JdmFsaWRf YXN5bmNwbGFucyA9IGJtc19pbnRlcnNlY3Qobm9kZS0+YXNfYXN5bmNwbGFucywKLQkJCQkJCQkJ CSBub2RlLT5hc192YWxpZF9zdWJwbGFucyk7Ci0KLQkvKiBBZGp1c3QgdGhlIHZhbGlkIHN1YnBs YW5zIHRvIGNvbnRhaW4gc3luYyBzdWJwbGFucyBvbmx5LiAqLwotCW5vZGUtPmFzX3ZhbGlkX3N1 YnBsYW5zID0gYm1zX2RlbF9tZW1iZXJzKG5vZGUtPmFzX3ZhbGlkX3N1YnBsYW5zLAotCQkJCQkJ CQkJCQkgIHZhbGlkX2FzeW5jcGxhbnMpOwotCi0JLyogU2F2ZSB2YWxpZCBhc3luYyBzdWJwbGFu cy4gKi8KLQlub2RlLT5hc192YWxpZF9hc3luY3BsYW5zID0gdmFsaWRfYXN5bmNwbGFuczsKIH0K ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNZXJnZUFwcGVuZC5jIGIvc3Jj L2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1lcmdlQXBwZW5kLmMKaW5kZXggMzAwYmNkNWNmMzMuLmYx YzI2N2ViOWViIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTWVyZ2VBcHBl bmQuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTWVyZ2VBcHBlbmQuYwpAQCAtMzks MTAgKzM5LDE1IEBACiAjaW5jbHVkZSAicG9zdGdyZXMuaCIKIAogI2luY2x1ZGUgImV4ZWN1dG9y L2V4ZWN1dG9yLmgiCisjaW5jbHVkZSAiZXhlY3V0b3IvZXhlY0FzeW5jLmgiCiAjaW5jbHVkZSAi ZXhlY3V0b3IvZXhlY1BhcnRpdGlvbi5oIgogI2luY2x1ZGUgImV4ZWN1dG9yL25vZGVNZXJnZUFw cGVuZC5oIgogI2luY2x1ZGUgImxpYi9iaW5hcnloZWFwLmgiCiAjaW5jbHVkZSAibWlzY2FkbWlu LmgiCisjaW5jbHVkZSAic3RvcmFnZS9sYXRjaC5oIgorI2luY2x1ZGUgInV0aWxzL3dhaXRfZXZl bnQuaCIKKworI2RlZmluZSBFVkVOVF9CVUZGRVJfU0laRSAgICAgICAgICAgICAgICAgICAgIDE2 CiAKIC8qCiAgKiBXZSBoYXZlIG9uZSBzbG90IGZvciBlYWNoIGl0ZW0gaW4gdGhlIGhlYXAgYXJy YXkuICBXZSB1c2UgU2xvdE51bWJlcgpAQCAtNTQsNiArNTksMTIgQEAgdHlwZWRlZiBpbnQzMiBT bG90TnVtYmVyOwogc3RhdGljIFR1cGxlVGFibGVTbG90ICpFeGVjTWVyZ2VBcHBlbmQoUGxhblN0 YXRlICpwc3RhdGUpOwogc3RhdGljIGludAloZWFwX2NvbXBhcmVfc2xvdHMoRGF0dW0gYSwgRGF0 dW0gYiwgdm9pZCAqYXJnKTsKIAorc3RhdGljIHZvaWQgY2xhc3NpZnlfbWF0Y2hpbmdfc3VicGxh bnMoTWVyZ2VBcHBlbmRTdGF0ZSAqbm9kZSk7CitzdGF0aWMgdm9pZCBFeGVjTWVyZ2VBcHBlbmRB c3luY0JlZ2luKE1lcmdlQXBwZW5kU3RhdGUgKm5vZGUpOworc3RhdGljIHZvaWQgRXhlY01lcmdl QXBwZW5kQXN5bmNHZXROZXh0KE1lcmdlQXBwZW5kU3RhdGUgKm5vZGUsIGludCBtcGxhbik7Citz dGF0aWMgYm9vbCBFeGVjTWVyZ2VBcHBlbmRBc3luY1JlcXVlc3QoTWVyZ2VBcHBlbmRTdGF0ZSAq bm9kZSwgaW50IG1wbGFuKTsKK3N0YXRpYyB2b2lkIEV4ZWNNZXJnZUFwcGVuZEFzeW5jRXZlbnRX YWl0KE1lcmdlQXBwZW5kU3RhdGUgKm5vZGUpOworCiAKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAqCQlFeGVjSW5p dE1lcmdlQXBwZW5kCkBAIC03MSw2ICs4Miw4IEBAIEV4ZWNJbml0TWVyZ2VBcHBlbmQoTWVyZ2VB cHBlbmQgKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCWludAkJCW5wbGFuczsK IAlpbnQJCQlpLAogCQkJCWo7CisJQml0bWFwc2V0ICAqYXN5bmNwbGFuczsKKwlpbnQJCQluYXN5 bmNwbGFuczsKIAogCS8qIGNoZWNrIGZvciB1bnN1cHBvcnRlZCBmbGFncyAqLwogCUFzc2VydCgh KGVmbGFncyAmIChFWEVDX0ZMQUdfQkFDS1dBUkQgfCBFWEVDX0ZMQUdfTUFSSykpKTsKQEAgLTEw Niw3ICsxMTksMTAgQEAgRXhlY0luaXRNZXJnZUFwcGVuZChNZXJnZUFwcGVuZCAqbm9kZSwgRVN0 YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJCSAqIGxhdGVyIGNhbGxzIHRvIEV4ZWNGaW5kTWF0 Y2hpbmdTdWJQbGFucy4KIAkJICovCiAJCWlmICghcHJ1bmVzdGF0ZS0+ZG9fZXhlY19wcnVuZSAm JiBucGxhbnMgPiAwKQorCQl7CiAJCQltZXJnZXN0YXRlLT5tc192YWxpZF9zdWJwbGFucyA9IGJt c19hZGRfcmFuZ2UoTlVMTCwgMCwgbnBsYW5zIC0gMSk7CisJCQltZXJnZXN0YXRlLT5tc192YWxp ZF9zdWJwbGFuc19pZGVudGlmaWVkID0gdHJ1ZTsKKwkJfQogCX0KIAllbHNlCiAJewpAQCAtMTE5 LDYgKzEzNSw3IEBAIEV4ZWNJbml0TWVyZ2VBcHBlbmQoTWVyZ2VBcHBlbmQgKm5vZGUsIEVTdGF0 ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCQlBc3NlcnQobnBsYW5zID4gMCk7CiAJCW1lcmdlc3Rh dGUtPm1zX3ZhbGlkX3N1YnBsYW5zID0gdmFsaWRzdWJwbGFucyA9CiAJCQlibXNfYWRkX3Jhbmdl KE5VTEwsIDAsIG5wbGFucyAtIDEpOworCQltZXJnZXN0YXRlLT5tc192YWxpZF9zdWJwbGFuc19p ZGVudGlmaWVkID0gdHJ1ZTsKIAkJbWVyZ2VzdGF0ZS0+bXNfcHJ1bmVfc3RhdGUgPSBOVUxMOwog CX0KIApAQCAtMTM1LDExICsxNTIsMjUgQEAgRXhlY0luaXRNZXJnZUFwcGVuZChNZXJnZUFwcGVu ZCAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJICogdGhlIHJlc3VsdHMgaW50 byB0aGUgbWVyZ2VwbGFuc3RhdGVzIGFycmF5LgogCSAqLwogCWogPSAwOworCWFzeW5jcGxhbnMg PSBOVUxMOworCW5hc3luY3BsYW5zID0gMDsKKwogCWkgPSAtMTsKIAl3aGlsZSAoKGkgPSBibXNf bmV4dF9tZW1iZXIodmFsaWRzdWJwbGFucywgaSkpID49IDApCiAJewogCQlQbGFuCSAgICppbml0 Tm9kZSA9IChQbGFuICopIGxpc3RfbnRoKG5vZGUtPm1lcmdlcGxhbnMsIGkpOwogCisJCS8qCisJ CSAqIFJlY29yZCBhc3luYyBzdWJwbGFucy4gIFdoZW4gZXhlY3V0aW5nIEV2YWxQbGFuUXVhbCwg d2UgdHJlYXQgdGhlbQorCQkgKiBhcyBzeW5jIG9uZXM7IGRvbid0IGRvIHRoaXMgd2hlbiBpbml0 aWFsaXppbmcgYW4gRXZhbFBsYW5RdWFsIHBsYW4KKwkJICogdHJlZS4KKwkJICovCisJCWlmIChp bml0Tm9kZS0+YXN5bmNfY2FwYWJsZSAmJiBlc3RhdGUtPmVzX2VwcV9hY3RpdmUgPT0gTlVMTCkK KwkJeworCQkJYXN5bmNwbGFucyA9IGJtc19hZGRfbWVtYmVyKGFzeW5jcGxhbnMsIGopOworCQkJ bmFzeW5jcGxhbnMrKzsKKwkJfQorCiAJCW1lcmdlcGxhbnN0YXRlc1tqKytdID0gRXhlY0luaXRO b2RlKGluaXROb2RlLCBlc3RhdGUsIGVmbGFncyk7CiAJfQogCkBAIC0xNzAsNiArMjAxLDQ1IEBA IEV4ZWNJbml0TWVyZ2VBcHBlbmQoTWVyZ2VBcHBlbmQgKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBp bnQgZWZsYWdzKQogCSAqLwogCW1lcmdlc3RhdGUtPnBzLnBzX1Byb2pJbmZvID0gTlVMTDsKIAor CS8qIEluaXRpYWxpemUgYXN5bmMgc3RhdGUgKi8KKwltZXJnZXN0YXRlLT5tc19hc3luY3BsYW5z ID0gYXN5bmNwbGFuczsKKwltZXJnZXN0YXRlLT5tc19uYXN5bmNwbGFucyA9IG5hc3luY3BsYW5z OworCW1lcmdlc3RhdGUtPm1zX2FzeW5jcmVxdWVzdHMgPSBOVUxMOworCW1lcmdlc3RhdGUtPm1z X2FzeW5jcmVzdWx0cyA9IE5VTEw7CisJbWVyZ2VzdGF0ZS0+bXNfaGFzX2FzeW5jcmVzdWx0cyA9 IE5VTEw7CisJbWVyZ2VzdGF0ZS0+bXNfYXN5bmNyZW1haW4gPSBOVUxMOworCW1lcmdlc3RhdGUt Pm1zX25lZWRyZXF1ZXN0ID0gTlVMTDsKKwltZXJnZXN0YXRlLT5tc19ldmVudHNldCA9IE5VTEw7 CisJbWVyZ2VzdGF0ZS0+bXNfdmFsaWRfYXN5bmNwbGFucyA9IE5VTEw7CisKKwlpZiAobmFzeW5j cGxhbnMgPiAwKQorCXsKKwkJbWVyZ2VzdGF0ZS0+bXNfYXN5bmNyZXF1ZXN0cyA9IChBc3luY1Jl cXVlc3QgKiopCisJCQlwYWxsb2MwKG5wbGFucyAqIHNpemVvZihBc3luY1JlcXVlc3QgKikpOwor CisJCWkgPSAtMTsKKwkJd2hpbGUgKChpID0gYm1zX25leHRfbWVtYmVyKGFzeW5jcGxhbnMsIGkp KSA+PSAwKQorCQl7CisJCQlBc3luY1JlcXVlc3QgKmFyZXE7CisKKwkJCWFyZXEgPSBwYWxsb2Mo c2l6ZW9mKEFzeW5jUmVxdWVzdCkpOworCQkJYXJlcS0+cmVxdWVzdG9yID0gKFBsYW5TdGF0ZSAq KSBtZXJnZXN0YXRlOworCQkJYXJlcS0+cmVxdWVzdGVlID0gbWVyZ2VwbGFuc3RhdGVzW2ldOwor CQkJYXJlcS0+cmVxdWVzdF9pbmRleCA9IGk7CisJCQlhcmVxLT5jYWxsYmFja19wZW5kaW5nID0g ZmFsc2U7CisJCQlhcmVxLT5yZXF1ZXN0X2NvbXBsZXRlID0gZmFsc2U7CisJCQlhcmVxLT5yZXN1 bHQgPSBOVUxMOworCisJCQltZXJnZXN0YXRlLT5tc19hc3luY3JlcXVlc3RzW2ldID0gYXJlcTsK KwkJfQorCisJCW1lcmdlc3RhdGUtPm1zX2FzeW5jcmVzdWx0cyA9IChUdXBsZVRhYmxlU2xvdCAq KikKKwkJCXBhbGxvYzAobnBsYW5zICogc2l6ZW9mKFR1cGxlVGFibGVTbG90ICopKTsKKworCQlp ZiAobWVyZ2VzdGF0ZS0+bXNfdmFsaWRfc3VicGxhbnNfaWRlbnRpZmllZCkKKwkJCWNsYXNzaWZ5 X21hdGNoaW5nX3N1YnBsYW5zKG1lcmdlc3RhdGUpOworCX0KKwogCS8qCiAJICogaW5pdGlhbGl6 ZSBzb3J0LWtleSBpbmZvcm1hdGlvbgogCSAqLwpAQCAtMjI2LDE0ICsyOTYsMTggQEAgRXhlY01l cmdlQXBwZW5kKFBsYW5TdGF0ZSAqcHN0YXRlKQogCQlpZiAobm9kZS0+bXNfbnBsYW5zID09IDAp CiAJCQlyZXR1cm4gRXhlY0NsZWFyVHVwbGUobm9kZS0+cHMucHNfUmVzdWx0VHVwbGVTbG90KTsK IAotCQkvKgotCQkgKiBJZiB3ZSd2ZSB5ZXQgdG8gZGV0ZXJtaW5lIHRoZSB2YWxpZCBzdWJwbGFu cyB0aGVuIGRvIHNvIG5vdy4gIElmCi0JCSAqIHJ1bi10aW1lIHBydW5pbmcgaXMgZGlzYWJsZWQg dGhlbiB0aGUgdmFsaWQgc3VicGxhbnMgd2lsbCBhbHdheXMgYmUKLQkJICogc2V0IHRvIGFsbCBz dWJwbGFucy4KLQkJICovCi0JCWlmIChub2RlLT5tc192YWxpZF9zdWJwbGFucyA9PSBOVUxMKQor CQkvKiBJZiB3ZSd2ZSB5ZXQgdG8gZGV0ZXJtaW5lIHRoZSB2YWxpZCBzdWJwbGFucyB0aGVuIGRv IHNvIG5vdy4gKi8KKwkJaWYgKCFub2RlLT5tc192YWxpZF9zdWJwbGFuc19pZGVudGlmaWVkKQor CQl7CiAJCQlub2RlLT5tc192YWxpZF9zdWJwbGFucyA9CiAJCQkJRXhlY0ZpbmRNYXRjaGluZ1N1 YlBsYW5zKG5vZGUtPm1zX3BydW5lX3N0YXRlLCBmYWxzZSwgTlVMTCk7CisJCQlub2RlLT5tc192 YWxpZF9zdWJwbGFuc19pZGVudGlmaWVkID0gdHJ1ZTsKKwkJCWNsYXNzaWZ5X21hdGNoaW5nX3N1 YnBsYW5zKG5vZGUpOworCQl9CisKKwkJLyogSWYgdGhlcmUgYXJlIGFueSBhc3luYyBzdWJwbGFu cywgYmVnaW4gZXhlY3V0aW5nIHRoZW0uICovCisJCWlmIChub2RlLT5tc19uYXN5bmNwbGFucyA+ IDApCisJCQlFeGVjTWVyZ2VBcHBlbmRBc3luY0JlZ2luKG5vZGUpOwogCiAJCS8qCiAJCSAqIEZp cnN0IHRpbWUgdGhyb3VnaDogcHVsbCB0aGUgZmlyc3QgdHVwbGUgZnJvbSBlYWNoIHZhbGlkIHN1 YnBsYW4sCkBAIC0yNDYsNiArMzIwLDE2IEBAIEV4ZWNNZXJnZUFwcGVuZChQbGFuU3RhdGUgKnBz dGF0ZSkKIAkJCWlmICghVHVwSXNOdWxsKG5vZGUtPm1zX3Nsb3RzW2ldKSkKIAkJCQliaW5hcnlo ZWFwX2FkZF91bm9yZGVyZWQobm9kZS0+bXNfaGVhcCwgSW50MzJHZXREYXR1bShpKSk7CiAJCX0K KworCQkvKiBMb29rIGF0IHZhbGlkIGFzeW5jIHN1YnBsYW5zICovCisJCWkgPSAtMTsKKwkJd2hp bGUgKChpID0gYm1zX25leHRfbWVtYmVyKG5vZGUtPm1zX3ZhbGlkX2FzeW5jcGxhbnMsIGkpKSA+ PSAwKQorCQl7CisJCQlFeGVjTWVyZ2VBcHBlbmRBc3luY0dldE5leHQobm9kZSwgaSk7CisJCQlp ZiAoIVR1cElzTnVsbChub2RlLT5tc19zbG90c1tpXSkpCisJCQkJYmluYXJ5aGVhcF9hZGRfdW5v cmRlcmVkKG5vZGUtPm1zX2hlYXAsIEludDMyR2V0RGF0dW0oaSkpOworCQl9CisKIAkJYmluYXJ5 aGVhcF9idWlsZChub2RlLT5tc19oZWFwKTsKIAkJbm9kZS0+bXNfaW5pdGlhbGl6ZWQgPSB0cnVl OwogCX0KQEAgLTI2MCw3ICszNDQsMTMgQEAgRXhlY01lcmdlQXBwZW5kKFBsYW5TdGF0ZSAqcHN0 YXRlKQogCQkgKiB0byBub3QgcHVsbCB0dXBsZXMgdW50aWwgbmVjZXNzYXJ5LikKIAkJICovCiAJ CWkgPSBEYXR1bUdldEludDMyKGJpbmFyeWhlYXBfZmlyc3Qobm9kZS0+bXNfaGVhcCkpOwotCQlu b2RlLT5tc19zbG90c1tpXSA9IEV4ZWNQcm9jTm9kZShub2RlLT5tZXJnZXBsYW5zW2ldKTsKKwkJ aWYgKGJtc19pc19tZW1iZXIoaSwgbm9kZS0+bXNfYXN5bmNwbGFucykpCisJCQlFeGVjTWVyZ2VB cHBlbmRBc3luY0dldE5leHQobm9kZSwgaSk7CisJCWVsc2UKKwkJeworCQkJQXNzZXJ0KGJtc19p c19tZW1iZXIoaSwgbm9kZS0+bXNfdmFsaWRfc3VicGxhbnMpKTsKKwkJCW5vZGUtPm1zX3Nsb3Rz W2ldID0gRXhlY1Byb2NOb2RlKG5vZGUtPm1lcmdlcGxhbnNbaV0pOworCQl9CiAJCWlmICghVHVw SXNOdWxsKG5vZGUtPm1zX3Nsb3RzW2ldKSkKIAkJCWJpbmFyeWhlYXBfcmVwbGFjZV9maXJzdChu b2RlLT5tc19oZWFwLCBJbnQzMkdldERhdHVtKGkpKTsKIAkJZWxzZQpAQCAtMjc2LDYgKzM2Niw4 IEBAIEV4ZWNNZXJnZUFwcGVuZChQbGFuU3RhdGUgKnBzdGF0ZSkKIAl7CiAJCWkgPSBEYXR1bUdl dEludDMyKGJpbmFyeWhlYXBfZmlyc3Qobm9kZS0+bXNfaGVhcCkpOwogCQlyZXN1bHQgPSBub2Rl LT5tc19zbG90c1tpXTsKKwkJLyogRm9yIGFzeW5jIHBsYW4gcmVjb3JkIHRoYXQgd2UgY2FuIGdl dCB0aGUgbmV4dCB0dXBsZSAqLworCQlub2RlLT5tc19oYXNfYXN5bmNyZXN1bHRzID0gYm1zX2Rl bF9tZW1iZXIobm9kZS0+bXNfaGFzX2FzeW5jcmVzdWx0cywgaSk7CiAJfQogCiAJcmV0dXJuIHJl c3VsdDsKQEAgLTM1NSw2ICs0NDcsNyBAQCB2b2lkCiBFeGVjUmVTY2FuTWVyZ2VBcHBlbmQoTWVy Z2VBcHBlbmRTdGF0ZSAqbm9kZSkKIHsKIAlpbnQJCQlpOworCWludAkJCW5hc3luY3BsYW5zID0g bm9kZS0+bXNfbmFzeW5jcGxhbnM7CiAKIAkvKgogCSAqIElmIGFueSBQQVJBTV9FWEVDIFBhcmFt cyB1c2VkIGluIHBydW5pbmcgZXhwcmVzc2lvbnMgaGF2ZSBjaGFuZ2VkLCB0aGVuCkBAIC0zNjUs OCArNDU4LDExIEBAIEV4ZWNSZVNjYW5NZXJnZUFwcGVuZChNZXJnZUFwcGVuZFN0YXRlICpub2Rl KQogCQlibXNfb3ZlcmxhcChub2RlLT5wcy5jaGdQYXJhbSwKIAkJCQkJbm9kZS0+bXNfcHJ1bmVf c3RhdGUtPmV4ZWNwYXJhbWlkcykpCiAJeworCQlub2RlLT5tc192YWxpZF9zdWJwbGFuc19pZGVu dGlmaWVkID0gZmFsc2U7CiAJCWJtc19mcmVlKG5vZGUtPm1zX3ZhbGlkX3N1YnBsYW5zKTsKIAkJ bm9kZS0+bXNfdmFsaWRfc3VicGxhbnMgPSBOVUxMOworCQlibXNfZnJlZShub2RlLT5tc192YWxp ZF9hc3luY3BsYW5zKTsKKwkJbm9kZS0+bXNfdmFsaWRfYXN5bmNwbGFucyA9IE5VTEw7CiAJfQog CiAJZm9yIChpID0gMDsgaSA8IG5vZGUtPm1zX25wbGFuczsgaSsrKQpAQCAtMzg3LDYgKzQ4Mywz NjcgQEAgRXhlY1JlU2Nhbk1lcmdlQXBwZW5kKE1lcmdlQXBwZW5kU3RhdGUgKm5vZGUpCiAJCWlm IChzdWJub2RlLT5jaGdQYXJhbSA9PSBOVUxMKQogCQkJRXhlY1JlU2NhbihzdWJub2RlKTsKIAl9 CisKKwkvKiBSZXNldCBhc3luYyBzdGF0ZSAqLworCWlmIChuYXN5bmNwbGFucyA+IDApCisJewor CQlpID0gLTE7CisJCXdoaWxlICgoaSA9IGJtc19uZXh0X21lbWJlcihub2RlLT5tc19hc3luY3Bs YW5zLCBpKSkgPj0gMCkKKwkJeworCQkJQXN5bmNSZXF1ZXN0ICphcmVxID0gbm9kZS0+bXNfYXN5 bmNyZXF1ZXN0c1tpXTsKKworCQkJYXJlcS0+Y2FsbGJhY2tfcGVuZGluZyA9IGZhbHNlOworCQkJ YXJlcS0+cmVxdWVzdF9jb21wbGV0ZSA9IGZhbHNlOworCQkJYXJlcS0+cmVzdWx0ID0gTlVMTDsK KwkJfQorCisJCWJtc19mcmVlKG5vZGUtPm1zX2FzeW5jcmVtYWluKTsKKwkJbm9kZS0+bXNfYXN5 bmNyZW1haW4gPSBOVUxMOworCQlibXNfZnJlZShub2RlLT5tc19uZWVkcmVxdWVzdCk7CisJCW5v ZGUtPm1zX25lZWRyZXF1ZXN0ID0gTlVMTDsKKwkJYm1zX2ZyZWUobm9kZS0+bXNfaGFzX2FzeW5j cmVzdWx0cyk7CisJCW5vZGUtPm1zX2hhc19hc3luY3Jlc3VsdHMgPSBOVUxMOworCX0KIAliaW5h cnloZWFwX3Jlc2V0KG5vZGUtPm1zX2hlYXApOwogCW5vZGUtPm1zX2luaXRpYWxpemVkID0gZmFs c2U7CiB9CisKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqICAgICAgICAgICAgICBjbGFzc2lmeV9tYXRjaGluZ19z dWJwbGFucworICoKKyAqICAgICAgICAgICAgICBDbGFzc2lmeSB0aGUgbm9kZSdzIG1zX3ZhbGlk X3N1YnBsYW5zIGludG8gc3luYyBvbmVzIGFuZAorICogICAgICAgICAgICAgIGFzeW5jIG9uZXMs IGFkanVzdCBpdCB0byBjb250YWluIHN5bmMgb25lcyBvbmx5LCBhbmQgc2F2ZQorICogICAgICAg ICAgICAgIGFzeW5jIG9uZXMgaW4gdGhlIG5vZGUncyBtc192YWxpZF9hc3luY3BsYW5zLgorICog LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQorICovCitzdGF0aWMgdm9pZAorY2xhc3NpZnlfbWF0Y2hpbmdfc3VicGxhbnMoTWVy Z2VBcHBlbmRTdGF0ZSAqbm9kZSkKK3sKKwlBc3NlcnQobm9kZS0+bXNfdmFsaWRfc3VicGxhbnNf aWRlbnRpZmllZCk7CisKKwkvKiBOb3RoaW5nIHRvIGRvIGlmIHRoZXJlIGFyZSBubyB2YWxpZCBz dWJwbGFucy4gKi8KKwlpZiAoYm1zX2lzX2VtcHR5KG5vZGUtPm1zX3ZhbGlkX3N1YnBsYW5zKSkK Kwl7CisJCW5vZGUtPm1zX2FzeW5jcmVtYWluID0gTlVMTDsKKwkJcmV0dXJuOworCX0KKworCS8q IE5vIHZhbGlkIGFzeW5jIHN1YnBsYW5zIGlkZW50aWZpZWQuICovCisJaWYgKCFjbGFzc2lmeV9t YXRjaGluZ19zdWJwbGFuc19jb21tb24oCisJCQkJCQkJCQkJICAgJm5vZGUtPm1zX3ZhbGlkX3N1 YnBsYW5zLAorCQkJCQkJCQkJCSAgIG5vZGUtPm1zX2FzeW5jcGxhbnMsCisJCQkJCQkJCQkJICAg Jm5vZGUtPm1zX3ZhbGlkX2FzeW5jcGxhbnMpKQorCQlub2RlLT5tc19hc3luY3JlbWFpbiA9IE5V TEw7Cit9CisKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqICAgICAgICAgICAgICBFeGVjTWVyZ2VBcHBlbmRBc3lu Y0JlZ2luCisgKgorICogICAgICAgICAgICAgIEJlZ2luIGV4ZWN1dGluZyBkZXNpZ25lZCBhc3lu Yy1jYXBhYmxlIHN1YnBsYW5zLgorICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICovCitzdGF0aWMgdm9pZAorRXhlY01l cmdlQXBwZW5kQXN5bmNCZWdpbihNZXJnZUFwcGVuZFN0YXRlICpub2RlKQoreworCWludAkJCWk7 CisKKwkvKiBCYWNrd2FyZCBzY2FuIGlzIG5vdCBzdXBwb3J0ZWQgYnkgYXN5bmMtYXdhcmUgTWVy Z2VBcHBlbmRzLiAqLworCUFzc2VydChTY2FuRGlyZWN0aW9uSXNGb3J3YXJkKG5vZGUtPnBzLnN0 YXRlLT5lc19kaXJlY3Rpb24pKTsKKworCS8qIFdlIHNob3VsZCBuZXZlciBiZSBjYWxsZWQgd2hl biB0aGVyZSBhcmUgbm8gc3VicGxhbnMgKi8KKwlBc3NlcnQobm9kZS0+bXNfbnBsYW5zID4gMCk7 CisKKwkvKiBXZSBzaG91bGQgbmV2ZXIgYmUgY2FsbGVkIHdoZW4gdGhlcmUgYXJlIG5vIGFzeW5j IHN1YnBsYW5zLiAqLworCUFzc2VydChub2RlLT5tc19uYXN5bmNwbGFucyA+IDApOworCisJLyog RXhlY01lcmdlQXBwZW5kKCkgaWRlbnRpZmllcyB2YWxpZCBzdWJwbGFucyAqLworCUFzc2VydChu b2RlLT5tc192YWxpZF9zdWJwbGFuc19pZGVudGlmaWVkKTsKKworCS8qIEluaXRpYWxpemUgc3Rh dGUgdmFyaWFibGVzLiAqLworCW5vZGUtPm1zX2FzeW5jcmVtYWluID0gYm1zX2NvcHkobm9kZS0+ bXNfdmFsaWRfYXN5bmNwbGFucyk7CisKKwkvKiBOb3RoaW5nIHRvIGRvIGlmIHRoZXJlIGFyZSBu byB2YWxpZCBhc3luYyBzdWJwbGFucy4gKi8KKwlpZiAoYm1zX2lzX2VtcHR5KG5vZGUtPm1zX2Fz eW5jcmVtYWluKSkKKwkJcmV0dXJuOworCisJLyogTWFrZSBhIHJlcXVlc3QgZm9yIGVhY2ggb2Yg dGhlIHZhbGlkIGFzeW5jIHN1YnBsYW5zLiAqLworCWkgPSAtMTsKKwl3aGlsZSAoKGkgPSBibXNf bmV4dF9tZW1iZXIobm9kZS0+bXNfdmFsaWRfYXN5bmNwbGFucywgaSkpID49IDApCisJeworCQlB c3luY1JlcXVlc3QgKmFyZXEgPSBub2RlLT5tc19hc3luY3JlcXVlc3RzW2ldOworCisJCUFzc2Vy dChhcmVxLT5yZXF1ZXN0X2luZGV4ID09IGkpOworCQlBc3NlcnQoIWFyZXEtPmNhbGxiYWNrX3Bl bmRpbmcpOworCisJCS8qIERvIHRoZSBhY3R1YWwgd29yay4gKi8KKwkJRXhlY0FzeW5jUmVxdWVz dChhcmVxKTsKKwl9Cit9CisKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqICAgICAgICAgICAgICBFeGVjTWVyZ2VB cHBlbmRBc3luY0dldE5leHQKKyAqCisgKiAgICAgICAgICAgICAgR2V0IHRoZSBuZXh0IHR1cGxl IGZyb20gc3BlY2lmaWVkIGFzeW5jaHJvbm91cyBzdWJwbGFuLgorICogLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICovCitz dGF0aWMgdm9pZAorRXhlY01lcmdlQXBwZW5kQXN5bmNHZXROZXh0KE1lcmdlQXBwZW5kU3RhdGUg Km5vZGUsIGludCBtcGxhbikKK3sKKwlub2RlLT5tc19zbG90c1ttcGxhbl0gPSBOVUxMOworCisJ LyogUmVxdWVzdCBhIHR1cGxlIGFzeW5jaHJvbm91c2x5LiAqLworCWlmIChFeGVjTWVyZ2VBcHBl bmRBc3luY1JlcXVlc3Qobm9kZSwgbXBsYW4pKQorCQlyZXR1cm47CisKKwkvKgorCSAqIG5vZGUt Pm1zX2FzeW5jcmVtYWluIGNhbiBiZSBOVUxMIGlmIHdlIGhhdmUgZmV0Y2hlZCB0dXBsZXMsIGJ1 dCBoYXZlbid0CisJICogcmV0dXJuZWQgdGhlbSB5ZXQuIEluIHRoaXMgY2FzZSBFeGVjTWVyZ2VB cHBlbmRBc3luY1JlcXVlc3QoKSBhYm92ZQorCSAqIGp1c3QgcmV0dXJucyB0dXBsZXMgd2l0aG91 dCBwZXJmb3JtaW5nIGEgcmVxdWVzdC4KKwkgKi8KKwl3aGlsZSAoYm1zX2lzX21lbWJlcihtcGxh biwgbm9kZS0+bXNfYXN5bmNyZW1haW4pKQorCXsKKwkJQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKTsK KworCQkvKiBXYWl0IG9yIHBvbGwgZm9yIGFzeW5jIGV2ZW50cy4gKi8KKwkJRXhlY01lcmdlQXBw ZW5kQXN5bmNFdmVudFdhaXQobm9kZSk7CisKKwkJLyogUmVxdWVzdCBhIHR1cGxlIGFzeW5jaHJv bm91c2x5LiAqLworCQlpZiAoRXhlY01lcmdlQXBwZW5kQXN5bmNSZXF1ZXN0KG5vZGUsIG1wbGFu KSkKKwkJCXJldHVybjsKKworCQkvKgorCQkgKiBXYWl0aW5nIHVudGlsIHRoZXJlJ3Mgbm8gYXN5 bmMgcmVxdWVzdHMgcGVuZGluZyBvciB3ZSBnb3Qgc29tZQorCQkgKiB0dXBsZXMgZnJvbSBvdXIg cmVxdWVzdAorCQkgKi8KKwl9CisKKwkvKiBObyB0dXBsZXMgKi8KKwlyZXR1cm47Cit9CisKKy8q IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KKyAqICAgICAgICAgICAgICBFeGVjTWVyZ2VBcHBlbmRBc3luY1JlcXVlc3QKKyAq CisgKiAgICAgICAgICAgICAgUmVxdWVzdCBhIHR1cGxlIGFzeW5jaHJvbm91c2x5LgorICogLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQorICovCitzdGF0aWMgYm9vbAorRXhlY01lcmdlQXBwZW5kQXN5bmNSZXF1ZXN0KE1lcmdl QXBwZW5kU3RhdGUgKm5vZGUsIGludCBtcGxhbikKK3sKKwlCaXRtYXBzZXQgICpuZWVkcmVxdWVz dDsKKwlpbnQJCQlpOworCisJLyoKKwkgKiBJZiB3ZSd2ZSBhbHJlYWR5IGZldGNoZWQgbmVjZXNz YXJ5IGRhdGEsIGp1c3QgcmV0dXJuIGl0CisJICovCisJaWYgKGJtc19pc19tZW1iZXIobXBsYW4s IG5vZGUtPm1zX2hhc19hc3luY3Jlc3VsdHMpKQorCXsKKwkJbm9kZS0+bXNfc2xvdHNbbXBsYW5d ID0gbm9kZS0+bXNfYXN5bmNyZXN1bHRzW21wbGFuXTsKKwkJcmV0dXJuIHRydWU7CisJfQorCisJ LyoKKwkgKiBHZXQgYSBsaXN0IG9mIG1lbWJlcnMgd2hpY2ggY2FuIHByb2Nlc3MgcmVxdWVzdCBh bmQgZG9uJ3QgaGF2ZSBkYXRhCisJICogcmVhZHkuCisJICovCisJbmVlZHJlcXVlc3QgPSBOVUxM OworCWkgPSAtMTsKKwl3aGlsZSAoKGkgPSBibXNfbmV4dF9tZW1iZXIobm9kZS0+bXNfbmVlZHJl cXVlc3QsIGkpKSA+PSAwKQorCXsKKwkJaWYgKCFibXNfaXNfbWVtYmVyKGksIG5vZGUtPm1zX2hh c19hc3luY3Jlc3VsdHMpKQorCQkJbmVlZHJlcXVlc3QgPSBibXNfYWRkX21lbWJlcihuZWVkcmVx dWVzdCwgaSk7CisJfQorCisJLyoKKwkgKiBJZiB0aGVyZSdzIG5vIG1lbWJlcnMsIHdoaWNoIHN0 aWxsIG5lZWQgcmVxdWVzdCwgbm8gbmVlZCB0byBzZW5kIGl0LgorCSAqLworCWlmIChibXNfaXNf ZW1wdHkobmVlZHJlcXVlc3QpKQorCQlyZXR1cm4gZmFsc2U7CisKKwkvKiBDbGVhciBtc19uZWVk cmVxdWVzdCBmbGFnLCBhcyB3ZSBhcmUgZ29pbmcgdG8gc2VuZCByZXF1ZXN0cyBub3cgKi8KKwlu b2RlLT5tc19uZWVkcmVxdWVzdCA9IGJtc19kZWxfbWVtYmVycyhub2RlLT5tc19uZWVkcmVxdWVz dCwgbmVlZHJlcXVlc3QpOworCisJLyogTWFrZSBhIG5ldyByZXF1ZXN0IGZvciBlYWNoIG9mIHRo ZSBhc3luYyBzdWJwbGFucyB0aGF0IG5lZWQgaXQuICovCisJaSA9IC0xOworCXdoaWxlICgoaSA9 IGJtc19uZXh0X21lbWJlcihuZWVkcmVxdWVzdCwgaSkpID49IDApCisJeworCQlBc3luY1JlcXVl c3QgKmFyZXEgPSBub2RlLT5tc19hc3luY3JlcXVlc3RzW2ldOworCisJCS8qCisJCSAqIFdlJ3Zl IGp1c3QgY2hlY2tlZCB0aGF0IHN1YnBsYW4gZG9lc24ndCBhbHJlYWR5IGhhdmUgc29tZSBmZXRj aGVkCisJCSAqIGRhdGEKKwkJICovCisJCUFzc2VydCghYm1zX2lzX21lbWJlcihpLCBub2RlLT5t c19oYXNfYXN5bmNyZXN1bHRzKSk7CisKKwkJLyogRG8gdGhlIGFjdHVhbCB3b3JrLiAqLworCQlF eGVjQXN5bmNSZXF1ZXN0KGFyZXEpOworCX0KKwlibXNfZnJlZShuZWVkcmVxdWVzdCk7CisKKwkv KiBSZXR1cm4gbmVlZGVkIGFzeW5jaHJvbm91c2x5LWdlbmVyYXRlZCByZXN1bHRzIGlmIGFueS4g Ki8KKwlpZiAoYm1zX2lzX21lbWJlcihtcGxhbiwgbm9kZS0+bXNfaGFzX2FzeW5jcmVzdWx0cykp CisJeworCQlub2RlLT5tc19zbG90c1ttcGxhbl0gPSBub2RlLT5tc19hc3luY3Jlc3VsdHNbbXBs YW5dOworCQlyZXR1cm4gdHJ1ZTsKKwl9CisKKwlyZXR1cm4gZmFsc2U7Cit9CisKKy8qIC0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KKyAqICAgICAgICAgICAgICBFeGVjQXN5bmNNZXJnZUFwcGVuZFJlc3BvbnNlCisgKgorICog ICAgICAgICAgICAgIFJlY2VpdmUgYSByZXNwb25zZSBmcm9tIGFuIGFzeW5jaHJvbm91cyByZXF1 ZXN0IHdlIG1hZGUuCisgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKi8KK3ZvaWQKK0V4ZWNBc3luY01lcmdlQXBwZW5k UmVzcG9uc2UoQXN5bmNSZXF1ZXN0ICphcmVxKQoreworCU1lcmdlQXBwZW5kU3RhdGUgKm5vZGUg PSAoTWVyZ2VBcHBlbmRTdGF0ZSAqKSBhcmVxLT5yZXF1ZXN0b3I7CisJVHVwbGVUYWJsZVNsb3Qg KnNsb3QgPSBhcmVxLT5yZXN1bHQ7CisKKwkvKiBUaGUgcmVzdWx0IHNob3VsZCBiZSBhIFR1cGxl VGFibGVTbG90IG9yIE5VTEwuICovCisJQXNzZXJ0KHNsb3QgPT0gTlVMTCB8fCBJc0Eoc2xvdCwg VHVwbGVUYWJsZVNsb3QpKTsKKwkvKiBXZSBzaG91bGQgaGFuZGxlIHByZXZpb3VzIGFzeW5jIHJl c3VsdCBwcmlvciB0byBnZXR0aW5nIG5ldyBvbmUgKi8KKwlBc3NlcnQoIWJtc19pc19tZW1iZXIo YXJlcS0+cmVxdWVzdF9pbmRleCwgbm9kZS0+bXNfaGFzX2FzeW5jcmVzdWx0cykpOworCisJbm9k ZS0+bXNfYXN5bmNyZXN1bHRzW2FyZXEtPnJlcXVlc3RfaW5kZXhdID0gTlVMTDsKKwkvKiBOb3Ro aW5nIHRvIGRvIGlmIHRoZSByZXF1ZXN0IGlzIHBlbmRpbmcuICovCisJaWYgKCFhcmVxLT5yZXF1 ZXN0X2NvbXBsZXRlKQorCXsKKwkJLyogVGhlIHJlcXVlc3Qgd291bGQgaGF2ZSBiZWVuIHBlbmRp bmcgZm9yIGEgY2FsbGJhY2suICovCisJCUFzc2VydChhcmVxLT5jYWxsYmFja19wZW5kaW5nKTsK KwkJcmV0dXJuOworCX0KKworCS8qIElmIHRoZSByZXN1bHQgaXMgTlVMTCBvciBhbiBlbXB0eSBz bG90LCB0aGVyZSdzIG5vdGhpbmcgbW9yZSB0byBkby4gKi8KKwlpZiAoVHVwSXNOdWxsKHNsb3Qp KQorCXsKKwkJLyogVGhlIGVuZGluZyBzdWJwbGFuIHdvdWxkbid0IGhhdmUgYmVlbiBwZW5kaW5n IGZvciBhIGNhbGxiYWNrLiAqLworCQlBc3NlcnQoIWFyZXEtPmNhbGxiYWNrX3BlbmRpbmcpOwor CQlub2RlLT5tc19hc3luY3JlbWFpbiA9IGJtc19kZWxfbWVtYmVyKG5vZGUtPm1zX2FzeW5jcmVt YWluLAorCQkJCQkJCQkJCQkgIGFyZXEtPnJlcXVlc3RfaW5kZXgpOworCQlyZXR1cm47CisJfQor CisJLyogTWFyayB0aGF0IHRoZSBhc3luYyByZXF1ZXN0IGhhcyBhIHJlc3VsdCAqLworCW5vZGUt Pm1zX2hhc19hc3luY3Jlc3VsdHMgPSBibXNfYWRkX21lbWJlcihub2RlLT5tc19oYXNfYXN5bmNy ZXN1bHRzLAorCQkJCQkJCQkJCQkgICBhcmVxLT5yZXF1ZXN0X2luZGV4KTsKKwkvKiBTYXZlIHJl c3VsdCBzbyB3ZSBjYW4gcmV0dXJuIGl0LiAqLworCW5vZGUtPm1zX2FzeW5jcmVzdWx0c1thcmVx LT5yZXF1ZXN0X2luZGV4XSA9IHNsb3Q7CisKKwkvKgorCSAqIE1hcmsgdGhlIHN1YnBsYW4gdGhh dCByZXR1cm5lZCBhIHJlc3VsdCBhcyByZWFkeSBmb3IgYSBuZXcgcmVxdWVzdC4gIFdlCisJICog ZG9uJ3QgbGF1bmNoIGFub3RoZXIgb25lIGhlcmUgaW1tZWRpYXRlbHkgYmVjYXVzZSBpdCBtaWdo dCBjb21wbGV0ZS4KKwkgKi8KKwlub2RlLT5tc19uZWVkcmVxdWVzdCA9IGJtc19hZGRfbWVtYmVy KG5vZGUtPm1zX25lZWRyZXF1ZXN0LAorCQkJCQkJCQkJCSAgYXJlcS0+cmVxdWVzdF9pbmRleCk7 Cit9CisKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KKyAqCQlFeGVjTWVyZ2VBcHBlbmRBc3luY0V2ZW50V2FpdAorICoK KyAqCQlXYWl0IG9yIHBvbGwgZm9yIGZpbGUgZGVzY3JpcHRvciBldmVudHMgYW5kIGZpcmUgY2Fs bGJhY2tzLgorICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorICovCitzdGF0aWMgdm9pZAorRXhlY01lcmdlQXBwZW5kQXN5 bmNFdmVudFdhaXQoTWVyZ2VBcHBlbmRTdGF0ZSAqbm9kZSkKK3sKKwlpbnQJCQluZXZlbnRzID0g bm9kZS0+bXNfbmFzeW5jcGxhbnMgKyAyOyAvKiBvbmUgZm9yIFBNIGRlYXRoIGFuZAorCQkJCQkJ CQkJCQkJCSAqIG9uZSBmb3IgbGF0Y2ggKi8KKwlXYWl0RXZlbnQJb2NjdXJyZWRfZXZlbnRbRVZF TlRfQlVGRkVSX1NJWkVdOworCWludAkJCW5vY2N1cnJlZDsKKwlpbnQJCQlpOworCisJLyogV2Ug c2hvdWxkIG5ldmVyIGJlIGNhbGxlZCB3aGVuIHRoZXJlIGFyZSBubyB2YWxpZCBhc3luYyBzdWJw bGFucy4gKi8KKwlBc3NlcnQoYm1zX251bV9tZW1iZXJzKG5vZGUtPm1zX2FzeW5jcmVtYWluKSA+ IDApOworCisJbm9kZS0+bXNfZXZlbnRzZXQgPSBDcmVhdGVXYWl0RXZlbnRTZXQoQ3VycmVudFJl c291cmNlT3duZXIsIG5ldmVudHMpOworCUFkZFdhaXRFdmVudFRvU2V0KG5vZGUtPm1zX2V2ZW50 c2V0LCBXTF9FWElUX09OX1BNX0RFQVRILCBQR0lOVkFMSURfU09DS0VULAorCQkJCQkgIE5VTEws IE5VTEwpOworCisJLyogR2l2ZSBlYWNoIHdhaXRpbmcgc3VicGxhbiBhIGNoYW5jZSB0byBhZGQg YW4gZXZlbnQuICovCisJaSA9IC0xOworCXdoaWxlICgoaSA9IGJtc19uZXh0X21lbWJlcihub2Rl LT5tc19hc3luY3BsYW5zLCBpKSkgPj0gMCkKKwl7CisJCUFzeW5jUmVxdWVzdCAqYXJlcSA9IG5v ZGUtPm1zX2FzeW5jcmVxdWVzdHNbaV07CisKKwkJaWYgKGFyZXEtPmNhbGxiYWNrX3BlbmRpbmcp CisJCQlFeGVjQXN5bmNDb25maWd1cmVXYWl0KGFyZXEpOworCX0KKworCS8qCisJICogTm8gbmVl ZCBmb3IgZnVydGhlciBwcm9jZXNzaW5nIGlmIG5vbmUgb2YgdGhlIHN1YnBsYW5zIGNvbmZpZ3Vy ZWQgYW55CisJICogZXZlbnRzLgorCSAqLworCWlmIChHZXROdW1SZWdpc3RlcmVkV2FpdEV2ZW50 cyhub2RlLT5tc19ldmVudHNldCkgPT0gMSkKKwl7CisJCUZyZWVXYWl0RXZlbnRTZXQobm9kZS0+ bXNfZXZlbnRzZXQpOworCQlub2RlLT5tc19ldmVudHNldCA9IE5VTEw7CisJCXJldHVybjsKKwl9 CisKKwkvKgorCSAqIEFkZCB0aGUgcHJvY2VzcyBsYXRjaCB0byB0aGUgc2V0LCBzbyB0aGF0IHdl IHdha2UgdXAgdG8gcHJvY2VzcyB0aGUKKwkgKiBzdGFuZGFyZCBpbnRlcnJ1cHRzIHdpdGggQ0hF Q0tfRk9SX0lOVEVSUlVQVFMoKS4KKwkgKgorCSAqIE5PVEU6IEZvciBoaXN0b3JpY2FsIHJlYXNv bnMsIGl0J3MgaW1wb3J0YW50IHRoYXQgdGhpcyBpcyBhZGRlZCB0byB0aGUKKwkgKiBXYWl0RXZl bnRTZXQgYWZ0ZXIgdGhlIEV4ZWNBc3luY0NvbmZpZ3VyZVdhaXQoKSBjYWxscy4gIE5hbWVseSwK KwkgKiBwb3N0Z3Jlc19mZHcgY2FsbHMgIkdldE51bVJlZ2lzdGVyZWRXYWl0RXZlbnRzKHNldCkg PT0gMSIgdG8gY2hlY2sgaWYKKwkgKiBhbnkgb3RoZXIgZXZlbnRzIGFyZSBpbiB0aGUgc2V0LiAg VGhhdCdzIGEgcG9vciBkZXNpZ24sIGl0J3MKKwkgKiBxdWVzdGlvbmFibGUgZm9yIHBvc3RncmVz X2ZkdyB0byBiZSBkb2luZyB0aGF0IGluIHRoZSBmaXJzdCBwbGFjZSwgYnV0CisJICogd2UgY2Fu bm90IGNoYW5nZSBpdCBub3cuICBUaGUgcGF0dGVybiBoYXMgcG9zc2libHkgYmVlbiBjb3BpZWQg dG8gb3RoZXIKKwkgKiBleHRlbnNpb25zIHRvby4KKwkgKi8KKwlBZGRXYWl0RXZlbnRUb1NldChu b2RlLT5tc19ldmVudHNldCwgV0xfTEFUQ0hfU0VULCBQR0lOVkFMSURfU09DS0VULAorCQkJCQkg IE15TGF0Y2gsIE5VTEwpOworCisJLyogUmV0dXJuIGF0IG1vc3QgRVZFTlRfQlVGRkVSX1NJWkUg ZXZlbnRzIGluIG9uZSBjYWxsLiAqLworCWlmIChuZXZlbnRzID4gRVZFTlRfQlVGRkVSX1NJWkUp CisJCW5ldmVudHMgPSBFVkVOVF9CVUZGRVJfU0laRTsKKworCS8qCisJICogV2FpdCB1bnRpbCBh dCBsZWFzdCBvbmUgZXZlbnQgb2NjdXJzLgorCSAqLworCW5vY2N1cnJlZCA9IFdhaXRFdmVudFNl dFdhaXQobm9kZS0+bXNfZXZlbnRzZXQsIC0xIC8qIG5vIHRpbWVvdXQgKi8gLCBvY2N1cnJlZF9l dmVudCwKKwkJCQkJCQkJIG5ldmVudHMsIFdBSVRfRVZFTlRfQVBQRU5EX1JFQURZKTsKKwlGcmVl V2FpdEV2ZW50U2V0KG5vZGUtPm1zX2V2ZW50c2V0KTsKKwlub2RlLT5tc19ldmVudHNldCA9IE5V TEw7CisJaWYgKG5vY2N1cnJlZCA9PSAwKQorCQlyZXR1cm47CisKKwkvKiBEZWxpdmVyIG5vdGlm aWNhdGlvbnMuICovCisJZm9yIChpID0gMDsgaSA8IG5vY2N1cnJlZDsgaSsrKQorCXsKKwkJV2Fp dEV2ZW50ICAqdyA9ICZvY2N1cnJlZF9ldmVudFtpXTsKKworCQkvKgorCQkgKiBFYWNoIHdhaXRp bmcgc3VicGxhbiBzaG91bGQgaGF2ZSByZWdpc3RlcmVkIGl0cyB3YWl0IGV2ZW50IHdpdGgKKwkJ ICogdXNlcl9kYXRhIHBvaW50aW5nIGJhY2sgdG8gaXRzIEFzeW5jUmVxdWVzdC4KKwkJICovCisJ CWlmICgody0+ZXZlbnRzICYgV0xfU09DS0VUX1JFQURBQkxFKSAhPSAwKQorCQl7CisJCQlBc3lu Y1JlcXVlc3QgKmFyZXEgPSAoQXN5bmNSZXF1ZXN0ICopIHctPnVzZXJfZGF0YTsKKworCQkJaWYg KGFyZXEtPmNhbGxiYWNrX3BlbmRpbmcpCisJCQl7CisJCQkJLyoKKwkJCQkgKiBNYXJrIGl0IGFz IG5vIGxvbmdlciBuZWVkaW5nIGEgY2FsbGJhY2suICBXZSBtdXN0IGRvIHRoaXMKKwkJCQkgKiBi ZWZvcmUgZGlzcGF0Y2hpbmcgdGhlIGNhbGxiYWNrIGluIGNhc2UgdGhlIGNhbGxiYWNrIHJlc2V0 cworCQkJCSAqIHRoZSBmbGFnLgorCQkJCSAqLworCQkJCWFyZXEtPmNhbGxiYWNrX3BlbmRpbmcg PSBmYWxzZTsKKworCQkJCS8qIERvIHRoZSBhY3R1YWwgd29yay4gKi8KKwkJCQlFeGVjQXN5bmNO b3RpZnkoYXJlcSk7CisJCQl9CisJCX0KKworCQkvKiBIYW5kbGUgc3RhbmRhcmQgaW50ZXJydXB0 cyAqLworCQlpZiAoKHctPmV2ZW50cyAmIFdMX0xBVENIX1NFVCkgIT0gMCkKKwkJeworCQkJUmVz ZXRMYXRjaChNeUxhdGNoKTsKKwkJCUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7CisJCX0KKwl9Cit9 CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGF0aC9jb3N0c2l6ZS5jIGIvc3Jj L2JhY2tlbmQvb3B0aW1pemVyL3BhdGgvY29zdHNpemUuYwppbmRleCA1NDkzMWNkNmUyYS4uZTdk NzQxYTc2OTkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wYXRoL2Nvc3RzaXpl LmMKKysrIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BhdGgvY29zdHNpemUuYwpAQCAtMTYzLDYg KzE2Myw3IEBAIGJvb2wJCWVuYWJsZV9wYXJhbGxlbF9oYXNoID0gdHJ1ZTsKIGJvb2wJCWVuYWJs ZV9wYXJ0aXRpb25fcHJ1bmluZyA9IHRydWU7CiBib29sCQllbmFibGVfcHJlc29ydGVkX2FnZ3Jl Z2F0ZSA9IHRydWU7CiBib29sCQllbmFibGVfYXN5bmNfYXBwZW5kID0gdHJ1ZTsKK2Jvb2wJCWVu YWJsZV9hc3luY19tZXJnZV9hcHBlbmQgPSB0cnVlOwogCiB0eXBlZGVmIHN0cnVjdAogewpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vY3JlYXRlcGxhbi5jIGIvc3JjL2Jh Y2tlbmQvb3B0aW1pemVyL3BsYW4vY3JlYXRlcGxhbi5jCmluZGV4IDA1ZmFjNjkzOTg5Li5mYzBl NWM2MmVhOSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vY3JlYXRlcGxh bi5jCisrKyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL2NyZWF0ZXBsYW4uYwpAQCAtMTQ2 Niw2ICsxNDY2LDcgQEAgY3JlYXRlX21lcmdlX2FwcGVuZF9wbGFuKFBsYW5uZXJJbmZvICpyb290 LCBNZXJnZUFwcGVuZFBhdGggKmJlc3RfcGF0aCwKIAlMaXN0CSAgICpzdWJwbGFucyA9IE5JTDsK IAlMaXN0Q2VsbCAgICpzdWJwYXRoczsKIAlSZWxPcHRJbmZvICpyZWwgPSBiZXN0X3BhdGgtPnBh dGgucGFyZW50OworCWJvb2wJCWNvbnNpZGVyX2FzeW5jID0gZmFsc2U7CiAKIAkvKgogCSAqIFdl IGRvbid0IGhhdmUgdGhlIGFjdHVhbCBjcmVhdGlvbiBvZiB0aGUgTWVyZ2VBcHBlbmQgbm9kZSBz cGxpdCBvdXQKQEAgLTE0ODAsNiArMTQ4MSwxMCBAQCBjcmVhdGVfbWVyZ2VfYXBwZW5kX3BsYW4o UGxhbm5lckluZm8gKnJvb3QsIE1lcmdlQXBwZW5kUGF0aCAqYmVzdF9wYXRoLAogCXBsYW4tPnJp Z2h0dHJlZSA9IE5VTEw7CiAJbm9kZS0+YXBwcmVsaWRzID0gcmVsLT5yZWxpZHM7CiAKKwljb25z aWRlcl9hc3luYyA9IChlbmFibGVfYXN5bmNfbWVyZ2VfYXBwZW5kICYmCisJCQkJCSAgIWJlc3Rf cGF0aC0+cGF0aC5wYXJhbGxlbF9zYWZlICYmCisJCQkJCSAgbGlzdF9sZW5ndGgoYmVzdF9wYXRo LT5zdWJwYXRocykgPiAxKTsKKwogCS8qCiAJICogQ29tcHV0ZSBzb3J0IGNvbHVtbiBpbmZvLCBh bmQgYWRqdXN0IE1lcmdlQXBwZW5kJ3MgdGxpc3QgYXMgbmVlZGVkLgogCSAqIEJlY2F1c2Ugd2Ug cGFzcyBhZGp1c3RfdGxpc3RfaW5fcGxhY2UgPSB0cnVlLCB3ZSBtYXkgaWdub3JlIHRoZQpAQCAt MTU4MCw2ICsxNTg1LDEwIEBAIGNyZWF0ZV9tZXJnZV9hcHBlbmRfcGxhbihQbGFubmVySW5mbyAq cm9vdCwgTWVyZ2VBcHBlbmRQYXRoICpiZXN0X3BhdGgsCiAJCQlzdWJwbGFuID0gc29ydF9wbGFu OwogCQl9CiAKKwkJLyogSWYgbmVlZGVkLCBjaGVjayB0byBzZWUgaWYgc3VicGxhbiBjYW4gYmUg ZXhlY3V0ZWQgYXN5bmNocm9ub3VzbHkgKi8KKwkJaWYgKGNvbnNpZGVyX2FzeW5jKQorCQkJbWFy a19hc3luY19jYXBhYmxlX3BsYW4oc3VicGxhbiwgc3VicGF0aCk7CisKIAkJc3VicGxhbnMgPSBs YXBwZW5kKHN1YnBsYW5zLCBzdWJwbGFuKTsKIAl9CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L3V0aWxzL21pc2MvZ3VjX3BhcmFtZXRlcnMuZGF0IGIvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9n dWNfcGFyYW1ldGVycy5kYXQKaW5kZXggYWMwYzdjMzZjNTYuLmI2MGIyM2ZhNGI5IDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC91dGlscy9taXNjL2d1Y19wYXJhbWV0ZXJzLmRhdAorKysgYi9zcmMv YmFja2VuZC91dGlscy9taXNjL2d1Y19wYXJhbWV0ZXJzLmRhdApAQCAtODIxLDYgKzgyMSwxNCBA QAogICBib290X3ZhbCA9PiAndHJ1ZScsCiB9LAogCit7IG5hbWUgPT4gJ2VuYWJsZV9hc3luY19t ZXJnZV9hcHBlbmQnLCB0eXBlID0+ICdib29sJywgY29udGV4dCA9PiAnUEdDX1VTRVJTRVQnLCBn cm91cCA9PiAnUVVFUllfVFVOSU5HX01FVEhPRCcsCisgIHNob3J0X2Rlc2MgPT4gJ0VuYWJsZXMg dGhlIHBsYW5uZXJcJ3MgdXNlIG9mIGFzeW5jIG1lcmdlIGFwcGVuZCBwbGFucy4nLAorICBmbGFn cyA9PiAnR1VDX0VYUExBSU4nLAorICB2YXJpYWJsZSA9PiAnZW5hYmxlX2FzeW5jX21lcmdlX2Fw cGVuZCcsCisgIGJvb3RfdmFsID0+ICd0cnVlJywKK30sCisKKwogeyBuYW1lID0+ICdlbmFibGVf Yml0bWFwc2NhbicsIHR5cGUgPT4gJ2Jvb2wnLCBjb250ZXh0ID0+ICdQR0NfVVNFUlNFVCcsIGdy b3VwID0+ICdRVUVSWV9UVU5JTkdfTUVUSE9EJywKICAgc2hvcnRfZGVzYyA9PiAnRW5hYmxlcyB0 aGUgcGxhbm5lclwncyB1c2Ugb2YgYml0bWFwLXNjYW4gcGxhbnMuJywKICAgZmxhZ3MgPT4gJ0dV Q19FWFBMQUlOJywKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvcG9zdGdyZXNx bC5jb25mLnNhbXBsZSBiL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvcG9zdGdyZXNxbC5jb25mLnNh bXBsZQppbmRleCBkYzllMjI1NWY4YS4uZDk0OWQyYWFkMDQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL3V0aWxzL21pc2MvcG9zdGdyZXNxbC5jb25mLnNhbXBsZQorKysgYi9zcmMvYmFja2VuZC91 dGlscy9taXNjL3Bvc3RncmVzcWwuY29uZi5zYW1wbGUKQEAgLTQwNSw2ICs0MDUsNyBAQAogIyAt IFBsYW5uZXIgTWV0aG9kIENvbmZpZ3VyYXRpb24gLQogCiAjZW5hYmxlX2FzeW5jX2FwcGVuZCA9 IG9uCisjZW5hYmxlX2FzeW5jX21lcmdlX2FwcGVuZCA9IG9uCiAjZW5hYmxlX2JpdG1hcHNjYW4g PSBvbgogI2VuYWJsZV9nYXRoZXJtZXJnZSA9IG9uCiAjZW5hYmxlX2hhc2hhZ2cgPSBvbgpkaWZm IC0tZ2l0IGEvc3JjL2luY2x1ZGUvZXhlY3V0b3Ivbm9kZU1lcmdlQXBwZW5kLmggYi9zcmMvaW5j bHVkZS9leGVjdXRvci9ub2RlTWVyZ2VBcHBlbmQuaAppbmRleCA0ZWIwNWRjMzBkNi4uZTNmZGIy NmVjZTYgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL25vZGVNZXJnZUFwcGVuZC5o CisrKyBiL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL25vZGVNZXJnZUFwcGVuZC5oCkBAIC0xOSw1ICsx OSw2IEBACiBleHRlcm4gTWVyZ2VBcHBlbmRTdGF0ZSAqRXhlY0luaXRNZXJnZUFwcGVuZChNZXJn ZUFwcGVuZCAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpOwogZXh0ZXJuIHZvaWQg RXhlY0VuZE1lcmdlQXBwZW5kKE1lcmdlQXBwZW5kU3RhdGUgKm5vZGUpOwogZXh0ZXJuIHZvaWQg RXhlY1JlU2Nhbk1lcmdlQXBwZW5kKE1lcmdlQXBwZW5kU3RhdGUgKm5vZGUpOworZXh0ZXJuIHZv aWQgRXhlY0FzeW5jTWVyZ2VBcHBlbmRSZXNwb25zZShBc3luY1JlcXVlc3QgKmFyZXEpOwogCiAj ZW5kaWYJCQkJCQkJLyogTk9ERU1FUkdFQVBQRU5EX0ggKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNs dWRlL25vZGVzL2V4ZWNub2Rlcy5oIGIvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmgKaW5k ZXggMzk2ODQyOWY5OTEuLjU4ODdjYmY0ZjE2IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rl cy9leGVjbm9kZXMuaAorKysgYi9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaApAQCAtMTU0 NSwxMCArMTU0NSw2OSBAQCB0eXBlZGVmIHN0cnVjdCBNZXJnZUFwcGVuZFN0YXRlCiAJVHVwbGVU YWJsZVNsb3QgKiptc19zbG90czsJLyogYXJyYXkgb2YgbGVuZ3RoIG1zX25wbGFucyAqLwogCXN0 cnVjdCBiaW5hcnloZWFwICptc19oZWFwOyAvKiBiaW5hcnkgaGVhcCBvZiBzbG90IGluZGljZXMg Ki8KIAlib29sCQltc19pbml0aWFsaXplZDsgLyogYXJlIHN1YnBsYW5zIHN0YXJ0ZWQ/ICovCisJ Qml0bWFwc2V0ICAqbXNfYXN5bmNwbGFuczsJLyogYXN5bmNocm9ub3VzIHBsYW5zIGluZGV4ZXMg Ki8KKwlpbnQJCQltc19uYXN5bmNwbGFuczsgLyogIyBvZiBhc3luY2hyb25vdXMgcGxhbnMgKi8K KwlBc3luY1JlcXVlc3QgKiptc19hc3luY3JlcXVlc3RzOwkvKiBhcnJheSBvZiBBc3luY1JlcXVl c3RzICovCisJVHVwbGVUYWJsZVNsb3QgKiptc19hc3luY3Jlc3VsdHM7CS8qIHVucmV0dXJuZWQg cmVzdWx0cyBvZiBhc3luYyBwbGFucyAqLworCUJpdG1hcHNldCAgKm1zX2hhc19hc3luY3Jlc3Vs dHM7CS8qIHBsYW5zIHdoaWNoIGhhdmUgYXN5bmMgcmVzdWx0cyAqLworCUJpdG1hcHNldCAgKm1z X2FzeW5jcmVtYWluOyAvKiByZW1haW5pbmcgYXN5bmNocm9ub3VzIHBsYW5zICovCisJQml0bWFw c2V0ICAqbXNfbmVlZHJlcXVlc3Q7IC8qIGFzeW5jaHJvbm91cyBwbGFucyBuZWVkaW5nIGEgbmV3 IHJlcXVlc3QgKi8KKwlzdHJ1Y3QgV2FpdEV2ZW50U2V0ICptc19ldmVudHNldDsJLyogV2FpdEV2 ZW50U2V0IHVzZWQgdG8gY29uZmlndXJlIGZpbGUKKwkJCQkJCQkJCQkgKiBkZXNjcmlwdG9yIHdh aXQgZXZlbnRzICovCiAJc3RydWN0IFBhcnRpdGlvblBydW5lU3RhdGUgKm1zX3BydW5lX3N0YXRl OworCWJvb2wJCW1zX3ZhbGlkX3N1YnBsYW5zX2lkZW50aWZpZWQ7CS8qIGlzIG1zX3ZhbGlkX3N1 YnBsYW5zIHZhbGlkPyAqLwogCUJpdG1hcHNldCAgKm1zX3ZhbGlkX3N1YnBsYW5zOworCUJpdG1h cHNldCAgKm1zX3ZhbGlkX2FzeW5jcGxhbnM7CS8qIHZhbGlkIGFzeW5jaHJvbm91cyBwbGFucyBp bmRleGVzICovCiB9IE1lcmdlQXBwZW5kU3RhdGU7CiAKKy8qIEdldHRlcnMgZm9yIEFwcGVuZFN0 YXRlIGFuZCBNZXJnZUFwcGVuZFN0YXRlICovCitzdGF0aWMgaW5saW5lIHN0cnVjdCBXYWl0RXZl bnRTZXQgKgorR2V0QXBwZW5kRXZlbnRTZXQoUGxhblN0YXRlICpwcykKK3sKKwlBc3NlcnQoSXNB KHBzLCBBcHBlbmRTdGF0ZSkgfHwgSXNBKHBzLCBNZXJnZUFwcGVuZFN0YXRlKSk7CisKKwlpZiAo SXNBKHBzLCBBcHBlbmRTdGF0ZSkpCisJCXJldHVybiAoKEFwcGVuZFN0YXRlICopIHBzKS0+YXNf ZXZlbnRzZXQ7CisJZWxzZQorCQlyZXR1cm4gKChNZXJnZUFwcGVuZFN0YXRlICopIHBzKS0+bXNf ZXZlbnRzZXQ7Cit9CisKK3N0YXRpYyBpbmxpbmUgQml0bWFwc2V0ICoKK0dldE5lZWRSZXF1ZXN0 KFBsYW5TdGF0ZSAqcHMpCit7CisJQXNzZXJ0KElzQShwcywgQXBwZW5kU3RhdGUpIHx8IElzQShw cywgTWVyZ2VBcHBlbmRTdGF0ZSkpOworCisJaWYgKElzQShwcywgQXBwZW5kU3RhdGUpKQorCQly ZXR1cm4gKChBcHBlbmRTdGF0ZSAqKSBwcyktPmFzX25lZWRyZXF1ZXN0OworCWVsc2UKKwkJcmV0 dXJuICgoTWVyZ2VBcHBlbmRTdGF0ZSAqKSBwcyktPm1zX25lZWRyZXF1ZXN0OworfQorCisvKiBD b21tb24gcGFydCBvZiBjbGFzc2lmeV9tYXRjaGluZ19zdWJwbGFucygpIGZvciBBcHBlbmQgYW5k IE1lcmdlQXBwZW5kICovCitzdGF0aWMgaW5saW5lIGJvb2wKK2NsYXNzaWZ5X21hdGNoaW5nX3N1 YnBsYW5zX2NvbW1vbihCaXRtYXBzZXQgKip2YWxpZF9zdWJwbGFucywKKwkJCQkJCQkJICBCaXRt YXBzZXQgKmFzeW5jcGxhbnMsCisJCQkJCQkJCSAgQml0bWFwc2V0ICoqdmFsaWRfYXN5bmNwbGFu cykKK3sKKwlBc3NlcnQoKnZhbGlkX2FzeW5jcGxhbnMgPT0gTlVMTCk7CisKKwkvKiBDaGVja2Vk IGJ5IGNsYXNzaWZ5X21hdGNoaW5nX3N1YnBsYW5zKCkgKi8KKwlBc3NlcnQoIWJtc19pc19lbXB0 eSgqdmFsaWRfc3VicGxhbnMpKTsKKworCS8qIE5vdGhpbmcgdG8gZG8gaWYgdGhlcmUgYXJlIG5v IHZhbGlkIGFzeW5jIHN1YnBsYW5zLiAqLworCWlmICghYm1zX292ZXJsYXAoKnZhbGlkX3N1YnBs YW5zLCBhc3luY3BsYW5zKSkKKwkJcmV0dXJuIGZhbHNlOworCisJLyogR2V0IHZhbGlkIGFzeW5j IHN1YnBsYW5zLiAqLworCSp2YWxpZF9hc3luY3BsYW5zID0gYm1zX2ludGVyc2VjdChhc3luY3Bs YW5zLAorCQkJCQkJCQkJICAqdmFsaWRfc3VicGxhbnMpOworCisJLyogQWRqdXN0IHRoZSB2YWxp ZCBzdWJwbGFucyB0byBjb250YWluIHN5bmMgc3VicGxhbnMgb25seS4gKi8KKwkqdmFsaWRfc3Vi cGxhbnMgPSBibXNfZGVsX21lbWJlcnMoKnZhbGlkX3N1YnBsYW5zLAorCQkJCQkJCQkJICAqdmFs aWRfYXN5bmNwbGFucyk7CisJcmV0dXJuIHRydWU7Cit9CisKIC8qIC0tLS0tLS0tLS0tLS0tLS0K ICAqCSBSZWN1cnNpdmVVbmlvblN0YXRlIGluZm9ybWF0aW9uCiAgKgpkaWZmIC0tZ2l0IGEvc3Jj L2luY2x1ZGUvb3B0aW1pemVyL2Nvc3QuaCBiL3NyYy9pbmNsdWRlL29wdGltaXplci9jb3N0LmgK aW5kZXggYjUyM2JjZGE4ZjMuLmZlZTQ5MWI3N2FkIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9v cHRpbWl6ZXIvY29zdC5oCisrKyBiL3NyYy9pbmNsdWRlL29wdGltaXplci9jb3N0LmgKQEAgLTcw LDYgKzcwLDcgQEAgZXh0ZXJuIFBHRExMSU1QT1JUIGJvb2wgZW5hYmxlX3BhcmFsbGVsX2hhc2g7 CiBleHRlcm4gUEdETExJTVBPUlQgYm9vbCBlbmFibGVfcGFydGl0aW9uX3BydW5pbmc7CiBleHRl cm4gUEdETExJTVBPUlQgYm9vbCBlbmFibGVfcHJlc29ydGVkX2FnZ3JlZ2F0ZTsKIGV4dGVybiBQ R0RMTElNUE9SVCBib29sIGVuYWJsZV9hc3luY19hcHBlbmQ7CitleHRlcm4gUEdETExJTVBPUlQg Ym9vbCBlbmFibGVfYXN5bmNfbWVyZ2VfYXBwZW5kOwogZXh0ZXJuIFBHRExMSU1QT1JUIGludCBj b25zdHJhaW50X2V4Y2x1c2lvbjsKIAogZXh0ZXJuIGRvdWJsZSBpbmRleF9wYWdlc19mZXRjaGVk KGRvdWJsZSB0dXBsZXNfZmV0Y2hlZCwgQmxvY2tOdW1iZXIgcGFnZXMsCmRpZmYgLS1naXQgYS9z cmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3N5c3ZpZXdzLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3Mv ZXhwZWN0ZWQvc3lzdmlld3Mub3V0CmluZGV4IDA0MTFkYjgzMmYxLi4xOTRiMWY5NTI4OSAxMDA2 NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9zeXN2aWV3cy5vdXQKKysrIGIvc3Jj L3Rlc3QvcmVncmVzcy9leHBlY3RlZC9zeXN2aWV3cy5vdXQKQEAgLTE0OSw2ICsxNDksNyBAQCBz ZWxlY3QgbmFtZSwgc2V0dGluZyBmcm9tIHBnX3NldHRpbmdzIHdoZXJlIG5hbWUgbGlrZSAnZW5h YmxlJSc7CiAgICAgICAgICAgICAgIG5hbWUgICAgICAgICAgICAgIHwgc2V0dGluZyAKIC0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLQogIGVuYWJsZV9hc3luY19hcHBl bmQgICAgICAgICAgICB8IG9uCisgZW5hYmxlX2FzeW5jX21lcmdlX2FwcGVuZCAgICAgIHwgb24K ICBlbmFibGVfYml0bWFwc2NhbiAgICAgICAgICAgICAgfCBvbgogIGVuYWJsZV9kaXN0aW5jdF9y ZW9yZGVyaW5nICAgICB8IG9uCiAgZW5hYmxlX2VhZ2VyX2FnZ3JlZ2F0ZSAgICAgICAgIHwgb24K QEAgLTE3Myw3ICsxNzQsNyBAQCBzZWxlY3QgbmFtZSwgc2V0dGluZyBmcm9tIHBnX3NldHRpbmdz IHdoZXJlIG5hbWUgbGlrZSAnZW5hYmxlJSc7CiAgZW5hYmxlX3NlcXNjYW4gICAgICAgICAgICAg ICAgIHwgb24KICBlbmFibGVfc29ydCAgICAgICAgICAgICAgICAgICAgfCBvbgogIGVuYWJsZV90 aWRzY2FuICAgICAgICAgICAgICAgICB8IG9uCi0oMjUgcm93cykKKygyNiByb3dzKQogCiAtLSBU aGVyZSBhcmUgYWx3YXlzIHdhaXQgZXZlbnQgZGVzY3JpcHRpb25zIGZvciB2YXJpb3VzIHR5cGVz LiAgSW5qZWN0aW9uUG9pbnQKIC0tIG1heSBiZSBwcmVzZW50IG9yIGFic2VudCwgZGVwZW5kaW5n IG9uIGhpc3Rvcnkgc2luY2UgbGFzdCBwb3N0bWFzdGVyIHN0YXJ0LgotLSAKMi41MS4yCgo= --e147d251f115bb34b72810d838043cc88f341e4e2ed82c30478cd353a0b1 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=v12-0003-Common-infrastructure-to-MergeAppend-and-Append-.patch Content-Type: text/plain; charset=utf-8; name=v12-0003-Common-infrastructure-to-MergeAppend-and-Append-.patch RnJvbSBmMjY3NzUyMjJkMjM4NDQxYTViZDJmYTYwNzU3ZDA5Y2Y1MGZkMmNkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXRoZXVzIEFsY2FudGFyYSA8bXRocy5kZXZAcG0ubWU+CkRh dGU6IFR1ZSwgMTYgRGVjIDIwMjUgMTY6MzI6MTQgLTAzMDAKU3ViamVjdDogW1BBVENIIHYxMiAz LzNdIENvbW1vbiBpbmZyYXN0cnVjdHVyZSB0byBNZXJnZUFwcGVuZCBhbmQgQXBwZW5kIG5vZGVz CgpUaGlzIGNvbW1pdCBpbnRyb2R1Y2VzIHRoZSBleGVjQXBwZW5kLmMgZmlsZSB0byBjZW50cmFs aXplIGV4ZWN1dG9yCm9wZXJhdGlvbnMgdGhhdCBjYW4gYmUgc2hhcmVkIGJldHdlZW4gTWVyZ2VB cHBlbmQgYW5kIEFwcGVuZCBub2Rlcy4KClRoZSBsb2dpYyBmb3IgaW5pdGlhbGl6aW5nIGFuZCBl bmRpbmcgdGhlIG5vZGVzLCBhcyB3ZWxsIGFzIGluaXRpYWxpemluZwphc3luY2hyb25vdXMgZXhl Y3V0aW9uLCBpcyB2ZXJ5IHNpbWlsYXIgZm9yIGJvdGggTWVyZ2VBcHBlbmQgYW5kIEFwcGVuZC4K VG8gcmVkdWNlIHJlZHVuZGFuY3ksIHRoZSBkdXBsaWNhdGVkIGNvZGUgaGFzIGJlZW4gbW92ZWQg dG8gZXhlY0FwcGVuZC5jCnNvIHRoYXQgdGhlc2Ugbm9kZXMgY2FuIHJldXNlIHRoZSBjb21tb24g aW1wbGVtZW50YXRpb24uCgpUaGUgY29kZSByZXNwb25zaWJsZSBmb3IgYWN0dWFsbHkgZmV0Y2hp bmcgdGhlIHR1cGxlcyByZW1haW5zIHNwZWNpZmljCnRvIGVhY2ggbm9kZSBhbmQgd2FzIG5vdCBy ZWZhY3RvcmVkIGludG8gZXhlY0FwcGVuZC5jIHRvIHByZXNlcnZlIHRoZQp1bmlxdWUgZXhlY3V0 aW9uIHJlcXVpcmVtZW50cyBvZiBlYWNoIG5vZGUgdHlwZS4KLS0tCiBjb250cmliL3BnX292ZXJl eHBsYWluL3BnX292ZXJleHBsYWluLmMgfCAgIDQgKy0KIGNvbnRyaWIvcG9zdGdyZXNfZmR3L3Bv c3RncmVzX2Zkdy5jICAgICB8ICAgOCArLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvZXhwbGFpbi5j ICAgICAgICAgIHwgIDI2ICstCiBzcmMvYmFja2VuZC9leGVjdXRvci9NYWtlZmlsZSAgICAgICAg ICAgfCAgIDEgKwogc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY0FtaS5jICAgICAgICAgIHwgICAy ICstCiBzcmMvYmFja2VuZC9leGVjdXRvci9leGVjQXBwZW5kLmMgICAgICAgfCA0MDkgKysrKysr KysrKysrKysrKysrKwogc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY0N1cnJlbnQuYyAgICAgIHwg ICA0ICstCiBzcmMvYmFja2VuZC9leGVjdXRvci9leGVjUHJvY25vZGUuYyAgICAgfCAgIDggKy0K IHNyYy9iYWNrZW5kL2V4ZWN1dG9yL21lc29uLmJ1aWxkICAgICAgICB8ICAgMSArCiBzcmMvYmFj a2VuZC9leGVjdXRvci9ub2RlQXBwZW5kLmMgICAgICAgfCA0OTcgKysrKystLS0tLS0tLS0tLS0t LS0tLS0tCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTWVyZ2VBcHBlbmQuYyAgfCA0MTYgKysr LS0tLS0tLS0tLS0tLS0tLS0KIHNyYy9iYWNrZW5kL25vZGVzL25vZGVGdW5jcy5jICAgICAgICAg ICB8ICAgOCArLQogc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vY3JlYXRlcGxhbi5jIHwgIDM0 ICstCiBzcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9zZXRyZWZzLmMgICAgfCAgNDQgKy0tCiBz cmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9zdWJzZWxlY3QuYyAgfCAgIDQgKy0KIHNyYy9iYWNr ZW5kL3V0aWxzL2FkdC9ydWxldXRpbHMuYyAgICAgICB8ICAgOCArLQogc3JjL2luY2x1ZGUvZXhl Y3V0b3IvZXhlY0FwcGVuZC5oICAgICAgIHwgIDYwICsrKwogc3JjL2luY2x1ZGUvbm9kZXMvZXhl Y25vZGVzLmggICAgICAgICAgIHwgMTA1ICsrLS0tCiBzcmMvaW5jbHVkZS9ub2Rlcy9wbGFubm9k ZXMuaCAgICAgICAgICAgfCAgNDUgKy0tCiAxOSBmaWxlcyBjaGFuZ2VkLCA3NDYgaW5zZXJ0aW9u cygrKSwgOTM4IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy9iYWNrZW5kL2V4 ZWN1dG9yL2V4ZWNBcHBlbmQuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy9pbmNsdWRlL2V4ZWN1 dG9yL2V4ZWNBcHBlbmQuaAoKZGlmZiAtLWdpdCBhL2NvbnRyaWIvcGdfb3ZlcmV4cGxhaW4vcGdf b3ZlcmV4cGxhaW4uYyBiL2NvbnRyaWIvcGdfb3ZlcmV4cGxhaW4vcGdfb3ZlcmV4cGxhaW4uYwpp bmRleCBmY2RjMTcwMTJkYS4uN2YxOGMyYWIwNmMgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvcGdfb3Zl cmV4cGxhaW4vcGdfb3ZlcmV4cGxhaW4uYworKysgYi9jb250cmliL3BnX292ZXJleHBsYWluL3Bn X292ZXJleHBsYWluLmMKQEAgLTIyOCwxMiArMjI4LDEyIEBAIG92ZXJleHBsYWluX3Blcl9ub2Rl X2hvb2soUGxhblN0YXRlICpwbGFuc3RhdGUsIExpc3QgKmFuY2VzdG9ycywKIAkJCQlicmVhazsK IAkJCWNhc2UgVF9BcHBlbmQ6CiAJCQkJb3ZlcmV4cGxhaW5fYml0bWFwc2V0KCJBcHBlbmQgUlRJ cyIsCi0JCQkJCQkJCQkgICgoQXBwZW5kICopIHBsYW4pLT5hcHByZWxpZHMsCisJCQkJCQkJCQkg ICgoQXBwZW5kICopIHBsYW4pLT5hcC5hcHByZWxpZHMsCiAJCQkJCQkJCQkgIGVzKTsKIAkJCQli cmVhazsKIAkJCWNhc2UgVF9NZXJnZUFwcGVuZDoKIAkJCQlvdmVyZXhwbGFpbl9iaXRtYXBzZXQo IkFwcGVuZCBSVElzIiwKLQkJCQkJCQkJCSAgKChNZXJnZUFwcGVuZCAqKSBwbGFuKS0+YXBwcmVs aWRzLAorCQkJCQkJCQkJICAoKE1lcmdlQXBwZW5kICopIHBsYW4pLT5hcC5hcHByZWxpZHMsCiAJ CQkJCQkJCQkgIGVzKTsKIAkJCQlicmVhazsKIAkJCWNhc2UgVF9SZXN1bHQ6CmRpZmYgLS1naXQg YS9jb250cmliL3Bvc3RncmVzX2Zkdy9wb3N0Z3Jlc19mZHcuYyBiL2NvbnRyaWIvcG9zdGdyZXNf ZmR3L3Bvc3RncmVzX2Zkdy5jCmluZGV4IGJkNTUxYTFkYjcyLi5iMDFhZDQwYWQxNyAxMDA2NDQK LS0tIGEvY29udHJpYi9wb3N0Z3Jlc19mZHcvcG9zdGdyZXNfZmR3LmMKKysrIGIvY29udHJpYi9w b3N0Z3Jlc19mZHcvcG9zdGdyZXNfZmR3LmMKQEAgLTI0MTIsOCArMjQxMiw4IEBAIGZpbmRfbW9k aWZ5dGFibGVfc3VicGxhbihQbGFubmVySW5mbyAqcm9vdCwKIAl7CiAJCUFwcGVuZAkgICAqYXBw ZW5kcGxhbiA9IChBcHBlbmQgKikgc3VicGxhbjsKIAotCQlpZiAoc3VicGxhbl9pbmRleCA8IGxp c3RfbGVuZ3RoKGFwcGVuZHBsYW4tPmFwcGVuZHBsYW5zKSkKLQkJCXN1YnBsYW4gPSAoUGxhbiAq KSBsaXN0X250aChhcHBlbmRwbGFuLT5hcHBlbmRwbGFucywgc3VicGxhbl9pbmRleCk7CisJCWlm IChzdWJwbGFuX2luZGV4IDwgbGlzdF9sZW5ndGgoYXBwZW5kcGxhbi0+YXAuc3VicGxhbnMpKQor CQkJc3VicGxhbiA9IChQbGFuICopIGxpc3RfbnRoKGFwcGVuZHBsYW4tPmFwLnN1YnBsYW5zLCBz dWJwbGFuX2luZGV4KTsKIAl9CiAJZWxzZSBpZiAoSXNBKHN1YnBsYW4sIFJlc3VsdCkgJiYKIAkJ CSBvdXRlclBsYW4oc3VicGxhbikgIT0gTlVMTCAmJgpAQCAtMjQyMSw4ICsyNDIxLDggQEAgZmlu ZF9tb2RpZnl0YWJsZV9zdWJwbGFuKFBsYW5uZXJJbmZvICpyb290LAogCXsKIAkJQXBwZW5kCSAg ICphcHBlbmRwbGFuID0gKEFwcGVuZCAqKSBvdXRlclBsYW4oc3VicGxhbik7CiAKLQkJaWYgKHN1 YnBsYW5faW5kZXggPCBsaXN0X2xlbmd0aChhcHBlbmRwbGFuLT5hcHBlbmRwbGFucykpCi0JCQlz dWJwbGFuID0gKFBsYW4gKikgbGlzdF9udGgoYXBwZW5kcGxhbi0+YXBwZW5kcGxhbnMsIHN1YnBs YW5faW5kZXgpOworCQlpZiAoc3VicGxhbl9pbmRleCA8IGxpc3RfbGVuZ3RoKGFwcGVuZHBsYW4t PmFwLnN1YnBsYW5zKSkKKwkJCXN1YnBsYW4gPSAoUGxhbiAqKSBsaXN0X250aChhcHBlbmRwbGFu LT5hcC5zdWJwbGFucywgc3VicGxhbl9pbmRleCk7CiAJfQogCiAJLyogTm93LCBoYXZlIHdlIGdv dCBhIEZvcmVpZ25TY2FuIG9uIHRoZSBkZXNpcmVkIHJlbD8gKi8KZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL2NvbW1hbmRzL2V4cGxhaW4uYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4cGxhaW4u YwppbmRleCA1YTYzOTA2MzFlYi4uM2VhYTFmNzQ1OWUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L2NvbW1hbmRzL2V4cGxhaW4uYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9leHBsYWluLmMK QEAgLTEyMjQsMTEgKzEyMjQsMTEgQEAgRXhwbGFpblByZVNjYW5Ob2RlKFBsYW5TdGF0ZSAqcGxh bnN0YXRlLCBCaXRtYXBzZXQgKipyZWxzX3VzZWQpCiAJCQlicmVhazsKIAkJY2FzZSBUX0FwcGVu ZDoKIAkJCSpyZWxzX3VzZWQgPSBibXNfYWRkX21lbWJlcnMoKnJlbHNfdXNlZCwKLQkJCQkJCQkJ CQkgKChBcHBlbmQgKikgcGxhbiktPmFwcHJlbGlkcyk7CisJCQkJCQkJCQkJICgoQXBwZW5kICop IHBsYW4pLT5hcC5hcHByZWxpZHMpOwogCQkJYnJlYWs7CiAJCWNhc2UgVF9NZXJnZUFwcGVuZDoK IAkJCSpyZWxzX3VzZWQgPSBibXNfYWRkX21lbWJlcnMoKnJlbHNfdXNlZCwKLQkJCQkJCQkJCQkg KChNZXJnZUFwcGVuZCAqKSBwbGFuKS0+YXBwcmVsaWRzKTsKKwkJCQkJCQkJCQkgKChNZXJnZUFw cGVuZCAqKSBwbGFuKS0+YXAuYXBwcmVsaWRzKTsKIAkJCWJyZWFrOwogCQljYXNlIFRfUmVzdWx0 OgogCQkJKnJlbHNfdXNlZCA9IGJtc19hZGRfbWVtYmVycygqcmVsc191c2VkLApAQCAtMTI3Miw3 ICsxMjcyLDcgQEAgcGxhbl9pc19kaXNhYmxlZChQbGFuICpwbGFuKQogCQkgKiBpbmNsdWRlcyBh bnkgcnVuLXRpbWUgcHJ1bmVkIGNoaWxkcmVuLiAgSWdub3JpbmcgdGhvc2UgY291bGQgZ2l2ZQog CQkgKiB1cyB0aGUgaW5jb3JyZWN0IG51bWJlciBvZiBkaXNhYmxlZCBub2Rlcy4KIAkJICovCi0J CWZvcmVhY2gobGMsIGFwbGFuLT5hcHBlbmRwbGFucykKKwkJZm9yZWFjaChsYywgYXBsYW4tPmFw LnN1YnBsYW5zKQogCQl7CiAJCQlQbGFuCSAgICpzdWJwbGFuID0gbGZpcnN0KGxjKTsKIApAQCAt MTI4OSw3ICsxMjg5LDcgQEAgcGxhbl9pc19kaXNhYmxlZChQbGFuICpwbGFuKQogCQkgKiBpbmNs dWRlcyBhbnkgcnVuLXRpbWUgcHJ1bmVkIGNoaWxkcmVuLiAgSWdub3JpbmcgdGhvc2UgY291bGQg Z2l2ZQogCQkgKiB1cyB0aGUgaW5jb3JyZWN0IG51bWJlciBvZiBkaXNhYmxlZCBub2Rlcy4KIAkJ ICovCi0JCWZvcmVhY2gobGMsIG1hcGxhbi0+bWVyZ2VwbGFucykKKwkJZm9yZWFjaChsYywgbWFw bGFuLT5hcC5zdWJwbGFucykKIAkJewogCQkJUGxhbgkgICAqc3VicGxhbiA9IGxmaXJzdChsYyk7 CiAKQEAgLTIzMzYsMTMgKzIzMzYsMTMgQEAgRXhwbGFpbk5vZGUoUGxhblN0YXRlICpwbGFuc3Rh dGUsIExpc3QgKmFuY2VzdG9ycywKIAlzd2l0Y2ggKG5vZGVUYWcocGxhbikpCiAJewogCQljYXNl IFRfQXBwZW5kOgotCQkJRXhwbGFpbk1pc3NpbmdNZW1iZXJzKCgoQXBwZW5kU3RhdGUgKikgcGxh bnN0YXRlKS0+YXNfbnBsYW5zLAotCQkJCQkJCQkgIGxpc3RfbGVuZ3RoKCgoQXBwZW5kICopIHBs YW4pLT5hcHBlbmRwbGFucyksCisJCQlFeHBsYWluTWlzc2luZ01lbWJlcnMoKChBcHBlbmRTdGF0 ZSAqKSBwbGFuc3RhdGUpLT5hcy5ucGxhbnMsCisJCQkJCQkJCSAgbGlzdF9sZW5ndGgoKChBcHBl bmQgKikgcGxhbiktPmFwLnN1YnBsYW5zKSwKIAkJCQkJCQkJICBlcyk7CiAJCQlicmVhazsKIAkJ Y2FzZSBUX01lcmdlQXBwZW5kOgotCQkJRXhwbGFpbk1pc3NpbmdNZW1iZXJzKCgoTWVyZ2VBcHBl bmRTdGF0ZSAqKSBwbGFuc3RhdGUpLT5tc19ucGxhbnMsCi0JCQkJCQkJCSAgbGlzdF9sZW5ndGgo KChNZXJnZUFwcGVuZCAqKSBwbGFuKS0+bWVyZ2VwbGFucyksCisJCQlFeHBsYWluTWlzc2luZ01l bWJlcnMoKChNZXJnZUFwcGVuZFN0YXRlICopIHBsYW5zdGF0ZSktPm1zLm5wbGFucywKKwkJCQkJ CQkJICBsaXN0X2xlbmd0aCgoKE1lcmdlQXBwZW5kICopIHBsYW4pLT5hcC5zdWJwbGFucyksCiAJ CQkJCQkJCSAgZXMpOwogCQkJYnJlYWs7CiAJCWRlZmF1bHQ6CkBAIC0yMzg2LDEzICsyMzg2LDEz IEBAIEV4cGxhaW5Ob2RlKFBsYW5TdGF0ZSAqcGxhbnN0YXRlLCBMaXN0ICphbmNlc3RvcnMsCiAJ c3dpdGNoIChub2RlVGFnKHBsYW4pKQogCXsKIAkJY2FzZSBUX0FwcGVuZDoKLQkJCUV4cGxhaW5N ZW1iZXJOb2RlcygoKEFwcGVuZFN0YXRlICopIHBsYW5zdGF0ZSktPmFwcGVuZHBsYW5zLAotCQkJ CQkJCSAgICgoQXBwZW5kU3RhdGUgKikgcGxhbnN0YXRlKS0+YXNfbnBsYW5zLAorCQkJRXhwbGFp bk1lbWJlck5vZGVzKCgoQXBwZW5kU3RhdGUgKikgcGxhbnN0YXRlKS0+YXMucGxhbnMsCisJCQkJ CQkJICAgKChBcHBlbmRTdGF0ZSAqKSBwbGFuc3RhdGUpLT5hcy5ucGxhbnMsCiAJCQkJCQkJICAg YW5jZXN0b3JzLCBlcyk7CiAJCQlicmVhazsKIAkJY2FzZSBUX01lcmdlQXBwZW5kOgotCQkJRXhw bGFpbk1lbWJlck5vZGVzKCgoTWVyZ2VBcHBlbmRTdGF0ZSAqKSBwbGFuc3RhdGUpLT5tZXJnZXBs YW5zLAotCQkJCQkJCSAgICgoTWVyZ2VBcHBlbmRTdGF0ZSAqKSBwbGFuc3RhdGUpLT5tc19ucGxh bnMsCisJCQlFeHBsYWluTWVtYmVyTm9kZXMoKChNZXJnZUFwcGVuZFN0YXRlICopIHBsYW5zdGF0 ZSktPm1zLnBsYW5zLAorCQkJCQkJCSAgICgoTWVyZ2VBcHBlbmRTdGF0ZSAqKSBwbGFuc3RhdGUp LT5tcy5ucGxhbnMsCiAJCQkJCQkJICAgYW5jZXN0b3JzLCBlcyk7CiAJCQlicmVhazsKIAkJY2Fz ZSBUX0JpdG1hcEFuZDoKQEAgLTI2MDYsNyArMjYwNiw3IEBAIHN0YXRpYyB2b2lkCiBzaG93X21l cmdlX2FwcGVuZF9rZXlzKE1lcmdlQXBwZW5kU3RhdGUgKm1zdGF0ZSwgTGlzdCAqYW5jZXN0b3Jz LAogCQkJCQkgICBFeHBsYWluU3RhdGUgKmVzKQogewotCU1lcmdlQXBwZW5kICpwbGFuID0gKE1l cmdlQXBwZW5kICopIG1zdGF0ZS0+cHMucGxhbjsKKwlNZXJnZUFwcGVuZCAqcGxhbiA9IChNZXJn ZUFwcGVuZCAqKSBtc3RhdGUtPm1zLnBzLnBsYW47CiAKIAlzaG93X3NvcnRfZ3JvdXBfa2V5cygo UGxhblN0YXRlICopIG1zdGF0ZSwgIlNvcnQgS2V5IiwKIAkJCQkJCSBwbGFuLT5udW1Db2xzLCAw LCBwbGFuLT5zb3J0Q29sSWR4LApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvTWFr ZWZpbGUgYi9zcmMvYmFja2VuZC9leGVjdXRvci9NYWtlZmlsZQppbmRleCAxMTExOGQwY2UwMi4u NjZiNjJmY2E5MjEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL01ha2VmaWxlCisr KyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL01ha2VmaWxlCkBAIC0xNSw2ICsxNSw3IEBAIGluY2x1 ZGUgJCh0b3BfYnVpbGRkaXIpL3NyYy9NYWtlZmlsZS5nbG9iYWwKIE9CSlMgPSBcCiAJZXhlY0Ft aS5vIFwKIAlleGVjQXN5bmMubyBcCisJZXhlY0FwcGVuZC5vIFwKIAlleGVjQ3VycmVudC5vIFwK IAlleGVjRXhwci5vIFwKIAlleGVjRXhwckludGVycC5vIFwKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL2V4ZWN1dG9yL2V4ZWNBbWkuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNBbWkuYwpp bmRleCAxZDBlOGFkNTdiNC4uNWM4OTcwNDhiYTMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4 ZWN1dG9yL2V4ZWNBbWkuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjQW1pLmMKQEAg LTUzNyw3ICs1MzcsNyBAQCBFeGVjU3VwcG9ydHNCYWNrd2FyZFNjYW4oUGxhbiAqbm9kZSkKIAkJ CQlpZiAoKChBcHBlbmQgKikgbm9kZSktPm5hc3luY3BsYW5zID4gMCkKIAkJCQkJcmV0dXJuIGZh bHNlOwogCi0JCQkJZm9yZWFjaChsLCAoKEFwcGVuZCAqKSBub2RlKS0+YXBwZW5kcGxhbnMpCisJ CQkJZm9yZWFjaChsLCAoKEFwcGVuZCAqKSBub2RlKS0+YXAuc3VicGxhbnMpCiAJCQkJewogCQkJ CQlpZiAoIUV4ZWNTdXBwb3J0c0JhY2t3YXJkU2NhbigoUGxhbiAqKSBsZmlyc3QobCkpKQogCQkJ CQkJcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY0Fw cGVuZC5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY0FwcGVuZC5jCm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5iNzIyMmFiNzk0MAotLS0gL2Rldi9udWxsCisrKyBi L3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNBcHBlbmQuYwpAQCAtMCwwICsxLDQwOSBAQAorLyot LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCisgKgorICogZXhlY0FwcGVuZC5jCisgKgkgIFRoaXMgY29kZSBwcm92 aWRlcyBzdXBwb3J0IGZ1bmN0aW9ucyBmb3IgZXhlY3V0aW5nIE1lcmdlQXBwZW5kIGFuZCBBcHBl bmQKKyAqCSAgbm9kZXMuCisgKgorICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAxOTk2LTIwMjUs IFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3VwCisgKiBQb3J0aW9ucyBDb3B5cmln aHQgKGMpIDE5OTQsIFJlZ2VudHMgb2YgdGhlIFVuaXZlcnNpdHkgb2YgQ2FsaWZvcm5pYQorICoK KyAqCisgKiBJREVOVElGSUNBVElPTgorICoJICBzcmMvYmFja2VuZC9leGVjdXRvci9leGVjQXBw ZW5kLmMKKyAqCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLworI2luY2x1ZGUgInBvc3RncmVzLmgi CisjaW5jbHVkZSAiZXhlY3V0b3IvZXhlY3V0b3IuaCIKKyNpbmNsdWRlICJleGVjdXRvci9leGVj QXBwZW5kLmgiCisjaW5jbHVkZSAiZXhlY3V0b3IvZXhlY0FzeW5jLmgiCisjaW5jbHVkZSAiZXhl Y3V0b3IvZXhlY1BhcnRpdGlvbi5oIgorI2luY2x1ZGUgInN0b3JhZ2UvbGF0Y2guaCIKKyNpbmNs dWRlICJzdG9yYWdlL3dhaXRldmVudHNldC5oIgorI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgorCisj ZGVmaW5lIEVWRU5UX0JVRkZFUl9TSVpFCQkJMTYKKworLyogIEJlZ2luIGFsbCBvZiB0aGUgc3Vi c2NhbnMgb2YgYW4gQXBwZW5kZXIgbm9kZS4gKi8KK3ZvaWQKK0V4ZWNJbml0QXBwZW5kZXIoQXBw ZW5kZXJTdGF0ZSAqIHN0YXRlLAorCQkJCSBBcHBlbmRlciAqIG5vZGUsCisJCQkJIEVTdGF0ZSAq ZXN0YXRlLAorCQkJCSBpbnQgZWZsYWdzLAorCQkJCSBpbnQgZmlyc3RfcGFydGlhbF9wbGFuLAor CQkJCSBpbnQgKmZpcnN0X3ZhbGlkX3BhcnRpYWxfcGxhbikKK3sKKwlQbGFuU3RhdGUgKiphcHBl bmRwbGFuc3RhdGVzOworCWNvbnN0IFR1cGxlVGFibGVTbG90T3BzICphcHBlbmRvcHM7CisJQml0 bWFwc2V0ICAqdmFsaWRzdWJwbGFuczsKKwlCaXRtYXBzZXQgICphc3luY3BsYW5zOworCWludAkJ CW5wbGFuczsKKwlpbnQJCQluYXN5bmNwbGFuczsKKwlpbnQJCQlmaXJzdHZhbGlkOworCWludAkJ CWksCisJCQkJajsKKworCS8qIElmIHJ1bi10aW1lIHBhcnRpdGlvbiBwcnVuaW5nIGlzIGVuYWJs ZWQsIHRoZW4gc2V0IHRoYXQgdXAgbm93ICovCisJaWYgKG5vZGUtPnBhcnRfcHJ1bmVfaW5kZXgg Pj0gMCkKKwl7CisJCVBhcnRpdGlvblBydW5lU3RhdGUgKnBydW5lc3RhdGU7CisKKwkJLyoKKwkJ ICogU2V0IHVwIHBydW5pbmcgZGF0YSBzdHJ1Y3R1cmUuICBUaGlzIGFsc28gaW5pdGlhbGl6ZXMg dGhlIHNldCBvZgorCQkgKiBzdWJwbGFucyB0byBpbml0aWFsaXplICh2YWxpZHN1YnBsYW5zKSBi eSB0YWtpbmcgaW50byBhY2NvdW50IHRoZQorCQkgKiByZXN1bHQgb2YgcGVyZm9ybWluZyBpbml0 aWFsIHBydW5pbmcgaWYgYW55LgorCQkgKi8KKwkJcHJ1bmVzdGF0ZSA9IEV4ZWNJbml0UGFydGl0 aW9uRXhlY1BydW5pbmcoJnN0YXRlLT5wcywKKwkJCQkJCQkJCQkJCSAgbGlzdF9sZW5ndGgobm9k ZS0+c3VicGxhbnMpLAorCQkJCQkJCQkJCQkJICBub2RlLT5wYXJ0X3BydW5lX2luZGV4LAorCQkJ CQkJCQkJCQkJICBub2RlLT5hcHByZWxpZHMsCisJCQkJCQkJCQkJCQkgICZ2YWxpZHN1YnBsYW5z KTsKKwkJc3RhdGUtPnBydW5lX3N0YXRlID0gcHJ1bmVzdGF0ZTsKKwkJbnBsYW5zID0gYm1zX251 bV9tZW1iZXJzKHZhbGlkc3VicGxhbnMpOworCisJCS8qCisJCSAqIFdoZW4gbm8gcnVuLXRpbWUg cHJ1bmluZyBpcyByZXF1aXJlZCBhbmQgdGhlcmUncyBhdCBsZWFzdCBvbmUKKwkJICogc3VicGxh biwgd2UgY2FuIGZpbGwgdmFsaWRfc3VicGxhbnMgaW1tZWRpYXRlbHksIHByZXZlbnRpbmcKKwkJ ICogbGF0ZXIgY2FsbHMgdG8gRXhlY0ZpbmRNYXRjaGluZ1N1YlBsYW5zLgorCQkgKi8KKwkJaWYg KCFwcnVuZXN0YXRlLT5kb19leGVjX3BydW5lICYmIG5wbGFucyA+IDApCisJCXsKKwkJCXN0YXRl LT52YWxpZF9zdWJwbGFucyA9IGJtc19hZGRfcmFuZ2UoTlVMTCwgMCwgbnBsYW5zIC0gMSk7CisJ CQlzdGF0ZS0+dmFsaWRfc3VicGxhbnNfaWRlbnRpZmllZCA9IHRydWU7CisJCX0KKwl9CisJZWxz ZQorCXsKKwkJbnBsYW5zID0gbGlzdF9sZW5ndGgobm9kZS0+c3VicGxhbnMpOworCisJCS8qCisJ CSAqIFdoZW4gcnVuLXRpbWUgcGFydGl0aW9uIHBydW5pbmcgaXMgbm90IGVuYWJsZWQgd2UgY2Fu IGp1c3QgbWFyayBhbGwKKwkJICogc3VicGxhbnMgYXMgdmFsaWQ7IHRoZXkgbXVzdCBhbHNvIGFs bCBiZSBpbml0aWFsaXplZC4KKwkJICovCisJCUFzc2VydChucGxhbnMgPiAwKTsKKwkJc3RhdGUt PnZhbGlkX3N1YnBsYW5zID0gdmFsaWRzdWJwbGFucyA9CisJCQlibXNfYWRkX3JhbmdlKE5VTEws IDAsIG5wbGFucyAtIDEpOworCQlzdGF0ZS0+dmFsaWRfc3VicGxhbnNfaWRlbnRpZmllZCA9IHRy dWU7CisJCXN0YXRlLT5wcnVuZV9zdGF0ZSA9IE5VTEw7CisJfQorCisJYXBwZW5kcGxhbnN0YXRl cyA9IHBhbGxvYzBfYXJyYXkoUGxhblN0YXRlICosIG5wbGFucyk7CisKKwkvKgorCSAqIGNhbGwg RXhlY0luaXROb2RlIG9uIGVhY2ggb2YgdGhlIHZhbGlkIHBsYW5zIHRvIGJlIGV4ZWN1dGVkIGFu ZCBzYXZlCisJICogdGhlIHJlc3VsdHMgaW50byB0aGUgYXBwZW5kcGxhbnN0YXRlcyBhcnJheS4K KwkgKgorCSAqIFdoaWxlIGF0IGl0LCBmaW5kIG91dCB0aGUgZmlyc3QgdmFsaWQgcGFydGlhbCBw bGFuLgorCSAqLworCWogPSAwOworCWFzeW5jcGxhbnMgPSBOVUxMOworCW5hc3luY3BsYW5zID0g MDsKKwlmaXJzdHZhbGlkID0gbnBsYW5zOworCWkgPSAtMTsKKwl3aGlsZSAoKGkgPSBibXNfbmV4 dF9tZW1iZXIodmFsaWRzdWJwbGFucywgaSkpID49IDApCisJeworCQlQbGFuCSAgICppbml0Tm9k ZSA9IChQbGFuICopIGxpc3RfbnRoKG5vZGUtPnN1YnBsYW5zLCBpKTsKKworCQkvKgorCQkgKiBS ZWNvcmQgYXN5bmMgc3VicGxhbnMuICBXaGVuIGV4ZWN1dGluZyBFdmFsUGxhblF1YWwsIHdlIHRy ZWF0IHRoZW0KKwkJICogYXMgc3luYyBvbmVzOyBkb24ndCBkbyB0aGlzIHdoZW4gaW5pdGlhbGl6 aW5nIGFuIEV2YWxQbGFuUXVhbCBwbGFuCisJCSAqIHRyZWUuCisJCSAqLworCQlpZiAoaW5pdE5v ZGUtPmFzeW5jX2NhcGFibGUgJiYgZXN0YXRlLT5lc19lcHFfYWN0aXZlID09IE5VTEwpCisJCXsK KwkJCWFzeW5jcGxhbnMgPSBibXNfYWRkX21lbWJlcihhc3luY3BsYW5zLCBqKTsKKwkJCW5hc3lu Y3BsYW5zKys7CisJCX0KKworCQkvKgorCQkgKiBSZWNvcmQgdGhlIGxvd2VzdCBhcHBlbmRwbGFu cyBpbmRleCB3aGljaCBpcyBhIHZhbGlkIHBhcnRpYWwgcGxhbi4KKwkJICovCisJCWlmIChmaXJz dF92YWxpZF9wYXJ0aWFsX3BsYW4gJiYgaSA+PSBmaXJzdF9wYXJ0aWFsX3BsYW4gJiYgaiA8IGZp cnN0dmFsaWQpCisJCQlmaXJzdHZhbGlkID0gajsKKworCQlhcHBlbmRwbGFuc3RhdGVzW2orK10g PSBFeGVjSW5pdE5vZGUoaW5pdE5vZGUsIGVzdGF0ZSwgZWZsYWdzKTsKKwl9CisKKwlpZiAoZmly c3RfdmFsaWRfcGFydGlhbF9wbGFuKQorCQkqZmlyc3RfdmFsaWRfcGFydGlhbF9wbGFuID0gZmly c3R2YWxpZDsKKworCXN0YXRlLT5wbGFucyA9IGFwcGVuZHBsYW5zdGF0ZXM7CisJc3RhdGUtPm5w bGFucyA9IG5wbGFuczsKKworCS8qCisJICogSW5pdGlhbGl6ZSBBcHBlbmQncyByZXN1bHQgdHVw bGUgdHlwZSBhbmQgc2xvdC4gIElmIHRoZSBjaGlsZCBwbGFucyBhbGwKKwkgKiBwcm9kdWNlIHRo ZSBzYW1lIGZpeGVkIHNsb3QgdHlwZSwgd2UgY2FuIHVzZSB0aGF0IHNsb3QgdHlwZTsgb3RoZXJ3 aXNlCisJICogbWFrZSBhIHZpcnR1YWwgc2xvdC4gIChOb3RlIHRoYXQgdGhlIHJlc3VsdCBzbG90 IGl0c2VsZiBpcyB1c2VkIG9ubHkgdG8KKwkgKiByZXR1cm4gYSBudWxsIHR1cGxlIGF0IGVuZCBv ZiBleGVjdXRpb247IHJlYWwgdHVwbGVzIGFyZSByZXR1cm5lZCB0bworCSAqIHRoZSBjYWxsZXIg aW4gdGhlIGNoaWxkcmVuJ3Mgb3duIHJlc3VsdCBzbG90cy4gIFdoYXQgd2UgYXJlIGRvaW5nIGhl cmUKKwkgKiBpcyBhbGxvd2luZyB0aGUgcGFyZW50IHBsYW4gbm9kZSB0byBvcHRpbWl6ZSBpZiB0 aGUgQXBwZW5kIHdpbGwgcmV0dXJuCisJICogb25seSBvbmUga2luZCBvZiBzbG90LikKKwkgKi8K KwlhcHBlbmRvcHMgPSBFeGVjR2V0Q29tbW9uU2xvdE9wcyhhcHBlbmRwbGFuc3RhdGVzLCBqKTsK KwlpZiAoYXBwZW5kb3BzICE9IE5VTEwpCisJeworCQlFeGVjSW5pdFJlc3VsdFR1cGxlU2xvdFRM KCZzdGF0ZS0+cHMsIGFwcGVuZG9wcyk7CisJfQorCWVsc2UKKwl7CisJCUV4ZWNJbml0UmVzdWx0 VHVwbGVTbG90VEwoJnN0YXRlLT5wcywgJlRUU09wc1ZpcnR1YWwpOworCQkvKiBzaG93IHRoYXQg dGhlIG91dHB1dCBzbG90IHR5cGUgaXMgbm90IGZpeGVkICovCisJCXN0YXRlLT5wcy5yZXN1bHRv cHNzZXQgPSB0cnVlOworCQlzdGF0ZS0+cHMucmVzdWx0b3BzZml4ZWQgPSBmYWxzZTsKKwl9CisK KwkvKiBJbml0aWFsaXplIGFzeW5jIHN0YXRlICovCisJc3RhdGUtPmFzeW5jcGxhbnMgPSBhc3lu Y3BsYW5zOworCXN0YXRlLT5uYXN5bmNwbGFucyA9IG5hc3luY3BsYW5zOworCXN0YXRlLT5hc3lu Y3JlcXVlc3RzID0gTlVMTDsKKwlzdGF0ZS0+YXN5bmNyZXN1bHRzID0gTlVMTDsKKwlzdGF0ZS0+ bmVlZHJlcXVlc3QgPSBOVUxMOworCXN0YXRlLT5ldmVudHNldCA9IE5VTEw7CisJc3RhdGUtPnZh bGlkX2FzeW5jcGxhbnMgPSBOVUxMOworCisJaWYgKG5hc3luY3BsYW5zID4gMCkKKwl7CisJCXN0 YXRlLT5hc3luY3JlcXVlc3RzID0gcGFsbG9jMF9hcnJheShBc3luY1JlcXVlc3QgKiwgbnBsYW5z KTsKKworCQlpID0gLTE7CisJCXdoaWxlICgoaSA9IGJtc19uZXh0X21lbWJlcihhc3luY3BsYW5z LCBpKSkgPj0gMCkKKwkJeworCQkJQXN5bmNSZXF1ZXN0ICphcmVxOworCisJCQlhcmVxID0gcGFs bG9jX29iamVjdChBc3luY1JlcXVlc3QpOworCQkJYXJlcS0+cmVxdWVzdG9yID0gKFBsYW5TdGF0 ZSAqKSBzdGF0ZTsKKwkJCWFyZXEtPnJlcXVlc3RlZSA9IGFwcGVuZHBsYW5zdGF0ZXNbaV07CisJ CQlhcmVxLT5yZXF1ZXN0X2luZGV4ID0gaTsKKwkJCWFyZXEtPmNhbGxiYWNrX3BlbmRpbmcgPSBm YWxzZTsKKwkJCWFyZXEtPnJlcXVlc3RfY29tcGxldGUgPSBmYWxzZTsKKwkJCWFyZXEtPnJlc3Vs dCA9IE5VTEw7CisKKwkJCXN0YXRlLT5hc3luY3JlcXVlc3RzW2ldID0gYXJlcTsKKwkJfQorCisJ CS8qCisJCSAqIEFwcGVuZFN0YXRlIGFuZCBNZXJnZUFwcGVuZFN0YXRlIGhhdmUgc2xpZ2h0bHkg ZGlmZmVyZW50IGFsbG9jYXRpb24KKwkJICogc2l6ZXMgZm9yIGFzeW5jcmVzdWx0cyBpbiB0aGUg b3JpZ2luYWwgY29kZSwgYnV0IHdlIHVuaWZ5IHRvIHRoZQorCQkgKiBsYXJnZXIgcmVxdWlyZW1l bnQgb3Igc3BlY2lmaWMgbnBsYW5zIGlmIHJlcXVpcmVkLgorCQkgKi8KKwkJc3RhdGUtPmFzeW5j cmVzdWx0cyA9IHBhbGxvYzBfYXJyYXkoVHVwbGVUYWJsZVNsb3QgKiwgbnBsYW5zKTsKKwl9CisK KwkvKgorCSAqIE1pc2NlbGxhbmVvdXMgaW5pdGlhbGl6YXRpb24KKwkgKi8KKwlzdGF0ZS0+cHMu cHNfUHJvakluZm8gPSBOVUxMOworfQorCit2b2lkCitFeGVjUmVTY2FuQXBwZW5kZXIoQXBwZW5k ZXJTdGF0ZSAqIG5vZGUpCit7CisJaW50CQkJaTsKKwlpbnQJCQluYXN5bmNwbGFucyA9IG5vZGUt Pm5hc3luY3BsYW5zOworCisJLyoKKwkgKiBJZiBhbnkgUEFSQU1fRVhFQyBQYXJhbXMgdXNlZCBp biBwcnVuaW5nIGV4cHJlc3Npb25zIGhhdmUgY2hhbmdlZCwgdGhlbgorCSAqIHdlJ2QgYmV0dGVy IHVuc2V0IHRoZSB2YWxpZCBzdWJwbGFucyBzbyB0aGF0IHRoZXkgYXJlIHJlc2VsZWN0ZWQgZm9y CisJICogdGhlIG5ldyBwYXJhbWV0ZXIgdmFsdWVzLgorCSAqLworCWlmIChub2RlLT5wcnVuZV9z dGF0ZSAmJgorCQlibXNfb3ZlcmxhcChub2RlLT5wcy5jaGdQYXJhbSwKKwkJCQkJbm9kZS0+cHJ1 bmVfc3RhdGUtPmV4ZWNwYXJhbWlkcykpCisJeworCQlub2RlLT52YWxpZF9zdWJwbGFuc19pZGVu dGlmaWVkID0gZmFsc2U7CisJCWJtc19mcmVlKG5vZGUtPnZhbGlkX3N1YnBsYW5zKTsKKwkJbm9k ZS0+dmFsaWRfc3VicGxhbnMgPSBOVUxMOworCQlibXNfZnJlZShub2RlLT52YWxpZF9hc3luY3Bs YW5zKTsKKwkJbm9kZS0+dmFsaWRfYXN5bmNwbGFucyA9IE5VTEw7CisJfQorCisJZm9yIChpID0g MDsgaSA8IG5vZGUtPm5wbGFuczsgaSsrKQorCXsKKwkJUGxhblN0YXRlICAqc3Vibm9kZSA9IG5v ZGUtPnBsYW5zW2ldOworCisJCS8qCisJCSAqIEV4ZWNSZVNjYW4gZG9lc24ndCBrbm93IGFib3V0 IG15IHN1YnBsYW5zLCBzbyBJIGhhdmUgdG8gZG8KKwkJICogY2hhbmdlZC1wYXJhbWV0ZXIgc2ln bmFsaW5nIG15c2VsZi4KKwkJICovCisJCWlmIChub2RlLT5wcy5jaGdQYXJhbSAhPSBOVUxMKQor CQkJVXBkYXRlQ2hhbmdlZFBhcmFtU2V0KHN1Ym5vZGUsIG5vZGUtPnBzLmNoZ1BhcmFtKTsKKwor CQkvKgorCQkgKiBJZiBjaGdQYXJhbSBvZiBzdWJub2RlIGlzIG5vdCBudWxsIHRoZW4gcGxhbiB3 aWxsIGJlIHJlLXNjYW5uZWQgYnkKKwkJICogZmlyc3QgRXhlY1Byb2NOb2RlLgorCQkgKi8KKwkJ aWYgKHN1Ym5vZGUtPmNoZ1BhcmFtID09IE5VTEwpCisJCQlFeGVjUmVTY2FuKHN1Ym5vZGUpOwor CX0KKworCS8qIFJlc2V0IGFzeW5jIHN0YXRlICovCisJaWYgKG5hc3luY3BsYW5zID4gMCkKKwl7 CisJCWkgPSAtMTsKKwkJd2hpbGUgKChpID0gYm1zX25leHRfbWVtYmVyKG5vZGUtPmFzeW5jcGxh bnMsIGkpKSA+PSAwKQorCQl7CisJCQlBc3luY1JlcXVlc3QgKmFyZXEgPSBub2RlLT5hc3luY3Jl cXVlc3RzW2ldOworCisJCQlhcmVxLT5jYWxsYmFja19wZW5kaW5nID0gZmFsc2U7CisJCQlhcmVx LT5yZXF1ZXN0X2NvbXBsZXRlID0gZmFsc2U7CisJCQlhcmVxLT5yZXN1bHQgPSBOVUxMOworCQl9 CisKKwkJYm1zX2ZyZWUobm9kZS0+bmVlZHJlcXVlc3QpOworCQlub2RlLT5uZWVkcmVxdWVzdCA9 IE5VTEw7CisJfQorfQorCisvKiAgV2FpdCBvciBwb2xsIGZvciBmaWxlIGRlc2NyaXB0b3IgZXZl bnRzIGFuZCBmaXJlIGNhbGxiYWNrcy4gKi8KK3ZvaWQKK0V4ZWNBcHBlbmRlckFzeW5jRXZlbnRX YWl0KEFwcGVuZGVyU3RhdGUgKiBub2RlLCBpbnQgdGltZW91dCwgdWludDMyIHdhaXRfZXZlbnRf aW5mbykKK3sKKwlpbnQJCQluZXZlbnRzID0gbm9kZS0+bmFzeW5jcGxhbnMgKyAyOwkvKiBvbmUg Zm9yIFBNIGRlYXRoIGFuZAorCQkJCQkJCQkJCQkJCSAqIG9uZSBmb3IgbGF0Y2ggKi8KKwlpbnQJ CQlub2NjdXJyZWQ7CisJaW50CQkJaTsKKwlXYWl0RXZlbnQJb2NjdXJyZWRfZXZlbnRbRVZFTlRf QlVGRkVSX1NJWkVdOworCisJQXNzZXJ0KG5vZGUtPmV2ZW50c2V0ID09IE5VTEwpOworCisJbm9k ZS0+ZXZlbnRzZXQgPSBDcmVhdGVXYWl0RXZlbnRTZXQoQ3VycmVudFJlc291cmNlT3duZXIsIG5l dmVudHMpOworCUFkZFdhaXRFdmVudFRvU2V0KG5vZGUtPmV2ZW50c2V0LCBXTF9FWElUX09OX1BN X0RFQVRILCBQR0lOVkFMSURfU09DS0VULAorCQkJCQkgIE5VTEwsIE5VTEwpOworCisJLyogR2l2 ZSBlYWNoIHdhaXRpbmcgc3VicGxhbiBhIGNoYW5jZSB0byBhZGQgYW4gZXZlbnQuICovCisJaSA9 IC0xOworCXdoaWxlICgoaSA9IGJtc19uZXh0X21lbWJlcihub2RlLT5hc3luY3BsYW5zLCBpKSkg Pj0gMCkKKwl7CisJCUFzeW5jUmVxdWVzdCAqYXJlcSA9IG5vZGUtPmFzeW5jcmVxdWVzdHNbaV07 CisKKwkJaWYgKGFyZXEtPmNhbGxiYWNrX3BlbmRpbmcpCisJCQlFeGVjQXN5bmNDb25maWd1cmVX YWl0KGFyZXEpOworCX0KKworCS8qCisJICogTm8gbmVlZCBmb3IgZnVydGhlciBwcm9jZXNzaW5n IGlmIG5vbmUgb2YgdGhlIHN1YnBsYW5zIGNvbmZpZ3VyZWQgYW55CisJICogZXZlbnRzLgorCSAq LworCWlmIChHZXROdW1SZWdpc3RlcmVkV2FpdEV2ZW50cyhub2RlLT5ldmVudHNldCkgPT0gMSkK Kwl7CisJCUZyZWVXYWl0RXZlbnRTZXQobm9kZS0+ZXZlbnRzZXQpOworCQlub2RlLT5ldmVudHNl dCA9IE5VTEw7CisJCXJldHVybjsKKwl9CisKKwkvKgorCSAqIEFkZCB0aGUgcHJvY2VzcyBsYXRj aCB0byB0aGUgc2V0LCBzbyB0aGF0IHdlIHdha2UgdXAgdG8gcHJvY2VzcyB0aGUKKwkgKiBzdGFu ZGFyZCBpbnRlcnJ1cHRzIHdpdGggQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKS4KKwkgKgorCSAqIE5P VEU6IEZvciBoaXN0b3JpY2FsIHJlYXNvbnMsIGl0J3MgaW1wb3J0YW50IHRoYXQgdGhpcyBpcyBh ZGRlZCB0byB0aGUKKwkgKiBXYWl0RXZlbnRTZXQgYWZ0ZXIgdGhlIEV4ZWNBc3luY0NvbmZpZ3Vy ZVdhaXQoKSBjYWxscy4gIE5hbWVseSwKKwkgKiBwb3N0Z3Jlc19mZHcgY2FsbHMgIkdldE51bVJl Z2lzdGVyZWRXYWl0RXZlbnRzKHNldCkgPT0gMSIgdG8gY2hlY2sgaWYKKwkgKiBhbnkgb3RoZXIg ZXZlbnRzIGFyZSBpbiB0aGUgc2V0LiAgVGhhdCdzIGEgcG9vciBkZXNpZ24sIGl0J3MKKwkgKiBx dWVzdGlvbmFibGUgZm9yIHBvc3RncmVzX2ZkdyB0byBiZSBkb2luZyB0aGF0IGluIHRoZSBmaXJz dCBwbGFjZSwgYnV0CisJICogd2UgY2Fubm90IGNoYW5nZSBpdCBub3cuICBUaGUgcGF0dGVybiBo YXMgcG9zc2libHkgYmVlbiBjb3BpZWQgdG8gb3RoZXIKKwkgKiBleHRlbnNpb25zIHRvby4KKwkg Ki8KKwlBZGRXYWl0RXZlbnRUb1NldChub2RlLT5ldmVudHNldCwgV0xfTEFUQ0hfU0VULCBQR0lO VkFMSURfU09DS0VULAorCQkJCQkgIE15TGF0Y2gsIE5VTEwpOworCisJLyogUmV0dXJuIGF0IG1v c3QgRVZFTlRfQlVGRkVSX1NJWkUgZXZlbnRzIGluIG9uZSBjYWxsLiAqLworCWlmIChuZXZlbnRz ID4gRVZFTlRfQlVGRkVSX1NJWkUpCisJCW5ldmVudHMgPSBFVkVOVF9CVUZGRVJfU0laRTsKKwor CS8qIFdhaXQgdW50aWwgYXQgbGVhc3Qgb25lIGV2ZW50IG9jY3Vycy4gKi8KKwlub2NjdXJyZWQg PSBXYWl0RXZlbnRTZXRXYWl0KG5vZGUtPmV2ZW50c2V0LCB0aW1lb3V0LCBvY2N1cnJlZF9ldmVu dCwKKwkJCQkJCQkJIG5ldmVudHMsIHdhaXRfZXZlbnRfaW5mbyk7CisKKworCUZyZWVXYWl0RXZl bnRTZXQobm9kZS0+ZXZlbnRzZXQpOworCW5vZGUtPmV2ZW50c2V0ID0gTlVMTDsKKwlpZiAobm9j Y3VycmVkID09IDApCisJCXJldHVybjsKKworCisJLyogRGVsaXZlciBub3RpZmljYXRpb25zLiAq LworCWZvciAoaSA9IDA7IGkgPCBub2NjdXJyZWQ7IGkrKykKKwl7CisJCVdhaXRFdmVudCAgKncg PSAmb2NjdXJyZWRfZXZlbnRbaV07CisKKwkJLyoKKwkJICogRWFjaCB3YWl0aW5nIHN1YnBsYW4g c2hvdWxkIGhhdmUgcmVnaXN0ZXJlZCBpdHMgd2FpdCBldmVudCB3aXRoCisJCSAqIHVzZXJfZGF0 YSBwb2ludGluZyBiYWNrIHRvIGl0cyBBc3luY1JlcXVlc3QuCisJCSAqLworCQlpZiAoKHctPmV2 ZW50cyAmIFdMX1NPQ0tFVF9SRUFEQUJMRSkgIT0gMCkKKwkJeworCQkJQXN5bmNSZXF1ZXN0ICph cmVxID0gKEFzeW5jUmVxdWVzdCAqKSB3LT51c2VyX2RhdGE7CisKKwkJCWlmIChhcmVxLT5jYWxs YmFja19wZW5kaW5nKQorCQkJeworCQkJCS8qCisJCQkJICogTWFyayBpdCBhcyBubyBsb25nZXIg bmVlZGluZyBhIGNhbGxiYWNrLiAgV2UgbXVzdCBkbyB0aGlzCisJCQkJICogYmVmb3JlIGRpc3Bh dGNoaW5nIHRoZSBjYWxsYmFjayBpbiBjYXNlIHRoZSBjYWxsYmFjayByZXNldHMKKwkJCQkgKiB0 aGUgZmxhZy4KKwkJCQkgKi8KKwkJCQlhcmVxLT5jYWxsYmFja19wZW5kaW5nID0gZmFsc2U7CisK KwkJCQkvKiBEbyB0aGUgYWN0dWFsIHdvcmsuICovCisJCQkJRXhlY0FzeW5jTm90aWZ5KGFyZXEp OworCQkJfQorCQl9CisKKwkJLyogSGFuZGxlIHN0YW5kYXJkIGludGVycnVwdHMgKi8KKwkJaWYg KCh3LT5ldmVudHMgJiBXTF9MQVRDSF9TRVQpICE9IDApCisJCXsKKwkJCVJlc2V0TGF0Y2goTXlM YXRjaCk7CisJCQlDSEVDS19GT1JfSU5URVJSVVBUUygpOworCQl9CisJfQorfQorCisvKiAgQmVn aW4gZXhlY3V0aW5nIGFzeW5jLWNhcGFibGUgc3VicGxhbnMuICovCit2b2lkCitFeGVjQXBwZW5k ZXJBc3luY0JlZ2luKEFwcGVuZGVyU3RhdGUgKiBub2RlKQoreworCWludAkJCWk7CisKKwkvKiBC YWNrd2FyZCBzY2FuIGlzIG5vdCBzdXBwb3J0ZWQgYnkgYXN5bmMtYXdhcmUgQXBwZW5kcy4gKi8K KwlBc3NlcnQoU2NhbkRpcmVjdGlvbklzRm9yd2FyZChub2RlLT5wcy5zdGF0ZS0+ZXNfZGlyZWN0 aW9uKSk7CisKKwkvKiBXZSBzaG91bGQgbmV2ZXIgYmUgY2FsbGVkIHdoZW4gdGhlcmUgYXJlIG5v IHN1YnBsYW5zICovCisJQXNzZXJ0KG5vZGUtPm5wbGFucyA+IDApOworCisJLyogV2Ugc2hvdWxk IG5ldmVyIGJlIGNhbGxlZCB3aGVuIHRoZXJlIGFyZSBubyBhc3luYyBzdWJwbGFucy4gKi8KKwlB c3NlcnQobm9kZS0+bmFzeW5jcGxhbnMgPiAwKTsKKworCS8qIE1ha2UgYSByZXF1ZXN0IGZvciBl YWNoIG9mIHRoZSB2YWxpZCBhc3luYyBzdWJwbGFucy4gKi8KKwlpID0gLTE7CisJd2hpbGUgKChp ID0gYm1zX25leHRfbWVtYmVyKG5vZGUtPnZhbGlkX2FzeW5jcGxhbnMsIGkpKSA+PSAwKQorCXsK KwkJQXN5bmNSZXF1ZXN0ICphcmVxID0gbm9kZS0+YXN5bmNyZXF1ZXN0c1tpXTsKKworCQlBc3Nl cnQoYXJlcS0+cmVxdWVzdF9pbmRleCA9PSBpKTsKKwkJQXNzZXJ0KCFhcmVxLT5jYWxsYmFja19w ZW5kaW5nKTsKKworCQkvKiBEbyB0aGUgYWN0dWFsIHdvcmsuICovCisJCUV4ZWNBc3luY1JlcXVl c3QoYXJlcSk7CisJfQorfQorCisvKiAgU2h1dHMgZG93biB0aGUgc3VicGxhbnMgb2YgYW4gQXBw ZW5kZXIgbm9kZS4gKi8KK3ZvaWQKK0V4ZWNFbmRBcHBlbmRlcihBcHBlbmRlclN0YXRlICogbm9k ZSkKK3sKKwlQbGFuU3RhdGUgKipzdWJwbGFuczsKKwlpbnQJCQlucGxhbnM7CisJaW50CQkJaTsK KworCS8qCisJICogZ2V0IGluZm9ybWF0aW9uIGZyb20gdGhlIG5vZGUKKwkgKi8KKwlzdWJwbGFu cyA9IG5vZGUtPnBsYW5zOworCW5wbGFucyA9IG5vZGUtPm5wbGFuczsKKworCS8qCisJICogc2h1 dCBkb3duIGVhY2ggb2YgdGhlIHN1YnNjYW5zCisJICovCisJZm9yIChpID0gMDsgaSA8IG5wbGFu czsgaSsrKQorCQlFeGVjRW5kTm9kZShzdWJwbGFuc1tpXSk7Cit9CisKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNDdXJyZW50LmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9l eGVjQ3VycmVudC5jCmluZGV4IDNiZmRjMDIzMGZmLi5lOGNmMmVhZDhhOCAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY0N1cnJlbnQuYworKysgYi9zcmMvYmFja2VuZC9leGVj dXRvci9leGVjQ3VycmVudC5jCkBAIC0zNzUsOSArMzc1LDkgQEAgc2VhcmNoX3BsYW5fdHJlZShQ bGFuU3RhdGUgKm5vZGUsIE9pZCB0YWJsZV9vaWQsCiAJCQkJQXBwZW5kU3RhdGUgKmFzdGF0ZSA9 IChBcHBlbmRTdGF0ZSAqKSBub2RlOwogCQkJCWludAkJCWk7CiAKLQkJCQlmb3IgKGkgPSAwOyBp IDwgYXN0YXRlLT5hc19ucGxhbnM7IGkrKykKKwkJCQlmb3IgKGkgPSAwOyBpIDwgYXN0YXRlLT5h cy5ucGxhbnM7IGkrKykKIAkJCQl7Ci0JCQkJCVNjYW5TdGF0ZSAgKmVsZW0gPSBzZWFyY2hfcGxh bl90cmVlKGFzdGF0ZS0+YXBwZW5kcGxhbnNbaV0sCisJCQkJCVNjYW5TdGF0ZSAgKmVsZW0gPSBz ZWFyY2hfcGxhbl90cmVlKGFzdGF0ZS0+YXMucGxhbnNbaV0sCiAJCQkJCQkJCQkJCQkJCXRhYmxl X29pZCwKIAkJCQkJCQkJCQkJCQkJcGVuZGluZ19yZXNjYW4pOwogCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9leGVjdXRvci9leGVjUHJvY25vZGUuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4 ZWNQcm9jbm9kZS5jCmluZGV4IGY1ZjljZmJlZWFkLi4zZWIxZGUxY2QzMCAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1Byb2Nub2RlLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhl Y3V0b3IvZXhlY1Byb2Nub2RlLmMKQEAgLTkxMCw4ICs5MTAsOCBAQCBFeGVjU2V0VHVwbGVCb3Vu ZChpbnQ2NCB0dXBsZXNfbmVlZGVkLCBQbGFuU3RhdGUgKmNoaWxkX25vZGUpCiAJCUFwcGVuZFN0 YXRlICphU3RhdGUgPSAoQXBwZW5kU3RhdGUgKikgY2hpbGRfbm9kZTsKIAkJaW50CQkJaTsKIAot CQlmb3IgKGkgPSAwOyBpIDwgYVN0YXRlLT5hc19ucGxhbnM7IGkrKykKLQkJCUV4ZWNTZXRUdXBs ZUJvdW5kKHR1cGxlc19uZWVkZWQsIGFTdGF0ZS0+YXBwZW5kcGxhbnNbaV0pOworCQlmb3IgKGkg PSAwOyBpIDwgYVN0YXRlLT5hcy5ucGxhbnM7IGkrKykKKwkJCUV4ZWNTZXRUdXBsZUJvdW5kKHR1 cGxlc19uZWVkZWQsIGFTdGF0ZS0+YXMucGxhbnNbaV0pOwogCX0KIAllbHNlIGlmIChJc0EoY2hp bGRfbm9kZSwgTWVyZ2VBcHBlbmRTdGF0ZSkpCiAJewpAQCAtOTIzLDggKzkyMyw4IEBAIEV4ZWNT ZXRUdXBsZUJvdW5kKGludDY0IHR1cGxlc19uZWVkZWQsIFBsYW5TdGF0ZSAqY2hpbGRfbm9kZSkK IAkJTWVyZ2VBcHBlbmRTdGF0ZSAqbWFTdGF0ZSA9IChNZXJnZUFwcGVuZFN0YXRlICopIGNoaWxk X25vZGU7CiAJCWludAkJCWk7CiAKLQkJZm9yIChpID0gMDsgaSA8IG1hU3RhdGUtPm1zX25wbGFu czsgaSsrKQotCQkJRXhlY1NldFR1cGxlQm91bmQodHVwbGVzX25lZWRlZCwgbWFTdGF0ZS0+bWVy Z2VwbGFuc1tpXSk7CisJCWZvciAoaSA9IDA7IGkgPCBtYVN0YXRlLT5tcy5ucGxhbnM7IGkrKykK KwkJCUV4ZWNTZXRUdXBsZUJvdW5kKHR1cGxlc19uZWVkZWQsIG1hU3RhdGUtPm1zLnBsYW5zW2ld KTsKIAl9CiAJZWxzZSBpZiAoSXNBKGNoaWxkX25vZGUsIFJlc3VsdFN0YXRlKSkKIAl7CmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9tZXNvbi5idWlsZCBiL3NyYy9iYWNrZW5kL2V4 ZWN1dG9yL21lc29uLmJ1aWxkCmluZGV4IDJjZWE0MWY4NzcxLi5iNWNiNzEwYTU5ZiAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvbWVzb24uYnVpbGQKKysrIGIvc3JjL2JhY2tlbmQv ZXhlY3V0b3IvbWVzb24uYnVpbGQKQEAgLTMsNiArMyw3IEBACiBiYWNrZW5kX3NvdXJjZXMgKz0g ZmlsZXMoCiAgICdleGVjQW1pLmMnLAogICAnZXhlY0FzeW5jLmMnLAorICAnZXhlY0FwcGVuZC5j JywKICAgJ2V4ZWNDdXJyZW50LmMnLAogICAnZXhlY0V4cHIuYycsCiAgICdleGVjRXhwckludGVy cC5jJywKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVBcHBlbmQuYyBiL3Ny Yy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVBcHBlbmQuYwppbmRleCBkZmJjN2I1MTBjNC4uNWMzOWVl Mjc1ZDIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVBcHBlbmQuYworKysg Yi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQXBwZW5kLmMKQEAgLTU3LDEzICs1NywxMyBAQAog CiAjaW5jbHVkZSAicG9zdGdyZXMuaCIKIAorI2luY2x1ZGUgImV4ZWN1dG9yL2V4ZWNBcHBlbmQu aCIKICNpbmNsdWRlICJleGVjdXRvci9leGVjQXN5bmMuaCIKICNpbmNsdWRlICJleGVjdXRvci9l eGVjUGFydGl0aW9uLmgiCiAjaW5jbHVkZSAiZXhlY3V0b3IvZXhlY3V0b3IuaCIKICNpbmNsdWRl ICJleGVjdXRvci9ub2RlQXBwZW5kLmgiCiAjaW5jbHVkZSAibWlzY2FkbWluLmgiCiAjaW5jbHVk ZSAicGdzdGF0LmgiCi0jaW5jbHVkZSAic3RvcmFnZS9sYXRjaC5oIgogCiAvKiBTaGFyZWQgc3Rh dGUgZm9yIHBhcmFsbGVsLWF3YXJlIEFwcGVuZC4gKi8KIHN0cnVjdCBQYXJhbGxlbEFwcGVuZFN0 YXRlCkBAIC0xMDksMTUgKzEwOSw2IEBAIEFwcGVuZFN0YXRlICoKIEV4ZWNJbml0QXBwZW5kKEFw cGVuZCAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiB7CiAJQXBwZW5kU3RhdGUg KmFwcGVuZHN0YXRlID0gbWFrZU5vZGUoQXBwZW5kU3RhdGUpOwotCVBsYW5TdGF0ZSAqKmFwcGVu ZHBsYW5zdGF0ZXM7Ci0JY29uc3QgVHVwbGVUYWJsZVNsb3RPcHMgKmFwcGVuZG9wczsKLQlCaXRt YXBzZXQgICp2YWxpZHN1YnBsYW5zOwotCUJpdG1hcHNldCAgKmFzeW5jcGxhbnM7Ci0JaW50CQkJ bnBsYW5zOwotCWludAkJCW5hc3luY3BsYW5zOwotCWludAkJCWZpcnN0dmFsaWQ7Ci0JaW50CQkJ aSwKLQkJCQlqOwogCiAJLyogY2hlY2sgZm9yIHVuc3VwcG9ydGVkIGZsYWdzICovCiAJQXNzZXJ0 KCEoZWZsYWdzICYgRVhFQ19GTEFHX01BUkspKTsKQEAgLTEyNSwxNjcgKzExNiwyNyBAQCBFeGVj SW5pdEFwcGVuZChBcHBlbmQgKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCS8q CiAJICogY3JlYXRlIG5ldyBBcHBlbmRTdGF0ZSBmb3Igb3VyIGFwcGVuZCBub2RlCiAJICovCi0J YXBwZW5kc3RhdGUtPnBzLnBsYW4gPSAoUGxhbiAqKSBub2RlOwotCWFwcGVuZHN0YXRlLT5wcy5z dGF0ZSA9IGVzdGF0ZTsKLQlhcHBlbmRzdGF0ZS0+cHMuRXhlY1Byb2NOb2RlID0gRXhlY0FwcGVu ZDsKKwlhcHBlbmRzdGF0ZS0+YXMucHMucGxhbiA9IChQbGFuICopIG5vZGU7CisJYXBwZW5kc3Rh dGUtPmFzLnBzLnN0YXRlID0gZXN0YXRlOworCWFwcGVuZHN0YXRlLT5hcy5wcy5FeGVjUHJvY05v ZGUgPSBFeGVjQXBwZW5kOwogCiAJLyogTGV0IGNob29zZV9uZXh0X3N1YnBsYW5fKiBmdW5jdGlv biBoYW5kbGUgc2V0dGluZyB0aGUgZmlyc3Qgc3VicGxhbiAqLwogCWFwcGVuZHN0YXRlLT5hc193 aGljaHBsYW4gPSBJTlZBTElEX1NVQlBMQU5fSU5ERVg7CiAJYXBwZW5kc3RhdGUtPmFzX3N5bmNk b25lID0gZmFsc2U7CiAJYXBwZW5kc3RhdGUtPmFzX2JlZ3VuID0gZmFsc2U7CiAKLQkvKiBJZiBy dW4tdGltZSBwYXJ0aXRpb24gcHJ1bmluZyBpcyBlbmFibGVkLCB0aGVuIHNldCB0aGF0IHVwIG5v dyAqLwotCWlmIChub2RlLT5wYXJ0X3BydW5lX2luZGV4ID49IDApCi0JewotCQlQYXJ0aXRpb25Q cnVuZVN0YXRlICpwcnVuZXN0YXRlOwotCi0JCS8qCi0JCSAqIFNldCB1cCBwcnVuaW5nIGRhdGEg c3RydWN0dXJlLiAgVGhpcyBhbHNvIGluaXRpYWxpemVzIHRoZSBzZXQgb2YKLQkJICogc3VicGxh bnMgdG8gaW5pdGlhbGl6ZSAodmFsaWRzdWJwbGFucykgYnkgdGFraW5nIGludG8gYWNjb3VudCB0 aGUKLQkJICogcmVzdWx0IG9mIHBlcmZvcm1pbmcgaW5pdGlhbCBwcnVuaW5nIGlmIGFueS4KLQkJ ICovCi0JCXBydW5lc3RhdGUgPSBFeGVjSW5pdFBhcnRpdGlvbkV4ZWNQcnVuaW5nKCZhcHBlbmRz dGF0ZS0+cHMsCi0JCQkJCQkJCQkJCQkgIGxpc3RfbGVuZ3RoKG5vZGUtPmFwcGVuZHBsYW5zKSwK LQkJCQkJCQkJCQkJCSAgbm9kZS0+cGFydF9wcnVuZV9pbmRleCwKLQkJCQkJCQkJCQkJCSAgbm9k ZS0+YXBwcmVsaWRzLAotCQkJCQkJCQkJCQkJICAmdmFsaWRzdWJwbGFucyk7Ci0JCWFwcGVuZHN0 YXRlLT5hc19wcnVuZV9zdGF0ZSA9IHBydW5lc3RhdGU7Ci0JCW5wbGFucyA9IGJtc19udW1fbWVt YmVycyh2YWxpZHN1YnBsYW5zKTsKLQotCQkvKgotCQkgKiBXaGVuIG5vIHJ1bi10aW1lIHBydW5p bmcgaXMgcmVxdWlyZWQgYW5kIHRoZXJlJ3MgYXQgbGVhc3Qgb25lCi0JCSAqIHN1YnBsYW4sIHdl IGNhbiBmaWxsIGFzX3ZhbGlkX3N1YnBsYW5zIGltbWVkaWF0ZWx5LCBwcmV2ZW50aW5nCi0JCSAq IGxhdGVyIGNhbGxzIHRvIEV4ZWNGaW5kTWF0Y2hpbmdTdWJQbGFucy4KLQkJICovCi0JCWlmICgh cHJ1bmVzdGF0ZS0+ZG9fZXhlY19wcnVuZSAmJiBucGxhbnMgPiAwKQotCQl7Ci0JCQlhcHBlbmRz dGF0ZS0+YXNfdmFsaWRfc3VicGxhbnMgPSBibXNfYWRkX3JhbmdlKE5VTEwsIDAsIG5wbGFucyAt IDEpOwotCQkJYXBwZW5kc3RhdGUtPmFzX3ZhbGlkX3N1YnBsYW5zX2lkZW50aWZpZWQgPSB0cnVl OwotCQl9Ci0JfQotCWVsc2UKLQl7Ci0JCW5wbGFucyA9IGxpc3RfbGVuZ3RoKG5vZGUtPmFwcGVu ZHBsYW5zKTsKLQotCQkvKgotCQkgKiBXaGVuIHJ1bi10aW1lIHBhcnRpdGlvbiBwcnVuaW5nIGlz IG5vdCBlbmFibGVkIHdlIGNhbiBqdXN0IG1hcmsgYWxsCi0JCSAqIHN1YnBsYW5zIGFzIHZhbGlk OyB0aGV5IG11c3QgYWxzbyBhbGwgYmUgaW5pdGlhbGl6ZWQuCi0JCSAqLwotCQlBc3NlcnQobnBs YW5zID4gMCk7Ci0JCWFwcGVuZHN0YXRlLT5hc192YWxpZF9zdWJwbGFucyA9IHZhbGlkc3VicGxh bnMgPQotCQkJYm1zX2FkZF9yYW5nZShOVUxMLCAwLCBucGxhbnMgLSAxKTsKLQkJYXBwZW5kc3Rh dGUtPmFzX3ZhbGlkX3N1YnBsYW5zX2lkZW50aWZpZWQgPSB0cnVlOwotCQlhcHBlbmRzdGF0ZS0+ YXNfcHJ1bmVfc3RhdGUgPSBOVUxMOwotCX0KLQotCWFwcGVuZHBsYW5zdGF0ZXMgPSAoUGxhblN0 YXRlICoqKSBwYWxsb2MobnBsYW5zICoKLQkJCQkJCQkJCQkJIHNpemVvZihQbGFuU3RhdGUgKikp OwotCi0JLyoKLQkgKiBjYWxsIEV4ZWNJbml0Tm9kZSBvbiBlYWNoIG9mIHRoZSB2YWxpZCBwbGFu cyB0byBiZSBleGVjdXRlZCBhbmQgc2F2ZQotCSAqIHRoZSByZXN1bHRzIGludG8gdGhlIGFwcGVu ZHBsYW5zdGF0ZXMgYXJyYXkuCi0JICoKLQkgKiBXaGlsZSBhdCBpdCwgZmluZCBvdXQgdGhlIGZp cnN0IHZhbGlkIHBhcnRpYWwgcGxhbi4KLQkgKi8KLQlqID0gMDsKLQlhc3luY3BsYW5zID0gTlVM TDsKLQluYXN5bmNwbGFucyA9IDA7Ci0JZmlyc3R2YWxpZCA9IG5wbGFuczsKLQlpID0gLTE7Ci0J d2hpbGUgKChpID0gYm1zX25leHRfbWVtYmVyKHZhbGlkc3VicGxhbnMsIGkpKSA+PSAwKQotCXsK LQkJUGxhbgkgICAqaW5pdE5vZGUgPSAoUGxhbiAqKSBsaXN0X250aChub2RlLT5hcHBlbmRwbGFu cywgaSk7Ci0KLQkJLyoKLQkJICogUmVjb3JkIGFzeW5jIHN1YnBsYW5zLiAgV2hlbiBleGVjdXRp bmcgRXZhbFBsYW5RdWFsLCB3ZSB0cmVhdCB0aGVtCi0JCSAqIGFzIHN5bmMgb25lczsgZG9uJ3Qg ZG8gdGhpcyB3aGVuIGluaXRpYWxpemluZyBhbiBFdmFsUGxhblF1YWwgcGxhbgotCQkgKiB0cmVl LgotCQkgKi8KLQkJaWYgKGluaXROb2RlLT5hc3luY19jYXBhYmxlICYmIGVzdGF0ZS0+ZXNfZXBx X2FjdGl2ZSA9PSBOVUxMKQotCQl7Ci0JCQlhc3luY3BsYW5zID0gYm1zX2FkZF9tZW1iZXIoYXN5 bmNwbGFucywgaik7Ci0JCQluYXN5bmNwbGFucysrOwotCQl9Ci0KLQkJLyoKLQkJICogUmVjb3Jk IHRoZSBsb3dlc3QgYXBwZW5kcGxhbnMgaW5kZXggd2hpY2ggaXMgYSB2YWxpZCBwYXJ0aWFsIHBs YW4uCi0JCSAqLwotCQlpZiAoaSA+PSBub2RlLT5maXJzdF9wYXJ0aWFsX3BsYW4gJiYgaiA8IGZp cnN0dmFsaWQpCi0JCQlmaXJzdHZhbGlkID0gajsKLQotCQlhcHBlbmRwbGFuc3RhdGVzW2orK10g PSBFeGVjSW5pdE5vZGUoaW5pdE5vZGUsIGVzdGF0ZSwgZWZsYWdzKTsKLQl9Ci0KLQlhcHBlbmRz dGF0ZS0+YXNfZmlyc3RfcGFydGlhbF9wbGFuID0gZmlyc3R2YWxpZDsKLQlhcHBlbmRzdGF0ZS0+ YXBwZW5kcGxhbnMgPSBhcHBlbmRwbGFuc3RhdGVzOwotCWFwcGVuZHN0YXRlLT5hc19ucGxhbnMg PSBucGxhbnM7CisJLyogSW5pdGlhbGl6ZSBjb21tb24gZmllbGRzICovCisJRXhlY0luaXRBcHBl bmRlcigmYXBwZW5kc3RhdGUtPmFzLAorCQkJCQkgJm5vZGUtPmFwLAorCQkJCQkgZXN0YXRlLAor CQkJCQkgZWZsYWdzLAorCQkJCQkgbm9kZS0+Zmlyc3RfcGFydGlhbF9wbGFuLAorCQkJCQkgJmFw cGVuZHN0YXRlLT5hc19maXJzdF9wYXJ0aWFsX3BsYW4pOwogCi0JLyoKLQkgKiBJbml0aWFsaXpl IEFwcGVuZCdzIHJlc3VsdCB0dXBsZSB0eXBlIGFuZCBzbG90LiAgSWYgdGhlIGNoaWxkIHBsYW5z IGFsbAotCSAqIHByb2R1Y2UgdGhlIHNhbWUgZml4ZWQgc2xvdCB0eXBlLCB3ZSBjYW4gdXNlIHRo YXQgc2xvdCB0eXBlOyBvdGhlcndpc2UKLQkgKiBtYWtlIGEgdmlydHVhbCBzbG90LiAgKE5vdGUg dGhhdCB0aGUgcmVzdWx0IHNsb3QgaXRzZWxmIGlzIHVzZWQgb25seSB0bwotCSAqIHJldHVybiBh IG51bGwgdHVwbGUgYXQgZW5kIG9mIGV4ZWN1dGlvbjsgcmVhbCB0dXBsZXMgYXJlIHJldHVybmVk IHRvCi0JICogdGhlIGNhbGxlciBpbiB0aGUgY2hpbGRyZW4ncyBvd24gcmVzdWx0IHNsb3RzLiAg V2hhdCB3ZSBhcmUgZG9pbmcgaGVyZQotCSAqIGlzIGFsbG93aW5nIHRoZSBwYXJlbnQgcGxhbiBu b2RlIHRvIG9wdGltaXplIGlmIHRoZSBBcHBlbmQgd2lsbCByZXR1cm4KLQkgKiBvbmx5IG9uZSBr aW5kIG9mIHNsb3QuKQotCSAqLwotCWFwcGVuZG9wcyA9IEV4ZWNHZXRDb21tb25TbG90T3BzKGFw cGVuZHBsYW5zdGF0ZXMsIGopOwotCWlmIChhcHBlbmRvcHMgIT0gTlVMTCkKLQl7Ci0JCUV4ZWNJ bml0UmVzdWx0VHVwbGVTbG90VEwoJmFwcGVuZHN0YXRlLT5wcywgYXBwZW5kb3BzKTsKLQl9Ci0J ZWxzZQotCXsKLQkJRXhlY0luaXRSZXN1bHRUdXBsZVNsb3RUTCgmYXBwZW5kc3RhdGUtPnBzLCAm VFRTT3BzVmlydHVhbCk7Ci0JCS8qIHNob3cgdGhhdCB0aGUgb3V0cHV0IHNsb3QgdHlwZSBpcyBu b3QgZml4ZWQgKi8KLQkJYXBwZW5kc3RhdGUtPnBzLnJlc3VsdG9wc3NldCA9IHRydWU7Ci0JCWFw cGVuZHN0YXRlLT5wcy5yZXN1bHRvcHNmaXhlZCA9IGZhbHNlOwotCX0KKwlpZiAoYXBwZW5kc3Rh dGUtPmFzLm5hc3luY3BsYW5zID4gMCAmJiBhcHBlbmRzdGF0ZS0+YXMudmFsaWRfc3VicGxhbnNf aWRlbnRpZmllZCkKKwkJY2xhc3NpZnlfbWF0Y2hpbmdfc3VicGxhbnMoYXBwZW5kc3RhdGUpOwog Ci0JLyogSW5pdGlhbGl6ZSBhc3luYyBzdGF0ZSAqLwotCWFwcGVuZHN0YXRlLT5hc19hc3luY3Bs YW5zID0gYXN5bmNwbGFuczsKLQlhcHBlbmRzdGF0ZS0+YXNfbmFzeW5jcGxhbnMgPSBuYXN5bmNw bGFuczsKLQlhcHBlbmRzdGF0ZS0+YXNfYXN5bmNyZXF1ZXN0cyA9IE5VTEw7Ci0JYXBwZW5kc3Rh dGUtPmFzX2FzeW5jcmVzdWx0cyA9IE5VTEw7Ci0JYXBwZW5kc3RhdGUtPmFzX25hc3luY3Jlc3Vs dHMgPSAwOwogCWFwcGVuZHN0YXRlLT5hc19uYXN5bmNyZW1haW4gPSAwOwotCWFwcGVuZHN0YXRl LT5hc19uZWVkcmVxdWVzdCA9IE5VTEw7Ci0JYXBwZW5kc3RhdGUtPmFzX2V2ZW50c2V0ID0gTlVM TDsKLQlhcHBlbmRzdGF0ZS0+YXNfdmFsaWRfYXN5bmNwbGFucyA9IE5VTEw7Ci0KLQlpZiAobmFz eW5jcGxhbnMgPiAwKQotCXsKLQkJYXBwZW5kc3RhdGUtPmFzX2FzeW5jcmVxdWVzdHMgPSAoQXN5 bmNSZXF1ZXN0ICoqKQotCQkJcGFsbG9jMChucGxhbnMgKiBzaXplb2YoQXN5bmNSZXF1ZXN0ICop KTsKLQotCQlpID0gLTE7Ci0JCXdoaWxlICgoaSA9IGJtc19uZXh0X21lbWJlcihhc3luY3BsYW5z LCBpKSkgPj0gMCkKLQkJewotCQkJQXN5bmNSZXF1ZXN0ICphcmVxOwotCi0JCQlhcmVxID0gcGFs bG9jX29iamVjdChBc3luY1JlcXVlc3QpOwotCQkJYXJlcS0+cmVxdWVzdG9yID0gKFBsYW5TdGF0 ZSAqKSBhcHBlbmRzdGF0ZTsKLQkJCWFyZXEtPnJlcXVlc3RlZSA9IGFwcGVuZHBsYW5zdGF0ZXNb aV07Ci0JCQlhcmVxLT5yZXF1ZXN0X2luZGV4ID0gaTsKLQkJCWFyZXEtPmNhbGxiYWNrX3BlbmRp bmcgPSBmYWxzZTsKLQkJCWFyZXEtPnJlcXVlc3RfY29tcGxldGUgPSBmYWxzZTsKLQkJCWFyZXEt PnJlc3VsdCA9IE5VTEw7Ci0KLQkJCWFwcGVuZHN0YXRlLT5hc19hc3luY3JlcXVlc3RzW2ldID0g YXJlcTsKLQkJfQotCi0JCWFwcGVuZHN0YXRlLT5hc19hc3luY3Jlc3VsdHMgPSAoVHVwbGVUYWJs ZVNsb3QgKiopCi0JCQlwYWxsb2MwKG5hc3luY3BsYW5zICogc2l6ZW9mKFR1cGxlVGFibGVTbG90 ICopKTsKLQotCQlpZiAoYXBwZW5kc3RhdGUtPmFzX3ZhbGlkX3N1YnBsYW5zX2lkZW50aWZpZWQp Ci0JCQljbGFzc2lmeV9tYXRjaGluZ19zdWJwbGFucyhhcHBlbmRzdGF0ZSk7Ci0JfQotCi0JLyoK LQkgKiBNaXNjZWxsYW5lb3VzIGluaXRpYWxpemF0aW9uCi0JICovCi0KLQlhcHBlbmRzdGF0ZS0+ cHMucHNfUHJvakluZm8gPSBOVUxMOwogCiAJLyogRm9yIHBhcmFsbGVsIHF1ZXJ5LCB0aGlzIHdp bGwgYmUgb3ZlcnJpZGRlbiBsYXRlci4gKi8KIAlhcHBlbmRzdGF0ZS0+Y2hvb3NlX25leHRfc3Vi cGxhbiA9IGNob29zZV9uZXh0X3N1YnBsYW5fbG9jYWxseTsKQEAgLTMxNSwxMSArMTY2LDExIEBA IEV4ZWNBcHBlbmQoUGxhblN0YXRlICpwc3RhdGUpCiAJCUFzc2VydCghbm9kZS0+YXNfc3luY2Rv bmUpOwogCiAJCS8qIE5vdGhpbmcgdG8gZG8gaWYgdGhlcmUgYXJlIG5vIHN1YnBsYW5zICovCi0J CWlmIChub2RlLT5hc19ucGxhbnMgPT0gMCkKLQkJCXJldHVybiBFeGVjQ2xlYXJUdXBsZShub2Rl LT5wcy5wc19SZXN1bHRUdXBsZVNsb3QpOworCQlpZiAobm9kZS0+YXMubnBsYW5zID09IDApCisJ CQlyZXR1cm4gRXhlY0NsZWFyVHVwbGUobm9kZS0+YXMucHMucHNfUmVzdWx0VHVwbGVTbG90KTsK IAogCQkvKiBJZiB0aGVyZSBhcmUgYW55IGFzeW5jIHN1YnBsYW5zLCBiZWdpbiBleGVjdXRpbmcg dGhlbS4gKi8KLQkJaWYgKG5vZGUtPmFzX25hc3luY3BsYW5zID4gMCkKKwkJaWYgKG5vZGUtPmFz Lm5hc3luY3BsYW5zID4gMCkKIAkJCUV4ZWNBcHBlbmRBc3luY0JlZ2luKG5vZGUpOwogCiAJCS8q CkBAIC0zMjcsMTEgKzE3OCwxMSBAQCBFeGVjQXBwZW5kKFBsYW5TdGF0ZSAqcHN0YXRlKQogCQkg KiBwcm9jZWVkaW5nLgogCQkgKi8KIAkJaWYgKCFub2RlLT5jaG9vc2VfbmV4dF9zdWJwbGFuKG5v ZGUpICYmIG5vZGUtPmFzX25hc3luY3JlbWFpbiA9PSAwKQotCQkJcmV0dXJuIEV4ZWNDbGVhclR1 cGxlKG5vZGUtPnBzLnBzX1Jlc3VsdFR1cGxlU2xvdCk7CisJCQlyZXR1cm4gRXhlY0NsZWFyVHVw bGUobm9kZS0+YXMucHMucHNfUmVzdWx0VHVwbGVTbG90KTsKIAogCQlBc3NlcnQobm9kZS0+YXNf c3luY2RvbmUgfHwKIAkJCSAgIChub2RlLT5hc193aGljaHBsYW4gPj0gMCAmJgotCQkJCW5vZGUt PmFzX3doaWNocGxhbiA8IG5vZGUtPmFzX25wbGFucykpOworCQkJCW5vZGUtPmFzX3doaWNocGxh biA8IG5vZGUtPmFzLm5wbGFucykpOwogCiAJCS8qIEFuZCB3ZSdyZSBpbml0aWFsaXplZC4gKi8K IAkJbm9kZS0+YXNfYmVndW4gPSB0cnVlOwpAQCAtMzQ2LDE5ICsxOTcsMTkgQEAgRXhlY0FwcGVu ZChQbGFuU3RhdGUgKnBzdGF0ZSkKIAkJLyoKIAkJICogdHJ5IHRvIGdldCBhIHR1cGxlIGZyb20g YW4gYXN5bmMgc3VicGxhbiBpZiBhbnkKIAkJICovCi0JCWlmIChub2RlLT5hc19zeW5jZG9uZSB8 fCAhYm1zX2lzX2VtcHR5KG5vZGUtPmFzX25lZWRyZXF1ZXN0KSkKKwkJaWYgKG5vZGUtPmFzX3N5 bmNkb25lIHx8ICFibXNfaXNfZW1wdHkobm9kZS0+YXMubmVlZHJlcXVlc3QpKQogCQl7CiAJCQlp ZiAoRXhlY0FwcGVuZEFzeW5jR2V0TmV4dChub2RlLCAmcmVzdWx0KSkKIAkJCQlyZXR1cm4gcmVz dWx0OwogCQkJQXNzZXJ0KCFub2RlLT5hc19zeW5jZG9uZSk7Ci0JCQlBc3NlcnQoYm1zX2lzX2Vt cHR5KG5vZGUtPmFzX25lZWRyZXF1ZXN0KSk7CisJCQlBc3NlcnQoYm1zX2lzX2VtcHR5KG5vZGUt PmFzLm5lZWRyZXF1ZXN0KSk7CiAJCX0KIAogCQkvKgogCQkgKiBmaWd1cmUgb3V0IHdoaWNoIHN5 bmMgc3VicGxhbiB3ZSBhcmUgY3VycmVudGx5IHByb2Nlc3NpbmcKIAkJICovCi0JCUFzc2VydChu b2RlLT5hc193aGljaHBsYW4gPj0gMCAmJiBub2RlLT5hc193aGljaHBsYW4gPCBub2RlLT5hc19u cGxhbnMpOwotCQlzdWJub2RlID0gbm9kZS0+YXBwZW5kcGxhbnNbbm9kZS0+YXNfd2hpY2hwbGFu XTsKKwkJQXNzZXJ0KG5vZGUtPmFzX3doaWNocGxhbiA+PSAwICYmIG5vZGUtPmFzX3doaWNocGxh biA8IG5vZGUtPmFzLm5wbGFucyk7CisJCXN1Ym5vZGUgPSBub2RlLT5hcy5wbGFuc1tub2RlLT5h c193aGljaHBsYW5dOwogCiAJCS8qCiAJCSAqIGdldCBhIHR1cGxlIGZyb20gdGhlIHN1YnBsYW4K QEAgLTM4NSw3ICsyMzYsNyBAQCBFeGVjQXBwZW5kKFBsYW5TdGF0ZSAqcHN0YXRlKQogCiAJCS8q IGNob29zZSBuZXcgc3luYyBzdWJwbGFuOyBpZiBubyBzeW5jL2FzeW5jIHN1YnBsYW5zLCB3ZSdy ZSBkb25lICovCiAJCWlmICghbm9kZS0+Y2hvb3NlX25leHRfc3VicGxhbihub2RlKSAmJiBub2Rl LT5hc19uYXN5bmNyZW1haW4gPT0gMCkKLQkJCXJldHVybiBFeGVjQ2xlYXJUdXBsZShub2RlLT5w cy5wc19SZXN1bHRUdXBsZVNsb3QpOworCQkJcmV0dXJuIEV4ZWNDbGVhclR1cGxlKG5vZGUtPmFz LnBzLnBzX1Jlc3VsdFR1cGxlU2xvdCk7CiAJfQogfQogCkBAIC00MDAsODEgKzI1MSwyMiBAQCBF eGVjQXBwZW5kKFBsYW5TdGF0ZSAqcHN0YXRlKQogdm9pZAogRXhlY0VuZEFwcGVuZChBcHBlbmRT dGF0ZSAqbm9kZSkKIHsKLQlQbGFuU3RhdGUgKiphcHBlbmRwbGFuczsKLQlpbnQJCQlucGxhbnM7 Ci0JaW50CQkJaTsKLQotCS8qCi0JICogZ2V0IGluZm9ybWF0aW9uIGZyb20gdGhlIG5vZGUKLQkg Ki8KLQlhcHBlbmRwbGFucyA9IG5vZGUtPmFwcGVuZHBsYW5zOwotCW5wbGFucyA9IG5vZGUtPmFz X25wbGFuczsKLQotCS8qCi0JICogc2h1dCBkb3duIGVhY2ggb2YgdGhlIHN1YnNjYW5zCi0JICov Ci0JZm9yIChpID0gMDsgaSA8IG5wbGFuczsgaSsrKQotCQlFeGVjRW5kTm9kZShhcHBlbmRwbGFu c1tpXSk7CisJRXhlY0VuZEFwcGVuZGVyKCZub2RlLT5hcyk7CiB9CiAKIHZvaWQKIEV4ZWNSZVNj YW5BcHBlbmQoQXBwZW5kU3RhdGUgKm5vZGUpCiB7Ci0JaW50CQkJbmFzeW5jcGxhbnMgPSBub2Rl LT5hc19uYXN5bmNwbGFuczsKLQlpbnQJCQlpOwotCi0JLyoKLQkgKiBJZiBhbnkgUEFSQU1fRVhF QyBQYXJhbXMgdXNlZCBpbiBwcnVuaW5nIGV4cHJlc3Npb25zIGhhdmUgY2hhbmdlZCwgdGhlbgot CSAqIHdlJ2QgYmV0dGVyIHVuc2V0IHRoZSB2YWxpZCBzdWJwbGFucyBzbyB0aGF0IHRoZXkgYXJl IHJlc2VsZWN0ZWQgZm9yCi0JICogdGhlIG5ldyBwYXJhbWV0ZXIgdmFsdWVzLgotCSAqLwotCWlm IChub2RlLT5hc19wcnVuZV9zdGF0ZSAmJgotCQlibXNfb3ZlcmxhcChub2RlLT5wcy5jaGdQYXJh bSwKLQkJCQkJbm9kZS0+YXNfcHJ1bmVfc3RhdGUtPmV4ZWNwYXJhbWlkcykpCi0JewotCQlub2Rl LT5hc192YWxpZF9zdWJwbGFuc19pZGVudGlmaWVkID0gZmFsc2U7Ci0JCWJtc19mcmVlKG5vZGUt PmFzX3ZhbGlkX3N1YnBsYW5zKTsKLQkJbm9kZS0+YXNfdmFsaWRfc3VicGxhbnMgPSBOVUxMOwot CQlibXNfZnJlZShub2RlLT5hc192YWxpZF9hc3luY3BsYW5zKTsKLQkJbm9kZS0+YXNfdmFsaWRf YXN5bmNwbGFucyA9IE5VTEw7Ci0JfQotCi0JZm9yIChpID0gMDsgaSA8IG5vZGUtPmFzX25wbGFu czsgaSsrKQotCXsKLQkJUGxhblN0YXRlICAqc3Vibm9kZSA9IG5vZGUtPmFwcGVuZHBsYW5zW2ld OwogCi0JCS8qCi0JCSAqIEV4ZWNSZVNjYW4gZG9lc24ndCBrbm93IGFib3V0IG15IHN1YnBsYW5z LCBzbyBJIGhhdmUgdG8gZG8KLQkJICogY2hhbmdlZC1wYXJhbWV0ZXIgc2lnbmFsaW5nIG15c2Vs Zi4KLQkJICovCi0JCWlmIChub2RlLT5wcy5jaGdQYXJhbSAhPSBOVUxMKQotCQkJVXBkYXRlQ2hh bmdlZFBhcmFtU2V0KHN1Ym5vZGUsIG5vZGUtPnBzLmNoZ1BhcmFtKTsKKwlpbnQJCQluYXN5bmNw bGFucyA9IG5vZGUtPmFzLm5hc3luY3BsYW5zOwogCi0JCS8qCi0JCSAqIElmIGNoZ1BhcmFtIG9m IHN1Ym5vZGUgaXMgbm90IG51bGwgdGhlbiBwbGFuIHdpbGwgYmUgcmUtc2Nhbm5lZCBieQotCQkg KiBmaXJzdCBFeGVjUHJvY05vZGUgb3IgYnkgZmlyc3QgRXhlY0FzeW5jUmVxdWVzdC4KLQkJICov Ci0JCWlmIChzdWJub2RlLT5jaGdQYXJhbSA9PSBOVUxMKQotCQkJRXhlY1JlU2NhbihzdWJub2Rl KTsKLQl9CisJRXhlY1JlU2NhbkFwcGVuZGVyKCZub2RlLT5hcyk7CiAKLQkvKiBSZXNldCBhc3lu YyBzdGF0ZSAqLworCS8qIFJlc2V0IHNwZWNpZmljIGFwcGVuZCBhc3luYyBzdGF0ZSAqLwogCWlm IChuYXN5bmNwbGFucyA+IDApCiAJewotCQlpID0gLTE7Ci0JCXdoaWxlICgoaSA9IGJtc19uZXh0 X21lbWJlcihub2RlLT5hc19hc3luY3BsYW5zLCBpKSkgPj0gMCkKLQkJewotCQkJQXN5bmNSZXF1 ZXN0ICphcmVxID0gbm9kZS0+YXNfYXN5bmNyZXF1ZXN0c1tpXTsKLQotCQkJYXJlcS0+Y2FsbGJh Y2tfcGVuZGluZyA9IGZhbHNlOwotCQkJYXJlcS0+cmVxdWVzdF9jb21wbGV0ZSA9IGZhbHNlOwot CQkJYXJlcS0+cmVzdWx0ID0gTlVMTDsKLQkJfQotCiAJCW5vZGUtPmFzX25hc3luY3Jlc3VsdHMg PSAwOwogCQlub2RlLT5hc19uYXN5bmNyZW1haW4gPSAwOwotCQlibXNfZnJlZShub2RlLT5hc19u ZWVkcmVxdWVzdCk7Ci0JCW5vZGUtPmFzX25lZWRyZXF1ZXN0ID0gTlVMTDsKIAl9CiAKIAkvKiBM ZXQgY2hvb3NlX25leHRfc3VicGxhbl8qIGZ1bmN0aW9uIGhhbmRsZSBzZXR0aW5nIHRoZSBmaXJz dCBzdWJwbGFuICovCkBAIC01MDEsNyArMjkzLDcgQEAgRXhlY0FwcGVuZEVzdGltYXRlKEFwcGVu ZFN0YXRlICpub2RlLAogewogCW5vZGUtPnBzdGF0ZV9sZW4gPQogCQlhZGRfc2l6ZShvZmZzZXRv ZihQYXJhbGxlbEFwcGVuZFN0YXRlLCBwYV9maW5pc2hlZCksCi0JCQkJIHNpemVvZihib29sKSAq IG5vZGUtPmFzX25wbGFucyk7CisJCQkJIHNpemVvZihib29sKSAqIG5vZGUtPmFzLm5wbGFucyk7 CiAKIAlzaG1fdG9jX2VzdGltYXRlX2NodW5rKCZwY3h0LT5lc3RpbWF0b3IsIG5vZGUtPnBzdGF0 ZV9sZW4pOwogCXNobV90b2NfZXN0aW1hdGVfa2V5cygmcGN4dC0+ZXN0aW1hdG9yLCAxKTsKQEAg LTUyMyw3ICszMTUsNyBAQCBFeGVjQXBwZW5kSW5pdGlhbGl6ZURTTShBcHBlbmRTdGF0ZSAqbm9k ZSwKIAlwc3RhdGUgPSBzaG1fdG9jX2FsbG9jYXRlKHBjeHQtPnRvYywgbm9kZS0+cHN0YXRlX2xl bik7CiAJbWVtc2V0KHBzdGF0ZSwgMCwgbm9kZS0+cHN0YXRlX2xlbik7CiAJTFdMb2NrSW5pdGlh bGl6ZSgmcHN0YXRlLT5wYV9sb2NrLCBMV1RSQU5DSEVfUEFSQUxMRUxfQVBQRU5EKTsKLQlzaG1f dG9jX2luc2VydChwY3h0LT50b2MsIG5vZGUtPnBzLnBsYW4tPnBsYW5fbm9kZV9pZCwgcHN0YXRl KTsKKwlzaG1fdG9jX2luc2VydChwY3h0LT50b2MsIG5vZGUtPmFzLnBzLnBsYW4tPnBsYW5fbm9k ZV9pZCwgcHN0YXRlKTsKIAogCW5vZGUtPmFzX3BzdGF0ZSA9IHBzdGF0ZTsKIAlub2RlLT5jaG9v c2VfbmV4dF9zdWJwbGFuID0gY2hvb3NlX25leHRfc3VicGxhbl9mb3JfbGVhZGVyOwpAQCAtNTQx LDcgKzMzMyw3IEBAIEV4ZWNBcHBlbmRSZUluaXRpYWxpemVEU00oQXBwZW5kU3RhdGUgKm5vZGUs IFBhcmFsbGVsQ29udGV4dCAqcGN4dCkKIAlQYXJhbGxlbEFwcGVuZFN0YXRlICpwc3RhdGUgPSBu b2RlLT5hc19wc3RhdGU7CiAKIAlwc3RhdGUtPnBhX25leHRfcGxhbiA9IDA7Ci0JbWVtc2V0KHBz dGF0ZS0+cGFfZmluaXNoZWQsIDAsIHNpemVvZihib29sKSAqIG5vZGUtPmFzX25wbGFucyk7CisJ bWVtc2V0KHBzdGF0ZS0+cGFfZmluaXNoZWQsIDAsIHNpemVvZihib29sKSAqIG5vZGUtPmFzLm5w bGFucyk7CiB9CiAKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTU1NCw3ICszNDYsNyBAQCBFeGVjQXBwZW5kUmVJ bml0aWFsaXplRFNNKEFwcGVuZFN0YXRlICpub2RlLCBQYXJhbGxlbENvbnRleHQgKnBjeHQpCiB2 b2lkCiBFeGVjQXBwZW5kSW5pdGlhbGl6ZVdvcmtlcihBcHBlbmRTdGF0ZSAqbm9kZSwgUGFyYWxs ZWxXb3JrZXJDb250ZXh0ICpwd2N4dCkKIHsKLQlub2RlLT5hc19wc3RhdGUgPSBzaG1fdG9jX2xv b2t1cChwd2N4dC0+dG9jLCBub2RlLT5wcy5wbGFuLT5wbGFuX25vZGVfaWQsIGZhbHNlKTsKKwlu b2RlLT5hc19wc3RhdGUgPSBzaG1fdG9jX2xvb2t1cChwd2N4dC0+dG9jLCBub2RlLT5hcy5wcy5w bGFuLT5wbGFuX25vZGVfaWQsIGZhbHNlKTsKIAlub2RlLT5jaG9vc2VfbmV4dF9zdWJwbGFuID0g Y2hvb3NlX25leHRfc3VicGxhbl9mb3Jfd29ya2VyOwogfQogCkBAIC01NzIsNyArMzY0LDcgQEAg Y2hvb3NlX25leHRfc3VicGxhbl9sb2NhbGx5KEFwcGVuZFN0YXRlICpub2RlKQogCWludAkJCW5l eHRwbGFuOwogCiAJLyogV2Ugc2hvdWxkIG5ldmVyIGJlIGNhbGxlZCB3aGVuIHRoZXJlIGFyZSBu byBzdWJwbGFucyAqLwotCUFzc2VydChub2RlLT5hc19ucGxhbnMgPiAwKTsKKwlBc3NlcnQobm9k ZS0+YXMubnBsYW5zID4gMCk7CiAKIAkvKiBOb3RoaW5nIHRvIGRvIGlmIHN5bmNkb25lICovCiAJ aWYgKG5vZGUtPmFzX3N5bmNkb25lKQpAQCAtNTg3LDMzICszNzksMzMgQEAgY2hvb3NlX25leHRf c3VicGxhbl9sb2NhbGx5KEFwcGVuZFN0YXRlICpub2RlKQogCSAqLwogCWlmICh3aGljaHBsYW4g PT0gSU5WQUxJRF9TVUJQTEFOX0lOREVYKQogCXsKLQkJaWYgKG5vZGUtPmFzX25hc3luY3BsYW5z ID4gMCkKKwkJaWYgKG5vZGUtPmFzLm5hc3luY3BsYW5zID4gMCkKIAkJewogCQkJLyogV2UnZCBo YXZlIGZpbGxlZCBhc192YWxpZF9zdWJwbGFucyBhbHJlYWR5ICovCi0JCQlBc3NlcnQobm9kZS0+ YXNfdmFsaWRfc3VicGxhbnNfaWRlbnRpZmllZCk7CisJCQlBc3NlcnQobm9kZS0+YXMudmFsaWRf c3VicGxhbnNfaWRlbnRpZmllZCk7CiAJCX0KLQkJZWxzZSBpZiAoIW5vZGUtPmFzX3ZhbGlkX3N1 YnBsYW5zX2lkZW50aWZpZWQpCisJCWVsc2UgaWYgKCFub2RlLT5hcy52YWxpZF9zdWJwbGFuc19p ZGVudGlmaWVkKQogCQl7Ci0JCQlub2RlLT5hc192YWxpZF9zdWJwbGFucyA9Ci0JCQkJRXhlY0Zp bmRNYXRjaGluZ1N1YlBsYW5zKG5vZGUtPmFzX3BydW5lX3N0YXRlLCBmYWxzZSwgTlVMTCk7Ci0J CQlub2RlLT5hc192YWxpZF9zdWJwbGFuc19pZGVudGlmaWVkID0gdHJ1ZTsKKwkJCW5vZGUtPmFz LnZhbGlkX3N1YnBsYW5zID0KKwkJCQlFeGVjRmluZE1hdGNoaW5nU3ViUGxhbnMobm9kZS0+YXMu cHJ1bmVfc3RhdGUsIGZhbHNlLCBOVUxMKTsKKwkJCW5vZGUtPmFzLnZhbGlkX3N1YnBsYW5zX2lk ZW50aWZpZWQgPSB0cnVlOwogCQl9CiAKIAkJd2hpY2hwbGFuID0gLTE7CiAJfQogCiAJLyogRW5z dXJlIHdoaWNocGxhbiBpcyB3aXRoaW4gdGhlIGV4cGVjdGVkIHJhbmdlICovCi0JQXNzZXJ0KHdo aWNocGxhbiA+PSAtMSAmJiB3aGljaHBsYW4gPD0gbm9kZS0+YXNfbnBsYW5zKTsKKwlBc3NlcnQo d2hpY2hwbGFuID49IC0xICYmIHdoaWNocGxhbiA8PSBub2RlLT5hcy5ucGxhbnMpOwogCi0JaWYg KFNjYW5EaXJlY3Rpb25Jc0ZvcndhcmQobm9kZS0+cHMuc3RhdGUtPmVzX2RpcmVjdGlvbikpCi0J CW5leHRwbGFuID0gYm1zX25leHRfbWVtYmVyKG5vZGUtPmFzX3ZhbGlkX3N1YnBsYW5zLCB3aGlj aHBsYW4pOworCWlmIChTY2FuRGlyZWN0aW9uSXNGb3J3YXJkKG5vZGUtPmFzLnBzLnN0YXRlLT5l c19kaXJlY3Rpb24pKQorCQluZXh0cGxhbiA9IGJtc19uZXh0X21lbWJlcihub2RlLT5hcy52YWxp ZF9zdWJwbGFucywgd2hpY2hwbGFuKTsKIAllbHNlCi0JCW5leHRwbGFuID0gYm1zX3ByZXZfbWVt YmVyKG5vZGUtPmFzX3ZhbGlkX3N1YnBsYW5zLCB3aGljaHBsYW4pOworCQluZXh0cGxhbiA9IGJt c19wcmV2X21lbWJlcihub2RlLT5hcy52YWxpZF9zdWJwbGFucywgd2hpY2hwbGFuKTsKIAogCWlm IChuZXh0cGxhbiA8IDApCiAJewogCQkvKiBTZXQgYXNfc3luY2RvbmUgaWYgaW4gYXN5bmMgbW9k ZSAqLwotCQlpZiAobm9kZS0+YXNfbmFzeW5jcGxhbnMgPiAwKQorCQlpZiAobm9kZS0+YXMubmFz eW5jcGxhbnMgPiAwKQogCQkJbm9kZS0+YXNfc3luY2RvbmUgPSB0cnVlOwogCQlyZXR1cm4gZmFs c2U7CiAJfQpAQCAtNjM3LDEwICs0MjksMTAgQEAgY2hvb3NlX25leHRfc3VicGxhbl9mb3JfbGVh ZGVyKEFwcGVuZFN0YXRlICpub2RlKQogCVBhcmFsbGVsQXBwZW5kU3RhdGUgKnBzdGF0ZSA9IG5v ZGUtPmFzX3BzdGF0ZTsKIAogCS8qIEJhY2t3YXJkIHNjYW4gaXMgbm90IHN1cHBvcnRlZCBieSBw YXJhbGxlbC1hd2FyZSBwbGFucyAqLwotCUFzc2VydChTY2FuRGlyZWN0aW9uSXNGb3J3YXJkKG5v ZGUtPnBzLnN0YXRlLT5lc19kaXJlY3Rpb24pKTsKKwlBc3NlcnQoU2NhbkRpcmVjdGlvbklzRm9y d2FyZChub2RlLT5hcy5wcy5zdGF0ZS0+ZXNfZGlyZWN0aW9uKSk7CiAKIAkvKiBXZSBzaG91bGQg bmV2ZXIgYmUgY2FsbGVkIHdoZW4gdGhlcmUgYXJlIG5vIHN1YnBsYW5zICovCi0JQXNzZXJ0KG5v ZGUtPmFzX25wbGFucyA+IDApOworCUFzc2VydChub2RlLT5hcy5ucGxhbnMgPiAwKTsKIAogCUxX TG9ja0FjcXVpcmUoJnBzdGF0ZS0+cGFfbG9jaywgTFdfRVhDTFVTSVZFKTsKIApAQCAtNjUyLDE4 ICs0NDQsMTggQEAgY2hvb3NlX25leHRfc3VicGxhbl9mb3JfbGVhZGVyKEFwcGVuZFN0YXRlICpu b2RlKQogCWVsc2UKIAl7CiAJCS8qIFN0YXJ0IHdpdGggbGFzdCBzdWJwbGFuLiAqLwotCQlub2Rl LT5hc193aGljaHBsYW4gPSBub2RlLT5hc19ucGxhbnMgLSAxOworCQlub2RlLT5hc193aGljaHBs YW4gPSBub2RlLT5hcy5ucGxhbnMgLSAxOwogCiAJCS8qCiAJCSAqIElmIHdlJ3ZlIHlldCB0byBk ZXRlcm1pbmUgdGhlIHZhbGlkIHN1YnBsYW5zIHRoZW4gZG8gc28gbm93LiAgSWYKIAkJICogcnVu LXRpbWUgcHJ1bmluZyBpcyBkaXNhYmxlZCB0aGVuIHRoZSB2YWxpZCBzdWJwbGFucyB3aWxsIGFs d2F5cyBiZQogCQkgKiBzZXQgdG8gYWxsIHN1YnBsYW5zLgogCQkgKi8KLQkJaWYgKCFub2RlLT5h c192YWxpZF9zdWJwbGFuc19pZGVudGlmaWVkKQorCQlpZiAoIW5vZGUtPmFzLnZhbGlkX3N1YnBs YW5zX2lkZW50aWZpZWQpCiAJCXsKLQkJCW5vZGUtPmFzX3ZhbGlkX3N1YnBsYW5zID0KLQkJCQlF eGVjRmluZE1hdGNoaW5nU3ViUGxhbnMobm9kZS0+YXNfcHJ1bmVfc3RhdGUsIGZhbHNlLCBOVUxM KTsKLQkJCW5vZGUtPmFzX3ZhbGlkX3N1YnBsYW5zX2lkZW50aWZpZWQgPSB0cnVlOworCQkJbm9k ZS0+YXMudmFsaWRfc3VicGxhbnMgPQorCQkJCUV4ZWNGaW5kTWF0Y2hpbmdTdWJQbGFucyhub2Rl LT5hcy5wcnVuZV9zdGF0ZSwgZmFsc2UsIE5VTEwpOworCQkJbm9kZS0+YXMudmFsaWRfc3VicGxh bnNfaWRlbnRpZmllZCA9IHRydWU7CiAKIAkJCS8qCiAJCQkgKiBNYXJrIGVhY2ggaW52YWxpZCBw bGFuIGFzIGZpbmlzaGVkIHRvIGFsbG93IHRoZSBsb29wIGJlbG93IHRvCkBAIC03MTksMTAgKzUx MSwxMCBAQCBjaG9vc2VfbmV4dF9zdWJwbGFuX2Zvcl93b3JrZXIoQXBwZW5kU3RhdGUgKm5vZGUp CiAJUGFyYWxsZWxBcHBlbmRTdGF0ZSAqcHN0YXRlID0gbm9kZS0+YXNfcHN0YXRlOwogCiAJLyog QmFja3dhcmQgc2NhbiBpcyBub3Qgc3VwcG9ydGVkIGJ5IHBhcmFsbGVsLWF3YXJlIHBsYW5zICov Ci0JQXNzZXJ0KFNjYW5EaXJlY3Rpb25Jc0ZvcndhcmQobm9kZS0+cHMuc3RhdGUtPmVzX2RpcmVj dGlvbikpOworCUFzc2VydChTY2FuRGlyZWN0aW9uSXNGb3J3YXJkKG5vZGUtPmFzLnBzLnN0YXRl LT5lc19kaXJlY3Rpb24pKTsKIAogCS8qIFdlIHNob3VsZCBuZXZlciBiZSBjYWxsZWQgd2hlbiB0 aGVyZSBhcmUgbm8gc3VicGxhbnMgKi8KLQlBc3NlcnQobm9kZS0+YXNfbnBsYW5zID4gMCk7CisJ QXNzZXJ0KG5vZGUtPmFzLm5wbGFucyA+IDApOwogCiAJTFdMb2NrQWNxdWlyZSgmcHN0YXRlLT5w YV9sb2NrLCBMV19FWENMVVNJVkUpOwogCkBAIC03MzUsMTEgKzUyNywxMSBAQCBjaG9vc2VfbmV4 dF9zdWJwbGFuX2Zvcl93b3JrZXIoQXBwZW5kU3RhdGUgKm5vZGUpCiAJICogcnVuLXRpbWUgcHJ1 bmluZyBpcyBkaXNhYmxlZCB0aGVuIHRoZSB2YWxpZCBzdWJwbGFucyB3aWxsIGFsd2F5cyBiZSBz ZXQKIAkgKiB0byBhbGwgc3VicGxhbnMuCiAJICovCi0JZWxzZSBpZiAoIW5vZGUtPmFzX3ZhbGlk X3N1YnBsYW5zX2lkZW50aWZpZWQpCisJZWxzZSBpZiAoIW5vZGUtPmFzLnZhbGlkX3N1YnBsYW5z X2lkZW50aWZpZWQpCiAJewotCQlub2RlLT5hc192YWxpZF9zdWJwbGFucyA9Ci0JCQlFeGVjRmlu ZE1hdGNoaW5nU3ViUGxhbnMobm9kZS0+YXNfcHJ1bmVfc3RhdGUsIGZhbHNlLCBOVUxMKTsKLQkJ bm9kZS0+YXNfdmFsaWRfc3VicGxhbnNfaWRlbnRpZmllZCA9IHRydWU7CisJCW5vZGUtPmFzLnZh bGlkX3N1YnBsYW5zID0KKwkJCUV4ZWNGaW5kTWF0Y2hpbmdTdWJQbGFucyhub2RlLT5hcy5wcnVu ZV9zdGF0ZSwgZmFsc2UsIE5VTEwpOworCQlub2RlLT5hcy52YWxpZF9zdWJwbGFuc19pZGVudGlm aWVkID0gdHJ1ZTsKIAogCQltYXJrX2ludmFsaWRfc3VicGxhbnNfYXNfZmluaXNoZWQobm9kZSk7 CiAJfQpAQCAtNzU5LDcgKzU1MSw3IEBAIGNob29zZV9uZXh0X3N1YnBsYW5fZm9yX3dvcmtlcihB cHBlbmRTdGF0ZSAqbm9kZSkKIAl7CiAJCWludAkJCW5leHRwbGFuOwogCi0JCW5leHRwbGFuID0g Ym1zX25leHRfbWVtYmVyKG5vZGUtPmFzX3ZhbGlkX3N1YnBsYW5zLAorCQluZXh0cGxhbiA9IGJt c19uZXh0X21lbWJlcihub2RlLT5hcy52YWxpZF9zdWJwbGFucywKIAkJCQkJCQkJICAgcHN0YXRl LT5wYV9uZXh0X3BsYW4pOwogCQlpZiAobmV4dHBsYW4gPj0gMCkKIAkJewpAQCAtNzcyLDcgKzU2 NCw3IEBAIGNob29zZV9uZXh0X3N1YnBsYW5fZm9yX3dvcmtlcihBcHBlbmRTdGF0ZSAqbm9kZSkK IAkJCSAqIFRyeSBsb29waW5nIGJhY2sgdG8gdGhlIGZpcnN0IHZhbGlkIHBhcnRpYWwgcGxhbiwg aWYgdGhlcmUgaXMKIAkJCSAqIG9uZS4gIElmIHRoZXJlIGlzbid0LCBhcnJhbmdlIHRvIGJhaWwg b3V0IGJlbG93LgogCQkJICovCi0JCQluZXh0cGxhbiA9IGJtc19uZXh0X21lbWJlcihub2RlLT5h c192YWxpZF9zdWJwbGFucywKKwkJCW5leHRwbGFuID0gYm1zX25leHRfbWVtYmVyKG5vZGUtPmFz LnZhbGlkX3N1YnBsYW5zLAogCQkJCQkJCQkJICAgbm9kZS0+YXNfZmlyc3RfcGFydGlhbF9wbGFu IC0gMSk7CiAJCQlwc3RhdGUtPnBhX25leHRfcGxhbiA9CiAJCQkJbmV4dHBsYW4gPCAwID8gbm9k ZS0+YXNfd2hpY2hwbGFuIDogbmV4dHBsYW47CkBAIC03OTcsNyArNTg5LDcgQEAgY2hvb3NlX25l eHRfc3VicGxhbl9mb3Jfd29ya2VyKEFwcGVuZFN0YXRlICpub2RlKQogCiAJLyogUGljayB0aGUg cGxhbiB3ZSBmb3VuZCwgYW5kIGFkdmFuY2UgcGFfbmV4dF9wbGFuIG9uZSBtb3JlIHRpbWUuICov CiAJbm9kZS0+YXNfd2hpY2hwbGFuID0gcHN0YXRlLT5wYV9uZXh0X3BsYW47Ci0JcHN0YXRlLT5w YV9uZXh0X3BsYW4gPSBibXNfbmV4dF9tZW1iZXIobm9kZS0+YXNfdmFsaWRfc3VicGxhbnMsCisJ cHN0YXRlLT5wYV9uZXh0X3BsYW4gPSBibXNfbmV4dF9tZW1iZXIobm9kZS0+YXMudmFsaWRfc3Vi cGxhbnMsCiAJCQkJCQkJCQkJICAgcHN0YXRlLT5wYV9uZXh0X3BsYW4pOwogCiAJLyoKQEAgLTgw Niw3ICs1OTgsNyBAQCBjaG9vc2VfbmV4dF9zdWJwbGFuX2Zvcl93b3JrZXIoQXBwZW5kU3RhdGUg Km5vZGUpCiAJICovCiAJaWYgKHBzdGF0ZS0+cGFfbmV4dF9wbGFuIDwgMCkKIAl7Ci0JCWludAkJ CW5leHRwbGFuID0gYm1zX25leHRfbWVtYmVyKG5vZGUtPmFzX3ZhbGlkX3N1YnBsYW5zLAorCQlp bnQJCQluZXh0cGxhbiA9IGJtc19uZXh0X21lbWJlcihub2RlLT5hcy52YWxpZF9zdWJwbGFucywK IAkJCQkJCQkJCQkJICAgbm9kZS0+YXNfZmlyc3RfcGFydGlhbF9wbGFuIC0gMSk7CiAKIAkJaWYg KG5leHRwbGFuID49IDApCkBAIC04NDgsMTYgKzY0MCwxNiBAQCBtYXJrX2ludmFsaWRfc3VicGxh bnNfYXNfZmluaXNoZWQoQXBwZW5kU3RhdGUgKm5vZGUpCiAJQXNzZXJ0KG5vZGUtPmFzX3BzdGF0 ZSk7CiAKIAkvKiBTaG91bGRuJ3QgaGF2ZSBiZWVuIGNhbGxlZCB3aGVuIHJ1bi10aW1lIHBydW5p bmcgaXMgbm90IGVuYWJsZWQgKi8KLQlBc3NlcnQobm9kZS0+YXNfcHJ1bmVfc3RhdGUpOworCUFz c2VydChub2RlLT5hcy5wcnVuZV9zdGF0ZSk7CiAKIAkvKiBOb3RoaW5nIHRvIGRvIGlmIGFsbCBw bGFucyBhcmUgdmFsaWQgKi8KLQlpZiAoYm1zX251bV9tZW1iZXJzKG5vZGUtPmFzX3ZhbGlkX3N1 YnBsYW5zKSA9PSBub2RlLT5hc19ucGxhbnMpCisJaWYgKGJtc19udW1fbWVtYmVycyhub2RlLT5h cy52YWxpZF9zdWJwbGFucykgPT0gbm9kZS0+YXMubnBsYW5zKQogCQlyZXR1cm47CiAKIAkvKiBN YXJrIGFsbCBub24tdmFsaWQgcGxhbnMgYXMgZmluaXNoZWQgKi8KLQlmb3IgKGkgPSAwOyBpIDwg bm9kZS0+YXNfbnBsYW5zOyBpKyspCisJZm9yIChpID0gMDsgaSA8IG5vZGUtPmFzLm5wbGFuczsg aSsrKQogCXsKLQkJaWYgKCFibXNfaXNfbWVtYmVyKGksIG5vZGUtPmFzX3ZhbGlkX3N1YnBsYW5z KSkKKwkJaWYgKCFibXNfaXNfbWVtYmVyKGksIG5vZGUtPmFzLnZhbGlkX3N1YnBsYW5zKSkKIAkJ CW5vZGUtPmFzX3BzdGF0ZS0+cGFfZmluaXNoZWRbaV0gPSB0cnVlOwogCX0KIH0KQEAgLTg3Niw0 NyArNjY4LDI1IEBAIG1hcmtfaW52YWxpZF9zdWJwbGFuc19hc19maW5pc2hlZChBcHBlbmRTdGF0 ZSAqbm9kZSkKIHN0YXRpYyB2b2lkCiBFeGVjQXBwZW5kQXN5bmNCZWdpbihBcHBlbmRTdGF0ZSAq bm9kZSkKIHsKLQlpbnQJCQlpOwotCi0JLyogQmFja3dhcmQgc2NhbiBpcyBub3Qgc3VwcG9ydGVk IGJ5IGFzeW5jLWF3YXJlIEFwcGVuZHMuICovCi0JQXNzZXJ0KFNjYW5EaXJlY3Rpb25Jc0Zvcndh cmQobm9kZS0+cHMuc3RhdGUtPmVzX2RpcmVjdGlvbikpOwotCi0JLyogV2Ugc2hvdWxkIG5ldmVy IGJlIGNhbGxlZCB3aGVuIHRoZXJlIGFyZSBubyBzdWJwbGFucyAqLwotCUFzc2VydChub2RlLT5h c19ucGxhbnMgPiAwKTsKLQotCS8qIFdlIHNob3VsZCBuZXZlciBiZSBjYWxsZWQgd2hlbiB0aGVy ZSBhcmUgbm8gYXN5bmMgc3VicGxhbnMuICovCi0JQXNzZXJ0KG5vZGUtPmFzX25hc3luY3BsYW5z ID4gMCk7Ci0KIAkvKiBJZiB3ZSd2ZSB5ZXQgdG8gZGV0ZXJtaW5lIHRoZSB2YWxpZCBzdWJwbGFu cyB0aGVuIGRvIHNvIG5vdy4gKi8KLQlpZiAoIW5vZGUtPmFzX3ZhbGlkX3N1YnBsYW5zX2lkZW50 aWZpZWQpCisJaWYgKCFub2RlLT5hcy52YWxpZF9zdWJwbGFuc19pZGVudGlmaWVkKQogCXsKLQkJ bm9kZS0+YXNfdmFsaWRfc3VicGxhbnMgPQotCQkJRXhlY0ZpbmRNYXRjaGluZ1N1YlBsYW5zKG5v ZGUtPmFzX3BydW5lX3N0YXRlLCBmYWxzZSwgTlVMTCk7Ci0JCW5vZGUtPmFzX3ZhbGlkX3N1YnBs YW5zX2lkZW50aWZpZWQgPSB0cnVlOworCQlub2RlLT5hcy52YWxpZF9zdWJwbGFucyA9CisJCQlF eGVjRmluZE1hdGNoaW5nU3ViUGxhbnMobm9kZS0+YXMucHJ1bmVfc3RhdGUsIGZhbHNlLCBOVUxM KTsKKwkJbm9kZS0+YXMudmFsaWRfc3VicGxhbnNfaWRlbnRpZmllZCA9IHRydWU7CiAKIAkJY2xh c3NpZnlfbWF0Y2hpbmdfc3VicGxhbnMobm9kZSk7CiAJfQogCiAJLyogSW5pdGlhbGl6ZSBzdGF0 ZSB2YXJpYWJsZXMuICovCi0Jbm9kZS0+YXNfc3luY2RvbmUgPSBibXNfaXNfZW1wdHkobm9kZS0+ YXNfdmFsaWRfc3VicGxhbnMpOwotCW5vZGUtPmFzX25hc3luY3JlbWFpbiA9IGJtc19udW1fbWVt YmVycyhub2RlLT5hc192YWxpZF9hc3luY3BsYW5zKTsKKwlub2RlLT5hc19zeW5jZG9uZSA9IGJt c19pc19lbXB0eShub2RlLT5hcy52YWxpZF9zdWJwbGFucyk7CisJbm9kZS0+YXNfbmFzeW5jcmVt YWluID0gYm1zX251bV9tZW1iZXJzKG5vZGUtPmFzLnZhbGlkX2FzeW5jcGxhbnMpOwogCiAJLyog Tm90aGluZyB0byBkbyBpZiB0aGVyZSBhcmUgbm8gdmFsaWQgYXN5bmMgc3VicGxhbnMuICovCiAJ aWYgKG5vZGUtPmFzX25hc3luY3JlbWFpbiA9PSAwKQogCQlyZXR1cm47CiAKLQkvKiBNYWtlIGEg cmVxdWVzdCBmb3IgZWFjaCBvZiB0aGUgdmFsaWQgYXN5bmMgc3VicGxhbnMuICovCi0JaSA9IC0x OwotCXdoaWxlICgoaSA9IGJtc19uZXh0X21lbWJlcihub2RlLT5hc192YWxpZF9hc3luY3BsYW5z LCBpKSkgPj0gMCkKLQl7Ci0JCUFzeW5jUmVxdWVzdCAqYXJlcSA9IG5vZGUtPmFzX2FzeW5jcmVx dWVzdHNbaV07Ci0KLQkJQXNzZXJ0KGFyZXEtPnJlcXVlc3RfaW5kZXggPT0gaSk7Ci0JCUFzc2Vy dCghYXJlcS0+Y2FsbGJhY2tfcGVuZGluZyk7Ci0KLQkJLyogRG8gdGhlIGFjdHVhbCB3b3JrLiAq LwotCQlFeGVjQXN5bmNSZXF1ZXN0KGFyZXEpOwotCX0KKwlFeGVjQXBwZW5kZXJBc3luY0JlZ2lu KCZub2RlLT5hcyk7CiB9CiAKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTk2MSw3ICs3MzEsNyBAQCBFeGVjQXBw ZW5kQXN5bmNHZXROZXh0KEFwcGVuZFN0YXRlICpub2RlLCBUdXBsZVRhYmxlU2xvdCAqKnJlc3Vs dCkKIAlpZiAobm9kZS0+YXNfc3luY2RvbmUpCiAJewogCQlBc3NlcnQobm9kZS0+YXNfbmFzeW5j cmVtYWluID09IDApOwotCQkqcmVzdWx0ID0gRXhlY0NsZWFyVHVwbGUobm9kZS0+cHMucHNfUmVz dWx0VHVwbGVTbG90KTsKKwkJKnJlc3VsdCA9IEV4ZWNDbGVhclR1cGxlKG5vZGUtPmFzLnBzLnBz X1Jlc3VsdFR1cGxlU2xvdCk7CiAJCXJldHVybiB0cnVlOwogCX0KIApAQCAtOTgxLDcgKzc1MSw3 IEBAIEV4ZWNBcHBlbmRBc3luY1JlcXVlc3QoQXBwZW5kU3RhdGUgKm5vZGUsIFR1cGxlVGFibGVT bG90ICoqcmVzdWx0KQogCWludAkJCWk7CiAKIAkvKiBOb3RoaW5nIHRvIGRvIGlmIHRoZXJlIGFy ZSBubyBhc3luYyBzdWJwbGFucyBuZWVkaW5nIGEgbmV3IHJlcXVlc3QuICovCi0JaWYgKGJtc19p c19lbXB0eShub2RlLT5hc19uZWVkcmVxdWVzdCkpCisJaWYgKGJtc19pc19lbXB0eShub2RlLT5h cy5uZWVkcmVxdWVzdCkpCiAJewogCQlBc3NlcnQobm9kZS0+YXNfbmFzeW5jcmVzdWx0cyA9PSAw KTsKIAkJcmV0dXJuIGZhbHNlOwpAQCAtOTk0LDE3ICs3NjQsMTcgQEAgRXhlY0FwcGVuZEFzeW5j UmVxdWVzdChBcHBlbmRTdGF0ZSAqbm9kZSwgVHVwbGVUYWJsZVNsb3QgKipyZXN1bHQpCiAJaWYg KG5vZGUtPmFzX25hc3luY3Jlc3VsdHMgPiAwKQogCXsKIAkJLS1ub2RlLT5hc19uYXN5bmNyZXN1 bHRzOwotCQkqcmVzdWx0ID0gbm9kZS0+YXNfYXN5bmNyZXN1bHRzW25vZGUtPmFzX25hc3luY3Jl c3VsdHNdOworCQkqcmVzdWx0ID0gbm9kZS0+YXMuYXN5bmNyZXN1bHRzW25vZGUtPmFzX25hc3lu Y3Jlc3VsdHNdOwogCQlyZXR1cm4gdHJ1ZTsKIAl9CiAKIAkvKiBNYWtlIGEgbmV3IHJlcXVlc3Qg Zm9yIGVhY2ggb2YgdGhlIGFzeW5jIHN1YnBsYW5zIHRoYXQgbmVlZCBpdC4gKi8KLQluZWVkcmVx dWVzdCA9IG5vZGUtPmFzX25lZWRyZXF1ZXN0OwotCW5vZGUtPmFzX25lZWRyZXF1ZXN0ID0gTlVM TDsKKwluZWVkcmVxdWVzdCA9IG5vZGUtPmFzLm5lZWRyZXF1ZXN0OworCW5vZGUtPmFzLm5lZWRy ZXF1ZXN0ID0gTlVMTDsKIAlpID0gLTE7CiAJd2hpbGUgKChpID0gYm1zX25leHRfbWVtYmVyKG5l ZWRyZXF1ZXN0LCBpKSkgPj0gMCkKIAl7Ci0JCUFzeW5jUmVxdWVzdCAqYXJlcSA9IG5vZGUtPmFz X2FzeW5jcmVxdWVzdHNbaV07CisJCUFzeW5jUmVxdWVzdCAqYXJlcSA9IG5vZGUtPmFzLmFzeW5j cmVxdWVzdHNbaV07CiAKIAkJLyogRG8gdGhlIGFjdHVhbCB3b3JrLiAqLwogCQlFeGVjQXN5bmNS ZXF1ZXN0KGFyZXEpOwpAQCAtMTAxNSw3ICs3ODUsNyBAQCBFeGVjQXBwZW5kQXN5bmNSZXF1ZXN0 KEFwcGVuZFN0YXRlICpub2RlLCBUdXBsZVRhYmxlU2xvdCAqKnJlc3VsdCkKIAlpZiAobm9kZS0+ YXNfbmFzeW5jcmVzdWx0cyA+IDApCiAJewogCQktLW5vZGUtPmFzX25hc3luY3Jlc3VsdHM7Ci0J CSpyZXN1bHQgPSBub2RlLT5hc19hc3luY3Jlc3VsdHNbbm9kZS0+YXNfbmFzeW5jcmVzdWx0c107 CisJCSpyZXN1bHQgPSBub2RlLT5hcy5hc3luY3Jlc3VsdHNbbm9kZS0+YXNfbmFzeW5jcmVzdWx0 c107CiAJCXJldHVybiB0cnVlOwogCX0KIApAQCAtMTAzMSwxMDUgKzgwMSwxMiBAQCBFeGVjQXBw ZW5kQXN5bmNSZXF1ZXN0KEFwcGVuZFN0YXRlICpub2RlLCBUdXBsZVRhYmxlU2xvdCAqKnJlc3Vs dCkKIHN0YXRpYyB2b2lkCiBFeGVjQXBwZW5kQXN5bmNFdmVudFdhaXQoQXBwZW5kU3RhdGUgKm5v ZGUpCiB7Ci0JaW50CQkJbmV2ZW50cyA9IG5vZGUtPmFzX25hc3luY3BsYW5zICsgMjsKIAlsb25n CQl0aW1lb3V0ID0gbm9kZS0+YXNfc3luY2RvbmUgPyAtMSA6IDA7Ci0JV2FpdEV2ZW50CW9jY3Vy cmVkX2V2ZW50W0VWRU5UX0JVRkZFUl9TSVpFXTsKLQlpbnQJCQlub2NjdXJyZWQ7Ci0JaW50CQkJ aTsKIAogCS8qIFdlIHNob3VsZCBuZXZlciBiZSBjYWxsZWQgd2hlbiB0aGVyZSBhcmUgbm8gdmFs aWQgYXN5bmMgc3VicGxhbnMuICovCiAJQXNzZXJ0KG5vZGUtPmFzX25hc3luY3JlbWFpbiA+IDAp OwogCi0JQXNzZXJ0KG5vZGUtPmFzX2V2ZW50c2V0ID09IE5VTEwpOwotCW5vZGUtPmFzX2V2ZW50 c2V0ID0gQ3JlYXRlV2FpdEV2ZW50U2V0KEN1cnJlbnRSZXNvdXJjZU93bmVyLCBuZXZlbnRzKTsK LQlBZGRXYWl0RXZlbnRUb1NldChub2RlLT5hc19ldmVudHNldCwgV0xfRVhJVF9PTl9QTV9ERUFU SCwgUEdJTlZBTElEX1NPQ0tFVCwKLQkJCQkJICBOVUxMLCBOVUxMKTsKLQotCS8qIEdpdmUgZWFj aCB3YWl0aW5nIHN1YnBsYW4gYSBjaGFuY2UgdG8gYWRkIGFuIGV2ZW50LiAqLwotCWkgPSAtMTsK LQl3aGlsZSAoKGkgPSBibXNfbmV4dF9tZW1iZXIobm9kZS0+YXNfYXN5bmNwbGFucywgaSkpID49 IDApCi0JewotCQlBc3luY1JlcXVlc3QgKmFyZXEgPSBub2RlLT5hc19hc3luY3JlcXVlc3RzW2ld OwotCi0JCWlmIChhcmVxLT5jYWxsYmFja19wZW5kaW5nKQotCQkJRXhlY0FzeW5jQ29uZmlndXJl V2FpdChhcmVxKTsKLQl9Ci0KLQkvKgotCSAqIE5vIG5lZWQgZm9yIGZ1cnRoZXIgcHJvY2Vzc2lu ZyBpZiBub25lIG9mIHRoZSBzdWJwbGFucyBjb25maWd1cmVkIGFueQotCSAqIGV2ZW50cy4KLQkg Ki8KLQlpZiAoR2V0TnVtUmVnaXN0ZXJlZFdhaXRFdmVudHMobm9kZS0+YXNfZXZlbnRzZXQpID09 IDEpCi0JewotCQlGcmVlV2FpdEV2ZW50U2V0KG5vZGUtPmFzX2V2ZW50c2V0KTsKLQkJbm9kZS0+ YXNfZXZlbnRzZXQgPSBOVUxMOwotCQlyZXR1cm47Ci0JfQotCi0JLyoKLQkgKiBBZGQgdGhlIHBy b2Nlc3MgbGF0Y2ggdG8gdGhlIHNldCwgc28gdGhhdCB3ZSB3YWtlIHVwIHRvIHByb2Nlc3MgdGhl Ci0JICogc3RhbmRhcmQgaW50ZXJydXB0cyB3aXRoIENIRUNLX0ZPUl9JTlRFUlJVUFRTKCkuCi0J ICoKLQkgKiBOT1RFOiBGb3IgaGlzdG9yaWNhbCByZWFzb25zLCBpdCdzIGltcG9ydGFudCB0aGF0 IHRoaXMgaXMgYWRkZWQgdG8gdGhlCi0JICogV2FpdEV2ZW50U2V0IGFmdGVyIHRoZSBFeGVjQXN5 bmNDb25maWd1cmVXYWl0KCkgY2FsbHMuICBOYW1lbHksCi0JICogcG9zdGdyZXNfZmR3IGNhbGxz ICJHZXROdW1SZWdpc3RlcmVkV2FpdEV2ZW50cyhzZXQpID09IDEiIHRvIGNoZWNrIGlmCi0JICog YW55IG90aGVyIGV2ZW50cyBhcmUgaW4gdGhlIHNldC4gIFRoYXQncyBhIHBvb3IgZGVzaWduLCBp dCdzCi0JICogcXVlc3Rpb25hYmxlIGZvciBwb3N0Z3Jlc19mZHcgdG8gYmUgZG9pbmcgdGhhdCBp biB0aGUgZmlyc3QgcGxhY2UsIGJ1dAotCSAqIHdlIGNhbm5vdCBjaGFuZ2UgaXQgbm93LiAgVGhl IHBhdHRlcm4gaGFzIHBvc3NpYmx5IGJlZW4gY29waWVkIHRvIG90aGVyCi0JICogZXh0ZW5zaW9u cyB0b28uCi0JICovCi0JQWRkV2FpdEV2ZW50VG9TZXQobm9kZS0+YXNfZXZlbnRzZXQsIFdMX0xB VENIX1NFVCwgUEdJTlZBTElEX1NPQ0tFVCwKLQkJCQkJICBNeUxhdGNoLCBOVUxMKTsKLQotCS8q IFJldHVybiBhdCBtb3N0IEVWRU5UX0JVRkZFUl9TSVpFIGV2ZW50cyBpbiBvbmUgY2FsbC4gKi8K LQlpZiAobmV2ZW50cyA+IEVWRU5UX0JVRkZFUl9TSVpFKQotCQluZXZlbnRzID0gRVZFTlRfQlVG RkVSX1NJWkU7Ci0KLQkvKgotCSAqIElmIHRoZSB0aW1lb3V0IGlzIC0xLCB3YWl0IHVudGlsIGF0 IGxlYXN0IG9uZSBldmVudCBvY2N1cnMuICBJZiB0aGUKLQkgKiB0aW1lb3V0IGlzIDAsIHBvbGwg Zm9yIGV2ZW50cywgYnV0IGRvIG5vdCB3YWl0IGF0IGFsbC4KLQkgKi8KLQlub2NjdXJyZWQgPSBX YWl0RXZlbnRTZXRXYWl0KG5vZGUtPmFzX2V2ZW50c2V0LCB0aW1lb3V0LCBvY2N1cnJlZF9ldmVu dCwKLQkJCQkJCQkJIG5ldmVudHMsIFdBSVRfRVZFTlRfQVBQRU5EX1JFQURZKTsKLQlGcmVlV2Fp dEV2ZW50U2V0KG5vZGUtPmFzX2V2ZW50c2V0KTsKLQlub2RlLT5hc19ldmVudHNldCA9IE5VTEw7 Ci0JaWYgKG5vY2N1cnJlZCA9PSAwKQotCQlyZXR1cm47Ci0KLQkvKiBEZWxpdmVyIG5vdGlmaWNh dGlvbnMuICovCi0JZm9yIChpID0gMDsgaSA8IG5vY2N1cnJlZDsgaSsrKQotCXsKLQkJV2FpdEV2 ZW50ICAqdyA9ICZvY2N1cnJlZF9ldmVudFtpXTsKLQotCQkvKgotCQkgKiBFYWNoIHdhaXRpbmcg c3VicGxhbiBzaG91bGQgaGF2ZSByZWdpc3RlcmVkIGl0cyB3YWl0IGV2ZW50IHdpdGgKLQkJICog dXNlcl9kYXRhIHBvaW50aW5nIGJhY2sgdG8gaXRzIEFzeW5jUmVxdWVzdC4KLQkJICovCi0JCWlm ICgody0+ZXZlbnRzICYgV0xfU09DS0VUX1JFQURBQkxFKSAhPSAwKQotCQl7Ci0JCQlBc3luY1Jl cXVlc3QgKmFyZXEgPSAoQXN5bmNSZXF1ZXN0ICopIHctPnVzZXJfZGF0YTsKLQotCQkJaWYgKGFy ZXEtPmNhbGxiYWNrX3BlbmRpbmcpCi0JCQl7Ci0JCQkJLyoKLQkJCQkgKiBNYXJrIGl0IGFzIG5v IGxvbmdlciBuZWVkaW5nIGEgY2FsbGJhY2suICBXZSBtdXN0IGRvIHRoaXMKLQkJCQkgKiBiZWZv cmUgZGlzcGF0Y2hpbmcgdGhlIGNhbGxiYWNrIGluIGNhc2UgdGhlIGNhbGxiYWNrIHJlc2V0cwot CQkJCSAqIHRoZSBmbGFnLgotCQkJCSAqLwotCQkJCWFyZXEtPmNhbGxiYWNrX3BlbmRpbmcgPSBm YWxzZTsKLQotCQkJCS8qIERvIHRoZSBhY3R1YWwgd29yay4gKi8KLQkJCQlFeGVjQXN5bmNOb3Rp ZnkoYXJlcSk7Ci0JCQl9Ci0JCX0KLQotCQkvKiBIYW5kbGUgc3RhbmRhcmQgaW50ZXJydXB0cyAq LwotCQlpZiAoKHctPmV2ZW50cyAmIFdMX0xBVENIX1NFVCkgIT0gMCkKLQkJewotCQkJUmVzZXRM YXRjaChNeUxhdGNoKTsKLQkJCUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7Ci0JCX0KLQl9CisJRXhl Y0FwcGVuZGVyQXN5bmNFdmVudFdhaXQoJm5vZGUtPmFzLCB0aW1lb3V0LCBXQUlUX0VWRU5UX0FQ UEVORF9SRUFEWSk7CiB9CiAKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTExNjUsMTQgKzg0MiwxNCBAQCBFeGVj QXN5bmNBcHBlbmRSZXNwb25zZShBc3luY1JlcXVlc3QgKmFyZXEpCiAJfQogCiAJLyogU2F2ZSBy ZXN1bHQgc28gd2UgY2FuIHJldHVybiBpdC4gKi8KLQlBc3NlcnQobm9kZS0+YXNfbmFzeW5jcmVz dWx0cyA8IG5vZGUtPmFzX25hc3luY3BsYW5zKTsKLQlub2RlLT5hc19hc3luY3Jlc3VsdHNbbm9k ZS0+YXNfbmFzeW5jcmVzdWx0cysrXSA9IHNsb3Q7CisJQXNzZXJ0KG5vZGUtPmFzX25hc3luY3Jl c3VsdHMgPCBub2RlLT5hcy5uYXN5bmNwbGFucyk7CisJbm9kZS0+YXMuYXN5bmNyZXN1bHRzW25v ZGUtPmFzX25hc3luY3Jlc3VsdHMrK10gPSBzbG90OwogCiAJLyoKIAkgKiBNYXJrIHRoZSBzdWJw bGFuIHRoYXQgcmV0dXJuZWQgYSByZXN1bHQgYXMgcmVhZHkgZm9yIGEgbmV3IHJlcXVlc3QuICBX ZQogCSAqIGRvbid0IGxhdW5jaCBhbm90aGVyIG9uZSBoZXJlIGltbWVkaWF0ZWx5IGJlY2F1c2Ug aXQgbWlnaHQgY29tcGxldGUuCiAJICovCi0Jbm9kZS0+YXNfbmVlZHJlcXVlc3QgPSBibXNfYWRk X21lbWJlcihub2RlLT5hc19uZWVkcmVxdWVzdCwKKwlub2RlLT5hcy5uZWVkcmVxdWVzdCA9IGJt c19hZGRfbWVtYmVyKG5vZGUtPmFzLm5lZWRyZXF1ZXN0LAogCQkJCQkJCQkJCSAgYXJlcS0+cmVx dWVzdF9pbmRleCk7CiB9CiAKQEAgLTExODcsMTAgKzg2NCwxMCBAQCBFeGVjQXN5bmNBcHBlbmRS ZXNwb25zZShBc3luY1JlcXVlc3QgKmFyZXEpCiBzdGF0aWMgdm9pZAogY2xhc3NpZnlfbWF0Y2hp bmdfc3VicGxhbnMoQXBwZW5kU3RhdGUgKm5vZGUpCiB7Ci0JQXNzZXJ0KG5vZGUtPmFzX3ZhbGlk X3N1YnBsYW5zX2lkZW50aWZpZWQpOworCUFzc2VydChub2RlLT5hcy52YWxpZF9zdWJwbGFuc19p ZGVudGlmaWVkKTsKIAogCS8qIE5vdGhpbmcgdG8gZG8gaWYgdGhlcmUgYXJlIG5vIHZhbGlkIHN1 YnBsYW5zLiAqLwotCWlmIChibXNfaXNfZW1wdHkobm9kZS0+YXNfdmFsaWRfc3VicGxhbnMpKQor CWlmIChibXNfaXNfZW1wdHkobm9kZS0+YXMudmFsaWRfc3VicGxhbnMpKQogCXsKIAkJbm9kZS0+ YXNfc3luY2RvbmUgPSB0cnVlOwogCQlub2RlLT5hc19uYXN5bmNyZW1haW4gPSAwOwpAQCAtMTE5 OSw4ICs4NzYsOCBAQCBjbGFzc2lmeV9tYXRjaGluZ19zdWJwbGFucyhBcHBlbmRTdGF0ZSAqbm9k ZSkKIAogCS8qIE5vIHZhbGlkIGFzeW5jIHN1YnBsYW5zIGlkZW50aWZpZWQuICovCiAJaWYgKCFj bGFzc2lmeV9tYXRjaGluZ19zdWJwbGFuc19jb21tb24oCi0JCQkJCQkJCQkJICAgJm5vZGUtPmFz X3ZhbGlkX3N1YnBsYW5zLAotCQkJCQkJCQkJCSAgIG5vZGUtPmFzX2FzeW5jcGxhbnMsCi0JCQkJ CQkJCQkJICAgJm5vZGUtPmFzX3ZhbGlkX2FzeW5jcGxhbnMpKQorCQkJCQkJCQkJCSAgICZub2Rl LT5hcy52YWxpZF9zdWJwbGFucywKKwkJCQkJCQkJCQkgICBub2RlLT5hcy5hc3luY3BsYW5zLAor CQkJCQkJCQkJCSAgICZub2RlLT5hcy52YWxpZF9hc3luY3BsYW5zKSkKIAkJbm9kZS0+YXNfbmFz eW5jcmVtYWluID0gMDsKIH0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVN ZXJnZUFwcGVuZC5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1lcmdlQXBwZW5kLmMKaW5k ZXggZjFjMjY3ZWI5ZWIuLmUxYTIwN2FlYjg1IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVj dXRvci9ub2RlTWVyZ2VBcHBlbmQuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTWVy Z2VBcHBlbmQuYwpAQCAtMzgsNiArMzgsNyBAQAogCiAjaW5jbHVkZSAicG9zdGdyZXMuaCIKIAor I2luY2x1ZGUgImV4ZWN1dG9yL2V4ZWNBcHBlbmQuaCIKICNpbmNsdWRlICJleGVjdXRvci9leGVj dXRvci5oIgogI2luY2x1ZGUgImV4ZWN1dG9yL2V4ZWNBc3luYy5oIgogI2luY2x1ZGUgImV4ZWN1 dG9yL2V4ZWNQYXJ0aXRpb24uaCIKQEAgLTc2LDE0ICs3Nyw3IEBAIE1lcmdlQXBwZW5kU3RhdGUg KgogRXhlY0luaXRNZXJnZUFwcGVuZChNZXJnZUFwcGVuZCAqbm9kZSwgRVN0YXRlICplc3RhdGUs IGludCBlZmxhZ3MpCiB7CiAJTWVyZ2VBcHBlbmRTdGF0ZSAqbWVyZ2VzdGF0ZSA9IG1ha2VOb2Rl KE1lcmdlQXBwZW5kU3RhdGUpOwotCVBsYW5TdGF0ZSAqKm1lcmdlcGxhbnN0YXRlczsKLQljb25z dCBUdXBsZVRhYmxlU2xvdE9wcyAqbWVyZ2VvcHM7Ci0JQml0bWFwc2V0ICAqdmFsaWRzdWJwbGFu czsKLQlpbnQJCQlucGxhbnM7Ci0JaW50CQkJaSwKLQkJCQlqOwotCUJpdG1hcHNldCAgKmFzeW5j cGxhbnM7Ci0JaW50CQkJbmFzeW5jcGxhbnM7CisJaW50CQkJaTsKIAogCS8qIGNoZWNrIGZvciB1 bnN1cHBvcnRlZCBmbGFncyAqLwogCUFzc2VydCghKGVmbGFncyAmIChFWEVDX0ZMQUdfQkFDS1dB UkQgfCBFWEVDX0ZMQUdfTUFSSykpKTsKQEAgLTkxLDE1NCArODUsMjcgQEAgRXhlY0luaXRNZXJn ZUFwcGVuZChNZXJnZUFwcGVuZCAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJ LyoKIAkgKiBjcmVhdGUgbmV3IE1lcmdlQXBwZW5kU3RhdGUgZm9yIG91ciBub2RlCiAJICovCi0J bWVyZ2VzdGF0ZS0+cHMucGxhbiA9IChQbGFuICopIG5vZGU7Ci0JbWVyZ2VzdGF0ZS0+cHMuc3Rh dGUgPSBlc3RhdGU7Ci0JbWVyZ2VzdGF0ZS0+cHMuRXhlY1Byb2NOb2RlID0gRXhlY01lcmdlQXBw ZW5kOwotCi0JLyogSWYgcnVuLXRpbWUgcGFydGl0aW9uIHBydW5pbmcgaXMgZW5hYmxlZCwgdGhl biBzZXQgdGhhdCB1cCBub3cgKi8KLQlpZiAobm9kZS0+cGFydF9wcnVuZV9pbmRleCA+PSAwKQot CXsKLQkJUGFydGl0aW9uUHJ1bmVTdGF0ZSAqcHJ1bmVzdGF0ZTsKLQotCQkvKgotCQkgKiBTZXQg dXAgcHJ1bmluZyBkYXRhIHN0cnVjdHVyZS4gIFRoaXMgYWxzbyBpbml0aWFsaXplcyB0aGUgc2V0 IG9mCi0JCSAqIHN1YnBsYW5zIHRvIGluaXRpYWxpemUgKHZhbGlkc3VicGxhbnMpIGJ5IHRha2lu ZyBpbnRvIGFjY291bnQgdGhlCi0JCSAqIHJlc3VsdCBvZiBwZXJmb3JtaW5nIGluaXRpYWwgcHJ1 bmluZyBpZiBhbnkuCi0JCSAqLwotCQlwcnVuZXN0YXRlID0gRXhlY0luaXRQYXJ0aXRpb25FeGVj UHJ1bmluZygmbWVyZ2VzdGF0ZS0+cHMsCi0JCQkJCQkJCQkJCQkgIGxpc3RfbGVuZ3RoKG5vZGUt Pm1lcmdlcGxhbnMpLAotCQkJCQkJCQkJCQkJICBub2RlLT5wYXJ0X3BydW5lX2luZGV4LAotCQkJ CQkJCQkJCQkJICBub2RlLT5hcHByZWxpZHMsCi0JCQkJCQkJCQkJCQkgICZ2YWxpZHN1YnBsYW5z KTsKLQkJbWVyZ2VzdGF0ZS0+bXNfcHJ1bmVfc3RhdGUgPSBwcnVuZXN0YXRlOwotCQlucGxhbnMg PSBibXNfbnVtX21lbWJlcnModmFsaWRzdWJwbGFucyk7Ci0KLQkJLyoKLQkJICogV2hlbiBubyBy dW4tdGltZSBwcnVuaW5nIGlzIHJlcXVpcmVkIGFuZCB0aGVyZSdzIGF0IGxlYXN0IG9uZQotCQkg KiBzdWJwbGFuLCB3ZSBjYW4gZmlsbCBtc192YWxpZF9zdWJwbGFucyBpbW1lZGlhdGVseSwgcHJl dmVudGluZwotCQkgKiBsYXRlciBjYWxscyB0byBFeGVjRmluZE1hdGNoaW5nU3ViUGxhbnMuCi0J CSAqLwotCQlpZiAoIXBydW5lc3RhdGUtPmRvX2V4ZWNfcHJ1bmUgJiYgbnBsYW5zID4gMCkKLQkJ ewotCQkJbWVyZ2VzdGF0ZS0+bXNfdmFsaWRfc3VicGxhbnMgPSBibXNfYWRkX3JhbmdlKE5VTEws IDAsIG5wbGFucyAtIDEpOwotCQkJbWVyZ2VzdGF0ZS0+bXNfdmFsaWRfc3VicGxhbnNfaWRlbnRp ZmllZCA9IHRydWU7Ci0JCX0KLQl9Ci0JZWxzZQotCXsKLQkJbnBsYW5zID0gbGlzdF9sZW5ndGgo bm9kZS0+bWVyZ2VwbGFucyk7Ci0KLQkJLyoKLQkJICogV2hlbiBydW4tdGltZSBwYXJ0aXRpb24g cHJ1bmluZyBpcyBub3QgZW5hYmxlZCB3ZSBjYW4ganVzdCBtYXJrIGFsbAotCQkgKiBzdWJwbGFu cyBhcyB2YWxpZDsgdGhleSBtdXN0IGFsc28gYWxsIGJlIGluaXRpYWxpemVkLgotCQkgKi8KLQkJ QXNzZXJ0KG5wbGFucyA+IDApOwotCQltZXJnZXN0YXRlLT5tc192YWxpZF9zdWJwbGFucyA9IHZh bGlkc3VicGxhbnMgPQotCQkJYm1zX2FkZF9yYW5nZShOVUxMLCAwLCBucGxhbnMgLSAxKTsKLQkJ bWVyZ2VzdGF0ZS0+bXNfdmFsaWRfc3VicGxhbnNfaWRlbnRpZmllZCA9IHRydWU7Ci0JCW1lcmdl c3RhdGUtPm1zX3BydW5lX3N0YXRlID0gTlVMTDsKLQl9Ci0KLQltZXJnZXBsYW5zdGF0ZXMgPSBw YWxsb2NfYXJyYXkoUGxhblN0YXRlICosIG5wbGFucyk7Ci0JbWVyZ2VzdGF0ZS0+bWVyZ2VwbGFu cyA9IG1lcmdlcGxhbnN0YXRlczsKLQltZXJnZXN0YXRlLT5tc19ucGxhbnMgPSBucGxhbnM7Ci0K LQltZXJnZXN0YXRlLT5tc19zbG90cyA9IHBhbGxvYzBfYXJyYXkoVHVwbGVUYWJsZVNsb3QgKiwg bnBsYW5zKTsKLQltZXJnZXN0YXRlLT5tc19oZWFwID0gYmluYXJ5aGVhcF9hbGxvY2F0ZShucGxh bnMsIGhlYXBfY29tcGFyZV9zbG90cywKKwltZXJnZXN0YXRlLT5tcy5wcy5wbGFuID0gKFBsYW4g Kikgbm9kZTsKKwltZXJnZXN0YXRlLT5tcy5wcy5zdGF0ZSA9IGVzdGF0ZTsKKwltZXJnZXN0YXRl LT5tcy5wcy5FeGVjUHJvY05vZGUgPSBFeGVjTWVyZ2VBcHBlbmQ7CisKKwkvKiBJbml0aWFsaXpl IGNvbW1vbiBmaWVsZHMgKi8KKwlFeGVjSW5pdEFwcGVuZGVyKCZtZXJnZXN0YXRlLT5tcywKKwkJ CQkJICZub2RlLT5hcCwKKwkJCQkJIGVzdGF0ZSwKKwkJCQkJIGVmbGFncywKKwkJCQkJIC0xLAor CQkJCQkgTlVMTCk7CisKKwlpZiAobWVyZ2VzdGF0ZS0+bXMubmFzeW5jcGxhbnMgPiAwICYmIG1l cmdlc3RhdGUtPm1zLnZhbGlkX3N1YnBsYW5zX2lkZW50aWZpZWQpCisJCWNsYXNzaWZ5X21hdGNo aW5nX3N1YnBsYW5zKG1lcmdlc3RhdGUpOworCisJbWVyZ2VzdGF0ZS0+bXNfc2xvdHMgPSBwYWxs b2MwX2FycmF5KFR1cGxlVGFibGVTbG90ICosIG1lcmdlc3RhdGUtPm1zLm5wbGFucyk7CisJbWVy Z2VzdGF0ZS0+bXNfaGVhcCA9IGJpbmFyeWhlYXBfYWxsb2NhdGUobWVyZ2VzdGF0ZS0+bXMubnBs YW5zLCBoZWFwX2NvbXBhcmVfc2xvdHMsCiAJCQkJCQkJCQkJCSAgbWVyZ2VzdGF0ZSk7CiAKLQkv KgotCSAqIGNhbGwgRXhlY0luaXROb2RlIG9uIGVhY2ggb2YgdGhlIHZhbGlkIHBsYW5zIHRvIGJl IGV4ZWN1dGVkIGFuZCBzYXZlCi0JICogdGhlIHJlc3VsdHMgaW50byB0aGUgbWVyZ2VwbGFuc3Rh dGVzIGFycmF5LgotCSAqLwotCWogPSAwOwotCWFzeW5jcGxhbnMgPSBOVUxMOwotCW5hc3luY3Bs YW5zID0gMDsKLQotCWkgPSAtMTsKLQl3aGlsZSAoKGkgPSBibXNfbmV4dF9tZW1iZXIodmFsaWRz dWJwbGFucywgaSkpID49IDApCi0JewotCQlQbGFuCSAgICppbml0Tm9kZSA9IChQbGFuICopIGxp c3RfbnRoKG5vZGUtPm1lcmdlcGxhbnMsIGkpOwotCi0JCS8qCi0JCSAqIFJlY29yZCBhc3luYyBz dWJwbGFucy4gIFdoZW4gZXhlY3V0aW5nIEV2YWxQbGFuUXVhbCwgd2UgdHJlYXQgdGhlbQotCQkg KiBhcyBzeW5jIG9uZXM7IGRvbid0IGRvIHRoaXMgd2hlbiBpbml0aWFsaXppbmcgYW4gRXZhbFBs YW5RdWFsIHBsYW4KLQkJICogdHJlZS4KLQkJICovCi0JCWlmIChpbml0Tm9kZS0+YXN5bmNfY2Fw YWJsZSAmJiBlc3RhdGUtPmVzX2VwcV9hY3RpdmUgPT0gTlVMTCkKLQkJewotCQkJYXN5bmNwbGFu cyA9IGJtc19hZGRfbWVtYmVyKGFzeW5jcGxhbnMsIGopOwotCQkJbmFzeW5jcGxhbnMrKzsKLQkJ fQotCi0JCW1lcmdlcGxhbnN0YXRlc1tqKytdID0gRXhlY0luaXROb2RlKGluaXROb2RlLCBlc3Rh dGUsIGVmbGFncyk7Ci0JfQotCi0JLyoKLQkgKiBJbml0aWFsaXplIE1lcmdlQXBwZW5kJ3MgcmVz dWx0IHR1cGxlIHR5cGUgYW5kIHNsb3QuICBJZiB0aGUgY2hpbGQKLQkgKiBwbGFucyBhbGwgcHJv ZHVjZSB0aGUgc2FtZSBmaXhlZCBzbG90IHR5cGUsIHdlIGNhbiB1c2UgdGhhdCBzbG90IHR5cGU7 Ci0JICogb3RoZXJ3aXNlIG1ha2UgYSB2aXJ0dWFsIHNsb3QuICAoTm90ZSB0aGF0IHRoZSByZXN1 bHQgc2xvdCBpdHNlbGYgaXMKLQkgKiB1c2VkIG9ubHkgdG8gcmV0dXJuIGEgbnVsbCB0dXBsZSBh dCBlbmQgb2YgZXhlY3V0aW9uOyByZWFsIHR1cGxlcyBhcmUKLQkgKiByZXR1cm5lZCB0byB0aGUg Y2FsbGVyIGluIHRoZSBjaGlsZHJlbidzIG93biByZXN1bHQgc2xvdHMuICBXaGF0IHdlIGFyZQot CSAqIGRvaW5nIGhlcmUgaXMgYWxsb3dpbmcgdGhlIHBhcmVudCBwbGFuIG5vZGUgdG8gb3B0aW1p emUgaWYgdGhlCi0JICogTWVyZ2VBcHBlbmQgd2lsbCByZXR1cm4gb25seSBvbmUga2luZCBvZiBz bG90LikKLQkgKi8KLQltZXJnZW9wcyA9IEV4ZWNHZXRDb21tb25TbG90T3BzKG1lcmdlcGxhbnN0 YXRlcywgaik7Ci0JaWYgKG1lcmdlb3BzICE9IE5VTEwpCi0JewotCQlFeGVjSW5pdFJlc3VsdFR1 cGxlU2xvdFRMKCZtZXJnZXN0YXRlLT5wcywgbWVyZ2VvcHMpOwotCX0KLQllbHNlCi0JewotCQlF eGVjSW5pdFJlc3VsdFR1cGxlU2xvdFRMKCZtZXJnZXN0YXRlLT5wcywgJlRUU09wc1ZpcnR1YWwp OwotCQkvKiBzaG93IHRoYXQgdGhlIG91dHB1dCBzbG90IHR5cGUgaXMgbm90IGZpeGVkICovCi0J CW1lcmdlc3RhdGUtPnBzLnJlc3VsdG9wc3NldCA9IHRydWU7Ci0JCW1lcmdlc3RhdGUtPnBzLnJl c3VsdG9wc2ZpeGVkID0gZmFsc2U7Ci0JfQotCi0JLyoKLQkgKiBNaXNjZWxsYW5lb3VzIGluaXRp YWxpemF0aW9uCi0JICovCi0JbWVyZ2VzdGF0ZS0+cHMucHNfUHJvakluZm8gPSBOVUxMOwotCi0J LyogSW5pdGlhbGl6ZSBhc3luYyBzdGF0ZSAqLwotCW1lcmdlc3RhdGUtPm1zX2FzeW5jcGxhbnMg PSBhc3luY3BsYW5zOwotCW1lcmdlc3RhdGUtPm1zX25hc3luY3BsYW5zID0gbmFzeW5jcGxhbnM7 Ci0JbWVyZ2VzdGF0ZS0+bXNfYXN5bmNyZXF1ZXN0cyA9IE5VTEw7Ci0JbWVyZ2VzdGF0ZS0+bXNf YXN5bmNyZXN1bHRzID0gTlVMTDsKIAltZXJnZXN0YXRlLT5tc19oYXNfYXN5bmNyZXN1bHRzID0g TlVMTDsKIAltZXJnZXN0YXRlLT5tc19hc3luY3JlbWFpbiA9IE5VTEw7Ci0JbWVyZ2VzdGF0ZS0+ bXNfbmVlZHJlcXVlc3QgPSBOVUxMOwotCW1lcmdlc3RhdGUtPm1zX2V2ZW50c2V0ID0gTlVMTDsK LQltZXJnZXN0YXRlLT5tc192YWxpZF9hc3luY3BsYW5zID0gTlVMTDsKLQotCWlmIChuYXN5bmNw bGFucyA+IDApCi0JewotCQltZXJnZXN0YXRlLT5tc19hc3luY3JlcXVlc3RzID0gKEFzeW5jUmVx dWVzdCAqKikKLQkJCXBhbGxvYzAobnBsYW5zICogc2l6ZW9mKEFzeW5jUmVxdWVzdCAqKSk7Ci0K LQkJaSA9IC0xOwotCQl3aGlsZSAoKGkgPSBibXNfbmV4dF9tZW1iZXIoYXN5bmNwbGFucywgaSkp ID49IDApCi0JCXsKLQkJCUFzeW5jUmVxdWVzdCAqYXJlcTsKLQotCQkJYXJlcSA9IHBhbGxvYyhz aXplb2YoQXN5bmNSZXF1ZXN0KSk7Ci0JCQlhcmVxLT5yZXF1ZXN0b3IgPSAoUGxhblN0YXRlICop IG1lcmdlc3RhdGU7Ci0JCQlhcmVxLT5yZXF1ZXN0ZWUgPSBtZXJnZXBsYW5zdGF0ZXNbaV07Ci0J CQlhcmVxLT5yZXF1ZXN0X2luZGV4ID0gaTsKLQkJCWFyZXEtPmNhbGxiYWNrX3BlbmRpbmcgPSBm YWxzZTsKLQkJCWFyZXEtPnJlcXVlc3RfY29tcGxldGUgPSBmYWxzZTsKLQkJCWFyZXEtPnJlc3Vs dCA9IE5VTEw7Ci0KLQkJCW1lcmdlc3RhdGUtPm1zX2FzeW5jcmVxdWVzdHNbaV0gPSBhcmVxOwot CQl9Ci0KLQkJbWVyZ2VzdGF0ZS0+bXNfYXN5bmNyZXN1bHRzID0gKFR1cGxlVGFibGVTbG90ICoq KQotCQkJcGFsbG9jMChucGxhbnMgKiBzaXplb2YoVHVwbGVUYWJsZVNsb3QgKikpOwotCi0JCWlm IChtZXJnZXN0YXRlLT5tc192YWxpZF9zdWJwbGFuc19pZGVudGlmaWVkKQotCQkJY2xhc3NpZnlf bWF0Y2hpbmdfc3VicGxhbnMobWVyZ2VzdGF0ZSk7Ci0JfQogCiAJLyoKIAkgKiBpbml0aWFsaXpl IHNvcnQta2V5IGluZm9ybWF0aW9uCkBAIC0yOTMsMjAgKzE2MCwyMCBAQCBFeGVjTWVyZ2VBcHBl bmQoUGxhblN0YXRlICpwc3RhdGUpCiAJaWYgKCFub2RlLT5tc19pbml0aWFsaXplZCkKIAl7CiAJ CS8qIE5vdGhpbmcgdG8gZG8gaWYgYWxsIHN1YnBsYW5zIHdlcmUgcHJ1bmVkICovCi0JCWlmIChu b2RlLT5tc19ucGxhbnMgPT0gMCkKLQkJCXJldHVybiBFeGVjQ2xlYXJUdXBsZShub2RlLT5wcy5w c19SZXN1bHRUdXBsZVNsb3QpOworCQlpZiAobm9kZS0+bXMubnBsYW5zID09IDApCisJCQlyZXR1 cm4gRXhlY0NsZWFyVHVwbGUobm9kZS0+bXMucHMucHNfUmVzdWx0VHVwbGVTbG90KTsKIAogCQkv KiBJZiB3ZSd2ZSB5ZXQgdG8gZGV0ZXJtaW5lIHRoZSB2YWxpZCBzdWJwbGFucyB0aGVuIGRvIHNv IG5vdy4gKi8KLQkJaWYgKCFub2RlLT5tc192YWxpZF9zdWJwbGFuc19pZGVudGlmaWVkKQorCQlp ZiAoIW5vZGUtPm1zLnZhbGlkX3N1YnBsYW5zX2lkZW50aWZpZWQpCiAJCXsKLQkJCW5vZGUtPm1z X3ZhbGlkX3N1YnBsYW5zID0KLQkJCQlFeGVjRmluZE1hdGNoaW5nU3ViUGxhbnMobm9kZS0+bXNf cHJ1bmVfc3RhdGUsIGZhbHNlLCBOVUxMKTsKLQkJCW5vZGUtPm1zX3ZhbGlkX3N1YnBsYW5zX2lk ZW50aWZpZWQgPSB0cnVlOworCQkJbm9kZS0+bXMudmFsaWRfc3VicGxhbnMgPQorCQkJCUV4ZWNG aW5kTWF0Y2hpbmdTdWJQbGFucyhub2RlLT5tcy5wcnVuZV9zdGF0ZSwgZmFsc2UsIE5VTEwpOwor CQkJbm9kZS0+bXMudmFsaWRfc3VicGxhbnNfaWRlbnRpZmllZCA9IHRydWU7CiAJCQljbGFzc2lm eV9tYXRjaGluZ19zdWJwbGFucyhub2RlKTsKIAkJfQogCiAJCS8qIElmIHRoZXJlIGFyZSBhbnkg YXN5bmMgc3VicGxhbnMsIGJlZ2luIGV4ZWN1dGluZyB0aGVtLiAqLwotCQlpZiAobm9kZS0+bXNf bmFzeW5jcGxhbnMgPiAwKQorCQlpZiAobm9kZS0+bXMubmFzeW5jcGxhbnMgPiAwKQogCQkJRXhl Y01lcmdlQXBwZW5kQXN5bmNCZWdpbihub2RlKTsKIAogCQkvKgpAQCAtMzE0LDE2ICsxODEsMTYg QEAgRXhlY01lcmdlQXBwZW5kKFBsYW5TdGF0ZSAqcHN0YXRlKQogCQkgKiBhbmQgc2V0IHVwIHRo ZSBoZWFwLgogCQkgKi8KIAkJaSA9IC0xOwotCQl3aGlsZSAoKGkgPSBibXNfbmV4dF9tZW1iZXIo bm9kZS0+bXNfdmFsaWRfc3VicGxhbnMsIGkpKSA+PSAwKQorCQl3aGlsZSAoKGkgPSBibXNfbmV4 dF9tZW1iZXIobm9kZS0+bXMudmFsaWRfc3VicGxhbnMsIGkpKSA+PSAwKQogCQl7Ci0JCQlub2Rl LT5tc19zbG90c1tpXSA9IEV4ZWNQcm9jTm9kZShub2RlLT5tZXJnZXBsYW5zW2ldKTsKKwkJCW5v ZGUtPm1zX3Nsb3RzW2ldID0gRXhlY1Byb2NOb2RlKG5vZGUtPm1zLnBsYW5zW2ldKTsKIAkJCWlm ICghVHVwSXNOdWxsKG5vZGUtPm1zX3Nsb3RzW2ldKSkKIAkJCQliaW5hcnloZWFwX2FkZF91bm9y ZGVyZWQobm9kZS0+bXNfaGVhcCwgSW50MzJHZXREYXR1bShpKSk7CiAJCX0KIAogCQkvKiBMb29r IGF0IHZhbGlkIGFzeW5jIHN1YnBsYW5zICovCiAJCWkgPSAtMTsKLQkJd2hpbGUgKChpID0gYm1z X25leHRfbWVtYmVyKG5vZGUtPm1zX3ZhbGlkX2FzeW5jcGxhbnMsIGkpKSA+PSAwKQorCQl3aGls ZSAoKGkgPSBibXNfbmV4dF9tZW1iZXIobm9kZS0+bXMudmFsaWRfYXN5bmNwbGFucywgaSkpID49 IDApCiAJCXsKIAkJCUV4ZWNNZXJnZUFwcGVuZEFzeW5jR2V0TmV4dChub2RlLCBpKTsKIAkJCWlm ICghVHVwSXNOdWxsKG5vZGUtPm1zX3Nsb3RzW2ldKSkKQEAgLTM0NCwxMiArMjExLDEyIEBAIEV4 ZWNNZXJnZUFwcGVuZChQbGFuU3RhdGUgKnBzdGF0ZSkKIAkJICogdG8gbm90IHB1bGwgdHVwbGVz IHVudGlsIG5lY2Vzc2FyeS4pCiAJCSAqLwogCQlpID0gRGF0dW1HZXRJbnQzMihiaW5hcnloZWFw X2ZpcnN0KG5vZGUtPm1zX2hlYXApKTsKLQkJaWYgKGJtc19pc19tZW1iZXIoaSwgbm9kZS0+bXNf YXN5bmNwbGFucykpCisJCWlmIChibXNfaXNfbWVtYmVyKGksIG5vZGUtPm1zLmFzeW5jcGxhbnMp KQogCQkJRXhlY01lcmdlQXBwZW5kQXN5bmNHZXROZXh0KG5vZGUsIGkpOwogCQllbHNlCiAJCXsK LQkJCUFzc2VydChibXNfaXNfbWVtYmVyKGksIG5vZGUtPm1zX3ZhbGlkX3N1YnBsYW5zKSk7Ci0J CQlub2RlLT5tc19zbG90c1tpXSA9IEV4ZWNQcm9jTm9kZShub2RlLT5tZXJnZXBsYW5zW2ldKTsK KwkJCUFzc2VydChibXNfaXNfbWVtYmVyKGksIG5vZGUtPm1zLnZhbGlkX3N1YnBsYW5zKSk7CisJ CQlub2RlLT5tc19zbG90c1tpXSA9IEV4ZWNQcm9jTm9kZShub2RlLT5tcy5wbGFuc1tpXSk7CiAJ CX0KIAkJaWYgKCFUdXBJc051bGwobm9kZS0+bXNfc2xvdHNbaV0pKQogCQkJYmluYXJ5aGVhcF9y ZXBsYWNlX2ZpcnN0KG5vZGUtPm1zX2hlYXAsIEludDMyR2V0RGF0dW0oaSkpOwpAQCAtMzYwLDcg KzIyNyw3IEBAIEV4ZWNNZXJnZUFwcGVuZChQbGFuU3RhdGUgKnBzdGF0ZSkKIAlpZiAoYmluYXJ5 aGVhcF9lbXB0eShub2RlLT5tc19oZWFwKSkKIAl7CiAJCS8qIEFsbCB0aGUgc3VicGxhbnMgYXJl IGV4aGF1c3RlZCwgYW5kIHNvIGlzIHRoZSBoZWFwICovCi0JCXJlc3VsdCA9IEV4ZWNDbGVhclR1 cGxlKG5vZGUtPnBzLnBzX1Jlc3VsdFR1cGxlU2xvdCk7CisJCXJlc3VsdCA9IEV4ZWNDbGVhclR1 cGxlKG5vZGUtPm1zLnBzLnBzX1Jlc3VsdFR1cGxlU2xvdCk7CiAJfQogCWVsc2UKIAl7CkBAIC00 MjYsODEgKzI5MywyMSBAQCBoZWFwX2NvbXBhcmVfc2xvdHMoRGF0dW0gYSwgRGF0dW0gYiwgdm9p ZCAqYXJnKQogdm9pZAogRXhlY0VuZE1lcmdlQXBwZW5kKE1lcmdlQXBwZW5kU3RhdGUgKm5vZGUp CiB7Ci0JUGxhblN0YXRlICoqbWVyZ2VwbGFuczsKLQlpbnQJCQlucGxhbnM7Ci0JaW50CQkJaTsK LQotCS8qCi0JICogZ2V0IGluZm9ybWF0aW9uIGZyb20gdGhlIG5vZGUKLQkgKi8KLQltZXJnZXBs YW5zID0gbm9kZS0+bWVyZ2VwbGFuczsKLQlucGxhbnMgPSBub2RlLT5tc19ucGxhbnM7Ci0KLQkv KgotCSAqIHNodXQgZG93biBlYWNoIG9mIHRoZSBzdWJzY2FucwotCSAqLwotCWZvciAoaSA9IDA7 IGkgPCBucGxhbnM7IGkrKykKLQkJRXhlY0VuZE5vZGUobWVyZ2VwbGFuc1tpXSk7CisJRXhlY0Vu ZEFwcGVuZGVyKCZub2RlLT5tcyk7CiB9CiAKIHZvaWQKIEV4ZWNSZVNjYW5NZXJnZUFwcGVuZChN ZXJnZUFwcGVuZFN0YXRlICpub2RlKQogewotCWludAkJCWk7Ci0JaW50CQkJbmFzeW5jcGxhbnMg PSBub2RlLT5tc19uYXN5bmNwbGFuczsKKwlpbnQJCQluYXN5bmNwbGFucyA9IG5vZGUtPm1zLm5h c3luY3BsYW5zOwogCi0JLyoKLQkgKiBJZiBhbnkgUEFSQU1fRVhFQyBQYXJhbXMgdXNlZCBpbiBw cnVuaW5nIGV4cHJlc3Npb25zIGhhdmUgY2hhbmdlZCwgdGhlbgotCSAqIHdlJ2QgYmV0dGVyIHVu c2V0IHRoZSB2YWxpZCBzdWJwbGFucyBzbyB0aGF0IHRoZXkgYXJlIHJlc2VsZWN0ZWQgZm9yCi0J ICogdGhlIG5ldyBwYXJhbWV0ZXIgdmFsdWVzLgotCSAqLwotCWlmIChub2RlLT5tc19wcnVuZV9z dGF0ZSAmJgotCQlibXNfb3ZlcmxhcChub2RlLT5wcy5jaGdQYXJhbSwKLQkJCQkJbm9kZS0+bXNf cHJ1bmVfc3RhdGUtPmV4ZWNwYXJhbWlkcykpCi0JewotCQlub2RlLT5tc192YWxpZF9zdWJwbGFu c19pZGVudGlmaWVkID0gZmFsc2U7Ci0JCWJtc19mcmVlKG5vZGUtPm1zX3ZhbGlkX3N1YnBsYW5z KTsKLQkJbm9kZS0+bXNfdmFsaWRfc3VicGxhbnMgPSBOVUxMOwotCQlibXNfZnJlZShub2RlLT5t c192YWxpZF9hc3luY3BsYW5zKTsKLQkJbm9kZS0+bXNfdmFsaWRfYXN5bmNwbGFucyA9IE5VTEw7 Ci0JfQotCi0JZm9yIChpID0gMDsgaSA8IG5vZGUtPm1zX25wbGFuczsgaSsrKQotCXsKLQkJUGxh blN0YXRlICAqc3Vibm9kZSA9IG5vZGUtPm1lcmdlcGxhbnNbaV07Ci0KLQkJLyoKLQkJICogRXhl Y1JlU2NhbiBkb2Vzbid0IGtub3cgYWJvdXQgbXkgc3VicGxhbnMsIHNvIEkgaGF2ZSB0byBkbwot CQkgKiBjaGFuZ2VkLXBhcmFtZXRlciBzaWduYWxpbmcgbXlzZWxmLgotCQkgKi8KLQkJaWYgKG5v ZGUtPnBzLmNoZ1BhcmFtICE9IE5VTEwpCi0JCQlVcGRhdGVDaGFuZ2VkUGFyYW1TZXQoc3Vibm9k ZSwgbm9kZS0+cHMuY2hnUGFyYW0pOwotCi0JCS8qCi0JCSAqIElmIGNoZ1BhcmFtIG9mIHN1Ym5v ZGUgaXMgbm90IG51bGwgdGhlbiBwbGFuIHdpbGwgYmUgcmUtc2Nhbm5lZCBieQotCQkgKiBmaXJz dCBFeGVjUHJvY05vZGUuCi0JCSAqLwotCQlpZiAoc3Vibm9kZS0+Y2hnUGFyYW0gPT0gTlVMTCkK LQkJCUV4ZWNSZVNjYW4oc3Vibm9kZSk7Ci0JfQorCUV4ZWNSZVNjYW5BcHBlbmRlcigmbm9kZS0+ bXMpOwogCi0JLyogUmVzZXQgYXN5bmMgc3RhdGUgKi8KKwkvKiBSZXNldCBzcGVjaWZpYyBtZXJn ZSBhcHBlbmQgYXN5bmMgc3RhdGUgKi8KIAlpZiAobmFzeW5jcGxhbnMgPiAwKQogCXsKLQkJaSA9 IC0xOwotCQl3aGlsZSAoKGkgPSBibXNfbmV4dF9tZW1iZXIobm9kZS0+bXNfYXN5bmNwbGFucywg aSkpID49IDApCi0JCXsKLQkJCUFzeW5jUmVxdWVzdCAqYXJlcSA9IG5vZGUtPm1zX2FzeW5jcmVx dWVzdHNbaV07Ci0KLQkJCWFyZXEtPmNhbGxiYWNrX3BlbmRpbmcgPSBmYWxzZTsKLQkJCWFyZXEt PnJlcXVlc3RfY29tcGxldGUgPSBmYWxzZTsKLQkJCWFyZXEtPnJlc3VsdCA9IE5VTEw7Ci0JCX0K LQogCQlibXNfZnJlZShub2RlLT5tc19hc3luY3JlbWFpbik7CiAJCW5vZGUtPm1zX2FzeW5jcmVt YWluID0gTlVMTDsKLQkJYm1zX2ZyZWUobm9kZS0+bXNfbmVlZHJlcXVlc3QpOwotCQlub2RlLT5t c19uZWVkcmVxdWVzdCA9IE5VTEw7CiAJCWJtc19mcmVlKG5vZGUtPm1zX2hhc19hc3luY3Jlc3Vs dHMpOwogCQlub2RlLT5tc19oYXNfYXN5bmNyZXN1bHRzID0gTlVMTDsKIAl9CkBAIC01MTksMTAg KzMyNiwxMCBAQCBFeGVjUmVTY2FuTWVyZ2VBcHBlbmQoTWVyZ2VBcHBlbmRTdGF0ZSAqbm9kZSkK IHN0YXRpYyB2b2lkCiBjbGFzc2lmeV9tYXRjaGluZ19zdWJwbGFucyhNZXJnZUFwcGVuZFN0YXRl ICpub2RlKQogewotCUFzc2VydChub2RlLT5tc192YWxpZF9zdWJwbGFuc19pZGVudGlmaWVkKTsK KwlBc3NlcnQobm9kZS0+bXMudmFsaWRfc3VicGxhbnNfaWRlbnRpZmllZCk7CiAKIAkvKiBOb3Ro aW5nIHRvIGRvIGlmIHRoZXJlIGFyZSBubyB2YWxpZCBzdWJwbGFucy4gKi8KLQlpZiAoYm1zX2lz X2VtcHR5KG5vZGUtPm1zX3ZhbGlkX3N1YnBsYW5zKSkKKwlpZiAoYm1zX2lzX2VtcHR5KG5vZGUt Pm1zLnZhbGlkX3N1YnBsYW5zKSkKIAl7CiAJCW5vZGUtPm1zX2FzeW5jcmVtYWluID0gTlVMTDsK IAkJcmV0dXJuOwpAQCAtNTMwLDkgKzMzNyw5IEBAIGNsYXNzaWZ5X21hdGNoaW5nX3N1YnBsYW5z KE1lcmdlQXBwZW5kU3RhdGUgKm5vZGUpCiAKIAkvKiBObyB2YWxpZCBhc3luYyBzdWJwbGFucyBp ZGVudGlmaWVkLiAqLwogCWlmICghY2xhc3NpZnlfbWF0Y2hpbmdfc3VicGxhbnNfY29tbW9uKAot CQkJCQkJCQkJCSAgICZub2RlLT5tc192YWxpZF9zdWJwbGFucywKLQkJCQkJCQkJCQkgICBub2Rl LT5tc19hc3luY3BsYW5zLAotCQkJCQkJCQkJCSAgICZub2RlLT5tc192YWxpZF9hc3luY3BsYW5z KSkKKwkJCQkJCQkJCQkgICAmbm9kZS0+bXMudmFsaWRfc3VicGxhbnMsCisJCQkJCQkJCQkJICAg bm9kZS0+bXMuYXN5bmNwbGFucywKKwkJCQkJCQkJCQkgICAmbm9kZS0+bXMudmFsaWRfYXN5bmNw bGFucykpCiAJCW5vZGUtPm1zX2FzeW5jcmVtYWluID0gTlVMTDsKIH0KIApAQCAtNTQ1LDM5ICsz NTIsMTcgQEAgY2xhc3NpZnlfbWF0Y2hpbmdfc3VicGxhbnMoTWVyZ2VBcHBlbmRTdGF0ZSAqbm9k ZSkKIHN0YXRpYyB2b2lkCiBFeGVjTWVyZ2VBcHBlbmRBc3luY0JlZ2luKE1lcmdlQXBwZW5kU3Rh dGUgKm5vZGUpCiB7Ci0JaW50CQkJaTsKLQotCS8qIEJhY2t3YXJkIHNjYW4gaXMgbm90IHN1cHBv cnRlZCBieSBhc3luYy1hd2FyZSBNZXJnZUFwcGVuZHMuICovCi0JQXNzZXJ0KFNjYW5EaXJlY3Rp b25Jc0ZvcndhcmQobm9kZS0+cHMuc3RhdGUtPmVzX2RpcmVjdGlvbikpOwotCi0JLyogV2Ugc2hv dWxkIG5ldmVyIGJlIGNhbGxlZCB3aGVuIHRoZXJlIGFyZSBubyBzdWJwbGFucyAqLwotCUFzc2Vy dChub2RlLT5tc19ucGxhbnMgPiAwKTsKLQotCS8qIFdlIHNob3VsZCBuZXZlciBiZSBjYWxsZWQg d2hlbiB0aGVyZSBhcmUgbm8gYXN5bmMgc3VicGxhbnMuICovCi0JQXNzZXJ0KG5vZGUtPm1zX25h c3luY3BsYW5zID4gMCk7Ci0KIAkvKiBFeGVjTWVyZ2VBcHBlbmQoKSBpZGVudGlmaWVzIHZhbGlk IHN1YnBsYW5zICovCi0JQXNzZXJ0KG5vZGUtPm1zX3ZhbGlkX3N1YnBsYW5zX2lkZW50aWZpZWQp OworCUFzc2VydChub2RlLT5tcy52YWxpZF9zdWJwbGFuc19pZGVudGlmaWVkKTsKIAogCS8qIElu aXRpYWxpemUgc3RhdGUgdmFyaWFibGVzLiAqLwotCW5vZGUtPm1zX2FzeW5jcmVtYWluID0gYm1z X2NvcHkobm9kZS0+bXNfdmFsaWRfYXN5bmNwbGFucyk7CisJbm9kZS0+bXNfYXN5bmNyZW1haW4g PSBibXNfY29weShub2RlLT5tcy52YWxpZF9hc3luY3BsYW5zKTsKIAogCS8qIE5vdGhpbmcgdG8g ZG8gaWYgdGhlcmUgYXJlIG5vIHZhbGlkIGFzeW5jIHN1YnBsYW5zLiAqLwogCWlmIChibXNfaXNf ZW1wdHkobm9kZS0+bXNfYXN5bmNyZW1haW4pKQogCQlyZXR1cm47CiAKLQkvKiBNYWtlIGEgcmVx dWVzdCBmb3IgZWFjaCBvZiB0aGUgdmFsaWQgYXN5bmMgc3VicGxhbnMuICovCi0JaSA9IC0xOwot CXdoaWxlICgoaSA9IGJtc19uZXh0X21lbWJlcihub2RlLT5tc192YWxpZF9hc3luY3BsYW5zLCBp KSkgPj0gMCkKLQl7Ci0JCUFzeW5jUmVxdWVzdCAqYXJlcSA9IG5vZGUtPm1zX2FzeW5jcmVxdWVz dHNbaV07Ci0KLQkJQXNzZXJ0KGFyZXEtPnJlcXVlc3RfaW5kZXggPT0gaSk7Ci0JCUFzc2VydCgh YXJlcS0+Y2FsbGJhY2tfcGVuZGluZyk7Ci0KLQkJLyogRG8gdGhlIGFjdHVhbCB3b3JrLiAqLwot CQlFeGVjQXN5bmNSZXF1ZXN0KGFyZXEpOwotCX0KKwlFeGVjQXBwZW5kZXJBc3luY0JlZ2luKCZu b2RlLT5tcyk7CiB9CiAKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTYzOCw3ICs0MjMsNyBAQCBFeGVjTWVyZ2VB cHBlbmRBc3luY1JlcXVlc3QoTWVyZ2VBcHBlbmRTdGF0ZSAqbm9kZSwgaW50IG1wbGFuKQogCSAq LwogCWlmIChibXNfaXNfbWVtYmVyKG1wbGFuLCBub2RlLT5tc19oYXNfYXN5bmNyZXN1bHRzKSkK IAl7Ci0JCW5vZGUtPm1zX3Nsb3RzW21wbGFuXSA9IG5vZGUtPm1zX2FzeW5jcmVzdWx0c1ttcGxh bl07CisJCW5vZGUtPm1zX3Nsb3RzW21wbGFuXSA9IG5vZGUtPm1zLmFzeW5jcmVzdWx0c1ttcGxh bl07CiAJCXJldHVybiB0cnVlOwogCX0KIApAQCAtNjQ4LDcgKzQzMyw3IEBAIEV4ZWNNZXJnZUFw cGVuZEFzeW5jUmVxdWVzdChNZXJnZUFwcGVuZFN0YXRlICpub2RlLCBpbnQgbXBsYW4pCiAJICov CiAJbmVlZHJlcXVlc3QgPSBOVUxMOwogCWkgPSAtMTsKLQl3aGlsZSAoKGkgPSBibXNfbmV4dF9t ZW1iZXIobm9kZS0+bXNfbmVlZHJlcXVlc3QsIGkpKSA+PSAwKQorCXdoaWxlICgoaSA9IGJtc19u ZXh0X21lbWJlcihub2RlLT5tcy5uZWVkcmVxdWVzdCwgaSkpID49IDApCiAJewogCQlpZiAoIWJt c19pc19tZW1iZXIoaSwgbm9kZS0+bXNfaGFzX2FzeW5jcmVzdWx0cykpCiAJCQluZWVkcmVxdWVz dCA9IGJtc19hZGRfbWVtYmVyKG5lZWRyZXF1ZXN0LCBpKTsKQEAgLTY2MSwxMyArNDQ2LDEzIEBA IEV4ZWNNZXJnZUFwcGVuZEFzeW5jUmVxdWVzdChNZXJnZUFwcGVuZFN0YXRlICpub2RlLCBpbnQg bXBsYW4pCiAJCXJldHVybiBmYWxzZTsKIAogCS8qIENsZWFyIG1zX25lZWRyZXF1ZXN0IGZsYWcs IGFzIHdlIGFyZSBnb2luZyB0byBzZW5kIHJlcXVlc3RzIG5vdyAqLwotCW5vZGUtPm1zX25lZWRy ZXF1ZXN0ID0gYm1zX2RlbF9tZW1iZXJzKG5vZGUtPm1zX25lZWRyZXF1ZXN0LCBuZWVkcmVxdWVz dCk7CisJbm9kZS0+bXMubmVlZHJlcXVlc3QgPSBibXNfZGVsX21lbWJlcnMobm9kZS0+bXMubmVl ZHJlcXVlc3QsIG5lZWRyZXF1ZXN0KTsKIAogCS8qIE1ha2UgYSBuZXcgcmVxdWVzdCBmb3IgZWFj aCBvZiB0aGUgYXN5bmMgc3VicGxhbnMgdGhhdCBuZWVkIGl0LiAqLwogCWkgPSAtMTsKIAl3aGls ZSAoKGkgPSBibXNfbmV4dF9tZW1iZXIobmVlZHJlcXVlc3QsIGkpKSA+PSAwKQogCXsKLQkJQXN5 bmNSZXF1ZXN0ICphcmVxID0gbm9kZS0+bXNfYXN5bmNyZXF1ZXN0c1tpXTsKKwkJQXN5bmNSZXF1 ZXN0ICphcmVxID0gbm9kZS0+bXMuYXN5bmNyZXF1ZXN0c1tpXTsKIAogCQkvKgogCQkgKiBXZSd2 ZSBqdXN0IGNoZWNrZWQgdGhhdCBzdWJwbGFuIGRvZXNuJ3QgYWxyZWFkeSBoYXZlIHNvbWUgZmV0 Y2hlZApAQCAtNjgzLDcgKzQ2OCw3IEBAIEV4ZWNNZXJnZUFwcGVuZEFzeW5jUmVxdWVzdChNZXJn ZUFwcGVuZFN0YXRlICpub2RlLCBpbnQgbXBsYW4pCiAJLyogUmV0dXJuIG5lZWRlZCBhc3luY2hy b25vdXNseS1nZW5lcmF0ZWQgcmVzdWx0cyBpZiBhbnkuICovCiAJaWYgKGJtc19pc19tZW1iZXIo bXBsYW4sIG5vZGUtPm1zX2hhc19hc3luY3Jlc3VsdHMpKQogCXsKLQkJbm9kZS0+bXNfc2xvdHNb bXBsYW5dID0gbm9kZS0+bXNfYXN5bmNyZXN1bHRzW21wbGFuXTsKKwkJbm9kZS0+bXNfc2xvdHNb bXBsYW5dID0gbm9kZS0+bXMuYXN5bmNyZXN1bHRzW21wbGFuXTsKIAkJcmV0dXJuIHRydWU7CiAJ fQogCkBAIC03MDcsNyArNDkyLDcgQEAgRXhlY0FzeW5jTWVyZ2VBcHBlbmRSZXNwb25zZShBc3lu Y1JlcXVlc3QgKmFyZXEpCiAJLyogV2Ugc2hvdWxkIGhhbmRsZSBwcmV2aW91cyBhc3luYyByZXN1 bHQgcHJpb3IgdG8gZ2V0dGluZyBuZXcgb25lICovCiAJQXNzZXJ0KCFibXNfaXNfbWVtYmVyKGFy ZXEtPnJlcXVlc3RfaW5kZXgsIG5vZGUtPm1zX2hhc19hc3luY3Jlc3VsdHMpKTsKIAotCW5vZGUt Pm1zX2FzeW5jcmVzdWx0c1thcmVxLT5yZXF1ZXN0X2luZGV4XSA9IE5VTEw7CisJbm9kZS0+bXMu YXN5bmNyZXN1bHRzW2FyZXEtPnJlcXVlc3RfaW5kZXhdID0gTlVMTDsKIAkvKiBOb3RoaW5nIHRv IGRvIGlmIHRoZSByZXF1ZXN0IGlzIHBlbmRpbmcuICovCiAJaWYgKCFhcmVxLT5yZXF1ZXN0X2Nv bXBsZXRlKQogCXsKQEAgLTczMCwxMyArNTE1LDEzIEBAIEV4ZWNBc3luY01lcmdlQXBwZW5kUmVz cG9uc2UoQXN5bmNSZXF1ZXN0ICphcmVxKQogCW5vZGUtPm1zX2hhc19hc3luY3Jlc3VsdHMgPSBi bXNfYWRkX21lbWJlcihub2RlLT5tc19oYXNfYXN5bmNyZXN1bHRzLAogCQkJCQkJCQkJCQkgICBh cmVxLT5yZXF1ZXN0X2luZGV4KTsKIAkvKiBTYXZlIHJlc3VsdCBzbyB3ZSBjYW4gcmV0dXJuIGl0 LiAqLwotCW5vZGUtPm1zX2FzeW5jcmVzdWx0c1thcmVxLT5yZXF1ZXN0X2luZGV4XSA9IHNsb3Q7 CisJbm9kZS0+bXMuYXN5bmNyZXN1bHRzW2FyZXEtPnJlcXVlc3RfaW5kZXhdID0gc2xvdDsKIAog CS8qCiAJICogTWFyayB0aGUgc3VicGxhbiB0aGF0IHJldHVybmVkIGEgcmVzdWx0IGFzIHJlYWR5 IGZvciBhIG5ldyByZXF1ZXN0LiAgV2UKIAkgKiBkb24ndCBsYXVuY2ggYW5vdGhlciBvbmUgaGVy ZSBpbW1lZGlhdGVseSBiZWNhdXNlIGl0IG1pZ2h0IGNvbXBsZXRlLgogCSAqLwotCW5vZGUtPm1z X25lZWRyZXF1ZXN0ID0gYm1zX2FkZF9tZW1iZXIobm9kZS0+bXNfbmVlZHJlcXVlc3QsCisJbm9k ZS0+bXMubmVlZHJlcXVlc3QgPSBibXNfYWRkX21lbWJlcihub2RlLT5tcy5uZWVkcmVxdWVzdCwK IAkJCQkJCQkJCQkgIGFyZXEtPnJlcXVlc3RfaW5kZXgpOwogfQogCkBAIC03NDksMTAxICs1MzQs OCBAQCBFeGVjQXN5bmNNZXJnZUFwcGVuZFJlc3BvbnNlKEFzeW5jUmVxdWVzdCAqYXJlcSkKIHN0 YXRpYyB2b2lkCiBFeGVjTWVyZ2VBcHBlbmRBc3luY0V2ZW50V2FpdChNZXJnZUFwcGVuZFN0YXRl ICpub2RlKQogewotCWludAkJCW5ldmVudHMgPSBub2RlLT5tc19uYXN5bmNwbGFucyArIDI7IC8q IG9uZSBmb3IgUE0gZGVhdGggYW5kCi0JCQkJCQkJCQkJCQkJICogb25lIGZvciBsYXRjaCAqLwot CVdhaXRFdmVudAlvY2N1cnJlZF9ldmVudFtFVkVOVF9CVUZGRVJfU0laRV07Ci0JaW50CQkJbm9j Y3VycmVkOwotCWludAkJCWk7Ci0KIAkvKiBXZSBzaG91bGQgbmV2ZXIgYmUgY2FsbGVkIHdoZW4g dGhlcmUgYXJlIG5vIHZhbGlkIGFzeW5jIHN1YnBsYW5zLiAqLwogCUFzc2VydChibXNfbnVtX21l bWJlcnMobm9kZS0+bXNfYXN5bmNyZW1haW4pID4gMCk7CiAKLQlub2RlLT5tc19ldmVudHNldCA9 IENyZWF0ZVdhaXRFdmVudFNldChDdXJyZW50UmVzb3VyY2VPd25lciwgbmV2ZW50cyk7Ci0JQWRk V2FpdEV2ZW50VG9TZXQobm9kZS0+bXNfZXZlbnRzZXQsIFdMX0VYSVRfT05fUE1fREVBVEgsIFBH SU5WQUxJRF9TT0NLRVQsCi0JCQkJCSAgTlVMTCwgTlVMTCk7Ci0KLQkvKiBHaXZlIGVhY2ggd2Fp dGluZyBzdWJwbGFuIGEgY2hhbmNlIHRvIGFkZCBhbiBldmVudC4gKi8KLQlpID0gLTE7Ci0Jd2hp bGUgKChpID0gYm1zX25leHRfbWVtYmVyKG5vZGUtPm1zX2FzeW5jcGxhbnMsIGkpKSA+PSAwKQot CXsKLQkJQXN5bmNSZXF1ZXN0ICphcmVxID0gbm9kZS0+bXNfYXN5bmNyZXF1ZXN0c1tpXTsKLQot CQlpZiAoYXJlcS0+Y2FsbGJhY2tfcGVuZGluZykKLQkJCUV4ZWNBc3luY0NvbmZpZ3VyZVdhaXQo YXJlcSk7Ci0JfQotCi0JLyoKLQkgKiBObyBuZWVkIGZvciBmdXJ0aGVyIHByb2Nlc3NpbmcgaWYg bm9uZSBvZiB0aGUgc3VicGxhbnMgY29uZmlndXJlZCBhbnkKLQkgKiBldmVudHMuCi0JICovCi0J aWYgKEdldE51bVJlZ2lzdGVyZWRXYWl0RXZlbnRzKG5vZGUtPm1zX2V2ZW50c2V0KSA9PSAxKQot CXsKLQkJRnJlZVdhaXRFdmVudFNldChub2RlLT5tc19ldmVudHNldCk7Ci0JCW5vZGUtPm1zX2V2 ZW50c2V0ID0gTlVMTDsKLQkJcmV0dXJuOwotCX0KLQotCS8qCi0JICogQWRkIHRoZSBwcm9jZXNz IGxhdGNoIHRvIHRoZSBzZXQsIHNvIHRoYXQgd2Ugd2FrZSB1cCB0byBwcm9jZXNzIHRoZQotCSAq IHN0YW5kYXJkIGludGVycnVwdHMgd2l0aCBDSEVDS19GT1JfSU5URVJSVVBUUygpLgotCSAqCi0J ICogTk9URTogRm9yIGhpc3RvcmljYWwgcmVhc29ucywgaXQncyBpbXBvcnRhbnQgdGhhdCB0aGlz IGlzIGFkZGVkIHRvIHRoZQotCSAqIFdhaXRFdmVudFNldCBhZnRlciB0aGUgRXhlY0FzeW5jQ29u ZmlndXJlV2FpdCgpIGNhbGxzLiAgTmFtZWx5LAotCSAqIHBvc3RncmVzX2ZkdyBjYWxscyAiR2V0 TnVtUmVnaXN0ZXJlZFdhaXRFdmVudHMoc2V0KSA9PSAxIiB0byBjaGVjayBpZgotCSAqIGFueSBv dGhlciBldmVudHMgYXJlIGluIHRoZSBzZXQuICBUaGF0J3MgYSBwb29yIGRlc2lnbiwgaXQncwot CSAqIHF1ZXN0aW9uYWJsZSBmb3IgcG9zdGdyZXNfZmR3IHRvIGJlIGRvaW5nIHRoYXQgaW4gdGhl IGZpcnN0IHBsYWNlLCBidXQKLQkgKiB3ZSBjYW5ub3QgY2hhbmdlIGl0IG5vdy4gIFRoZSBwYXR0 ZXJuIGhhcyBwb3NzaWJseSBiZWVuIGNvcGllZCB0byBvdGhlcgotCSAqIGV4dGVuc2lvbnMgdG9v LgotCSAqLwotCUFkZFdhaXRFdmVudFRvU2V0KG5vZGUtPm1zX2V2ZW50c2V0LCBXTF9MQVRDSF9T RVQsIFBHSU5WQUxJRF9TT0NLRVQsCi0JCQkJCSAgTXlMYXRjaCwgTlVMTCk7Ci0KLQkvKiBSZXR1 cm4gYXQgbW9zdCBFVkVOVF9CVUZGRVJfU0laRSBldmVudHMgaW4gb25lIGNhbGwuICovCi0JaWYg KG5ldmVudHMgPiBFVkVOVF9CVUZGRVJfU0laRSkKLQkJbmV2ZW50cyA9IEVWRU5UX0JVRkZFUl9T SVpFOwotCi0JLyoKLQkgKiBXYWl0IHVudGlsIGF0IGxlYXN0IG9uZSBldmVudCBvY2N1cnMuCi0J ICovCi0Jbm9jY3VycmVkID0gV2FpdEV2ZW50U2V0V2FpdChub2RlLT5tc19ldmVudHNldCwgLTEg Lyogbm8gdGltZW91dCAqLyAsIG9jY3VycmVkX2V2ZW50LAotCQkJCQkJCQkgbmV2ZW50cywgV0FJ VF9FVkVOVF9BUFBFTkRfUkVBRFkpOwotCUZyZWVXYWl0RXZlbnRTZXQobm9kZS0+bXNfZXZlbnRz ZXQpOwotCW5vZGUtPm1zX2V2ZW50c2V0ID0gTlVMTDsKLQlpZiAobm9jY3VycmVkID09IDApCi0J CXJldHVybjsKLQotCS8qIERlbGl2ZXIgbm90aWZpY2F0aW9ucy4gKi8KLQlmb3IgKGkgPSAwOyBp IDwgbm9jY3VycmVkOyBpKyspCi0JewotCQlXYWl0RXZlbnQgICp3ID0gJm9jY3VycmVkX2V2ZW50 W2ldOwotCi0JCS8qCi0JCSAqIEVhY2ggd2FpdGluZyBzdWJwbGFuIHNob3VsZCBoYXZlIHJlZ2lz dGVyZWQgaXRzIHdhaXQgZXZlbnQgd2l0aAotCQkgKiB1c2VyX2RhdGEgcG9pbnRpbmcgYmFjayB0 byBpdHMgQXN5bmNSZXF1ZXN0LgotCQkgKi8KLQkJaWYgKCh3LT5ldmVudHMgJiBXTF9TT0NLRVRf UkVBREFCTEUpICE9IDApCi0JCXsKLQkJCUFzeW5jUmVxdWVzdCAqYXJlcSA9IChBc3luY1JlcXVl c3QgKikgdy0+dXNlcl9kYXRhOwotCi0JCQlpZiAoYXJlcS0+Y2FsbGJhY2tfcGVuZGluZykKLQkJ CXsKLQkJCQkvKgotCQkJCSAqIE1hcmsgaXQgYXMgbm8gbG9uZ2VyIG5lZWRpbmcgYSBjYWxsYmFj ay4gIFdlIG11c3QgZG8gdGhpcwotCQkJCSAqIGJlZm9yZSBkaXNwYXRjaGluZyB0aGUgY2FsbGJh Y2sgaW4gY2FzZSB0aGUgY2FsbGJhY2sgcmVzZXRzCi0JCQkJICogdGhlIGZsYWcuCi0JCQkJICov Ci0JCQkJYXJlcS0+Y2FsbGJhY2tfcGVuZGluZyA9IGZhbHNlOwotCi0JCQkJLyogRG8gdGhlIGFj dHVhbCB3b3JrLiAqLwotCQkJCUV4ZWNBc3luY05vdGlmeShhcmVxKTsKLQkJCX0KLQkJfQotCi0J CS8qIEhhbmRsZSBzdGFuZGFyZCBpbnRlcnJ1cHRzICovCi0JCWlmICgody0+ZXZlbnRzICYgV0xf TEFUQ0hfU0VUKSAhPSAwKQotCQl7Ci0JCQlSZXNldExhdGNoKE15TGF0Y2gpOwotCQkJQ0hFQ0tf Rk9SX0lOVEVSUlVQVFMoKTsKLQkJfQotCX0KKwlFeGVjQXBwZW5kZXJBc3luY0V2ZW50V2FpdCgm bm9kZS0+bXMsIC0xIC8qIG5vIHRpbWVvdXQgKi8gLCBXQUlUX0VWRU5UX0FQUEVORF9SRUFEWSk7 CiB9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9ub2Rlcy9ub2RlRnVuY3MuYyBiL3NyYy9iYWNr ZW5kL25vZGVzL25vZGVGdW5jcy5jCmluZGV4IDAyNGEyYjJmZDg0Li4yZjRlMmFlNmQzOSAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvbm9kZXMvbm9kZUZ1bmNzLmMKKysrIGIvc3JjL2JhY2tlbmQv bm9kZXMvbm9kZUZ1bmNzLmMKQEAgLTQ3NTEsMTQgKzQ3NTEsMTQgQEAgcGxhbnN0YXRlX3RyZWVf d2Fsa2VyX2ltcGwoUGxhblN0YXRlICpwbGFuc3RhdGUsCiAJc3dpdGNoIChub2RlVGFnKHBsYW4p KQogCXsKIAkJY2FzZSBUX0FwcGVuZDoKLQkJCWlmIChwbGFuc3RhdGVfd2Fsa19tZW1iZXJzKCgo QXBwZW5kU3RhdGUgKikgcGxhbnN0YXRlKS0+YXBwZW5kcGxhbnMsCi0JCQkJCQkJCQkgICAoKEFw cGVuZFN0YXRlICopIHBsYW5zdGF0ZSktPmFzX25wbGFucywKKwkJCWlmIChwbGFuc3RhdGVfd2Fs a19tZW1iZXJzKCgoQXBwZW5kU3RhdGUgKikgcGxhbnN0YXRlKS0+YXMucGxhbnMsCisJCQkJCQkJ CQkgICAoKEFwcGVuZFN0YXRlICopIHBsYW5zdGF0ZSktPmFzLm5wbGFucywKIAkJCQkJCQkJCSAg IHdhbGtlciwgY29udGV4dCkpCiAJCQkJcmV0dXJuIHRydWU7CiAJCQlicmVhazsKIAkJY2FzZSBU X01lcmdlQXBwZW5kOgotCQkJaWYgKHBsYW5zdGF0ZV93YWxrX21lbWJlcnMoKChNZXJnZUFwcGVu ZFN0YXRlICopIHBsYW5zdGF0ZSktPm1lcmdlcGxhbnMsCi0JCQkJCQkJCQkgICAoKE1lcmdlQXBw ZW5kU3RhdGUgKikgcGxhbnN0YXRlKS0+bXNfbnBsYW5zLAorCQkJaWYgKHBsYW5zdGF0ZV93YWxr X21lbWJlcnMoKChNZXJnZUFwcGVuZFN0YXRlICopIHBsYW5zdGF0ZSktPm1zLnBsYW5zLAorCQkJ CQkJCQkJICAgKChNZXJnZUFwcGVuZFN0YXRlICopIHBsYW5zdGF0ZSktPm1zLm5wbGFucywKIAkJ CQkJCQkJCSAgIHdhbGtlciwgY29udGV4dCkpCiAJCQkJcmV0dXJuIHRydWU7CiAJCQlicmVhazsK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL2NyZWF0ZXBsYW4uYyBiL3Ny Yy9iYWNrZW5kL29wdGltaXplci9wbGFuL2NyZWF0ZXBsYW4uYwppbmRleCBmYzBlNWM2MmVhOS4u YTdiN2UzZDQ1ZTAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL2NyZWF0 ZXBsYW4uYworKysgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9jcmVhdGVwbGFuLmMKQEAg LTEyNjIsMTEgKzEyNjIsMTEgQEAgY3JlYXRlX2FwcGVuZF9wbGFuKFBsYW5uZXJJbmZvICpyb290 LCBBcHBlbmRQYXRoICpiZXN0X3BhdGgsIGludCBmbGFncykKIAkgKiBjaGlsZCBwbGFucywgdG8g bWFrZSBjcm9zcy1jaGVja2luZyB0aGUgc29ydCBpbmZvIGVhc2llci4KIAkgKi8KIAlwbGFuID0g bWFrZU5vZGUoQXBwZW5kKTsKLQlwbGFuLT5wbGFuLnRhcmdldGxpc3QgPSB0bGlzdDsKLQlwbGFu LT5wbGFuLnF1YWwgPSBOSUw7Ci0JcGxhbi0+cGxhbi5sZWZ0dHJlZSA9IE5VTEw7Ci0JcGxhbi0+ cGxhbi5yaWdodHRyZWUgPSBOVUxMOwotCXBsYW4tPmFwcHJlbGlkcyA9IHJlbC0+cmVsaWRzOwor CXBsYW4tPmFwLnBsYW4udGFyZ2V0bGlzdCA9IHRsaXN0OworCXBsYW4tPmFwLnBsYW4ucXVhbCA9 IE5JTDsKKwlwbGFuLT5hcC5wbGFuLmxlZnR0cmVlID0gTlVMTDsKKwlwbGFuLT5hcC5wbGFuLnJp Z2h0dHJlZSA9IE5VTEw7CisJcGxhbi0+YXAuYXBwcmVsaWRzID0gcmVsLT5yZWxpZHM7CiAKIAlp ZiAocGF0aGtleXMgIT0gTklMKQogCXsKQEAgLTEyODUsNyArMTI4NSw3IEBAIGNyZWF0ZV9hcHBl bmRfcGxhbihQbGFubmVySW5mbyAqcm9vdCwgQXBwZW5kUGF0aCAqYmVzdF9wYXRoLCBpbnQgZmxh Z3MpCiAJCQkJCQkJCQkJICAmbm9kZVNvcnRPcGVyYXRvcnMsCiAJCQkJCQkJCQkJICAmbm9kZUNv bGxhdGlvbnMsCiAJCQkJCQkJCQkJICAmbm9kZU51bGxzRmlyc3QpOwotCQl0bGlzdF93YXNfY2hh bmdlZCA9IChvcmlnX3RsaXN0X2xlbmd0aCAhPSBsaXN0X2xlbmd0aChwbGFuLT5wbGFuLnRhcmdl dGxpc3QpKTsKKwkJdGxpc3Rfd2FzX2NoYW5nZWQgPSAob3JpZ190bGlzdF9sZW5ndGggIT0gbGlz dF9sZW5ndGgocGxhbi0+YXAucGxhbi50YXJnZXRsaXN0KSk7CiAJfQogCiAJLyogSWYgYXBwcm9w cmlhdGUsIGNvbnNpZGVyIGFzeW5jIGFwcGVuZCAqLwpAQCAtMTM5NSw3ICsxMzk1LDcgQEAgY3Jl YXRlX2FwcGVuZF9wbGFuKFBsYW5uZXJJbmZvICpyb290LCBBcHBlbmRQYXRoICpiZXN0X3BhdGgs IGludCBmbGFncykKIAl9CiAKIAkvKiBTZXQgYmVsb3cgaWYgd2UgZmluZCBxdWFscyB0aGF0IHdl IGNhbiB1c2UgdG8gcnVuLXRpbWUgcHJ1bmUgKi8KLQlwbGFuLT5wYXJ0X3BydW5lX2luZGV4ID0g LTE7CisJcGxhbi0+YXAucGFydF9wcnVuZV9pbmRleCA9IC0xOwogCiAJLyoKIAkgKiBJZiBhbnkg cXVhbHMgZXhpc3QsIHRoZXkgbWF5IGJlIHVzZWZ1bCB0byBwZXJmb3JtIGZ1cnRoZXIgcGFydGl0 aW9uCkBAIC0xNDIwLDE2ICsxNDIwLDE2IEBAIGNyZWF0ZV9hcHBlbmRfcGxhbihQbGFubmVySW5m byAqcm9vdCwgQXBwZW5kUGF0aCAqYmVzdF9wYXRoLCBpbnQgZmxhZ3MpCiAJCX0KIAogCQlpZiAo cHJ1bmVxdWFsICE9IE5JTCkKLQkJCXBsYW4tPnBhcnRfcHJ1bmVfaW5kZXggPSBtYWtlX3BhcnRp dGlvbl9wcnVuZWluZm8ocm9vdCwgcmVsLAorCQkJcGxhbi0+YXAucGFydF9wcnVuZV9pbmRleCA9 IG1ha2VfcGFydGl0aW9uX3BydW5laW5mbyhyb290LCByZWwsCiAJCQkJCQkJCQkJCQkJCQkgIGJl c3RfcGF0aC0+c3VicGF0aHMsCiAJCQkJCQkJCQkJCQkJCQkgIHBydW5lcXVhbCk7CiAJfQogCi0J cGxhbi0+YXBwZW5kcGxhbnMgPSBzdWJwbGFuczsKKwlwbGFuLT5hcC5zdWJwbGFucyA9IHN1YnBs YW5zOwogCXBsYW4tPm5hc3luY3BsYW5zID0gbmFzeW5jcGxhbnM7CiAJcGxhbi0+Zmlyc3RfcGFy dGlhbF9wbGFuID0gYmVzdF9wYXRoLT5maXJzdF9wYXJ0aWFsX3BhdGg7CiAKLQljb3B5X2dlbmVy aWNfcGF0aF9pbmZvKCZwbGFuLT5wbGFuLCAoUGF0aCAqKSBiZXN0X3BhdGgpOworCWNvcHlfZ2Vu ZXJpY19wYXRoX2luZm8oJnBsYW4tPmFwLnBsYW4sIChQYXRoICopIGJlc3RfcGF0aCk7CiAKIAkv KgogCSAqIElmIHByZXBhcmVfc29ydF9mcm9tX3BhdGhrZXlzIGFkZGVkIHNvcnQgY29sdW1ucywg YnV0IHdlIHdlcmUgdG9sZCB0bwpAQCAtMTQzOCw5ICsxNDM4LDkgQEAgY3JlYXRlX2FwcGVuZF9w bGFuKFBsYW5uZXJJbmZvICpyb290LCBBcHBlbmRQYXRoICpiZXN0X3BhdGgsIGludCBmbGFncykK IAkgKi8KIAlpZiAodGxpc3Rfd2FzX2NoYW5nZWQgJiYgKGZsYWdzICYgKENQX0VYQUNUX1RMSVNU IHwgQ1BfU01BTExfVExJU1QpKSkKIAl7Ci0JCXRsaXN0ID0gbGlzdF9jb3B5X2hlYWQocGxhbi0+ cGxhbi50YXJnZXRsaXN0LCBvcmlnX3RsaXN0X2xlbmd0aCk7CisJCXRsaXN0ID0gbGlzdF9jb3B5 X2hlYWQocGxhbi0+YXAucGxhbi50YXJnZXRsaXN0LCBvcmlnX3RsaXN0X2xlbmd0aCk7CiAJCXJl dHVybiBpbmplY3RfcHJvamVjdGlvbl9wbGFuKChQbGFuICopIHBsYW4sIHRsaXN0LAotCQkJCQkJ CQkJICBwbGFuLT5wbGFuLnBhcmFsbGVsX3NhZmUpOworCQkJCQkJCQkJICBwbGFuLT5hcC5wbGFu LnBhcmFsbGVsX3NhZmUpOwogCX0KIAllbHNlCiAJCXJldHVybiAoUGxhbiAqKSBwbGFuOwpAQCAt MTQ1OCw3ICsxNDU4LDcgQEAgY3JlYXRlX21lcmdlX2FwcGVuZF9wbGFuKFBsYW5uZXJJbmZvICpy b290LCBNZXJnZUFwcGVuZFBhdGggKmJlc3RfcGF0aCwKIAkJCQkJCSBpbnQgZmxhZ3MpCiB7CiAJ TWVyZ2VBcHBlbmQgKm5vZGUgPSBtYWtlTm9kZShNZXJnZUFwcGVuZCk7Ci0JUGxhbgkgICAqcGxh biA9ICZub2RlLT5wbGFuOworCVBsYW4JICAgKnBsYW4gPSAmbm9kZS0+YXAucGxhbjsKIAlMaXN0 CSAgICp0bGlzdCA9IGJ1aWxkX3BhdGhfdGxpc3Qocm9vdCwgJmJlc3RfcGF0aC0+cGF0aCk7CiAJ aW50CQkJb3JpZ190bGlzdF9sZW5ndGggPSBsaXN0X2xlbmd0aCh0bGlzdCk7CiAJYm9vbAkJdGxp c3Rfd2FzX2NoYW5nZWQ7CkBAIC0xNDc5LDcgKzE0NzksNyBAQCBjcmVhdGVfbWVyZ2VfYXBwZW5k X3BsYW4oUGxhbm5lckluZm8gKnJvb3QsIE1lcmdlQXBwZW5kUGF0aCAqYmVzdF9wYXRoLAogCXBs YW4tPnF1YWwgPSBOSUw7CiAJcGxhbi0+bGVmdHRyZWUgPSBOVUxMOwogCXBsYW4tPnJpZ2h0dHJl ZSA9IE5VTEw7Ci0Jbm9kZS0+YXBwcmVsaWRzID0gcmVsLT5yZWxpZHM7CisJbm9kZS0+YXAuYXBw cmVsaWRzID0gcmVsLT5yZWxpZHM7CiAKIAljb25zaWRlcl9hc3luYyA9IChlbmFibGVfYXN5bmNf bWVyZ2VfYXBwZW5kICYmCiAJCQkJCSAgIWJlc3RfcGF0aC0+cGF0aC5wYXJhbGxlbF9zYWZlICYm CkBAIC0xNTkzLDcgKzE1OTMsNyBAQCBjcmVhdGVfbWVyZ2VfYXBwZW5kX3BsYW4oUGxhbm5lcklu Zm8gKnJvb3QsIE1lcmdlQXBwZW5kUGF0aCAqYmVzdF9wYXRoLAogCX0KIAogCS8qIFNldCBiZWxv dyBpZiB3ZSBmaW5kIHF1YWxzIHRoYXQgd2UgY2FuIHVzZSB0byBydW4tdGltZSBwcnVuZSAqLwot CW5vZGUtPnBhcnRfcHJ1bmVfaW5kZXggPSAtMTsKKwlub2RlLT5hcC5wYXJ0X3BydW5lX2luZGV4 ID0gLTE7CiAKIAkvKgogCSAqIElmIGFueSBxdWFscyBleGlzdCwgdGhleSBtYXkgYmUgdXNlZnVs IHRvIHBlcmZvcm0gZnVydGhlciBwYXJ0aXRpb24KQEAgLTE2MTAsMTIgKzE2MTAsMTIgQEAgY3Jl YXRlX21lcmdlX2FwcGVuZF9wbGFuKFBsYW5uZXJJbmZvICpyb290LCBNZXJnZUFwcGVuZFBhdGgg KmJlc3RfcGF0aCwKIAkJQXNzZXJ0KGJlc3RfcGF0aC0+cGF0aC5wYXJhbV9pbmZvID09IE5VTEwp OwogCiAJCWlmIChwcnVuZXF1YWwgIT0gTklMKQotCQkJbm9kZS0+cGFydF9wcnVuZV9pbmRleCA9 IG1ha2VfcGFydGl0aW9uX3BydW5laW5mbyhyb290LCByZWwsCisJCQlub2RlLT5hcC5wYXJ0X3By dW5lX2luZGV4ID0gbWFrZV9wYXJ0aXRpb25fcHJ1bmVpbmZvKHJvb3QsIHJlbCwKIAkJCQkJCQkJ CQkJCQkJCSAgYmVzdF9wYXRoLT5zdWJwYXRocywKIAkJCQkJCQkJCQkJCQkJCSAgcHJ1bmVxdWFs KTsKIAl9CiAKLQlub2RlLT5tZXJnZXBsYW5zID0gc3VicGxhbnM7CisJbm9kZS0+YXAuc3VicGxh bnMgPSBzdWJwbGFuczsKIAogCS8qCiAJICogSWYgcHJlcGFyZV9zb3J0X2Zyb21fcGF0aGtleXMg YWRkZWQgc29ydCBjb2x1bW5zLCBidXQgd2Ugd2VyZSB0b2xkIHRvCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9zZXRyZWZzLmMgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIv cGxhbi9zZXRyZWZzLmMKaW5kZXggY2Q3ZWExZTZiNTguLmE1OTVmMzRjODdiIDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9zZXRyZWZzLmMKKysrIGIvc3JjL2JhY2tlbmQv b3B0aW1pemVyL3BsYW4vc2V0cmVmcy5jCkBAIC0xODUwLDEwICsxODUwLDEwIEBAIHNldF9hcHBl bmRfcmVmZXJlbmNlcyhQbGFubmVySW5mbyAqcm9vdCwKIAkgKiBjaGVjayBxdWFscy4gIElmIGl0 J3MgZ290IGV4YWN0bHkgb25lIGNoaWxkIHBsYW4sIHRoZW4gaXQncyBub3QgZG9pbmcKIAkgKiBh bnl0aGluZyB1c2VmdWwgYXQgYWxsLCBhbmQgd2UgY2FuIHN0cmlwIGl0IG91dC4KIAkgKi8KLQlB c3NlcnQoYXBsYW4tPnBsYW4ucXVhbCA9PSBOSUwpOworCUFzc2VydChhcGxhbi0+YXAucGxhbi5x dWFsID09IE5JTCk7CiAKIAkvKiBGaXJzdCwgd2UgZ290dGEgcmVjdXJzZSBvbiB0aGUgY2hpbGRy ZW4gKi8KLQlmb3JlYWNoKGwsIGFwbGFuLT5hcHBlbmRwbGFucykKKwlmb3JlYWNoKGwsIGFwbGFu LT5hcC5zdWJwbGFucykKIAl7CiAJCWxmaXJzdChsKSA9IHNldF9wbGFuX3JlZnMocm9vdCwgKFBs YW4gKikgbGZpcnN0KGwpLCBydG9mZnNldCk7CiAJfQpAQCAtMTg2NiwxMSArMTg2NiwxMSBAQCBz ZXRfYXBwZW5kX3JlZmVyZW5jZXMoUGxhbm5lckluZm8gKnJvb3QsCiAJICogcGxhbiBtYXkgZXhl Y3V0ZSB0aGUgbm9uLXBhcmFsbGVsIGF3YXJlIGNoaWxkIG11bHRpcGxlIHRpbWVzLiAgKElmIHlv dQogCSAqIGNoYW5nZSB0aGVzZSBydWxlcywgdXBkYXRlIGNyZWF0ZV9hcHBlbmRfcGF0aCB0byBt YXRjaC4pCiAJICovCi0JaWYgKGxpc3RfbGVuZ3RoKGFwbGFuLT5hcHBlbmRwbGFucykgPT0gMSkK KwlpZiAobGlzdF9sZW5ndGgoYXBsYW4tPmFwLnN1YnBsYW5zKSA9PSAxKQogCXsKLQkJUGxhbgkg ICAqcCA9IChQbGFuICopIGxpbml0aWFsKGFwbGFuLT5hcHBlbmRwbGFucyk7CisJCVBsYW4JICAg KnAgPSAoUGxhbiAqKSBsaW5pdGlhbChhcGxhbi0+YXAuc3VicGxhbnMpOwogCi0JCWlmIChwLT5w YXJhbGxlbF9hd2FyZSA9PSBhcGxhbi0+cGxhbi5wYXJhbGxlbF9hd2FyZSkKKwkJaWYgKHAtPnBh cmFsbGVsX2F3YXJlID09IGFwbGFuLT5hcC5wbGFuLnBhcmFsbGVsX2F3YXJlKQogCQkJcmV0dXJu IGNsZWFuX3VwX3JlbW92ZWRfcGxhbl9sZXZlbCgoUGxhbiAqKSBhcGxhbiwgcCk7CiAJfQogCkBA IC0xODgxLDE5ICsxODgxLDE5IEBAIHNldF9hcHBlbmRfcmVmZXJlbmNlcyhQbGFubmVySW5mbyAq cm9vdCwKIAkgKi8KIAlzZXRfZHVtbXlfdGxpc3RfcmVmZXJlbmNlcygoUGxhbiAqKSBhcGxhbiwg cnRvZmZzZXQpOwogCi0JYXBsYW4tPmFwcHJlbGlkcyA9IG9mZnNldF9yZWxpZF9zZXQoYXBsYW4t PmFwcHJlbGlkcywgcnRvZmZzZXQpOworCWFwbGFuLT5hcC5hcHByZWxpZHMgPSBvZmZzZXRfcmVs aWRfc2V0KGFwbGFuLT5hcC5hcHByZWxpZHMsIHJ0b2Zmc2V0KTsKIAogCS8qCiAJICogQWRkIFBh cnRpdGlvblBydW5lSW5mbywgaWYgYW55LCB0byBQbGFubmVyR2xvYmFsIGFuZCB1cGRhdGUgdGhl IGluZGV4LgogCSAqIEFsc28gdXBkYXRlIHRoZSBSVCBpbmRleGVzIHByZXNlbnQgaW4gaXQgdG8g YWRkIHRoZSBvZmZzZXQuCiAJICovCi0JaWYgKGFwbGFuLT5wYXJ0X3BydW5lX2luZGV4ID49IDAp Ci0JCWFwbGFuLT5wYXJ0X3BydW5lX2luZGV4ID0KLQkJCXJlZ2lzdGVyX3BhcnRwcnVuZWluZm8o cm9vdCwgYXBsYW4tPnBhcnRfcHJ1bmVfaW5kZXgsIHJ0b2Zmc2V0KTsKKwlpZiAoYXBsYW4tPmFw LnBhcnRfcHJ1bmVfaW5kZXggPj0gMCkKKwkJYXBsYW4tPmFwLnBhcnRfcHJ1bmVfaW5kZXggPQor CQkJcmVnaXN0ZXJfcGFydHBydW5laW5mbyhyb290LCBhcGxhbi0+YXAucGFydF9wcnVuZV9pbmRl eCwgcnRvZmZzZXQpOwogCiAJLyogV2UgZG9uJ3QgbmVlZCB0byByZWN1cnNlIHRvIGxlZnR0cmVl IG9yIHJpZ2h0dHJlZSAuLi4gKi8KLQlBc3NlcnQoYXBsYW4tPnBsYW4ubGVmdHRyZWUgPT0gTlVM TCk7Ci0JQXNzZXJ0KGFwbGFuLT5wbGFuLnJpZ2h0dHJlZSA9PSBOVUxMKTsKKwlBc3NlcnQoYXBs YW4tPmFwLnBsYW4ubGVmdHRyZWUgPT0gTlVMTCk7CisJQXNzZXJ0KGFwbGFuLT5hcC5wbGFuLnJp Z2h0dHJlZSA9PSBOVUxMKTsKIAogCXJldHVybiAoUGxhbiAqKSBhcGxhbjsKIH0KQEAgLTE5MTcs MTAgKzE5MTcsMTAgQEAgc2V0X21lcmdlYXBwZW5kX3JlZmVyZW5jZXMoUGxhbm5lckluZm8gKnJv b3QsCiAJICogb3IgY2hlY2sgcXVhbHMuICBJZiBpdCdzIGdvdCBleGFjdGx5IG9uZSBjaGlsZCBw bGFuLCB0aGVuIGl0J3Mgbm90CiAJICogZG9pbmcgYW55dGhpbmcgdXNlZnVsIGF0IGFsbCwgYW5k IHdlIGNhbiBzdHJpcCBpdCBvdXQuCiAJICovCi0JQXNzZXJ0KG1wbGFuLT5wbGFuLnF1YWwgPT0g TklMKTsKKwlBc3NlcnQobXBsYW4tPmFwLnBsYW4ucXVhbCA9PSBOSUwpOwogCiAJLyogRmlyc3Qs IHdlIGdvdHRhIHJlY3Vyc2Ugb24gdGhlIGNoaWxkcmVuICovCi0JZm9yZWFjaChsLCBtcGxhbi0+ bWVyZ2VwbGFucykKKwlmb3JlYWNoKGwsIG1wbGFuLT5hcC5zdWJwbGFucykKIAl7CiAJCWxmaXJz dChsKSA9IHNldF9wbGFuX3JlZnMocm9vdCwgKFBsYW4gKikgbGZpcnN0KGwpLCBydG9mZnNldCk7 CiAJfQpAQCAtMTkzNCwxMSArMTkzNCwxMSBAQCBzZXRfbWVyZ2VhcHBlbmRfcmVmZXJlbmNlcyhQ bGFubmVySW5mbyAqcm9vdCwKIAkgKiBtdWx0aXBsZSB0aW1lcy4gIChJZiB5b3UgY2hhbmdlIHRo ZXNlIHJ1bGVzLCB1cGRhdGUKIAkgKiBjcmVhdGVfbWVyZ2VfYXBwZW5kX3BhdGggdG8gbWF0Y2gu KQogCSAqLwotCWlmIChsaXN0X2xlbmd0aChtcGxhbi0+bWVyZ2VwbGFucykgPT0gMSkKKwlpZiAo bGlzdF9sZW5ndGgobXBsYW4tPmFwLnN1YnBsYW5zKSA9PSAxKQogCXsKLQkJUGxhbgkgICAqcCA9 IChQbGFuICopIGxpbml0aWFsKG1wbGFuLT5tZXJnZXBsYW5zKTsKKwkJUGxhbgkgICAqcCA9IChQ bGFuICopIGxpbml0aWFsKG1wbGFuLT5hcC5zdWJwbGFucyk7CiAKLQkJaWYgKHAtPnBhcmFsbGVs X2F3YXJlID09IG1wbGFuLT5wbGFuLnBhcmFsbGVsX2F3YXJlKQorCQlpZiAocC0+cGFyYWxsZWxf YXdhcmUgPT0gbXBsYW4tPmFwLnBsYW4ucGFyYWxsZWxfYXdhcmUpCiAJCQlyZXR1cm4gY2xlYW5f dXBfcmVtb3ZlZF9wbGFuX2xldmVsKChQbGFuICopIG1wbGFuLCBwKTsKIAl9CiAKQEAgLTE5NDks MTkgKzE5NDksMTkgQEAgc2V0X21lcmdlYXBwZW5kX3JlZmVyZW5jZXMoUGxhbm5lckluZm8gKnJv b3QsCiAJICovCiAJc2V0X2R1bW15X3RsaXN0X3JlZmVyZW5jZXMoKFBsYW4gKikgbXBsYW4sIHJ0 b2Zmc2V0KTsKIAotCW1wbGFuLT5hcHByZWxpZHMgPSBvZmZzZXRfcmVsaWRfc2V0KG1wbGFuLT5h cHByZWxpZHMsIHJ0b2Zmc2V0KTsKKwltcGxhbi0+YXAuYXBwcmVsaWRzID0gb2Zmc2V0X3JlbGlk X3NldChtcGxhbi0+YXAuYXBwcmVsaWRzLCBydG9mZnNldCk7CiAKIAkvKgogCSAqIEFkZCBQYXJ0 aXRpb25QcnVuZUluZm8sIGlmIGFueSwgdG8gUGxhbm5lckdsb2JhbCBhbmQgdXBkYXRlIHRoZSBp bmRleC4KIAkgKiBBbHNvIHVwZGF0ZSB0aGUgUlQgaW5kZXhlcyBwcmVzZW50IGluIGl0IHRvIGFk ZCB0aGUgb2Zmc2V0LgogCSAqLwotCWlmIChtcGxhbi0+cGFydF9wcnVuZV9pbmRleCA+PSAwKQot CQltcGxhbi0+cGFydF9wcnVuZV9pbmRleCA9Ci0JCQlyZWdpc3Rlcl9wYXJ0cHJ1bmVpbmZvKHJv b3QsIG1wbGFuLT5wYXJ0X3BydW5lX2luZGV4LCBydG9mZnNldCk7CisJaWYgKG1wbGFuLT5hcC5w YXJ0X3BydW5lX2luZGV4ID49IDApCisJCW1wbGFuLT5hcC5wYXJ0X3BydW5lX2luZGV4ID0KKwkJ CXJlZ2lzdGVyX3BhcnRwcnVuZWluZm8ocm9vdCwgbXBsYW4tPmFwLnBhcnRfcHJ1bmVfaW5kZXgs IHJ0b2Zmc2V0KTsKIAogCS8qIFdlIGRvbid0IG5lZWQgdG8gcmVjdXJzZSB0byBsZWZ0dHJlZSBv ciByaWdodHRyZWUgLi4uICovCi0JQXNzZXJ0KG1wbGFuLT5wbGFuLmxlZnR0cmVlID09IE5VTEwp OwotCUFzc2VydChtcGxhbi0+cGxhbi5yaWdodHRyZWUgPT0gTlVMTCk7CisJQXNzZXJ0KG1wbGFu LT5hcC5wbGFuLmxlZnR0cmVlID09IE5VTEwpOworCUFzc2VydChtcGxhbi0+YXAucGxhbi5yaWdo dHRyZWUgPT0gTlVMTCk7CiAKIAlyZXR1cm4gKFBsYW4gKikgbXBsYW47CiB9CmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9zdWJzZWxlY3QuYyBiL3NyYy9iYWNrZW5kL29w dGltaXplci9wbGFuL3N1YnNlbGVjdC5jCmluZGV4IGZmNjNkMjBmOGQ1Li5lYjYxNmM5NzdiYyAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vc3Vic2VsZWN0LmMKKysrIGIv c3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vc3Vic2VsZWN0LmMKQEAgLTI3NTksNyArMjc1OSw3 IEBAIGZpbmFsaXplX3BsYW4oUGxhbm5lckluZm8gKnJvb3QsIFBsYW4gKnBsYW4sCiAKIAkJY2Fz ZSBUX0FwcGVuZDoKIAkJCXsKLQkJCQlmb3JlYWNoKGwsICgoQXBwZW5kICopIHBsYW4pLT5hcHBl bmRwbGFucykKKwkJCQlmb3JlYWNoKGwsICgoQXBwZW5kICopIHBsYW4pLT5hcC5zdWJwbGFucykK IAkJCQl7CiAJCQkJCWNvbnRleHQucGFyYW1pZHMgPQogCQkJCQkJYm1zX2FkZF9tZW1iZXJzKGNv bnRleHQucGFyYW1pZHMsCkBAIC0yNzc0LDcgKzI3NzQsNyBAQCBmaW5hbGl6ZV9wbGFuKFBsYW5u ZXJJbmZvICpyb290LCBQbGFuICpwbGFuLAogCiAJCWNhc2UgVF9NZXJnZUFwcGVuZDoKIAkJCXsK LQkJCQlmb3JlYWNoKGwsICgoTWVyZ2VBcHBlbmQgKikgcGxhbiktPm1lcmdlcGxhbnMpCisJCQkJ Zm9yZWFjaChsLCAoKE1lcmdlQXBwZW5kICopIHBsYW4pLT5hcC5zdWJwbGFucykKIAkJCQl7CiAJ CQkJCWNvbnRleHQucGFyYW1pZHMgPQogCQkJCQkJYm1zX2FkZF9tZW1iZXJzKGNvbnRleHQucGFy YW1pZHMsCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQvcnVsZXV0aWxzLmMgYi9z cmMvYmFja2VuZC91dGlscy9hZHQvcnVsZXV0aWxzLmMKaW5kZXggOWY4NWViODZkYTEuLmNlNTdm ODBlNWUzIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQvcnVsZXV0aWxzLmMKKysr IGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3J1bGV1dGlscy5jCkBAIC01MTYzLDkgKzUxNjMsOSBA QCBzZXRfZGVwYXJzZV9wbGFuKGRlcGFyc2VfbmFtZXNwYWNlICpkcG5zLCBQbGFuICpwbGFuKQog CSAqIG5hdHVyYWwgY2hvaWNlLgogCSAqLwogCWlmIChJc0EocGxhbiwgQXBwZW5kKSkKLQkJZHBu cy0+b3V0ZXJfcGxhbiA9IGxpbml0aWFsKCgoQXBwZW5kICopIHBsYW4pLT5hcHBlbmRwbGFucyk7 CisJCWRwbnMtPm91dGVyX3BsYW4gPSBsaW5pdGlhbCgoKEFwcGVuZCAqKSBwbGFuKS0+YXAuc3Vi cGxhbnMpOwogCWVsc2UgaWYgKElzQShwbGFuLCBNZXJnZUFwcGVuZCkpCi0JCWRwbnMtPm91dGVy X3BsYW4gPSBsaW5pdGlhbCgoKE1lcmdlQXBwZW5kICopIHBsYW4pLT5tZXJnZXBsYW5zKTsKKwkJ ZHBucy0+b3V0ZXJfcGxhbiA9IGxpbml0aWFsKCgoTWVyZ2VBcHBlbmQgKikgcGxhbiktPmFwLnN1 YnBsYW5zKTsKIAllbHNlCiAJCWRwbnMtPm91dGVyX3BsYW4gPSBvdXRlclBsYW4ocGxhbik7CiAK QEAgLTc5NTUsMTAgKzc5NTUsMTAgQEAgcmVzb2x2ZV9zcGVjaWFsX3Zhcm5vKE5vZGUgKm5vZGUs IGRlcGFyc2VfY29udGV4dCAqY29udGV4dCwKIAogCQlpZiAoSXNBKGRwbnMtPnBsYW4sIEFwcGVu ZCkpCiAJCQljb250ZXh0LT5hcHBlbmRwYXJlbnRzID0gYm1zX3VuaW9uKGNvbnRleHQtPmFwcGVu ZHBhcmVudHMsCi0JCQkJCQkJCQkJCSAgICgoQXBwZW5kICopIGRwbnMtPnBsYW4pLT5hcHByZWxp ZHMpOworCQkJCQkJCQkJCQkgICAoKEFwcGVuZCAqKSBkcG5zLT5wbGFuKS0+YXAuYXBwcmVsaWRz KTsKIAkJZWxzZSBpZiAoSXNBKGRwbnMtPnBsYW4sIE1lcmdlQXBwZW5kKSkKIAkJCWNvbnRleHQt PmFwcGVuZHBhcmVudHMgPSBibXNfdW5pb24oY29udGV4dC0+YXBwZW5kcGFyZW50cywKLQkJCQkJ CQkJCQkJICAgKChNZXJnZUFwcGVuZCAqKSBkcG5zLT5wbGFuKS0+YXBwcmVsaWRzKTsKKwkJCQkJ CQkJCQkJICAgKChNZXJnZUFwcGVuZCAqKSBkcG5zLT5wbGFuKS0+YXAuYXBwcmVsaWRzKTsKIAog CQlwdXNoX2NoaWxkX3BsYW4oZHBucywgZHBucy0+b3V0ZXJfcGxhbiwgJnNhdmVfZHBucyk7CiAJ CXJlc29sdmVfc3BlY2lhbF92YXJubygoTm9kZSAqKSB0bGUtPmV4cHIsIGNvbnRleHQsCmRpZmYg LS1naXQgYS9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjQXBwZW5kLmggYi9zcmMvaW5jbHVkZS9l eGVjdXRvci9leGVjQXBwZW5kLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw MDAuLmI1NTA5MzczNTI0Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL2luY2x1ZGUvZXhlY3V0b3Iv ZXhlY0FwcGVuZC5oCkBAIC0wLDAgKzEsNjAgQEAKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogZXhl Y0FwcGVuZC5oCisgKgkJU3VwcG9ydCBmdW5jdGlvbnMgZm9yIE1lcmdlQXBwZW5kIGFuZCBBcHBl bmQgbm9kZXMuCisgKgorICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAxOTk2LTIwMjUsIFBvc3Rn cmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3VwCisgKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMp IDE5OTQsIFJlZ2VudHMgb2YgdGhlIFVuaXZlcnNpdHkgb2YgQ2FsaWZvcm5pYQorICoKKyAqIElE RU5USUZJQ0FUSU9OCisgKgkJc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY0FwcGVuZC5oCisgKi0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KKyAqLworCisjaWZuZGVmIEVYRUNBUFBFTkRfSAorI2RlZmluZSBFWEVD QVBQRU5EX0gKKworI2luY2x1ZGUgIm5vZGVzL2V4ZWNub2Rlcy5oIgorCit2b2lkCQlFeGVjSW5p dEFwcGVuZGVyKEFwcGVuZGVyU3RhdGUgKiBzdGF0ZSwKKwkJCQkJCQkgQXBwZW5kZXIgKiBub2Rl LAorCQkJCQkJCSBFU3RhdGUgKmVzdGF0ZSwKKwkJCQkJCQkgaW50IGVmbGFncywKKwkJCQkJCQkg aW50IGZpcnN0X3BhcnRpYWxfcGxhbiwKKwkJCQkJCQkgaW50ICpmaXJzdF92YWxpZF9wYXJ0aWFs X3BsYW4pOworCit2b2lkCQlFeGVjRW5kQXBwZW5kZXIoQXBwZW5kZXJTdGF0ZSAqIG5vZGUpOwor Cit2b2lkCQlFeGVjUmVTY2FuQXBwZW5kZXIoQXBwZW5kZXJTdGF0ZSAqIG5vZGUpOworCit2b2lk CQlFeGVjQXBwZW5kZXJBc3luY0JlZ2luKEFwcGVuZGVyU3RhdGUgKiBub2RlKTsKKwordm9pZAkJ RXhlY0FwcGVuZGVyQXN5bmNFdmVudFdhaXQoQXBwZW5kZXJTdGF0ZSAqIG5vZGUsCisJCQkJCQkJ CQkgICBpbnQgdGltZW91dCwKKwkJCQkJCQkJCSAgIHVpbnQzMiB3YWl0X2V2ZW50X2luZm8pOwor CisvKiBDb21tb24gcGFydCBvZiBjbGFzc2lmeV9tYXRjaGluZ19zdWJwbGFucygpIGZvciBBcHBl bmQgYW5kIE1lcmdlQXBwZW5kICovCitzdGF0aWMgaW5saW5lIGJvb2wKK2NsYXNzaWZ5X21hdGNo aW5nX3N1YnBsYW5zX2NvbW1vbihCaXRtYXBzZXQgKip2YWxpZF9zdWJwbGFucywKKwkJCQkJCQkJ ICBCaXRtYXBzZXQgKmFzeW5jcGxhbnMsCisJCQkJCQkJCSAgQml0bWFwc2V0ICoqdmFsaWRfYXN5 bmNwbGFucykKK3sKKwlBc3NlcnQoKnZhbGlkX2FzeW5jcGxhbnMgPT0gTlVMTCk7CisKKwkvKiBD aGVja2VkIGJ5IGNsYXNzaWZ5X21hdGNoaW5nX3N1YnBsYW5zKCkgKi8KKwlBc3NlcnQoIWJtc19p c19lbXB0eSgqdmFsaWRfc3VicGxhbnMpKTsKKworCS8qIE5vdGhpbmcgdG8gZG8gaWYgdGhlcmUg YXJlIG5vIHZhbGlkIGFzeW5jIHN1YnBsYW5zLiAqLworCWlmICghYm1zX292ZXJsYXAoKnZhbGlk X3N1YnBsYW5zLCBhc3luY3BsYW5zKSkKKwkJcmV0dXJuIGZhbHNlOworCisJLyogR2V0IHZhbGlk IGFzeW5jIHN1YnBsYW5zLiAqLworCSp2YWxpZF9hc3luY3BsYW5zID0gYm1zX2ludGVyc2VjdChh c3luY3BsYW5zLAorCQkJCQkJCQkJICAqdmFsaWRfc3VicGxhbnMpOworCisJLyogQWRqdXN0IHRo ZSB2YWxpZCBzdWJwbGFucyB0byBjb250YWluIHN5bmMgc3VicGxhbnMgb25seS4gKi8KKwkqdmFs aWRfc3VicGxhbnMgPSBibXNfZGVsX21lbWJlcnMoKnZhbGlkX3N1YnBsYW5zLAorCQkJCQkJCQkJ ICAqdmFsaWRfYXN5bmNwbGFucyk7CisJcmV0dXJuIHRydWU7Cit9CisKKyNlbmRpZgkJCQkJCQkv KiBFWEVDQVBQRU5EX0ggKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rl cy5oIGIvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmgKaW5kZXggNTg4N2NiZjRmMTYuLjUw MWYyYzNhY2Y0IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaAorKysg Yi9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaApAQCAtMTQ3Miw2ICsxNDcyLDI3IEBAIHR5 cGVkZWYgc3RydWN0IE1vZGlmeVRhYmxlU3RhdGUKIAlMaXN0CSAgICptdF9tZXJnZUpvaW5Db25k aXRpb25zOwogfSBNb2RpZnlUYWJsZVN0YXRlOwogCit0eXBlZGVmIHN0cnVjdCBBcHBlbmRlclN0 YXRlCit7CisJUGxhblN0YXRlCXBzOwkJCQkvKiBpdHMgZmlyc3QgZmllbGQgaXMgTm9kZVRhZyAq LworCVBsYW5TdGF0ZSAqKnBsYW5zOwkJCS8qIGFycmF5IG9mIFBsYW5TdGF0ZXMgZm9yIG15IGlu cHV0cyAqLworCWludAkJCW5wbGFuczsKKworCS8qIEFzeW5jaHJvbm91cyBleGVjdXRpb24gc3Rh dGUgKi8KKwlCaXRtYXBzZXQgICphc3luY3BsYW5zOwkJLyogYXN5bmNocm9ub3VzIHBsYW5zIGlu ZGV4ZXMgKi8KKwlpbnQJCQluYXN5bmNwbGFuczsJLyogIyBvZiBhc3luY2hyb25vdXMgcGxhbnMg Ki8KKwlBc3luY1JlcXVlc3QgKiphc3luY3JlcXVlc3RzOwkvKiBhcnJheSBvZiBBc3luY1JlcXVl c3RzICovCisJVHVwbGVUYWJsZVNsb3QgKiphc3luY3Jlc3VsdHM7CS8qIHVucmV0dXJuZWQgcmVz dWx0cyBvZiBhc3luYyBwbGFucyAqLworCUJpdG1hcHNldCAgKm5lZWRyZXF1ZXN0OwkvKiBhc3lu Y2hyb25vdXMgcGxhbnMgbmVlZGluZyBhIG5ldyByZXF1ZXN0ICovCisJc3RydWN0IFdhaXRFdmVu dFNldCAqZXZlbnRzZXQ7CS8qIFdhaXRFdmVudFNldCBmb3IgZmlsZSBkZXNjcmlwdG9yIHdhaXRz ICovCisKKwkvKiBQYXJ0aXRpb24gcHJ1bmluZyBzdGF0ZSAqLworCXN0cnVjdCBQYXJ0aXRpb25Q cnVuZVN0YXRlICpwcnVuZV9zdGF0ZTsKKwlib29sCQl2YWxpZF9zdWJwbGFuc19pZGVudGlmaWVk OworCUJpdG1hcHNldCAgKnZhbGlkX3N1YnBsYW5zOworCUJpdG1hcHNldCAgKnZhbGlkX2FzeW5j cGxhbnM7CS8qIHZhbGlkIGFzeW5jaHJvbm91cyBwbGFucyBpbmRleGVzICovCit9CQkJQXBwZW5k ZXJTdGF0ZTsKKwogLyogLS0tLS0tLS0tLS0tLS0tLQogICoJIEFwcGVuZFN0YXRlIGluZm9ybWF0 aW9uCiAgKgpAQCAtMTQ5MywzMSArMTUxNCwyMCBAQCBzdHJ1Y3QgUGFydGl0aW9uUHJ1bmVTdGF0 ZTsKIAogc3RydWN0IEFwcGVuZFN0YXRlCiB7Ci0JUGxhblN0YXRlCXBzOwkJCQkvKiBpdHMgZmly c3QgZmllbGQgaXMgTm9kZVRhZyAqLwotCVBsYW5TdGF0ZSAqKmFwcGVuZHBsYW5zOwkvKiBhcnJh eSBvZiBQbGFuU3RhdGVzIGZvciBteSBpbnB1dHMgKi8KLQlpbnQJCQlhc19ucGxhbnM7CisJQXBw ZW5kZXJTdGF0ZSBhczsKKwogCWludAkJCWFzX3doaWNocGxhbjsKIAlib29sCQlhc19iZWd1bjsJ CS8qIGZhbHNlIG1lYW5zIG5lZWQgdG8gaW5pdGlhbGl6ZSAqLwotCUJpdG1hcHNldCAgKmFzX2Fz eW5jcGxhbnM7CS8qIGFzeW5jaHJvbm91cyBwbGFucyBpbmRleGVzICovCi0JaW50CQkJYXNfbmFz eW5jcGxhbnM7IC8qICMgb2YgYXN5bmNocm9ub3VzIHBsYW5zICovCi0JQXN5bmNSZXF1ZXN0ICoq YXNfYXN5bmNyZXF1ZXN0czsJLyogYXJyYXkgb2YgQXN5bmNSZXF1ZXN0cyAqLwotCVR1cGxlVGFi bGVTbG90ICoqYXNfYXN5bmNyZXN1bHRzOwkvKiB1bnJldHVybmVkIHJlc3VsdHMgb2YgYXN5bmMg cGxhbnMgKi8KLQlpbnQJCQlhc19uYXN5bmNyZXN1bHRzOwkvKiAjIG9mIHZhbGlkIGVudHJpZXMg aW4gYXNfYXN5bmNyZXN1bHRzICovCi0JYm9vbAkJYXNfc3luY2RvbmU7CS8qIHRydWUgaWYgYWxs IHN5bmNocm9ub3VzIHBsYW5zIGRvbmUgaW4KLQkJCQkJCQkJICogYXN5bmNocm9ub3VzIG1vZGUs IGVsc2UgZmFsc2UgKi8KKwlpbnQJCQlhc19uYXN5bmNyZXN1bHRzOwkvKiAjIG9mIHZhbGlkIGVu dHJpZXMgaW4gYXN5bmNyZXN1bHRzICovCisJYm9vbAkJYXNfc3luY2RvbmU7CS8qIGFsbCBzeW5j IHBsYW5zIGRvbmUgaW4gYXN5bmMgbW9kZT8gKi8KIAlpbnQJCQlhc19uYXN5bmNyZW1haW47CS8q ICMgb2YgcmVtYWluaW5nIGFzeW5jaHJvbm91cyBwbGFucyAqLwotCUJpdG1hcHNldCAgKmFzX25l ZWRyZXF1ZXN0OyAvKiBhc3luY2hyb25vdXMgcGxhbnMgbmVlZGluZyBhIG5ldyByZXF1ZXN0ICov Ci0Jc3RydWN0IFdhaXRFdmVudFNldCAqYXNfZXZlbnRzZXQ7CS8qIFdhaXRFdmVudFNldCB1c2Vk IHRvIGNvbmZpZ3VyZSBmaWxlCi0JCQkJCQkJCQkJICogZGVzY3JpcHRvciB3YWl0IGV2ZW50cyAq LwotCWludAkJCWFzX2ZpcnN0X3BhcnRpYWxfcGxhbjsJLyogSW5kZXggb2YgJ2FwcGVuZHBsYW5z JyBjb250YWluaW5nCi0JCQkJCQkJCQkJICogdGhlIGZpcnN0IHBhcnRpYWwgcGxhbiAqLwotCVBh cmFsbGVsQXBwZW5kU3RhdGUgKmFzX3BzdGF0ZTsgLyogcGFyYWxsZWwgY29vcmRpbmF0aW9uIGlu Zm8gKi8KLQlTaXplCQlwc3RhdGVfbGVuOwkJLyogc2l6ZSBvZiBwYXJhbGxlbCBjb29yZGluYXRp b24gaW5mbyAqLwotCXN0cnVjdCBQYXJ0aXRpb25QcnVuZVN0YXRlICphc19wcnVuZV9zdGF0ZTsK LQlib29sCQlhc192YWxpZF9zdWJwbGFuc19pZGVudGlmaWVkOwkvKiBpcyBhc192YWxpZF9zdWJw bGFucyB2YWxpZD8gKi8KLQlCaXRtYXBzZXQgICphc192YWxpZF9zdWJwbGFuczsKLQlCaXRtYXBz ZXQgICphc192YWxpZF9hc3luY3BsYW5zOwkvKiB2YWxpZCBhc3luY2hyb25vdXMgcGxhbnMgaW5k ZXhlcyAqLwotCWJvb2wJCSgqY2hvb3NlX25leHRfc3VicGxhbikgKEFwcGVuZFN0YXRlICopOwor CWludAkJCWFzX2ZpcnN0X3BhcnRpYWxfcGxhbjsKKworCS8qIFBhcmFsbGVsIGFwcGVuZCBzcGVj aWZpYyAqLworCVBhcmFsbGVsQXBwZW5kU3RhdGUgKmFzX3BzdGF0ZTsKKwlTaXplCQlwc3RhdGVf bGVuOworCisJYm9vbAkJKCpjaG9vc2VfbmV4dF9zdWJwbGFuKSAoc3RydWN0IEFwcGVuZFN0YXRl ICopOwogfTsKIAogLyogLS0tLS0tLS0tLS0tLS0tLQpAQCAtMTUzNywyNyArMTU0NywxNyBAQCBz dHJ1Y3QgQXBwZW5kU3RhdGUKICAqLwogdHlwZWRlZiBzdHJ1Y3QgTWVyZ2VBcHBlbmRTdGF0ZQog ewotCVBsYW5TdGF0ZQlwczsJCQkJLyogaXRzIGZpcnN0IGZpZWxkIGlzIE5vZGVUYWcgKi8KLQlQ bGFuU3RhdGUgKiptZXJnZXBsYW5zOwkJLyogYXJyYXkgb2YgUGxhblN0YXRlcyBmb3IgbXkgaW5w dXRzICovCi0JaW50CQkJbXNfbnBsYW5zOworCUFwcGVuZGVyU3RhdGUgbXM7CisKIAlpbnQJCQlt c19ua2V5czsKIAlTb3J0U3VwcG9ydCBtc19zb3J0a2V5czsJLyogYXJyYXkgb2YgbGVuZ3RoIG1z X25rZXlzICovCiAJVHVwbGVUYWJsZVNsb3QgKiptc19zbG90czsJLyogYXJyYXkgb2YgbGVuZ3Ro IG1zX25wbGFucyAqLwogCXN0cnVjdCBiaW5hcnloZWFwICptc19oZWFwOyAvKiBiaW5hcnkgaGVh cCBvZiBzbG90IGluZGljZXMgKi8KIAlib29sCQltc19pbml0aWFsaXplZDsgLyogYXJlIHN1YnBs YW5zIHN0YXJ0ZWQ/ICovCi0JQml0bWFwc2V0ICAqbXNfYXN5bmNwbGFuczsJLyogYXN5bmNocm9u b3VzIHBsYW5zIGluZGV4ZXMgKi8KLQlpbnQJCQltc19uYXN5bmNwbGFuczsgLyogIyBvZiBhc3lu Y2hyb25vdXMgcGxhbnMgKi8KLQlBc3luY1JlcXVlc3QgKiptc19hc3luY3JlcXVlc3RzOwkvKiBh cnJheSBvZiBBc3luY1JlcXVlc3RzICovCi0JVHVwbGVUYWJsZVNsb3QgKiptc19hc3luY3Jlc3Vs dHM7CS8qIHVucmV0dXJuZWQgcmVzdWx0cyBvZiBhc3luYyBwbGFucyAqLworCisJLyogTWVyZ2Ut c3BlY2lmaWMgYXN5bmMgdHJhY2tpbmcgKi8KIAlCaXRtYXBzZXQgICptc19oYXNfYXN5bmNyZXN1 bHRzOwkvKiBwbGFucyB3aGljaCBoYXZlIGFzeW5jIHJlc3VsdHMgKi8KIAlCaXRtYXBzZXQgICpt c19hc3luY3JlbWFpbjsgLyogcmVtYWluaW5nIGFzeW5jaHJvbm91cyBwbGFucyAqLwotCUJpdG1h cHNldCAgKm1zX25lZWRyZXF1ZXN0OyAvKiBhc3luY2hyb25vdXMgcGxhbnMgbmVlZGluZyBhIG5l dyByZXF1ZXN0ICovCi0Jc3RydWN0IFdhaXRFdmVudFNldCAqbXNfZXZlbnRzZXQ7CS8qIFdhaXRF dmVudFNldCB1c2VkIHRvIGNvbmZpZ3VyZSBmaWxlCi0JCQkJCQkJCQkJICogZGVzY3JpcHRvciB3 YWl0IGV2ZW50cyAqLwotCXN0cnVjdCBQYXJ0aXRpb25QcnVuZVN0YXRlICptc19wcnVuZV9zdGF0 ZTsKLQlib29sCQltc192YWxpZF9zdWJwbGFuc19pZGVudGlmaWVkOwkvKiBpcyBtc192YWxpZF9z dWJwbGFucyB2YWxpZD8gKi8KLQlCaXRtYXBzZXQgICptc192YWxpZF9zdWJwbGFuczsKLQlCaXRt YXBzZXQgICptc192YWxpZF9hc3luY3BsYW5zOwkvKiB2YWxpZCBhc3luY2hyb25vdXMgcGxhbnMg aW5kZXhlcyAqLwogfSBNZXJnZUFwcGVuZFN0YXRlOwogCiAvKiBHZXR0ZXJzIGZvciBBcHBlbmRT dGF0ZSBhbmQgTWVyZ2VBcHBlbmRTdGF0ZSAqLwpAQCAtMTU2Nyw5ICsxNTY3LDkgQEAgR2V0QXBw ZW5kRXZlbnRTZXQoUGxhblN0YXRlICpwcykKIAlBc3NlcnQoSXNBKHBzLCBBcHBlbmRTdGF0ZSkg fHwgSXNBKHBzLCBNZXJnZUFwcGVuZFN0YXRlKSk7CiAKIAlpZiAoSXNBKHBzLCBBcHBlbmRTdGF0 ZSkpCi0JCXJldHVybiAoKEFwcGVuZFN0YXRlICopIHBzKS0+YXNfZXZlbnRzZXQ7CisJCXJldHVy biAoKEFwcGVuZFN0YXRlICopIHBzKS0+YXMuZXZlbnRzZXQ7CiAJZWxzZQotCQlyZXR1cm4gKChN ZXJnZUFwcGVuZFN0YXRlICopIHBzKS0+bXNfZXZlbnRzZXQ7CisJCXJldHVybiAoKE1lcmdlQXBw ZW5kU3RhdGUgKikgcHMpLT5tcy5ldmVudHNldDsKIH0KIAogc3RhdGljIGlubGluZSBCaXRtYXBz ZXQgKgpAQCAtMTU3OCwzNCArMTU3OCw5IEBAIEdldE5lZWRSZXF1ZXN0KFBsYW5TdGF0ZSAqcHMp CiAJQXNzZXJ0KElzQShwcywgQXBwZW5kU3RhdGUpIHx8IElzQShwcywgTWVyZ2VBcHBlbmRTdGF0 ZSkpOwogCiAJaWYgKElzQShwcywgQXBwZW5kU3RhdGUpKQotCQlyZXR1cm4gKChBcHBlbmRTdGF0 ZSAqKSBwcyktPmFzX25lZWRyZXF1ZXN0OworCQlyZXR1cm4gKChBcHBlbmRTdGF0ZSAqKSBwcykt PmFzLm5lZWRyZXF1ZXN0OwogCWVsc2UKLQkJcmV0dXJuICgoTWVyZ2VBcHBlbmRTdGF0ZSAqKSBw cyktPm1zX25lZWRyZXF1ZXN0OwotfQotCi0vKiBDb21tb24gcGFydCBvZiBjbGFzc2lmeV9tYXRj aGluZ19zdWJwbGFucygpIGZvciBBcHBlbmQgYW5kIE1lcmdlQXBwZW5kICovCi1zdGF0aWMgaW5s aW5lIGJvb2wKLWNsYXNzaWZ5X21hdGNoaW5nX3N1YnBsYW5zX2NvbW1vbihCaXRtYXBzZXQgKip2 YWxpZF9zdWJwbGFucywKLQkJCQkJCQkJICBCaXRtYXBzZXQgKmFzeW5jcGxhbnMsCi0JCQkJCQkJ CSAgQml0bWFwc2V0ICoqdmFsaWRfYXN5bmNwbGFucykKLXsKLQlBc3NlcnQoKnZhbGlkX2FzeW5j cGxhbnMgPT0gTlVMTCk7Ci0KLQkvKiBDaGVja2VkIGJ5IGNsYXNzaWZ5X21hdGNoaW5nX3N1YnBs YW5zKCkgKi8KLQlBc3NlcnQoIWJtc19pc19lbXB0eSgqdmFsaWRfc3VicGxhbnMpKTsKLQotCS8q IE5vdGhpbmcgdG8gZG8gaWYgdGhlcmUgYXJlIG5vIHZhbGlkIGFzeW5jIHN1YnBsYW5zLiAqLwot CWlmICghYm1zX292ZXJsYXAoKnZhbGlkX3N1YnBsYW5zLCBhc3luY3BsYW5zKSkKLQkJcmV0dXJu IGZhbHNlOwotCi0JLyogR2V0IHZhbGlkIGFzeW5jIHN1YnBsYW5zLiAqLwotCSp2YWxpZF9hc3lu Y3BsYW5zID0gYm1zX2ludGVyc2VjdChhc3luY3BsYW5zLAotCQkJCQkJCQkJICAqdmFsaWRfc3Vi cGxhbnMpOwotCi0JLyogQWRqdXN0IHRoZSB2YWxpZCBzdWJwbGFucyB0byBjb250YWluIHN5bmMg c3VicGxhbnMgb25seS4gKi8KLQkqdmFsaWRfc3VicGxhbnMgPSBibXNfZGVsX21lbWJlcnMoKnZh bGlkX3N1YnBsYW5zLAotCQkJCQkJCQkJICAqdmFsaWRfYXN5bmNwbGFucyk7Ci0JcmV0dXJuIHRy dWU7CisJCXJldHVybiAoKE1lcmdlQXBwZW5kU3RhdGUgKikgcHMpLT5tcy5uZWVkcmVxdWVzdDsK IH0KIAogLyogLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbm9kZXMv cGxhbm5vZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9wbGFubm9kZXMuaAppbmRleCBjNDM5M2E5 NDMyMS4uMzBjMjBlODBiNDAgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL25vZGVzL3BsYW5ub2Rl cy5oCisrKyBiL3NyYy9pbmNsdWRlL25vZGVzL3BsYW5ub2Rlcy5oCkBAIC0zODAsNiArMzgwLDIw IEBAIHR5cGVkZWYgc3RydWN0IE1vZGlmeVRhYmxlCiAKIHN0cnVjdCBQYXJ0aXRpb25QcnVuZUlu Zm87CQkvKiBmb3J3YXJkIHJlZmVyZW5jZSB0byBzdHJ1Y3QgYmVsb3cgKi8KIAordHlwZWRlZiBz dHJ1Y3QgQXBwZW5kZXIKK3sKKwlQbGFuCQlwbGFuOwkJCS8qIGl0cyBmaXJzdCBmaWVsZCBpcyBO b2RlVGFnICovCisJQml0bWFwc2V0ICAqYXBwcmVsaWRzOwkJLyogUlRJcyBvZiBhcHBlbmRyZWwo cykgZm9ybWVkIGJ5IHRoaXMgbm9kZSAqLworCUxpc3QJICAgKnN1YnBsYW5zOwkJLyogTGlzdCBv ZiBQbGFucyAoZm9ybWVybHkKKwkJCQkJCQkJICogYXBwZW5kcGxhbnMvbWVyZ2VwbGFucykgKi8K KworCS8qCisJICogSW5kZXggaW50byBQbGFubmVkU3RtdC5wYXJ0UHJ1bmVJbmZvcyBhbmQgcGFy YWxsZWwgbGlzdHMgaW4gRVN0YXRlLiBTZXQKKwkgKiB0byAtMSBpZiBubyBydW4tdGltZSBwcnVu aW5nIGlzIHVzZWQuCisJICovCisJaW50CQkJcGFydF9wcnVuZV9pbmRleDsKK30JCQlBcHBlbmRl cjsKKwogLyogLS0tLS0tLS0tLS0tLS0tLQogICoJIEFwcGVuZCBub2RlIC0KICAqCQlHZW5lcmF0 ZSB0aGUgY29uY2F0ZW5hdGlvbiBvZiB0aGUgcmVzdWx0cyBvZiBzdWItcGxhbnMuCkBAIC0zODcs MjUgKzQwMSwxNiBAQCBzdHJ1Y3QgUGFydGl0aW9uUHJ1bmVJbmZvOwkJLyogZm9yd2FyZCByZWZl cmVuY2UgdG8gc3RydWN0IGJlbG93ICovCiAgKi8KIHR5cGVkZWYgc3RydWN0IEFwcGVuZAogewot CVBsYW4JCXBsYW47Ci0JLyogUlRJcyBvZiBhcHBlbmRyZWwocykgZm9ybWVkIGJ5IHRoaXMgbm9k ZSAqLwotCUJpdG1hcHNldCAgKmFwcHJlbGlkczsKLQlMaXN0CSAgICphcHBlbmRwbGFuczsKKwlB cHBlbmRlcglhcDsKKwogCS8qICMgb2YgYXN5bmNocm9ub3VzIHBsYW5zICovCiAJaW50CQkJbmFz eW5jcGxhbnM7CiAKIAkvKgotCSAqIEFsbCAnYXBwZW5kcGxhbnMnIHByZWNlZGluZyB0aGlzIGlu ZGV4IGFyZSBub24tcGFydGlhbCBwbGFucy4gQWxsCi0JICogJ2FwcGVuZHBsYW5zJyBmcm9tIHRo aXMgaW5kZXggb253YXJkcyBhcmUgcGFydGlhbCBwbGFucy4KKwkgKiBBbGwgJ3N1YnBsYW5zJyBw cmVjZWRpbmcgdGhpcyBpbmRleCBhcmUgbm9uLXBhcnRpYWwgcGxhbnMuIEFsbAorCSAqICdzdWJw bGFucycgZnJvbSB0aGlzIGluZGV4IG9ud2FyZHMgYXJlIHBhcnRpYWwgcGxhbnMuCiAJICovCiAJ aW50CQkJZmlyc3RfcGFydGlhbF9wbGFuOwotCi0JLyoKLQkgKiBJbmRleCBpbnRvIFBsYW5uZWRT dG10LnBhcnRQcnVuZUluZm9zIGFuZCBwYXJhbGxlbCBsaXN0cyBpbiBFU3RhdGU6Ci0JICogZXNf cGFydF9wcnVuZV9zdGF0ZXMgYW5kIGVzX3BhcnRfcHJ1bmVfcmVzdWx0cy4gU2V0IHRvIC0xIGlm IG5vCi0JICogcnVuLXRpbWUgcHJ1bmluZyBpcyB1c2VkLgotCSAqLwotCWludAkJCXBhcnRfcHJ1 bmVfaW5kZXg7CiB9IEFwcGVuZDsKIAogLyogLS0tLS0tLS0tLS0tLS0tLQpAQCAtNDE1LDEyICs0 MjAsNyBAQCB0eXBlZGVmIHN0cnVjdCBBcHBlbmQKICAqLwogdHlwZWRlZiBzdHJ1Y3QgTWVyZ2VB cHBlbmQKIHsKLQlQbGFuCQlwbGFuOwotCi0JLyogUlRJcyBvZiBhcHBlbmRyZWwocykgZm9ybWVk IGJ5IHRoaXMgbm9kZSAqLwotCUJpdG1hcHNldCAgKmFwcHJlbGlkczsKLQotCUxpc3QJICAgKm1l cmdlcGxhbnM7CisJQXBwZW5kZXIJYXA7CiAKIAkvKiB0aGVzZSBmaWVsZHMgYXJlIGp1c3QgbGlr ZSB0aGUgc29ydC1rZXkgaW5mbyBpbiBzdHJ1Y3QgU29ydDogKi8KIApAQCAtNDM4LDEzICs0Mzgs NiBAQCB0eXBlZGVmIHN0cnVjdCBNZXJnZUFwcGVuZAogCiAJLyogTlVMTFMgRklSU1QvTEFTVCBk aXJlY3Rpb25zICovCiAJYm9vbAkgICAqbnVsbHNGaXJzdCBwZ19ub2RlX2F0dHIoYXJyYXlfc2l6 ZShudW1Db2xzKSk7Ci0KLQkvKgotCSAqIEluZGV4IGludG8gUGxhbm5lZFN0bXQucGFydFBydW5l SW5mb3MgYW5kIHBhcmFsbGVsIGxpc3RzIGluIEVTdGF0ZToKLQkgKiBlc19wYXJ0X3BydW5lX3N0 YXRlcyBhbmQgZXNfcGFydF9wcnVuZV9yZXN1bHRzLiBTZXQgdG8gLTEgaWYgbm8KLQkgKiBydW4t dGltZSBwcnVuaW5nIGlzIHVzZWQuCi0JICovCi0JaW50CQkJcGFydF9wcnVuZV9pbmRleDsKIH0g TWVyZ2VBcHBlbmQ7CiAKIC8qIC0tLS0tLS0tLS0tLS0tLS0KLS0gCjIuNTEuMgoK --e147d251f115bb34b72810d838043cc88f341e4e2ed82c30478cd353a0b1--